Compare commits

...

40 Commits

Author SHA1 Message Date
Safihre
23f3b901e3 Update text files for 4.2.2RC1 2024-01-17 16:11:00 +01:00
Safihre
567608b3c4 Using password=PW resulted in PW.nzb as password
Closes #2779
2024-01-17 14:51:35 +01:00
Safihre
4ff0f94d41 Add IRC and Discord label 2024-01-17 11:59:57 +01:00
Safihre
a56290489c Only request addrinfo once per internetspeed 2024-01-17 11:53:56 +01:00
Safihre
aac4392f69 Handle brackets in potentical filenames in subjects
Closes #2772
2024-01-15 09:55:22 +01:00
SABnzbd Automation
c130feefc5 Update translatable texts
[skip ci]
2024-01-15 02:00:46 +00:00
renovate[bot]
474bcf5f05 Update dependency more-itertools to v10.2.0 2024-01-15 02:00:04 +00:00
Safihre
cf24ada3f1 Move helpful_warnings declaration so it's read as the very first 2024-01-10 16:23:07 +01:00
Safihre
7b26bb7171 Add 4.2.2 already to appdata 2024-01-10 13:32:35 +01:00
SABnzbd Automation
83d89ff05c Update translatable texts
[skip ci]
2024-01-10 09:53:14 +00:00
Safihre
7034bdcbf6 Update text files for 4.2.2 Beta 1
Closes #2776
2024-01-10 10:52:24 +01:00
Safihre
4c12da5418 Update log anonymization for new IPv4/6 logging
Closes #2775
2024-01-10 09:07:23 +01:00
SABnzbd Automation
8bf1d2bc1f Update translatable texts
[skip ci]
2024-01-10 05:54:35 +00:00
Steve Albrecht
900a99653f Move UI theme selection out of advanced settings (#2774)
* Make UI theme selection a non-advanced setting

* Call stylesheet a "theme" instead of a "skin"

---------

Co-authored-by: sbalbrecht <stpehen.b.albrecht@gmail.com>
2024-01-10 06:53:54 +01:00
Safihre
f33fcfa7b1 Require only 5 characters to define a filename 2024-01-09 16:22:15 +01:00
SABnzbd Automation
130148d475 Update translatable texts
[skip ci]
2024-01-09 09:34:35 +00:00
Safihre
021f87eef3 Correct focus style of Config Night navbar 2024-01-09 10:33:45 +01:00
Safihre
8ef8788152 Correct logic error in guess_what
@jcfp This check seems very specific, are these conditions ever all True at the same time?
2024-01-08 15:34:31 +01:00
renovate[bot]
041756829a Update dependency pyinstaller-hooks-contrib to v2023.12 2024-01-08 00:42:10 +00:00
Safihre
89c7f52d84 Do not ask for feedback about categories based on Groups anymore
It's staying.
2024-01-07 21:18:00 +01:00
SABnzbd Automation
c40b560d15 Update translatable texts
[skip ci]
2024-01-07 19:58:50 +00:00
Safihre
74f9391076 Explain that Retry disabled aborting due to missing articles
Closes #2765
2024-01-07 20:58:12 +01:00
SABnzbd Automation
76dab68759 Update translatable texts
[skip ci]
2024-01-07 19:48:48 +00:00
Safihre
d405548825 Shutdown SABnzbd automatically during update on Windows
Closes #2766
2024-01-07 20:48:05 +01:00
Safihre
b4c76f034f If duplicate is discarded during URL-fetches, no nzo_id is known yet
Closes #2771
2024-01-06 22:53:17 +01:00
Safihre
cda2402d01 Fix typo in asset name of Windows release 2024-01-06 11:37:33 +01:00
Safihre
2cf9ab2620 Build using old PyInstaller so virusscanners don't get upset 2024-01-06 09:26:02 +01:00
Safihre
465f182493 Add 4.2.1 to appdata 2024-01-05 10:11:37 +01:00
SABnzbd Automation
23321a1075 Update translatable texts
[skip ci]
2024-01-05 08:54:08 +00:00
Safihre
ff2b9243e9 Update text files for 4.2.1 2024-01-05 09:53:09 +01:00
Safihre
471fb7a83c Log waiting for download folder at Info level
Closes #2768
2024-01-05 09:34:28 +01:00
Safihre
0db5ae8390 Updates to table structure require commit
Closes #2769
2024-01-05 09:33:46 +01:00
SABnzbd Automation
e36f60085f Update translatable texts
[skip ci]
2024-01-04 13:42:32 +00:00
Safihre
3718fc36f0 Don't block network drives, only warn against them 2024-01-04 14:41:25 +01:00
Safihre
71a41f6369 Catch None-return value from user_version database command
Relates to #2764
2024-01-04 14:06:41 +01:00
SABnzbd Automation
47a2f9a4a7 Update translatable texts
[skip ci]
2024-01-03 21:11:59 +00:00
Safihre
a6f0bc0490 New release check is performed daily 2024-01-03 22:10:08 +01:00
Safihre
cb7c37a836 Remove outdated certificate validation check
It was relevant in Python 2.7-days.
This was we also don't make any external HTTP calls on start-up anymore, so hopefully we upset less virus scanners.
2024-01-03 22:04:42 +01:00
Safihre
e89eba08c4 Add helper function is_none 2024-01-03 15:56:09 +01:00
Sander
d5d857983d Improved IPv6 address detection (#2753)
* happyeyeballs(): you can specify the family

* happyeyeballs(): you can specify the family

* happyeyeballs(): pytest

* happyeyeballs(): measure internetspeed_ipv4 and internetspeed_ipv6

* happyeyeballs(): measure internetspeed_ipv4 and internetspeed_ipv6

* happyeyeballs(): corrected pytest in case no ipv6 in environment

* internetspeed ipv4 and ipv6

* take care when ipv6 is not working

* take care when ipv6 is not working

* take care when ipv6 is not working

* take care when ipv6 is not working

* take care when ipv6 is not working

* black formatting

* faster test-HE on ipv4-only network

* comment in unittest

* requests in requirements.txt

* use urllib, not requests

* use urllib, not requests

* logging: tell family, if specified

* logging: tell family, if specified

* Merge remote-tracking branch 'origin/ipv6_HE_speedtest_address' into ipv6_HE_speedtest_address

* Merge remote-tracking branch 'origin/ipv6_HE_speedtest_address' into ipv6_HE_speedtest_address

* cleanup of getipaddress

* cleanup of getipaddress

* cleanup of getipaddress

* cleanup of getipaddress

* Merge remote-tracking branch 'origin/ipv6_HE_speedtest_address' into ipv6_HE_speedtest_address

* Changes to PR

* Make sure the returned IP is valid

---------

Co-authored-by: sander <san.d.erjonkers+github@gmail.com>
Co-authored-by: Safihre <safihre@sabnzbd.org>
2024-01-03 14:25:34 +01:00
94 changed files with 5734 additions and 764 deletions

View File

@@ -22,7 +22,8 @@
"ignoreDeps": [
"jaraco.text",
"sabctools",
"werkzeug"
"werkzeug",
"pyinstaller"
],
"packageRules": [
{

View File

@@ -39,7 +39,7 @@ jobs:
uses: actions/upload-artifact@v3
with:
path: "*-win64-bin.zip"
name: Windows Windows standalone binary (64bit)
name: Windows standalone binary (64bit)
- name: Upload Windows installer (64bit)
uses: actions/upload-artifact@v3
with:
@@ -71,7 +71,7 @@ jobs:
uses: actions/upload-artifact@v3
with:
path: "*-win32-bin.zip"
name: Windows Windows standalone binary (32bit and legacy)
name: Windows standalone binary (32bit and legacy)
build_macos:
name: Build macOS binary

View File

@@ -1,7 +1,27 @@
Release Notes - SABnzbd 4.2.0
Release Notes - SABnzbd 4.2.2 Release Candidate 1
=========================================================
This is the latest stable SABnzbd release, version 4.2.0, which includes several new features and bug fixes.
This is the second bug-fix release of SABnzbd 4.2.0.
## Bug-fixes and changes since 4.2.1:
* **Bug-fixes:**
* RSS readout could result in a crash if duplicate detection is enabled.
* Passwords were not always correctly parsed.
* Warnings could show even if `helpful_warnings` was disabled.
* **Changes:**
* Parsing of filenames from the NZB was extended to allow more exotic formatting.
* Windows: Installer will automatically shutdown SABnzbd if it is running.
## Bug-fixes and changes since 4.2.0:
* **Bug-fixes:**
* New downloads did not appear in the History after the update to 4.2.0.
* **Changes:**
* The external IPv6-address is shown, instead of the internal address.
* Windows: Network drives as `Download Folder` are no longer blocked, only warned against.
## Key changes since 4.1.0

View File

@@ -103,8 +103,7 @@ import sabnzbd.config as config
import sabnzbd.cfg
import sabnzbd.notifier as notifier
import sabnzbd.zconfig
from sabnzbd.getipaddress import localipv4, publicipv4, ipv6, dnslookup
from sabnzbd.utils.getperformance import getpystone, getcpu
from sabnzbd.getipaddress import local_ipv4
import sabnzbd.utils.ssdp as ssdp
try:
@@ -1474,7 +1473,7 @@ def main():
external_host = cherryhost
else:
# Fall back to the IPv4 address of the LAN interface
external_host = localipv4()
external_host = local_ipv4()
logging.debug("Using %s as host address for Bonjour and SSDP", external_host)
# Only broadcast to local network addresses. If local ranges have been defined, further

View File

@@ -1,8 +1,8 @@
# Basic build requirements
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
pyinstaller==6.3.0
pyinstaller==5.13.2
packaging==23.2
pyinstaller-hooks-contrib==2023.11
pyinstaller-hooks-contrib==2023.12
altgraph==0.17.4
wrapt==1.16.0
setuptools==69.0.3

View File

@@ -170,6 +170,24 @@ Section "SABnzbd" SecDummy
SetOutPath "$INSTDIR"
SetShellVarContext all
DetailPrint $(MsgShutting)
;------------------------------------------------------------------
; Shutdown any running service
!insertmacro SERVICE "stop" "SABnzbd" ""
;------------------------------------------------------------------
; Terminate SABnzbd.exe
loop:
${nsProcess::FindProcess} "SABnzbd.exe" $R0
StrCmp $R0 0 0 endcheck
${nsProcess::CloseProcess} "SABnzbd.exe" $R0
Sleep 500
Goto loop
endcheck:
${nsProcess::Unload}
;------------------------------------------------------------------
; Make sure old versions are gone (reg-key already read in onInt)
StrCmp $PREV_INST_DIR "" noPrevInstallRemove
@@ -291,31 +309,6 @@ Function .onInit
; Display language chooser
!insertmacro MUI_LANGDLL_DISPLAY
;------------------------------------------------------------------
; make sure user terminates sabnzbd.exe or else abort
;
loop:
${nsProcess::FindProcess} "SABnzbd.exe" $R0
StrCmp $R0 0 0 endcheck
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgCloseSab) IDOK loop IDCANCEL exitinstall
exitinstall:
${nsProcess::Unload}
Abort
endcheck:
;------------------------------------------------------------------
; make sure both services aren't running
;
!insertmacro SERVICE "running" "SABnzbd" ""
Pop $0 ;response
!insertmacro SERVICE "running" "SABHelper" ""
Pop $1
${If} $0 == true
${OrIf} $1 == true
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgCloseSab) IDOK loop IDCANCEL exitinstall
; exitinstall already defined above
${EndIf}
;------------------------------------------------------------------
; Tell users about the service change
;
@@ -323,7 +316,8 @@ Function .onInit
Pop $0 ;response
${If} $0 == true
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgServChange) IDOK removeservices IDCANCEL exitinstall
; exitinstall already defined above
exitinstall:
Abort
removeservices:
!insertmacro SERVICE "delete" "SABHelper" ""
!insertmacro SERVICE "delete" "SABnzbd" ""
@@ -345,9 +339,9 @@ UninstallText $(MsgUninstall)
Section "un.$(MsgDelProgram)" Uninstall
;make sure sabnzbd.exe isn't running..if so shut it down
DetailPrint $(MsgShutting)
${nsProcess::KillProcess} "SABnzbd.exe" $R0
${nsProcess::Unload}
DetailPrint "Process Killed"
; add delete commands to delete whatever files/registry keys/etc you installed here.
Delete "$INSTDIR\uninstall.exe"
@@ -409,14 +403,14 @@ SectionEnd
LangString MsgSupportUs ${LANG_ENGLISH} "Support the project, Donate!"
LangString MsgCloseSab ${LANG_ENGLISH} "Please close $\"SABnzbd.exe$\" first"
LangString MsgServChange ${LANG_ENGLISH} "The SABnzbd Windows Service changed in SABnzbd 3.0.0. $\nYou will need to reinstall the SABnzbd service. $\n$\nClick `OK` to remove the existing services or `Cancel` to cancel this upgrade."
LangString MsgOnly64bit ${LANG_ENGLISH} "The installer only supports 64-bit Windows, use the standalone version to run on 32-bit Windows."
LangString MsgNoWin7 ${LANG_ENGLISH} "The installer only supports Windows 8.1 and above, use the standalone legacy version to run on older Windows version."
LangString MsgShutting ${LANG_ENGLISH} "Shutting down SABnzbd"
LangString MsgUninstall ${LANG_ENGLISH} "This will uninstall SABnzbd from your system"
LangString MsgRunAtStart ${LANG_ENGLISH} "Run at startup"

View File

@@ -29,18 +29,8 @@
</tr>
<tr>
<th scope="row">OpenSSL:</th>
<td>
$ssl_version
</td>
<td>$ssl_version</td>
</tr>
<!--#if not $certificate_validation#-->
<tr>
<th scope="row"></th>
<td>
<span class="label label-danger">$T('warning')</span> $T('explain-nosslcontext')
</td>
</tr>
<!--#end if#-->
<!--#if not $windows and not $macos#-->
<tr>
<th scope="row">Par2cmdline-turbo:</th>
@@ -89,7 +79,7 @@
</tr>
<tr>
<th scope="row">$T('menu-live-chat') </th>
<td><a href="https://sabnzbd.org/live-chat/" target="_blank">https://sabnzbd.org/live-chat/</a></td>
<td><a href="https://sabnzbd.org/live-chat/" target="_blank">https://sabnzbd.org/live-chat/</a> (IRC &amp; Discord)</td>
</tr>
<tr>
<th scope="row">$T('menu-issues') </th>

View File

@@ -35,7 +35,7 @@
<span class="desc">$T('explain-enable_https')</span>
<span class="desc"><span class="label label-warning">$T('warning').upper()</span> $T('explain-enable_https_warning')</span>
</div>
<div class="field-pair advanced-settings">
<div class="field-pair">
<label class="config" for="web_dir">$T('opt-web_dir')</label>
<select name="web_dir" id="web_dir">
<!--#for $webline in $web_list#-->
@@ -172,11 +172,10 @@
<option value="1" <!--#if $check_new_rel == 1 then 'selected="selected"' else ""#--> >$T('on')</option>
<option value="2" <!--#if $check_new_rel == 2 then 'selected="selected"' else ""#--> >$T('also-test')</option>
</select>
<span class="desc">$T('explain-check_new_rel')</span>
</div>
<div class="field-pair advanced-settings <!--#if int($certificate_validation) == 0 then "disabled" else ""#-->">
<div class="field-pair advanced-settings">
<label class="config" for="enable_https_verification">$T('opt-enable_https_verification')</label>
<input type="checkbox" name="enable_https_verification" id="enable_https_verification" value="1" <!--#if int($enable_https_verification) > 0 then 'checked="checked"' else ""#--> <!--#if int($certificate_validation) == 0 then "disabled=\"disabled\"" else ""#--> />
<input type="checkbox" name="enable_https_verification" id="enable_https_verification" value="1" <!--#if int($enable_https_verification) > 0 then 'checked="checked"' else ""#--> />
<span class="desc">$T('explain-enable_https_verification')</span>
</div>
<div class="field-pair advanced-settings">

View File

@@ -91,9 +91,9 @@
<label class="config" for="timeout">$T('srv-timeout')</label>
<input type="number" name="timeout" id="timeout" min="20" max="240" /> <i>$T('seconds')</i>
</div>
<div class="field-pair <!--#if int($certificate_validation) == 0 then "disabled" else ""#--> advanced-settings">
<div class="field-pair advanced-settings">
<label class="config" for="ssl_verify">$T('opt-ssl_verify')</label>
<select name="ssl_verify" id="ssl_verify" <!--#if int($certificate_validation) == 0 then "disabled=\"disabled\"" else ""#-->>
<select name="ssl_verify" id="ssl_verify">
<option value="2" selected>$T('ssl_verify-strict')</option>
<option value="1">$T('ssl_verify-normal')</option>
<option value="0">$T('ssl_verify-disabled')</option>
@@ -223,9 +223,9 @@
<input type="number" name="timeout" id="timeout$cur" value="$server['timeout']" min="20" max="240" required /> <i>$T('seconds')</i>
</div>
<div class="field-pair <!--#if int($certificate_validation) == 0 then "disabled" else ""#--> advanced-settings">
<div class="field-pair advanced-settings">
<label class="config" for="ssl_verify$cur">$T('opt-ssl_verify')</label>
<select name="ssl_verify" id="ssl_verify$cur" <!--#if int($certificate_validation) == 0 then "disabled=\"disabled\"" else ""#-->>
<select name="ssl_verify" id="ssl_verify$cur">
<option value="2" <!--#if $server['ssl_verify'] == 2 then 'selected="selected"' else ""#--> >$T('ssl_verify-strict')</option>
<option value="1" <!--#if $server['ssl_verify'] == 1 then 'selected="selected"' else ""#--> >$T('ssl_verify-normal')</option>
<option value="0" <!--#if $server['ssl_verify'] == 0 then 'selected="selected"' else ""#--> >$T('ssl_verify-disabled')</option>

View File

@@ -47,6 +47,7 @@ textarea,
.navbar-default .navbar-nav>.open>a:hover,
.navbar-default .navbar-nav>li>a.active,
.navbar-default .navbar-nav>li>a:hover,
.navbar-default .navbar-nav>li>a:focus,
.navbar-logo:hover,
.quoteBlock,
.selected,

View File

@@ -665,6 +665,9 @@
</div>
</div>
</fieldset>
<fieldset>
$T('Glitter-retryNoChecks')
</fieldset>
</div>
<div class="modal-footer">
<button class="btn btn-default"><span class="glyphicon glyphicon-repeat"></span> $T('button-retry')</button>

View File

@@ -69,7 +69,7 @@
<div class="form-group">
<label for="ssl_verify" class="col-sm-4 control-label">$T('opt-ssl_verify')</label>
<div class="col-sm-8">
<select name="ssl_verify" id="ssl_verify" class="form-control" <!--#if int($certificate_validation) == 0 then "disabled=\"disabled\"" else ""#-->>
<select name="ssl_verify" id="ssl_verify" class="form-control">
<option value="2" <!--#if $ssl_verify == 2 then 'selected="selected"' else ""#--> >$T('ssl_verify-strict')</option>
<option value="1" <!--#if $ssl_verify == 1 then 'selected="selected"' else ""#--> >$T('ssl_verify-normal')</option>
<option value="0" <!--#if $ssl_verify == 0 then 'selected="selected"' else ""#--> >$T('ssl_verify-disabled')</option>

View File

@@ -30,7 +30,9 @@
<url type="faq">https://sabnzbd.org/wiki/faq</url>
<url type="contact">https://sabnzbd.org/live-chat.html</url>
<releases>
<release version="4.2.0" date="2024-01-05" type="stable"/>
<release version="4.2.2" date="2024-02-01" type="stable"/>
<release version="4.2.1" date="2024-01-05" type="stable"/>
<release version="4.2.0" date="2024-01-03" type="stable"/>
<release version="4.1.0" date="2023-09-26" type="stable"/>
<release version="4.0.3" date="2023-06-16" type="stable"/>
<release version="4.0.2" date="2023-06-09" type="stable"/>

View File

@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"

View File

@@ -1,9 +1,9 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
"MIME-Version: 1.0\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# ION, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: ION, 2020\n"
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"

113
po/email/it.po Normal file
View File

@@ -0,0 +1,113 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Language-Team: Italian (https://app.transifex.com/sabnzbd/teams/111101/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: email/email.tmpl:1
msgid ""
"##\n"
"## Default Email template for SABnzbd\n"
"## This a Cheetah template\n"
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
"##\n"
"## Newlines and whitespace are significant!\n"
"##\n"
"## These are the email headers\n"
"To: $to\n"
"From: $from\n"
"Date: $date\n"
"Subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> job $name\n"
"X-priority: 5\n"
"X-MS-priority: 5\n"
"## After this comes the body, the empty line is required!\n"
"\n"
"Hi,\n"
"<!--#if $status #-->\n"
"SABnzbd has downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else \"(newzbin #\" + $msgid + \")\"#-->\n"
"<!--#else#-->\n"
"SABnzbd has failed to download \"$name\" <!--#if $msgid==\"\" then \"\" else \"(newzbin #\" + $msgid + \")\"#-->\n"
"<!--#end if#-->\n"
"Finished at $end_time\n"
"Downloaded $size\n"
"\n"
"Results of the job:\n"
"<!--#for $stage in $stages #-->\n"
"Stage $stage <!--#slurp#-->\n"
"<!--#for $result in $stages[$stage]#-->\n"
" $result <!--#slurp#-->\n"
"<!--#end for#-->\n"
"<!--#end for#-->\n"
"<!--#if $script!=\"\" #-->\n"
"Output from user script \"$script\" (Exit code = $script_ret):\n"
"$script_output\n"
"<!--#end if#-->\n"
"<!--#if $status #-->\n"
"Enjoy!\n"
"<!--#else#-->\n"
"Sorry!\n"
"<!--#end if#-->\n"
msgstr ""
#: email/rss.tmpl:1
msgid ""
"##\n"
"## RSS Email template for SABnzbd\n"
"## This a Cheetah template\n"
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
"##\n"
"## Newlines and whitespace are significant!\n"
"##\n"
"## These are the email headers\n"
"To: $to\n"
"From: $from\n"
"Date: $date\n"
"Subject: SABnzbd has added $amount jobs to the queue\n"
"X-priority: 5\n"
"X-MS-priority: 5\n"
"## After this comes the body, the empty line is required!\n"
"\n"
"Hi,\n"
"\n"
"SABnzbd has added $amount job(s) to the queue.\n"
"They are from RSS feed \"$feed\".\n"
"<!--#for $job in $jobs#-->\n"
" $job <!--#slurp#-->\n"
"<!--#end for#-->\n"
"\n"
"Bye\n"
msgstr ""
#: email/badfetch.tmpl:1
msgid ""
"##\n"
"## Bad URL Fetch Email template for SABnzbd\n"
"## This a Cheetah template\n"
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
"##\n"
"## Newlines and whitespace are significant!\n"
"##\n"
"## These are the email headers\n"
"To: $to\n"
"From: $from\n"
"Date: $date\n"
"Subject: SABnzbd failed to fetch an NZB\n"
"X-priority: 5\n"
"X-MS-priority: 5\n"
"## After this comes the body, the empty line is required!\n"
"\n"
"Hi,\n"
"\n"
"SABnzbd has failed to retrieve the NZB from $url.\n"
"The error message was: $msg\n"
"\n"
"Bye\n"
msgstr ""

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"

View File

@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
@@ -253,8 +253,9 @@ msgstr ""
msgid "Permissions setting of %s might deny SABnzbd access to the files and folders it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -677,6 +678,10 @@ msgstr ""
msgid "Back"
msgstr ""
#: sabnzbd/misc.py
msgid "To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr ""
@@ -2411,10 +2416,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr ""
#: sabnzbd/skintext.py
msgid "Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will be encrypted, however, validating a server's identity using its certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed up repairs by installing par2cmdline-turbo, it is available for many platforms."
msgstr ""
@@ -2465,11 +2466,11 @@ msgid "Port SABnzbd should listen on."
msgstr ""
#: sabnzbd/skintext.py
msgid "Web Interface"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
@@ -3063,10 +3064,6 @@ msgstr ""
msgid "Check for New Release"
msgstr ""
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr ""
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4084,6 +4081,10 @@ msgstr ""
msgid "Fetch"
msgstr ""
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr ""
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr ""
@@ -4188,6 +4189,10 @@ msgstr ""
msgid "Bottom"
msgstr ""
#: sabnzbd/skintext.py
msgid "When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr ""

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Pavel C <quoing_transifex@mess.cz>, 2023
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
@@ -280,8 +280,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -728,6 +729,11 @@ msgstr "CHYBA:"
msgid "Back"
msgstr "Zpět"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "d"
@@ -2500,14 +2506,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "Povolit 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2560,11 +2558,11 @@ msgid "Port SABnzbd should listen on."
msgstr ""
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Webové rozhraní"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
@@ -3216,10 +3214,6 @@ msgstr ""
msgid "Check for New Release"
msgstr ""
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr ""
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4282,6 +4276,10 @@ msgstr ""
msgid "Fetch"
msgstr ""
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Webové rozhraní"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr ""
@@ -4386,6 +4384,12 @@ msgstr ""
msgid "Bottom"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr ""

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"
@@ -280,8 +280,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -736,6 +737,11 @@ msgstr "FEJL:"
msgid "Back"
msgstr "Tilbage"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "d"
@@ -2541,14 +2547,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "Aktivere 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2601,12 +2599,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Port som SABnzbd ska lytte på."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Webgrænseflade"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Vælg et Web-grænseflade udseende."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3290,10 +3288,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Kontroller for ny version"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Kontroller for ny version af SABnzbd hver uge."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4380,6 +4374,10 @@ msgstr "ADVARSEL:"
msgid "Fetch"
msgstr "Hent"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Webgrænseflade"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Opdateringsfrekvens"
@@ -4484,6 +4482,12 @@ msgstr "Øverst"
msgid "Bottom"
msgstr "Bunden"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Vis scriptlog"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# C E <githubce@eiselt.ch>, 2020
@@ -12,12 +12,13 @@
# reloxx13 <reloxx@interia.pl>, 2022
# kameb, 2023
# Safihre <safihre@sabnzbd.org>, 2023
# HandyDandy04, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Last-Translator: HandyDandy04, 2024\n"
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -300,8 +301,9 @@ msgstr ""
"Die aktuellen Zugriffseinstellungen (%s) könnte SABnzbd den Zugriff auf die "
"erstellten Dateien und Ordner von SABnzbd verweigern."
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr "Netzwerkpfad \"%s\" ist hier nicht erlaubt"
#: sabnzbd/cfg.py
@@ -781,6 +783,13 @@ msgstr "FEHLER:"
msgid "Back"
msgstr "Zurück"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
"Um alle hilfreichen Warnungen zu verbergen, deaktiviere die extra "
"Einstellung 'helpful_warnings'."
#: sabnzbd/misc.py
msgid "d"
msgstr "t"
@@ -2170,7 +2179,7 @@ msgstr "Forum"
#. Main menu item
#: sabnzbd/skintext.py
msgid "Live Chat"
msgstr ""
msgstr "Echtzeit Chat"
#. Main menu item
#: sabnzbd/skintext.py
@@ -2621,23 +2630,13 @@ msgstr ""
msgid "Enable 7zip"
msgstr "7zip aktivieren"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
"Sichere (SSL) Verbindungen von SABnzbd zu Newsserver und Webseiten sind "
"verschlüsselt, aber das Validieren der Server Identität mit dessen "
"Zertifikat ist nicht möglich. Vorraussetzungen dafür sind OpenSSL 1.0.2 oder"
" höher und aktuelle lokale CA Zertifikate."
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
"platforms."
msgstr ""
"Erhöhe Reparaturgeschwindigkeit durch installation von Multicore Par2, "
"verfügbar auf vielen Plattformen."
#: sabnzbd/skintext.py
msgid "Version"
@@ -2685,12 +2684,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Port, auf dem SABnzbd auf Anfragen warten soll."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Web-Oberfläche"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Gestaltung der Web-Oberfläche verändern."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3245,19 +3244,20 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Identical download detection"
msgstr ""
msgstr "Erkennung identischer Downloads"
#: sabnzbd/skintext.py
msgid "Detect identical downloads based on name or NZB contents."
msgstr ""
"Erkenne identische Downloads anhand des Dateinamens oder des NZB-Inhalts."
#: sabnzbd/skintext.py
msgid "Smart duplicate detection"
msgstr ""
msgstr "Intelligente Duplikat Erkennung"
#: sabnzbd/skintext.py
msgid "Detect duplicates based on analysis of the filename."
msgstr ""
msgstr "Erkenne Duplikate durch Analyse der Dateinamen."
#: sabnzbd/skintext.py
msgid "Allow proper releases"
@@ -3268,6 +3268,8 @@ msgid ""
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
"the download name."
msgstr ""
"Umgehe intelligente Duplikat-Erkennung, wenn PROPER, REAL oder REPACK im "
"Download-Namen erkannt wird"
#. Four way switch for duplicates
#: sabnzbd/skintext.py
@@ -3365,6 +3367,8 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Executed after the queue finishes downloading."
msgstr ""
"Wurde nach Fertigstellung des Downloads der eingereihten Aufträge "
"ausgeführt."
#: sabnzbd/skintext.py
msgid "Extra PAR2 Parameters"
@@ -3424,10 +3428,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Auf neue Version prüfen"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Wöchentlich überprüfen, ob eine neue SABnzbd-Version verfügbar ist."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4552,6 +4552,10 @@ msgstr "WARNUNG:"
msgid "Fetch"
msgstr "Abrufen"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Web-Oberfläche"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Aktualisierungsrate"
@@ -4656,6 +4660,12 @@ msgstr "Ganz nach oben"
msgid "Bottom"
msgstr "Ganz nach unten"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Skript-Protokoll anzeigen"
@@ -4710,7 +4720,7 @@ msgstr "Tastaturkürzel"
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
msgstr "Shift+Pfeil-Taste: Durchsuche eingereihte Aufträge und Verlaufsseiten"
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Ester Molla Aragones <moarages@gmail.com>, 2020
@@ -8,7 +8,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"
@@ -295,8 +295,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -760,6 +761,11 @@ msgstr "ERROR:"
msgid "Back"
msgstr "Atrás"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "d"
@@ -2601,20 +2607,6 @@ msgstr "Cuando tu dirección IP cambie o reinicies SABnzbd, la sesión caduca."
msgid "Enable 7zip"
msgstr "Habilitar 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
"Las conexiones seguras (capa de puertos seguros, SSL) de SABnzbd a los "
"newsservers (servidores de notícias) y páginas web HTTPS estarán "
"codificadas. Sin embargo, no es posible validar la identidad de un servidor "
"utilizando sus certificados. Se necesitan certificados OpenSSL 1.0.2 o "
"versiones posteriores y certificados actualizados AC (autoridad de "
"certificación) locales."
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2667,12 +2659,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Puerto en que SABnzbd debería escuchar"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Interfaz web"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Elije una piel"
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3376,10 +3368,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Buscar Nva Versión"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Chequear semanalmente por nuevas versiones de SABnzbd."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4483,6 +4471,10 @@ msgstr "AVISO:"
msgid "Fetch"
msgstr "Obtener"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Interfaz web"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Frecuencia de actualización"
@@ -4587,6 +4579,12 @@ msgstr "Superior"
msgid "Bottom"
msgstr "Último"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Ver bitacora de Scripts"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"
@@ -278,8 +278,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -733,6 +734,11 @@ msgstr "VIRHE:"
msgid "Back"
msgstr "Takaisin"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "pv"
@@ -2537,14 +2543,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "7zip käytössä"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2597,12 +2595,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Portti jota SABnzbdn tulisi kuunnella."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Web-käyttöliittymä"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Valitse teema."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3299,10 +3297,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Tarkista uusi versio"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Tarkistaa viikottain uusimman SABnzbd version."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4388,6 +4382,10 @@ msgstr "VAROITUS:"
msgid "Fetch"
msgstr "Nouda"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Web-käyttöliittymä"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Päivitysväli"
@@ -4492,6 +4490,12 @@ msgstr "Ylin"
msgid "Bottom"
msgstr "Alin"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Näytä skriptien loki"

View File

@@ -1,15 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
# Fred L <88com88@gmail.com>, 2023
# Fred L <88com88@gmail.com>, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2023\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2024\n"
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -299,9 +299,10 @@ msgstr ""
"Le réglage des permissions de %s pourrait refuser à SABnzbd l'accès aux "
"fichiers et dossiers qu'il crée."
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgstr "Le chemin réseau \"%s\" n'est pas autorisé ici"
msgid "Network path \"%s\" should not be used here"
msgstr "Le chemin réseau \"%s\" ne devrait pas être utilisé ici"
#: sabnzbd/cfg.py
msgid "Queue not empty, cannot change folder."
@@ -776,6 +777,13 @@ msgstr "ERREUR:"
msgid "Back"
msgstr "Retour"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
"Pour éviter tous les avertissements utiles, désactivez le paramètre spécial "
"'helpful_warnings'."
#: sabnzbd/misc.py
msgid "d"
msgstr "j"
@@ -2613,18 +2621,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "Activer 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
"Les connexions sécurisées (SSL) de SABnzbd aux serveurs de news et aux sites"
" web HTTPS seront cryptées, cependant, la validation de l'identité d'un des "
"serveur à l'aide de ses certificats n'est pas possible. OpenSSL 1.0.2, ou "
"supérieur, et des certificats locaux AC à jour sont requis."
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2679,11 +2675,11 @@ msgid "Port SABnzbd should listen on."
msgstr "Port que SABnzbd doit surveiller."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Interface Web"
msgid "Web Interface Theme"
msgstr "Thème de l'interface web"
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgid "Choose a theme."
msgstr "Choisissez un thème."
#: sabnzbd/skintext.py
@@ -3422,10 +3418,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Vérifier les mises à jour"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Vérifier chaque semaine les mises à jour de SABnzbd."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4553,6 +4545,10 @@ msgstr "AVERTISSEMENT :"
msgid "Fetch"
msgstr "Charger"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Interface Web"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Taux de rafraîchissement"
@@ -4657,6 +4653,14 @@ msgstr "Tout en haut"
msgid "Bottom"
msgstr "Tout en bas"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
"Lorsque vous réessayez une tâche, la \"Détection des doublons\" et "
"\"Abandonner les travaux qui ne peuvent pas être terminés\" sont désactivés."
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Afficher le journal des scripts"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: ION, 2023\n"
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
@@ -277,9 +277,10 @@ msgid ""
msgstr ""
"הגדרת הרשאות של %s עשויה לדחות גישה מן SABnzbd אל הקבצים והתיקיות שהוא יוצר."
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgstr "נתיב הרשת \"%s\" אינו מותר כאן"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
msgid "Queue not empty, cannot change folder."
@@ -737,6 +738,11 @@ msgstr "שגיאה:"
msgid "Back"
msgstr "הקודם"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "י"
@@ -2547,17 +2553,6 @@ msgstr "כאשר כתובת ה־IP שלך משתנה או כאשר SABnzbd מו
msgid "Enable 7zip"
msgstr "אפשר חילוץ 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
"חיבורים מאובטחים (SSL) מן SABnzbd אל שרתי חדשות ואל אתרי HTTPS יוצפנו, עם "
"זאת, וידוא זהות של שרת ע״י שימוש בתעודות שלו הוא בלתי אפשרי. OpenSSL 1.0.2 "
"ומעלה ותעודות CA מקומיות עדכניות דרושים."
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2611,12 +2606,12 @@ msgid "Port SABnzbd should listen on."
msgstr "פתחה אשר SABnzbd צריך להאזין אליה."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "ממשק רשת"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "בחר עור."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3306,10 +3301,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "בדוק אחר שחרור חדש"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "בדוק פעם בשבוע אחר שחרור SABnzbd חדש."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4401,6 +4392,10 @@ msgstr "אזהרה:"
msgid "Fetch"
msgstr "משוך"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "ממשק רשת"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "קצב רענון"
@@ -4505,6 +4500,12 @@ msgstr "ראש"
msgid "Bottom"
msgstr "תחתית"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "הצג יומן תסריטים"

4663
po/main/it.po Normal file
View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"
@@ -274,8 +274,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -728,6 +729,11 @@ msgstr "FEIL:"
msgid "Back"
msgstr "Tilbake"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "d"
@@ -2531,14 +2537,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "Aktiver 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2591,12 +2589,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Porten som SABnzbd skal bruke."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Webgrensesnitt"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Velg et skall."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3276,10 +3274,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Se etter ny utgave"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Se etter ny utgave av SABnzbd hver uke."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4360,6 +4354,10 @@ msgstr "ADVARSEL:"
msgid "Fetch"
msgstr "Hent"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Webgrensesnitt"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Oppdateringsfrekvens"
@@ -4464,6 +4462,12 @@ msgstr "Topp"
msgid "Bottom"
msgstr "Bunn"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Se skriptlogg"

View File

@@ -1,16 +1,16 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Rik Brouwer, 2022
# Robert Lampe, 2023
# Safihre <safihre@sabnzbd.org>, 2023
# Safihre <safihre@sabnzbd.org>, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2024\n"
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -292,9 +292,10 @@ msgstr ""
"Ingestelde rechten van %s zouden kunnen beletten dat SABnzbd toegang heeft "
"tot de aangemaakte bestanden en mappen."
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgstr "Netwerk-pad \"%s\" hier niet toegestaan."
msgid "Network path \"%s\" should not be used here"
msgstr "We raden af hier de netwerk-locatie \"%s\" te gebruiken"
#: sabnzbd/cfg.py
msgid "Queue not empty, cannot change folder."
@@ -773,6 +774,13 @@ msgstr "FOUT:"
msgid "Back"
msgstr "Terug"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
"Om alle waarschuwingen met mogelijke problemen te blokkeren kan de Speciale "
"optie 'helpful_warnings' uitgezet worden."
#: sabnzbd/misc.py
msgid "d"
msgstr "d"
@@ -2595,18 +2603,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "7Zip toestaan"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
"Beveiligde (SSL) verbindingen van SABnzbd naar nieuwsservers en HTTPS "
"websites worden versleuteld, maar het is niet mogelijk de identiteit van de "
"servers te verifiëren. Voor correcte identificatie zijn OpenSSL 1.0.2 of "
"hoger en bijgewerkte CA-certificaten benodigd."
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2661,12 +2657,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Poort waar op SABnzbd luistert."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Webinterface"
msgid "Web Interface Theme"
msgstr "Webinterface Stijl"
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Kies een bedieningsstijl (<i>herstart nodig</i>)."
msgid "Choose a theme."
msgstr "Kies een stijl voor de webinterface."
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3389,10 +3385,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Periodieke controle voor nieuwe versies"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Controleer elke week of er een nieuwe SABnzbd versie beschikbaar is."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4512,6 +4504,10 @@ msgstr "WAARSCHUWING:"
msgid "Fetch"
msgstr "Ophalen"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Webinterface"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Ververssnelheid"
@@ -4616,6 +4612,15 @@ msgstr "Boven"
msgid "Bottom"
msgstr "Onder"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
"Wanneer een download Opnieuw geprobeerd wordt, staan 'Identieke/Slimme "
"downloaddetectie' en 'Download afbreken als deze zeker niet kan worden "
"voltooid' uit."
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Toon Script resultaat"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"
@@ -270,8 +270,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -728,6 +729,11 @@ msgstr "BŁĄD:"
msgid "Back"
msgstr "Powrót"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "d"
@@ -2536,14 +2542,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "Włącz 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2596,12 +2594,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Port, na którym ma nasłuchiwać SABnzbd"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Interfejs WWW"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Wybierz skórkę"
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3284,10 +3282,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Sprawdzaj aktualizacje"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Sprawdzaj co tydzień dostępność nowych wydań SABnzbd"
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4369,6 +4363,10 @@ msgstr "UWAGA:"
msgid "Fetch"
msgstr "Pobierz"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Interfejs WWW"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Częstotliwość odświeżania"
@@ -4473,6 +4471,12 @@ msgstr "Na górę"
msgid "Bottom"
msgstr "Na dół"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Zobacz log skryptu"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Henrique Moreno, 2023
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
@@ -285,8 +285,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -743,6 +744,11 @@ msgstr "ERRO:"
msgid "Back"
msgstr "Voltar"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "d"
@@ -2550,14 +2556,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "Ativar 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2610,12 +2608,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Porta onde o SABnzbd será ativado."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Interface Web"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Escolha uma skin."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3299,10 +3297,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Procurar por nova versão"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Checar semanalmente por nova versão do SABnzbd."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4383,6 +4377,10 @@ msgstr "AVISO:"
msgid "Fetch"
msgstr "Obter"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Interface Web"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Taxa de atualização"
@@ -4487,6 +4485,12 @@ msgstr "Topo"
msgid "Bottom"
msgstr "Base"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Exibir Log do Script"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Eduard Baniceru <war4peace@gmail.com>, 2021
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"
@@ -285,8 +285,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -749,6 +750,11 @@ msgstr "EROARE:"
msgid "Back"
msgstr "Înapoi"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "d"
@@ -2569,14 +2575,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "Activează 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2629,12 +2627,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Portul pe care SABnzbd îl va asculta."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Interfață Web"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Alege o temă."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3316,10 +3314,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Verifică Versiuni Noi"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Verificare săptămânală versiuni noi SABnzbd."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4400,6 +4394,10 @@ msgstr "ATENŢIE:"
msgid "Fetch"
msgstr "Descarcă"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Interfață Web"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Rată actualizare"
@@ -4504,6 +4502,12 @@ msgstr "Vârf"
msgid "Bottom"
msgstr "Coadă"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Vezi Jurnal Script"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"
@@ -274,8 +274,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -728,6 +729,11 @@ msgstr "ОШИБКА"
msgid "Back"
msgstr "Назад"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "д"
@@ -2533,14 +2539,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2593,12 +2591,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Порт, по которому будет доступна служба SABnzbd."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Веб-интерфейс"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Выберите тему."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3279,10 +3277,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Проверять наличие обновлений"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Еженедельно проверять доступность новых версий SABnzbd."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4367,6 +4361,10 @@ msgstr "ПРЕДУПРЕЖДЕНИЕ"
msgid "Fetch"
msgstr "Загрузить"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Веб-интерфейс"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Частота обновления"
@@ -4471,6 +4469,12 @@ msgstr "В начало"
msgid "Bottom"
msgstr "В конец"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Просмотреть журнал сценария"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"
@@ -272,8 +272,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -725,6 +726,11 @@ msgstr "ГРЕШКА:"
msgid "Back"
msgstr "Назад"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "д"
@@ -2525,14 +2531,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "Омогући 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2585,12 +2583,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Порт на који SABnzbd чека везе."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Веб интерфејс"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Odaberi izgled"
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3267,10 +3265,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Провери нове верзије"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Недељно проверавај за новије верзије програма."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4347,6 +4341,10 @@ msgstr "ПАЖЊА:"
msgid "Fetch"
msgstr "Преузми"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Веб интерфејс"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Брзина освежавања"
@@ -4451,6 +4449,12 @@ msgstr "Врх"
msgid "Bottom"
msgstr "Дно"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Види извештај скрипта"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
@@ -272,8 +272,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -727,6 +728,11 @@ msgstr "FEL:"
msgid "Back"
msgstr "Bakåt"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "d"
@@ -2533,14 +2539,6 @@ msgstr ""
msgid "Enable 7zip"
msgstr "Aktivera 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2593,12 +2591,12 @@ msgid "Port SABnzbd should listen on."
msgstr "Port som SABnzbd ska lyssna på."
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Webbkontrollsutseende"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "Välj ett skin."
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3277,10 +3275,6 @@ msgstr ""
msgid "Check for New Release"
msgstr "Kolla efter ny utgåva"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "Kolla efter ny utgåva av SABnzbd varje vecka."
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4359,6 +4353,10 @@ msgstr "VARNING:"
msgid "Fetch"
msgstr "Hämta"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Webbkontrollsutseende"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Uppdateringsfrekvens"
@@ -4463,6 +4461,12 @@ msgstr "Topp"
msgid "Bottom"
msgstr "Botten"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "Visa skriptlogg"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Kangwei Li <lkw20010211@gmail.com>, 2023\n"
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
@@ -271,8 +271,9 @@ msgid ""
" it creates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Network path \"%s\" is not allowed here"
msgid "Network path \"%s\" should not be used here"
msgstr ""
#: sabnzbd/cfg.py
@@ -721,6 +722,11 @@ msgstr "错误:"
msgid "Back"
msgstr "返回"
#: sabnzbd/misc.py
msgid ""
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
msgstr ""
#: sabnzbd/misc.py
msgid "d"
msgstr "天"
@@ -2513,14 +2519,6 @@ msgstr "每当您的 IP 地址发生变化,或当 SABnzbd 重启,登录会
msgid "Enable 7zip"
msgstr "启用 7zip"
#: sabnzbd/skintext.py
msgid ""
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
" be encrypted, however, validating a server's identity using its "
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
" certificates are required."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
@@ -2573,12 +2571,12 @@ msgid "Port SABnzbd should listen on."
msgstr "SABnzbd 应监听的端口。"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Web 界面"
msgid "Web Interface Theme"
msgstr ""
#: sabnzbd/skintext.py
msgid "Choose a skin."
msgstr "选择皮肤。"
msgid "Choose a theme."
msgstr ""
#: sabnzbd/skintext.py
msgid "SABnzbd Username"
@@ -3227,10 +3225,6 @@ msgstr "在文章发布时长尚不足该值时暂停下载文章。将任务优
msgid "Check for New Release"
msgstr "检查新版本"
#: sabnzbd/skintext.py
msgid "Weekly check for new SABnzbd release."
msgstr "每周检查 SABnzbd 的新版本。"
#. Pick list for weekly test for new releases
#: sabnzbd/skintext.py
msgid "Also test releases"
@@ -4299,6 +4293,10 @@ msgstr "警告:"
msgid "Fetch"
msgstr "装取"
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr "Web 界面"
#: sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "刷新频率"
@@ -4403,6 +4401,12 @@ msgstr "置顶"
msgid "Bottom"
msgstr "置底"
#: sabnzbd/skintext.py
msgid ""
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
"completed' are disabled."
msgstr ""
#: sabnzbd/skintext.py
msgid "View Script Log"
msgstr "查看脚本日志"

View File

@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
@@ -20,10 +20,6 @@ msgstr ""
msgid "Support the project, Donate!"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing services or `Cancel` to cancel this upgrade."
msgstr ""
@@ -36,6 +32,10 @@ msgstr ""
msgid "The installer only supports Windows 8.1 and above, use the standalone legacy version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr ""

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Pavel C <quoing_transifex@mess.cz>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Pavel C <quoing_transifex@mess.cz>, 2022\n"
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
@@ -24,10 +24,6 @@ msgstr ""
msgid "Support the project, Donate!"
msgstr "Podpořte projekt!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -47,6 +43,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr ""

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"
@@ -24,10 +24,6 @@ msgstr "Vis udgivelsesbemærkninger"
msgid "Support the project, Donate!"
msgstr "Støt projektet, donér!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Luk venligst \"SABnzbd.exe\" først"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -47,6 +43,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Dette vil afinstallere SABnzbd fra dit system"

View File

@@ -1,15 +1,16 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# reloxx13 <reloxx@interia.pl>, 2022
# HandyDandy04, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC4\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: reloxx13 <reloxx@interia.pl>, 2022\n"
"Last-Translator: HandyDandy04, 2024\n"
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -25,10 +26,6 @@ msgstr "Versionshinweise anzeigen"
msgid "Support the project, Donate!"
msgstr "Bitte unterstützen Sie das Projekt durch eine Spende!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Schliessen Sie bitte zuerst \"SABnzbd.exe\"."
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -54,6 +51,10 @@ msgstr ""
"Der Installer unterstützt nur Windows 8.1 und höher. Benutze die Standalone-"
"Version für ältere Windows Versionen."
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr "Beende SABnzbd"
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Dies entfernt SABnzbd von Ihrem System"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Ester Molla Aragones <moarages@gmail.com>, 2020\n"
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"
@@ -25,10 +25,6 @@ msgstr "Mostrar notas de la versión"
msgid "Support the project, Donate!"
msgstr "¡Apoye el proyecto, haga una donación!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Por favor cierre primero \"SABnzbd.exe\""
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -54,6 +50,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Esto desinstalará SABnzbd de su sistema"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"
@@ -24,10 +24,6 @@ msgstr "Näytä julkaisutiedot"
msgid "Support the project, Donate!"
msgstr "Tue projektia, lahjoita!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Ole hyvä ja sulje \"SABnzbd.exe\" ensin"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -47,6 +43,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Tämä poistaa SABnzbd:n tietokoneestasi"

View File

@@ -1,15 +1,15 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# Fred L <88com88@gmail.com>, 2021
# Fred L <88com88@gmail.com>, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2021\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2024\n"
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -25,10 +25,6 @@ msgstr "Afficher les notes de version"
msgid "Support the project, Donate!"
msgstr "Soutenez le projet, faites un don !"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Merci de fermer \"SABnzbd.exe\" avant l'installation"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -56,6 +52,10 @@ msgstr ""
" utilisez la version autonome legacy pour les versions antérieures de "
"Windows."
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr "Arrêt de SABnzbd"
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Ceci désinstallera SABnzbd de votre système"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: ION, 2021\n"
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
@@ -25,10 +25,6 @@ msgstr "הראה הערות שחרור"
msgid "Support the project, Donate!"
msgstr "תמוך במיזם, תרום!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "אנא סגור את \"SABnzbd.exe\" תחילה"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -55,6 +51,10 @@ msgstr ""
"המתקין תומך רק במערכת Windows 8.1 ומעלה, השתמש בגרסה העצמאית המיושנת כדי "
"להריץ על גרסת Windows ישנה יותר."
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "זה יסיר את SABnzbd מהמערכת שלך"

78
po/nsis/it.po Normal file
View File

@@ -0,0 +1,78 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Language-Team: Italian (https://app.transifex.com/sabnzbd/teams/111101/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
"services or `Cancel` to cancel this upgrade."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr ""

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"
@@ -24,10 +24,6 @@ msgstr "Vis versjonsmerknader"
msgid "Support the project, Donate!"
msgstr "Støtt prosjektet, donèr!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Vennligst lukk \"SABnzbd.exe\" først"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -47,6 +43,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Dette vil avinstallere SABnzbd fra ditt system"

View File

@@ -1,14 +1,14 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2021
# Safihre <safihre@sabnzbd.org>, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC4\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2021\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2024\n"
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -24,10 +24,6 @@ msgstr "Toon opmerkingen bij deze uitgave"
msgid "Support the project, Donate!"
msgstr "Steun het project, doneer!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Sluit \"SABnzbd.exe\" eerst af"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -54,6 +50,10 @@ msgstr ""
" de standalone legacy versie om SABnzbd uit te voeren op oudere versies van "
"Windows."
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr "SABnzbd wordt afgesloten"
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Dit verwijdert SABnzbd van je systeem"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"
@@ -24,10 +24,6 @@ msgstr "Pokaż informacje o wydaniu"
msgid "Support the project, Donate!"
msgstr "Wspomóż projekt!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Najpierw zamknij SABnzbd.exe"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -47,6 +43,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "To odinstaluje SABnzbd z systemu"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
@@ -24,10 +24,6 @@ msgstr "Mostrar Notas de Lançamento"
msgid "Support the project, Donate!"
msgstr "Apoie o projeto. Faça uma doação!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Por favor, feche \"SABnzbd.exe\" primeiro"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -47,6 +43,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Isso irá desinstalar SABnzbd de seu sistema"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"
@@ -24,10 +24,6 @@ msgstr "Arată Notele de Publicare"
msgid "Support the project, Donate!"
msgstr "Susţine proiectul, Donează!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Închideţi mai întâi \"SABnzbd.exe\""
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -47,6 +43,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Acest lucru va dezinstala SABnzbd din sistem"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"
@@ -24,10 +24,6 @@ msgstr "Показать заметки о выпуске"
msgid "Support the project, Donate!"
msgstr "Поддержите проект. Сделайте пожертвование!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Завершите сначала работу процесса SABnzbd.exe"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -47,6 +43,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Приложение SABnzbd будет удалено из вашей системы"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"
@@ -24,10 +24,6 @@ msgstr "Прикажи белешке о издању"
msgid "Support the project, Donate!"
msgstr "Подржите пројекат, дајте добровољан прилог!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Прво затворите „SABnzbd.exe“"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -47,6 +43,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Ово ће уклонити САБнзбд са вашег система"

View File

@@ -1,14 +1,15 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# Petter Ramme, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Last-Translator: Petter Ramme, 2024\n"
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -24,28 +25,35 @@ msgstr "Visa releasenoteringar"
msgid "Support the project, Donate!"
msgstr "Donera och stöd detta projekt!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Var vänlig stäng \"SABnzbd.exe\" först"
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
"services or `Cancel` to cancel this upgrade."
msgstr ""
"SABnzbd Windows tjänsten ändrades i SABnzbd 3.0.0.\\nSABnzbd tjänsten "
"behöver installeras om.\\n\\Välj OK` för att ta bort den befintliga "
"tjänsten, eller välj `Cancel`för att avbryta uppdateringen."
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
msgstr ""
"Installationen stödjer endast 64-bitars Windows, använd den fristående "
"versionen för att köra installationen på 32-bitars Windows."
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
"Installationen kräver Windows 8.1 eller högre. Använd en fristående äldre "
"version av installationen för en äldre version av Windows."
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr "Stänger av SABnzbd."
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"

View File

@@ -1,12 +1,12 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
"Project-Id-Version: SABnzbd-4.2.1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
@@ -24,10 +24,6 @@ msgstr "显示版本说明"
msgid "Support the project, Donate!"
msgstr "支持该项目,捐助!"
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "请先关闭 \"SABnzbd.exe\""
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
@@ -47,6 +43,10 @@ msgid ""
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "Shutting down SABnzbd"
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "这将从您的系统中卸载 SABnzbd"

View File

@@ -14,7 +14,7 @@ jaraco.collections==5.0.0
jaraco.text==3.8.1 # Newer version introduces irrelevant extra dependencies
jaraco.classes==3.3.0
jaraco.context==4.3.0
more-itertools==10.1.0
more-itertools==10.2.0
zc.lockfile==3.0.post1
python-dateutil==2.8.2
tempora==5.5.0

View File

@@ -150,7 +150,6 @@ LOG_ALL = False
WIN_SERVICE = None # Instance of our Win32 Service Class
BROWSER_URL = None
CERTIFICATE_VALIDATION = True
NO_DOWNLOADING = False # When essentials are missing (SABCTools/par2/unrar)
WEB_DIR = None

View File

@@ -69,11 +69,15 @@ from sabnzbd.misc import (
calc_age,
opts_to_pp,
format_time_left,
is_none,
history_updated,
request_repair,
change_queue_complete_action,
)
from sabnzbd.filesystem import diskspace, get_ext, clip_path, remove_all, list_scripts, purge_log_files
from sabnzbd.encoding import xml_name, utob
from sabnzbd.utils.servertests import test_nntp_server_dict
from sabnzbd.getipaddress import localipv4, publicipv4, ipv6, dnslookup, active_socks5_proxy
from sabnzbd.getipaddress import local_ipv4, public_ipv4, public_ipv6, dnslookup, active_socks5_proxy
from sabnzbd.database import HistoryDB
from sabnzbd.lang import is_rtl
from sabnzbd.nzbstuff import NzbObject
@@ -205,7 +209,7 @@ def _api_queue_rename(value, kwargs):
def _api_queue_change_complete_action(value, kwargs):
"""API: accepts value(=action)"""
sabnzbd.misc.change_queue_complete_action(value)
change_queue_complete_action(value)
return report()
@@ -394,7 +398,7 @@ def _api_change_cat(name, kwargs):
if value and value2:
nzo_id = value
cat = value2
if cat == "None":
if is_none(cat):
cat = None
result = sabnzbd.NzbQueue.change_cat(nzo_id, cat)
return report(keyword="status", data=bool(result > 0))
@@ -409,7 +413,7 @@ def _api_change_script(name, kwargs):
if value and value2:
nzo_id = value
script = value2
if script.lower() == "none":
if is_none(script):
script = None
result = sabnzbd.NzbQueue.change_script(nzo_id, script)
return report(keyword="status", data=bool(result > 0))
@@ -528,7 +532,7 @@ def _api_history(name, kwargs):
history_db.remove_failed(search)
if special in ("all", "completed"):
history_db.remove_completed(search)
sabnzbd.misc.history_updated()
history_updated()
return report()
elif value:
jobs = value.split(",")
@@ -540,7 +544,7 @@ def _api_history(name, kwargs):
if del_files:
remove_all(history_db.get_incomplete_path(job), recursive=True)
history_db.remove_history(job)
sabnzbd.misc.history_updated()
history_updated()
return report()
else:
return report(_MSG_NO_VALUE)
@@ -653,7 +657,7 @@ def _api_warnings(name, kwargs):
LOG_JSON_RE = re.compile(rb"'(apikey|api|username|password)': '(.*?)'", re.I)
LOG_INI_HIDE_RE = re.compile(
rb"(apikey|api|user|username|password|email_pwd|email_account|email_to|email_from|pushover_token|pushover_userkey"
rb"|pushbullet_apikey|prowl_apikey|growl_password|growl_server|IPv[4|6] address)\s?=.*",
rb"|pushbullet_apikey|prowl_apikey|growl_password|growl_server|IPv[4|6] address|Public address IPv[4|6]-only|Local IPv6 address)\s?=.*",
re.I,
)
LOG_HASH_RE = re.compile(rb"([a-zA-Z\d]{25})", re.I)
@@ -723,7 +727,7 @@ def _api_restart(name, kwargs):
def _api_restart_repair(name, kwargs):
logging.info("Queue repair requested by API")
sabnzbd.misc.request_repair()
request_repair()
# Do the shutdown async to still send goodbye to browser
Thread(target=sabnzbd.trigger_restart, kwargs={"timeout": 1}).start()
return report()
@@ -1303,9 +1307,9 @@ def build_status(calculate_performance: bool = False, skip_dashboard: bool = Fal
# Dashboard: Connection information
if not int_conv(skip_dashboard):
info["active_socks5_proxy"] = active_socks5_proxy()
info["localipv4"] = localipv4()
info["publicipv4"] = publicipv4()
info["ipv6"] = ipv6()
info["localipv4"] = local_ipv4()
info["publicipv4"] = public_ipv4()
info["ipv6"] = public_ipv6()
info["dnslookup"] = dnslookup()
info["servers"] = []
@@ -1558,7 +1562,7 @@ def del_job_files(job_paths):
def Tspec(txt):
"""Translate special terms"""
if txt == "None":
if is_none(txt):
return T("None")
elif txt in ("Default", "*"):
return T("Default")

View File

@@ -190,7 +190,7 @@ def validate_script(value: str) -> ValidateResult:
"""Check if value is a valid script"""
if not sabnzbd.__INITIALIZED__ or (value and is_valid_script(value)):
return None, value
elif (value and value == "None") or not value:
elif sabnzbd.misc.is_none(value):
return None, "None"
return T("%s is not a valid script") % value, None
@@ -219,10 +219,10 @@ def validate_permissions(value: str) -> ValidateResult:
def validate_safedir(root: str, value: str, default: str) -> ValidateResult:
"""Allow only when queues are empty and not a network-path"""
if not sabnzbd.__INITIALIZED__ or (sabnzbd.PostProcessor.empty() and sabnzbd.NzbQueue.is_empty()):
# We allow it, but send a warning
if is_network_path(real_path(root, value)):
return T('Network path "%s" is not allowed here') % value, None
else:
return validate_default_if_empty(root, value, default)
sabnzbd.misc.helpful_warning(T('Network path "%s" should not be used here'), value)
return validate_default_if_empty(root, value, default)
else:
return T("Queue not empty, cannot change folder."), None
@@ -277,6 +277,9 @@ def validate_default_if_empty(root: str, value: str, default: str) -> Tuple[None
# Special settings
##############################################################################
# This should be here so it's initialized first when the config is read
helpful_warnings = OptionBool("misc", "helpful_warnings", True)
queue_complete = OptionStr("misc", "queue_complete")
queue_complete_pers = OptionBool("misc", "queue_complete_pers", False)
bandwidth_perc = OptionNumber("misc", "bandwidth_perc", 100, minval=0, maxval=100)
@@ -452,7 +455,7 @@ rss_filenames = OptionBool("misc", "rss_filenames", False)
api_logging = OptionBool("misc", "api_logging", True)
html_login = OptionBool("misc", "html_login", True)
warn_dupl_jobs = OptionBool("misc", "warn_dupl_jobs", False)
helpful_warnings = OptionBool("misc", "helpful_warnings", True)
keep_awake = OptionBool("misc", "keep_awake", True)
tray_icon = OptionBool("misc", "tray_icon", True)
allow_incomplete_nzb = OptionBool("misc", "allow_incomplete_nzb", False)

View File

@@ -556,13 +556,6 @@ class ConfigCat:
except KeyError:
continue
# TODO: Remove after next release
if "alt.bin" in self.newzbin.get_string():
sabnzbd.misc.helpful_warning(
"You have set a newsgroup for category %s. Could you let us know why? https://github.com/sabnzbd/sabnzbd/discussions/2758",
self.__name,
)
def get_dict(self, for_public_api: bool = False) -> Dict[str, Any]:
"""Return a dictionary with all attributes"""
output_dict = {}

View File

@@ -80,32 +80,32 @@ class HistoryDB:
self.execute("PRAGMA user_version;")
try:
version = self.cursor.fetchone()["user_version"]
except IndexError:
except (IndexError, TypeError):
version = 0
# Add any new columns added since last DB version
# Use "and" to stop when database has been reset due to corruption
if version < 1:
_ = (
self.execute("PRAGMA user_version = 1;")
and self.execute("ALTER TABLE history ADD COLUMN series TEXT;")
and self.execute("ALTER TABLE history ADD COLUMN md5sum TEXT;")
self.execute("PRAGMA user_version = 1;", save=True)
and self.execute("ALTER TABLE history ADD COLUMN series TEXT;", save=True)
and self.execute("ALTER TABLE history ADD COLUMN md5sum TEXT;", save=True)
)
if version < 2:
_ = self.execute("PRAGMA user_version = 2;") and self.execute(
"ALTER TABLE history ADD COLUMN password TEXT;"
_ = self.execute("PRAGMA user_version = 2;", save=True) and self.execute(
"ALTER TABLE history ADD COLUMN password TEXT;", save=True
)
if version < 3:
# Transfer data to new column (requires WHERE-hack), original column should be removed later
_ = (
self.execute("PRAGMA user_version = 3;")
and self.execute("ALTER TABLE history ADD COLUMN duplicate_key TEXT;")
and self.execute("UPDATE history SET duplicate_key = series WHERE 1 = 1;")
self.execute("PRAGMA user_version = 3;", save=True)
and self.execute("ALTER TABLE history ADD COLUMN duplicate_key TEXT;", save=True)
and self.execute("UPDATE history SET duplicate_key = series WHERE 1 = 1;", save=True)
)
def execute(self, command: str, args: Sequence = (), save: bool = False) -> bool:
"""Wrapper for executing SQL commands"""
for tries in range(5, 0, -1):
for tries in (4, 3, 2, 1, 0):
try:
self.cursor.execute(command, args)
if save:
@@ -113,7 +113,7 @@ class HistoryDB:
return True
except:
error = str(sys.exc_info()[1])
if tries >= 0 and "is locked" in error:
if tries > 0 and "is locked" in error:
logging.debug("Database locked, wait and retry")
time.sleep(0.5)
continue
@@ -178,9 +178,10 @@ class HistoryDB:
"password" TEXT,
"duplicate_key" TEXT
)
"""
""",
save=True,
)
self.execute("PRAGMA user_version = 3;")
self.execute("PRAGMA user_version = 3;", save=True)
def close(self):
"""Close database connection"""

View File

@@ -223,7 +223,13 @@ class Server:
def request_addrinfo_blocking(self):
"""Blocking attempt to run getaddrinfo() and Happy Eyeballs for specified server"""
logging.debug("Retrieving server address information for %s", self.host)
self.addrinfo = happyeyeballs(self.host, self.port, self.timeout)
# Disable IPV6 if desired
family = socket.AF_UNSPEC
if not cfg.ipv6_servers():
family = socket.AF_INET
self.addrinfo = happyeyeballs(self.host, self.port, self.timeout, family)
if not self.addrinfo:
self.bad_cons += self.threads
# Notify next call to maybe_block_server
@@ -525,10 +531,6 @@ class Downloader(Thread):
sabnzbd.decoder.decode(article, data_view)
def run(self):
# Verify SSL certificate checking
sabnzbd.CERTIFICATE_VALIDATION = sabnzbd.misc.test_cert_checking()
logging.debug("SSL verification test: %s", sabnzbd.CERTIFICATE_VALIDATION)
# Warn if there are servers defined, but none are valid
if config.get_servers() and not self.servers:
logging.warning(T("There are no active servers!"))

View File

@@ -351,6 +351,15 @@ def sanitize_files(folder: Optional[str] = None, filelist: Optional[List[str]] =
return output_filelist
def strip_extensions(name: str, ext_to_remove: Tuple[str, ...] = (".nzb", ".par", ".par2")):
"""Strip extensions from a filename, without sanitizing the filename"""
name_base, ext = os.path.splitext(name)
while ext.lower() in ext_to_remove:
name = name_base
name_base, ext = os.path.splitext(name)
return name
def real_path(loc: str, path: str) -> str:
"""When 'path' is relative, return normalized join of 'loc' and 'path'
When 'path' is absolute, return normalized path
@@ -1199,7 +1208,7 @@ def load_admin(data_id: str, remove=False, silent=False) -> Any:
def wait_for_download_folder():
"""Wait for download folder to become available"""
while not sabnzbd.cfg.download_dir.test_path():
logging.debug("Waiting for incomplete folder")
logging.info("Waiting for incomplete folder")
time.sleep(2.0)

View File

@@ -19,18 +19,20 @@
sabnzbd.getipaddress
"""
import socket
import functools
import urllib.request
import urllib.error
import socks
import logging
import socket
import time
import urllib.error
import urllib.request
from typing import Callable
import socks
import sabnzbd
import sabnzbd.cfg
from sabnzbd.encoding import ubtou
from sabnzbd.happyeyeballs import happyeyeballs, family_type
def timeout(max_timeout: float):
@@ -88,7 +90,7 @@ def dnslookup():
return result
def localipv4():
def local_ipv4():
try:
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s_ipv4:
# Option: use 100.64.1.1 (IANA-Reserved IPv4 Prefix for Shared Address Space)
@@ -101,59 +103,57 @@ def localipv4():
return ipv4
def publicipv4():
"""Because of dual IPv4/IPv6 clients, finding the
public ipv4 needs special attention, meaning forcing
IPv4 connections, and not allowing IPv6 connections
Function uses sabnzbd.cfg.selftest_host(), which must report our public IPv4 address over which we access it
def public_ip(family=socket.AF_UNSPEC):
"""
Reports the client's public IP address (IPv4 or IPv6, if specified by family), as reported by selftest host
"""
start = time.time()
if resolvehostaddress := happyeyeballs(sabnzbd.cfg.selftest_host(), port=443, family=family):
resolvehostip = resolvehostaddress.ipaddress
else:
logging.debug("Error resolving my IP address: resolvehost not found")
return None
if sabnzbd.misc.is_ipv4_addr(resolvehostip):
resolveurl = f"http://{resolvehostip}/?ipv4test"
elif sabnzbd.misc.is_ipv6_addr(resolvehostip):
resolveurl = f"http://[{resolvehostip}]/?ipv6test" # including square brackets
else:
logging.debug("Error resolving public IP address: no valid IPv4 or IPv6 address found")
return None
try:
# look up IPv4 addresses of selftest_host
lookup_result_iv4 = addresslookup4(sabnzbd.cfg.selftest_host())
req = urllib.request.Request(resolveurl)
req.add_header("Host", sabnzbd.cfg.selftest_host())
req.add_header("User-Agent", "SABnzbd/%s" % sabnzbd.__version__)
with urllib.request.urlopen(req, timeout=2) as open_req:
client_ip = ubtou(open_req.read().strip())
# Make sure there is a result, abort otherwise
if not lookup_result_iv4:
raise Exception
except Exception:
# something very bad: no name resolving of selftest_host
logging.debug("Failed to detect public IPv4 address: looking up %s failed", sabnzbd.cfg.selftest_host())
# Make sure it's a valid IPv4 or IPv6 address
if not sabnzbd.misc.is_ipv4_addr(client_ip) and not sabnzbd.misc.is_ipv6_addr(client_ip):
raise ValueError
except urllib.error.URLError:
logging.debug(
"Failed to get public address from %s (%s)",
sabnzbd.cfg.selftest_host(),
family_type(family),
exc_info=True,
)
return None
public_ipv4 = None
# we got one or more IPv4 address(es) for selftest_host, so let's connect and ask for our own public IPv4
for item in lookup_result_iv4:
# get next IPv4 address of sabnzbd.cfg.selftest_host()
selftest_ipv4 = item[4][0]
try:
# put the selftest_host's IPv4 address into the URL
req = urllib.request.Request("http://" + selftest_ipv4 + "/")
# specify the User-Agent, because certain sites refuse connections with "python urllib2" as User-Agent:
req.add_header("User-Agent", "SABnzbd/%s" % sabnzbd.__version__)
# specify the Host, because we only provide the IPv4 address in the URL:
req.add_header("Host", sabnzbd.cfg.selftest_host())
# get the response, timeout 2 seconds, in case the website is not accessible
public_ipv4 = ubtou(urllib.request.urlopen(req, timeout=2).read())
# ... check the response is indeed an IPv4 address:
# if we got anything else than a plain IPv4 address, this will raise an exception
socket.inet_aton(public_ipv4)
# if we get here without exception, we found our public IPv4, and we're done:
break
except (socket.error, urllib.error.URLError):
# the connect OR the inet_aton raised an exception, so:
public_ipv4 = None # reset
# continue the for loop to try next server IPv4 address
pass
if not public_ipv4:
logging.debug("Failed to get public IPv4 address from %s", sabnzbd.cfg.selftest_host())
return None
logging.debug("Public IPv4 address = %s (in %.2f seconds)", public_ipv4, time.time() - start)
return public_ipv4
# If text is updated, make sure to update log-anonymization
logging.debug("Public address %s = %s (in %.2f seconds)", family_type(family), client_ip, time.time() - start)
return client_ip
def ipv6():
def public_ipv4():
return public_ip(family=socket.AF_INET)
def local_ipv6():
"""
return IPv6 address on local LAN interface. So a first check if there is IPv6 connectivity
"""
try:
with socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) as s_ipv6:
# IPv6 prefix for documentation purpose
@@ -162,5 +162,11 @@ def ipv6():
except:
ipv6_address = None
logging.debug("IPv6 address = %s", ipv6_address)
# If text is updated, make sure to update log-anonymization
logging.debug("Local IPv6 address = %s", ipv6_address)
return ipv6_address
def public_ipv6():
if local_ipv6():
return public_ip(family=socket.AF_INET6)

View File

@@ -33,7 +33,6 @@ from dataclasses import dataclass
from typing import Tuple, Union, Optional
from more_itertools import roundrobin
from sabnzbd import cfg as cfg
from sabnzbd.constants import DEF_TIMEOUT
from sabnzbd.decorators import cache_maintainer
@@ -58,6 +57,17 @@ class AddrInfo:
self.ipaddress = self.sockaddr[0]
def family_type(family) -> str:
"""Human-readable socket type"""
if family not in (socket.AF_INET, socket.AF_INET6, socket.AF_UNSPEC):
raise ValueError("Invalid family")
if family == socket.AF_INET:
return "IPv4-only"
elif family == socket.AF_INET6:
return "IPv6-only"
return "IPv4 and IPv6"
# Called by each thread
def do_socket_connect(result_queue: queue.Queue, addrinfo: AddrInfo, timeout: int):
"""Connect to the ip, and put the result into the queue"""
@@ -89,16 +99,12 @@ def do_socket_connect(result_queue: queue.Queue, addrinfo: AddrInfo, timeout: in
@cache_maintainer(clear_time=10)
@functools.lru_cache(maxsize=None)
def happyeyeballs(host: str, port: int, timeout: int = DEF_TIMEOUT) -> Optional[AddrInfo]:
def happyeyeballs(host: str, port: int, timeout: int = DEF_TIMEOUT, family=socket.AF_UNSPEC) -> Optional[AddrInfo]:
"""Return the fastest result of getaddrinfo() based on RFC 6555/8305 (Happy Eyeballs),
including IPv6 addresses if desired. Returns None in case no addresses were returned
by getaddrinfo or if no connection could be made to any of the addresses"""
by getaddrinfo or if no connection could be made to any of the addresses.
If family is specified, only that family is tried"""
try:
# Get address information, by default both IPV4 and IPV6
family = socket.AF_UNSPEC
if not cfg.ipv6_servers():
family = socket.AF_INET
ipv4_addrinfo = []
ipv6_addrinfo = []
last_canonname = ""
@@ -128,9 +134,10 @@ def happyeyeballs(host: str, port: int, timeout: int = DEF_TIMEOUT) -> Optional[
raise
logging.debug(
"Available addresses for %s (port=%d): %d IPv4 and %d IPv6",
"Available addresses for %s (port=%d, %s): %d IPv4 and %d IPv6",
host,
port,
family_type(family),
len(ipv4_addrinfo),
len(ipv6_addrinfo),
)
@@ -159,7 +166,14 @@ def happyeyeballs(host: str, port: int, timeout: int = DEF_TIMEOUT) -> Optional[
except queue.Empty:
raise ConnectionError("No addresses could be resolved")
logging.info("Quickest IP address for %s (port=%d): %s (%s)", host, port, result.ipaddress, result.canonname)
logging.info(
"Quickest IP address for %s (port=%d, %s): %s (%s)",
host,
port,
family_type(family),
result.ipaddress,
result.canonname,
)
return result
except Exception as e:
logging.debug("Failed Happy Eyeballs lookup: %s", e)

View File

@@ -52,6 +52,7 @@ from sabnzbd.misc import (
is_loopback_addr,
helpful_warning,
recursive_html_escape,
is_none,
)
from sabnzbd.happyeyeballs import happyeyeballs
from sabnzbd.filesystem import (
@@ -517,7 +518,6 @@ class Wizard:
cfg.language.set(kwargs.get("lang"))
info = build_header(sabnzbd.WIZARD_DIR)
info["certificate_validation"] = sabnzbd.CERTIFICATE_VALIDATION
# Just in case, add server
servers = config.get_servers()
@@ -682,11 +682,8 @@ class ConfigPage:
conf["configfn"] = clip_path(config.get_filename())
conf["cmdline"] = sabnzbd.CMDLINE
conf["build"] = sabnzbd.__baseline__[:7]
conf["have_7zip"] = bool(sabnzbd.newsunpack.SEVENZIP_COMMAND)
conf["have_par2_turbo"] = sabnzbd.newsunpack.PAR2_TURBO
conf["certificate_validation"] = sabnzbd.CERTIFICATE_VALIDATION
conf["ssl_version"] = ssl.OPENSSL_VERSION
return template_filtered_response(
@@ -800,8 +797,6 @@ class ConfigSwitches:
@secured_expose(check_configlock=True)
def index(self, **kwargs):
conf = build_header(sabnzbd.WEB_DIR_CONFIG)
conf["certificate_validation"] = sabnzbd.CERTIFICATE_VALIDATION
conf["have_nice"] = bool(sabnzbd.newsunpack.NICE_COMMAND)
conf["have_ionice"] = bool(sabnzbd.newsunpack.IONICE_COMMAND)
@@ -957,8 +952,6 @@ class ConfigGeneral:
def index(self, **kwargs):
conf = build_header(sabnzbd.WEB_DIR_CONFIG)
conf["certificate_validation"] = sabnzbd.CERTIFICATE_VALIDATION
web_list = []
for interface_dir in globber_full(sabnzbd.DIR_INTERFACES):
# Ignore the config
@@ -1072,7 +1065,6 @@ class ConfigServer:
conf["servers"] = new
conf["cats"] = list_cats(default=True)
conf["certificate_validation"] = sabnzbd.CERTIFICATE_VALIDATION
return template_filtered_response(
file=os.path.join(sabnzbd.WEB_DIR_CONFIG, "config_server.tmpl"),
@@ -1386,7 +1378,7 @@ class ConfigRss:
raise rssRaiser(self.__root, kwargs)
pp = kwargs.get("pp", "")
if pp.lower() == "none":
if is_none(pp):
pp = ""
script = ConvertSpecials(kwargs.get("script"))
cat = ConvertSpecials(kwargs.get("cat"))

View File

@@ -82,8 +82,8 @@ def internetspeed(test_time_limit: int = TIME_LIMIT) -> float:
socket_speed = {}
try:
addrinfo = happyeyeballs(TEST_HOSTNAME, TEST_PORT, SOCKET_TIMEOUT)
for _ in range(NR_CONNECTIONS):
addrinfo = happyeyeballs(TEST_HOSTNAME, TEST_PORT, SOCKET_TIMEOUT)
sock = socket.socket(addrinfo.family, addrinfo.type)
sock.settimeout(SOCKET_TIMEOUT)
sock.connect(addrinfo.sockaddr)

View File

@@ -83,11 +83,12 @@ RE_IP6 = re.compile(r"inet6\s+(addr:\s*)?([0-9a-f:]+)", re.I)
HAVE_AMPM = bool(time.strftime("%p"))
def helpful_warning(*args, **kwargs):
def helpful_warning(msg, *args, **kwargs):
"""Wrapper to ignore helpful warnings if desired"""
if cfg.helpful_warnings():
return logging.warning(*args, **kwargs)
return logging.info(*args, **kwargs)
msg = "%s\n%s" % (msg, T("To prevent all helpful warnings, disable Special setting 'helpful_warnings'."))
return logging.warning(msg, *args, **kwargs)
return logging.info(msg, *args, **kwargs)
def duplicate_warning(*args, **kwargs):
@@ -167,6 +168,11 @@ def safe_lower(txt: Any) -> str:
return ""
def is_none(inp: Any) -> bool:
"""Check for 'not X' but also if it's maybe the string 'None'"""
return not inp or (isinstance(inp, str) and inp.lower() == "none")
def cmp(x, y):
"""
Replacement for built-in function cmp that was removed in Python 3
@@ -335,7 +341,7 @@ def cat_convert(cat):
If no match found, but the indexer-cat starts with the user-cat, return user-cat
If no match found, return None
"""
if cat and cat.lower() != "none":
if not is_none(cat):
cats = config.get_ordered_categories()
raw_cats = config.get_categories()
for ucat in cats:
@@ -1226,33 +1232,6 @@ def set_https_verification(value):
return prev
def test_cert_checking():
"""Test quality of certificate validation"""
# User disabled the test, assume proper SSL certificates
if not cfg.selftest_host():
return True
# Try a connection to our test-host
try:
ctx = ssl.create_default_context()
base_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = ctx.wrap_socket(base_sock, server_hostname=cfg.selftest_host())
ssl_sock.settimeout(2.0)
ssl_sock.connect((cfg.selftest_host(), 443))
ssl_sock.close()
return True
except (socket.gaierror, socket.timeout):
# Non-SSL related error.
# We now assume that certificates work instead of forcing
# lower quality just because some (temporary) internet problem
logging.info("Could not determine system certificate validation quality due to connection problems")
return True
except:
# Seems something is still wrong
set_https_verification(False)
return False
def request_repair():
"""Request a full repair on next restart"""
path = os.path.join(cfg.admin_dir.get_path(), REPAIR_REQUEST)

View File

@@ -43,6 +43,7 @@ from sabnzbd.misc import (
run_command,
build_and_run_command,
format_time_left,
is_none,
)
from sabnzbd.filesystem import (
make_script_path,
@@ -2143,7 +2144,7 @@ def pre_queue(nzo: NzbObject, pp, cat):
def fix(p):
# If added via API, some items can still be "None" (as a string)
if not p or str(p).lower() == "none":
if is_none(p):
return ""
return str(p)

View File

@@ -308,11 +308,6 @@ class NNTP:
# We want a modern TLS (1.2 or higher), so we disallow older protocol versions (<= TLS 1.1)
self.nw.server.ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2
# Disable any verification if the setup is bad
if not sabnzbd.CERTIFICATE_VALIDATION:
self.nw.server.ssl_context.check_hostname = False
self.nw.server.ssl_context.verify_mode = ssl.CERT_NONE
# Create socket and store fileno of the socket
self.sock: Union[socket.socket, ssl.SSLSocket] = socket.socket(self.addrinfo.family, self.addrinfo.type)
self.fileno: int = self.sock.fileno()

View File

@@ -88,6 +88,7 @@ from sabnzbd.filesystem import (
save_compressed,
backup_nzb,
remove_data,
strip_extensions,
)
from sabnzbd.par2file import FilePar2Info
from sabnzbd.decorators import synchronized
@@ -102,7 +103,7 @@ from sabnzbd.deobfuscate_filenames import is_probably_obfuscated
# In the subject, we expect the filename within double quotes
RE_SUBJECT_FILENAME_QUOTES = re.compile(r'"([^"]*)"')
# Otherwise something that looks like a filename
RE_SUBJECT_BASIC_FILENAME = re.compile(r"([\w\-+()'\s.,]{6,}\.[A-Za-z0-9]{2,4})[^A-Za-z0-9]")
RE_SUBJECT_BASIC_FILENAME = re.compile(r"\b([\w\-+()' .,]+(?:\[[\w\-/+()' .,]*][\w\-+()' .,]*)*\.[A-Za-z0-9]{2,4})\b")
RE_RAR = re.compile(r"(\.rar|\.r\d\d|\.s\d\d|\.t\d\d|\.u\d\d|\.v\d\d)$", re.I)
@@ -1813,8 +1814,10 @@ class NzbObject(TryList):
# Delete all, or just basic files
if self.futuretype:
# Remove temporary file left from URL-fetches
remove_data(self.nzo_id, self.admin_path)
# If duplicate is discarded during URL-fetches, no nzo_id is known yet
if self.nzo_id:
# Remove temporary file left from URL-fetches
remove_data(self.nzo_id, self.admin_path)
elif delete_all_data:
remove_all(self.download_path, recursive=True)
else:
@@ -2108,14 +2111,8 @@ def nzf_cmp_name(nzf1: NzbFile, nzf2: NzbFile):
def create_work_name(name: str) -> str:
"""Remove ".nzb" and ".par(2)" and sanitize, skip URL's"""
if name.find("://") < 0:
# In case it was one of these, there might be more
# Need to remove any invalid characters before starting
name_base, ext = os.path.splitext(sanitize_foldername(name))
while ext.lower() in (".nzb", ".par", ".par2"):
name = name_base
name_base, ext = os.path.splitext(name)
# And make sure we remove invalid characters again
return sanitize_foldername(name)
# Invalid charters need to be removed before and after (see unit-tests)
return sanitize_foldername(strip_extensions(sanitize_foldername(name)))
else:
return name.strip()
@@ -2125,6 +2122,10 @@ def scan_password(name: str) -> Tuple[str, Optional[str]]:
if "http://" in name or "https://" in name:
return name, None
# Strip any unwanted usenet-related extensions
name = strip_extensions(name)
# Identify any braces
braces = name[1:].find("{{")
if braces < 0:
braces = len(name)

View File

@@ -46,6 +46,7 @@ from sabnzbd.misc import (
history_updated,
change_queue_complete_action,
run_script,
is_none,
)
from sabnzbd.filesystem import (
real_path,
@@ -1098,7 +1099,7 @@ def handle_empty_queue():
)
# Perform end-of-queue script
if cfg.end_queue_script():
if not is_none(cfg.end_queue_script()):
logging.info("Queue has finished, launching script: %s ", cfg.end_queue_script())
run_script(cfg.end_queue_script())

View File

@@ -252,9 +252,6 @@ SKIN_TEXT = {
"confirmWithoutSavingPrompt": TT("Changes have not been saved, and will be lost."),
"explain-sessionExpire": TT("When your IP address changes or SABnzbd is restarted the session will expire."),
"opt-enable_7zip": TT("Enable 7zip"),
"explain-nosslcontext": TT(
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will be encrypted, however, validating a server's identity using its certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA certificates are required."
),
"explain-getpar2turbo": TT("Speed up repairs by installing par2cmdline-turbo, it is available for many platforms."),
"version": TT("Version"),
"uptime": TT("Uptime"),
@@ -268,8 +265,8 @@ SKIN_TEXT = {
"explain-host": TT("Host SABnzbd should listen on."),
"opt-port": TT("SABnzbd Port"),
"explain-port": TT("Port SABnzbd should listen on."),
"opt-web_dir": TT("Web Interface"),
"explain-web_dir": TT("Choose a skin."),
"opt-web_dir": TT("Web Interface Theme"),
"explain-web_dir": TT("Choose a theme."),
"opt-web_username": TT("SABnzbd Username"),
"explain-web_username": TT("Optional authentication username."),
"opt-web_password": TT("SABnzbd Password"),
@@ -473,7 +470,6 @@ SKIN_TEXT = {
"Posts will be paused untill they are at least this age. Setting job priority to Force will skip the delay."
),
"opt-check_new_rel": TT("Check for New Release"),
"explain-check_new_rel": TT("Weekly check for new SABnzbd release."),
"also-test": TT("Also test releases"), #: Pick list for weekly test for new releases
"opt-replace_spaces": TT("Replace Spaces in Foldername"),
"explain-replace_spaces": TT("Replace spaces with underscores in folder names."),
@@ -835,6 +831,9 @@ SKIN_TEXT = {
"Glitter-top": TT("Top"),
"Glitter-bottom": TT("Bottom"),
"Glitter-retryJob": TT("Retry"),
"Glitter-retryNoChecks": TT(
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be completed' are disabled."
),
"Glitter-more": TT("More"),
"Glitter-scriptLog": TT("View Script Log"),
"Glitter-clearHistory": TT("Purge History"),

View File

@@ -678,7 +678,7 @@ def guess_what(name: str) -> MatchesDict:
or (
name.lower().startswith(("http://", "https://"))
and name.lower().endswith(".nzb")
and guess.get("container" == "nzb")
and guess.get("container") == "nzb"
) # URL to an nzb file, can happen when pre-queue script rejects a job
):
guess["type"] = "unknown"

View File

@@ -13,7 +13,7 @@ from cryptography.x509.oid import NameOID
import datetime
import socket
from sabnzbd.getipaddress import localipv4
from sabnzbd.getipaddress import local_ipv4
def generate_key(key_size=2048, output_file="key.pem"):
@@ -64,7 +64,7 @@ def generate_local_cert(private_key, days_valid=3560, output_file="cert.cert", L
san_list.append(x509.IPAddress(ipaddress.IPv6Address("::1")))
# append local v4 ip
mylocalipv4 = localipv4()
mylocalipv4 = local_ipv4()
if mylocalipv4:
san_list.append(x509.IPAddress(ipaddress.IPv4Address(str(mylocalipv4))))
except:

View File

@@ -6,5 +6,5 @@
# You MUST use double quotes (so " and not ')
# Do not forget to update the appdata file for every major release!
__version__ = "4.2.0"
__version__ = "4.2.2RC1"
__baseline__ = "unknown"

View File

@@ -111,10 +111,6 @@ class TestValidators:
assert cfg.validate_safedir("", "", "def") == (None, "def")
assert cfg.validate_safedir("", "C:\\", "") == (None, "C:\\")
@pytest.mark.skipif(not sys.platform.startswith("win"), reason="Windows tests")
def test_validate_safedir_win(self):
assert "Network path" in cfg.validate_safedir("", "\\\\NAS\\foo", "")[0]
def test_validate_host(self):
# valid input
assert cfg.validate_host("127.0.0.1") == (None, "127.0.0.1")

View File

@@ -1194,16 +1194,25 @@ class TestUnwantedExtensions:
assert filesystem.has_unwanted_extension(filename) is False
class TestDirectoryWriting:
# very basic test of directory_is_writable()
# let's test on the tempdir provided by the OS:
class TestOtherFileSystemFunctions:
def test_directory_is_writable(self):
# verify directory is writable at all
# very basic test of directory_is_writable()
# let's test on the tempdir provided by the OS:
assert filesystem.directory_is_writable(tempfile.gettempdir())
class FilesystemCapabilities:
def test_filesystem_capabilities(self):
# test the filesystem is capable of long and unicode filenames
# any modern filesystem (ext3, ext4, ntfs, modern FAT) should succeed
assert filesystem.check_filesystem_capabilities(tempfile.gettempdir())
@pytest.mark.parametrize(
"name, ext_to_remove, output",
[
("Test.nzb", (".nzb",), "Test"),
("Test.nzb.nzb.nzb.nzb.nzb", (".nzb",), "Test"),
("Test.not", (".nzb",), "Test.not"),
("No.par2.Test.par2.nzb", (".nzb", ".par2"), "No.par2.Test"),
],
)
def test_strip_extensions(self, name, ext_to_remove, output):
assert filesystem.strip_extensions(name, ext_to_remove) == output

View File

@@ -31,16 +31,16 @@ class TestGetIpAddress:
for item in address:
assert isinstance(item[0], type(socket.AF_INET))
def test_publicipv4(self):
public_ipv4 = publicipv4()
assert is_ipv4_addr(public_ipv4)
def test_public_ipv4(self):
publicipv4 = public_ipv4()
assert is_ipv4_addr(publicipv4)
def test_localipv4(self):
local_ipv4 = localipv4()
assert is_ipv4_addr(local_ipv4)
def test_local_ipv4(self):
localipv4 = local_ipv4()
assert is_ipv4_addr(localipv4)
def test_ipv6(self):
test_ipv6 = ipv6()
def test_public_ipv6(self):
test_ipv6 = public_ipv6()
# Not all systems have IPv6
if test_ipv6:
assert is_ipv6_addr(test_ipv6)

View File

@@ -45,11 +45,23 @@ class TestHappyEyeballs:
assert "." in addrinfo.ipaddress or ":" in addrinfo.ipaddress
assert "google" in addrinfo.canonname
def test_google_http_want_ipv4(self):
addrinfo = happyeyeballs("www.google.com", port=80, family=socket.AF_INET)
assert "." in addrinfo.ipaddress and not ":" in addrinfo.ipaddress
assert "google" in addrinfo.canonname
def test_google_http_want_ipv6(self):
# TODO: timeout needed for IPv4-only CI environment?
addrinfo = happyeyeballs("www.google.com", port=80, timeout=2, family=socket.AF_INET6)
if addrinfo:
assert not "." in addrinfo.ipaddress and ":" in addrinfo.ipaddress
assert "google" in addrinfo.canonname
def test_not_resolvable(self):
assert happyeyeballs("not.resolvable.invalid", port=80) is None
def test_ipv6_only(self):
if addrinfo := happyeyeballs("ipv6.google.com", port=443):
if addrinfo := happyeyeballs("ipv6.google.com", port=443, timeout=2):
assert ":" in addrinfo.ipaddress
assert "google" in addrinfo.canonname

View File

@@ -62,6 +62,18 @@ class TestMisc:
assert "all caps" == misc.safe_lower("ALL CAPS")
assert "" == misc.safe_lower(None)
def test_is_none(self):
assert misc.is_none(None) is True
assert misc.is_none(0) is True
assert misc.is_none(False) is True
assert misc.is_none("None") is True
assert misc.is_none("nOne") is True
assert misc.is_none(True) is False
assert misc.is_none(1) is False
assert misc.is_none(True) is False
assert misc.is_none("Not None") is False
def test_cmp(self):
assert misc.cmp(1, 2) < 0
assert misc.cmp(2, 1) > 0

View File

@@ -123,17 +123,21 @@ class TestNZBStuffHelpers:
("multiple_pw{{first-pw}}_{{second-pw}}", "multiple_pw", "first-pw}}_{{second-pw"), # Greed is Good
("デビアン", "デビアン", None), # Unicode
("Gentoo_Hobby_Edition {{secret}}", "Gentoo_Hobby_Edition", "secret"), # Space between name and password
("Test {{secret}}.nzb", "Test", "secret"),
("Mandrake{{top{{secret}}", "Mandrake", "top{{secret"), # Double opening {{
("Красная}}{{Шляпа}}", "Красная}}", "Шляпа"), # Double closing }}
("{{Jobname{{PassWord}}", "{{Jobname", "PassWord"), # {{ at start
("Hello/kITTY", "Hello", "kITTY"), # Notation with slash
("Hello/kITTY.nzb", "Hello", "kITTY"), # Notation with slash and extension
("/Jobname", "/Jobname", None), # Slash at start
("Jobname/Top{{Secret}}", "Jobname", "Top{{Secret}}"), # Slash with braces
("Jobname / Top{{Secret}}", "Jobname", "Top{{Secret}}"), # Slash with braces and extra spaces
("Jobname / Top{{Secret}}.nzb", "Jobname", "Top{{Secret}}"),
("לינוקס/معلومات سرية", "לינוקס", "معلومات سرية"), # LTR with slash
("לינוקס{{معلومات سرية}}", "לינוקס", "معلومات سرية"), # LTR with brackets
("thư điện tử password=mật_khẩu", "thư điện tử", "mật_khẩu"), # Password= notation
("password=PartOfTheJobname", "password=PartOfTheJobname", None), # Password= at the start
("Job password=Test.par2", "Job", "Test"), # Password= including extension
("Job}}Name{{FTW", "Job}}Name{{FTW", None), # Both {{ and }} present but incorrect order (no password)
("./Text", "./Text", None), # Name would end up empty after the function strips the dot
],
@@ -141,22 +145,23 @@ class TestNZBStuffHelpers:
def test_scan_password(self, argument, name, password):
assert nzbstuff.scan_password(argument) == (name, password)
def test_create_work_name(self):
@pytest.mark.parametrize(
"file_name, clean_file_name",
[
("my_awesome_nzb_file.pAr2.nZb", "my_awesome_nzb_file"),
("my_awesome_nzb_file.....pAr2.nZb", "my_awesome_nzb_file"),
("my_awesome_nzb_file....par2..", "my_awesome_nzb_file"),
(" my_awesome_nzb_file .pAr.nZb", "my_awesome_nzb_file"),
("with.extension.and.period.par2.", "with.extension.and.period"),
("nothing.in.here", "nothing.in.here"),
(" just.space ", "just.space"),
("http://test.par2 ", "http://test.par2"),
],
)
def test_create_work_name(self, file_name, clean_file_name):
# Only test stuff specific for create_work_name
# The sanitizing is already tested in tests for sanitize_foldername
file_names = {
"my_awesome_nzb_file.pAr2.nZb": "my_awesome_nzb_file",
"my_awesome_nzb_file.....pAr2.nZb": "my_awesome_nzb_file",
"my_awesome_nzb_file....par2..": "my_awesome_nzb_file",
" my_awesome_nzb_file .pAr.nZb": "my_awesome_nzb_file",
"with.extension.and.period.par2.": "with.extension.and.period",
"nothing.in.here": "nothing.in.here",
" just.space ": "just.space",
"http://test.par2 ": "http://test.par2",
}
for file_name, clean_file_name in file_names.items():
assert nzbstuff.create_work_name(file_name) == clean_file_name
assert nzbstuff.create_work_name(file_name) == clean_file_name
@pytest.mark.parametrize(
"subject, filename",
@@ -195,22 +200,20 @@ class TestNZBStuffHelpers:
("Bla [Now it's done.exe]", "Now it's done.exe"),
# If specified between [], the extension should be a valid one
("Bla [Now it's done.123nonsense]", "Bla [Now it's done.123nonsense]"),
# In anyone can improve the one below, that would be great!
('[PRiVATE]-[WtFnZb]-[00000.clpi]-[1/46] - "" yEnc 788 (1/1)', "00000.clpi"),
(
'[PRiVATE]-[WtFnZb]-[Video_(2001)_AC5.1_-RELEASE_[TAoE].mkv]-[1/23] - "" yEnc 1234567890 (1/23456)',
'[PRiVATE]-[WtFnZb]-[Video_(2001)_AC5.1_-RELEASE_[TAoE].mkv]-[1/23] - "" yEnc 1234567890 (1/23456)',
"Video_(2001)_AC5.1_-RELEASE_[TAoE].mkv",
),
(
"[PRiVATE]-[WtFnZb]-[219]-[1/series.name.s01e01.1080p.web.h264-group.mkv] - "
" yEnc (1/[PRiVATE] \\c2b510b594\\::686ea969999193.155368eba4965e56a8cd263382e012.f2712fdc::/97bd201cf931/) 1 (1/0)",
"series.name.s01e01.1080p.web.h264-group.mkv",
),
# This is not correct, but better than nothing
# In anyone can improve, that would be great!
(
"[PRiVATE]-[WtFnZb]-[/More.Bla.S02E01.1080p.WEB.h264-EDITH[eztv.re].mkv-WtF[nZb]/"
"More.Bla.S02E01.1080p.WEB.h264-EDITH.mkv]-[1/2] - &quot;&quot; yEnc 2990558544 (1/4173)",
"More.Bla.S02E01.1080p.WEB.h264",
'More.Bla.S02E01.1080p.WEB.h264-EDITH.mkv]-[1/2] - "" yEnc 2990558544 (1/4173)',
"More.Bla.S02E01.1080p.WEB.h264-EDITH[eztv.re].mkv",
),
],
)