From 918539f5e6966c42691d7aaf7f6a057d9dc27b5b Mon Sep 17 00:00:00 2001 From: Gianluca Pernigotto Date: Mon, 22 Jan 2024 11:32:13 +0100 Subject: [PATCH 1/6] Fix security issues and bugs --- CHANGELOG | 15 + debian/changelog | 16 + ...ideo Encoding AV1.prst => AV1-libaom.prst} | 2 +- videomass/share/presets/AV1-libsvtav1.prst | 10 + .../share/presets/Audio_Conversions.prst | 2 +- .../presets/Coding to DVD by GMJCZP.prst | 2 +- .../share/presets/Create animated GIFs.prst | 2 +- .../share/presets/Davinci Resolve Linux.prst | 10 + .../presets/Embed_Subtitles_to_Video.prst | 2 +- .../presets/Extract_audio_from_Videos.prst | 2 +- .../presets/Merging_audio_and_video.prst | 2 +- videomass/share/presets/My_Profiles.prst | 2 +- .../share/presets/NVENC_h265_presets.prst | 458 ++++++++++++++++++ videomass/share/presets/Utilities.prst | 2 +- ...o Encoding VP9-WebM.prst => VP9-WebM.prst} | 0 videomass/share/presets/Video effects.prst | 2 +- videomass/share/presets/Video-Repair.prst | 2 +- videomass/share/presets/Video_Stabilizer.prst | 2 +- videomass/share/presets/Video_Streaming.prst | 2 +- videomass/share/presets/version/version.txt | 2 +- videomass/vdms_dialogs/audiodialogs.py | 10 +- videomass/vdms_io/presets_manager_prop.py | 48 +- videomass/vdms_panels/presets_manager.py | 58 ++- videomass/vdms_sys/msg_info.py | 4 +- videomass/vdms_utils/utils.py | 17 +- 25 files changed, 604 insertions(+), 70 deletions(-) rename videomass/share/presets/{Video Encoding AV1.prst => AV1-libaom.prst} (99%) create mode 100644 videomass/share/presets/AV1-libsvtav1.prst create mode 100644 videomass/share/presets/Davinci Resolve Linux.prst create mode 100644 videomass/share/presets/NVENC_h265_presets.prst rename videomass/share/presets/{Video Encoding VP9-WebM.prst => VP9-WebM.prst} (100%) diff --git a/CHANGELOG b/CHANGELOG index 336f1a5f2..a1f979ad3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,6 +6,21 @@ License: GPL3 Change Log: ++------------------------------------+ +Mon, 22 Jan 2024 V.5.0.4 + + * [Preset Manager] Fixed a serious issue during the automatic update task to + the new version of local presets. This behavior could have been harmful + if a user logged in with administrator privileges ran the program with the + task described above, especially when the program is installed on the + system. + * [Preset Manager] Fixed accidental overwriting of target presets when + upgrading with new versions. + * [Preset Manager] Added convenient graphical handling to the + `json.decoder.JSONDecodeError` exception in the event of malformed or + incorrectly encoded json code during the preset update task. + * [A/V Conversions) Improved audio dialog settings (Audio Properties). + * Updated Videomass presets to v0.19 . +------------------------------------+ Mon, 15 Jan 2024 V.5.0.3 diff --git a/debian/changelog b/debian/changelog index fdb78d08a..8fc43490a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +videomass (5.0.4-1) UNRELEASED; urgency=high + + * [Preset Manager] Fixed a serious issue during the automatic update task to + the new version of local presets. This behavior could have been harmful + if a user logged in with administrator privileges ran the program with the + task described above, especially when the program is installed on the + system. + * [Preset Manager] Fixed accidental overwriting of target presets when + upgrading with new versions. + * [Preset Manager] Added convenient graphical handling to the json.DecodeError + exception in the event of malformed or incorrectly encoded json code during + the preset update task. + * [A/V Conversions) Improved audio dialog settings (Audio Properties). + + -- Gianluca Pernigotto Mon, 22 Jan 2024 01:00:00 +0200 + videomass (5.0.3-1) UNRELEASED; urgency=medium * [YouTube Downloader] New feature: subtitles editor, see #240 diff --git a/videomass/share/presets/Video Encoding AV1.prst b/videomass/share/presets/AV1-libaom.prst similarity index 99% rename from videomass/share/presets/Video Encoding AV1.prst rename to videomass/share/presets/AV1-libaom.prst index 8dee1ff87..0954635f0 100644 --- a/videomass/share/presets/Video Encoding AV1.prst +++ b/videomass/share/presets/AV1-libaom.prst @@ -55,4 +55,4 @@ "Supported_list": "VOB", "Output_extension": "mkv" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/AV1-libsvtav1.prst b/videomass/share/presets/AV1-libsvtav1.prst new file mode 100644 index 000000000..12f3b43ad --- /dev/null +++ b/videomass/share/presets/AV1-libsvtav1.prst @@ -0,0 +1,10 @@ +[ + { + "Name": "SVT-AV1 (CRF constant rate factor)", + "Description": "Ensures that every frame gets the number of bits it deserves to achieve a certain (perceptual) quality level.", + "First_pass": "-c:v libsvtav1 -crf 35 -map 0:v? -map_chapters 0 -map 0:s? -map 0:a? -map_metadata 0", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mp4" + } +] diff --git a/videomass/share/presets/Audio_Conversions.prst b/videomass/share/presets/Audio_Conversions.prst index 9501be4c7..ba81b88bb 100644 --- a/videomass/share/presets/Audio_Conversions.prst +++ b/videomass/share/presets/Audio_Conversions.prst @@ -79,4 +79,4 @@ "Supported_list": "wma VMA", "Output_extension": "wav" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/Coding to DVD by GMJCZP.prst b/videomass/share/presets/Coding to DVD by GMJCZP.prst index 3b39990e5..17e46799b 100644 --- a/videomass/share/presets/Coding to DVD by GMJCZP.prst +++ b/videomass/share/presets/Coding to DVD by GMJCZP.prst @@ -31,4 +31,4 @@ "Supported_list": "", "Output_extension": "m2v" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/Create animated GIFs.prst b/videomass/share/presets/Create animated GIFs.prst index 50ace6ec6..7f742bb9a 100644 --- a/videomass/share/presets/Create animated GIFs.prst +++ b/videomass/share/presets/Create animated GIFs.prst @@ -31,4 +31,4 @@ "Supported_list": "", "Output_extension": "gif" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/Davinci Resolve Linux.prst b/videomass/share/presets/Davinci Resolve Linux.prst new file mode 100644 index 000000000..78c6742b2 --- /dev/null +++ b/videomass/share/presets/Davinci Resolve Linux.prst @@ -0,0 +1,10 @@ +[ + { + "Name": "Davinci resolve convert", + "Description": "Davinci resolve convert", + "First_pass": "-vcodec mjpeg -q:v 2 -acodec pcm_s16be -q:a 0 -f mov", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mov" + } +] diff --git a/videomass/share/presets/Embed_Subtitles_to_Video.prst b/videomass/share/presets/Embed_Subtitles_to_Video.prst index 9b5b4fce0..45dc519d4 100644 --- a/videomass/share/presets/Embed_Subtitles_to_Video.prst +++ b/videomass/share/presets/Embed_Subtitles_to_Video.prst @@ -15,4 +15,4 @@ "Supported_list": "", "Output_extension": "mkv" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/Extract_audio_from_Videos.prst b/videomass/share/presets/Extract_audio_from_Videos.prst index 247f43113..34b2ea252 100644 --- a/videomass/share/presets/Extract_audio_from_Videos.prst +++ b/videomass/share/presets/Extract_audio_from_Videos.prst @@ -71,4 +71,4 @@ "Supported_list": "", "Output_extension": "m4a" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/Merging_audio_and_video.prst b/videomass/share/presets/Merging_audio_and_video.prst index 7c49a2da8..d651c75b1 100644 --- a/videomass/share/presets/Merging_audio_and_video.prst +++ b/videomass/share/presets/Merging_audio_and_video.prst @@ -15,4 +15,4 @@ "Supported_list": "", "Output_extension": "mkv" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/My_Profiles.prst b/videomass/share/presets/My_Profiles.prst index 0637a088a..fe51488c7 100644 --- a/videomass/share/presets/My_Profiles.prst +++ b/videomass/share/presets/My_Profiles.prst @@ -1 +1 @@ -[] \ No newline at end of file +[] diff --git a/videomass/share/presets/NVENC_h265_presets.prst b/videomass/share/presets/NVENC_h265_presets.prst new file mode 100644 index 000000000..f44afe868 --- /dev/null +++ b/videomass/share/presets/NVENC_h265_presets.prst @@ -0,0 +1,458 @@ +[ + { + "Name": "01-h265_nvenc 2600k audio aac", + "Description": "h265_nvenc 2600k audio aac", + "First_pass": "-map 0 -vcodec hevc_nvenc -b:v 2600k -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "02-h265_nvenc cq23 audio aac", + "Description": "h265_nvenc cq23 audio aac", + "First_pass": "-map 0 -vcodec hevc_nvenc -cq 23 -preset medium -c:a aac -c:s copy ", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "03-h265_nvenc 2600k audio aac norm", + "Description": "h265_nvenc 2600k audio aac normalized", + "First_pass": "-map 0 -vcodec hevc_nvenc -b:v 2600k -c:a aac -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "04-h265_nvenc cq23 audio aac norm", + "Description": "h265_nvenc cq23 audio aac normalized", + "First_pass": "-map 0 -vcodec hevc_nvenc -cq 23 -preset medium -c:a aac -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy ", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "07-h265_nvenc 2600k audio mp3 stereo", + "Description": "h265_nvenc 2600k audio mp3_128kb 2channel", + "First_pass": "-map 0 -vcodec hevc_nvenc -b:v 2600k -c:a libmp3lame -b:a 128k -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "08-h265_nvenc cq23 audio mp3 stereo", + "Description": "h265_nvenc 2600k audio mp3_128kb 2channel", + "First_pass": "-map 0 -vcodec hevc_nvenc -cq 23 -preset medium -c:a libmp3lame -b:a 128k -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "09-h265_nvenc 2600k audio mp3 stereo norm", + "Description": "h265_nvenc 2600k audio mp3_128kb 2channel normalized", + "First_pass": "-map 0 -vcodec hevc_nvenc -b:v 2600k -c:a libmp3lame -b:a 128k -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "10-h265_nvenc cq23 audio mp3 stereo norm", + "Description": "h265_nvenc cq23 audio mp3_128kb 2channel normalized", + "First_pass": "-map 0 -vcodec hevc_nvenc -cq 23 -preset medium -c:a libmp3lame -b:a 128k -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "13-h265_nvenc 2600k audio copy", + "Description": "h265_nvenc 2600k audio copy", + "First_pass": "-map 0 -vcodec hevc_nvenc -b:v 2600k -c:a copy -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "14-h265_nvenc cq23 audio copy", + "Description": "h265_nvenc 2600k audio copy", + "First_pass": "-map 0 -vcodec hevc_nvenc -cq 23 -preset medium -c:a copy -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "15-h265_nvenc 2600k audio PCM", + "Description": "h265_nvenc 2600k audio PCM", + "First_pass": "-map 0 -vcodec hevc_nvenc -b:v 2600k -c:a pcm_s16le -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "16-h265_nvenc 2600k audio vorbis", + "Description": "h265_nvenc 2600k audio vorbis", + "First_pass": "-map 0 -vcodec hevc_nvenc -b:v 2600k -c:a libvorbis -aq 6 -ar 44100 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "17-h265_nvenc 2600k audio PCM norm", + "Description": "h265_nvenc 2600k audio PCM normalized", + "First_pass": "-map 0 -vcodec hevc_nvenc -b:v 2600k -c:a pcm_s16le -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "18-h265_nvenc 2600k audio vorbis norm", + "Description": "h265_nvenc 2600k audio vorbis normalized", + "First_pass": "-map 0 -vcodec hevc_nvenc -b:v 2600k -c:a libvorbis -aq 6 -ar 44100 -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "0-h265_nvenc 300k MED aac", + "Description": "h265_nvenc 300k MED 720p audio aac - IPAD", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 1000k -preset medium -vf \"scale=min'(720,iw)':-2\":flags=lanczos -c:a aac -b:a 128k -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mp4" + }, + { + "Name": "0-h265_nvenc 300k MED mp3 NORM", + "Description": "h265_nvenc 300k MED 720p audio mp3 NORM - IPAD", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 300k -preset medium -vf \"scale=min'(720,iw)':-2\":flags=lanczos -c:a libmp3lame -b:a 128k -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-DEINTERLACE h265_2000k", + "Description": "00-h265_nvenc 2000k DEINTERLACE audio copy", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -filter:v bwdif=mode=send_field:parity=auto:deint=all -b:v 2000k -preset fast -c:a copy -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-DEINTERLACE h265_9000k", + "Description": "00-h265_nvenc 9000k DEINTERLACE audio copy", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -filter:v bwdif=mode=send_field:parity=auto:deint=all -b:v 9000k -preset fast -c:a copy -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mov" + }, + { + "Name": "00-DEINTERLACE h265_cq15", + "Description": "00-h265_nvenc cq15 DEINTERLACE audio copy", + "First_pass": "-vcodec hevc_nvenc -filter:v bwdif=mode=send_field:parity=auto:deint=all -cq 15 -preset medium -c:a copy -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h264 2300k FAST Audio aac", + "Description": "h265_nvenc 2300k FAST preset audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec libx264 -b:v 2300k -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265 2300k FAST Audio aac", + "Description": "h265_nvenc 2300k FAST preset audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec libx265 -b:v 2300k -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265 crf25 FAST Audio aac", + "Description": "h265_nvenc 2300k FAST preset audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec libx265 -crf 25 -pix_fmt yuv420p -movflags faststart -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2000k FAST 128k aac", + "Description": "h265_nvenc 2000k FAST preset audio aac", + "First_pass": "-vcodec hevc_nvenc -b:v 2000k -preset fast -c:a aac -b:a 128k -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2000k FAST 384k aac", + "Description": "h265_nvenc 2000k FAST preset audio aac", + "First_pass": "-vcodec hevc_nvenc -b:v 2000k -preset fast -c:a aac -b:a 384k -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2000k FAST Audio aac", + "Description": "h265_nvenc 2000k FAST preset audio aac", + "First_pass": "-vcodec hevc_nvenc -b:v 2000k -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2000k FAST MP4 Audio aac", + "Description": "h265_nvenc 2000k FAST preset audio aac", + "First_pass": "-map 0:0 -vcodec hevc_nvenc -b:v 2000k -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mp4" + }, + { + "Name": "00-h265_nvenc 2000k FAST SELECT SUBS", + "Description": "h265_nvenc 2000k FAST SELECT SUBS audio aac (6=sub 7)", + "First_pass": "-dn -c:v hevc_nvenc -b:v 2300k -preset fast -map 0:v:? -map_chapters 0 -map 0:s:6 -map 0:s:20 -c:s copy -c:a aac -map 0:a:? -map_metadata 0", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2000k FAST SELECT v:a:s", + "Description": "h265_nvenc 2000k FAST SELECT video/audio/subs audio aac", + "First_pass": "-vcodec hevc_nvenc -b:v 2000k -preset fast -c:a aac -map 0:v:0 -map 0:a:0 -c:s copy -map 0:s:0", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2300k FAST Audio aac", + "Description": "h265_nvenc 2300k FAST preset audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 2300k -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2300k SAR1.33 FAST Audio aac", + "Description": "h265_nvenc 2300k SAR1.33 FAST preset audio aac ", + "First_pass": "-nostdin -dn -map 0 -vf \"scale=iw*sar:ih,setsar=1.33\" -vcodec hevc_nvenc -b:v 2300k -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2600k FAST Audio aac", + "Description": "h265_nvenc 2600k FAST preset audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 2600k -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2600k FAST CROP BT audio aac", + "Description": "h265_nvenc 2600k FAST CROP 20pixels bottom+top preset audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 2600k -filter:v \"crop=in_w:in_h-40\" -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2600k FAST CROP T audio aac", + "Description": "h265_nvenc 2600k FAST CROP 20pixels top preset audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 2600k -filter:v \"crop=in_w:in_h-20:0:out_h\" -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2600k FAST MAX audio aac", + "Description": "h265_nvenc 2600k FAST MAX width 1920 preset audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 2600k -preset fast -vf \"scale=min'(1920,iw)':-2\":flags=lanczos -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2600k FAST SRT audio aac", + "Description": "h265_nvenc 2600k FAST preset copy sub into srt audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 2600k -preset fast -c:a aac -c:s srt", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2600k FAST SUB Audio aac", + "Description": "h265_nvenc 2600k FAST SELECT SUB preset audio aac", + "First_pass": "-dn -c:v hevc_nvenc -b:v 2600k -preset fast -map 0:v? -map_chapters 0 -map 0:s:6 -map 0:s:20 -c:s copy -c:a aac -map 0:a:? -map_metadata 0", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "00-h265_nvenc 2600k FAST mp4 audio aac", + "Description": "h265_nvenc 2600k FAST preset audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 2600k -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mp4" + }, + { + "Name": "00-h265_nvenc 2600k FAST yuv420p audio aac", + "Description": "h265_nvenc 2600k FAST preset audio aac", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 2600k -preset fast -pix_fmt yuv420p -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "01-h265_nvenc 2600k FAST MAP audio aac", + "Description": "h265_nvenc 2600k MAP FAST streams audio aac ", + "First_pass": "-dn -c:v hevc_nvenc -b:v 2600k -preset fast -map 0:v? -map_chapters 0 -c:s copy -map 0:s? -c:a aac -map 0:a:? -map_metadata 0", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "01-h265_nvenc 2600k FAST audio NO", + "Description": "h265_nvenc 2600k FAST preset audio NO ", + "First_pass": "-nostdin -vcodec hevc_nvenc -b:v 2600k -preset fast -an -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "01-h265_nvenc 2600k FAST audio aac norm", + "Description": "h265_nvenc 2600k FAST audio aac normalized", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -b:v 2600k -preset fast -c:a aac -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "01-h265_nvenc 2600k FAST audio aac stream1", + "Description": "h265_nvenc 2600k FAST preset audio aac stream1", + "First_pass": "-nostdin -vcodec hevc_nvenc -b:v 2600k -preset fast -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "01-h265_nvenc 2600k MED audio aac", + "Description": "h265_nvenc 2600k MEDIUM preset audio aac ", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -b:v 2600k -preset medium -c:a aac -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "02-h265_nvenc cq23 FAST audio aac", + "Description": "h265_nvenc cq23 FAST preset audio aac", + "First_pass": "-map 0 -vcodec hevc_nvenc -cq 23 -preset fast -c:a aac -c:s copy ", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "02-h265_nvenc cq23 MED audio aac", + "Description": "h265_nvenc cq23 MEDIUM preset audio aac", + "First_pass": "-map 0 -vcodec hevc_nvenc -cq 23 -preset medium -c:a aac -c:s copy ", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "02-h265_nvenc cq23 MED audio aac norm", + "Description": "h265_nvenc cq23 MEDIUM preset audio aac normalized", + "First_pass": "-map 0 -vcodec hevc_nvenc -cq 23 -preset medium -c:a aac -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy ", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "07-h265_nvenc 2600k audio mp3 stereo", + "Description": "h265_nvenc 2600k audio mp3_128kb 2channel", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -b:v 2600k -c:a libmp3lame -b:a 128k -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "08-h265_nvenc cq23 audio mp3 stereo", + "Description": "h265_nvenc 2600k audio mp3_128kb 2channel", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -cq 23 -preset medium -c:a libmp3lame -b:a 128k -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "09-h265_nvenc 2600k audio mp3 stereo norm", + "Description": "h265_nvenc 2600k audio mp3_128kb 2channel normalized", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -b:v 2600k -c:a libmp3lame -b:a 128k -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "10-h265_nvenc cq23 audio mp3 stereo norm", + "Description": "h265_nvenc cq23 audio mp3_128kb 2channel normalized", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -cq 23 -preset medium -c:a libmp3lame -b:a 128k -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "12-h265_nvenc 2300k FAST Audio COPY", + "Description": "h265_nvenc 2300k FAST preset audio COPY", + "First_pass": "-nostdin -dn -map 0 -vcodec hevc_nvenc -b:v 2300k -preset fast -c:a copy -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "13-h265_nvenc 2600k audio copy", + "Description": "h265_nvenc 2600k audio copy", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -b:v 2600k -c:a copy -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "14-h265_nvenc cq23 audio copy", + "Description": "h265_nvenc 2600k audio copy", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -cq 23 -preset medium -c:a copy -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "15-h265_nvenc 2600k audio PCM", + "Description": "h265_nvenc 2600k audio PCM", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -b:v 4000k -c:a pcm_s16le -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mov" + }, + { + "Name": "16-h265_nvenc 2600k audio vorbis", + "Description": "h265_nvenc 2600k audio vorbis", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -b:v 2600k -c:a libvorbis -aq 6 -ar 44100 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "17-h265_nvenc 2600k audio PCM norm", + "Description": "h265_nvenc 2600k audio PCM normalized", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -b:v 2600k -c:a pcm_s16le -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + }, + { + "Name": "18-h265_nvenc 2600k audio vorbis norm", + "Description": "h265_nvenc 2600k audio vorbis normalized", + "First_pass": "-nostdin -map 0 -vcodec hevc_nvenc -b:v 2600k -c:a libvorbis -aq 6 -ar 44100 -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:s copy", + "Second_pass": "", + "Supported_list": "", + "Output_extension": "mkv" + } +] diff --git a/videomass/share/presets/Utilities.prst b/videomass/share/presets/Utilities.prst index d171c6671..fda2fd562 100644 --- a/videomass/share/presets/Utilities.prst +++ b/videomass/share/presets/Utilities.prst @@ -23,4 +23,4 @@ "Supported_list": "", "Output_extension": "mkv" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/Video Encoding VP9-WebM.prst b/videomass/share/presets/VP9-WebM.prst similarity index 100% rename from videomass/share/presets/Video Encoding VP9-WebM.prst rename to videomass/share/presets/VP9-WebM.prst diff --git a/videomass/share/presets/Video effects.prst b/videomass/share/presets/Video effects.prst index 27b9a8496..408e38301 100644 --- a/videomass/share/presets/Video effects.prst +++ b/videomass/share/presets/Video effects.prst @@ -31,4 +31,4 @@ "Supported_list": "", "Output_extension": "mkv" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/Video-Repair.prst b/videomass/share/presets/Video-Repair.prst index ff1266459..bb6fb6193 100644 --- a/videomass/share/presets/Video-Repair.prst +++ b/videomass/share/presets/Video-Repair.prst @@ -47,4 +47,4 @@ "Supported_list": "", "Output_extension": "mkv" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/Video_Stabilizer.prst b/videomass/share/presets/Video_Stabilizer.prst index 6f285ae1f..aad035052 100644 --- a/videomass/share/presets/Video_Stabilizer.prst +++ b/videomass/share/presets/Video_Stabilizer.prst @@ -31,4 +31,4 @@ "Supported_list": "", "Output_extension": "mkv" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/Video_Streaming.prst b/videomass/share/presets/Video_Streaming.prst index a6cbf06e4..99d67ad52 100644 --- a/videomass/share/presets/Video_Streaming.prst +++ b/videomass/share/presets/Video_Streaming.prst @@ -63,4 +63,4 @@ "Supported_list": "", "Output_extension": "webm" } -] \ No newline at end of file +] diff --git a/videomass/share/presets/version/version.txt b/videomass/share/presets/version/version.txt index 50653ad0a..caa4836d8 100644 --- a/videomass/share/presets/version/version.txt +++ b/videomass/share/presets/version/version.txt @@ -1 +1 @@ -0.17 +0.19 diff --git a/videomass/vdms_dialogs/audiodialogs.py b/videomass/vdms_dialogs/audiodialogs.py index 8a430140f..465d3184a 100644 --- a/videomass/vdms_dialogs/audiodialogs.py +++ b/videomass/vdms_dialogs/audiodialogs.py @@ -6,7 +6,7 @@ Author: Gianluca Pernigotto Copyleft - 2024 Gianluca Pernigotto license: GPL3 -Rev: July.17.2022 +Rev: Gen.22.2024 Code checker: flake8, pylint This file is part of Videomass. @@ -61,7 +61,7 @@ def __init__(self, parent, *args): bitrate_list = [a[0] for a in self.bitrate.values()] self.rdb_bitrate = wx.RadioBox(self, wx.ID_ANY, - ("Audio Bit-Rate"), + ("Compression level"), choices=bitrate_list, majorDimension=0, style=wx.RA_SPECIFY_ROWS, @@ -70,7 +70,7 @@ def __init__(self, parent, *args): channel_list = [a[0] for a in self.channels.values()] self.rdb_channels = wx.RadioBox(self, wx.ID_ANY, - ("Audio Channels"), + ("Channels"), choices=channel_list, majorDimension=0, style=wx.RA_SPECIFY_ROWS, @@ -79,7 +79,7 @@ def __init__(self, parent, *args): samplerate_list = [a[0] for a in self.sample_rate.values()] self.rdb_sample_r = wx.RadioBox(self, wx.ID_ANY, - ("Audio Rate (sample rate)"), + ("Sample rate"), choices=samplerate_list, majorDimension=0, style=wx.RA_SPECIFY_ROWS, @@ -322,7 +322,7 @@ def flac(self): 3: ("quality 2", "-compression_level 2"), 4: ("quality 3", "-compression_level 3"), 5: ("quality 4", "-compression_level 4"), - 6: ("Standard quality", "-compression_level 5"), + 6: ("Default quality", "-compression_level 5"), 7: ("quality 6", "-compression_level 6"), 8: ("quality 7", "-compression_level 7"), 9: ("low quality", "-compression_level 8"), diff --git a/videomass/vdms_io/presets_manager_prop.py b/videomass/vdms_io/presets_manager_prop.py index 0c984209d..3f2b5123a 100644 --- a/videomass/vdms_io/presets_manager_prop.py +++ b/videomass/vdms_io/presets_manager_prop.py @@ -6,7 +6,7 @@ Author: Gianluca Pernigotto Copyleft - 2024 Gianluca Pernigotto license: GPL3 -Rev: Feb.15.2023 +Rev: Gen.22.2024 Code checker: flake8, pylint This file is part of Videomass. @@ -84,7 +84,7 @@ def json_data(arg): 'Possible solution: open the Presets Manager panel, go to ' 'the presets column and try to click the "Restore" button' ) - wx.MessageBox('\nERROR: {1}\n\nFile: "{0}"\n{2}'.format(arg, err, msg), + wx.MessageBox(f'\nERROR: {err}\n\nFile: "{arg}"\n{msg}', ("Videomass"), wx.ICON_ERROR | wx.OK, None) return 'error' @@ -94,7 +94,7 @@ def json_data(arg): 'Presets Manager panel, go to the presets column and try ' 'to click the "Restore all..." button' ) - wx.MessageBox('\nERROR: {0}\n\n{1}'.format(err, msg), + wx.MessageBox(f'\nERROR: {err}\n\n{msg}', ("Videomass"), wx.ICON_ERROR | wx.OK, None) return 'error' @@ -122,21 +122,33 @@ def update_oudated_profiles(new, old): Updates (replaces with new ones) old profiles with same name as new profiles but Keep all others. """ - with open(new, 'r', encoding='utf8') as newf: - incoming = json.load(newf) - - with open(old, 'r', encoding='utf8') as oldf: - outcoming = json.load(oldf) - - items_new = {value["Name"]: value for value in incoming} - items_old = {value["Name"]: value for value in outcoming} - - items_old.update(items_new) - items_old = list(items_old.values()) - items_old.sort(key=lambda s: s["Name"]) # make sorted by name - - with open(new, 'w', encoding='utf8') as outfile: - json.dump(items_old, outfile, ensure_ascii=False, indent=4) + msg1 = ("This task was broken due to the following " + "json decoding error of file") + msg2 = ("Please correct any errors in the file's " + "code before rerunning this task.") + if new and old: + with open(new, 'r', encoding='utf8') as newf: + try: + incoming = json.load(newf) + except json.decoder.JSONDecodeError as err: + return f"{msg1} '{new}'\n\n{str(err)}\n\n{msg2}" + + with open(old, 'r', encoding='utf8') as oldf: + try: + outcoming = json.load(oldf) + except json.decoder.JSONDecodeError as err: + return f"{msg1} '{old}'\n\n{str(err)}\n\n{msg2}" + + items_new = {value["Name"]: value for value in incoming} + items_old = {value["Name"]: value for value in outcoming} + + items_old.update(items_new) + items_old = list(items_old.values()) + items_old.sort(key=lambda s: s["Name"]) # make sorted by name + + with open(old, 'w', encoding='utf8') as outfile: + json.dump(items_old, outfile, ensure_ascii=False, indent=4) + return None # ------------------------------------------------------------------# diff --git a/videomass/vdms_panels/presets_manager.py b/videomass/vdms_panels/presets_manager.py index e6ee35422..d69cb337f 100644 --- a/videomass/vdms_panels/presets_manager.py +++ b/videomass/vdms_panels/presets_manager.py @@ -7,7 +7,7 @@ Author: Gianluca Pernigotto Copyleft - 2024 Gianluca Pernigotto license: GPL3 -Rev: Feb.13.2023 +Rev: Gen.22.2024 Code checker: flake8, pylint This file is part of Videomass. @@ -25,6 +25,7 @@ You should have received a copy of the GNU General Public License along with Videomass. If not, see . """ +import time import os import sys import wx @@ -320,10 +321,9 @@ def update_preset_state(self): """ if self.check_presets_version: return - source = os.path.join(self.appdata['srcpath'], 'presets') - srctext = os.path.join(source, 'version', 'version.txt') - dest = os.path.join(self.appdata['confdir'], 'presets') - conftext = os.path.join(dest, 'version', 'version.txt') + + srctext = os.path.join(self.src_prst, 'version', 'version.txt') + conftext = os.path.join(self.user_prst, 'version', 'version.txt') if not os.path.isfile(conftext) or not os.path.isfile(srctext): return @@ -345,17 +345,22 @@ def update_preset_state(self): 'will be backed up in the same folder as the new ' 'incoming presets:\n"{2}"\n\n' 'Do you want to update the preset ' - 'database now?').format(srcversion, confversion, dest) + 'database now?').format(srcversion, + confversion, + self.user_prst + ) if wx.MessageBox(msg, _('Please confirm'), wx.ICON_QUESTION | wx.CANCEL | wx.YES_NO, self) != wx.YES: return - - backup = copydir_recursively(dest, dest, - f'Version-{confversion}-BACKUP') + datenow = time.strftime('%H%M%S-%a_%d_%B_%Y') + backup = copydir_recursively(self.user_prst, self.user_prst, + f'v{confversion}-{datenow}-Backup') if backup: wx.MessageBox(f'{backup}', "Videomass", wx.ICON_ERROR, self) - self.preset_import_all(self, source=source) + err = self.preset_import_all(event=None) + if err: + return copyvers = copy_restore(srctext, conftext) if copyvers: wx.MessageBox(f'{copyvers}', "Videomass", wx.ICON_ERROR, self) @@ -645,23 +650,24 @@ def preset_import(self, event): "Videomass", wx.OK, self) # ------------------------------------------------------------------# - def preset_import_all(self, event, source=None): + def preset_import_all(self, event): """ Import all presets previously saved in a folder and replaces the existing ones """ - if not source: + source = self.src_prst + if event: if wx.MessageBox(_("This will update the presets database. " "Don't worry, it will keep all your saved " "profiles.\n\nDo you want to continue?"), _("Please confirm"), wx.ICON_QUESTION | wx.CANCEL | wx.YES_NO, self) != wx.YES: - return + return None dialsave = wx.DirDialog(self, _("Import a new presets folder"), "", style=wx.DD_DEFAULT_STYLE) if dialsave.ShowModal() == wx.ID_CANCEL: - return + return None source = dialsave.GetPath() dialsave.Destroy() @@ -670,10 +676,15 @@ def preset_import_all(self, event, source=None): if n.endswith('.prst')] # Return a new set with elements common to the set and all others. + # In short, copy only files with matching basenames. for f in set(incoming).intersection(outcoming): - update_oudated_profiles(os.path.join(source, f), - os.path.join(self.user_prst, f)) - outerror = copy_on('prst', source, self.user_prst) + err = update_oudated_profiles(os.path.join(source, f), + os.path.join(self.user_prst, f)) + if err: + wx.MessageBox(f"{err}", "Videomass", wx.ICON_ERROR, self) + return err + # copies non-existent ones to the destination folder + outerror = copy_on('prst', source, self.user_prst, overw=False) if outerror: wx.MessageBox(f"{outerror}", "Videomass", wx.ICON_ERROR, self) else: @@ -698,14 +709,11 @@ def preset_default(self, event): self) == wx.YES: filename = self.cmbx_prst.GetValue() - status = copy_restore(f'{self.user_prst}/{filename}.prst', + status = copy_restore(f'{self.src_prst}/{filename}.prst', f'{self.user_prst}/{filename}.prst' ) if status: - wx.MessageBox(_('Sorry, this preset is not part ' - 'of default Videomass presets.'), - "Videomass", wx.ICON_ERROR, self - ) + wx.MessageBox(status, "Videomass", wx.ICON_ERROR, self) return wx.MessageBox(_("Successful recovery"), "Videomass", wx.OK, self) @@ -930,16 +938,16 @@ def update_dict(self, cntmax, passes): """ if not self.parent.time_seq: - time = _('Unset') + timeseq = _('Unset') else: t = self.parent.time_seq.split() - time = _('start {} | duration {}').format(t[1], t[3]) + timeseq = _('start {} | duration {}').format(t[1], t[3]) numfile = f"{str(cntmax)} file in queue" formula = (_("Queued File\nPass Encoding" "\nProfile Used\nOutput Format\nTime Period")) dictions = (f"{numfile}\n{passes}\n" - f"{self.array[0]}\n{self.array[5]}\n{time}" + f"{self.array[0]}\n{self.array[5]}\n{timeseq}" ) return formula, dictions diff --git a/videomass/vdms_sys/msg_info.py b/videomass/vdms_sys/msg_info.py index 50ce4f102..6001fe3fc 100644 --- a/videomass/vdms_sys/msg_info.py +++ b/videomass/vdms_sys/msg_info.py @@ -36,8 +36,8 @@ def current_release(): """ release_name = 'Videomass' program_name = 'videomass' - version = '5.0.3' - release = 'Released' + version = '5.0.4' + release = 'Unreleased' copyr = '2013-2024' website = 'http://jeanslack.github.io/Videomass/' author = ('Gianluca Pernigotto', '(aka jeanslack)') diff --git a/videomass/vdms_utils/utils.py b/videomass/vdms_utils/utils.py index 8732339d1..a25b65c7d 100644 --- a/videomass/vdms_utils/utils.py +++ b/videomass/vdms_utils/utils.py @@ -6,7 +6,7 @@ Author: Gianluca Pernigotto Copyleft - 2024 Gianluca Pernigotto license: GPL3 -Rev: Feb.09.2023 +Rev: Gen.22.2024 Code checker: flake8, pylint . This file is part of Videomass. @@ -294,13 +294,13 @@ def copy_restore(src, dest): shutil.copyfile(str(src), str(dest)) except FileNotFoundError as err: # file src not exists - return err - except SameFileError as err: + return str(err) + except shutil.SameFileError as err: # src and dest are the same file and same dir. - return err + return str(err) except OSError as err: # The dest location must be writable - return err + return str(err) return None # ------------------------------------------------------------------# @@ -330,7 +330,7 @@ def copydir_recursively(source, destination, extraname=None): # ------------------------------------------------------------------# -def copy_on(ext, source, destination): +def copy_on(ext, source, destination, overw=True): """ Given a source (dirname), use glob for a given file extension (ext) and iterate to move files to another directory (destination). @@ -340,11 +340,16 @@ def copy_on(ext, source, destination): ext: files extension without dot source: path to the source directory destination: path to the destination directory + overw: if `True`, overwrite file destination """ + destdir = os.listdir(destination) files = glob.glob(f"{source}/*.{ext}") if not files: return f'Error: No such file with ".{ext}" format found' for fln in files: + if not overw: + if os.path.basename(fln) in destdir: + continue try: shutil.copy(fln, f'{destination}') except IOError as error: From 3824b3f8f80ff01e2767434af547644b1504b09f Mon Sep 17 00:00:00 2001 From: Gianluca Pernigotto Date: Mon, 22 Jan 2024 21:15:34 +0100 Subject: [PATCH 2/6] improved preset backaps --- CHANGELOG | 3 ++ debian/changelog | 6 ++- videomass/vdms_panels/presets_manager.py | 63 +++++++++++++++--------- 3 files changed, 49 insertions(+), 23 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index a1f979ad3..1f8992235 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -21,6 +21,9 @@ Mon, 22 Jan 2024 V.5.0.4 incorrectly encoded json code during the preset update task. * [A/V Conversions) Improved audio dialog settings (Audio Properties). * Updated Videomass presets to v0.19 . + * [Preset Manager] Full preset restore operations (including import by + Groups) now include a full backup of the preset source directory located + in the user configuration directory. +------------------------------------+ Mon, 15 Jan 2024 V.5.0.3 diff --git a/debian/changelog b/debian/changelog index 8fc43490a..3bb415a30 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,8 +11,12 @@ videomass (5.0.4-1) UNRELEASED; urgency=high exception in the event of malformed or incorrectly encoded json code during the preset update task. * [A/V Conversions) Improved audio dialog settings (Audio Properties). + * Updated Videomass presets to v0.19 . + * [Preset Manager] Full preset restore operations (including import by + Groups) now include a full backup of the preset source directory located + in the user configuration directory. - -- Gianluca Pernigotto Mon, 22 Jan 2024 01:00:00 +0200 + -- Gianluca Pernigotto Mon, 22 Jan 2024 21:00:00 +0200 videomass (5.0.3-1) UNRELEASED; urgency=medium diff --git a/videomass/vdms_panels/presets_manager.py b/videomass/vdms_panels/presets_manager.py index d69cb337f..71dbe5baa 100644 --- a/videomass/vdms_panels/presets_manager.py +++ b/videomass/vdms_panels/presets_manager.py @@ -342,22 +342,16 @@ def update_preset_state(self): 'It seems that the local preset database in your ' 'configuration folder is outdated. If you choose to ' 'update the preset database, the outdated version ' - 'will be backed up in the same folder as the new ' - 'incoming presets:\n"{2}"\n\n' + 'will be backed up in the configuration folder:\n' + '"{2}"\n\n' 'Do you want to update the preset ' 'database now?').format(srcversion, confversion, - self.user_prst + self.appdata['confdir'], ) if wx.MessageBox(msg, _('Please confirm'), wx.ICON_QUESTION | wx.CANCEL | wx.YES_NO, self) != wx.YES: return - datenow = time.strftime('%H%M%S-%a_%d_%B_%Y') - backup = copydir_recursively(self.user_prst, self.user_prst, - f'v{confversion}-{datenow}-Backup') - if backup: - wx.MessageBox(f'{backup}', "Videomass", wx.ICON_ERROR, self) - err = self.preset_import_all(event=None) if err: return @@ -652,8 +646,15 @@ def preset_import(self, event): def preset_import_all(self, event): """ - Import all presets previously saved in a folder and replaces - the existing ones + This method depends on the event given as argument: If it is + `None` it will restore the user's preset directory to the + directory given by the `source` attribute. Otherwise the + event will be triggered by clicking on the `Import Group` + button which will have a slightly different behavior. In any + case it will not overwrite existing presets but will update + them with missing profiles on the destination files. + In addition it will copy all other presets that do not yet + exist on the destination. """ source = self.src_prst if event: @@ -671,6 +672,13 @@ def preset_import_all(self, event): source = dialsave.GetPath() dialsave.Destroy() + # create a dir backup + datenow = time.strftime('%H%M%S-%a_%d_%B_%Y') + err = copydir_recursively(self.user_prst, self.appdata['confdir'], + f'presets-{datenow}-Backup') + if err: + wx.MessageBox(f'{err}', "Videomass", wx.ICON_ERROR, self) + incoming = [n for n in os.listdir(source) if n.endswith('.prst')] outcoming = [n for n in os.listdir(self.user_prst) if n.endswith('.prst')] @@ -684,14 +692,16 @@ def preset_import_all(self, event): wx.MessageBox(f"{err}", "Videomass", wx.ICON_ERROR, self) return err # copies non-existent ones to the destination folder - outerror = copy_on('prst', source, self.user_prst, overw=False) - if outerror: - wx.MessageBox(f"{outerror}", "Videomass", wx.ICON_ERROR, self) - else: - wx.MessageBox(_("The presets database has been successfully " - "updated"), "Videomass", wx.OK, self) - self.reset_list(True) - self.on_deselect(self, cleardata=False) + err = copy_on('prst', source, self.user_prst, overw=False) + if err: + wx.MessageBox(f"{err}", "Videomass", wx.ICON_ERROR, self) + return err + + wx.MessageBox(_("The presets database has been successfully " + "updated"), "Videomass", wx.OK, self) + self.reset_list(True) + self.on_deselect(self, cleardata=False) + return None # ------------------------------------------------------------------# def preset_default(self, event): @@ -731,9 +741,18 @@ def preset_default_all(self, event): wx.ICON_WARNING | wx.YES_NO | wx.CANCEL, self) == wx.YES: - outerror = copy_on('prst', self.src_prst, self.user_prst) - if outerror: - wx.MessageBox(f"{outerror}", "Videomass", wx.ICON_ERROR, self) + if os.path.exists(self.user_prst): + # create a dir backup + datenow = time.strftime('%H%M%S-%a_%d_%B_%Y') + err = os.rename(self.user_prst, + f"{self.user_prst}-{datenow}-Backup") + if err: + wx.MessageBox(f'{err}', "Videomass", wx.ICON_ERROR, self) + return + + err = copydir_recursively(self.src_prst, self.appdata['confdir']) + if err: + wx.MessageBox(f"{err}", "Videomass", wx.ICON_ERROR, self) else: wx.MessageBox(_("All default presets have been " "successfully recovered"), From 9d1e2b696b505b9f6815ed3a72b7796ced5c785b Mon Sep 17 00:00:00 2001 From: Gianluca Pernigotto Date: Tue, 23 Jan 2024 18:02:20 +0100 Subject: [PATCH 3/6] improve backups operations --- CHANGELOG | 4 +-- debian/changelog | 4 +-- videomass/vdms_io/presets_manager_prop.py | 21 ++++++------ videomass/vdms_panels/presets_manager.py | 41 +++++++++++++---------- videomass/vdms_utils/utils.py | 21 ++++++++++-- 5 files changed, 57 insertions(+), 34 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1f8992235..b06fe2e2a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -22,8 +22,8 @@ Mon, 22 Jan 2024 V.5.0.4 * [A/V Conversions) Improved audio dialog settings (Audio Properties). * Updated Videomass presets to v0.19 . * [Preset Manager] Full preset restore operations (including import by - Groups) now include a full backup of the preset source directory located - in the user configuration directory. + Groups) now include a backup of the preset source directory in the + program configuration directory. +------------------------------------+ Mon, 15 Jan 2024 V.5.0.3 diff --git a/debian/changelog b/debian/changelog index 3bb415a30..f66591ce4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,8 +13,8 @@ videomass (5.0.4-1) UNRELEASED; urgency=high * [A/V Conversions) Improved audio dialog settings (Audio Properties). * Updated Videomass presets to v0.19 . * [Preset Manager] Full preset restore operations (including import by - Groups) now include a full backup of the preset source directory located - in the user configuration directory. + Groups) now include a backup of the preset source directory in the + program configuration directory. -- Gianluca Pernigotto Mon, 22 Jan 2024 21:00:00 +0200 diff --git a/videomass/vdms_io/presets_manager_prop.py b/videomass/vdms_io/presets_manager_prop.py index 3f2b5123a..1d267c4d9 100644 --- a/videomass/vdms_io/presets_manager_prop.py +++ b/videomass/vdms_io/presets_manager_prop.py @@ -79,12 +79,12 @@ def json_data(arg): data = json.load(fln) except json.decoder.JSONDecodeError as err: - msg = _('Invalid preset loaded.\nIt is recommended to remove it or ' - 'rewrite it into a JSON format compatible with Videomass.\n\n' - 'Possible solution: open the Presets Manager panel, go to ' - 'the presets column and try to click the "Restore" button' + msg = _('You are attempting to load a preset written with ' + 'invalid JSON encoding.\n\n' + 'You can try to restore it or import a correct one, ' + 'otherwise it is recommended to remove it.' ) - wx.MessageBox(f'\nERROR: {err}\n\nFile: "{arg}"\n{msg}', + wx.MessageBox(f'\nERROR: {err}\n\nFILE: "{arg}"\n\n{msg}', ("Videomass"), wx.ICON_ERROR | wx.OK, None) return 'error' @@ -122,22 +122,21 @@ def update_oudated_profiles(new, old): Updates (replaces with new ones) old profiles with same name as new profiles but Keep all others. """ - msg1 = ("This task was broken due to the following " - "json decoding error of file") - msg2 = ("Please correct any errors in the file's " - "code before rerunning this task.") + msg = _("Operation aborted due to possible JSON encoding/decoding " + "error.\nFix any errors in the JSON code contained on the FILE " + "before performing this operation again.") if new and old: with open(new, 'r', encoding='utf8') as newf: try: incoming = json.load(newf) except json.decoder.JSONDecodeError as err: - return f"{msg1} '{new}'\n\n{str(err)}\n\n{msg2}" + return f"ERROR: {str(err)}\n\nFILE: '{new}'\n\n{msg}" with open(old, 'r', encoding='utf8') as oldf: try: outcoming = json.load(oldf) except json.decoder.JSONDecodeError as err: - return f"{msg1} '{old}'\n\n{str(err)}\n\n{msg2}" + return f"ERROR: {str(err)}\n\nFILE: '{old}'\n\n{msg}" items_new = {value["Name"]: value for value in incoming} items_old = {value["Name"]: value for value in outcoming} diff --git a/videomass/vdms_panels/presets_manager.py b/videomass/vdms_panels/presets_manager.py index 71dbe5baa..ad9b9156c 100644 --- a/videomass/vdms_panels/presets_manager.py +++ b/videomass/vdms_panels/presets_manager.py @@ -39,6 +39,7 @@ from videomass.vdms_utils.utils import copy_restore from videomass.vdms_utils.utils import copy_on from videomass.vdms_utils.utils import copydir_recursively +from videomass.vdms_utils.utils import copy_missing_data from videomass.vdms_io.checkup import check_files from videomass.vdms_dialogs import presets_addnew from videomass.vdms_dialogs.epilogue import Formula @@ -337,27 +338,30 @@ def update_preset_state(self): self.check_presets_version = True if updated > old: - msg = _('Outdated preset version found: v{1}.\n' + msg = _('Outdated presets version found: v{1}\n' 'A new version is available: v{0}\n\n' - 'It seems that the local preset database in your ' - 'configuration folder is outdated. If you choose to ' - 'update the preset database, the outdated version ' - 'will be backed up in the configuration folder:\n' - '"{2}"\n\n' - 'Do you want to update the preset ' - 'database now?').format(srcversion, - confversion, - self.appdata['confdir'], - ) + 'This update provides new presets included on the ' + 'latest versions of Videomass.\n\n' + 'To avoid data loss and allow for possible recovery, ' + 'the outdated presets folder will be backed up in the ' + 'program configuration folder: "{2}"\n\n' + 'Do you want to perform this ' + 'update now?').format(srcversion, + confversion, + self.appdata["confdir"]) if wx.MessageBox(msg, _('Please confirm'), wx.ICON_QUESTION | wx.CANCEL | wx.YES_NO, self) != wx.YES: return err = self.preset_import_all(event=None) if err: return + copyvers = copy_restore(srctext, conftext) if copyvers: wx.MessageBox(f'{copyvers}', "Videomass", wx.ICON_ERROR, self) + return + # copies missing file/dir to the destination folder + copy_missing_data(self.src_prst, self.user_prst) # -------------------------------------------------------------------- def reset_list(self, reset_cmbx=False): @@ -522,7 +526,7 @@ def preset_del(self, event): filename = self.cmbx_prst.GetValue() if wx.MessageBox(_('Are you sure you want to remove "{}" preset?\n\n ' 'It will be moved to the "Removals" subfolder ' - 'of the presets folder.').format(filename), + 'inside the presets folder.').format(filename), _('Please confirm'), wx.ICON_QUESTION | wx.CANCEL | wx.YES_NO, self) != wx.YES: return @@ -678,14 +682,14 @@ def preset_import_all(self, event): f'presets-{datenow}-Backup') if err: wx.MessageBox(f'{err}', "Videomass", wx.ICON_ERROR, self) + return err - incoming = [n for n in os.listdir(source) if n.endswith('.prst')] - outcoming = [n for n in os.listdir(self.user_prst) - if n.endswith('.prst')] + incom = [n for n in os.listdir(source) if n.endswith('.prst')] + outcom = [n for n in os.listdir(self.user_prst) if n.endswith('.prst')] # Return a new set with elements common to the set and all others. # In short, copy only files with matching basenames. - for f in set(incoming).intersection(outcoming): + for f in set(incom).intersection(outcom): err = update_oudated_profiles(os.path.join(source, f), os.path.join(self.user_prst, f)) if err: @@ -736,7 +740,10 @@ def preset_default_all(self, event): restore all preset files directory """ if wx.MessageBox(_("Be careful! This action will restore all presets " - "to default ones. Your profiles may be deleted!" + "to default ones. Your profiles may be deleted!\n\n" + "In any case, to avoid data loss, the presets " + "folder will be backed up in the program's " + "configuration folder." "\n\nDo you want to continue?"), _("Warning"), wx.ICON_WARNING | wx.YES_NO | wx.CANCEL, self) == wx.YES: diff --git a/videomass/vdms_utils/utils.py b/videomass/vdms_utils/utils.py index a25b65c7d..b466bbc00 100644 --- a/videomass/vdms_utils/utils.py +++ b/videomass/vdms_utils/utils.py @@ -285,10 +285,27 @@ def milliseconds2clocksec(milliseconds): # ------------------------------------------------------------------------ +def copy_missing_data(src, dest): + """ + Copy missing files and directories to a given destination + path using the same names as the source path. + """ + srclist = os.listdir(src) + destlist = os.listdir(dest) + for f in srclist: + if f not in destlist: + if os.path.isfile(os.path.join(src, f)): + copy_restore(os.path.join(src, f), os.path.join(dest, f)) + elif os.path.isdir(os.path.join(src, f)): + copydir_recursively(os.path.join(src, f), dest) +# ------------------------------------------------------------------------ + + def copy_restore(src, dest): """ - copy a specific file from src to dest. If dest exists, - it will be overwritten with src without confirmation. + Copy the contents (no metadata) of the file named + src to a file named dst. Please visit doc webpage at + """ try: shutil.copyfile(str(src), str(dest)) From 918f6bafd5b72d60d5e7f05c3660a5d732fc1052 Mon Sep 17 00:00:00 2001 From: Gianluca Pernigotto Date: Tue, 23 Jan 2024 22:42:30 +0100 Subject: [PATCH 4/6] update it_IT translation + some refactoring --- .../locale/it_IT/LC_MESSAGES/videomass.mo | Bin 100980 -> 101387 bytes .../locale/it_IT/LC_MESSAGES/videomass.po | 250 ++++++++++-------- videomass/locale/videomass.pot | 187 ++++++------- videomass/vdms_panels/presets_manager.py | 9 +- videomass/vdms_utils/utils.py | 73 ++--- 5 files changed, 281 insertions(+), 238 deletions(-) diff --git a/videomass/locale/it_IT/LC_MESSAGES/videomass.mo b/videomass/locale/it_IT/LC_MESSAGES/videomass.mo index 6d6c8afd17ab0446dafb4a27d4f1e8022dfbf5ae..81ca76b6b834ef084ff150c771652fc36ecce7e0 100644 GIT binary patch delta 16547 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\n" "Language-Team: Italian <>\n" "Language: it_IT\n" @@ -904,7 +904,7 @@ msgstr "" msgid "Profile Name" msgstr "Nome Profilo" -#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:393 +#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:396 msgid "Description" msgstr "Descrizione" @@ -1949,19 +1949,15 @@ msgstr "" #: ../vdms_io/presets_manager_prop.py:82 msgid "" -"Invalid preset loaded.\n" -"It is recommended to remove it or rewrite it into a JSON format compatible " -"with Videomass.\n" +"You are attempting to load a preset written with invalid JSON encoding.\n" "\n" -"Possible solution: open the Presets Manager panel, go to the presets column " -"and try to click the \"Restore\" button" +"You can try to restore it or import a correct one, otherwise it is " +"recommended to remove it." msgstr "" -"Preset caricato non valido.\n" -"Si consiglia di rimuoverlo o riscriverlo in un formato JSON compatibile con " -"Videomass.\n" +"Stai tentando di avviare un preset scritto con una codifica JSON non valida\n" "\n" -"Possibile soluzione: apri il pannello Gestionale Predefiniti, vai alla " -"colonna Presets e prova a cliccare sul pulsante \"Restore\"" +"Puoi provare a ripristinarlo o a importarne uno corretto, altrimenti è " +"raccomandata l'eliminazione." #: ../vdms_io/presets_manager_prop.py:93 msgid "" @@ -1975,6 +1971,17 @@ msgstr "" "Possibile soluzione: apri il pannello Gestionale Predefiniti, vai alla " "colonna Presets e prova a cliccare sul pulsante \"Ripristina tutto ...\"" +#: ../vdms_io/presets_manager_prop.py:125 +msgid "" +"Operation aborted due to possible JSON encoding/decoding error.\n" +"Fix any errors in the JSON code contained on the FILE before performing this " +"operation again." +msgstr "" +"L'operazione è stata interrotta a causa di un possibile errore di codifica/" +"decodifica JSON.\n" +"Prima di rieseguire questa operazione, correggere eventuali errori nel " +"codice JSON contenuto nel FILE ." + #: ../vdms_main/main_frame.py:193 ../vdms_main/main_frame.py:1372 #: ../vdms_main/main_frame.py:1402 ../vdms_ytdlp/main_ytdlp.py:99 #: ../vdms_ytdlp/main_ytdlp.py:148 ../vdms_ytdlp/main_ytdlp.py:593 @@ -2097,7 +2104,7 @@ msgstr "Rimuovi il file selezionato\tDEL" msgid "Remove the selected files from the list" msgstr "Rimuovi i file selezionati dall'elenco" -#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:219 +#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:221 #: ../vdms_panels/video_to_sequence.py:169 ../vdms_ytdlp/main_ytdlp.py:301 msgid "Edit" msgstr "Modifica" @@ -2531,6 +2538,10 @@ msgstr "In lavorazione..." msgid "Videomass - FFmpeg message monitor" msgstr "Videomass - Monitor messaggi FFmpeg" +#: ../vdms_main/main_frame.py:1638 +msgid "yt-dlp is disabled. Check your preferences." +msgstr "yt-dlp è disabilitato. Controlla le tue preferenze." + #: ../vdms_panels/av_conversions.py:221 msgid "Media:" msgstr "Media:" @@ -2888,12 +2899,12 @@ msgstr "{} file in coda" msgid "Off" msgstr "Spento" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:933 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:967 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "Non settato" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:936 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:970 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "inizio {} | durata {}" @@ -3113,10 +3124,6 @@ msgid "Extract images (frames) from your movies in JPG, PNG, BMP, GIF formats." msgstr "" "Estrai immagini (frame) dai tuoi filmati nei formati JPG, PNG, BMP, GIF." -#: ../vdms_panels/choose_topic.py:223 -msgid "yt-dlp is disabled. Check your preferences." -msgstr "yt-dlp è disabilitato. Controlla le tue preferenze." - #: ../vdms_panels/concatenate.py:45 msgid "At least two files are required to perform concatenation." msgstr "Sono necessari almeno due file per eseguire la concatenazione." @@ -3408,175 +3415,178 @@ msgstr "Attendere... interruzione in corso" msgid "...Interrupted" msgstr "...Interrotto" -#: ../vdms_panels/presets_manager.py:111 +#: ../vdms_panels/presets_manager.py:113 msgid "Presets" msgstr "Presets" -#: ../vdms_panels/presets_manager.py:134 +#: ../vdms_panels/presets_manager.py:136 msgid "New" msgstr "Nuovo" -#: ../vdms_panels/presets_manager.py:137 +#: ../vdms_panels/presets_manager.py:139 msgid "Remove" msgstr "Rimuovi" -#: ../vdms_panels/presets_manager.py:147 +#: ../vdms_panels/presets_manager.py:149 msgid "Export selected" msgstr "Esporta selezionato" -#: ../vdms_panels/presets_manager.py:150 +#: ../vdms_panels/presets_manager.py:152 msgid "Export all..." msgstr "Esporta tutti..." -#: ../vdms_panels/presets_manager.py:161 +#: ../vdms_panels/presets_manager.py:163 msgid "Import preset" msgstr "Importa preset" -#: ../vdms_panels/presets_manager.py:164 +#: ../vdms_panels/presets_manager.py:166 msgid "Import group" msgstr "Importa gruppo" -#: ../vdms_panels/presets_manager.py:175 +#: ../vdms_panels/presets_manager.py:177 msgid "Restore" msgstr "Ripristina" -#: ../vdms_panels/presets_manager.py:179 +#: ../vdms_panels/presets_manager.py:181 msgid "Restore all..." msgstr "Ripristina tutti..." -#: ../vdms_panels/presets_manager.py:191 +#: ../vdms_panels/presets_manager.py:193 msgid "Reload" msgstr "Ricarica" -#: ../vdms_panels/presets_manager.py:205 +#: ../vdms_panels/presets_manager.py:207 msgid "Profiles" msgstr "Profili" -#: ../vdms_panels/presets_manager.py:210 +#: ../vdms_panels/presets_manager.py:212 msgid "Add" msgstr "Aggiungi" -#: ../vdms_panels/presets_manager.py:214 +#: ../vdms_panels/presets_manager.py:216 msgid "Delete" msgstr "Cancella" -#: ../vdms_panels/presets_manager.py:224 +#: ../vdms_panels/presets_manager.py:226 msgid "Duplicate" msgstr "Duplica" -#: ../vdms_panels/presets_manager.py:233 +#: ../vdms_panels/presets_manager.py:235 msgid "One-Pass" msgstr "Passata Uno" -#: ../vdms_panels/presets_manager.py:243 +#: ../vdms_panels/presets_manager.py:245 msgid "Two-Pass" msgstr "Passata Due" -#: ../vdms_panels/presets_manager.py:263 +#: ../vdms_panels/presets_manager.py:265 msgid "Choose a preset and view its profiles" msgstr "Scegli un preset e visualizza i suoi profili" -#: ../vdms_panels/presets_manager.py:264 +#: ../vdms_panels/presets_manager.py:266 msgid "Create a new profile and save it in the selected preset" msgstr "Crea un nuovo profilo e salvalo nel preset selezionato" -#: ../vdms_panels/presets_manager.py:266 +#: ../vdms_panels/presets_manager.py:268 msgid "Delete the selected profile" msgstr "Cancella il profilo selezionato" -#: ../vdms_panels/presets_manager.py:267 +#: ../vdms_panels/presets_manager.py:269 msgid "Edit the selected profile" msgstr "Modifica il profilo selezionato" -#: ../vdms_panels/presets_manager.py:268 +#: ../vdms_panels/presets_manager.py:270 msgid "Create a new preset" msgstr "Crea un nuovo preset" -#: ../vdms_panels/presets_manager.py:270 +#: ../vdms_panels/presets_manager.py:272 msgid "Remove the selected preset from the Presets Manager" msgstr "Rimuovi il preset selezionato dal Gestionale Predefiniti" -#: ../vdms_panels/presets_manager.py:272 +#: ../vdms_panels/presets_manager.py:274 msgid "Export selected preset as copy" msgstr "Esporta il preset selezionato come copia" -#: ../vdms_panels/presets_manager.py:274 +#: ../vdms_panels/presets_manager.py:276 msgid "Export entire presets folder as copy" msgstr "Esporta l'intera directory dei preset come copia" -#: ../vdms_panels/presets_manager.py:276 +#: ../vdms_panels/presets_manager.py:278 msgid "Import a new preset or update an existing one" msgstr "Importa un nuovo preset o aggiornane uno di esistente" -#: ../vdms_panels/presets_manager.py:278 +#: ../vdms_panels/presets_manager.py:280 msgid "Import a group of presets from a folder and update existing ones" msgstr "" "Importa un gruppo di preset da una cartella e aggiorna quelli esistenti" -#: ../vdms_panels/presets_manager.py:281 +#: ../vdms_panels/presets_manager.py:283 msgid "Replace the selected preset with the Videomass default one" msgstr "Sostituisci il preset selezionato con quello predefinito di Videomass" -#: ../vdms_panels/presets_manager.py:283 +#: ../vdms_panels/presets_manager.py:285 msgid "Retrieve all Videomass default presets" msgstr "Recupera tutti i preset predefiniti di Videomass" -#: ../vdms_panels/presets_manager.py:285 +#: ../vdms_panels/presets_manager.py:287 msgid "Update the presets list" msgstr "Aggiorna la lista dei presets" -#: ../vdms_panels/presets_manager.py:286 +#: ../vdms_panels/presets_manager.py:288 msgid "First pass of the selected profile" msgstr "Primo passaggio del profilo selezionato" -#: ../vdms_panels/presets_manager.py:288 +#: ../vdms_panels/presets_manager.py:290 msgid "Second pass of the selected profile" msgstr "Secondo passaggio del profilo selezionato" -#: ../vdms_panels/presets_manager.py:340 +#: ../vdms_panels/presets_manager.py:341 #, python-brace-format msgid "" -"Outdated preset version found: v{1}.\n" +"Outdated presets version found: v{1}\n" "A new version is available: v{0}\n" "\n" -"It seems that the local preset database in your configuration folder is " -"outdated. If you choose to update the preset database, the outdated version " -"will be backed up in the same folder as the new incoming presets:\n" -"\"{2}\"\n" +"This update provides new presets included on the latest versions of " +"Videomass.\n" +"\n" +"To avoid data loss and allow for possible recovery, the outdated presets " +"folder will be backed up in the program configuration folder: \"{2}\"\n" "\n" -"Do you want to update the preset database now?" +"Do you want to perform this update now?" msgstr "" "Rilevata versione preset obsoleta: v{1}.\n" "È disponibile una nuova versione: v{0}\n" "\n" -"Sembra che il database dei preset locali nella cartella di configurazione " -"sia obsoleto. Se scegli di aggiornarlo, verrà eseguito il backup della " -"versione obsoleta nella stessa cartella dei nuovi preset:\n" -"\"{2}\"\n" +"Questo aggiornamento fornisce nuovi preset inclusi nelle ultime versioni di " +"Videomass.\n" +"\n" +"Per evitare la perdita di dati e consentire un possibile ripristino, verrà " +"eseguito il backup della cartella dei preset obsoleti nella cartella di " +"configurazione del programma: \"{2}\"\n" "\n" -"Vuoi aggiornare ora il database dei preset?" +"Vuoi eseguire questo aggiornamento adesso?" -#: ../vdms_panels/presets_manager.py:349 ../vdms_panels/presets_manager.py:527 -#: ../vdms_panels/presets_manager.py:567 ../vdms_panels/presets_manager.py:631 -#: ../vdms_panels/presets_manager.py:657 ../vdms_panels/presets_manager.py:807 -#: ../vdms_panels/presets_manager.py:838 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 +#: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:841 +#: ../vdms_panels/presets_manager.py:872 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "Prego confermare" -#: ../vdms_panels/presets_manager.py:392 +#: ../vdms_panels/presets_manager.py:395 msgid "Name" msgstr "Nome" -#: ../vdms_panels/presets_manager.py:394 +#: ../vdms_panels/presets_manager.py:397 msgid "Output Format" msgstr "Formato in Uscita" -#: ../vdms_panels/presets_manager.py:395 +#: ../vdms_panels/presets_manager.py:398 msgid "Supported Format List" msgstr "Elenco formati supportati" -#: ../vdms_panels/presets_manager.py:413 ../vdms_panels/presets_manager.py:472 +#: ../vdms_panels/presets_manager.py:416 ../vdms_panels/presets_manager.py:475 msgid "" "ERROR: Typing error on JSON keys: {}\n" "\n" @@ -3588,15 +3598,15 @@ msgstr "" "File: \"{}\"\n" "Chiave malformata ?" -#: ../vdms_panels/presets_manager.py:493 +#: ../vdms_panels/presets_manager.py:496 msgid "Enter name for new preset" msgstr "Inserisci il nome per il nuovo preset" -#: ../vdms_panels/presets_manager.py:506 +#: ../vdms_panels/presets_manager.py:509 msgid "Cannot save current data in file '{}'." msgstr "Impossibile salvare i dati correnti nel file '{}'." -#: ../vdms_panels/presets_manager.py:510 +#: ../vdms_panels/presets_manager.py:513 msgid "" "'Successful!\n" "\n" @@ -3606,17 +3616,18 @@ msgstr "" "\n" "È stato creato un nuovo preset vuoto." -#: ../vdms_panels/presets_manager.py:524 +#: ../vdms_panels/presets_manager.py:527 msgid "" "Are you sure you want to remove \"{}\" preset?\n" "\n" -" It will be moved to the \"Removals\" subfolder of the presets folder." +" It will be moved to the \"Removals\" subfolder inside the presets folder." msgstr "" "Sei sicuro di rimuovere il preset \"{}\" ?\n" "\n" -"Sarà spostato nella sotto-cartella \"Removals\" sulla cartella dei presets." +"Sarà spostato nella sotto-cartella \"Removals\" dentro la cartella dei " +"presets." -#: ../vdms_panels/presets_manager.py:535 +#: ../vdms_panels/presets_manager.py:538 msgid "" "{}\n" "\n" @@ -3626,40 +3637,40 @@ msgstr "" "\n" "Spiacente, rimozione non riuscita, impossibile procedere.." -#: ../vdms_panels/presets_manager.py:545 +#: ../vdms_panels/presets_manager.py:548 #, python-brace-format msgid "The preset \"{0}\" was successfully removed" msgstr "Il preset \"{0}\" è stato rimosso con successo" -#: ../vdms_panels/presets_manager.py:560 +#: ../vdms_panels/presets_manager.py:563 msgid "Choose a folder to save the selected preset" msgstr "Scegli una cartella per salvare il preset selezionato" -#: ../vdms_panels/presets_manager.py:565 +#: ../vdms_panels/presets_manager.py:568 msgid "A file with this name already exists, do you want to overwrite it?" msgstr "Esiste già un file con lo stesso nome, vuoi sovrascriverlo?" -#: ../vdms_panels/presets_manager.py:578 +#: ../vdms_panels/presets_manager.py:581 msgid "The preset was exported successfully" msgstr "Il preset è stato esportato con successo" -#: ../vdms_panels/presets_manager.py:588 +#: ../vdms_panels/presets_manager.py:591 msgid "Choose a folder to export all presets" msgstr "Scegli una cartella per esportare tutti i preset" -#: ../vdms_panels/presets_manager.py:597 +#: ../vdms_panels/presets_manager.py:600 msgid "All presets have been exported successfully" msgstr "Tutti i preset sono stati esportati correttamente" -#: ../vdms_panels/presets_manager.py:608 +#: ../vdms_panels/presets_manager.py:611 msgid "Import a new preset" msgstr "Importa un nuovo preset" -#: ../vdms_panels/presets_manager.py:619 +#: ../vdms_panels/presets_manager.py:622 msgid "Error, invalid preset: \"{}\"" msgstr "Errore, preset non valido: \"{}\"" -#: ../vdms_panels/presets_manager.py:627 +#: ../vdms_panels/presets_manager.py:630 msgid "" "This preset already exists and is about to be updated. Don't worry, it will " "keep all your saved profiles.\n" @@ -3671,11 +3682,11 @@ msgstr "" "\n" "Vuoi continuare?" -#: ../vdms_panels/presets_manager.py:644 +#: ../vdms_panels/presets_manager.py:647 msgid "A new preset was successfully imported" msgstr "Un nuovo preset è stato importato con successo" -#: ../vdms_panels/presets_manager.py:654 +#: ../vdms_panels/presets_manager.py:665 msgid "" "This will update the presets database. Don't worry, it will keep all your " "saved profiles.\n" @@ -3687,15 +3698,15 @@ msgstr "" "\n" "Vuoi continuare?" -#: ../vdms_panels/presets_manager.py:661 +#: ../vdms_panels/presets_manager.py:672 msgid "Import a new presets folder" msgstr "Importa una nuova cartella dei preset" -#: ../vdms_panels/presets_manager.py:680 +#: ../vdms_panels/presets_manager.py:704 msgid "The presets database has been successfully updated" msgstr "Il database dei preset è stato aggiornato con successo" -#: ../vdms_panels/presets_manager.py:690 +#: ../vdms_panels/presets_manager.py:715 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3707,44 +3718,45 @@ msgstr "" "\n" "Vuoi continuare?" -#: ../vdms_panels/presets_manager.py:694 ../vdms_panels/presets_manager.py:722 +#: ../vdms_panels/presets_manager.py:719 ../vdms_panels/presets_manager.py:747 msgid "Warning" msgstr "Avvertimento" -#: ../vdms_panels/presets_manager.py:705 -msgid "Sorry, this preset is not part of default Videomass presets." -msgstr "" -"Spiacente, questo preset non fa parte dei presets predefiniti di Videomass." - -#: ../vdms_panels/presets_manager.py:711 +#: ../vdms_panels/presets_manager.py:733 msgid "Successful recovery" msgstr "Ripristino riuscito" -#: ../vdms_panels/presets_manager.py:720 +#: ../vdms_panels/presets_manager.py:742 msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" "\n" +"In any case, to avoid data loss, the presets folder will be backed up in the " +"program's configuration folder.\n" +"\n" "Do you want to continue?" msgstr "" "Stai attento! Questa azione ripristinerà tutti i preset a quelli " "predefiniti. I tuoi profili potrebbero essere cancellati!\n" "\n" +"In ogni caso, per evitare perdite di dati, verrà effettuato il backup della " +"cartella dei preset nella cartella di configurazione del programma.\n" +"\n" "Vuoi continuare?" -#: ../vdms_panels/presets_manager.py:730 +#: ../vdms_panels/presets_manager.py:764 msgid "All default presets have been successfully recovered" msgstr "Tutti i preset predefiniti sono stati ripristinati con successo" -#: ../vdms_panels/presets_manager.py:750 +#: ../vdms_panels/presets_manager.py:784 msgid "Create a new profile on \"{}\" preset" msgstr "Crea un nuovo profilo sul preset \"{}\"" -#: ../vdms_panels/presets_manager.py:768 +#: ../vdms_panels/presets_manager.py:802 msgid "Edit profile of the \"{}\" preset" msgstr "Modifica il profilo sul preset \"{}\"" -#: ../vdms_panels/presets_manager.py:805 +#: ../vdms_panels/presets_manager.py:839 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." @@ -3752,11 +3764,11 @@ msgstr "" "Sei sicuro di voler eliminare il profilo selezionato? non sarà più possibile " "recuperarlo." -#: ../vdms_panels/presets_manager.py:825 +#: ../vdms_panels/presets_manager.py:859 msgid "First select a profile in the list" msgstr "Dovresti selezionare un profilo nella lista" -#: ../vdms_panels/presets_manager.py:833 +#: ../vdms_panels/presets_manager.py:867 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" @@ -3764,11 +3776,11 @@ msgstr "" "Il comando del profilo selezionato è stato cambiato manualmente.\n" "Vuoi applicarlo durante il processo di conversione?" -#: ../vdms_panels/presets_manager.py:843 +#: ../vdms_panels/presets_manager.py:877 msgid "Don't show this dialog again" msgstr "Non mostrare ancora questo dialogo" -#: ../vdms_panels/presets_manager.py:940 +#: ../vdms_panels/presets_manager.py:974 msgid "" "Queued File\n" "Pass Encoding\n" @@ -4637,6 +4649,26 @@ msgstr "" "i sottotitoli\n" "tranne quelli in italiano, olandese e francese." +#~ msgid "" +#~ "Invalid preset loaded.\n" +#~ "It is recommended to remove it or rewrite it into a JSON format " +#~ "compatible with Videomass.\n" +#~ "\n" +#~ "Possible solution: open the Presets Manager panel, go to the presets " +#~ "column and try to click the \"Restore\" button" +#~ msgstr "" +#~ "Preset caricato non valido.\n" +#~ "Si consiglia di rimuoverlo o riscriverlo in un formato JSON compatibile " +#~ "con Videomass.\n" +#~ "\n" +#~ "Possibile soluzione: apri il pannello Gestionale Predefiniti, vai alla " +#~ "colonna Presets e prova a cliccare sul pulsante \"Restore\"" + +#~ msgid "Sorry, this preset is not part of default Videomass presets." +#~ msgstr "" +#~ "Spiacente, questo preset non fa parte dei presets predefiniti di " +#~ "Videomass." + #~ msgid "Refresh all log files" #~ msgstr "Aggiorna tutti i registri" diff --git a/videomass/locale/videomass.pot b/videomass/locale/videomass.pot index d1fcd7ab1..fec705562 100644 --- a/videomass/locale/videomass.pot +++ b/videomass/locale/videomass.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-16 18:06+0100\n" +"POT-Creation-Date: 2024-01-23 18:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -749,7 +749,7 @@ msgstr "" msgid "Profile Name" msgstr "" -#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:393 +#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:396 msgid "Description" msgstr "" @@ -1675,12 +1675,10 @@ msgstr "" #: ../vdms_io/presets_manager_prop.py:82 msgid "" -"Invalid preset loaded.\n" -"It is recommended to remove it or rewrite it into a JSON format compatible " -"with Videomass.\n" +"You are attempting to load a preset written with invalid JSON encoding.\n" "\n" -"Possible solution: open the Presets Manager panel, go to the presets column " -"and try to click the \"Restore\" button" +"You can try to restore it or import a correct one, otherwise it is " +"recommended to remove it." msgstr "" #: ../vdms_io/presets_manager_prop.py:93 @@ -1691,6 +1689,13 @@ msgid "" "and try to click the \"Restore all...\" button" msgstr "" +#: ../vdms_io/presets_manager_prop.py:125 +msgid "" +"Operation aborted due to possible JSON encoding/decoding error.\n" +"Fix any errors in the JSON code contained on the FILE before performing this " +"operation again." +msgstr "" + #: ../vdms_main/main_frame.py:193 ../vdms_main/main_frame.py:1372 #: ../vdms_main/main_frame.py:1402 ../vdms_ytdlp/main_ytdlp.py:99 #: ../vdms_ytdlp/main_ytdlp.py:148 ../vdms_ytdlp/main_ytdlp.py:593 @@ -1808,7 +1813,7 @@ msgstr "" msgid "Remove the selected files from the list" msgstr "" -#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:219 +#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:221 #: ../vdms_panels/video_to_sequence.py:169 ../vdms_ytdlp/main_ytdlp.py:301 msgid "Edit" msgstr "" @@ -2540,12 +2545,12 @@ msgstr "" msgid "Off" msgstr "" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:933 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:967 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:936 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:970 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "" @@ -2952,165 +2957,166 @@ msgstr "" msgid "...Interrupted" msgstr "" -#: ../vdms_panels/presets_manager.py:111 +#: ../vdms_panels/presets_manager.py:113 msgid "Presets" msgstr "" -#: ../vdms_panels/presets_manager.py:134 +#: ../vdms_panels/presets_manager.py:136 msgid "New" msgstr "" -#: ../vdms_panels/presets_manager.py:137 +#: ../vdms_panels/presets_manager.py:139 msgid "Remove" msgstr "" -#: ../vdms_panels/presets_manager.py:147 +#: ../vdms_panels/presets_manager.py:149 msgid "Export selected" msgstr "" -#: ../vdms_panels/presets_manager.py:150 +#: ../vdms_panels/presets_manager.py:152 msgid "Export all..." msgstr "" -#: ../vdms_panels/presets_manager.py:161 +#: ../vdms_panels/presets_manager.py:163 msgid "Import preset" msgstr "" -#: ../vdms_panels/presets_manager.py:164 +#: ../vdms_panels/presets_manager.py:166 msgid "Import group" msgstr "" -#: ../vdms_panels/presets_manager.py:175 +#: ../vdms_panels/presets_manager.py:177 msgid "Restore" msgstr "" -#: ../vdms_panels/presets_manager.py:179 +#: ../vdms_panels/presets_manager.py:181 msgid "Restore all..." msgstr "" -#: ../vdms_panels/presets_manager.py:191 +#: ../vdms_panels/presets_manager.py:193 msgid "Reload" msgstr "" -#: ../vdms_panels/presets_manager.py:205 +#: ../vdms_panels/presets_manager.py:207 msgid "Profiles" msgstr "" -#: ../vdms_panels/presets_manager.py:210 +#: ../vdms_panels/presets_manager.py:212 msgid "Add" msgstr "" -#: ../vdms_panels/presets_manager.py:214 +#: ../vdms_panels/presets_manager.py:216 msgid "Delete" msgstr "" -#: ../vdms_panels/presets_manager.py:224 +#: ../vdms_panels/presets_manager.py:226 msgid "Duplicate" msgstr "" -#: ../vdms_panels/presets_manager.py:233 +#: ../vdms_panels/presets_manager.py:235 msgid "One-Pass" msgstr "" -#: ../vdms_panels/presets_manager.py:243 +#: ../vdms_panels/presets_manager.py:245 msgid "Two-Pass" msgstr "" -#: ../vdms_panels/presets_manager.py:263 +#: ../vdms_panels/presets_manager.py:265 msgid "Choose a preset and view its profiles" msgstr "" -#: ../vdms_panels/presets_manager.py:264 +#: ../vdms_panels/presets_manager.py:266 msgid "Create a new profile and save it in the selected preset" msgstr "" -#: ../vdms_panels/presets_manager.py:266 +#: ../vdms_panels/presets_manager.py:268 msgid "Delete the selected profile" msgstr "" -#: ../vdms_panels/presets_manager.py:267 +#: ../vdms_panels/presets_manager.py:269 msgid "Edit the selected profile" msgstr "" -#: ../vdms_panels/presets_manager.py:268 +#: ../vdms_panels/presets_manager.py:270 msgid "Create a new preset" msgstr "" -#: ../vdms_panels/presets_manager.py:270 +#: ../vdms_panels/presets_manager.py:272 msgid "Remove the selected preset from the Presets Manager" msgstr "" -#: ../vdms_panels/presets_manager.py:272 +#: ../vdms_panels/presets_manager.py:274 msgid "Export selected preset as copy" msgstr "" -#: ../vdms_panels/presets_manager.py:274 +#: ../vdms_panels/presets_manager.py:276 msgid "Export entire presets folder as copy" msgstr "" -#: ../vdms_panels/presets_manager.py:276 +#: ../vdms_panels/presets_manager.py:278 msgid "Import a new preset or update an existing one" msgstr "" -#: ../vdms_panels/presets_manager.py:278 +#: ../vdms_panels/presets_manager.py:280 msgid "Import a group of presets from a folder and update existing ones" msgstr "" -#: ../vdms_panels/presets_manager.py:281 +#: ../vdms_panels/presets_manager.py:283 msgid "Replace the selected preset with the Videomass default one" msgstr "" -#: ../vdms_panels/presets_manager.py:283 +#: ../vdms_panels/presets_manager.py:285 msgid "Retrieve all Videomass default presets" msgstr "" -#: ../vdms_panels/presets_manager.py:285 +#: ../vdms_panels/presets_manager.py:287 msgid "Update the presets list" msgstr "" -#: ../vdms_panels/presets_manager.py:286 +#: ../vdms_panels/presets_manager.py:288 msgid "First pass of the selected profile" msgstr "" -#: ../vdms_panels/presets_manager.py:288 +#: ../vdms_panels/presets_manager.py:290 msgid "Second pass of the selected profile" msgstr "" -#: ../vdms_panels/presets_manager.py:340 +#: ../vdms_panels/presets_manager.py:341 #, python-brace-format msgid "" -"Outdated preset version found: v{1}.\n" +"Outdated presets version found: v{1}\n" "A new version is available: v{0}\n" "\n" -"It seems that the local preset database in your configuration folder is " -"outdated. If you choose to update the preset database, the outdated version " -"will be backed up in the same folder as the new incoming presets:\n" -"\"{2}\"\n" +"This update provides new presets included on the latest versions of " +"Videomass.\n" +"\n" +"To avoid data loss and allow for possible recovery, the outdated presets " +"folder will be backed up in the program configuration folder: \"{2}\"\n" "\n" -"Do you want to update the preset database now?" +"Do you want to perform this update now?" msgstr "" -#: ../vdms_panels/presets_manager.py:349 ../vdms_panels/presets_manager.py:527 -#: ../vdms_panels/presets_manager.py:567 ../vdms_panels/presets_manager.py:631 -#: ../vdms_panels/presets_manager.py:657 ../vdms_panels/presets_manager.py:807 -#: ../vdms_panels/presets_manager.py:838 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 +#: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:841 +#: ../vdms_panels/presets_manager.py:872 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "" -#: ../vdms_panels/presets_manager.py:392 +#: ../vdms_panels/presets_manager.py:395 msgid "Name" msgstr "" -#: ../vdms_panels/presets_manager.py:394 +#: ../vdms_panels/presets_manager.py:397 msgid "Output Format" msgstr "" -#: ../vdms_panels/presets_manager.py:395 +#: ../vdms_panels/presets_manager.py:398 msgid "Supported Format List" msgstr "" -#: ../vdms_panels/presets_manager.py:413 ../vdms_panels/presets_manager.py:472 +#: ../vdms_panels/presets_manager.py:416 ../vdms_panels/presets_manager.py:475 msgid "" "ERROR: Typing error on JSON keys: {}\n" "\n" @@ -3118,69 +3124,69 @@ msgid "" "key malformed ?" msgstr "" -#: ../vdms_panels/presets_manager.py:493 +#: ../vdms_panels/presets_manager.py:496 msgid "Enter name for new preset" msgstr "" -#: ../vdms_panels/presets_manager.py:506 +#: ../vdms_panels/presets_manager.py:509 msgid "Cannot save current data in file '{}'." msgstr "" -#: ../vdms_panels/presets_manager.py:510 +#: ../vdms_panels/presets_manager.py:513 msgid "" "'Successful!\n" "\n" "A new empty preset has been created." msgstr "" -#: ../vdms_panels/presets_manager.py:524 +#: ../vdms_panels/presets_manager.py:527 msgid "" "Are you sure you want to remove \"{}\" preset?\n" "\n" -" It will be moved to the \"Removals\" subfolder of the presets folder." +" It will be moved to the \"Removals\" subfolder inside the presets folder." msgstr "" -#: ../vdms_panels/presets_manager.py:535 +#: ../vdms_panels/presets_manager.py:538 msgid "" "{}\n" "\n" "Sorry, removal failed, cannot continue.." msgstr "" -#: ../vdms_panels/presets_manager.py:545 +#: ../vdms_panels/presets_manager.py:548 #, python-brace-format msgid "The preset \"{0}\" was successfully removed" msgstr "" -#: ../vdms_panels/presets_manager.py:560 +#: ../vdms_panels/presets_manager.py:563 msgid "Choose a folder to save the selected preset" msgstr "" -#: ../vdms_panels/presets_manager.py:565 +#: ../vdms_panels/presets_manager.py:568 msgid "A file with this name already exists, do you want to overwrite it?" msgstr "" -#: ../vdms_panels/presets_manager.py:578 +#: ../vdms_panels/presets_manager.py:581 msgid "The preset was exported successfully" msgstr "" -#: ../vdms_panels/presets_manager.py:588 +#: ../vdms_panels/presets_manager.py:591 msgid "Choose a folder to export all presets" msgstr "" -#: ../vdms_panels/presets_manager.py:597 +#: ../vdms_panels/presets_manager.py:600 msgid "All presets have been exported successfully" msgstr "" -#: ../vdms_panels/presets_manager.py:608 +#: ../vdms_panels/presets_manager.py:611 msgid "Import a new preset" msgstr "" -#: ../vdms_panels/presets_manager.py:619 +#: ../vdms_panels/presets_manager.py:622 msgid "Error, invalid preset: \"{}\"" msgstr "" -#: ../vdms_panels/presets_manager.py:627 +#: ../vdms_panels/presets_manager.py:630 msgid "" "This preset already exists and is about to be updated. Don't worry, it will " "keep all your saved profiles.\n" @@ -3188,11 +3194,11 @@ msgid "" "Do you want to continue?" msgstr "" -#: ../vdms_panels/presets_manager.py:644 +#: ../vdms_panels/presets_manager.py:647 msgid "A new preset was successfully imported" msgstr "" -#: ../vdms_panels/presets_manager.py:654 +#: ../vdms_panels/presets_manager.py:665 msgid "" "This will update the presets database. Don't worry, it will keep all your " "saved profiles.\n" @@ -3200,15 +3206,15 @@ msgid "" "Do you want to continue?" msgstr "" -#: ../vdms_panels/presets_manager.py:661 +#: ../vdms_panels/presets_manager.py:672 msgid "Import a new presets folder" msgstr "" -#: ../vdms_panels/presets_manager.py:680 +#: ../vdms_panels/presets_manager.py:704 msgid "The presets database has been successfully updated" msgstr "" -#: ../vdms_panels/presets_manager.py:690 +#: ../vdms_panels/presets_manager.py:715 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3216,59 +3222,58 @@ msgid "" "Do you want to continue?" msgstr "" -#: ../vdms_panels/presets_manager.py:694 ../vdms_panels/presets_manager.py:722 +#: ../vdms_panels/presets_manager.py:719 ../vdms_panels/presets_manager.py:747 msgid "Warning" msgstr "" -#: ../vdms_panels/presets_manager.py:705 -msgid "Sorry, this preset is not part of default Videomass presets." -msgstr "" - -#: ../vdms_panels/presets_manager.py:711 +#: ../vdms_panels/presets_manager.py:733 msgid "Successful recovery" msgstr "" -#: ../vdms_panels/presets_manager.py:720 +#: ../vdms_panels/presets_manager.py:742 msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" "\n" +"In any case, to avoid data loss, the presets folder will be backed up in the " +"program's configuration folder.\n" +"\n" "Do you want to continue?" msgstr "" -#: ../vdms_panels/presets_manager.py:730 +#: ../vdms_panels/presets_manager.py:764 msgid "All default presets have been successfully recovered" msgstr "" -#: ../vdms_panels/presets_manager.py:750 +#: ../vdms_panels/presets_manager.py:784 msgid "Create a new profile on \"{}\" preset" msgstr "" -#: ../vdms_panels/presets_manager.py:768 +#: ../vdms_panels/presets_manager.py:802 msgid "Edit profile of the \"{}\" preset" msgstr "" -#: ../vdms_panels/presets_manager.py:805 +#: ../vdms_panels/presets_manager.py:839 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." msgstr "" -#: ../vdms_panels/presets_manager.py:825 +#: ../vdms_panels/presets_manager.py:859 msgid "First select a profile in the list" msgstr "" -#: ../vdms_panels/presets_manager.py:833 +#: ../vdms_panels/presets_manager.py:867 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" msgstr "" -#: ../vdms_panels/presets_manager.py:843 +#: ../vdms_panels/presets_manager.py:877 msgid "Don't show this dialog again" msgstr "" -#: ../vdms_panels/presets_manager.py:940 +#: ../vdms_panels/presets_manager.py:974 msgid "" "Queued File\n" "Pass Encoding\n" diff --git a/videomass/vdms_panels/presets_manager.py b/videomass/vdms_panels/presets_manager.py index ad9b9156c..2cecec3c0 100644 --- a/videomass/vdms_panels/presets_manager.py +++ b/videomass/vdms_panels/presets_manager.py @@ -696,10 +696,11 @@ def preset_import_all(self, event): wx.MessageBox(f"{err}", "Videomass", wx.ICON_ERROR, self) return err # copies non-existent ones to the destination folder - err = copy_on('prst', source, self.user_prst, overw=False) - if err: - wx.MessageBox(f"{err}", "Videomass", wx.ICON_ERROR, self) - return err + if event: # only `Import Group` event + err = copy_on('prst', source, self.user_prst, overw=False) + if err: + wx.MessageBox(f"{err}", "Videomass", wx.ICON_ERROR, self) + return err wx.MessageBox(_("The presets database has been successfully " "updated"), "Videomass", wx.OK, self) diff --git a/videomass/vdms_utils/utils.py b/videomass/vdms_utils/utils.py index b466bbc00..a01ea15eb 100644 --- a/videomass/vdms_utils/utils.py +++ b/videomass/vdms_utils/utils.py @@ -285,90 +285,95 @@ def milliseconds2clocksec(milliseconds): # ------------------------------------------------------------------------ -def copy_missing_data(src, dest): +def copy_missing_data(srcd, destd): """ Copy missing files and directories to a given destination path using the same names as the source path. """ - srclist = os.listdir(src) - destlist = os.listdir(dest) + srclist = os.listdir(srcd) + destlist = os.listdir(destd) for f in srclist: if f not in destlist: - if os.path.isfile(os.path.join(src, f)): - copy_restore(os.path.join(src, f), os.path.join(dest, f)) - elif os.path.isdir(os.path.join(src, f)): - copydir_recursively(os.path.join(src, f), dest) + if os.path.isfile(os.path.join(srcd, f)): + copy_restore(os.path.join(srcd, f), os.path.join(destd, f)) + elif os.path.isdir(os.path.join(srcd, f)): + copydir_recursively(os.path.join(srcd, f), destd) # ------------------------------------------------------------------------ -def copy_restore(src, dest): +def copy_restore(srcfile, destfile): """ Copy the contents (no metadata) of the file named - src to a file named dst. Please visit doc webpage at + srcfile to a file named destfile. Please visit doc webpage at """ try: - shutil.copyfile(str(src), str(dest)) + shutil.copyfile(str(srcfile), str(destfile)) except FileNotFoundError as err: - # file src not exists + # file srcfile not exists return str(err) except shutil.SameFileError as err: - # src and dest are the same file and same dir. + # srcfile and destfile are the same file and same dir. return str(err) except OSError as err: - # The dest location must be writable + # The destfile location must be writable return str(err) return None # ------------------------------------------------------------------# -def copydir_recursively(source, destination, extraname=None): +def copydir_recursively(srcdir, destdir, extraname=None): """ - recursively copies an entire directory tree rooted at source. - If you do not provide the extraname argument, the destination - will have the same name as the source, otherwise extraname is - assumed as the final name. + recursively copies an entire directory tree rooted + at `srcdir`. If you do not provide the `extraname` + argument, the destination will have the same name as + the file in srcdir, otherwise `extraname` is assumed + as the final name. """ if extraname: - dest = os.path.join(destination, extraname) + dest = os.path.join(destdir, extraname) else: - dest = os.path.join(destination, os.path.basename(source)) + dest = os.path.join(destdir, os.path.basename(srcdir)) try: - shutil.copytree(str(source), str(dest)) + shutil.copytree(str(srcdir), str(dest)) except FileExistsError as err: # dest dir already exists return err - except FileNotFoundError as err: # source dir not exists + except FileNotFoundError as err: # srcdir not exists return err return None # ------------------------------------------------------------------# -def copy_on(ext, source, destination, overw=True): +def copy_on(ext, sourcedir, destdir, overw=True): """ - Given a source (dirname), use glob for a given file extension (ext) - and iterate to move files to another directory (destination). - Returns None on success, otherwise returns the error. + This function copy file based on given extension (`ext`). + It use `glob` module to finds in the `sourcedir` pathname + all the files matching a specified `ext`. + If default "overw" argument is `False`, it does not + overwrite existing file names in the destination path. + + Returns None on success, returns the error otherwise. ARGUMENTS: ext: files extension without dot - source: path to the source directory - destination: path to the destination directory - overw: if `True`, overwrite file destination + sourcedir: path to the source directory + destdir: path to the destination directory + overw: `True`, overwrite file destination """ - destdir = os.listdir(destination) - files = glob.glob(f"{source}/*.{ext}") + destpath = os.listdir(destdir) + files = glob.glob(f"{sourcedir}/*.{ext}") if not files: - return f'Error: No such file with ".{ext}" format found' + return f'ERROR: No files found in this format: ".{ext}"' for fln in files: if not overw: - if os.path.basename(fln) in destdir: + if os.path.basename(fln) in destpath: continue try: - shutil.copy(fln, f'{destination}') + shutil.copy(fln, f'{destdir}') except IOError as error: # problems with permissions return error From 4f32985537aa87ed1d10fb19390dc68a61e79a3d Mon Sep 17 00:00:00 2001 From: Gianluca Pernigotto Date: Wed, 24 Jan 2024 09:27:21 +0100 Subject: [PATCH 5/6] release c1 --- CHANGELOG | 8 ++++---- debian/changelog | 8 ++++---- videomass/vdms_panels/presets_manager.py | 8 ++++---- videomass/vdms_sys/msg_info.py | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b06fe2e2a..87d3a00ec 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,7 +7,7 @@ License: GPL3 Change Log: +------------------------------------+ -Mon, 22 Jan 2024 V.5.0.4 +Wed, 24 Jan 2024 V.5.0.4 * [Preset Manager] Fixed a serious issue during the automatic update task to the new version of local presets. This behavior could have been harmful @@ -21,9 +21,9 @@ Mon, 22 Jan 2024 V.5.0.4 incorrectly encoded json code during the preset update task. * [A/V Conversions) Improved audio dialog settings (Audio Properties). * Updated Videomass presets to v0.19 . - * [Preset Manager] Full preset restore operations (including import by - Groups) now include a backup of the preset source directory in the - program configuration directory. + * [Preset Manager] The automated preset update operation, including "import + by Groups" feature, now always includes a backup of the preset directory + in the program configuration directory. +------------------------------------+ Mon, 15 Jan 2024 V.5.0.3 diff --git a/debian/changelog b/debian/changelog index f66591ce4..a17c6d421 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,11 +12,11 @@ videomass (5.0.4-1) UNRELEASED; urgency=high the preset update task. * [A/V Conversions) Improved audio dialog settings (Audio Properties). * Updated Videomass presets to v0.19 . - * [Preset Manager] Full preset restore operations (including import by - Groups) now include a backup of the preset source directory in the - program configuration directory. + * [Preset Manager] The automated preset update operation, including "import + by Groups" feature, now always includes a backup of the preset directory + in the program configuration directory. - -- Gianluca Pernigotto Mon, 22 Jan 2024 21:00:00 +0200 + -- Gianluca Pernigotto Wed, 24 Jan 2024 08:00:00 +0200 videomass (5.0.3-1) UNRELEASED; urgency=medium diff --git a/videomass/vdms_panels/presets_manager.py b/videomass/vdms_panels/presets_manager.py index 2cecec3c0..c404c43cb 100644 --- a/videomass/vdms_panels/presets_manager.py +++ b/videomass/vdms_panels/presets_manager.py @@ -356,10 +356,10 @@ def update_preset_state(self): if err: return - copyvers = copy_restore(srctext, conftext) - if copyvers: - wx.MessageBox(f'{copyvers}', "Videomass", wx.ICON_ERROR, self) - return + # update version.txt file to latest version + with open(conftext, "w", encoding='utf8') as updatevers: + updatevers.write(f'{srcversion}\n') + # copies missing file/dir to the destination folder copy_missing_data(self.src_prst, self.user_prst) # -------------------------------------------------------------------- diff --git a/videomass/vdms_sys/msg_info.py b/videomass/vdms_sys/msg_info.py index 6001fe3fc..be6cb0026 100644 --- a/videomass/vdms_sys/msg_info.py +++ b/videomass/vdms_sys/msg_info.py @@ -37,7 +37,7 @@ def current_release(): release_name = 'Videomass' program_name = 'videomass' version = '5.0.4' - release = 'Unreleased' + release = 'released' copyr = '2013-2024' website = 'http://jeanslack.github.io/Videomass/' author = ('Gianluca Pernigotto', '(aka jeanslack)') From 0bf2a74446fb7ea813c9d8289f41ba1b69d5782c Mon Sep 17 00:00:00 2001 From: Gianluca Pernigotto Date: Wed, 24 Jan 2024 16:22:28 +0100 Subject: [PATCH 6/6] release c2 + update all *.po files from pot file --- TODO | 5 + .../locale/en_US/LC_MESSAGES/videomass.mo | Bin 335 -> 335 bytes .../locale/en_US/LC_MESSAGES/videomass.po | 199 ++++++------- .../locale/es_CU/LC_MESSAGES/videomass.mo | Bin 99044 -> 97228 bytes .../locale/es_CU/LC_MESSAGES/videomass.po | 242 +++++++++------- .../locale/es_ES/LC_MESSAGES/videomass.mo | Bin 99044 -> 97228 bytes .../locale/es_ES/LC_MESSAGES/videomass.po | 242 +++++++++------- .../locale/es_MX/LC_MESSAGES/videomass.mo | Bin 99044 -> 97228 bytes .../locale/es_MX/LC_MESSAGES/videomass.po | 242 +++++++++------- .../locale/fr_FR/LC_MESSAGES/videomass.mo | Bin 103199 -> 101209 bytes .../locale/fr_FR/LC_MESSAGES/videomass.po | 245 +++++++++------- .../locale/it_IT/LC_MESSAGES/videomass.mo | Bin 101387 -> 101387 bytes .../locale/it_IT/LC_MESSAGES/videomass.po | 38 +-- .../locale/nl_NL/LC_MESSAGES/videomass.mo | Bin 57580 -> 56349 bytes .../locale/nl_NL/LC_MESSAGES/videomass.po | 238 +++++++++------- .../locale/pt_BR/LC_MESSAGES/videomass.mo | Bin 51534 -> 50324 bytes .../locale/pt_BR/LC_MESSAGES/videomass.po | 242 +++++++++------- .../locale/ru_RU/LC_MESSAGES/videomass.mo | Bin 133742 -> 131184 bytes .../locale/ru_RU/LC_MESSAGES/videomass.po | 264 ++++++++++-------- videomass/locale/videomass.pot | 36 +-- .../locale/zh_CN/LC_MESSAGES/videomass.mo | Bin 29325 -> 28741 bytes .../locale/zh_CN/LC_MESSAGES/videomass.po | 226 ++++++++------- 22 files changed, 1248 insertions(+), 971 deletions(-) diff --git a/TODO b/TODO index 0d3d0e97d..c382c5ad7 100644 --- a/TODO +++ b/TODO @@ -14,6 +14,10 @@ URGENCY: high while longer because fps_mode does not work with old versions of FFmpeg. So, vsync's warning is just a warning and still works with the new versions. +- A new implementation is needed for embedding subtitles. The infrastructure + could be organized on a new A/V Conversions tab or as an independent tool + that can be called up from the main menu (Home). + --------------- URGENCY: medium ---------------- @@ -35,3 +39,4 @@ URGENCY: low (New implementations) ------------- - [PRESETS MANAGER] The profile requires additional input (-i FILE -i FILE ...) - @johannesdedoper would like a function to save some UI settings, see #113 . + diff --git a/videomass/locale/en_US/LC_MESSAGES/videomass.mo b/videomass/locale/en_US/LC_MESSAGES/videomass.mo index ee71084bf0e8486b7d041d7acce6a3fb6e6e18d8..aa9fc328559468e3e102b478ea4c091ce8ffb14c 100644 GIT binary patch delta 31 ncmX@lbe?HKG^5GH7+nDqT?0d1BNGKfGb=-5Z3DxJGq(W%j;09H delta 31 ncmX@lbe?HKG^6pv7+nElT?2DnLkk5%11n==Z3Cl;Gq(W%j@by; diff --git a/videomass/locale/en_US/LC_MESSAGES/videomass.po b/videomass/locale/en_US/LC_MESSAGES/videomass.po index 51c5ccf5e..eafcc4317 100644 --- a/videomass/locale/en_US/LC_MESSAGES/videomass.po +++ b/videomass/locale/en_US/LC_MESSAGES/videomass.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Videomass 5.0.3\n" +"Project-Id-Version: Videomass 5.0.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-18 10:29+0200\n" -"PO-Revision-Date: 2023-07-18 10:33+0200\n" +"POT-Creation-Date: 2024-01-23 18:04+0100\n" +"PO-Revision-Date: 2024-01-24 16:13+0100\n" "Last-Translator: \n" "Language-Team: English (US)\n" "Language: en_US\n" @@ -749,7 +749,7 @@ msgstr "" msgid "Profile Name" msgstr "" -#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:393 +#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:396 msgid "Description" msgstr "" @@ -1675,12 +1675,10 @@ msgstr "" #: ../vdms_io/presets_manager_prop.py:82 msgid "" -"Invalid preset loaded.\n" -"It is recommended to remove it or rewrite it into a JSON format compatible " -"with Videomass.\n" +"You are attempting to load a preset written with invalid JSON encoding.\n" "\n" -"Possible solution: open the Presets Manager panel, go to the presets column " -"and try to click the \"Restore\" button" +"You can try to restore it or import a correct one, otherwise it is " +"recommended to remove it." msgstr "" #: ../vdms_io/presets_manager_prop.py:93 @@ -1691,6 +1689,13 @@ msgid "" "and try to click the \"Restore all...\" button" msgstr "" +#: ../vdms_io/presets_manager_prop.py:125 +msgid "" +"Operation aborted due to possible JSON encoding/decoding error.\n" +"Fix any errors in the JSON code contained on the FILE before performing this " +"operation again." +msgstr "" + #: ../vdms_main/main_frame.py:193 ../vdms_main/main_frame.py:1372 #: ../vdms_main/main_frame.py:1402 ../vdms_ytdlp/main_ytdlp.py:99 #: ../vdms_ytdlp/main_ytdlp.py:148 ../vdms_ytdlp/main_ytdlp.py:593 @@ -1808,7 +1813,7 @@ msgstr "" msgid "Remove the selected files from the list" msgstr "" -#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:219 +#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:221 #: ../vdms_panels/video_to_sequence.py:169 ../vdms_ytdlp/main_ytdlp.py:301 msgid "Edit" msgstr "" @@ -2223,6 +2228,10 @@ msgstr "" msgid "Videomass - FFmpeg message monitor" msgstr "" +#: ../vdms_main/main_frame.py:1638 +msgid "yt-dlp is disabled. Check your preferences." +msgstr "" + #: ../vdms_panels/av_conversions.py:221 msgid "Media:" msgstr "" @@ -2536,12 +2545,12 @@ msgstr "" msgid "Off" msgstr "" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:933 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:967 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:936 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:970 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "" @@ -2692,10 +2701,6 @@ msgstr "" msgid "Extract images (frames) from your movies in JPG, PNG, BMP, GIF formats." msgstr "" -#: ../vdms_panels/choose_topic.py:223 -msgid "yt-dlp is disabled. Check your preferences." -msgstr "" - #: ../vdms_panels/concatenate.py:45 msgid "At least two files are required to perform concatenation." msgstr "" @@ -2952,165 +2957,166 @@ msgstr "" msgid "...Interrupted" msgstr "" -#: ../vdms_panels/presets_manager.py:111 +#: ../vdms_panels/presets_manager.py:113 msgid "Presets" msgstr "" -#: ../vdms_panels/presets_manager.py:134 +#: ../vdms_panels/presets_manager.py:136 msgid "New" msgstr "" -#: ../vdms_panels/presets_manager.py:137 +#: ../vdms_panels/presets_manager.py:139 msgid "Remove" msgstr "" -#: ../vdms_panels/presets_manager.py:147 +#: ../vdms_panels/presets_manager.py:149 msgid "Export selected" msgstr "" -#: ../vdms_panels/presets_manager.py:150 +#: ../vdms_panels/presets_manager.py:152 msgid "Export all..." msgstr "" -#: ../vdms_panels/presets_manager.py:161 +#: ../vdms_panels/presets_manager.py:163 msgid "Import preset" msgstr "" -#: ../vdms_panels/presets_manager.py:164 +#: ../vdms_panels/presets_manager.py:166 msgid "Import group" msgstr "" -#: ../vdms_panels/presets_manager.py:175 +#: ../vdms_panels/presets_manager.py:177 msgid "Restore" msgstr "" -#: ../vdms_panels/presets_manager.py:179 +#: ../vdms_panels/presets_manager.py:181 msgid "Restore all..." msgstr "" -#: ../vdms_panels/presets_manager.py:191 +#: ../vdms_panels/presets_manager.py:193 msgid "Reload" msgstr "" -#: ../vdms_panels/presets_manager.py:205 +#: ../vdms_panels/presets_manager.py:207 msgid "Profiles" msgstr "" -#: ../vdms_panels/presets_manager.py:210 +#: ../vdms_panels/presets_manager.py:212 msgid "Add" msgstr "" -#: ../vdms_panels/presets_manager.py:214 +#: ../vdms_panels/presets_manager.py:216 msgid "Delete" msgstr "" -#: ../vdms_panels/presets_manager.py:224 +#: ../vdms_panels/presets_manager.py:226 msgid "Duplicate" msgstr "" -#: ../vdms_panels/presets_manager.py:233 +#: ../vdms_panels/presets_manager.py:235 msgid "One-Pass" msgstr "" -#: ../vdms_panels/presets_manager.py:243 +#: ../vdms_panels/presets_manager.py:245 msgid "Two-Pass" msgstr "" -#: ../vdms_panels/presets_manager.py:263 +#: ../vdms_panels/presets_manager.py:265 msgid "Choose a preset and view its profiles" msgstr "" -#: ../vdms_panels/presets_manager.py:264 +#: ../vdms_panels/presets_manager.py:266 msgid "Create a new profile and save it in the selected preset" msgstr "" -#: ../vdms_panels/presets_manager.py:266 +#: ../vdms_panels/presets_manager.py:268 msgid "Delete the selected profile" msgstr "" -#: ../vdms_panels/presets_manager.py:267 +#: ../vdms_panels/presets_manager.py:269 msgid "Edit the selected profile" msgstr "" -#: ../vdms_panels/presets_manager.py:268 +#: ../vdms_panels/presets_manager.py:270 msgid "Create a new preset" msgstr "" -#: ../vdms_panels/presets_manager.py:270 +#: ../vdms_panels/presets_manager.py:272 msgid "Remove the selected preset from the Presets Manager" msgstr "" -#: ../vdms_panels/presets_manager.py:272 +#: ../vdms_panels/presets_manager.py:274 msgid "Export selected preset as copy" msgstr "" -#: ../vdms_panels/presets_manager.py:274 +#: ../vdms_panels/presets_manager.py:276 msgid "Export entire presets folder as copy" msgstr "" -#: ../vdms_panels/presets_manager.py:276 +#: ../vdms_panels/presets_manager.py:278 msgid "Import a new preset or update an existing one" msgstr "" -#: ../vdms_panels/presets_manager.py:278 +#: ../vdms_panels/presets_manager.py:280 msgid "Import a group of presets from a folder and update existing ones" msgstr "" -#: ../vdms_panels/presets_manager.py:281 +#: ../vdms_panels/presets_manager.py:283 msgid "Replace the selected preset with the Videomass default one" msgstr "" -#: ../vdms_panels/presets_manager.py:283 +#: ../vdms_panels/presets_manager.py:285 msgid "Retrieve all Videomass default presets" msgstr "" -#: ../vdms_panels/presets_manager.py:285 +#: ../vdms_panels/presets_manager.py:287 msgid "Update the presets list" msgstr "" -#: ../vdms_panels/presets_manager.py:286 +#: ../vdms_panels/presets_manager.py:288 msgid "First pass of the selected profile" msgstr "" -#: ../vdms_panels/presets_manager.py:288 +#: ../vdms_panels/presets_manager.py:290 msgid "Second pass of the selected profile" msgstr "" -#: ../vdms_panels/presets_manager.py:340 +#: ../vdms_panels/presets_manager.py:341 #, python-brace-format msgid "" -"Outdated preset version found: v{1}.\n" +"Outdated presets version found: v{1}\n" "A new version is available: v{0}\n" "\n" -"It seems that the local preset database in your configuration folder is " -"outdated. If you choose to update the preset database, the outdated version " -"will be backed up in the same folder as the new incoming presets:\n" -"\"{2}\"\n" +"This update provides new presets included on the latest versions of " +"Videomass.\n" "\n" -"Do you want to update the preset database now?" +"To avoid data loss and allow for possible recovery, the outdated presets " +"folder will be backed up in the program configuration folder: \"{2}\"\n" +"\n" +"Do you want to perform this update now?" msgstr "" -#: ../vdms_panels/presets_manager.py:349 ../vdms_panels/presets_manager.py:527 -#: ../vdms_panels/presets_manager.py:567 ../vdms_panels/presets_manager.py:631 -#: ../vdms_panels/presets_manager.py:657 ../vdms_panels/presets_manager.py:807 -#: ../vdms_panels/presets_manager.py:838 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 +#: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:841 +#: ../vdms_panels/presets_manager.py:872 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "" -#: ../vdms_panels/presets_manager.py:392 +#: ../vdms_panels/presets_manager.py:395 msgid "Name" msgstr "" -#: ../vdms_panels/presets_manager.py:394 +#: ../vdms_panels/presets_manager.py:397 msgid "Output Format" msgstr "" -#: ../vdms_panels/presets_manager.py:395 +#: ../vdms_panels/presets_manager.py:398 msgid "Supported Format List" msgstr "" -#: ../vdms_panels/presets_manager.py:413 ../vdms_panels/presets_manager.py:472 +#: ../vdms_panels/presets_manager.py:416 ../vdms_panels/presets_manager.py:475 msgid "" "ERROR: Typing error on JSON keys: {}\n" "\n" @@ -3118,69 +3124,69 @@ msgid "" "key malformed ?" msgstr "" -#: ../vdms_panels/presets_manager.py:493 +#: ../vdms_panels/presets_manager.py:496 msgid "Enter name for new preset" msgstr "" -#: ../vdms_panels/presets_manager.py:506 +#: ../vdms_panels/presets_manager.py:509 msgid "Cannot save current data in file '{}'." msgstr "" -#: ../vdms_panels/presets_manager.py:510 +#: ../vdms_panels/presets_manager.py:513 msgid "" "'Successful!\n" "\n" "A new empty preset has been created." msgstr "" -#: ../vdms_panels/presets_manager.py:524 +#: ../vdms_panels/presets_manager.py:527 msgid "" "Are you sure you want to remove \"{}\" preset?\n" "\n" -" It will be moved to the \"Removals\" subfolder of the presets folder." +" It will be moved to the \"Removals\" subfolder inside the presets folder." msgstr "" -#: ../vdms_panels/presets_manager.py:535 +#: ../vdms_panels/presets_manager.py:538 msgid "" "{}\n" "\n" "Sorry, removal failed, cannot continue.." msgstr "" -#: ../vdms_panels/presets_manager.py:545 +#: ../vdms_panels/presets_manager.py:548 #, python-brace-format msgid "The preset \"{0}\" was successfully removed" msgstr "" -#: ../vdms_panels/presets_manager.py:560 +#: ../vdms_panels/presets_manager.py:563 msgid "Choose a folder to save the selected preset" msgstr "" -#: ../vdms_panels/presets_manager.py:565 +#: ../vdms_panels/presets_manager.py:568 msgid "A file with this name already exists, do you want to overwrite it?" msgstr "" -#: ../vdms_panels/presets_manager.py:578 +#: ../vdms_panels/presets_manager.py:581 msgid "The preset was exported successfully" msgstr "" -#: ../vdms_panels/presets_manager.py:588 +#: ../vdms_panels/presets_manager.py:591 msgid "Choose a folder to export all presets" msgstr "" -#: ../vdms_panels/presets_manager.py:597 +#: ../vdms_panels/presets_manager.py:600 msgid "All presets have been exported successfully" msgstr "" -#: ../vdms_panels/presets_manager.py:608 +#: ../vdms_panels/presets_manager.py:611 msgid "Import a new preset" msgstr "" -#: ../vdms_panels/presets_manager.py:619 +#: ../vdms_panels/presets_manager.py:622 msgid "Error, invalid preset: \"{}\"" msgstr "" -#: ../vdms_panels/presets_manager.py:627 +#: ../vdms_panels/presets_manager.py:630 msgid "" "This preset already exists and is about to be updated. Don't worry, it will " "keep all your saved profiles.\n" @@ -3188,11 +3194,11 @@ msgid "" "Do you want to continue?" msgstr "" -#: ../vdms_panels/presets_manager.py:644 +#: ../vdms_panels/presets_manager.py:647 msgid "A new preset was successfully imported" msgstr "" -#: ../vdms_panels/presets_manager.py:654 +#: ../vdms_panels/presets_manager.py:665 msgid "" "This will update the presets database. Don't worry, it will keep all your " "saved profiles.\n" @@ -3200,15 +3206,15 @@ msgid "" "Do you want to continue?" msgstr "" -#: ../vdms_panels/presets_manager.py:661 +#: ../vdms_panels/presets_manager.py:672 msgid "Import a new presets folder" msgstr "" -#: ../vdms_panels/presets_manager.py:680 +#: ../vdms_panels/presets_manager.py:704 msgid "The presets database has been successfully updated" msgstr "" -#: ../vdms_panels/presets_manager.py:690 +#: ../vdms_panels/presets_manager.py:715 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3216,59 +3222,58 @@ msgid "" "Do you want to continue?" msgstr "" -#: ../vdms_panels/presets_manager.py:694 ../vdms_panels/presets_manager.py:722 +#: ../vdms_panels/presets_manager.py:719 ../vdms_panels/presets_manager.py:747 msgid "Warning" msgstr "" -#: ../vdms_panels/presets_manager.py:705 -msgid "Sorry, this preset is not part of default Videomass presets." -msgstr "" - -#: ../vdms_panels/presets_manager.py:711 +#: ../vdms_panels/presets_manager.py:733 msgid "Successful recovery" msgstr "" -#: ../vdms_panels/presets_manager.py:720 +#: ../vdms_panels/presets_manager.py:742 msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" "\n" +"In any case, to avoid data loss, the presets folder will be backed up in the " +"program's configuration folder.\n" +"\n" "Do you want to continue?" msgstr "" -#: ../vdms_panels/presets_manager.py:730 +#: ../vdms_panels/presets_manager.py:764 msgid "All default presets have been successfully recovered" msgstr "" -#: ../vdms_panels/presets_manager.py:750 +#: ../vdms_panels/presets_manager.py:784 msgid "Create a new profile on \"{}\" preset" msgstr "" -#: ../vdms_panels/presets_manager.py:768 +#: ../vdms_panels/presets_manager.py:802 msgid "Edit profile of the \"{}\" preset" msgstr "" -#: ../vdms_panels/presets_manager.py:805 +#: ../vdms_panels/presets_manager.py:839 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." msgstr "" -#: ../vdms_panels/presets_manager.py:825 +#: ../vdms_panels/presets_manager.py:859 msgid "First select a profile in the list" msgstr "" -#: ../vdms_panels/presets_manager.py:833 +#: ../vdms_panels/presets_manager.py:867 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" msgstr "" -#: ../vdms_panels/presets_manager.py:843 +#: ../vdms_panels/presets_manager.py:877 msgid "Don't show this dialog again" msgstr "" -#: ../vdms_panels/presets_manager.py:940 +#: ../vdms_panels/presets_manager.py:974 msgid "" "Queued File\n" "Pass Encoding\n" diff --git a/videomass/locale/es_CU/LC_MESSAGES/videomass.mo b/videomass/locale/es_CU/LC_MESSAGES/videomass.mo index 00b04c0f8beb31d73c7697d3b6fe0c60efb34bcb..ff580a23915b8184da567752d7fec97ade752912 100644 GIT binary patch delta 17849 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 Kt2+lo#QYEJEDcfs diff --git a/videomass/locale/es_CU/LC_MESSAGES/videomass.po b/videomass/locale/es_CU/LC_MESSAGES/videomass.po index 366139762..27c4b7948 100644 --- a/videomass/locale/es_CU/LC_MESSAGES/videomass.po +++ b/videomass/locale/es_CU/LC_MESSAGES/videomass.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Videomass 5.0.3\n" +"Project-Id-Version: Videomass 5.0.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-16 18:06+0100\n" -"PO-Revision-Date: 2023-11-25 23:03+0100\n" +"POT-Creation-Date: 2024-01-23 18:04+0100\n" +"PO-Revision-Date: 2024-01-24 16:14+0100\n" "Last-Translator: José Alberto Valle Cid j.alberto.vc@gmail.com\n" "Language-Team: Spanish <>\n" "Language: es_CU\n" @@ -877,7 +877,7 @@ msgstr "Formato de Salida. Vacio, copia el formato y codec. No incluya el `.`" msgid "Profile Name" msgstr "Nombre de Perfil" -#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:393 +#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:396 msgid "Description" msgstr "Descripción" @@ -1918,19 +1918,11 @@ msgstr "" #: ../vdms_io/presets_manager_prop.py:82 msgid "" -"Invalid preset loaded.\n" -"It is recommended to remove it or rewrite it into a JSON format compatible " -"with Videomass.\n" +"You are attempting to load a preset written with invalid JSON encoding.\n" "\n" -"Possible solution: open the Presets Manager panel, go to the presets column " -"and try to click the \"Restore\" button" +"You can try to restore it or import a correct one, otherwise it is " +"recommended to remove it." msgstr "" -"Preset invalido.\n" -"Se recomienda eliminarlo o reescribirlo en un formato JSON compatible con " -"Videomass.\n" -"\n" -"Posible solución: abra el panel del Administrador de Presets, ir a la " -"columna presets y presionar el botón \"Restaurar\"" #: ../vdms_io/presets_manager_prop.py:93 msgid "" @@ -1944,6 +1936,13 @@ msgstr "" "Posible solución: abra el panel del Administrador de Presets, ir a la " "columna presets y presionar el botón \"Restaurar todo...\"" +#: ../vdms_io/presets_manager_prop.py:125 +msgid "" +"Operation aborted due to possible JSON encoding/decoding error.\n" +"Fix any errors in the JSON code contained on the FILE before performing this " +"operation again." +msgstr "" + #: ../vdms_main/main_frame.py:193 ../vdms_main/main_frame.py:1372 #: ../vdms_main/main_frame.py:1402 ../vdms_ytdlp/main_ytdlp.py:99 #: ../vdms_ytdlp/main_ytdlp.py:148 ../vdms_ytdlp/main_ytdlp.py:593 @@ -2064,7 +2063,7 @@ msgstr "Quitar archivo seleccionado\tDEL" msgid "Remove the selected files from the list" msgstr "Eliminar archivos seleccionados de la lista" -#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:219 +#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:221 #: ../vdms_panels/video_to_sequence.py:169 ../vdms_ytdlp/main_ytdlp.py:301 msgid "Edit" msgstr "Editar" @@ -2849,12 +2848,12 @@ msgstr "{} archivo en espera" msgid "Off" msgstr "Apagado" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:933 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:967 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "No fijado" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:936 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:970 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "inicio {} | duración {}" @@ -3356,143 +3355,155 @@ msgstr "Por favor espere.. Abortando" msgid "...Interrupted" msgstr "...Interrumpido" -#: ../vdms_panels/presets_manager.py:111 +#: ../vdms_panels/presets_manager.py:113 msgid "Presets" msgstr "Presets" -#: ../vdms_panels/presets_manager.py:134 +#: ../vdms_panels/presets_manager.py:136 msgid "New" msgstr "Nuevo" -#: ../vdms_panels/presets_manager.py:137 +#: ../vdms_panels/presets_manager.py:139 msgid "Remove" msgstr "Eliminar" -#: ../vdms_panels/presets_manager.py:147 +#: ../vdms_panels/presets_manager.py:149 msgid "Export selected" msgstr "Exportar seleccionado" -#: ../vdms_panels/presets_manager.py:150 +#: ../vdms_panels/presets_manager.py:152 msgid "Export all..." msgstr "Exportar todo..." -#: ../vdms_panels/presets_manager.py:161 +#: ../vdms_panels/presets_manager.py:163 msgid "Import preset" msgstr "Importar preset" -#: ../vdms_panels/presets_manager.py:164 +#: ../vdms_panels/presets_manager.py:166 msgid "Import group" msgstr "Importar grupo" -#: ../vdms_panels/presets_manager.py:175 +#: ../vdms_panels/presets_manager.py:177 msgid "Restore" msgstr "Restablecer" -#: ../vdms_panels/presets_manager.py:179 +#: ../vdms_panels/presets_manager.py:181 msgid "Restore all..." msgstr "Restablecer todo..." -#: ../vdms_panels/presets_manager.py:191 +#: ../vdms_panels/presets_manager.py:193 msgid "Reload" msgstr "Recargar" -#: ../vdms_panels/presets_manager.py:205 +#: ../vdms_panels/presets_manager.py:207 msgid "Profiles" msgstr "Perfiles" -#: ../vdms_panels/presets_manager.py:210 +#: ../vdms_panels/presets_manager.py:212 msgid "Add" msgstr "Añadir" -#: ../vdms_panels/presets_manager.py:214 +#: ../vdms_panels/presets_manager.py:216 msgid "Delete" msgstr "Borrar" -#: ../vdms_panels/presets_manager.py:224 +#: ../vdms_panels/presets_manager.py:226 msgid "Duplicate" msgstr "Duplicado" -#: ../vdms_panels/presets_manager.py:233 +#: ../vdms_panels/presets_manager.py:235 msgid "One-Pass" msgstr "Un-Paso" -#: ../vdms_panels/presets_manager.py:243 +#: ../vdms_panels/presets_manager.py:245 msgid "Two-Pass" msgstr "Dos-Pasos" -#: ../vdms_panels/presets_manager.py:263 +#: ../vdms_panels/presets_manager.py:265 msgid "Choose a preset and view its profiles" msgstr "Elija un preset y vea sus perfiles" -#: ../vdms_panels/presets_manager.py:264 +#: ../vdms_panels/presets_manager.py:266 msgid "Create a new profile and save it in the selected preset" msgstr "Crear un nuevo perfil y guardarlo en el preset seleccionado" -#: ../vdms_panels/presets_manager.py:266 +#: ../vdms_panels/presets_manager.py:268 msgid "Delete the selected profile" msgstr "Borrar perfil seleccionado" -#: ../vdms_panels/presets_manager.py:267 +#: ../vdms_panels/presets_manager.py:269 msgid "Edit the selected profile" msgstr "Editar perfil seleccionado" -#: ../vdms_panels/presets_manager.py:268 +#: ../vdms_panels/presets_manager.py:270 msgid "Create a new preset" msgstr "Crear nuevo preset" -#: ../vdms_panels/presets_manager.py:270 +#: ../vdms_panels/presets_manager.py:272 msgid "Remove the selected preset from the Presets Manager" msgstr "Eliminar preset seleccionado del Administrador de Presets" -#: ../vdms_panels/presets_manager.py:272 +#: ../vdms_panels/presets_manager.py:274 msgid "Export selected preset as copy" msgstr "Exportar preset seleccionado como copia" -#: ../vdms_panels/presets_manager.py:274 +#: ../vdms_panels/presets_manager.py:276 msgid "Export entire presets folder as copy" msgstr "Exportar toda la carpeta de presets como copia" -#: ../vdms_panels/presets_manager.py:276 +#: ../vdms_panels/presets_manager.py:278 msgid "Import a new preset or update an existing one" msgstr "Importar nuevo preset o actualizar uno existente" -#: ../vdms_panels/presets_manager.py:278 +#: ../vdms_panels/presets_manager.py:280 msgid "Import a group of presets from a folder and update existing ones" msgstr "" "Importar un grupo de presets desde una carpeta y actualizar los existentes" -#: ../vdms_panels/presets_manager.py:281 +#: ../vdms_panels/presets_manager.py:283 msgid "Replace the selected preset with the Videomass default one" msgstr "Reemplace preset seleccionado con el predeterminado de Videomass" -#: ../vdms_panels/presets_manager.py:283 +#: ../vdms_panels/presets_manager.py:285 msgid "Retrieve all Videomass default presets" msgstr "Recuperar todos los presets predeterminados de Videomass" -#: ../vdms_panels/presets_manager.py:285 +#: ../vdms_panels/presets_manager.py:287 msgid "Update the presets list" msgstr "Actualizar lista de presets" -#: ../vdms_panels/presets_manager.py:286 +#: ../vdms_panels/presets_manager.py:288 msgid "First pass of the selected profile" msgstr "Primer paso del perfil seleccionado" -#: ../vdms_panels/presets_manager.py:288 +#: ../vdms_panels/presets_manager.py:290 msgid "Second pass of the selected profile" msgstr "Segundo paso del perfil seleccionado" -#: ../vdms_panels/presets_manager.py:340 -#, python-brace-format -msgid "" -"Outdated preset version found: v{1}.\n" +#: ../vdms_panels/presets_manager.py:341 +#, fuzzy, python-brace-format +#| msgid "" +#| "Outdated preset version found: v{1}.\n" +#| "A new version is available: v{0}\n" +#| "\n" +#| "It seems that the local preset database in your configuration folder is " +#| "outdated. If you choose to update the preset database, the outdated " +#| "version will be backed up in the same folder as the new incoming " +#| "presets:\n" +#| "\"{2}\"\n" +#| "\n" +#| "Do you want to update the preset database now?" +msgid "" +"Outdated presets version found: v{1}\n" "A new version is available: v{0}\n" "\n" -"It seems that the local preset database in your configuration folder is " -"outdated. If you choose to update the preset database, the outdated version " -"will be backed up in the same folder as the new incoming presets:\n" -"\"{2}\"\n" +"This update provides new presets included on the latest versions of " +"Videomass.\n" "\n" -"Do you want to update the preset database now?" +"To avoid data loss and allow for possible recovery, the outdated presets " +"folder will be backed up in the program configuration folder: \"{2}\"\n" +"\n" +"Do you want to perform this update now?" msgstr "" "Versión de preset antigua: v{1}.\n" "Disponible versión: v{0}\n" @@ -3504,27 +3515,27 @@ msgstr "" "\n" "Do you want to update the preset database now?" -#: ../vdms_panels/presets_manager.py:349 ../vdms_panels/presets_manager.py:527 -#: ../vdms_panels/presets_manager.py:567 ../vdms_panels/presets_manager.py:631 -#: ../vdms_panels/presets_manager.py:657 ../vdms_panels/presets_manager.py:807 -#: ../vdms_panels/presets_manager.py:838 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 +#: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:841 +#: ../vdms_panels/presets_manager.py:872 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "Por favor Confirme" -#: ../vdms_panels/presets_manager.py:392 +#: ../vdms_panels/presets_manager.py:395 msgid "Name" msgstr "Nombre" -#: ../vdms_panels/presets_manager.py:394 +#: ../vdms_panels/presets_manager.py:397 msgid "Output Format" msgstr "Formato de Salida" -#: ../vdms_panels/presets_manager.py:395 +#: ../vdms_panels/presets_manager.py:398 msgid "Supported Format List" msgstr "Lista de formatos soportados" -#: ../vdms_panels/presets_manager.py:413 ../vdms_panels/presets_manager.py:472 +#: ../vdms_panels/presets_manager.py:416 ../vdms_panels/presets_manager.py:475 msgid "" "ERROR: Typing error on JSON keys: {}\n" "\n" @@ -3536,15 +3547,15 @@ msgstr "" "Archivo: \"{}\"\n" "¿Llave mal formada ?" -#: ../vdms_panels/presets_manager.py:493 +#: ../vdms_panels/presets_manager.py:496 msgid "Enter name for new preset" msgstr "Intorduzca nombre del nuevo preset" -#: ../vdms_panels/presets_manager.py:506 +#: ../vdms_panels/presets_manager.py:509 msgid "Cannot save current data in file '{}'." msgstr "No se puede guardar la información actual en '{}'." -#: ../vdms_panels/presets_manager.py:510 +#: ../vdms_panels/presets_manager.py:513 msgid "" "'Successful!\n" "\n" @@ -3554,17 +3565,22 @@ msgstr "" "\n" "Se ha creado un nuevo preset vacio." -#: ../vdms_panels/presets_manager.py:524 +#: ../vdms_panels/presets_manager.py:527 +#, fuzzy +#| msgid "" +#| "Are you sure you want to remove \"{}\" preset?\n" +#| "\n" +#| " It will be moved to the \"Removals\" subfolder of the presets folder." msgid "" "Are you sure you want to remove \"{}\" preset?\n" "\n" -" It will be moved to the \"Removals\" subfolder of the presets folder." +" It will be moved to the \"Removals\" subfolder inside the presets folder." msgstr "" "¿Seguro que desea borrar el preset \"{}\" ?\n" "\n" " It will be moved to the \"Removals\" subfolder of the presets folder." -#: ../vdms_panels/presets_manager.py:535 +#: ../vdms_panels/presets_manager.py:538 msgid "" "{}\n" "\n" @@ -3574,40 +3590,40 @@ msgstr "" "\n" "Fallo al eliminar, no se puede continuar.." -#: ../vdms_panels/presets_manager.py:545 +#: ../vdms_panels/presets_manager.py:548 #, python-brace-format msgid "The preset \"{0}\" was successfully removed" msgstr "El preset \"{0}\" se elimino con exito" -#: ../vdms_panels/presets_manager.py:560 +#: ../vdms_panels/presets_manager.py:563 msgid "Choose a folder to save the selected preset" msgstr "Elija una carpeta para guardar el preset seleccionado" -#: ../vdms_panels/presets_manager.py:565 +#: ../vdms_panels/presets_manager.py:568 msgid "A file with this name already exists, do you want to overwrite it?" msgstr "Ya existe archivo con ese nombres, ¿quiere sobreecribirlo?" -#: ../vdms_panels/presets_manager.py:578 +#: ../vdms_panels/presets_manager.py:581 msgid "The preset was exported successfully" msgstr "El preset \"se elimino con exito" -#: ../vdms_panels/presets_manager.py:588 +#: ../vdms_panels/presets_manager.py:591 msgid "Choose a folder to export all presets" msgstr "Elija una carpeta para exportar todos los presets" -#: ../vdms_panels/presets_manager.py:597 +#: ../vdms_panels/presets_manager.py:600 msgid "All presets have been exported successfully" msgstr "Todos los presets exportados con exito" -#: ../vdms_panels/presets_manager.py:608 +#: ../vdms_panels/presets_manager.py:611 msgid "Import a new preset" msgstr "Importar nuevo preset" -#: ../vdms_panels/presets_manager.py:619 +#: ../vdms_panels/presets_manager.py:622 msgid "Error, invalid preset: \"{}\"" msgstr "Error, preset invalido: \"{}\"" -#: ../vdms_panels/presets_manager.py:627 +#: ../vdms_panels/presets_manager.py:630 msgid "" "This preset already exists and is about to be updated. Don't worry, it will " "keep all your saved profiles.\n" @@ -3619,11 +3635,11 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:644 +#: ../vdms_panels/presets_manager.py:647 msgid "A new preset was successfully imported" msgstr "Se importo exitosamente un nuevo preset" -#: ../vdms_panels/presets_manager.py:654 +#: ../vdms_panels/presets_manager.py:665 msgid "" "This will update the presets database. Don't worry, it will keep all your " "saved profiles.\n" @@ -3635,15 +3651,15 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:661 +#: ../vdms_panels/presets_manager.py:672 msgid "Import a new presets folder" msgstr "Importar nueva carpeta de presets" -#: ../vdms_panels/presets_manager.py:680 +#: ../vdms_panels/presets_manager.py:704 msgid "The presets database has been successfully updated" msgstr "Base de datos de presets actualizada con exito" -#: ../vdms_panels/presets_manager.py:690 +#: ../vdms_panels/presets_manager.py:715 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3655,23 +3671,28 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:694 ../vdms_panels/presets_manager.py:722 +#: ../vdms_panels/presets_manager.py:719 ../vdms_panels/presets_manager.py:747 msgid "Warning" msgstr "Advertencia" -#: ../vdms_panels/presets_manager.py:705 -msgid "Sorry, this preset is not part of default Videomass presets." -msgstr "Este preset no es parte de los presets predeterminados de Videomass." - -#: ../vdms_panels/presets_manager.py:711 +#: ../vdms_panels/presets_manager.py:733 msgid "Successful recovery" msgstr "Recuperación exitosa" -#: ../vdms_panels/presets_manager.py:720 +#: ../vdms_panels/presets_manager.py:742 +#, fuzzy +#| msgid "" +#| "Be careful! This action will restore all presets to default ones. Your " +#| "profiles may be deleted!\n" +#| "\n" +#| "Do you want to continue?" msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" "\n" +"In any case, to avoid data loss, the presets folder will be backed up in the " +"program's configuration folder.\n" +"\n" "Do you want to continue?" msgstr "" "¡Sea cuidadoso! Se sobreescribira todos los preset con los predeterminados. " @@ -3679,30 +3700,30 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:730 +#: ../vdms_panels/presets_manager.py:764 msgid "All default presets have been successfully recovered" msgstr "Se han recuperado todos los presets con éxito" -#: ../vdms_panels/presets_manager.py:750 +#: ../vdms_panels/presets_manager.py:784 msgid "Create a new profile on \"{}\" preset" msgstr "Crear nuevo perfil en el preset \"{}\"" -#: ../vdms_panels/presets_manager.py:768 +#: ../vdms_panels/presets_manager.py:802 msgid "Edit profile of the \"{}\" preset" msgstr "Editar perfil del preset \"{}\"" -#: ../vdms_panels/presets_manager.py:805 +#: ../vdms_panels/presets_manager.py:839 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." msgstr "" "¿Seguro que desea borrar el perfil seleccionado? No sera posible recuperarlo." -#: ../vdms_panels/presets_manager.py:825 +#: ../vdms_panels/presets_manager.py:859 msgid "First select a profile in the list" msgstr "Primero elija un perfil en la lista" -#: ../vdms_panels/presets_manager.py:833 +#: ../vdms_panels/presets_manager.py:867 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" @@ -3710,11 +3731,11 @@ msgstr "" "El comando del perfil seleccionado se cambio manualmente.\n" "¿Desea aplicarlo durante el proceso de conversión?" -#: ../vdms_panels/presets_manager.py:843 +#: ../vdms_panels/presets_manager.py:877 msgid "Don't show this dialog again" msgstr "No mostrar nuevamente este dialogo" -#: ../vdms_panels/presets_manager.py:940 +#: ../vdms_panels/presets_manager.py:974 msgid "" "Queued File\n" "Pass Encoding\n" @@ -4573,3 +4594,22 @@ msgstr "" "Puede preceder un código de idioma con un \"-\" para excluir un\n" "idioma, e.j. \"all, -it.*, -nl.*\", -fr.*\" descargara todos los subtítulos\n" "con excepción de Italiano, Danes y Francés." + +#~ msgid "" +#~ "Invalid preset loaded.\n" +#~ "It is recommended to remove it or rewrite it into a JSON format " +#~ "compatible with Videomass.\n" +#~ "\n" +#~ "Possible solution: open the Presets Manager panel, go to the presets " +#~ "column and try to click the \"Restore\" button" +#~ msgstr "" +#~ "Preset invalido.\n" +#~ "Se recomienda eliminarlo o reescribirlo en un formato JSON compatible con " +#~ "Videomass.\n" +#~ "\n" +#~ "Posible solución: abra el panel del Administrador de Presets, ir a la " +#~ "columna presets y presionar el botón \"Restaurar\"" + +#~ msgid "Sorry, this preset is not part of default Videomass presets." +#~ msgstr "" +#~ "Este preset no es parte de los presets predeterminados de Videomass." diff --git a/videomass/locale/es_ES/LC_MESSAGES/videomass.mo b/videomass/locale/es_ES/LC_MESSAGES/videomass.mo index f4393904b8018845f1d8d5f1361f6ee6917a595a..87d351ddb5cc9f08f46c6266ec6f9e27f2af56ee 100644 GIT binary patch delta 17848 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\n" "Language: es_ES\n" @@ -877,7 +877,7 @@ msgstr "Formato de Salida. Vacio, copia el formato y codec. No incluya el `.`" msgid "Profile Name" msgstr "Nombre de Perfil" -#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:393 +#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:396 msgid "Description" msgstr "Descripción" @@ -1918,19 +1918,11 @@ msgstr "" #: ../vdms_io/presets_manager_prop.py:82 msgid "" -"Invalid preset loaded.\n" -"It is recommended to remove it or rewrite it into a JSON format compatible " -"with Videomass.\n" +"You are attempting to load a preset written with invalid JSON encoding.\n" "\n" -"Possible solution: open the Presets Manager panel, go to the presets column " -"and try to click the \"Restore\" button" +"You can try to restore it or import a correct one, otherwise it is " +"recommended to remove it." msgstr "" -"Preset invalido.\n" -"Se recomienda eliminarlo o reescribirlo en un formato JSON compatible con " -"Videomass.\n" -"\n" -"Posible solución: abra el panel del Administrador de Presets, ir a la " -"columna presets y presionar el botón \"Restaurar\"" #: ../vdms_io/presets_manager_prop.py:93 msgid "" @@ -1944,6 +1936,13 @@ msgstr "" "Posible solución: abra el panel del Administrador de Presets, ir a la " "columna presets y presionar el botón \"Restaurar todo...\"" +#: ../vdms_io/presets_manager_prop.py:125 +msgid "" +"Operation aborted due to possible JSON encoding/decoding error.\n" +"Fix any errors in the JSON code contained on the FILE before performing this " +"operation again." +msgstr "" + #: ../vdms_main/main_frame.py:193 ../vdms_main/main_frame.py:1372 #: ../vdms_main/main_frame.py:1402 ../vdms_ytdlp/main_ytdlp.py:99 #: ../vdms_ytdlp/main_ytdlp.py:148 ../vdms_ytdlp/main_ytdlp.py:593 @@ -2064,7 +2063,7 @@ msgstr "Quitar archivo seleccionado\tDEL" msgid "Remove the selected files from the list" msgstr "Eliminar archivos seleccionados de la lista" -#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:219 +#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:221 #: ../vdms_panels/video_to_sequence.py:169 ../vdms_ytdlp/main_ytdlp.py:301 msgid "Edit" msgstr "Editar" @@ -2849,12 +2848,12 @@ msgstr "{} archivo en espera" msgid "Off" msgstr "Apagado" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:933 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:967 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "No fijado" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:936 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:970 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "inicio {} | duración {}" @@ -3356,143 +3355,155 @@ msgstr "Por favor espere.. Abortando" msgid "...Interrupted" msgstr "...Interrumpido" -#: ../vdms_panels/presets_manager.py:111 +#: ../vdms_panels/presets_manager.py:113 msgid "Presets" msgstr "Presets" -#: ../vdms_panels/presets_manager.py:134 +#: ../vdms_panels/presets_manager.py:136 msgid "New" msgstr "Nuevo" -#: ../vdms_panels/presets_manager.py:137 +#: ../vdms_panels/presets_manager.py:139 msgid "Remove" msgstr "Eliminar" -#: ../vdms_panels/presets_manager.py:147 +#: ../vdms_panels/presets_manager.py:149 msgid "Export selected" msgstr "Exportar seleccionado" -#: ../vdms_panels/presets_manager.py:150 +#: ../vdms_panels/presets_manager.py:152 msgid "Export all..." msgstr "Exportar todo..." -#: ../vdms_panels/presets_manager.py:161 +#: ../vdms_panels/presets_manager.py:163 msgid "Import preset" msgstr "Importar preset" -#: ../vdms_panels/presets_manager.py:164 +#: ../vdms_panels/presets_manager.py:166 msgid "Import group" msgstr "Importar grupo" -#: ../vdms_panels/presets_manager.py:175 +#: ../vdms_panels/presets_manager.py:177 msgid "Restore" msgstr "Restablecer" -#: ../vdms_panels/presets_manager.py:179 +#: ../vdms_panels/presets_manager.py:181 msgid "Restore all..." msgstr "Restablecer todo..." -#: ../vdms_panels/presets_manager.py:191 +#: ../vdms_panels/presets_manager.py:193 msgid "Reload" msgstr "Recargar" -#: ../vdms_panels/presets_manager.py:205 +#: ../vdms_panels/presets_manager.py:207 msgid "Profiles" msgstr "Perfiles" -#: ../vdms_panels/presets_manager.py:210 +#: ../vdms_panels/presets_manager.py:212 msgid "Add" msgstr "Añadir" -#: ../vdms_panels/presets_manager.py:214 +#: ../vdms_panels/presets_manager.py:216 msgid "Delete" msgstr "Borrar" -#: ../vdms_panels/presets_manager.py:224 +#: ../vdms_panels/presets_manager.py:226 msgid "Duplicate" msgstr "Duplicado" -#: ../vdms_panels/presets_manager.py:233 +#: ../vdms_panels/presets_manager.py:235 msgid "One-Pass" msgstr "Un-Paso" -#: ../vdms_panels/presets_manager.py:243 +#: ../vdms_panels/presets_manager.py:245 msgid "Two-Pass" msgstr "Dos-Pasos" -#: ../vdms_panels/presets_manager.py:263 +#: ../vdms_panels/presets_manager.py:265 msgid "Choose a preset and view its profiles" msgstr "Elija un preset y vea sus perfiles" -#: ../vdms_panels/presets_manager.py:264 +#: ../vdms_panels/presets_manager.py:266 msgid "Create a new profile and save it in the selected preset" msgstr "Crear un nuevo perfil y guardarlo en el preset seleccionado" -#: ../vdms_panels/presets_manager.py:266 +#: ../vdms_panels/presets_manager.py:268 msgid "Delete the selected profile" msgstr "Borrar perfil seleccionado" -#: ../vdms_panels/presets_manager.py:267 +#: ../vdms_panels/presets_manager.py:269 msgid "Edit the selected profile" msgstr "Editar perfil seleccionado" -#: ../vdms_panels/presets_manager.py:268 +#: ../vdms_panels/presets_manager.py:270 msgid "Create a new preset" msgstr "Crear nuevo preset" -#: ../vdms_panels/presets_manager.py:270 +#: ../vdms_panels/presets_manager.py:272 msgid "Remove the selected preset from the Presets Manager" msgstr "Eliminar preset seleccionado del Administrador de Presets" -#: ../vdms_panels/presets_manager.py:272 +#: ../vdms_panels/presets_manager.py:274 msgid "Export selected preset as copy" msgstr "Exportar preset seleccionado como copia" -#: ../vdms_panels/presets_manager.py:274 +#: ../vdms_panels/presets_manager.py:276 msgid "Export entire presets folder as copy" msgstr "Exportar toda la carpeta de presets como copia" -#: ../vdms_panels/presets_manager.py:276 +#: ../vdms_panels/presets_manager.py:278 msgid "Import a new preset or update an existing one" msgstr "Importar nuevo preset o actualizar uno existente" -#: ../vdms_panels/presets_manager.py:278 +#: ../vdms_panels/presets_manager.py:280 msgid "Import a group of presets from a folder and update existing ones" msgstr "" "Importar un grupo de presets desde una carpeta y actualizar los existentes" -#: ../vdms_panels/presets_manager.py:281 +#: ../vdms_panels/presets_manager.py:283 msgid "Replace the selected preset with the Videomass default one" msgstr "Reemplace preset seleccionado con el predeterminado de Videomass" -#: ../vdms_panels/presets_manager.py:283 +#: ../vdms_panels/presets_manager.py:285 msgid "Retrieve all Videomass default presets" msgstr "Recuperar todos los presets predeterminados de Videomass" -#: ../vdms_panels/presets_manager.py:285 +#: ../vdms_panels/presets_manager.py:287 msgid "Update the presets list" msgstr "Actualizar lista de presets" -#: ../vdms_panels/presets_manager.py:286 +#: ../vdms_panels/presets_manager.py:288 msgid "First pass of the selected profile" msgstr "Primer paso del perfil seleccionado" -#: ../vdms_panels/presets_manager.py:288 +#: ../vdms_panels/presets_manager.py:290 msgid "Second pass of the selected profile" msgstr "Segundo paso del perfil seleccionado" -#: ../vdms_panels/presets_manager.py:340 -#, python-brace-format -msgid "" -"Outdated preset version found: v{1}.\n" +#: ../vdms_panels/presets_manager.py:341 +#, fuzzy, python-brace-format +#| msgid "" +#| "Outdated preset version found: v{1}.\n" +#| "A new version is available: v{0}\n" +#| "\n" +#| "It seems that the local preset database in your configuration folder is " +#| "outdated. If you choose to update the preset database, the outdated " +#| "version will be backed up in the same folder as the new incoming " +#| "presets:\n" +#| "\"{2}\"\n" +#| "\n" +#| "Do you want to update the preset database now?" +msgid "" +"Outdated presets version found: v{1}\n" "A new version is available: v{0}\n" "\n" -"It seems that the local preset database in your configuration folder is " -"outdated. If you choose to update the preset database, the outdated version " -"will be backed up in the same folder as the new incoming presets:\n" -"\"{2}\"\n" +"This update provides new presets included on the latest versions of " +"Videomass.\n" "\n" -"Do you want to update the preset database now?" +"To avoid data loss and allow for possible recovery, the outdated presets " +"folder will be backed up in the program configuration folder: \"{2}\"\n" +"\n" +"Do you want to perform this update now?" msgstr "" "Versión de preset antigua: v{1}.\n" "Disponible versión: v{0}\n" @@ -3504,27 +3515,27 @@ msgstr "" "\n" "Do you want to update the preset database now?" -#: ../vdms_panels/presets_manager.py:349 ../vdms_panels/presets_manager.py:527 -#: ../vdms_panels/presets_manager.py:567 ../vdms_panels/presets_manager.py:631 -#: ../vdms_panels/presets_manager.py:657 ../vdms_panels/presets_manager.py:807 -#: ../vdms_panels/presets_manager.py:838 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 +#: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:841 +#: ../vdms_panels/presets_manager.py:872 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "Por favor Confirme" -#: ../vdms_panels/presets_manager.py:392 +#: ../vdms_panels/presets_manager.py:395 msgid "Name" msgstr "Nombre" -#: ../vdms_panels/presets_manager.py:394 +#: ../vdms_panels/presets_manager.py:397 msgid "Output Format" msgstr "Formato de Salida" -#: ../vdms_panels/presets_manager.py:395 +#: ../vdms_panels/presets_manager.py:398 msgid "Supported Format List" msgstr "Lista de formatos soportados" -#: ../vdms_panels/presets_manager.py:413 ../vdms_panels/presets_manager.py:472 +#: ../vdms_panels/presets_manager.py:416 ../vdms_panels/presets_manager.py:475 msgid "" "ERROR: Typing error on JSON keys: {}\n" "\n" @@ -3536,15 +3547,15 @@ msgstr "" "Archivo: \"{}\"\n" "¿Llave mal formada ?" -#: ../vdms_panels/presets_manager.py:493 +#: ../vdms_panels/presets_manager.py:496 msgid "Enter name for new preset" msgstr "Intorduzca nombre del nuevo preset" -#: ../vdms_panels/presets_manager.py:506 +#: ../vdms_panels/presets_manager.py:509 msgid "Cannot save current data in file '{}'." msgstr "No se puede guardar la información actual en '{}'." -#: ../vdms_panels/presets_manager.py:510 +#: ../vdms_panels/presets_manager.py:513 msgid "" "'Successful!\n" "\n" @@ -3554,17 +3565,22 @@ msgstr "" "\n" "Se ha creado un nuevo preset vacio." -#: ../vdms_panels/presets_manager.py:524 +#: ../vdms_panels/presets_manager.py:527 +#, fuzzy +#| msgid "" +#| "Are you sure you want to remove \"{}\" preset?\n" +#| "\n" +#| " It will be moved to the \"Removals\" subfolder of the presets folder." msgid "" "Are you sure you want to remove \"{}\" preset?\n" "\n" -" It will be moved to the \"Removals\" subfolder of the presets folder." +" It will be moved to the \"Removals\" subfolder inside the presets folder." msgstr "" "¿Seguro que desea borrar el preset \"{}\" ?\n" "\n" " It will be moved to the \"Removals\" subfolder of the presets folder." -#: ../vdms_panels/presets_manager.py:535 +#: ../vdms_panels/presets_manager.py:538 msgid "" "{}\n" "\n" @@ -3574,40 +3590,40 @@ msgstr "" "\n" "Fallo al eliminar, no se puede continuar.." -#: ../vdms_panels/presets_manager.py:545 +#: ../vdms_panels/presets_manager.py:548 #, python-brace-format msgid "The preset \"{0}\" was successfully removed" msgstr "El preset \"{0}\" se elimino con exito" -#: ../vdms_panels/presets_manager.py:560 +#: ../vdms_panels/presets_manager.py:563 msgid "Choose a folder to save the selected preset" msgstr "Elija una carpeta para guardar el preset seleccionado" -#: ../vdms_panels/presets_manager.py:565 +#: ../vdms_panels/presets_manager.py:568 msgid "A file with this name already exists, do you want to overwrite it?" msgstr "Ya existe archivo con ese nombres, ¿quiere sobreecribirlo?" -#: ../vdms_panels/presets_manager.py:578 +#: ../vdms_panels/presets_manager.py:581 msgid "The preset was exported successfully" msgstr "El preset \"se elimino con exito" -#: ../vdms_panels/presets_manager.py:588 +#: ../vdms_panels/presets_manager.py:591 msgid "Choose a folder to export all presets" msgstr "Elija una carpeta para exportar todos los presets" -#: ../vdms_panels/presets_manager.py:597 +#: ../vdms_panels/presets_manager.py:600 msgid "All presets have been exported successfully" msgstr "Todos los presets exportados con exito" -#: ../vdms_panels/presets_manager.py:608 +#: ../vdms_panels/presets_manager.py:611 msgid "Import a new preset" msgstr "Importar nuevo preset" -#: ../vdms_panels/presets_manager.py:619 +#: ../vdms_panels/presets_manager.py:622 msgid "Error, invalid preset: \"{}\"" msgstr "Error, preset invalido: \"{}\"" -#: ../vdms_panels/presets_manager.py:627 +#: ../vdms_panels/presets_manager.py:630 msgid "" "This preset already exists and is about to be updated. Don't worry, it will " "keep all your saved profiles.\n" @@ -3619,11 +3635,11 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:644 +#: ../vdms_panels/presets_manager.py:647 msgid "A new preset was successfully imported" msgstr "Se importo exitosamente un nuevo preset" -#: ../vdms_panels/presets_manager.py:654 +#: ../vdms_panels/presets_manager.py:665 msgid "" "This will update the presets database. Don't worry, it will keep all your " "saved profiles.\n" @@ -3635,15 +3651,15 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:661 +#: ../vdms_panels/presets_manager.py:672 msgid "Import a new presets folder" msgstr "Importar nueva carpeta de presets" -#: ../vdms_panels/presets_manager.py:680 +#: ../vdms_panels/presets_manager.py:704 msgid "The presets database has been successfully updated" msgstr "Base de datos de presets actualizada con exito" -#: ../vdms_panels/presets_manager.py:690 +#: ../vdms_panels/presets_manager.py:715 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3655,23 +3671,28 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:694 ../vdms_panels/presets_manager.py:722 +#: ../vdms_panels/presets_manager.py:719 ../vdms_panels/presets_manager.py:747 msgid "Warning" msgstr "Advertencia" -#: ../vdms_panels/presets_manager.py:705 -msgid "Sorry, this preset is not part of default Videomass presets." -msgstr "Este preset no es parte de los presets predeterminados de Videomass." - -#: ../vdms_panels/presets_manager.py:711 +#: ../vdms_panels/presets_manager.py:733 msgid "Successful recovery" msgstr "Recuperación exitosa" -#: ../vdms_panels/presets_manager.py:720 +#: ../vdms_panels/presets_manager.py:742 +#, fuzzy +#| msgid "" +#| "Be careful! This action will restore all presets to default ones. Your " +#| "profiles may be deleted!\n" +#| "\n" +#| "Do you want to continue?" msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" "\n" +"In any case, to avoid data loss, the presets folder will be backed up in the " +"program's configuration folder.\n" +"\n" "Do you want to continue?" msgstr "" "¡Sea cuidadoso! Se sobreescribira todos los preset con los predeterminados. " @@ -3679,30 +3700,30 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:730 +#: ../vdms_panels/presets_manager.py:764 msgid "All default presets have been successfully recovered" msgstr "Se han recuperado todos los presets con éxito" -#: ../vdms_panels/presets_manager.py:750 +#: ../vdms_panels/presets_manager.py:784 msgid "Create a new profile on \"{}\" preset" msgstr "Crear nuevo perfil en el preset \"{}\"" -#: ../vdms_panels/presets_manager.py:768 +#: ../vdms_panels/presets_manager.py:802 msgid "Edit profile of the \"{}\" preset" msgstr "Editar perfil del preset \"{}\"" -#: ../vdms_panels/presets_manager.py:805 +#: ../vdms_panels/presets_manager.py:839 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." msgstr "" "¿Seguro que desea borrar el perfil seleccionado? No sera posible recuperarlo." -#: ../vdms_panels/presets_manager.py:825 +#: ../vdms_panels/presets_manager.py:859 msgid "First select a profile in the list" msgstr "Primero elija un perfil en la lista" -#: ../vdms_panels/presets_manager.py:833 +#: ../vdms_panels/presets_manager.py:867 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" @@ -3710,11 +3731,11 @@ msgstr "" "El comando del perfil seleccionado se cambio manualmente.\n" "¿Desea aplicarlo durante el proceso de conversión?" -#: ../vdms_panels/presets_manager.py:843 +#: ../vdms_panels/presets_manager.py:877 msgid "Don't show this dialog again" msgstr "No mostrar nuevamente este dialogo" -#: ../vdms_panels/presets_manager.py:940 +#: ../vdms_panels/presets_manager.py:974 msgid "" "Queued File\n" "Pass Encoding\n" @@ -4573,3 +4594,22 @@ msgstr "" "Puede preceder un código de idioma con un \"-\" para excluir un\n" "idioma, e.j. \"all, -it.*, -nl.*\", -fr.*\" descargara todos los subtítulos\n" "con excepción de Italiano, Danes y Francés." + +#~ msgid "" +#~ "Invalid preset loaded.\n" +#~ "It is recommended to remove it or rewrite it into a JSON format " +#~ "compatible with Videomass.\n" +#~ "\n" +#~ "Possible solution: open the Presets Manager panel, go to the presets " +#~ "column and try to click the \"Restore\" button" +#~ msgstr "" +#~ "Preset invalido.\n" +#~ "Se recomienda eliminarlo o reescribirlo en un formato JSON compatible con " +#~ "Videomass.\n" +#~ "\n" +#~ "Posible solución: abra el panel del Administrador de Presets, ir a la " +#~ "columna presets y presionar el botón \"Restaurar\"" + +#~ msgid "Sorry, this preset is not part of default Videomass presets." +#~ msgstr "" +#~ "Este preset no es parte de los presets predeterminados de Videomass." diff --git a/videomass/locale/es_MX/LC_MESSAGES/videomass.mo b/videomass/locale/es_MX/LC_MESSAGES/videomass.mo index d8282252a4e950025ba0271f58c08daec3756e15..a964e2fa4ed2ef12549f7d32ad90cee561be8d6c 100644 GIT binary patch delta 17848 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\n" "Language: es_MX\n" @@ -877,7 +877,7 @@ msgstr "Formato de Salida. Vacio, copia el formato y codec. No incluya el `.`" msgid "Profile Name" msgstr "Nombre de Perfil" -#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:393 +#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:396 msgid "Description" msgstr "Descripción" @@ -1918,19 +1918,11 @@ msgstr "" #: ../vdms_io/presets_manager_prop.py:82 msgid "" -"Invalid preset loaded.\n" -"It is recommended to remove it or rewrite it into a JSON format compatible " -"with Videomass.\n" +"You are attempting to load a preset written with invalid JSON encoding.\n" "\n" -"Possible solution: open the Presets Manager panel, go to the presets column " -"and try to click the \"Restore\" button" +"You can try to restore it or import a correct one, otherwise it is " +"recommended to remove it." msgstr "" -"Preset invalido.\n" -"Se recomienda eliminarlo o reescribirlo en un formato JSON compatible con " -"Videomass.\n" -"\n" -"Posible solución: abra el panel del Administrador de Presets, ir a la " -"columna presets y presionar el botón \"Restaurar\"" #: ../vdms_io/presets_manager_prop.py:93 msgid "" @@ -1944,6 +1936,13 @@ msgstr "" "Posible solución: abra el panel del Administrador de Presets, ir a la " "columna presets y presionar el botón \"Restaurar todo...\"" +#: ../vdms_io/presets_manager_prop.py:125 +msgid "" +"Operation aborted due to possible JSON encoding/decoding error.\n" +"Fix any errors in the JSON code contained on the FILE before performing this " +"operation again." +msgstr "" + #: ../vdms_main/main_frame.py:193 ../vdms_main/main_frame.py:1372 #: ../vdms_main/main_frame.py:1402 ../vdms_ytdlp/main_ytdlp.py:99 #: ../vdms_ytdlp/main_ytdlp.py:148 ../vdms_ytdlp/main_ytdlp.py:593 @@ -2064,7 +2063,7 @@ msgstr "Quitar archivo seleccionado\tDEL" msgid "Remove the selected files from the list" msgstr "Eliminar archivos seleccionados de la lista" -#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:219 +#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:221 #: ../vdms_panels/video_to_sequence.py:169 ../vdms_ytdlp/main_ytdlp.py:301 msgid "Edit" msgstr "Editar" @@ -2849,12 +2848,12 @@ msgstr "{} archivo en espera" msgid "Off" msgstr "Apagado" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:933 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:967 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "No fijado" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:936 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:970 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "inicio {} | duración {}" @@ -3356,143 +3355,155 @@ msgstr "Por favor espere.. Abortando" msgid "...Interrupted" msgstr "...Interrumpido" -#: ../vdms_panels/presets_manager.py:111 +#: ../vdms_panels/presets_manager.py:113 msgid "Presets" msgstr "Presets" -#: ../vdms_panels/presets_manager.py:134 +#: ../vdms_panels/presets_manager.py:136 msgid "New" msgstr "Nuevo" -#: ../vdms_panels/presets_manager.py:137 +#: ../vdms_panels/presets_manager.py:139 msgid "Remove" msgstr "Eliminar" -#: ../vdms_panels/presets_manager.py:147 +#: ../vdms_panels/presets_manager.py:149 msgid "Export selected" msgstr "Exportar seleccionado" -#: ../vdms_panels/presets_manager.py:150 +#: ../vdms_panels/presets_manager.py:152 msgid "Export all..." msgstr "Exportar todo..." -#: ../vdms_panels/presets_manager.py:161 +#: ../vdms_panels/presets_manager.py:163 msgid "Import preset" msgstr "Importar preset" -#: ../vdms_panels/presets_manager.py:164 +#: ../vdms_panels/presets_manager.py:166 msgid "Import group" msgstr "Importar grupo" -#: ../vdms_panels/presets_manager.py:175 +#: ../vdms_panels/presets_manager.py:177 msgid "Restore" msgstr "Restablecer" -#: ../vdms_panels/presets_manager.py:179 +#: ../vdms_panels/presets_manager.py:181 msgid "Restore all..." msgstr "Restablecer todo..." -#: ../vdms_panels/presets_manager.py:191 +#: ../vdms_panels/presets_manager.py:193 msgid "Reload" msgstr "Recargar" -#: ../vdms_panels/presets_manager.py:205 +#: ../vdms_panels/presets_manager.py:207 msgid "Profiles" msgstr "Perfiles" -#: ../vdms_panels/presets_manager.py:210 +#: ../vdms_panels/presets_manager.py:212 msgid "Add" msgstr "Añadir" -#: ../vdms_panels/presets_manager.py:214 +#: ../vdms_panels/presets_manager.py:216 msgid "Delete" msgstr "Borrar" -#: ../vdms_panels/presets_manager.py:224 +#: ../vdms_panels/presets_manager.py:226 msgid "Duplicate" msgstr "Duplicado" -#: ../vdms_panels/presets_manager.py:233 +#: ../vdms_panels/presets_manager.py:235 msgid "One-Pass" msgstr "Un-Paso" -#: ../vdms_panels/presets_manager.py:243 +#: ../vdms_panels/presets_manager.py:245 msgid "Two-Pass" msgstr "Dos-Pasos" -#: ../vdms_panels/presets_manager.py:263 +#: ../vdms_panels/presets_manager.py:265 msgid "Choose a preset and view its profiles" msgstr "Elija un preset y vea sus perfiles" -#: ../vdms_panels/presets_manager.py:264 +#: ../vdms_panels/presets_manager.py:266 msgid "Create a new profile and save it in the selected preset" msgstr "Crear un nuevo perfil y guardarlo en el preset seleccionado" -#: ../vdms_panels/presets_manager.py:266 +#: ../vdms_panels/presets_manager.py:268 msgid "Delete the selected profile" msgstr "Borrar perfil seleccionado" -#: ../vdms_panels/presets_manager.py:267 +#: ../vdms_panels/presets_manager.py:269 msgid "Edit the selected profile" msgstr "Editar perfil seleccionado" -#: ../vdms_panels/presets_manager.py:268 +#: ../vdms_panels/presets_manager.py:270 msgid "Create a new preset" msgstr "Crear nuevo preset" -#: ../vdms_panels/presets_manager.py:270 +#: ../vdms_panels/presets_manager.py:272 msgid "Remove the selected preset from the Presets Manager" msgstr "Eliminar preset seleccionado del Administrador de Presets" -#: ../vdms_panels/presets_manager.py:272 +#: ../vdms_panels/presets_manager.py:274 msgid "Export selected preset as copy" msgstr "Exportar preset seleccionado como copia" -#: ../vdms_panels/presets_manager.py:274 +#: ../vdms_panels/presets_manager.py:276 msgid "Export entire presets folder as copy" msgstr "Exportar toda la carpeta de presets como copia" -#: ../vdms_panels/presets_manager.py:276 +#: ../vdms_panels/presets_manager.py:278 msgid "Import a new preset or update an existing one" msgstr "Importar nuevo preset o actualizar uno existente" -#: ../vdms_panels/presets_manager.py:278 +#: ../vdms_panels/presets_manager.py:280 msgid "Import a group of presets from a folder and update existing ones" msgstr "" "Importar un grupo de presets desde una carpeta y actualizar los existentes" -#: ../vdms_panels/presets_manager.py:281 +#: ../vdms_panels/presets_manager.py:283 msgid "Replace the selected preset with the Videomass default one" msgstr "Reemplace preset seleccionado con el predeterminado de Videomass" -#: ../vdms_panels/presets_manager.py:283 +#: ../vdms_panels/presets_manager.py:285 msgid "Retrieve all Videomass default presets" msgstr "Recuperar todos los presets predeterminados de Videomass" -#: ../vdms_panels/presets_manager.py:285 +#: ../vdms_panels/presets_manager.py:287 msgid "Update the presets list" msgstr "Actualizar lista de presets" -#: ../vdms_panels/presets_manager.py:286 +#: ../vdms_panels/presets_manager.py:288 msgid "First pass of the selected profile" msgstr "Primer paso del perfil seleccionado" -#: ../vdms_panels/presets_manager.py:288 +#: ../vdms_panels/presets_manager.py:290 msgid "Second pass of the selected profile" msgstr "Segundo paso del perfil seleccionado" -#: ../vdms_panels/presets_manager.py:340 -#, python-brace-format -msgid "" -"Outdated preset version found: v{1}.\n" +#: ../vdms_panels/presets_manager.py:341 +#, fuzzy, python-brace-format +#| msgid "" +#| "Outdated preset version found: v{1}.\n" +#| "A new version is available: v{0}\n" +#| "\n" +#| "It seems that the local preset database in your configuration folder is " +#| "outdated. If you choose to update the preset database, the outdated " +#| "version will be backed up in the same folder as the new incoming " +#| "presets:\n" +#| "\"{2}\"\n" +#| "\n" +#| "Do you want to update the preset database now?" +msgid "" +"Outdated presets version found: v{1}\n" "A new version is available: v{0}\n" "\n" -"It seems that the local preset database in your configuration folder is " -"outdated. If you choose to update the preset database, the outdated version " -"will be backed up in the same folder as the new incoming presets:\n" -"\"{2}\"\n" +"This update provides new presets included on the latest versions of " +"Videomass.\n" "\n" -"Do you want to update the preset database now?" +"To avoid data loss and allow for possible recovery, the outdated presets " +"folder will be backed up in the program configuration folder: \"{2}\"\n" +"\n" +"Do you want to perform this update now?" msgstr "" "Versión de preset antigua: v{1}.\n" "Disponible versión: v{0}\n" @@ -3504,27 +3515,27 @@ msgstr "" "\n" "Do you want to update the preset database now?" -#: ../vdms_panels/presets_manager.py:349 ../vdms_panels/presets_manager.py:527 -#: ../vdms_panels/presets_manager.py:567 ../vdms_panels/presets_manager.py:631 -#: ../vdms_panels/presets_manager.py:657 ../vdms_panels/presets_manager.py:807 -#: ../vdms_panels/presets_manager.py:838 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 +#: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:841 +#: ../vdms_panels/presets_manager.py:872 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "Por favor Confirme" -#: ../vdms_panels/presets_manager.py:392 +#: ../vdms_panels/presets_manager.py:395 msgid "Name" msgstr "Nombre" -#: ../vdms_panels/presets_manager.py:394 +#: ../vdms_panels/presets_manager.py:397 msgid "Output Format" msgstr "Formato de Salida" -#: ../vdms_panels/presets_manager.py:395 +#: ../vdms_panels/presets_manager.py:398 msgid "Supported Format List" msgstr "Lista de formatos soportados" -#: ../vdms_panels/presets_manager.py:413 ../vdms_panels/presets_manager.py:472 +#: ../vdms_panels/presets_manager.py:416 ../vdms_panels/presets_manager.py:475 msgid "" "ERROR: Typing error on JSON keys: {}\n" "\n" @@ -3536,15 +3547,15 @@ msgstr "" "Archivo: \"{}\"\n" "¿Llave mal formada ?" -#: ../vdms_panels/presets_manager.py:493 +#: ../vdms_panels/presets_manager.py:496 msgid "Enter name for new preset" msgstr "Intorduzca nombre del nuevo preset" -#: ../vdms_panels/presets_manager.py:506 +#: ../vdms_panels/presets_manager.py:509 msgid "Cannot save current data in file '{}'." msgstr "No se puede guardar la información actual en '{}'." -#: ../vdms_panels/presets_manager.py:510 +#: ../vdms_panels/presets_manager.py:513 msgid "" "'Successful!\n" "\n" @@ -3554,17 +3565,22 @@ msgstr "" "\n" "Se ha creado un nuevo preset vacio." -#: ../vdms_panels/presets_manager.py:524 +#: ../vdms_panels/presets_manager.py:527 +#, fuzzy +#| msgid "" +#| "Are you sure you want to remove \"{}\" preset?\n" +#| "\n" +#| " It will be moved to the \"Removals\" subfolder of the presets folder." msgid "" "Are you sure you want to remove \"{}\" preset?\n" "\n" -" It will be moved to the \"Removals\" subfolder of the presets folder." +" It will be moved to the \"Removals\" subfolder inside the presets folder." msgstr "" "¿Seguro que desea borrar el preset \"{}\" ?\n" "\n" " It will be moved to the \"Removals\" subfolder of the presets folder." -#: ../vdms_panels/presets_manager.py:535 +#: ../vdms_panels/presets_manager.py:538 msgid "" "{}\n" "\n" @@ -3574,40 +3590,40 @@ msgstr "" "\n" "Fallo al eliminar, no se puede continuar.." -#: ../vdms_panels/presets_manager.py:545 +#: ../vdms_panels/presets_manager.py:548 #, python-brace-format msgid "The preset \"{0}\" was successfully removed" msgstr "El preset \"{0}\" se elimino con exito" -#: ../vdms_panels/presets_manager.py:560 +#: ../vdms_panels/presets_manager.py:563 msgid "Choose a folder to save the selected preset" msgstr "Elija una carpeta para guardar el preset seleccionado" -#: ../vdms_panels/presets_manager.py:565 +#: ../vdms_panels/presets_manager.py:568 msgid "A file with this name already exists, do you want to overwrite it?" msgstr "Ya existe archivo con ese nombres, ¿quiere sobreecribirlo?" -#: ../vdms_panels/presets_manager.py:578 +#: ../vdms_panels/presets_manager.py:581 msgid "The preset was exported successfully" msgstr "El preset \"se elimino con exito" -#: ../vdms_panels/presets_manager.py:588 +#: ../vdms_panels/presets_manager.py:591 msgid "Choose a folder to export all presets" msgstr "Elija una carpeta para exportar todos los presets" -#: ../vdms_panels/presets_manager.py:597 +#: ../vdms_panels/presets_manager.py:600 msgid "All presets have been exported successfully" msgstr "Todos los presets exportados con exito" -#: ../vdms_panels/presets_manager.py:608 +#: ../vdms_panels/presets_manager.py:611 msgid "Import a new preset" msgstr "Importar nuevo preset" -#: ../vdms_panels/presets_manager.py:619 +#: ../vdms_panels/presets_manager.py:622 msgid "Error, invalid preset: \"{}\"" msgstr "Error, preset invalido: \"{}\"" -#: ../vdms_panels/presets_manager.py:627 +#: ../vdms_panels/presets_manager.py:630 msgid "" "This preset already exists and is about to be updated. Don't worry, it will " "keep all your saved profiles.\n" @@ -3619,11 +3635,11 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:644 +#: ../vdms_panels/presets_manager.py:647 msgid "A new preset was successfully imported" msgstr "Se importo exitosamente un nuevo preset" -#: ../vdms_panels/presets_manager.py:654 +#: ../vdms_panels/presets_manager.py:665 msgid "" "This will update the presets database. Don't worry, it will keep all your " "saved profiles.\n" @@ -3635,15 +3651,15 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:661 +#: ../vdms_panels/presets_manager.py:672 msgid "Import a new presets folder" msgstr "Importar nueva carpeta de presets" -#: ../vdms_panels/presets_manager.py:680 +#: ../vdms_panels/presets_manager.py:704 msgid "The presets database has been successfully updated" msgstr "Base de datos de presets actualizada con exito" -#: ../vdms_panels/presets_manager.py:690 +#: ../vdms_panels/presets_manager.py:715 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3655,23 +3671,28 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:694 ../vdms_panels/presets_manager.py:722 +#: ../vdms_panels/presets_manager.py:719 ../vdms_panels/presets_manager.py:747 msgid "Warning" msgstr "Advertencia" -#: ../vdms_panels/presets_manager.py:705 -msgid "Sorry, this preset is not part of default Videomass presets." -msgstr "Este preset no es parte de los presets predeterminados de Videomass." - -#: ../vdms_panels/presets_manager.py:711 +#: ../vdms_panels/presets_manager.py:733 msgid "Successful recovery" msgstr "Recuperación exitosa" -#: ../vdms_panels/presets_manager.py:720 +#: ../vdms_panels/presets_manager.py:742 +#, fuzzy +#| msgid "" +#| "Be careful! This action will restore all presets to default ones. Your " +#| "profiles may be deleted!\n" +#| "\n" +#| "Do you want to continue?" msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" "\n" +"In any case, to avoid data loss, the presets folder will be backed up in the " +"program's configuration folder.\n" +"\n" "Do you want to continue?" msgstr "" "¡Sea cuidadoso! Se sobreescribira todos los preset con los predeterminados. " @@ -3679,30 +3700,30 @@ msgstr "" "\n" "¿Desea continuar?" -#: ../vdms_panels/presets_manager.py:730 +#: ../vdms_panels/presets_manager.py:764 msgid "All default presets have been successfully recovered" msgstr "Se han recuperado todos los presets con éxito" -#: ../vdms_panels/presets_manager.py:750 +#: ../vdms_panels/presets_manager.py:784 msgid "Create a new profile on \"{}\" preset" msgstr "Crear nuevo perfil en el preset \"{}\"" -#: ../vdms_panels/presets_manager.py:768 +#: ../vdms_panels/presets_manager.py:802 msgid "Edit profile of the \"{}\" preset" msgstr "Editar perfil del preset \"{}\"" -#: ../vdms_panels/presets_manager.py:805 +#: ../vdms_panels/presets_manager.py:839 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." msgstr "" "¿Seguro que desea borrar el perfil seleccionado? No sera posible recuperarlo." -#: ../vdms_panels/presets_manager.py:825 +#: ../vdms_panels/presets_manager.py:859 msgid "First select a profile in the list" msgstr "Primero elija un perfil en la lista" -#: ../vdms_panels/presets_manager.py:833 +#: ../vdms_panels/presets_manager.py:867 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" @@ -3710,11 +3731,11 @@ msgstr "" "El comando del perfil seleccionado se cambio manualmente.\n" "¿Desea aplicarlo durante el proceso de conversión?" -#: ../vdms_panels/presets_manager.py:843 +#: ../vdms_panels/presets_manager.py:877 msgid "Don't show this dialog again" msgstr "No mostrar nuevamente este dialogo" -#: ../vdms_panels/presets_manager.py:940 +#: ../vdms_panels/presets_manager.py:974 msgid "" "Queued File\n" "Pass Encoding\n" @@ -4573,3 +4594,22 @@ msgstr "" "Puede preceder un código de idioma con un \"-\" para excluir un\n" "idioma, e.j. \"all, -it.*, -nl.*\", -fr.*\" descargara todos los subtítulos\n" "con excepción de Italiano, Danes y Francés." + +#~ msgid "" +#~ "Invalid preset loaded.\n" +#~ "It is recommended to remove it or rewrite it into a JSON format " +#~ "compatible with Videomass.\n" +#~ "\n" +#~ "Possible solution: open the Presets Manager panel, go to the presets " +#~ "column and try to click the \"Restore\" button" +#~ msgstr "" +#~ "Preset invalido.\n" +#~ "Se recomienda eliminarlo o reescribirlo en un formato JSON compatible con " +#~ "Videomass.\n" +#~ "\n" +#~ "Posible solución: abra el panel del Administrador de Presets, ir a la " +#~ "columna presets y presionar el botón \"Restaurar\"" + +#~ msgid "Sorry, this preset is not part of default Videomass presets." +#~ msgstr "" +#~ "Este preset no es parte de los presets predeterminados de Videomass." diff --git a/videomass/locale/fr_FR/LC_MESSAGES/videomass.mo b/videomass/locale/fr_FR/LC_MESSAGES/videomass.mo index 183a43f7c39c29275899d8eef848fccbb32581b1..8f9ca99a24e76b29a43060cb0898874c41a67058 100644 GIT binary patch delta 17817 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 delta 19392 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 diff --git a/videomass/locale/fr_FR/LC_MESSAGES/videomass.po b/videomass/locale/fr_FR/LC_MESSAGES/videomass.po index b7f79d2f3..61012cb37 100644 --- a/videomass/locale/fr_FR/LC_MESSAGES/videomass.po +++ b/videomass/locale/fr_FR/LC_MESSAGES/videomass.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Videomass 5.0.3\n" +"Project-Id-Version: Videomass 5.0.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-16 18:06+0100\n" -"PO-Revision-Date: 2023-12-17 18:42+0100\n" +"POT-Creation-Date: 2024-01-23 18:04+0100\n" +"PO-Revision-Date: 2024-01-24 16:16+0100\n" "Last-Translator: Phil Aug \n" "Language-Team: French (FR)\n" "Language: fr_FR\n" @@ -893,7 +893,7 @@ msgstr "" msgid "Profile Name" msgstr "Nom du profil" -#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:393 +#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:396 msgid "Description" msgstr "Description" @@ -1951,19 +1951,11 @@ msgstr "" #: ../vdms_io/presets_manager_prop.py:82 msgid "" -"Invalid preset loaded.\n" -"It is recommended to remove it or rewrite it into a JSON format compatible " -"with Videomass.\n" +"You are attempting to load a preset written with invalid JSON encoding.\n" "\n" -"Possible solution: open the Presets Manager panel, go to the presets column " -"and try to click the \"Restore\" button" +"You can try to restore it or import a correct one, otherwise it is " +"recommended to remove it." msgstr "" -"Préréglage chargé non valide.\n" -"Il est recommandé de le supprimer ou de le recréer au format JSON compatible " -"avec VideoMass..\n" -"\n" -"Solution possible: ouvrir le panneau Gestion des Profils, accédez à la " -"colonne Profils et essayez de cliquer sur le bouton \"Restaurer\"" #: ../vdms_io/presets_manager_prop.py:93 msgid "" @@ -1977,6 +1969,13 @@ msgstr "" "Solution possible: ouvrir le panneau du Gestionnaire de Profils, accédez à " "la colonne Pofils et essayez de cliquer sur le bouton \"Restaurer tout ...\"" +#: ../vdms_io/presets_manager_prop.py:125 +msgid "" +"Operation aborted due to possible JSON encoding/decoding error.\n" +"Fix any errors in the JSON code contained on the FILE before performing this " +"operation again." +msgstr "" + #: ../vdms_main/main_frame.py:193 ../vdms_main/main_frame.py:1372 #: ../vdms_main/main_frame.py:1402 ../vdms_ytdlp/main_ytdlp.py:99 #: ../vdms_ytdlp/main_ytdlp.py:148 ../vdms_ytdlp/main_ytdlp.py:593 @@ -2100,7 +2099,7 @@ msgstr "Supprimer le fichier selectionné\tDEL" msgid "Remove the selected files from the list" msgstr "Supprimer les fichiers de la liste" -#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:219 +#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:221 #: ../vdms_panels/video_to_sequence.py:169 ../vdms_ytdlp/main_ytdlp.py:301 msgid "Edit" msgstr "Éditer" @@ -2896,12 +2895,12 @@ msgstr "{} filchier en file d'attente" msgid "Off" msgstr "Off" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:933 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:967 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "Désactivé" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:936 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:970 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "début {} | durée {}" @@ -3413,145 +3412,157 @@ msgstr "Attendez svp... interruption en cours" msgid "...Interrupted" msgstr "...Interrompu" -#: ../vdms_panels/presets_manager.py:111 +#: ../vdms_panels/presets_manager.py:113 msgid "Presets" msgstr "Profils" -#: ../vdms_panels/presets_manager.py:134 +#: ../vdms_panels/presets_manager.py:136 msgid "New" msgstr "Nouveau" -#: ../vdms_panels/presets_manager.py:137 +#: ../vdms_panels/presets_manager.py:139 msgid "Remove" msgstr "Retirer" -#: ../vdms_panels/presets_manager.py:147 +#: ../vdms_panels/presets_manager.py:149 msgid "Export selected" msgstr "Exporter la sélection" -#: ../vdms_panels/presets_manager.py:150 +#: ../vdms_panels/presets_manager.py:152 msgid "Export all..." msgstr "Exporter tout..." -#: ../vdms_panels/presets_manager.py:161 +#: ../vdms_panels/presets_manager.py:163 msgid "Import preset" msgstr "Importer un profil" -#: ../vdms_panels/presets_manager.py:164 +#: ../vdms_panels/presets_manager.py:166 msgid "Import group" msgstr "Importer un groupe" -#: ../vdms_panels/presets_manager.py:175 +#: ../vdms_panels/presets_manager.py:177 msgid "Restore" msgstr "Restaurer" -#: ../vdms_panels/presets_manager.py:179 +#: ../vdms_panels/presets_manager.py:181 msgid "Restore all..." msgstr "Tout Restaurer..." -#: ../vdms_panels/presets_manager.py:191 +#: ../vdms_panels/presets_manager.py:193 msgid "Reload" msgstr "Recharger" -#: ../vdms_panels/presets_manager.py:205 +#: ../vdms_panels/presets_manager.py:207 msgid "Profiles" msgstr "Profils" -#: ../vdms_panels/presets_manager.py:210 +#: ../vdms_panels/presets_manager.py:212 msgid "Add" msgstr "Ajouter" -#: ../vdms_panels/presets_manager.py:214 +#: ../vdms_panels/presets_manager.py:216 msgid "Delete" msgstr "Supprimer" -#: ../vdms_panels/presets_manager.py:224 +#: ../vdms_panels/presets_manager.py:226 msgid "Duplicate" msgstr "Dupliquer" -#: ../vdms_panels/presets_manager.py:233 +#: ../vdms_panels/presets_manager.py:235 msgid "One-Pass" msgstr "1 Passe" -#: ../vdms_panels/presets_manager.py:243 +#: ../vdms_panels/presets_manager.py:245 msgid "Two-Pass" msgstr "2 Passes" -#: ../vdms_panels/presets_manager.py:263 +#: ../vdms_panels/presets_manager.py:265 msgid "Choose a preset and view its profiles" msgstr "Choisissez un pré-réglage et affichez son profil" -#: ../vdms_panels/presets_manager.py:264 +#: ../vdms_panels/presets_manager.py:266 msgid "Create a new profile and save it in the selected preset" msgstr "" "Créez un nouveau profil et enregistrez-le dans le pré-réglage sélectionné" -#: ../vdms_panels/presets_manager.py:266 +#: ../vdms_panels/presets_manager.py:268 msgid "Delete the selected profile" msgstr "Supprimer le profil sélectionné" -#: ../vdms_panels/presets_manager.py:267 +#: ../vdms_panels/presets_manager.py:269 msgid "Edit the selected profile" msgstr "Éditer le profil sélectionné" -#: ../vdms_panels/presets_manager.py:268 +#: ../vdms_panels/presets_manager.py:270 msgid "Create a new preset" msgstr "Créer un nouveau pré-réglage" -#: ../vdms_panels/presets_manager.py:270 +#: ../vdms_panels/presets_manager.py:272 msgid "Remove the selected preset from the Presets Manager" msgstr "Supprimer le pré-réglage du Gestionnaire de Profils" -#: ../vdms_panels/presets_manager.py:272 +#: ../vdms_panels/presets_manager.py:274 msgid "Export selected preset as copy" msgstr "Exporter le préréglage en tant que copie" -#: ../vdms_panels/presets_manager.py:274 +#: ../vdms_panels/presets_manager.py:276 msgid "Export entire presets folder as copy" msgstr "Exporter l'intégralité du dossier de préréglages en tant que copie" -#: ../vdms_panels/presets_manager.py:276 +#: ../vdms_panels/presets_manager.py:278 msgid "Import a new preset or update an existing one" msgstr "Importer un nouveau préréglage ou mettre à jour un préréglage existant" -#: ../vdms_panels/presets_manager.py:278 +#: ../vdms_panels/presets_manager.py:280 msgid "Import a group of presets from a folder and update existing ones" msgstr "" "Importer un groupe de profils à partir d'un dossier et mettre à jour les " "profils existants" -#: ../vdms_panels/presets_manager.py:281 +#: ../vdms_panels/presets_manager.py:283 msgid "Replace the selected preset with the Videomass default one" msgstr "Remplacez le préréglage sélectionné par celui de Videomass par défaut" -#: ../vdms_panels/presets_manager.py:283 +#: ../vdms_panels/presets_manager.py:285 msgid "Retrieve all Videomass default presets" msgstr "Récupérer tous les préréglages par défaut de Videomass" -#: ../vdms_panels/presets_manager.py:285 +#: ../vdms_panels/presets_manager.py:287 msgid "Update the presets list" msgstr "Mise à jour de la liste des profils" -#: ../vdms_panels/presets_manager.py:286 +#: ../vdms_panels/presets_manager.py:288 msgid "First pass of the selected profile" msgstr "Première passe du profil sélectionné" -#: ../vdms_panels/presets_manager.py:288 +#: ../vdms_panels/presets_manager.py:290 msgid "Second pass of the selected profile" msgstr "Seconde passe du profil sélectionné" -#: ../vdms_panels/presets_manager.py:340 -#, python-brace-format -msgid "" -"Outdated preset version found: v{1}.\n" +#: ../vdms_panels/presets_manager.py:341 +#, fuzzy, python-brace-format +#| msgid "" +#| "Outdated preset version found: v{1}.\n" +#| "A new version is available: v{0}\n" +#| "\n" +#| "It seems that the local preset database in your configuration folder is " +#| "outdated. If you choose to update the preset database, the outdated " +#| "version will be backed up in the same folder as the new incoming " +#| "presets:\n" +#| "\"{2}\"\n" +#| "\n" +#| "Do you want to update the preset database now?" +msgid "" +"Outdated presets version found: v{1}\n" "A new version is available: v{0}\n" "\n" -"It seems that the local preset database in your configuration folder is " -"outdated. If you choose to update the preset database, the outdated version " -"will be backed up in the same folder as the new incoming presets:\n" -"\"{2}\"\n" +"This update provides new presets included on the latest versions of " +"Videomass.\n" +"\n" +"To avoid data loss and allow for possible recovery, the outdated presets " +"folder will be backed up in the program configuration folder: \"{2}\"\n" "\n" -"Do you want to update the preset database now?" +"Do you want to perform this update now?" msgstr "" "Ancienne version trouvée: v{1}.\n" "Une nouvelle version est disponible: v{0}\n" @@ -3563,27 +3574,27 @@ msgstr "" "\"{2}\"\n" "Mettre à jour la base de données prédéfinie maintenant?" -#: ../vdms_panels/presets_manager.py:349 ../vdms_panels/presets_manager.py:527 -#: ../vdms_panels/presets_manager.py:567 ../vdms_panels/presets_manager.py:631 -#: ../vdms_panels/presets_manager.py:657 ../vdms_panels/presets_manager.py:807 -#: ../vdms_panels/presets_manager.py:838 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 +#: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:841 +#: ../vdms_panels/presets_manager.py:872 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "Confirmer SVP" -#: ../vdms_panels/presets_manager.py:392 +#: ../vdms_panels/presets_manager.py:395 msgid "Name" msgstr "Nom" -#: ../vdms_panels/presets_manager.py:394 +#: ../vdms_panels/presets_manager.py:397 msgid "Output Format" msgstr "Format de sortie" -#: ../vdms_panels/presets_manager.py:395 +#: ../vdms_panels/presets_manager.py:398 msgid "Supported Format List" msgstr "Liste de formats supportés" -#: ../vdms_panels/presets_manager.py:413 ../vdms_panels/presets_manager.py:472 +#: ../vdms_panels/presets_manager.py:416 ../vdms_panels/presets_manager.py:475 msgid "" "ERROR: Typing error on JSON keys: {}\n" "\n" @@ -3595,15 +3606,15 @@ msgstr "" "Fichier: \"{}\"\n" "clé mal formée ?" -#: ../vdms_panels/presets_manager.py:493 +#: ../vdms_panels/presets_manager.py:496 msgid "Enter name for new preset" msgstr "Entrez le nom du nouveau pré-réglage" -#: ../vdms_panels/presets_manager.py:506 +#: ../vdms_panels/presets_manager.py:509 msgid "Cannot save current data in file '{}'." msgstr "Impossible d'enregistrer les données dans le fichier'{}'." -#: ../vdms_panels/presets_manager.py:510 +#: ../vdms_panels/presets_manager.py:513 msgid "" "'Successful!\n" "\n" @@ -3613,17 +3624,22 @@ msgstr "" "\n" "Un nouveau pré-réglage vide a été créé." -#: ../vdms_panels/presets_manager.py:524 +#: ../vdms_panels/presets_manager.py:527 +#, fuzzy +#| msgid "" +#| "Are you sure you want to remove \"{}\" preset?\n" +#| "\n" +#| " It will be moved to the \"Removals\" subfolder of the presets folder." msgid "" "Are you sure you want to remove \"{}\" preset?\n" "\n" -" It will be moved to the \"Removals\" subfolder of the presets folder." +" It will be moved to the \"Removals\" subfolder inside the presets folder." msgstr "" "Êtes-vous sûr de vouloir supprimer\"{}\" profil?\n" "\n" "Il sera déplacé vers le sous-dossier \"Removals\" du dossier Profils." -#: ../vdms_panels/presets_manager.py:535 +#: ../vdms_panels/presets_manager.py:538 msgid "" "{}\n" "\n" @@ -3633,40 +3649,40 @@ msgstr "" "\n" "désolé, la suppression a échoué, impossible de continuer." -#: ../vdms_panels/presets_manager.py:545 +#: ../vdms_panels/presets_manager.py:548 #, python-brace-format msgid "The preset \"{0}\" was successfully removed" msgstr "Le pré-réglage\"{0}\" a été supprimé avec succès" -#: ../vdms_panels/presets_manager.py:560 +#: ../vdms_panels/presets_manager.py:563 msgid "Choose a folder to save the selected preset" msgstr "Choisir un dossier pour sauvegarder le pré-réglage sélectionné" -#: ../vdms_panels/presets_manager.py:565 +#: ../vdms_panels/presets_manager.py:568 msgid "A file with this name already exists, do you want to overwrite it?" msgstr "Un fichier avec ce nom existe déjà, voulez-vous l'écraser ?" -#: ../vdms_panels/presets_manager.py:578 +#: ../vdms_panels/presets_manager.py:581 msgid "The preset was exported successfully" msgstr "Le pré-réglage a été exporté avec succès" -#: ../vdms_panels/presets_manager.py:588 +#: ../vdms_panels/presets_manager.py:591 msgid "Choose a folder to export all presets" msgstr "Choisissez un dossier pour exporter tous les profils" -#: ../vdms_panels/presets_manager.py:597 +#: ../vdms_panels/presets_manager.py:600 msgid "All presets have been exported successfully" msgstr "Tous les profils ont été exportés avec succès" -#: ../vdms_panels/presets_manager.py:608 +#: ../vdms_panels/presets_manager.py:611 msgid "Import a new preset" msgstr "Importer un nouveau pré-réglage" -#: ../vdms_panels/presets_manager.py:619 +#: ../vdms_panels/presets_manager.py:622 msgid "Error, invalid preset: \"{}\"" msgstr "Erreur, pré-réglage invalide: \"{}\"" -#: ../vdms_panels/presets_manager.py:627 +#: ../vdms_panels/presets_manager.py:630 msgid "" "This preset already exists and is about to be updated. Don't worry, it will " "keep all your saved profiles.\n" @@ -3678,11 +3694,11 @@ msgstr "" "\n" "Voulez-vous continuer?" -#: ../vdms_panels/presets_manager.py:644 +#: ../vdms_panels/presets_manager.py:647 msgid "A new preset was successfully imported" msgstr "Un nouveau pré-réglage a été importé avec succès" -#: ../vdms_panels/presets_manager.py:654 +#: ../vdms_panels/presets_manager.py:665 msgid "" "This will update the presets database. Don't worry, it will keep all your " "saved profiles.\n" @@ -3694,15 +3710,15 @@ msgstr "" "\n" "Voulez-vous continuer ?" -#: ../vdms_panels/presets_manager.py:661 +#: ../vdms_panels/presets_manager.py:672 msgid "Import a new presets folder" msgstr "Importer un nouveau dossier de profils" -#: ../vdms_panels/presets_manager.py:680 +#: ../vdms_panels/presets_manager.py:704 msgid "The presets database has been successfully updated" msgstr "La base de données Profils a été mise à jour avec succès" -#: ../vdms_panels/presets_manager.py:690 +#: ../vdms_panels/presets_manager.py:715 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3714,25 +3730,28 @@ msgstr "" "\n" "Voulez-vous continuer ?" -#: ../vdms_panels/presets_manager.py:694 ../vdms_panels/presets_manager.py:722 +#: ../vdms_panels/presets_manager.py:719 ../vdms_panels/presets_manager.py:747 msgid "Warning" msgstr "Attention" -#: ../vdms_panels/presets_manager.py:705 -msgid "Sorry, this preset is not part of default Videomass presets." -msgstr "" -"Désolé, ce pré-réglage ne fait pas partie des profils de Videomass par " -"défaut." - -#: ../vdms_panels/presets_manager.py:711 +#: ../vdms_panels/presets_manager.py:733 msgid "Successful recovery" msgstr "Récupération réussie" -#: ../vdms_panels/presets_manager.py:720 +#: ../vdms_panels/presets_manager.py:742 +#, fuzzy +#| msgid "" +#| "Be careful! This action will restore all presets to default ones. Your " +#| "profiles may be deleted!\n" +#| "\n" +#| "Do you want to continue?" msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" "\n" +"In any case, to avoid data loss, the presets folder will be backed up in the " +"program's configuration folder.\n" +"\n" "Do you want to continue?" msgstr "" "Faire attention! Cette action restaure tous les profils par défaut. Vos " @@ -3740,19 +3759,19 @@ msgstr "" "\n" "Voulez-vous continuer ?" -#: ../vdms_panels/presets_manager.py:730 +#: ../vdms_panels/presets_manager.py:764 msgid "All default presets have been successfully recovered" msgstr "Tous les profils par défaut ont été restaurés avec succès" -#: ../vdms_panels/presets_manager.py:750 +#: ../vdms_panels/presets_manager.py:784 msgid "Create a new profile on \"{}\" preset" msgstr "Créer un nouveau profil sur \"{}\" Pré-réglage" -#: ../vdms_panels/presets_manager.py:768 +#: ../vdms_panels/presets_manager.py:802 msgid "Edit profile of the \"{}\" preset" msgstr "Éditer un profil de \"{}\" pré-réglage" -#: ../vdms_panels/presets_manager.py:805 +#: ../vdms_panels/presets_manager.py:839 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." @@ -3760,11 +3779,11 @@ msgstr "" "Etes vous sûr de vouloir supprimer le profil? Il sera impossible de le " "récupérer." -#: ../vdms_panels/presets_manager.py:825 +#: ../vdms_panels/presets_manager.py:859 msgid "First select a profile in the list" msgstr "Sélectionnez d'abord un profil dans la liste" -#: ../vdms_panels/presets_manager.py:833 +#: ../vdms_panels/presets_manager.py:867 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" @@ -3772,11 +3791,11 @@ msgstr "" "La commande de profil sélectionnée a été modifiée manuellement..\n" "Voulez-vous l'appliquer pendant le processus de conversion?" -#: ../vdms_panels/presets_manager.py:843 +#: ../vdms_panels/presets_manager.py:877 msgid "Don't show this dialog again" msgstr "Ne plus afficher cette boîte de dialogue" -#: ../vdms_panels/presets_manager.py:940 +#: ../vdms_panels/presets_manager.py:974 msgid "" "Queued File\n" "Pass Encoding\n" @@ -4647,6 +4666,26 @@ msgstr "" "tous les\n" "sous-titres sauf ceux en italien , hollandais et français." +#~ msgid "" +#~ "Invalid preset loaded.\n" +#~ "It is recommended to remove it or rewrite it into a JSON format " +#~ "compatible with Videomass.\n" +#~ "\n" +#~ "Possible solution: open the Presets Manager panel, go to the presets " +#~ "column and try to click the \"Restore\" button" +#~ msgstr "" +#~ "Préréglage chargé non valide.\n" +#~ "Il est recommandé de le supprimer ou de le recréer au format JSON " +#~ "compatible avec VideoMass..\n" +#~ "\n" +#~ "Solution possible: ouvrir le panneau Gestion des Profils, accédez à la " +#~ "colonne Profils et essayez de cliquer sur le bouton \"Restaurer\"" + +#~ msgid "Sorry, this preset is not part of default Videomass presets." +#~ msgstr "" +#~ "Désolé, ce pré-réglage ne fait pas partie des profils de Videomass par " +#~ "défaut." + #~ msgid "" #~ "Permission denied: {}\n" #~ "\n" diff --git a/videomass/locale/it_IT/LC_MESSAGES/videomass.mo b/videomass/locale/it_IT/LC_MESSAGES/videomass.mo index 81ca76b6b834ef084ff150c771652fc36ecce7e0..c82c1625a0eebe5a695eb9a2d92b12a717202938 100644 GIT binary patch delta 28 kcmeC4!PY&4ZG*yXMw7{kw~g6N6b#L*3@tWC-`=nR0F+n?qW}N^ delta 28 kcmeC4!PY&4ZG*yXM&rqfw~g726$~w`j7&C1-`=nR0F*llpa1{> diff --git a/videomass/locale/it_IT/LC_MESSAGES/videomass.po b/videomass/locale/it_IT/LC_MESSAGES/videomass.po index 826d1b975..f0438b67c 100644 --- a/videomass/locale/it_IT/LC_MESSAGES/videomass.po +++ b/videomass/locale/it_IT/LC_MESSAGES/videomass.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Videomass 5.0.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-23 18:04+0100\n" -"PO-Revision-Date: 2024-01-23 18:24+0100\n" +"POT-Creation-Date: 2024-01-24 16:17+0100\n" +"PO-Revision-Date: 2024-01-24 16:18+0100\n" "Last-Translator: Gianluca (jeanslack) Pernigotto \n" "Language-Team: Italian <>\n" "Language: it_IT\n" @@ -2899,12 +2899,12 @@ msgstr "{} file in coda" msgid "Off" msgstr "Spento" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:967 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:968 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "Non settato" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:970 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:971 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "inizio {} | durata {}" @@ -3568,8 +3568,8 @@ msgstr "" #: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 #: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 -#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:841 -#: ../vdms_panels/presets_manager.py:872 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:842 +#: ../vdms_panels/presets_manager.py:873 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "Prego confermare" @@ -3702,11 +3702,11 @@ msgstr "" msgid "Import a new presets folder" msgstr "Importa una nuova cartella dei preset" -#: ../vdms_panels/presets_manager.py:704 +#: ../vdms_panels/presets_manager.py:705 msgid "The presets database has been successfully updated" msgstr "Il database dei preset è stato aggiornato con successo" -#: ../vdms_panels/presets_manager.py:715 +#: ../vdms_panels/presets_manager.py:716 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3718,15 +3718,15 @@ msgstr "" "\n" "Vuoi continuare?" -#: ../vdms_panels/presets_manager.py:719 ../vdms_panels/presets_manager.py:747 +#: ../vdms_panels/presets_manager.py:720 ../vdms_panels/presets_manager.py:748 msgid "Warning" msgstr "Avvertimento" -#: ../vdms_panels/presets_manager.py:733 +#: ../vdms_panels/presets_manager.py:734 msgid "Successful recovery" msgstr "Ripristino riuscito" -#: ../vdms_panels/presets_manager.py:742 +#: ../vdms_panels/presets_manager.py:743 msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" @@ -3744,19 +3744,19 @@ msgstr "" "\n" "Vuoi continuare?" -#: ../vdms_panels/presets_manager.py:764 +#: ../vdms_panels/presets_manager.py:765 msgid "All default presets have been successfully recovered" msgstr "Tutti i preset predefiniti sono stati ripristinati con successo" -#: ../vdms_panels/presets_manager.py:784 +#: ../vdms_panels/presets_manager.py:785 msgid "Create a new profile on \"{}\" preset" msgstr "Crea un nuovo profilo sul preset \"{}\"" -#: ../vdms_panels/presets_manager.py:802 +#: ../vdms_panels/presets_manager.py:803 msgid "Edit profile of the \"{}\" preset" msgstr "Modifica il profilo sul preset \"{}\"" -#: ../vdms_panels/presets_manager.py:839 +#: ../vdms_panels/presets_manager.py:840 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." @@ -3764,11 +3764,11 @@ msgstr "" "Sei sicuro di voler eliminare il profilo selezionato? non sarà più possibile " "recuperarlo." -#: ../vdms_panels/presets_manager.py:859 +#: ../vdms_panels/presets_manager.py:860 msgid "First select a profile in the list" msgstr "Dovresti selezionare un profilo nella lista" -#: ../vdms_panels/presets_manager.py:867 +#: ../vdms_panels/presets_manager.py:868 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" @@ -3776,11 +3776,11 @@ msgstr "" "Il comando del profilo selezionato è stato cambiato manualmente.\n" "Vuoi applicarlo durante il processo di conversione?" -#: ../vdms_panels/presets_manager.py:877 +#: ../vdms_panels/presets_manager.py:878 msgid "Don't show this dialog again" msgstr "Non mostrare ancora questo dialogo" -#: ../vdms_panels/presets_manager.py:974 +#: ../vdms_panels/presets_manager.py:975 msgid "" "Queued File\n" "Pass Encoding\n" diff --git a/videomass/locale/nl_NL/LC_MESSAGES/videomass.mo b/videomass/locale/nl_NL/LC_MESSAGES/videomass.mo index 914901693b2a324300a9cbe95e61590e47bb4c65..b1849069f14f0bb0d58f05549f63138466a5ab05 100644 GIT binary patch delta 11517 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 VFOpvSYIMfk%~cC$bU&UJ{6C;_8V3LX delta 12453 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 onb!S$!SxP~#;$i7)4>#bxnB8VN5&!@I diff --git a/videomass/locale/nl_NL/LC_MESSAGES/videomass.po b/videomass/locale/nl_NL/LC_MESSAGES/videomass.po index c4876570a..d3ec3cd29 100644 --- a/videomass/locale/nl_NL/LC_MESSAGES/videomass.po +++ b/videomass/locale/nl_NL/LC_MESSAGES/videomass.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Videomass 5.0.3\n" +"Project-Id-Version: Videomass 5.0.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-18 10:29+0200\n" -"PO-Revision-Date: 2023-07-18 10:35+0200\n" +"POT-Creation-Date: 2024-01-24 16:17+0100\n" +"PO-Revision-Date: 2024-01-24 16:18+0100\n" "Last-Translator: johannesdedoper \n" "Language-Team: Dutch <>\n" "Language: nl_NL\n" @@ -935,7 +935,7 @@ msgstr "" msgid "Profile Name" msgstr "Profiel Naam" -#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:393 +#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:396 msgid "Description" msgstr "Beschrijving" @@ -2032,19 +2032,11 @@ msgstr "" #: ../vdms_io/presets_manager_prop.py:82 msgid "" -"Invalid preset loaded.\n" -"It is recommended to remove it or rewrite it into a JSON format compatible " -"with Videomass.\n" +"You are attempting to load a preset written with invalid JSON encoding.\n" "\n" -"Possible solution: open the Presets Manager panel, go to the presets column " -"and try to click the \"Restore\" button" +"You can try to restore it or import a correct one, otherwise it is " +"recommended to remove it." msgstr "" -"Ongeldige preset geladen.\n" -"Het is aanbevolen om deze te verwijderen of te overschrijven naar een JSON " -"formaat dat compatible is met Videomass.\n" -"\n" -"Mogelijke oplossing: open het Presets Manager paneel, ga naar de presets " -"kolom en probeer de \"Herstel\" knop te drukken" #: ../vdms_io/presets_manager_prop.py:93 msgid "" @@ -2058,6 +2050,13 @@ msgstr "" "Mogelijke oplossing: open het Presets Manager paneel, ga naar de presets " "kolom en probeer de \"Herstel allen...\" knop te drukken" +#: ../vdms_io/presets_manager_prop.py:125 +msgid "" +"Operation aborted due to possible JSON encoding/decoding error.\n" +"Fix any errors in the JSON code contained on the FILE before performing this " +"operation again." +msgstr "" + #: ../vdms_main/main_frame.py:193 ../vdms_main/main_frame.py:1372 #: ../vdms_main/main_frame.py:1402 ../vdms_ytdlp/main_ytdlp.py:99 #: ../vdms_ytdlp/main_ytdlp.py:148 ../vdms_ytdlp/main_ytdlp.py:593 @@ -2202,7 +2201,7 @@ msgstr "Verwijder het geselecteerde profiel" msgid "Remove the selected files from the list" msgstr "Verwijder het geselecteerde bestand uit de lijst" -#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:219 +#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:221 #: ../vdms_panels/video_to_sequence.py:169 ../vdms_ytdlp/main_ytdlp.py:301 msgid "Edit" msgstr "Edit" @@ -2689,6 +2688,12 @@ msgstr "Bezig..." msgid "Videomass - FFmpeg message monitor" msgstr "Videomass - Output Monitor" +#: ../vdms_main/main_frame.py:1638 +#, fuzzy +#| msgid "The downloader is disabled. Check your preferences." +msgid "yt-dlp is disabled. Check your preferences." +msgstr "De youtube-dl is uitgezet. Controleer uw voorkeuren." + #: ../vdms_panels/av_conversions.py:221 msgid "Media:" msgstr "Media:" @@ -3068,12 +3073,12 @@ msgstr "{} bestand in wachtrij" msgid "Off" msgstr "Uit" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:933 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:968 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "Uitgezet" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:936 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:971 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "start {} | duur {}" @@ -3324,12 +3329,6 @@ msgstr "" msgid "Extract images (frames) from your movies in JPG, PNG, BMP, GIF formats." msgstr "" -#: ../vdms_panels/choose_topic.py:223 -#, fuzzy -#| msgid "The downloader is disabled. Check your preferences." -msgid "yt-dlp is disabled. Check your preferences." -msgstr "De youtube-dl is uitgezet. Controleer uw voorkeuren." - #: ../vdms_panels/concatenate.py:45 msgid "At least two files are required to perform concatenation." msgstr "Samevoegen vereist minstens twee bestanden." @@ -3654,165 +3653,166 @@ msgstr "wacht... bezig met afbreken" msgid "...Interrupted" msgstr "...Onderbroken" -#: ../vdms_panels/presets_manager.py:111 +#: ../vdms_panels/presets_manager.py:113 msgid "Presets" msgstr "Presets" -#: ../vdms_panels/presets_manager.py:134 +#: ../vdms_panels/presets_manager.py:136 msgid "New" msgstr "Nieuw" -#: ../vdms_panels/presets_manager.py:137 +#: ../vdms_panels/presets_manager.py:139 msgid "Remove" msgstr "Verwijder" -#: ../vdms_panels/presets_manager.py:147 +#: ../vdms_panels/presets_manager.py:149 msgid "Export selected" msgstr "Exporteer geselecteerden" -#: ../vdms_panels/presets_manager.py:150 +#: ../vdms_panels/presets_manager.py:152 msgid "Export all..." msgstr "Exporteer allen..." -#: ../vdms_panels/presets_manager.py:161 +#: ../vdms_panels/presets_manager.py:163 msgid "Import preset" msgstr "Importeer preset" -#: ../vdms_panels/presets_manager.py:164 +#: ../vdms_panels/presets_manager.py:166 msgid "Import group" msgstr "Importeer groep" -#: ../vdms_panels/presets_manager.py:175 +#: ../vdms_panels/presets_manager.py:177 msgid "Restore" msgstr "Herstel" -#: ../vdms_panels/presets_manager.py:179 +#: ../vdms_panels/presets_manager.py:181 msgid "Restore all..." msgstr "Herstel allen..." -#: ../vdms_panels/presets_manager.py:191 +#: ../vdms_panels/presets_manager.py:193 msgid "Reload" msgstr "Herlaad" -#: ../vdms_panels/presets_manager.py:205 +#: ../vdms_panels/presets_manager.py:207 msgid "Profiles" msgstr "Profielen" -#: ../vdms_panels/presets_manager.py:210 +#: ../vdms_panels/presets_manager.py:212 msgid "Add" msgstr "Voeg toe" -#: ../vdms_panels/presets_manager.py:214 +#: ../vdms_panels/presets_manager.py:216 msgid "Delete" msgstr "Verwijder" -#: ../vdms_panels/presets_manager.py:224 +#: ../vdms_panels/presets_manager.py:226 msgid "Duplicate" msgstr "Kopieer" -#: ../vdms_panels/presets_manager.py:233 +#: ../vdms_panels/presets_manager.py:235 msgid "One-Pass" msgstr "Een-Pass" -#: ../vdms_panels/presets_manager.py:243 +#: ../vdms_panels/presets_manager.py:245 msgid "Two-Pass" msgstr "Twee-Pass" -#: ../vdms_panels/presets_manager.py:263 +#: ../vdms_panels/presets_manager.py:265 msgid "Choose a preset and view its profiles" msgstr "Kies een preset en bekijk de profielen ervan" -#: ../vdms_panels/presets_manager.py:264 +#: ../vdms_panels/presets_manager.py:266 msgid "Create a new profile and save it in the selected preset" msgstr "Maak een nieuw profiel en bewaar het in de geselecteerde preset" -#: ../vdms_panels/presets_manager.py:266 +#: ../vdms_panels/presets_manager.py:268 msgid "Delete the selected profile" msgstr "Verwijder het geselecteerde profiel" -#: ../vdms_panels/presets_manager.py:267 +#: ../vdms_panels/presets_manager.py:269 msgid "Edit the selected profile" msgstr "Edit het geselecteerde profiel" -#: ../vdms_panels/presets_manager.py:268 +#: ../vdms_panels/presets_manager.py:270 msgid "Create a new preset" msgstr "Maak een nieuwe preset" -#: ../vdms_panels/presets_manager.py:270 +#: ../vdms_panels/presets_manager.py:272 msgid "Remove the selected preset from the Presets Manager" msgstr "Verwijder de geselecteerde preset uit de Presets Manager" -#: ../vdms_panels/presets_manager.py:272 +#: ../vdms_panels/presets_manager.py:274 msgid "Export selected preset as copy" msgstr "Exporteer geselecteerde preset als copy" -#: ../vdms_panels/presets_manager.py:274 +#: ../vdms_panels/presets_manager.py:276 msgid "Export entire presets folder as copy" msgstr "Exporteer gehele presets folder als copy" -#: ../vdms_panels/presets_manager.py:276 +#: ../vdms_panels/presets_manager.py:278 msgid "Import a new preset or update an existing one" msgstr "Importeer een nieuwe preset of update een bestaande" -#: ../vdms_panels/presets_manager.py:278 +#: ../vdms_panels/presets_manager.py:280 msgid "Import a group of presets from a folder and update existing ones" msgstr "Importeer een groep presets van een folder en update bestaanden" -#: ../vdms_panels/presets_manager.py:281 +#: ../vdms_panels/presets_manager.py:283 msgid "Replace the selected preset with the Videomass default one" msgstr "Vervang de geselecteerde preset met de Videomass standaard" -#: ../vdms_panels/presets_manager.py:283 +#: ../vdms_panels/presets_manager.py:285 msgid "Retrieve all Videomass default presets" msgstr "Haal alle Videomass standaard presets op" -#: ../vdms_panels/presets_manager.py:285 +#: ../vdms_panels/presets_manager.py:287 msgid "Update the presets list" msgstr "Update de presets lijst" -#: ../vdms_panels/presets_manager.py:286 +#: ../vdms_panels/presets_manager.py:288 msgid "First pass of the selected profile" msgstr "Eerste pass van het geselecteerde profiel" -#: ../vdms_panels/presets_manager.py:288 +#: ../vdms_panels/presets_manager.py:290 msgid "Second pass of the selected profile" msgstr "Tweede pass van het geselecteerde profiel" -#: ../vdms_panels/presets_manager.py:340 +#: ../vdms_panels/presets_manager.py:341 #, python-brace-format msgid "" -"Outdated preset version found: v{1}.\n" +"Outdated presets version found: v{1}\n" "A new version is available: v{0}\n" "\n" -"It seems that the local preset database in your configuration folder is " -"outdated. If you choose to update the preset database, the outdated version " -"will be backed up in the same folder as the new incoming presets:\n" -"\"{2}\"\n" +"This update provides new presets included on the latest versions of " +"Videomass.\n" +"\n" +"To avoid data loss and allow for possible recovery, the outdated presets " +"folder will be backed up in the program configuration folder: \"{2}\"\n" "\n" -"Do you want to update the preset database now?" +"Do you want to perform this update now?" msgstr "" -#: ../vdms_panels/presets_manager.py:349 ../vdms_panels/presets_manager.py:527 -#: ../vdms_panels/presets_manager.py:567 ../vdms_panels/presets_manager.py:631 -#: ../vdms_panels/presets_manager.py:657 ../vdms_panels/presets_manager.py:807 -#: ../vdms_panels/presets_manager.py:838 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 +#: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:842 +#: ../vdms_panels/presets_manager.py:873 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "Bevestig dit" -#: ../vdms_panels/presets_manager.py:392 +#: ../vdms_panels/presets_manager.py:395 msgid "Name" msgstr "Naam" -#: ../vdms_panels/presets_manager.py:394 +#: ../vdms_panels/presets_manager.py:397 msgid "Output Format" msgstr "Output Formaat" -#: ../vdms_panels/presets_manager.py:395 +#: ../vdms_panels/presets_manager.py:398 msgid "Supported Format List" msgstr "Lijst Ondersteunde Formaten" -#: ../vdms_panels/presets_manager.py:413 ../vdms_panels/presets_manager.py:472 +#: ../vdms_panels/presets_manager.py:416 ../vdms_panels/presets_manager.py:475 msgid "" "ERROR: Typing error on JSON keys: {}\n" "\n" @@ -3824,15 +3824,15 @@ msgstr "" "Bestand: \"{}\"\n" "sleutel misvormd ?" -#: ../vdms_panels/presets_manager.py:493 +#: ../vdms_panels/presets_manager.py:496 msgid "Enter name for new preset" msgstr "Voer naam in voor nieuwe preset" -#: ../vdms_panels/presets_manager.py:506 +#: ../vdms_panels/presets_manager.py:509 msgid "Cannot save current data in file '{}'." msgstr "Kan huidige data niet in bestand '{}' bewaren." -#: ../vdms_panels/presets_manager.py:510 +#: ../vdms_panels/presets_manager.py:513 msgid "" "'Successful!\n" "\n" @@ -3842,17 +3842,22 @@ msgstr "" "\n" "Een nieuwe lege preset is gemaakt." -#: ../vdms_panels/presets_manager.py:524 +#: ../vdms_panels/presets_manager.py:527 +#, fuzzy +#| msgid "" +#| "Are you sure you want to remove \"{}\" preset?\n" +#| "\n" +#| " It will be moved to the \"Removals\" subfolder of the presets folder." msgid "" "Are you sure you want to remove \"{}\" preset?\n" "\n" -" It will be moved to the \"Removals\" subfolder of the presets folder." +" It will be moved to the \"Removals\" subfolder inside the presets folder." msgstr "" "Weet u zeker dat u preset \"{}\" wilt verwijderen?\n" "\n" "Deze wordt verplaatst naar de \"Verwijderd\" subfolder in de presets folder." -#: ../vdms_panels/presets_manager.py:535 +#: ../vdms_panels/presets_manager.py:538 msgid "" "{}\n" "\n" @@ -3862,40 +3867,40 @@ msgstr "" "\n" "Sorry, verwijdering mislukt, kan niet verder gaan.." -#: ../vdms_panels/presets_manager.py:545 +#: ../vdms_panels/presets_manager.py:548 #, python-brace-format msgid "The preset \"{0}\" was successfully removed" msgstr "De preset \"{0}\" was succesvol verwijderd" -#: ../vdms_panels/presets_manager.py:560 +#: ../vdms_panels/presets_manager.py:563 msgid "Choose a folder to save the selected preset" msgstr "Kies een folder om de geselecteerde preset te bewaren" -#: ../vdms_panels/presets_manager.py:565 +#: ../vdms_panels/presets_manager.py:568 msgid "A file with this name already exists, do you want to overwrite it?" msgstr "Een bestand met deze naam bestaat al, wilt u het overschrijven?" -#: ../vdms_panels/presets_manager.py:578 +#: ../vdms_panels/presets_manager.py:581 msgid "The preset was exported successfully" msgstr "De preset was succesvol geëxporteerd" -#: ../vdms_panels/presets_manager.py:588 +#: ../vdms_panels/presets_manager.py:591 msgid "Choose a folder to export all presets" msgstr "Kies een folder om alle presets naar te exporteren" -#: ../vdms_panels/presets_manager.py:597 +#: ../vdms_panels/presets_manager.py:600 msgid "All presets have been exported successfully" msgstr "Alle presets zijn succesvol geëxporteerd" -#: ../vdms_panels/presets_manager.py:608 +#: ../vdms_panels/presets_manager.py:611 msgid "Import a new preset" msgstr "Importeer een nieuwe preset" -#: ../vdms_panels/presets_manager.py:619 +#: ../vdms_panels/presets_manager.py:622 msgid "Error, invalid preset: \"{}\"" msgstr "Error, ongeldige preset: \"{}\"" -#: ../vdms_panels/presets_manager.py:627 +#: ../vdms_panels/presets_manager.py:630 msgid "" "This preset already exists and is about to be updated. Don't worry, it will " "keep all your saved profiles.\n" @@ -3907,11 +3912,11 @@ msgstr "" "\n" "Wilt u verder gaan?" -#: ../vdms_panels/presets_manager.py:644 +#: ../vdms_panels/presets_manager.py:647 msgid "A new preset was successfully imported" msgstr "Een nieuwe preset is succesvol geïmporteerd" -#: ../vdms_panels/presets_manager.py:654 +#: ../vdms_panels/presets_manager.py:665 msgid "" "This will update the presets database. Don't worry, it will keep all your " "saved profiles.\n" @@ -3923,15 +3928,15 @@ msgstr "" "\n" "Wilt u verder gaan?" -#: ../vdms_panels/presets_manager.py:661 +#: ../vdms_panels/presets_manager.py:672 msgid "Import a new presets folder" msgstr "Importeer een nieuwe preset folder" -#: ../vdms_panels/presets_manager.py:680 +#: ../vdms_panels/presets_manager.py:705 msgid "The presets database has been successfully updated" msgstr "De presets database is succesvol ge-update" -#: ../vdms_panels/presets_manager.py:690 +#: ../vdms_panels/presets_manager.py:716 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3943,23 +3948,28 @@ msgstr "" "\n" "Wilt u verder gaan?" -#: ../vdms_panels/presets_manager.py:694 ../vdms_panels/presets_manager.py:722 +#: ../vdms_panels/presets_manager.py:720 ../vdms_panels/presets_manager.py:748 msgid "Warning" msgstr "Waarschuwing" -#: ../vdms_panels/presets_manager.py:705 -msgid "Sorry, this preset is not part of default Videomass presets." -msgstr "Sorry, deze preset hoort niet tot standaard Videomass presets." - -#: ../vdms_panels/presets_manager.py:711 +#: ../vdms_panels/presets_manager.py:734 msgid "Successful recovery" msgstr "Succesvol herstel" -#: ../vdms_panels/presets_manager.py:720 +#: ../vdms_panels/presets_manager.py:743 +#, fuzzy +#| msgid "" +#| "Be careful! This action will restore all presets to default ones. Your " +#| "profiles may be deleted!\n" +#| "\n" +#| "Do you want to continue?" msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" "\n" +"In any case, to avoid data loss, the presets folder will be backed up in the " +"program's configuration folder.\n" +"\n" "Do you want to continue?" msgstr "" "Voorzichtig! Hierdoor zullen alle presets door standaard waarden vervangen " @@ -3967,30 +3977,30 @@ msgstr "" "\n" "Wilt u verder gaan?" -#: ../vdms_panels/presets_manager.py:730 +#: ../vdms_panels/presets_manager.py:765 msgid "All default presets have been successfully recovered" msgstr "Alle standaard presets zijn met succes hersteld" -#: ../vdms_panels/presets_manager.py:750 +#: ../vdms_panels/presets_manager.py:785 msgid "Create a new profile on \"{}\" preset" msgstr "Maak een nieuw profiel op \"{}\" preset" -#: ../vdms_panels/presets_manager.py:768 +#: ../vdms_panels/presets_manager.py:803 msgid "Edit profile of the \"{}\" preset" msgstr "Edit profiel van de \"{}\" preset" -#: ../vdms_panels/presets_manager.py:805 +#: ../vdms_panels/presets_manager.py:840 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." msgstr "" "Geselecteerde profiel verwijderen? Het zal niet meer hersteld kunnen worden." -#: ../vdms_panels/presets_manager.py:825 +#: ../vdms_panels/presets_manager.py:860 msgid "First select a profile in the list" msgstr "Selecteer eerst een profiel in de lijst" -#: ../vdms_panels/presets_manager.py:833 +#: ../vdms_panels/presets_manager.py:868 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" @@ -3998,11 +4008,11 @@ msgstr "" "Het geselecteerde profiel commando is handmatig gewijzigd.\n" "Wilt u dit toepassen voor het conversie proces?" -#: ../vdms_panels/presets_manager.py:843 +#: ../vdms_panels/presets_manager.py:878 msgid "Don't show this dialog again" msgstr "Toon dit dialoogscherm niet meer" -#: ../vdms_panels/presets_manager.py:940 +#: ../vdms_panels/presets_manager.py:975 msgid "" "Queued File\n" "Pass Encoding\n" @@ -4850,6 +4860,24 @@ msgid "" "subtitles except those in Italian, Dutch and French." msgstr "" +#~ msgid "" +#~ "Invalid preset loaded.\n" +#~ "It is recommended to remove it or rewrite it into a JSON format " +#~ "compatible with Videomass.\n" +#~ "\n" +#~ "Possible solution: open the Presets Manager panel, go to the presets " +#~ "column and try to click the \"Restore\" button" +#~ msgstr "" +#~ "Ongeldige preset geladen.\n" +#~ "Het is aanbevolen om deze te verwijderen of te overschrijven naar een " +#~ "JSON formaat dat compatible is met Videomass.\n" +#~ "\n" +#~ "Mogelijke oplossing: open het Presets Manager paneel, ga naar de presets " +#~ "kolom en probeer de \"Herstel\" knop te drukken" + +#~ msgid "Sorry, this preset is not part of default Videomass presets." +#~ msgstr "Sorry, deze preset hoort niet tot standaard Videomass presets." + #~ msgid "Refresh all log files" #~ msgstr "Vernieuw alle log bestanden" diff --git a/videomass/locale/pt_BR/LC_MESSAGES/videomass.mo b/videomass/locale/pt_BR/LC_MESSAGES/videomass.mo index ae78a4fb80b47645f31b2456dfcd239debf7944d..9a97f59996fca0345eb6966038e888cd1d89beb2 100644 GIT binary patch delta 10121 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 Cd<;MU delta 10948 zcmZA733yG{8piP*A|i=7A%<|05@RAn%tKVoYOc9$4mlwtIh-VBjw))NqIA%bDmAyH zw5n(u6h*0`Bh{+Tx1+1tUibdrvzGg4_w#)DeQWJ$?QgBU6SsHu!jflJmGob(6#Tfu zb|J`dYT}V{jx)K0<7CCC*KxYnbDS#J1M6TK_Q!cR886{6>|5V)nqid&jxzy!U^u>p zT+%s)rSO97{}>}2$M1Ya62^|-up<5!D`3Tjj#C!n@Lo*9Sj@$Ed>nJ|b&SMDjm!X2 zv5k&H-FO%3#s{%H7ULW|kD1)x8Qj=$O49KLmcb*a3!Xs@a0U9;cUg8coAE3e`9iFP8&FSh7{l=> zmc?_{E2x3~VB5D*1B*y96{v&Jw3G2^?2WG3C4)ucd z^pmKRV^Ifqu?8+f4PYBq#aB@SIg7f{ht@B#678RnB09m$hmLEFs=&Rd*E-AgFGQ`S zRkrPaf!4$D%IK5K}P;Rq~0bMfDL@!z-vKyoH+ks_l&J zQByb?tLXh-M4}rPqTc`gxEkNV(wNrX+;}YN!V_^aF2)*IvV*yCZB)hTpgvU1usjaI zS~v!^sOO_9z5*ll{;ws`fja^nd{Aur9I7%`Q6;{CQ5f3MT%Zb&!)61nP#LqAC&5)7&Q-^*blVPol*YYj-q9 zU7$6FVk+teJ#aA&M?J}PRAqj{GFZ8nF$Q(vdKiw4kXdnBqOLa$2jZhx9sQR`v<7~` zSPbv&IQ20B@4>;?5T~JTya`KVk!>Hao8EZjzCp%9O`X(4E36?M=I`j zc9Uq8@3S67mF#`g6PD~_DinvhaSCb*+S~U1sJVXtBXB&H#VNKuAM4UCKviHrYOTG6 zf%pG1NhvyhMV0;*szmx#ruHDzVj6*b44vhu3!cPy{0Vh_)qds%F&IWW9yQ>mSPolb zICe*!HwY`~{hv<4r_fo3D$yp?NDpEKJcjzVU%~{8=x?T~4eCioqNZvJR>XCfgu77Z zUBNXNIlz1mwxj0$9rSxhu9Ij0y?N}(I2xzo$G8k17{u@JAl?ehr`>ok3kaV>t(Ev8 z{6b-WUu;18^Pwz2j2LEqyEexrw6jnTwhlE_n}#v}X(W5-&DiAipn21``15gzhk9xf~U>)3K_n#a={rNrPd_hMHx<(p1pbi{~ zn#)J5OHd_Vi&}JBQBQOjHQ?h|89%iCU=4cE3@8d+>`z3U-`7vln#6*QXHpYxLbG8^CrF{T%v17XVldK3eHJ@SN?ZH^uw@^=3gN3F3rl{555>=_L z$k?5}SW?fhi$o*cgBrjmSPD}zOhwwF-iltx3C?J2jAKx*(`rpx`II)p>a^QoZ5(3TlTmNWDy)H9QH$*;YM_^~7XBNx zCZfig-+u9^fse;Y_yktd9G1^CtFr;>ghbRT?}%D#gHR*Sz|xp!_s>8V?UmRF_n>ZY z88z_mapt^uR7IL&2)4ms?1X+jSyvLxWd^3=RIH1yp$k7l%~{ZRrUBD19(SPT`aG&4 z-(WcEPifsS0ySloP!+C%S_|=b08_G<|K%h<)1lHo!phTuoA4#vi+bV=mTEW5!6~>8 zAHgPGz74n=H3dl%%oFy&#-aWH zoqIb$d8UM3jG#Re^<;~%0&in+x?eNmHisq;Gd|9x5zgiy1{;urF1Mn zEuJc@jEZJ)D43ulNMnl>dBL_19rm{oR1o? z|8)|r;d!JYxMA<7oe4+fg&jccL-wqJJ>zf~A_ zgDP<+Y>R`D>33G47H8NzQ`s7*w{AHlv<&FM9D`=)#BQ zn?>bEEwX2^4(>+X;3CH2Wz>^8kC{r;#3Y(2s5O*CmECg%kYMuL>HL5 z#EfVwYASYNBEEsT;E$+97QECvL37kVJD?U@7u4JHkZtFq&Rd4naU<%14%zlcsPp|d z?2f-sizAw0X)02%H1stT$&LhGN_0<`0tlP!-8SO~ESE0C%7Z zi!nm)|1}b=)}JvIORV6dgPl=}Y$+z-23(70klAoDR+=aK$r`@O3^*S3WQn$&f~9D; zM?F|)RAq)?dAm}_g&sVMe`1RQRya0WZC3R;%%=S-YJl#?&68|LeNaweLkwAC z-lC?c*Eton7>8n6oPoV?5r*sizeu7*@i}U)!g|nG6S!UdJWUjuNzDusf4d!IXsD)`wvlz@hT?cuUG}^ zJ#7|i2Ww|ke|OXxco@TQtTh*_)1HO<@k!Ku2Ck$2+A(UKS!6R&BVTG=i{Z2jQ6=Ar z8qiG~j%A)P?|VAdq&)}q0a}lV_$J2VPuLu*GM}1)-l%~Nf0p`}CmBtLE}V;+n|as= z&!H;gT5qN(8FizPSPQ43p7aUSaT~4sunFxGr~%!=NUX8JR5l59ek(tT1~3G*2F9S~ zY6Yr9h1Qo)PjVQwy02qB`~jmes?e@_)PPcO7N(-6@-TM6w=osVK4&WA??a;3YbNTz z?Wjr=p-O)gH6`b4|Hr6-{eW70f1w^Ad82uv&KN^`6zaU$SOXW~K-`Q;_y;mYey7p% zrbNS0PdEd0!ba?XhcOjzHJNVGV*ZfC)8z;x6I+wU|b%E9)upFzC^AETbQ{4TSYYGXd_1Z;pC zu^pa9t%)#39fdKdw&?Wn_>%PyY5=FuuaSLAq6<5F%m*eEwWwUE8?;7E$soIb0@kLz z0QEL(!8UjlwaT3$^XoebwFcr)Q`s2r$MHCWO7AbC{)^~nvDb|BO`K2rH>AqW^nKT{&UHXvuH5-Fk%q>x+&q7V%B-E6xL{05( z+wVU~q6&P8u~^}-Sscw!C-%dtI38Q$qnLmPaW#I2wQ%+u=E>Hh&fAC@@FCRs=WY8t zEJfRSGw?R}oe+|`v|~`OPiIWVY}AQ`s3+ZzTBPq_D4xe)`~+3ntEftrddsYhNNhqo z4Yhv-dhun{+ft`k`~55!5{+~_sv_nqVZ#4$d9!jX>+Fn)% zTMhK#jzG)&I6_~2(mZ?2kL2A6#vd5yT4dQc1K95$&W~Sc+}UQ347ZKv*|&lGDSM%M zxQ>`h-)!uJ`2^pcz+0nrplv4c4Ev7~C5SI*^FlZ^$=@fm&Bf9|)IX8rYt!faiWTeu zdSv~_$b0R+>9(J5jFUqChHZDC-G+P>K7?IxBMu{8CO?CBwpYko5q*g~I{(!CKSc69 z!M7o>v7iJ0P2g2~;?ven7-x?;PR=wt`!T}q*RDdMG40O8b@D&d$)>N}J|dPFLHh#1 ztUDDo|4$QISiRUenK(<_+18SKh=p|gM%1}$pN`?n9r$PZPdH5-Y;}l!9M=X1V?8YT z$9eiXdI>-~-47B^`3T#0^-2Yk96yga&pV}DWIYOKMS8aU@2H|5wf8sS_P+%|r z5rKR(p=|>3F8NlX7x|+^B>BU{B64jH68y>td>?AlA9(()c#gQUeMhpHonr|7*1EI# zXrI(ccAIr4!G^Yf6Ztao_lO>ZK2Whl2lB^pH)?wUL$S+vk|L6UL~HVKcxO9gllQSX z`!X;M+u<4FGNC`I{#)>7Y;FG|v_2=g(NmYu*2CbGzz>N3*!D5I|9RSOLLch;=(~iY z32l`O&SCmf$x9L4h*Pv5z;Bcj57K^2mFz>KIiYQ%!8wjyIpDl)Ct-cs+Nu%f$X_CI z$XgQnjgw6KHPqJ15coOeuH4HpuhO1{+LmY~m85aiv;#l8@-vy3V-KoKek-tt)k5F5 zFi3iwo4RH)$vxuc%?SF0_Y{pCz>ae%jia zU<0BeQI&`xvWYQfw{x0&C!wu3t|21Ho8e|Gh1-c-q6Y0Z3I9qO^NFQ2P7{mBwH+}8 zetvmZzSr)*faQpf*w=`NC$B`5yz5w{ZxNk|E5u)fwz3@eC^1gIN!F8SOT}HpKJpCP z*PlF!ydk!?eeLidv4%cvVTQo}ogv2_vlQQ!OKz~hQEd6e~??r2MY|Or3Vj+1gVw>H!0(JkuAMNta z_5#Tkdr({QzIMk{Od~?rHxXB30)9daCbU%{yhI;+{^Ph@JJ{lEpYlwT`vZSNsbe`E z_YmoK9n_Y50kMg=$uWy@2=NZln)V2M5^oa`#B3s((3a1>GFXW7@Cnp5z!3PE5X91b zk@NsNKgOQ;B=PB82lcdh_oASB--HzOPlz7s^JIG`d0cVRXU4fE_&m9uypCaEt{!== z$(dPMu2CMBcBi}Yyso^l95z6QyR&lRT)Fw9GQ3&o9-qsb5!h$W&UKmIqOTGzmgwkl zjduGy8TnbUu0dlnb6xJyd70iEb8T*x=k+uyAYIZWyIn3>Ib2M`@!JV7uzI&bmd)1fj`PSGnn5PeosjD>^H;nrA7?nECi&)1gf-f;EMpbtlf2@wd*c79E9H%EX#>ASA)5mq3hqWCiH~Tx*b)087 z9vk6^dXAHX$8n(Jc$~4HIL=@SUgAOQSKo2wV(A8slNV25S$u)f7}L;k`eHZCj^{8f zK1JP_%T;ut4E(bKJ7Hr?!#`QDE$TsrU<$79B#_Yw=A$1j$26FP8F3G0z!R7buVYpG z55qCKiQ`0KQ;fi27>^4v2>qLy8;?LeNOM$6&qRN&@2n$}0(WD2+=pZE6n=)yn>o%@ z{2A#br+#zCNsWy$2;;B?_OtO})D2%jo%cUXg-=!`?P zz**DwA)`B-kGi9c$Ut|FU|r1G!EuUWcg%wG&=-?18}39McOLWLLsXZB zbToZj4OKn_)isHzt~iPZ(esK-elmOMK%MA5s>xGyHWy5b0mPB01Iu6-c0=9x1k@8R z#82=bYSsjGF@rf0b>5PwLD<0B5_4+)cO(JdYm#jnG&_P>%9CZVKSnr_5$Wv7PRP>7$m@w3F%`ghvVJ@7AdZ5+u zv_CV+`GW$@+j4!(sBVNhFdmcRU`&C-QBN|)?q7uJnpLO^??zqd45|g*V`_SZDpPl3E{cf3R0P;fufrv*_5mPFlHZ_J2;Ff~p@-QX=8; zGM+^Z;*ihHAa3j-qbJ;n>bsv&qxG7NU!k5jOMlbErBPi}7xQ3u>r~XBO+u}p7g106 z5Hn)x0leriE9%C6M6Dy9gJkqX$1oY5Lw~%4L3kHc@jdFsdbvWuqzCk^}X4IJ2 zfrarPro*S087_n}5@+QH_A0x&&sUK^LP zaXk#AJPre}FJ{8AsN=uE5L|?MkZl;M`G1m(p7j$fgkDAf?tx9KngaR{o3^P!%+ z0jh6%qQ<~fRK2-a8&~2__z1tijYIi(!9oOTfsUAx>pP>!Xj)9L{(!onqo^CYY~#C_ zhWI7wg2{)OPcwh4NL&#s;|SCf??H9R0aOeBj$h(KyMNGd+CP|r5oFZl38*LBhC0Dj z>upq%{)5HP8DR!lH0s2)u@-)YMQ|fB^PC%~7HT}w4Auddk9a=ny8A}b{;F`10^PtH z)SwHaSwgV{sw?WFrdJcxjkU6NKn>3BsCs=+Ei?f2UdQPYm2V@lyX)O)L*4lcOpZR2Okew=PT-Gfx&o-aD}#EHSgeYTus9~5 zjz5fACyrqSyn<@MY+sq<3t>vG@02FvZ4&gQLOs-&Xo}^q1J=dwP+jyls*l4an-(aJ zs^1xP;XbHAJOI^VlQ0>s$26FPYKc9Voa;NklSzqZF%|xSy3^aJiqDb%IBBMs3xACT zh<~v0S=5Sl7j*;4r<#^ZjT$>4m>Nr3E2CyZ9rWnVI+00>-B3;WIqF6>V-wtiVHhyY z^j!?<#;T*5xFu?=e2Q7ngBk<#u^=X4I9|hi=ri5iK!NGBe*^{9D9Df9(I01FI{Y5h zCF^ax6|)i_u<>=QPW+!OFEPWkTqDd)c_&ogPrzzA4t4(2GtC2q&ZPY{xXMuAhs`k; zc1AVPc+7~2sHXi93*%-~y_*?ISQ)S5SsID1;L70H*(p9J%K8-2xGOC4cAP??w z9+GK7!3$I1)SG8c+ypg6c&Ho}~bZ5;`(V{6ErsqY}g|A?7yp6iStlt^)Vj^SN?k1-5iqbDPoYzxf1EsXSnQyVp1u48-5lW2a>7>BxnE%-IwLpAl7 zh35Fh*p+xU>IowjnQz6i*oHB)5rD8$&mk*-`;Dh-;xP zTpz1rd(4Q-kQU?pPbNJD$1n|E!Hjsv`WkZ(r`u>&wt}dptcvQxW~d9a!_?Tv#zQfX z_$zCobt9@p4q}+*|5Y-XDA2DZ%Rn%yB^shXwnW`vcT9#dw^E zjqo|vO2)L^!OarS+RaSBd)O44@8JhlT#Xw2nSWyDaAUPm-=EHlpBWf9e6M+5KR~re z_FwF~0M(Z@FdXaQ2u=`>?TGL1Gxh84H}yKATCTfw5QY+uL$z!os_T~Tr(tx0^%T@V z{{v>lYldOOtx!$+1s20?m>=(Aam>WXQ+XYX!r`bESdKCH9#de-G$!nF7V)yK}Srti~YM#2D8d2ZANilFM3KtHU48YA_sai|vUVfT+h zjj5>~G7)4JphoXr%z{TSC*HPk%ERV^BitH`T5!6f*7%XACZ3Oapd`$WM=%H8!CaW? zH#1ubU@WnxJeiVYMx&m58xF!-m>J`am<44J>IsLTrrQJz!g;6`S&Mq&pD+rKVtag! zx{((DGdD00^AXQOKTV9iWPB+&hC1O{48wca4E>IpuiZ{qka!xZg?3^(Jd5gro0t;s zVsd`Pqkf@%6SsKIs!)dJVBEp6_5(Q*EVU9a#lLsLipX+F9BxkWc|o_x3Y(VP13 z|6;u%UimlePhBV5U0MNO<4ks}zQn;3e1=+AVjk1}>Z5*-O_K~ponR6M;{q&#n=k|3M7`Ia zVt)*HVwULfSc7;w7DMMLgOCeHV{XDy&$tH0VLTqgyja2W+)T5ss0%38dN2cPae_^F zpZM(yewN3(FHOC_UYU9S0(HTl*GxIAfx6)!Dr*|XVj7IcR5%p#;~4CKp0#AEknw+O zPS_CV5ck5A==09Z-_)o(&WjbX0oKN8*b~p=*BJYrRSz$r24{Z9^$xxzsCrvaU6;#s z^{M7@&Xds{M*A2mpdWE9jKpTPd^lzzo`5-V0cOVCs1@)WhTvmV3#3ivdi%T_mLxud zx&c4>B?gCJBhCLcWHi{`p>CvjO4s{xse}w%X8>wJY3=JeDHzr5F(Yx;)UJ1$4#qLW z6EG0dq;b6qR}R$q2B2EPgPrjOY8J$$bshcv$w}eodf)RMQS& zZ|ZeHU*fr_zFdfUqTlcne1~nYUV7K*f-6zw=`y(9-?q0w?_fobKA)Y8uJ^S$JHVXi zK58(A1-jnpQVhe1<5AOZ2G+r|m=D8)T<=(@gJX#kQ0qu&CUabMEKS@U)8Zmbk83iy z9`ASgE(*dZc!CX{LCWps7K}1g1`!}3=SdAUqu_3-i4X*lOuJ;qH2Ws%m zL!D?F>PGIOrs=V8bHh7xnZbA!b5Z`>nkB;ZuKg8I4^+=XW)hh}w!q2ldOt$*qq?9A zcEo|!bErNqlgITgL|w2G@o3zMH?b5h;)_(C$84A(uj~C=av}65o{Q1wSx!cS?gDnh zaN4sdPDGtxJ8BR;M4hO4l$D{5sMj+)m;P&aZGBha@P z>jM@*-Ec9~7^#SrurI0we#EhuCE9hCa(yR}jGnYwjO$d!c32)4qPpNRmcgLnrfKV= zx@;I~I_|TkE@5uG0jedw#yq$aHHfccHD=3O)EKH#iutd;>qSO)JOcG(U!k684i?7k zs0HV5)I5HGw=k-->r}z?Wz2DnP%C2`*2Z|$G~0%{(W|KQ<|*rXKR#=hW&Q_IFpUD8 zc!~8g>VQn;T<;H`Z7?PA1=JwBh9T&bH*qLtCoGMcZp~3GFcdWy6H&(>!Eii@8f#C= zd&~j(Dwvl`T~vjRsMqCK)DumyaUyDrtUxv4W7J^EQPI>JfGQu4t8fFJqsiM;a=kw# z$5b(0^a?e$s(7lJ=`jc^P%sHKSPr3{$d?XN-{nC)c@@lr9Z_$;!Ki6A6BFR+GtzYkwW4Hz5rWmqHE`z2JhG4q%GJ#Yc0Z{m7?d9@bRG7(M9O4l5#5br>B*&ED@ z!OdLf4dc(LNJi75TnpFxb9#GJd=zWoL)4v@ZfVwut{6l-3iT;A2fO2GRM(VmW$JB0 zt$@c-Es&0tF z(ZMuj71RRO2IH|8w#G}C97}dIgSH&@)P9V_^QdY4zN5#C@{FBa?@u(@QG=?awHhub zZio}`Iev?t&St63+QoH-5yznh>v`0)^6P3^G7wu3mqV?rvoR18u>fxLkkJLNp!)P4 z>du^QrX>PU6$>FBK~5{wh5B|kZ?&ZuPW&9Tf@c2Iv`k|RCGLfla2)Ew2T(100X3#P z_iaJu&&)zm5NENYs*TU!aN>KYzW=m`S>cwVE_~ej5GxZ0_B0o4idxVTuqB?vs#u_x ziQ|zQ@HmIasNxgUV2ti2FvHZ=l9PmU!3u%jD9SkN6Pg#s{eL zX6oa5f4kNM#}Hq~9N49=Zix9mmW&41LDU7_qWUaTKeHnCMh(&hr~}WV2HSJgEa~>S znYNozD`-T2Gi#clx^6J4sh419Jb`_%_yFD=T;EwrMuX-RYLK`C%?jv;S{W;%UMdq% zeY_DhEAFAX;1w3eY=cb8)kQr(7t{^!Lbc>2)Vt#mR>4$*ng2Rb9Wwg1YlUGr2=m}v ztm^V37S1MihPuuk;snWx*kqV_vVf6hL8*i#sP-9Z9a)I2@DS?4;mkG-_EH#*u^#5X z=6g2^7UO8t4dotXP8frFvbLx`pMqNP_M@IK*=X1M2Zc7Mrapt8qC3X)eGgQNtwi0} zb!>|vW6e4-a4Z+pf^mWZHGP3E%@`<&8WZ(VcRCI=Jy)Qn)h^71XRsl@z$RFGoEaMn zP#-XUGC)nuzsEwcqRW)7fUCe_(mEHEK+G(tKs6O$pTKZHK(*oM||c_{wD0IgV|o zn7GhXv*xeCX4K0*&Afd2Pd5wJC45KyXQ)B9l~22P-8x`f{F#dWyQmo@61oN-50pd1NQI34!9|imk%e-w9s{aAkMzn z_5PvaSFA%kW{H_aM^V!_c&QmfjW9rMIfIOr+$H!FH)CU5z078_VR>P>3rmuUWUb{;%9FJi^_2mOHT`>D9Gw;WsF1QKT;Z@Xh zoc4qH9@vESh+m`nwAO0#WaDun@m|!Jsk6qcs4Y-8wgxr$ZlRX)fVH&0MrD06-Eafy zJs!Hwb$n>@Fx*5Ov7Xl{@p+trfBa~gw8us>J(G|LO|!5q=718Yu4#i>$$F!nWD4fQ1DFAC+4z}_gSVPllo$0b zsEdWLFKUn{+Wp72GXK@ok0{XK$iB@?ua>BmIFDKJn)MB8sSe$4ZYU>e0jr3AGI(3z z5aJ5E%u8nrZlyeSx9eP>{LN41cRy!;HebOW&tB6chcS>QocxPfsTS@teR~G=4hYYaXm~VE_%Uq&2iMcPj%6BT~1Wr z7eoC}+XB_H3CKIa<9tVECIuUD62@L~y}vF$hSiBrqM9`Hvg`e;)=X?q{094D+#ja= z1Zo8=cg1yX;w1bGQ7TK z26ci~s2drI#c=`ZhELl4?oBhg!!aM_4Nx~Q1U1d(qh`-G)bZy~gVygBgS{7-ykz1q z0juCc)R>65ZN@;rU*@Gz8}m}$5;YA+q26NKZTSP#3K#mfc|BLf>%{Z1IS#*LzJN}l zUgxFmGXFKW`rI`iAm5?l?N||S;~30y&-~cE5}Oe}!4g>KzIpOd=tsN`^|RnkOpb?9 zOYt$(I^h1p&yehhL>*u7p~noOP7lpT=2_Ge-a&Ou#z*E`Z6+4e2_Ez1gE6S@{zupq zY_QyxctFsUhdEwh_B$tm&;Nl%C~QEw+@Gs*YF5XxtehT4mj z!~fa*Wy-ZNCK>cxUvu}v)||peHsHg>Y@GaCa)pUw$ZJc9JCF(D-Kucm51T$lwB0xG zhYZ#L>ZPT;6{^{vQ5LLvAD&+e#NQPDN`=w(Ky`<op)=*;(>VFyb@ph4*4k?^{?Jy1dr;%TdJ|ET9J2n&L z+PYKT8Vjkt*tDo?>%;zT?DJ1XD`vKp%`UzOh~8~LXka|~bEaz3Y=j-&=8U(zo2e~)!Y+CC-LYBf`xQ=OzYeN_sxlkSqVowk*E zxp=ql@CCU!q!y;g`|pqZdx(9rNCD(;DdrqsV*q6%@eOe@dtO5C`&N2hQ{fACXick0 zz9nh6t+FRI1Xmi!TXiP~6~orTm}Wb3Y_jFrjZi`TpPQofhe%7XDL9z z3R_tx{f@L(8Mdz}FTsJ@(ougMaaa6;_>%VFDAF+Ud^UT3@>q|*Ql|pt+Wtpg+ayvK z@*~+_S^Zy>6Ni&ZQt%~7+vijmNZLj!LfI#_d;{@h_UntnkG!^e*aq*BMpN$};a)Q4GTjG&B<2`39yMQuGv8_55Rb4htfE9|jk z|9|7-!Ta*xZ}(lbZlS!ml5NH87)R{w|HD+e%_#~{n2kbh-%|G29((~^QgzCkvj2a$ z+}1lud4CoAwxe`y8W8-&WcR689s0LfL*?iQebWK%lK6X+9~Or2o3n zEz)^a9`hw-6UpDByczi*51CnHveEQ~ z*pZbKV*4nVeLG0?*{}ayWEPx6oPso&be^&gTYvHwKZ;fUCGo6}%A&}3Bu!)AAyOje z@bZ2;x^IVgry(Oy9N`|2OIHXmKcl<=8Dy|R=KrXZR$ zn7ABq9#Uj7`}}>_k(-;SL}4i^Ou`UsjUTqLWPT+LBF$!>!@f%JVf&uAH|4cRSGAvQ ziakCv=k7(mE@=VfF?f(VLo3?~11LO8J`6M99(JB1?@Ri4n?m_-wxAHEo4uiQpywdD zcci}T{h3sT%Z zobvIuY!klfy;Q`*(2ug+*p{Si8a^le zVe6_aCvgkAzcKL;_MPQNQRlt(vi-}>vJ}?90a%SRo$`*PLF8-WJj}<_+$H~%e0kDs zd(u(lACW(Xe(e9zmXmewy8o!&STH<7fZ z51rk?))E4pDdTQ}JHhW!)BZ$lsIG^S2-@((Fni0eqj zDF6ROEQqX*y+}oElL;nZLrkk3cKZj%Qs?N00(?f?#MW6%{2wXF#{Xe5F0{|qZ%Ey0 z$ju zgawpOC54jzf&CwEpHW_tl>cPsWHEn$B__Wj_~ln*HiqPe>@w$cbZPlXhu->CF2 zYRhJDs#wopJgEuwzp)o8j@NvWT37EBlvJek)MQB|+hxd~RAAEMR7w42&&-}wX~QS^ z-Qu&SUW)dOE*@5_WZ7a#2QRJ6w>2__yEWz3!+vhrrgPW6aT{%Y)5$FnFt_ShH`~@7 VgWdHN=Z4jAGjDyn#qHPR{{Z^!>3{$L delta 19571 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 CuK?2k diff --git a/videomass/locale/ru_RU/LC_MESSAGES/videomass.po b/videomass/locale/ru_RU/LC_MESSAGES/videomass.po index 9980c8147..d00904044 100644 --- a/videomass/locale/ru_RU/LC_MESSAGES/videomass.po +++ b/videomass/locale/ru_RU/LC_MESSAGES/videomass.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Videomass 5.0.3\n" +"Project-Id-Version: Videomass 5.0.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-18 10:29+0200\n" -"PO-Revision-Date: 2024-01-15 15:29+0100\n" +"POT-Creation-Date: 2024-01-24 16:17+0100\n" +"PO-Revision-Date: 2024-01-24 16:19+0100\n" "Last-Translator: ChourS \n" "Language-Team: Russian (RU)\n" "Language: ru_RU\n" @@ -901,7 +901,7 @@ msgstr "" msgid "Profile Name" msgstr "Имя профиля" -#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:393 +#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:396 msgid "Description" msgstr "Описание" @@ -1949,19 +1949,11 @@ msgstr "" #: ../vdms_io/presets_manager_prop.py:82 msgid "" -"Invalid preset loaded.\n" -"It is recommended to remove it or rewrite it into a JSON format compatible " -"with Videomass.\n" +"You are attempting to load a preset written with invalid JSON encoding.\n" "\n" -"Possible solution: open the Presets Manager panel, go to the presets column " -"and try to click the \"Restore\" button" +"You can try to restore it or import a correct one, otherwise it is " +"recommended to remove it." msgstr "" -"Загружен недопустимый пресет.\n" -"Рекомендуется удалить его или переписать в формат JSON, совместимый с " -"Videomass.\n" -"\n" -"Возможное решение: откройте панель Менеджер Пресетов, перейдите в столбец " -"пресеты и попробуйте нажать кнопку «Восстановить»" #: ../vdms_io/presets_manager_prop.py:93 msgid "" @@ -1975,6 +1967,13 @@ msgstr "" "Возможное решение: откройте панель Менеджер Пресетов, перейдите в столбец " "пресеты и попробуйте нажать кнопку «Восстановить всё ...»" +#: ../vdms_io/presets_manager_prop.py:125 +msgid "" +"Operation aborted due to possible JSON encoding/decoding error.\n" +"Fix any errors in the JSON code contained on the FILE before performing this " +"operation again." +msgstr "" + #: ../vdms_main/main_frame.py:193 ../vdms_main/main_frame.py:1372 #: ../vdms_main/main_frame.py:1402 ../vdms_ytdlp/main_ytdlp.py:99 #: ../vdms_ytdlp/main_ytdlp.py:148 ../vdms_ytdlp/main_ytdlp.py:593 @@ -2101,7 +2100,7 @@ msgstr "Удалить выбранный файл\tDEL" msgid "Remove the selected files from the list" msgstr "Удалить выбранные файлы из списка" -#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:219 +#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:221 #: ../vdms_panels/video_to_sequence.py:169 ../vdms_ytdlp/main_ytdlp.py:301 msgid "Edit" msgstr "Редактировать" @@ -2529,6 +2528,10 @@ msgstr "Обработка ..." msgid "Videomass - FFmpeg message monitor" msgstr "Videomass - монитор сообщений FFmpeg" +#: ../vdms_main/main_frame.py:1638 +msgid "yt-dlp is disabled. Check your preferences." +msgstr "yt-dlp отключен. Проверьте свои настройки." + #: ../vdms_panels/av_conversions.py:221 msgid "Media:" msgstr "Медиа:" @@ -2563,7 +2566,6 @@ msgstr "Фильтры Видео" # Перевод всех отмеченных изменений на значение по умолчанию #: ../vdms_panels/av_conversions.py:389 -#| msgid "Reset All" msgid "Reset all" msgstr "Сбросить всё" @@ -2893,12 +2895,12 @@ msgstr "{} файл в очереди" msgid "Off" msgstr "Выключено" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:933 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:968 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "Не установлено" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:936 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:971 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "начало {} | продолжительность {}" @@ -3117,10 +3119,6 @@ msgid "Extract images (frames) from your movies in JPG, PNG, BMP, GIF formats." msgstr "" "Извлекайте изображения (кадры) из ваших фильмов в форматы JPG, PNG, BMP, GIF." -#: ../vdms_panels/choose_topic.py:223 -msgid "yt-dlp is disabled. Check your preferences." -msgstr "yt-dlp отключен. Проверьте свои настройки." - #: ../vdms_panels/concatenate.py:45 msgid "At least two files are required to perform concatenation." msgstr "Для объединения требуются как минимум два файла." @@ -3408,142 +3406,154 @@ msgstr "Пожалуйста, подождите... происходит пре msgid "...Interrupted" msgstr "...Прервано" -#: ../vdms_panels/presets_manager.py:111 +#: ../vdms_panels/presets_manager.py:113 msgid "Presets" msgstr "Пресеты" -#: ../vdms_panels/presets_manager.py:134 +#: ../vdms_panels/presets_manager.py:136 msgid "New" msgstr "Новый" -#: ../vdms_panels/presets_manager.py:137 +#: ../vdms_panels/presets_manager.py:139 msgid "Remove" msgstr "Удалить" -#: ../vdms_panels/presets_manager.py:147 +#: ../vdms_panels/presets_manager.py:149 msgid "Export selected" msgstr "Экспорт выбранного" -#: ../vdms_panels/presets_manager.py:150 +#: ../vdms_panels/presets_manager.py:152 msgid "Export all..." msgstr "Экспортировать всё..." -#: ../vdms_panels/presets_manager.py:161 +#: ../vdms_panels/presets_manager.py:163 msgid "Import preset" msgstr "Импортировать пресет" -#: ../vdms_panels/presets_manager.py:164 +#: ../vdms_panels/presets_manager.py:166 msgid "Import group" msgstr "Импорт группы" -#: ../vdms_panels/presets_manager.py:175 +#: ../vdms_panels/presets_manager.py:177 msgid "Restore" msgstr "Восстановить" -#: ../vdms_panels/presets_manager.py:179 +#: ../vdms_panels/presets_manager.py:181 msgid "Restore all..." msgstr "Восстановить всё..." -#: ../vdms_panels/presets_manager.py:191 +#: ../vdms_panels/presets_manager.py:193 msgid "Reload" msgstr "Перезагрузить" -#: ../vdms_panels/presets_manager.py:205 +#: ../vdms_panels/presets_manager.py:207 msgid "Profiles" msgstr "Профили" -#: ../vdms_panels/presets_manager.py:210 +#: ../vdms_panels/presets_manager.py:212 msgid "Add" msgstr "Добавить" -#: ../vdms_panels/presets_manager.py:214 +#: ../vdms_panels/presets_manager.py:216 msgid "Delete" msgstr "Удалить" -#: ../vdms_panels/presets_manager.py:224 +#: ../vdms_panels/presets_manager.py:226 msgid "Duplicate" msgstr "Дублировать" -#: ../vdms_panels/presets_manager.py:233 +#: ../vdms_panels/presets_manager.py:235 msgid "One-Pass" msgstr "Один проход" -#: ../vdms_panels/presets_manager.py:243 +#: ../vdms_panels/presets_manager.py:245 msgid "Two-Pass" msgstr "Два прохода" -#: ../vdms_panels/presets_manager.py:263 +#: ../vdms_panels/presets_manager.py:265 msgid "Choose a preset and view its profiles" msgstr "Выберите пресет и просмотрите его профили" -#: ../vdms_panels/presets_manager.py:264 +#: ../vdms_panels/presets_manager.py:266 msgid "Create a new profile and save it in the selected preset" msgstr "Создайте новый профиль и сохраните его в выбранном пресете" -#: ../vdms_panels/presets_manager.py:266 +#: ../vdms_panels/presets_manager.py:268 msgid "Delete the selected profile" msgstr "Удалить выбранный профиль" -#: ../vdms_panels/presets_manager.py:267 +#: ../vdms_panels/presets_manager.py:269 msgid "Edit the selected profile" msgstr "Редактировать выбранный профиль" -#: ../vdms_panels/presets_manager.py:268 +#: ../vdms_panels/presets_manager.py:270 msgid "Create a new preset" msgstr "Создать новый пресет" -#: ../vdms_panels/presets_manager.py:270 +#: ../vdms_panels/presets_manager.py:272 msgid "Remove the selected preset from the Presets Manager" msgstr "Удалить выбранный пресет из Менеджера Пресетов" -#: ../vdms_panels/presets_manager.py:272 +#: ../vdms_panels/presets_manager.py:274 msgid "Export selected preset as copy" msgstr "Экспорт выбранного пресета как копии" -#: ../vdms_panels/presets_manager.py:274 +#: ../vdms_panels/presets_manager.py:276 msgid "Export entire presets folder as copy" msgstr "Экспорт всей папки пресетов как копии" -#: ../vdms_panels/presets_manager.py:276 +#: ../vdms_panels/presets_manager.py:278 msgid "Import a new preset or update an existing one" msgstr "Импортировать новый пресет или обновить существующий" -#: ../vdms_panels/presets_manager.py:278 +#: ../vdms_panels/presets_manager.py:280 msgid "Import a group of presets from a folder and update existing ones" msgstr "Импортировать группу пресетов из папки и обновить существующие" -#: ../vdms_panels/presets_manager.py:281 +#: ../vdms_panels/presets_manager.py:283 msgid "Replace the selected preset with the Videomass default one" msgstr "Заменить выбранный пресет на стандартный для Videomass" -#: ../vdms_panels/presets_manager.py:283 +#: ../vdms_panels/presets_manager.py:285 msgid "Retrieve all Videomass default presets" msgstr "Возвратить все пресеты Videomass в состояние по умолчанию" -#: ../vdms_panels/presets_manager.py:285 +#: ../vdms_panels/presets_manager.py:287 msgid "Update the presets list" msgstr "Обновить список пресетов" -#: ../vdms_panels/presets_manager.py:286 +#: ../vdms_panels/presets_manager.py:288 msgid "First pass of the selected profile" msgstr "Первый проход выбранного профиля" -#: ../vdms_panels/presets_manager.py:288 +#: ../vdms_panels/presets_manager.py:290 msgid "Second pass of the selected profile" msgstr "Второй проход выбранного профиля" -#: ../vdms_panels/presets_manager.py:340 -#, python-brace-format +#: ../vdms_panels/presets_manager.py:341 +#, fuzzy, python-brace-format +#| msgid "" +#| "Outdated preset version found: v{1}.\n" +#| "A new version is available: v{0}\n" +#| "\n" +#| "It seems that the local preset database in your configuration folder is " +#| "outdated. If you choose to update the preset database, the outdated " +#| "version will be backed up in the same folder as the new incoming " +#| "presets:\n" +#| "\"{2}\"\n" +#| "\n" +#| "Do you want to update the preset database now?" msgid "" -"Outdated preset version found: v{1}.\n" +"Outdated presets version found: v{1}\n" "A new version is available: v{0}\n" "\n" -"It seems that the local preset database in your configuration folder is " -"outdated. If you choose to update the preset database, the outdated version " -"will be backed up in the same folder as the new incoming presets:\n" -"\"{2}\"\n" +"This update provides new presets included on the latest versions of " +"Videomass.\n" "\n" -"Do you want to update the preset database now?" +"To avoid data loss and allow for possible recovery, the outdated presets " +"folder will be backed up in the program configuration folder: \"{2}\"\n" +"\n" +"Do you want to perform this update now?" msgstr "" "Обнаружена устаревшая предустановленная версия: v{1}.\n" "Доступна новая версия: v{0}\n" @@ -3555,27 +3565,27 @@ msgstr "" "\n" "Вы хотите обновить предустановленную базу пресетов сейчас?" -#: ../vdms_panels/presets_manager.py:349 ../vdms_panels/presets_manager.py:527 -#: ../vdms_panels/presets_manager.py:567 ../vdms_panels/presets_manager.py:631 -#: ../vdms_panels/presets_manager.py:657 ../vdms_panels/presets_manager.py:807 -#: ../vdms_panels/presets_manager.py:838 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 +#: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:842 +#: ../vdms_panels/presets_manager.py:873 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "Пожалуйста, подтвердите" -#: ../vdms_panels/presets_manager.py:392 +#: ../vdms_panels/presets_manager.py:395 msgid "Name" msgstr "Имя" -#: ../vdms_panels/presets_manager.py:394 +#: ../vdms_panels/presets_manager.py:397 msgid "Output Format" msgstr "Выходной формат" -#: ../vdms_panels/presets_manager.py:395 +#: ../vdms_panels/presets_manager.py:398 msgid "Supported Format List" msgstr "Список поддерживаемых форматов" -#: ../vdms_panels/presets_manager.py:413 ../vdms_panels/presets_manager.py:472 +#: ../vdms_panels/presets_manager.py:416 ../vdms_panels/presets_manager.py:475 msgid "" "ERROR: Typing error on JSON keys: {}\n" "\n" @@ -3587,15 +3597,15 @@ msgstr "" "Файл: \"{}\"\n" "Неправильный ключ ?" -#: ../vdms_panels/presets_manager.py:493 +#: ../vdms_panels/presets_manager.py:496 msgid "Enter name for new preset" msgstr "Введите имя для нового пресета" -#: ../vdms_panels/presets_manager.py:506 +#: ../vdms_panels/presets_manager.py:509 msgid "Cannot save current data in file '{}'." msgstr "Невозможно сохранить текущие данные в файл '{}'." -#: ../vdms_panels/presets_manager.py:510 +#: ../vdms_panels/presets_manager.py:513 msgid "" "'Successful!\n" "\n" @@ -3605,17 +3615,22 @@ msgstr "" "\n" "Создана новый пустой пресет." -#: ../vdms_panels/presets_manager.py:524 +#: ../vdms_panels/presets_manager.py:527 +#, fuzzy +#| msgid "" +#| "Are you sure you want to remove \"{}\" preset?\n" +#| "\n" +#| " It will be moved to the \"Removals\" subfolder of the presets folder." msgid "" "Are you sure you want to remove \"{}\" preset?\n" "\n" -" It will be moved to the \"Removals\" subfolder of the presets folder." +" It will be moved to the \"Removals\" subfolder inside the presets folder." msgstr "" "Вы уверены, что хотите удалить пресет \"{}\" ?\n" "\n" "Он будет перемещен в подпапку «Удалённые» папки пресетов." -#: ../vdms_panels/presets_manager.py:535 +#: ../vdms_panels/presets_manager.py:538 msgid "" "{}\n" "\n" @@ -3625,40 +3640,40 @@ msgstr "" "\n" "Извините, удаление не получилось, продолжение невозможно." -#: ../vdms_panels/presets_manager.py:545 +#: ../vdms_panels/presets_manager.py:548 #, python-brace-format msgid "The preset \"{0}\" was successfully removed" msgstr "Пресет \"{0}\" был успешно удален" -#: ../vdms_panels/presets_manager.py:560 +#: ../vdms_panels/presets_manager.py:563 msgid "Choose a folder to save the selected preset" msgstr "Выберите папку для сохранения выбранного пресета" -#: ../vdms_panels/presets_manager.py:565 +#: ../vdms_panels/presets_manager.py:568 msgid "A file with this name already exists, do you want to overwrite it?" msgstr "Файл с таким именем уже существует. Вы хотите его перезаписать?" -#: ../vdms_panels/presets_manager.py:578 +#: ../vdms_panels/presets_manager.py:581 msgid "The preset was exported successfully" msgstr "Пресет был успешно экспортирован" -#: ../vdms_panels/presets_manager.py:588 +#: ../vdms_panels/presets_manager.py:591 msgid "Choose a folder to export all presets" msgstr "Выберите папку для экспорта всех пресетов" -#: ../vdms_panels/presets_manager.py:597 +#: ../vdms_panels/presets_manager.py:600 msgid "All presets have been exported successfully" msgstr "Все пресеты успешно экспортированы" -#: ../vdms_panels/presets_manager.py:608 +#: ../vdms_panels/presets_manager.py:611 msgid "Import a new preset" msgstr "Импортировать новый пресет" -#: ../vdms_panels/presets_manager.py:619 +#: ../vdms_panels/presets_manager.py:622 msgid "Error, invalid preset: \"{}\"" msgstr "Ошибка, недействительный пресет: \"{}\"" -#: ../vdms_panels/presets_manager.py:627 +#: ../vdms_panels/presets_manager.py:630 msgid "" "This preset already exists and is about to be updated. Don't worry, it will " "keep all your saved profiles.\n" @@ -3670,11 +3685,11 @@ msgstr "" "\n" "Вы хотите продолжить?" -#: ../vdms_panels/presets_manager.py:644 +#: ../vdms_panels/presets_manager.py:647 msgid "A new preset was successfully imported" msgstr "Новый пресет был успешно импортирован" -#: ../vdms_panels/presets_manager.py:654 +#: ../vdms_panels/presets_manager.py:665 msgid "" "This will update the presets database. Don't worry, it will keep all your " "saved profiles.\n" @@ -3686,15 +3701,15 @@ msgstr "" "\n" "Вы хотите продолжить?" -#: ../vdms_panels/presets_manager.py:661 +#: ../vdms_panels/presets_manager.py:672 msgid "Import a new presets folder" msgstr "Импортировать новую папку пресетов" -#: ../vdms_panels/presets_manager.py:680 +#: ../vdms_panels/presets_manager.py:705 msgid "The presets database has been successfully updated" msgstr "База данных пресетов успешно обновлена" -#: ../vdms_panels/presets_manager.py:690 +#: ../vdms_panels/presets_manager.py:716 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3706,24 +3721,28 @@ msgstr "" "\n" "Вы хотите продолжить?" -#: ../vdms_panels/presets_manager.py:694 ../vdms_panels/presets_manager.py:722 +#: ../vdms_panels/presets_manager.py:720 ../vdms_panels/presets_manager.py:748 msgid "Warning" msgstr "Предупреждение" -#: ../vdms_panels/presets_manager.py:705 -msgid "Sorry, this preset is not part of default Videomass presets." -msgstr "" -"Извините, этот пресет не входит в стандартный набор настроек Videomass." - -#: ../vdms_panels/presets_manager.py:711 +#: ../vdms_panels/presets_manager.py:734 msgid "Successful recovery" msgstr "Успешное восстановление" -#: ../vdms_panels/presets_manager.py:720 +#: ../vdms_panels/presets_manager.py:743 +#, fuzzy +#| msgid "" +#| "Be careful! This action will restore all presets to default ones. Your " +#| "profiles may be deleted!\n" +#| "\n" +#| "Do you want to continue?" msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" "\n" +"In any case, to avoid data loss, the presets folder will be backed up in the " +"program's configuration folder.\n" +"\n" "Do you want to continue?" msgstr "" "Быть осторожен! Это действие вернет все пресеты к значениям по умолчанию. " @@ -3731,19 +3750,19 @@ msgstr "" "\n" "Вы хотите продолжить?" -#: ../vdms_panels/presets_manager.py:730 +#: ../vdms_panels/presets_manager.py:765 msgid "All default presets have been successfully recovered" msgstr "Все пресеты по умолчанию были успешно восстановлены" -#: ../vdms_panels/presets_manager.py:750 +#: ../vdms_panels/presets_manager.py:785 msgid "Create a new profile on \"{}\" preset" msgstr "Создайте новый профиль на пресете \"{}\"" -#: ../vdms_panels/presets_manager.py:768 +#: ../vdms_panels/presets_manager.py:803 msgid "Edit profile of the \"{}\" preset" msgstr "Редактировать профиль в пресете \"{}\"" -#: ../vdms_panels/presets_manager.py:805 +#: ../vdms_panels/presets_manager.py:840 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." @@ -3751,11 +3770,11 @@ msgstr "" "Вы уверены, что хотите удалить выбранный профиль? Восстановить его уже не " "удастся." -#: ../vdms_panels/presets_manager.py:825 +#: ../vdms_panels/presets_manager.py:860 msgid "First select a profile in the list" msgstr "Вы должны выбрать профиль в списке" -#: ../vdms_panels/presets_manager.py:833 +#: ../vdms_panels/presets_manager.py:868 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" @@ -3763,11 +3782,11 @@ msgstr "" "Управление выбранным профилем изменено вручную.\n" "Вы хотите применить его в процессе конвертации?" -#: ../vdms_panels/presets_manager.py:843 +#: ../vdms_panels/presets_manager.py:878 msgid "Don't show this dialog again" msgstr "Больше не показывать этот диалог" -#: ../vdms_panels/presets_manager.py:940 +#: ../vdms_panels/presets_manager.py:975 msgid "" "Queued File\n" "Pass Encoding\n" @@ -4360,13 +4379,6 @@ msgstr "Элементы плейлиста" # исправил двойную кавычку #: ../vdms_ytdlp/playlist_indexing.py:72 -#| msgid "" -#| "Click on \"Playlist Items\" column to specify indices of the videos in " -#| "the playlist separated by commas like: \"1,2,5,8\" if you want to " -#| "download videos indexed 1, 2, 5, 8 in the playlist.\n" -#| "\n" -#| "You can specify range: \"1-3,7,10-13\" it will download the videos at " -#| "index 1, 2, 3, 7, 10, 11, 12 and 13.\n" msgid "" "To index the media of a playlist, click on the \"Playlist Items\" column of " "each corresponding URL and specify the numerical indexes separated by " @@ -4465,7 +4477,6 @@ msgid "Include playlists" msgstr "Включить плейлисты" #: ../vdms_ytdlp/youtubedl_ui.py:240 ../vdms_ytdlp/subtitles_editor.py:137 -#| msgid "Subtitle Streams" msgid "Subtitles Editor" msgstr "Редактор субтитров" @@ -4490,7 +4501,6 @@ msgid "Include the ID in file names" msgstr "Включите идентификатор в имена файлов" #: ../vdms_ytdlp/youtubedl_ui.py:275 -#| msgid "Restrict file names" msgid "Restrict file names to ASCII characters" msgstr "Ограничить имена файлов символами ASCII" @@ -4562,7 +4572,6 @@ msgid "Russian" msgstr "Русский" #: ../vdms_ytdlp/subtitles_editor.py:52 -#| msgid "Finish" msgid "Spanish" msgstr "Spanish" @@ -4583,7 +4592,6 @@ msgid "Chinese" msgstr "Chinese" #: ../vdms_ytdlp/subtitles_editor.py:70 -#| msgid "Subtitle" msgid "Subtitles" msgstr "Субтитры" @@ -4592,7 +4600,6 @@ msgid "None" msgstr "Без субтитров" #: ../vdms_ytdlp/subtitles_editor.py:75 -#| msgid "Download all available subtitles" msgid "All available subtitles" msgstr "Все доступные субтитры" @@ -4613,12 +4620,10 @@ msgid "Include automatically generated subtitle (YouTube only)" msgstr "Включить автоматически созданные субтитры (только для YouTube)" #: ../vdms_ytdlp/subtitles_editor.py:117 -#| msgid "Write subtitles to video" msgid "Embed subtitles into video file" msgstr "Вставить субтитры в видеофайл" #: ../vdms_ytdlp/subtitles_editor.py:120 -#| msgid "Download split audio and video" msgid "Download subtitles only (do not include audio and video)" msgstr "Загружать только субтитры (без аудио и видео)" @@ -4652,6 +4657,25 @@ msgstr "" "субтитры, \n" "кроме итальянских, голландских и французских." +#~ msgid "" +#~ "Invalid preset loaded.\n" +#~ "It is recommended to remove it or rewrite it into a JSON format " +#~ "compatible with Videomass.\n" +#~ "\n" +#~ "Possible solution: open the Presets Manager panel, go to the presets " +#~ "column and try to click the \"Restore\" button" +#~ msgstr "" +#~ "Загружен недопустимый пресет.\n" +#~ "Рекомендуется удалить его или переписать в формат JSON, совместимый с " +#~ "Videomass.\n" +#~ "\n" +#~ "Возможное решение: откройте панель Менеджер Пресетов, перейдите в столбец " +#~ "пресеты и попробуйте нажать кнопку «Восстановить»" + +#~ msgid "Sorry, this preset is not part of default Videomass presets." +#~ msgstr "" +#~ "Извините, этот пресет не входит в стандартный набор настроек Videomass." + #~ msgid "Refresh all log files" #~ msgstr "Обновить все файлы log-журналов" diff --git a/videomass/locale/videomass.pot b/videomass/locale/videomass.pot index fec705562..efc1743a1 100644 --- a/videomass/locale/videomass.pot +++ b/videomass/locale/videomass.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-23 18:04+0100\n" +"POT-Creation-Date: 2024-01-24 16:17+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2545,12 +2545,12 @@ msgstr "" msgid "Off" msgstr "" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:967 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:968 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:970 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:971 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "" @@ -3098,8 +3098,8 @@ msgstr "" #: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 #: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 -#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:841 -#: ../vdms_panels/presets_manager.py:872 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:842 +#: ../vdms_panels/presets_manager.py:873 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "" @@ -3210,11 +3210,11 @@ msgstr "" msgid "Import a new presets folder" msgstr "" -#: ../vdms_panels/presets_manager.py:704 +#: ../vdms_panels/presets_manager.py:705 msgid "The presets database has been successfully updated" msgstr "" -#: ../vdms_panels/presets_manager.py:715 +#: ../vdms_panels/presets_manager.py:716 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3222,15 +3222,15 @@ msgid "" "Do you want to continue?" msgstr "" -#: ../vdms_panels/presets_manager.py:719 ../vdms_panels/presets_manager.py:747 +#: ../vdms_panels/presets_manager.py:720 ../vdms_panels/presets_manager.py:748 msgid "Warning" msgstr "" -#: ../vdms_panels/presets_manager.py:733 +#: ../vdms_panels/presets_manager.py:734 msgid "Successful recovery" msgstr "" -#: ../vdms_panels/presets_manager.py:742 +#: ../vdms_panels/presets_manager.py:743 msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" @@ -3241,39 +3241,39 @@ msgid "" "Do you want to continue?" msgstr "" -#: ../vdms_panels/presets_manager.py:764 +#: ../vdms_panels/presets_manager.py:765 msgid "All default presets have been successfully recovered" msgstr "" -#: ../vdms_panels/presets_manager.py:784 +#: ../vdms_panels/presets_manager.py:785 msgid "Create a new profile on \"{}\" preset" msgstr "" -#: ../vdms_panels/presets_manager.py:802 +#: ../vdms_panels/presets_manager.py:803 msgid "Edit profile of the \"{}\" preset" msgstr "" -#: ../vdms_panels/presets_manager.py:839 +#: ../vdms_panels/presets_manager.py:840 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." msgstr "" -#: ../vdms_panels/presets_manager.py:859 +#: ../vdms_panels/presets_manager.py:860 msgid "First select a profile in the list" msgstr "" -#: ../vdms_panels/presets_manager.py:867 +#: ../vdms_panels/presets_manager.py:868 msgid "" "The selected profile command has been changed manually.\n" "Do you want to apply it during the conversion process?" msgstr "" -#: ../vdms_panels/presets_manager.py:877 +#: ../vdms_panels/presets_manager.py:878 msgid "Don't show this dialog again" msgstr "" -#: ../vdms_panels/presets_manager.py:974 +#: ../vdms_panels/presets_manager.py:975 msgid "" "Queued File\n" "Pass Encoding\n" diff --git a/videomass/locale/zh_CN/LC_MESSAGES/videomass.mo b/videomass/locale/zh_CN/LC_MESSAGES/videomass.mo index 797df8563e3132d24219980985c6d7b9f9c28253..309d3f091b9cb939b0a157125b3d343ddf3bf6c3 100644 GIT binary patch delta 7970 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

&>XZ)cPe|fSlhdm#Gj?XI_yu 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 aOEah0Cs$V#P8l3g_|3H7lFfs+yZ#5(I8LDe diff --git a/videomass/locale/zh_CN/LC_MESSAGES/videomass.po b/videomass/locale/zh_CN/LC_MESSAGES/videomass.po index f86c7ca35..cde430ef9 100644 --- a/videomass/locale/zh_CN/LC_MESSAGES/videomass.po +++ b/videomass/locale/zh_CN/LC_MESSAGES/videomass.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Videomass 5.0.3\n" +"Project-Id-Version: Videomass 5.0.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-16 18:06+0100\n" -"PO-Revision-Date: 2023-12-22 13:31+0100\n" +"POT-Creation-Date: 2024-01-24 16:17+0100\n" +"PO-Revision-Date: 2024-01-24 16:20+0100\n" "Last-Translator: MaiJZ https://github.com/maijz128\n" "Language-Team: simplified Chinese (CN)\n" "Language: zh_CN\n" @@ -925,7 +925,7 @@ msgstr "输出格式。清空以复制格式和编解码器。不要包括\".\"" msgid "Profile Name" msgstr "配置文件名称" -#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:393 +#: ../vdms_dialogs/presets_addnew.py:81 ../vdms_panels/presets_manager.py:396 msgid "Description" msgstr "描述" @@ -2038,19 +2038,12 @@ msgstr "" "\n" #: ../vdms_io/presets_manager_prop.py:82 -#, fuzzy msgid "" -"Invalid preset loaded.\n" -"It is recommended to remove it or rewrite it into a JSON format compatible " -"with Videomass.\n" +"You are attempting to load a preset written with invalid JSON encoding.\n" "\n" -"Possible solution: open the Presets Manager panel, go to the presets column " -"and try to click the \"Restore\" button" +"You can try to restore it or import a correct one, otherwise it is " +"recommended to remove it." msgstr "" -"Invalid preset loaded.\n" -"建议删除它或将其改写成与Videomass.com兼容的JSON格式。\n" -"\n" -"可能的解决方案:打开预设管理器面板,进入预设栏并尝试点击 \"恢复 \"按钮" #: ../vdms_io/presets_manager_prop.py:93 #, fuzzy @@ -2064,6 +2057,13 @@ msgstr "" "\n" "可能的解决方案:打开预设管理器面板,进入预设栏,尝试点击 \"恢复所有... \"按钮" +#: ../vdms_io/presets_manager_prop.py:125 +msgid "" +"Operation aborted due to possible JSON encoding/decoding error.\n" +"Fix any errors in the JSON code contained on the FILE before performing this " +"operation again." +msgstr "" + #: ../vdms_main/main_frame.py:193 ../vdms_main/main_frame.py:1372 #: ../vdms_main/main_frame.py:1402 ../vdms_ytdlp/main_ytdlp.py:99 #: ../vdms_ytdlp/main_ytdlp.py:148 ../vdms_ytdlp/main_ytdlp.py:593 @@ -2200,7 +2200,7 @@ msgstr "打开选定的文件" msgid "Remove the selected files from the list" msgstr "从列表中删除选定的文件" -#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:219 +#: ../vdms_main/main_frame.py:462 ../vdms_panels/presets_manager.py:221 #: ../vdms_panels/video_to_sequence.py:169 ../vdms_ytdlp/main_ytdlp.py:301 msgid "Edit" msgstr "编辑" @@ -3060,12 +3060,12 @@ msgstr "{}队列中的文件" msgid "Off" msgstr "关闭" -#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:933 +#: ../vdms_panels/av_conversions.py:2259 ../vdms_panels/presets_manager.py:968 #: ../vdms_panels/video_to_sequence.py:587 msgid "Unset" msgstr "未设置" -#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:936 +#: ../vdms_panels/av_conversions.py:2262 ../vdms_panels/presets_manager.py:971 #: ../vdms_panels/video_to_sequence.py:590 msgid "start {} | duration {}" msgstr "start {} | duration {}" @@ -3602,171 +3602,172 @@ msgstr "等等... 我打断了" msgid "...Interrupted" msgstr "......被打断" -#: ../vdms_panels/presets_manager.py:111 +#: ../vdms_panels/presets_manager.py:113 msgid "Presets" msgstr "预设" -#: ../vdms_panels/presets_manager.py:134 +#: ../vdms_panels/presets_manager.py:136 msgid "New" msgstr "创建" -#: ../vdms_panels/presets_manager.py:137 +#: ../vdms_panels/presets_manager.py:139 msgid "Remove" msgstr "移除" -#: ../vdms_panels/presets_manager.py:147 +#: ../vdms_panels/presets_manager.py:149 msgid "Export selected" msgstr "导出选定对象" -#: ../vdms_panels/presets_manager.py:150 +#: ../vdms_panels/presets_manager.py:152 msgid "Export all..." msgstr "导出所有..." -#: ../vdms_panels/presets_manager.py:161 +#: ../vdms_panels/presets_manager.py:163 msgid "Import preset" msgstr "导入预设" -#: ../vdms_panels/presets_manager.py:164 +#: ../vdms_panels/presets_manager.py:166 msgid "Import group" msgstr "导入预设组" -#: ../vdms_panels/presets_manager.py:175 +#: ../vdms_panels/presets_manager.py:177 msgid "Restore" msgstr "恢复" -#: ../vdms_panels/presets_manager.py:179 +#: ../vdms_panels/presets_manager.py:181 msgid "Restore all..." msgstr "恢复所有..." -#: ../vdms_panels/presets_manager.py:191 +#: ../vdms_panels/presets_manager.py:193 msgid "Reload" msgstr "重新加载" -#: ../vdms_panels/presets_manager.py:205 +#: ../vdms_panels/presets_manager.py:207 msgid "Profiles" msgstr "配置文件" -#: ../vdms_panels/presets_manager.py:210 +#: ../vdms_panels/presets_manager.py:212 msgid "Add" msgstr "添加" -#: ../vdms_panels/presets_manager.py:214 +#: ../vdms_panels/presets_manager.py:216 msgid "Delete" msgstr "删除" -#: ../vdms_panels/presets_manager.py:224 +#: ../vdms_panels/presets_manager.py:226 msgid "Duplicate" msgstr "复制" -#: ../vdms_panels/presets_manager.py:233 +#: ../vdms_panels/presets_manager.py:235 #, fuzzy msgid "One-Pass" msgstr "单程票" -#: ../vdms_panels/presets_manager.py:243 +#: ../vdms_panels/presets_manager.py:245 #, fuzzy msgid "Two-Pass" msgstr "两种方式" -#: ../vdms_panels/presets_manager.py:263 +#: ../vdms_panels/presets_manager.py:265 msgid "Choose a preset and view its profiles" msgstr "选择一个预设并查看其配置文件" -#: ../vdms_panels/presets_manager.py:264 +#: ../vdms_panels/presets_manager.py:266 #, fuzzy msgid "Create a new profile and save it in the selected preset" msgstr "创建一个新的配置文件,并将其保存在选定的预置中" -#: ../vdms_panels/presets_manager.py:266 +#: ../vdms_panels/presets_manager.py:268 msgid "Delete the selected profile" msgstr "删除所选配置文件" -#: ../vdms_panels/presets_manager.py:267 +#: ../vdms_panels/presets_manager.py:269 msgid "Edit the selected profile" msgstr "编辑所选配置文件" -#: ../vdms_panels/presets_manager.py:268 +#: ../vdms_panels/presets_manager.py:270 msgid "Create a new preset" msgstr "创建一个新的预设" -#: ../vdms_panels/presets_manager.py:270 +#: ../vdms_panels/presets_manager.py:272 msgid "Remove the selected preset from the Presets Manager" msgstr "从预设管理器中删除选定的预设" -#: ../vdms_panels/presets_manager.py:272 +#: ../vdms_panels/presets_manager.py:274 msgid "Export selected preset as copy" msgstr "将选定的预设导出为副本" -#: ../vdms_panels/presets_manager.py:274 +#: ../vdms_panels/presets_manager.py:276 msgid "Export entire presets folder as copy" msgstr "将整个预设文件夹导出为副本" -#: ../vdms_panels/presets_manager.py:276 +#: ../vdms_panels/presets_manager.py:278 msgid "Import a new preset or update an existing one" msgstr "导入一个新的预设或更新一个现有的预设" -#: ../vdms_panels/presets_manager.py:278 +#: ../vdms_panels/presets_manager.py:280 msgid "Import a group of presets from a folder and update existing ones" msgstr "从一个文件夹中导入一组预设并更新现有预设" -#: ../vdms_panels/presets_manager.py:281 +#: ../vdms_panels/presets_manager.py:283 msgid "Replace the selected preset with the Videomass default one" msgstr "用Videomass默认的预设替换所选的预设" -#: ../vdms_panels/presets_manager.py:283 +#: ../vdms_panels/presets_manager.py:285 #, fuzzy msgid "Retrieve all Videomass default presets" msgstr "检索所有Videomass的默认预置" -#: ../vdms_panels/presets_manager.py:285 +#: ../vdms_panels/presets_manager.py:287 msgid "Update the presets list" msgstr "更新预设列表" -#: ../vdms_panels/presets_manager.py:286 +#: ../vdms_panels/presets_manager.py:288 #, fuzzy msgid "First pass of the selected profile" msgstr "选定配置文件的第一遍" -#: ../vdms_panels/presets_manager.py:288 +#: ../vdms_panels/presets_manager.py:290 #, fuzzy msgid "Second pass of the selected profile" msgstr "选定轮廓的第二道工序" -#: ../vdms_panels/presets_manager.py:340 +#: ../vdms_panels/presets_manager.py:341 #, python-brace-format msgid "" -"Outdated preset version found: v{1}.\n" +"Outdated presets version found: v{1}\n" "A new version is available: v{0}\n" "\n" -"It seems that the local preset database in your configuration folder is " -"outdated. If you choose to update the preset database, the outdated version " -"will be backed up in the same folder as the new incoming presets:\n" -"\"{2}\"\n" +"This update provides new presets included on the latest versions of " +"Videomass.\n" +"\n" +"To avoid data loss and allow for possible recovery, the outdated presets " +"folder will be backed up in the program configuration folder: \"{2}\"\n" "\n" -"Do you want to update the preset database now?" +"Do you want to perform this update now?" msgstr "" -#: ../vdms_panels/presets_manager.py:349 ../vdms_panels/presets_manager.py:527 -#: ../vdms_panels/presets_manager.py:567 ../vdms_panels/presets_manager.py:631 -#: ../vdms_panels/presets_manager.py:657 ../vdms_panels/presets_manager.py:807 -#: ../vdms_panels/presets_manager.py:838 ../vdms_ytdlp/youtubedl_ui.py:641 +#: ../vdms_panels/presets_manager.py:352 ../vdms_panels/presets_manager.py:530 +#: ../vdms_panels/presets_manager.py:570 ../vdms_panels/presets_manager.py:634 +#: ../vdms_panels/presets_manager.py:668 ../vdms_panels/presets_manager.py:842 +#: ../vdms_panels/presets_manager.py:873 ../vdms_ytdlp/youtubedl_ui.py:641 #: ../vdms_ytdlp/youtubedl_ui.py:647 msgid "Please confirm" msgstr "请确认" -#: ../vdms_panels/presets_manager.py:392 +#: ../vdms_panels/presets_manager.py:395 msgid "Name" msgstr "名称" -#: ../vdms_panels/presets_manager.py:394 +#: ../vdms_panels/presets_manager.py:397 msgid "Output Format" msgstr "输出格式" -#: ../vdms_panels/presets_manager.py:395 +#: ../vdms_panels/presets_manager.py:398 msgid "Supported Format List" msgstr "支持的格式列表" -#: ../vdms_panels/presets_manager.py:413 ../vdms_panels/presets_manager.py:472 +#: ../vdms_panels/presets_manager.py:416 ../vdms_panels/presets_manager.py:475 #, fuzzy msgid "" "ERROR: Typing error on JSON keys: {}\n" @@ -3779,15 +3780,15 @@ msgstr "" "文件: \"{}\"/n\n" "key 畸形 ?" -#: ../vdms_panels/presets_manager.py:493 +#: ../vdms_panels/presets_manager.py:496 msgid "Enter name for new preset" msgstr "为新的预设输入名称" -#: ../vdms_panels/presets_manager.py:506 +#: ../vdms_panels/presets_manager.py:509 msgid "Cannot save current data in file '{}'." msgstr "无法在文件'{}'中保存当前数据。" -#: ../vdms_panels/presets_manager.py:510 +#: ../vdms_panels/presets_manager.py:513 msgid "" "'Successful!\n" "\n" @@ -3797,17 +3798,22 @@ msgstr "" "\n" "一个新的空预设已经被创建。" -#: ../vdms_panels/presets_manager.py:524 +#: ../vdms_panels/presets_manager.py:527 +#, fuzzy +#| msgid "" +#| "Are you sure you want to remove \"{}\" preset?\n" +#| "\n" +#| " It will be moved to the \"Removals\" subfolder of the presets folder." msgid "" "Are you sure you want to remove \"{}\" preset?\n" "\n" -" It will be moved to the \"Removals\" subfolder of the presets folder." +" It will be moved to the \"Removals\" subfolder inside the presets folder." msgstr "" "你确定你想要删除 \"{}\" 预设?\n" "\n" " 它将被移到预设文件夹的 \"移除 \"子文件夹中。" -#: ../vdms_panels/presets_manager.py:535 +#: ../vdms_panels/presets_manager.py:538 msgid "" "{}\n" "\n" @@ -3817,41 +3823,41 @@ msgstr "" "\n" "对不起,删除失败,无法继续。" -#: ../vdms_panels/presets_manager.py:545 +#: ../vdms_panels/presets_manager.py:548 #, fuzzy, python-brace-format msgid "The preset \"{0}\" was successfully removed" msgstr "预设\"{0}\"已成功删除" -#: ../vdms_panels/presets_manager.py:560 +#: ../vdms_panels/presets_manager.py:563 msgid "Choose a folder to save the selected preset" msgstr "选择一个文件夹来保存选定的预设" -#: ../vdms_panels/presets_manager.py:565 +#: ../vdms_panels/presets_manager.py:568 msgid "A file with this name already exists, do you want to overwrite it?" msgstr "已经有一个以此为名的文件,你想覆盖它吗?" -#: ../vdms_panels/presets_manager.py:578 +#: ../vdms_panels/presets_manager.py:581 #, fuzzy msgid "The preset was exported successfully" msgstr "预设已成功导出" -#: ../vdms_panels/presets_manager.py:588 +#: ../vdms_panels/presets_manager.py:591 msgid "Choose a folder to export all presets" msgstr "选择一个文件夹来导出所有预设" -#: ../vdms_panels/presets_manager.py:597 +#: ../vdms_panels/presets_manager.py:600 msgid "All presets have been exported successfully" msgstr "所有预设都已成功导出" -#: ../vdms_panels/presets_manager.py:608 +#: ../vdms_panels/presets_manager.py:611 msgid "Import a new preset" msgstr "导入一个新的预设" -#: ../vdms_panels/presets_manager.py:619 +#: ../vdms_panels/presets_manager.py:622 msgid "Error, invalid preset: \"{}\"" msgstr "错误,无效的预设。\"{}\"" -#: ../vdms_panels/presets_manager.py:627 +#: ../vdms_panels/presets_manager.py:630 msgid "" "This preset already exists and is about to be updated. Don't worry, it will " "keep all your saved profiles.\n" @@ -3862,11 +3868,11 @@ msgstr "" "\n" "你想要继续吗?" -#: ../vdms_panels/presets_manager.py:644 +#: ../vdms_panels/presets_manager.py:647 msgid "A new preset was successfully imported" msgstr "一个新的预设被成功导入" -#: ../vdms_panels/presets_manager.py:654 +#: ../vdms_panels/presets_manager.py:665 msgid "" "This will update the presets database. Don't worry, it will keep all your " "saved profiles.\n" @@ -3877,16 +3883,16 @@ msgstr "" "\n" "你想要继续吗?" -#: ../vdms_panels/presets_manager.py:661 +#: ../vdms_panels/presets_manager.py:672 msgid "Import a new presets folder" msgstr "导入一个新的预置文件夹" -#: ../vdms_panels/presets_manager.py:680 +#: ../vdms_panels/presets_manager.py:705 #, fuzzy msgid "The presets database has been successfully updated" msgstr "预置数据库已成功更新" -#: ../vdms_panels/presets_manager.py:690 +#: ../vdms_panels/presets_manager.py:716 msgid "" "Be careful! The selected preset will be overwritten with the default one. " "Your profiles may be deleted!\n" @@ -3897,24 +3903,28 @@ msgstr "" "\n" "你想要继续吗?" -#: ../vdms_panels/presets_manager.py:694 ../vdms_panels/presets_manager.py:722 +#: ../vdms_panels/presets_manager.py:720 ../vdms_panels/presets_manager.py:748 msgid "Warning" msgstr "警告" -#: ../vdms_panels/presets_manager.py:705 -#, fuzzy -msgid "Sorry, this preset is not part of default Videomass presets." -msgstr "对不起,这个预设不是默认的Videomass预设的一部分。" - -#: ../vdms_panels/presets_manager.py:711 +#: ../vdms_panels/presets_manager.py:734 msgid "Successful recovery" msgstr "成功恢复" -#: ../vdms_panels/presets_manager.py:720 +#: ../vdms_panels/presets_manager.py:743 +#, fuzzy +#| msgid "" +#| "Be careful! This action will restore all presets to default ones. Your " +#| "profiles may be deleted!\n" +#| "\n" +#| "Do you want to continue?" msgid "" "Be careful! This action will restore all presets to default ones. Your " "profiles may be deleted!\n" "\n" +"In any case, to avoid data loss, the presets folder will be backed up in the " +"program's configuration folder.\n" +"\n" "Do you want to continue?" msgstr "" "小心!这个操作会将所有的预设恢复为默认的。这个动作会把所有的预设恢复为默认" @@ -3922,31 +3932,31 @@ msgstr "" "\n" "你想要继续吗?" -#: ../vdms_panels/presets_manager.py:730 +#: ../vdms_panels/presets_manager.py:765 #, fuzzy msgid "All default presets have been successfully recovered" msgstr "所有的默认预设都已成功恢复" -#: ../vdms_panels/presets_manager.py:750 +#: ../vdms_panels/presets_manager.py:785 #, fuzzy msgid "Create a new profile on \"{}\" preset" msgstr "在\"{}\"预设上创建一个新的配置文件" -#: ../vdms_panels/presets_manager.py:768 +#: ../vdms_panels/presets_manager.py:803 msgid "Edit profile of the \"{}\" preset" msgstr "编辑\"{}\"预设的配置文件" -#: ../vdms_panels/presets_manager.py:805 +#: ../vdms_panels/presets_manager.py:840 msgid "" "Are you sure you want to delete the selected profile? It will no longer be " "possible to recover it." msgstr "你确定要删除选定的配置文件吗?这将不再可能恢复它。" -#: ../vdms_panels/presets_manager.py:825 +#: ../vdms_panels/presets_manager.py:860 msgid "First select a profile in the list" msgstr "首先在列表中选择一个配置文件" -#: ../vdms_panels/presets_manager.py:833 +#: ../vdms_panels/presets_manager.py:868 #, fuzzy msgid "" "The selected profile command has been changed manually.\n" @@ -3955,12 +3965,12 @@ msgstr "" "所选的配置文件命令已被手动更改。\n" "你想在转换过程中应用它吗?" -#: ../vdms_panels/presets_manager.py:843 +#: ../vdms_panels/presets_manager.py:878 #, fuzzy msgid "Don't show this dialog again" msgstr "不要再显示这个对话框" -#: ../vdms_panels/presets_manager.py:940 +#: ../vdms_panels/presets_manager.py:975 #, fuzzy msgid "" "Queued File\n" @@ -4894,6 +4904,24 @@ msgid "" "subtitles except those in Italian, Dutch and French." msgstr "" +#, fuzzy +#~ msgid "" +#~ "Invalid preset loaded.\n" +#~ "It is recommended to remove it or rewrite it into a JSON format " +#~ "compatible with Videomass.\n" +#~ "\n" +#~ "Possible solution: open the Presets Manager panel, go to the presets " +#~ "column and try to click the \"Restore\" button" +#~ msgstr "" +#~ "Invalid preset loaded.\n" +#~ "建议删除它或将其改写成与Videomass.com兼容的JSON格式。\n" +#~ "\n" +#~ "可能的解决方案:打开预设管理器面板,进入预设栏并尝试点击 \"恢复 \"按钮" + +#, fuzzy +#~ msgid "Sorry, this preset is not part of default Videomass presets." +#~ msgstr "对不起,这个预设不是默认的Videomass预设的一部分。" + #~ msgid "Refresh all log files" #~ msgstr "刷新所有日志文件"