From 8f151daa2554797a72bf62023b05301f446ec28f Mon Sep 17 00:00:00 2001 From: Forkless Date: Sun, 10 May 2026 18:34:01 +0200 Subject: [PATCH] Revert FFmpeg path to full binary only; add separate FFprobe Binary Path field --- includes/class-cache-manager.php | 19 +++++-------------- includes/class-settings.php | 9 +++++++-- includes/class-transcriber.php | 17 +++++++++++++---- languages/piperless-de_DE.json | 9 +++++---- languages/piperless-de_DE.mo | Bin 11666 -> 11971 bytes languages/piperless-de_DE.po | 11 +++++++---- languages/piperless-es_ES.json | 9 +++++---- languages/piperless-es_ES.mo | Bin 11994 -> 12308 bytes languages/piperless-es_ES.po | 11 +++++++---- languages/piperless-fr_FR.json | 9 +++++---- languages/piperless-fr_FR.mo | Bin 12028 -> 12330 bytes languages/piperless-fr_FR.po | 11 +++++++---- languages/piperless-it_IT.json | 9 +++++---- languages/piperless-it_IT.mo | Bin 11792 -> 12098 bytes languages/piperless-it_IT.po | 11 +++++++---- languages/piperless-ja.json | 9 +++++---- languages/piperless-ja.mo | Bin 13152 -> 13455 bytes languages/piperless-ja.po | 11 +++++++---- languages/piperless-nl_NL.json | 9 +++++---- languages/piperless-nl_NL.mo | Bin 11367 -> 11669 bytes languages/piperless-nl_NL.po | 11 +++++++---- languages/piperless-pt_BR.json | 9 +++++---- languages/piperless-pt_BR.mo | Bin 11858 -> 12164 bytes languages/piperless-pt_BR.po | 11 +++++++---- languages/piperless-zh_CN.json | 9 +++++---- languages/piperless-zh_CN.mo | Bin 10991 -> 11276 bytes languages/piperless-zh_CN.po | 11 +++++++---- 27 files changed, 121 insertions(+), 84 deletions(-) diff --git a/includes/class-cache-manager.php b/includes/class-cache-manager.php index 6f63320..3882884 100644 --- a/includes/class-cache-manager.php +++ b/includes/class-cache-manager.php @@ -436,24 +436,15 @@ class Cache_Manager { $custom = $settings['piper_ffmpeg_binary'] ?? ''; if ( '' !== $custom ) { - // Support both full binary path AND directory-only path. - // `@is_dir` can return false under open_basedir, so we also - // try appending /ffmpeg if the raw path is not executable. - if ( ! @is_executable( $custom ) ) { - $candidate = rtrim( $custom, '/' ) . '/ffmpeg'; - if ( @is_executable( $candidate ) ) { - $custom = $candidate; - $this->logger->info( 'FFmpeg path is a directory, resolved to: {path}', [ 'path' => $custom ] ); - } - } - if ( @is_executable( $custom ) ) { + if ( @file_exists( $custom ) && @is_executable( $custom ) ) { $cached = true; $resolved_path = $custom; - $this->logger->info( 'Found ffmpeg at configured path: {path}', [ 'path' => $custom ] ); return $resolved_path; } - $this->logger->warning( 'ffmpeg not found or not executable at configured path: {path}', [ 'path' => $original ] ); - $this->logger->warning( 'Trying auto-detection.' ); + $this->logger->warning( + 'Configured ffmpeg binary not found or not executable: {path}. Trying auto-detection.', + [ 'path' => $custom ] + ); } $candidates = apply_filters( diff --git a/includes/class-settings.php b/includes/class-settings.php index ab29de7..abbd629 100644 --- a/includes/class-settings.php +++ b/includes/class-settings.php @@ -184,8 +184,12 @@ class Settings { ], ], $this->page_slug_piper ); - $this->add_field( 'piper_ffmpeg_binary', __( 'FFmpeg Binaries Path', 'piperless' ), 'text', 'piperless_piper_section', [ - 'description' => __( 'Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.', 'piperless' ), + $this->add_field( 'piper_ffmpeg_binary', __( 'FFmpeg Binary Path', 'piperless' ), 'text', 'piperless_piper_section', [ + 'description' => __( 'Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.', 'piperless' ), + ], $this->page_slug_piper ); + + $this->add_field( 'piper_ffprobe_binary', __( 'FFprobe Binary Path', 'piperless' ), 'text', 'piperless_piper_section', [ + 'description' => __( 'Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.', 'piperless' ), ], $this->page_slug_piper ); $this->add_field( 'piper_mp3_bitrate', __( 'MP3 Bitrate', 'piperless' ), 'select', 'piperless_piper_section', [ @@ -469,6 +473,7 @@ class Settings { $clean['default_language'] = sanitize_text_field( $input['default_language'] ?? 'en_US' ); $clean['default_quality'] = sanitize_text_field( $input['default_quality'] ?? 'medium' ); $clean['piper_ffmpeg_binary'] = sanitize_text_field( $input['piper_ffmpeg_binary'] ?? '' ); + $clean['piper_ffprobe_binary'] = sanitize_text_field( $input['piper_ffprobe_binary'] ?? '' ); $clean['piper_mp3_bitrate'] = sanitize_text_field( $input['piper_mp3_bitrate'] ?? '32k' ); $clean['piper_audio_format'] = in_array( $input['piper_audio_format'] ?? 'mp3', [ 'mp3', 'opus' ], true ) ? $input['piper_audio_format'] : 'mp3'; diff --git a/includes/class-transcriber.php b/includes/class-transcriber.php index d3c8563..aef3c1d 100644 --- a/includes/class-transcriber.php +++ b/includes/class-transcriber.php @@ -529,10 +529,19 @@ class Transcriber { return $resolved; } - $cached = true; + $cached = true; + $settings = get_option( 'piperless_settings', [] ); + $custom = $settings['piper_ffprobe_binary'] ?? ''; - // Use the same directory as ffmpeg — wherever it was resolved, - // ffprobe is likely right next to it. + // 1. Try the configured ffprobe path. + if ( '' !== $custom ) { + if ( @file_exists( $custom ) && @is_executable( $custom ) ) { + $resolved = $custom; + return $resolved; + } + } + + // 2. Try the same directory as resolved ffmpeg. $ffmpeg_path = $this->cache->find_ffmpeg(); if ( null !== $ffmpeg_path ) { $candidate = dirname( $ffmpeg_path ) . '/ffprobe'; @@ -542,7 +551,7 @@ class Transcriber { } } - // Fallback: common paths extended via filter. + // 3. Fallback: common paths extended via filter. $candidates = apply_filters( 'piperless_ffprobe_paths', [ '/usr/bin/ffprobe', '/usr/local/bin/ffprobe', '/opt/bin/ffprobe' ] diff --git a/languages/piperless-de_DE.json b/languages/piperless-de_DE.json index e3c81a5..e5a5514 100644 --- a/languages/piperless-de_DE.json +++ b/languages/piperless-de_DE.json @@ -3,8 +3,8 @@ "locale": "de_DE", "source": "translations.json", "generated": "2026-05-10", - "total_strings": 117, - "translated": 117, + "total_strings": 118, + "translated": 118, "locked": false }, "strings": { @@ -123,7 +123,8 @@ "24 kbps (standard)": "24 kbps (Standard)", "16 kbps (compact)": "16 kbps (Kompakt)", "12 kbps (minimal)": "12 kbps (Minimal)", - "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluter Pfad zu den ffmpeg-Tools für MP3/Opus-Konvertierung. Automatische Erkennung aus üblichen Pfaden, wenn leer.", - "FFmpeg Binaries Path": "FFmpeg-Binärpfad" + "FFprobe Binary Path": "FFprobe-Binärpfad", + "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Absoluter Pfad zur ffprobe-Binärdatei für die Erkennung der Audiodauer. Automatische Erkennung aus dem ffmpeg-Verzeichnis, wenn leer.", + "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluter Pfad zur ffmpeg-Binärdatei für MP3/Opus-Konvertierung. Automatische Erkennung aus üblichen Pfaden, wenn leer." } } \ No newline at end of file diff --git a/languages/piperless-de_DE.mo b/languages/piperless-de_DE.mo index 85216c86dfe6732b7672e4cb2373002cd8ce61a8..ade6b45f3a59692486d722f3a2ac69e8c942c0a2 100644 GIT binary patch delta 2893 zcmYk;e@s3*K-c%Jm)#z z@AII08_zW*u4bq2Gqi3ZkGPa(%u(DuhyyJ*)0mMs*0U6|IiHK8aRpXl5UcShw&P9Q zge$X*8H(p|AYR4_yozIuNtn?-WB4&;95i4hF2GvM!H=*6Pv9`Tgsu2Hj=)8XuImk0 zifyPDCOK%FBdBk=fkW^PYTWyn&-;y!r**?59FEhG$(tISkITL5dr$)$M!opBcl~Q* zEOQ>8!^^lB(-=(mEyXfyLXG=Aj>7#|!28YTbe_QrsMOx`Zph&2bk4`&7|h4LQSCEa}z$v`A*!5hj1^Br;cm!3(UYQUY5|8XVZBW$07HcDx^H77FGLZtimX& z6sJ%xzJhwuE!>9sEIqd!xnz1#H9v|P=QygwXHd^w97X=~>HNusDL90}C=;`A4mP2_ z_<(0WYT%2gQv89s|1K)^qZnP|%|k85X6(Wv7{}41Q5oHZ`q17nq zMa}R6DnmDss+haD5dTBQG&S6G0@t908M&zp6yp}o%TcBI5_SJKsPTSAjdvwMN431| zUHAuQah}26&=<`|-eua6B$;qV;VT9=H19#%r?|oIf$C@HJpz3 zP#G?vK4F}RWIkbz(a|qXqh|gCss#739Mi2-t!JUGS0leN%drq6sMWj|^}++F(w)R8 zevd2cK4DqSRWbQY}NJa5X-U9XJCIqiXyM zs${oOi|vW0*;zOUm7zjZ2`e#&_nR6zdT_NaU#rM?z_MSXF3QEH&s zSjKrZDgzE`(d|Ul{6nn8W2pNcpfWj;J)fY=rh?8vti!?h7iyq?aUc#WPVJH$)I^I= z6P$y}SRHE7ZuQRlaVh6lQQNnan@EOPgvvxaYWwaeA^+TC_HaQdK8>ssa|0VNePZel zOB24$`ERHP*ReHNJfB}P2RGNH(D!E_FP;OI+BE(QaV`*E@Cc=a!t)@wL z5{V}`tRNmW)lrQKxJ{FLiFk#W=Uz$uKf&v|J4Jmm>b6xJmlN80Gu$i2_&tTPT|>;& ziS~a6$92R8;!$J4yDh|##cn!?Cie>eOruiC-y?S|=yHHiT5X*?*4EJ1!dpOSU8NCk z5GswzJ4XAzolYI`GO>uLB9;(pjVaut>bjn&@UCfxs9D6T1WUzTJ4L9ba<;j>)S(OJ zc;}U#!+F1X%{$TFS9_BvCpHoV#EXRXZwsO3BZ6*^KhHRf&@RX&rV;7HQlg$v)50!x zd#TmmO@At}n$Yjul`As|hiKIajWy`DILC(MogppB{>*6ddS=ehV6Zc4w^=Qru;1C7 zY|Lyf2?nE1q{a3wS;2^7`Qw35#0tb6e=HOUTLC*}x5kpu%-q7*dfW1b2!tH2Mx4!7 zC}?%q!I))tMq``%3bTGn^QDHYcHh!BVEA=kvN3OCQB_M*$p-v!+ewbdn@|w2 nJ0A^NZ#zA9sC9if)HTWK<`Jf8JALQ#{OJST3HFs0wEF%B4{=9g delta 2656 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 diff --git a/languages/piperless-es_ES.po b/languages/piperless-es_ES.po index b8a9c0a..3b9c220 100644 --- a/languages/piperless-es_ES.po +++ b/languages/piperless-es_ES.po @@ -469,9 +469,12 @@ msgstr "16 kbps (compacto)" msgid "12 kbps (minimal)" msgstr "12 kbps (mínimo)" -msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." -msgstr "Ruta absoluta a las herramientas ffmpeg para conversión MP3/Opus. Se detecta automáticamente si se deja vacío." +msgid "FFprobe Binary Path" +msgstr "Ruta del binario FFprobe" -msgid "FFmpeg Binaries Path" -msgstr "Ruta de binarios FFmpeg" +msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty." +msgstr "Ruta absoluta al binario ffprobe para la detección de la duración del audio. Se detecta automáticamente desde el directorio ffmpeg si se deja vacío." + +msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty." +msgstr "Ruta absoluta al binario ffmpeg para la conversión MP3/Opus. Se detecta automáticamente si se deja vacío." diff --git a/languages/piperless-fr_FR.json b/languages/piperless-fr_FR.json index e2168b7..a30e61c 100644 --- a/languages/piperless-fr_FR.json +++ b/languages/piperless-fr_FR.json @@ -3,8 +3,8 @@ "locale": "fr_FR", "source": "translations.json", "generated": "2026-05-10", - "total_strings": 117, - "translated": 117, + "total_strings": 118, + "translated": 118, "locked": false }, "strings": { @@ -123,7 +123,8 @@ "24 kbps (standard)": "24 kbps (standard)", "16 kbps (compact)": "16 kbps (compact)", "12 kbps (minimal)": "12 kbps (minimal)", - "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Chemin absolu vers les outils ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide.", - "FFmpeg Binaries Path": "Chemin des binaires FFmpeg" + "FFprobe Binary Path": "Chemin du binaire FFprobe", + "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Chemin absolu vers le binaire ffprobe pour la détection de la durée audio. Auto-détecté depuis le répertoire ffmpeg si laissé vide.", + "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Chemin absolu vers le binaire ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide." } } \ No newline at end of file diff --git a/languages/piperless-fr_FR.mo b/languages/piperless-fr_FR.mo index ca913fc773fc162e8903a283cea6dfbf65f91e28..b15ca80c62f9038a6483534efda8c2a59c22a574 100644 GIT binary patch delta 2908 zcmX}tZEO@p9LMp&mIBw7heENmMYhFKupkHsR7z{1JSfjq1c4T=y}R~m+dJ-o2f=+SHYt^xcNCfhZ&{rWvyz-|NGLlIJsK5DxP!!yMW(Fc+6#1%_}Y?#C9qi5qcg zrZL%g27BWroPt+ym@z4nn`I3D%y=#uumWdcEe^qta5Nso{&*1^@j4E~xs0y<6>^DvFUbl(CTk9DYV-^aoD2^KNGIYi}YJcml{eeZ@0o=&Hok3(?;7T^@rK($B` zOdaY4T0A%6leBl@7W@=H!~)iFHGYX1n8{=*eR&R*QJ9b1YpRjuF}0|*ug7YPqL$(a zYU0bNiEiOG)Mx3r?MRpDK&|n3r$NI9!esa0fr`)wHMIEbgs3lv6%GhVfqvkNq#WTpam>kwa$FdBS z>E*Z%o85NG{7OXw+`) zkK`obJk(}uL~Y_`EXD1pJ#h#JGQT-VMX5TATI(A~*3G}T7l*OMf5zju5_goiUwqZ` z7EY%BPt-UioMmn1N>nBm;tE`Y+8ZZO$MiO)l*+%T9Ka#Gp8oJ1>P60CZ@h-e#4Y4j z=SM*8Qhp5RGF7NdG@&N=7?2th}eei8|lwPpI^9$6{oI)+-c~l0kp^lju>#qGke3@nmYM$s=^50Cwrh|LU zBh=;_%~@*4O4PuIQM>zlR7QS7t@U-(gb%!SUp7z;?LvGG{ium-)E+p7*?0kMyqcmi zlS+d8O~vD=U4IXIq5ekI`42@Y)yB#sRP-V`0a_BJm3MH8J|IG9qKU)|LSwcQ+7Bvy zi8dnj1eYa5PnqUbSURW7<~oN^+A5tMHxpjfEb}U?j8m3#T}(s?oeCAdi*wbG&wc*5{Kzt zyTWq-^P5+_hJKw?))SM6bwm;IB2h~;5Gq+j$f>b!us@+qs%S|1JsyKfYBr4LH>Oli%T<4n@Muc$8jKSV=S^#A|> delta 2662 zcmZA2drVhl9LMo5ag)nW5rK?Q(a5-oh)G}yfeK=3(M9rt`9psg#{ITZ^0(<~;hIay zS`=NDqp7hLNQw22E!UV)&bIz&uCg{-qYJe*rI_peIluG!r)R(Kc|GUhoaZ^``#jI# z^seb@|9A0WCydfbq!3?(n)P8G?XwGk<`U&H$G{s4%`?66}uyzjl&!Mu1hBWNKd+{9VjsJFyBX8&;S7Pndy9Q3;Yo ztH5=*6}i{m#4|XIsp#b;iTm*e7GWEEX$cNuF8+YcA*4MykorTUQB&{|DueyF2uJW4^k1c-eY-7% z1&FVpZWu?+;SJPwx`~>q(s_YQwIEG)5XhB+*9{4l#;y0*_6{H5X+eXxNUiZ8m z^&s7tqy67YWd{wTsJUOf&}=ytp>AwNvT4uaQhWUPev`W6-ZKTCEkTw zP;22JYTy@8nd-wN#KsuqZV=8oqSua6F63#CharSKRX{)Emv_piC5^2B^bI z>_rXmE0P?G;iJKNv?b_#f>DdR5_Ml!I{D{iZGeWYco~miW(NOAa2O+T8+YjeYh0g3 zP0fp_l)i(?;91o6x`J$d`w=(bb<{Yetjs6Shy3izEb_0#_YY@{7?&OB*pFJ>$59!1 zA2rv*r~yaa^KWr2=fC4JT+Uw9Kt9wOcpg1?5_@nEORsc6+-zz__UIx6c4 zW#vI)9idEUUT-0^V6_I6UT$?t5y#a;2XP;fPgD@v9VFKF62YQu=>hzO9P~!fgyu|d zsZvX{5zK(I23k=?>1Dk+Z#@&Y5M{(FB9#ahrFk>)DDh;l5tS7cWtUy#w+Eb4vyHCH zQ7LREm^P<0b7W09MIWOoLi4ZHuX%igP+>va{Z1{g5cAx65Izk~(ON1XlC}Sf18vSf z9hh{uUgLgis%7vUkA2z?()hz&$1p`xwmBU*?k;{PR=h6o~t2+8hAjIN2T zt!-%b?M-cOYN~JRnGv(I=RkD*(50BKLOo7*zU=^3+h`{CC6RX|CbAx>hP>Wx8)@Y*Dr6Kc=Pz0{{R3 diff --git a/languages/piperless-fr_FR.po b/languages/piperless-fr_FR.po index 348f46a..a458e25 100644 --- a/languages/piperless-fr_FR.po +++ b/languages/piperless-fr_FR.po @@ -469,9 +469,12 @@ msgstr "16 kbps (compact)" msgid "12 kbps (minimal)" msgstr "12 kbps (minimal)" -msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." -msgstr "Chemin absolu vers les outils ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide." +msgid "FFprobe Binary Path" +msgstr "Chemin du binaire FFprobe" -msgid "FFmpeg Binaries Path" -msgstr "Chemin des binaires FFmpeg" +msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty." +msgstr "Chemin absolu vers le binaire ffprobe pour la détection de la durée audio. Auto-détecté depuis le répertoire ffmpeg si laissé vide." + +msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty." +msgstr "Chemin absolu vers le binaire ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide." diff --git a/languages/piperless-it_IT.json b/languages/piperless-it_IT.json index 07731b9..81916ad 100644 --- a/languages/piperless-it_IT.json +++ b/languages/piperless-it_IT.json @@ -3,8 +3,8 @@ "locale": "it_IT", "source": "translations.json", "generated": "2026-05-10", - "total_strings": 117, - "translated": 117, + "total_strings": 118, + "translated": 118, "locked": false }, "strings": { @@ -123,7 +123,8 @@ "24 kbps (standard)": "24 kbps (standard)", "16 kbps (compact)": "16 kbps (compatto)", "12 kbps (minimal)": "12 kbps (minimo)", - "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Percorso assoluto agli strumenti ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto.", - "FFmpeg Binaries Path": "Percorso binari FFmpeg" + "FFprobe Binary Path": "Percorso binario FFprobe", + "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Percorso assoluto al binario ffprobe per il rilevamento della durata audio. Rilevato automaticamente dalla directory ffmpeg se lasciato vuoto.", + "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Percorso assoluto al binario ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto." } } \ No newline at end of file diff --git a/languages/piperless-it_IT.mo b/languages/piperless-it_IT.mo index fc84a15f175bf982e3e90b3f7df8c07c1382c565..c0b86187ee3797fc64ff1acc5ac482137599dfb1 100644 GIT binary patch delta 2898 zcmYk;ZEO@p9LMp2mO`&Bg;KE4YPUQ{p~!@+8j{1q(gA_V&t^YxlUjKB>vY z@SsLe!Ucm7H3WhZj2fB}gYkvDAchbU6b%UpCMrZQ@P-667~}W1yQq`PC7vfl4hcy_%20V%#cmw-z zeV#D|cpiu06`YUPaJ(^TGdABCer6U2HCTg-u?dUu9jwHYI1(>o8~%)=a2c)Z`X;Qx zc2tKM4r=EJ>Rqm5F5X79`#YA?zscum-7o_SaUL>w(}=aW*1!HXs(}wt9iQ;8pF!F( z=W#k-!R44mW4dn@&cYT{yZdkq9>NOxH=j_Mj2BUV5$Nj!qxIF>Xjqi>>KbpJT=ugVcFFm2`(>dn4J zjqoBWLpP9FF?VnY{*AP08oB8tHlu|(C0+)m;>(=RMNQ3TsQbS{wf7yWy{l;|n#^^Bneu-l!Jo%XA<~GOwZ>&HSNfBn-r?UH&AQgV^oSyp`QN+ zpTn!D_UBZ1&)1{=z6Oi6|3g%iq8`*pU&Bo}=-$96Cwhx>5^8lfA+uzHI0Jie79K+l z;4&(;w@?EfI*FZyg=pb))LL7K#q@8Qsi;8*m7>@E^TW88^FbWI29|mk-a}1=J;mF{ z+i?!(3Df|Np$2*ewe8N~TD*euv68*6fo;XK<|szxFz!S>Xfd(M$P65Y3sG;d*f)q8 za6d9Oa{%Y!Y1BY&;R-C{W5Kd95hR&r7iv2nM@`w;O7c&i<^mU#%DZTxHI08*upX6x z19%9_*%Es23uJwov&aT8Kcd#epQwS4WFc8tj(VXwR3=v8^B6=62dl{c4k|xzL36mA zQ7AQi*p0hUtNT7`DfqblDTR3=wrJ%*8No8zc~Uhut%Ih^OrwSG+g!tL_$4oy@ysBgeHwoOr^$!VdElTZl&DNu6l_ zD;+Nq+ldE7i%KO*u-M%XQj0E7m6R8$0&-*AyE3oVTV;)*~hzvOb6Q`X(YT(xG@ zEvL+CIb&eII8Vi40k&Z&CgA&4`(@1I{u=6obEtm) zM$Ms|M#gUHQ2jRGYV5!WzHd%ZiKpQ-GHCNImg9$3`>&`D7EvD#Wi)y|8EG=v_$U_Q z4s1p}H;(J@3aZ~bOR2CAb8WO8N-HGu1u zU*m(^&*CsH;+r_cXqqsJbzFuWsLb@B_Yo={DjM;5BiK$9>U&Wgo(8M--3`FI)E<1OqCA?@kGnZ8IGmATg~FQ6tkiT&vPf=VfsG7kSv z97e6#XQ(y&4xh$bxE42O24~ictGGXm75FM@z|*J!{e&8L0uLR*Y*ePtpfd0Q=IQ)T zQqc%!u>|j7Bo?rsT9PfuGMXCXPo@#I2acka;sombv-k{NLVX~_9(+F$_4ie%el}nN zIx%18e;<`+X?O|szzk|r-bJlx7Kc?cD?kU<;yN5a4d4PQrBkQ@e}!b<{D5{`K+Swb zRi<*J?O~uW>(ueoT0XosFNMmSQ7YUgx(2H(&*700XFjzKmMBx9~|E z$0Ga_HL(1LgA>_`=ech{uU@=EMJf3U!!ep41CeYB=7?TfhE|f3Pryag@M|Cm(^BPOIJ*!>-?8njoZ*= z)vGK;9id&XogPD|JV8VfI(|!~#j5mRuT>AjZbH8gZNyeWFe>(ch(AYqGRadWTpsU^OACI4jiF0*!ciG*81D>At-oY+k bT4tN?WX4hdLZ&Ay!tQkH4gXNqjhKG{;#2%N diff --git a/languages/piperless-it_IT.po b/languages/piperless-it_IT.po index 8d20f58..cd222ab 100644 --- a/languages/piperless-it_IT.po +++ b/languages/piperless-it_IT.po @@ -469,9 +469,12 @@ msgstr "16 kbps (compatto)" msgid "12 kbps (minimal)" msgstr "12 kbps (minimo)" -msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." -msgstr "Percorso assoluto agli strumenti ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto." +msgid "FFprobe Binary Path" +msgstr "Percorso binario FFprobe" -msgid "FFmpeg Binaries Path" -msgstr "Percorso binari FFmpeg" +msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty." +msgstr "Percorso assoluto al binario ffprobe per il rilevamento della durata audio. Rilevato automaticamente dalla directory ffmpeg se lasciato vuoto." + +msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty." +msgstr "Percorso assoluto al binario ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto." diff --git a/languages/piperless-ja.json b/languages/piperless-ja.json index 4204a93..f115334 100644 --- a/languages/piperless-ja.json +++ b/languages/piperless-ja.json @@ -3,8 +3,8 @@ "locale": "ja", "source": "translations.json", "generated": "2026-05-10", - "total_strings": 117, - "translated": 117, + "total_strings": 118, + "translated": 118, "locked": false }, "strings": { @@ -123,7 +123,8 @@ "24 kbps (standard)": "24 kbps(標準)", "16 kbps (compact)": "16 kbps(コンパクト)", "12 kbps (minimal)": "12 kbps(最小)", - "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "MP3/Opus変換用のffmpegツールへの絶対パス。空の場合は自動検出されます。", - "FFmpeg Binaries Path": "FFmpegバイナリパス" + "FFprobe Binary Path": "FFprobeバイナリパス", + "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "音声の長さ検出用ffprobeバイナリへの絶対パス。空の場合はffmpegディレクトリから自動検出されます。", + "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "MP3/Opus変換用ffmpegバイナリへの絶対パス。空の場合は自動検出されます。" } } \ No newline at end of file diff --git a/languages/piperless-ja.mo b/languages/piperless-ja.mo index 7e3de45b78a3b58f0a02fbd8e557c06b48441bb0..e33cba060e83e327778ead49a4c79224b654f3e8 100644 GIT binary patch delta 2908 zcmZA3drXye9LMpWAt)C`0TGq-K&2=qmPUrRz*`s1BV8~R6674k+c_OTFK0AT-JI7HE(M!+nQGI&vPDI>o>p8>-YT5^L&55=lA

n>VB4Bdj>`K74x@h)$KASMG{)n2WbkG>PQ|%Sdjl%LZdAwnoc2>lE^``3 zVJAL?5hT-fvoQ+`QF-6OMBI*P^luJQc@WQ_ruLR|K@@lQx#&kN#W7UJ z=TRM9##+>4>Anp}lW9b)c?&AfKGYI_g1WCGk@+7+4b;>pl3n?xpf+O>mSZzk;sB;mGg^;&(8gruUzKJWST=JE^GRu)kGS#RAP52sqfKxDKurUu~0glCu=<8w33DkYVdAIpzayaO`0O`sE zS5TQrWdpkLYb?Rk`;FPG3s6(uduVvXL$HeTOw7hsOvCf2rMQcWF`ac7jkT!XkD&6L z#a8S>W+Z5~y22ygg9ZH1fg0IJ?iz=AsHs|mO0Wq>;11LbwL8CGLrw7==R6_Zm{QKu zQTggn_wPYn*Jc|u<}0V+Cwzh*e#c78dLXb|3gonZdnT$i}-?*tLvClDxO4NYg;7R-*H}a0Yjf?m(0aYSc*PUz;YE%4zhWMxH}9X3@AY5(CHvH&w_(n?}@t zKgJ38B~Hh?&Us!Yv%&d#B&GQd>C^m;jL~GUF{05un)TOiT|k32Q$1?ae8FK8-o%}_ zhEXgWa3??t#3-$dOXJC^x>gUSd-@d)n4 zce%kIcVK|_i})NCJQ{wmy{J4tq8{KDp1?nYROV4R z%2wA5M2u&&n1ek~>&0O0KPbA6*V+EWg1t1nMfRs#8&XTDqKf`mU@_UxL zO3GFj2iAoa#uR0Ez5al&#N#x%yuN^|xU#g&=PIoX6jzk_R=Y|)6`my(A%9Ftdc`u2 z%SlmM7NFG^Sm!G9x>kC;6)w*zf5p1C^w_fzap9DCb}wx`;xEL7@=~|E=D5dY&GlE7 zceQTmZg~IFyB~#9S+$K;O{-PAHPoJ(5*nDAnQ>)zTUW~wtNPHDrju56Q+MmmuDVn9 z^>*U_-w>aDFHxOU(_+;gv}z7pwVSQl{Z@6oRkP)C-Ttn6CkyGUnr&9~=T`NO(4L`5 SZNH{=M@HId+s>tL>-P^hDS4Lw delta 2674 zcmZA2e@vBC9LMoP7vwi0zfwbmL<2!6EW%WNhft|dX_9DM1dIeOf)|>)?gV7gN|!fU zrPVCPBEv1137c!yGPWpetMx~7{um@{&W#*vGOYFf-23oHo%y}5^BkV%ob!CoIgiI{ zuh+P)M)-CcN(&K7{9rTY13cu<4`nLQm<9N!r7g&q2(F_s8WXV^vv583U>@GUP)rCm z#t+jm12b_EIxxf-m+7LSj^4q1{2Zfj3KP+fyTULPcjE>O$J18(048(&HEO`ysD5Tq z?~qL+b2l4N{g&b~tU-UqH=R`G({K!#wD}OTvCnG%1J%I{YG50)(fv_KlS#l;n2trb z6LnuNrr~*1zmup5+`)MCr;`N6H%U~K(#;r&cJxIj#^3>b0N+A&)Q`NJ8A46qlI72M zKi4<#5YFHUY+*L#7|1%#!x~g(>e025ij#_Fdo#>N)-(W=*D$8gnHv?%W(3hj#E%e zk&U{)7?t`4REO`OHs3Hd<2`g@Bcm&$H&HKo%ko|{`DZyyD0$YK#iC}Igi28^l0{RD zPhuJJtoaDf;5m##I}a%XZFmrmp_V3Sq4)lUsQyw>{bit*ve0EUlwu|gcGMfakMwOW zAxSV-P#sL+0lbS@*vwg4jRW{FUPp%yX+PsE$Wa1KmN-0Cd8mCLZ@;A!@=y zsJ%3c+A9&9a-pU&m6^^H=aSyo--uYa032oAsp`vmb|18A)Y}GHFwQO05HRUz_C# ztNmkaqWv6h#zcD6o3*0)Ig5IMZ}CeU#Zqib_ulu5i^}sf1he&haIVx+DI%2C5<(vz ze_}gvA5l&`N-QFH8BfXLcLU)hatKYNm{>q)Irb29h0|&tCtTX;;Y1Ljl<6a(QbRNo zNyJJ*Z>gdzDAij3Fk%}~NUSH~h`I7I6=h^Av3IT!wG1kJPRwIE|64qlY#vK}12|!x z<YHbUh&qJjt|9K?%6F7Xu6La1niRTKLNoreDx_Nr%72BS}kJ36Q`q^736 zv3gJ3euty3*&PtP%Y87YZg4dCvMtopo>$voZ>p_s9_*ceHDvjwk~L{t8lBC*_jKJn uesc2dPsb0R^>#4c-Z9>OVZ8l}J9|lvyCe49!GNWI`T44kL0iHb;r{~f+Y=N3 diff --git a/languages/piperless-ja.po b/languages/piperless-ja.po index 5d79b6d..f3e7f83 100644 --- a/languages/piperless-ja.po +++ b/languages/piperless-ja.po @@ -469,9 +469,12 @@ msgstr "16 kbps(コンパクト)" msgid "12 kbps (minimal)" msgstr "12 kbps(最小)" -msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." -msgstr "MP3/Opus変換用のffmpegツールへの絶対パス。空の場合は自動検出されます。" +msgid "FFprobe Binary Path" +msgstr "FFprobeバイナリパス" -msgid "FFmpeg Binaries Path" -msgstr "FFmpegバイナリパス" +msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty." +msgstr "音声の長さ検出用ffprobeバイナリへの絶対パス。空の場合はffmpegディレクトリから自動検出されます。" + +msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty." +msgstr "MP3/Opus変換用ffmpegバイナリへの絶対パス。空の場合は自動検出されます。" diff --git a/languages/piperless-nl_NL.json b/languages/piperless-nl_NL.json index f69c21c..7952b75 100644 --- a/languages/piperless-nl_NL.json +++ b/languages/piperless-nl_NL.json @@ -3,8 +3,8 @@ "locale": "nl_NL", "source": "translations.json", "generated": "2026-05-10", - "total_strings": 117, - "translated": 117, + "total_strings": 118, + "translated": 118, "locked": false }, "strings": { @@ -123,7 +123,8 @@ "24 kbps (standard)": "24 kbps (standaard)", "16 kbps (compact)": "16 kbps (compact)", "12 kbps (minimal)": "12 kbps (minimaal)", - "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluut pad naar ffmpeg-tools voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten.", - "FFmpeg Binaries Path": "FFmpeg-binaries-pad" + "FFprobe Binary Path": "FFprobe-binair pad", + "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Absoluut pad naar de ffprobe binary voor audioduurdetectie. Automatisch gedetecteerd vanuit de ffmpeg-directory, indien leeg gelaten.", + "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluut pad naar de ffmpeg binary voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten." } } \ No newline at end of file diff --git a/languages/piperless-nl_NL.mo b/languages/piperless-nl_NL.mo index 66196ba02dace8f0a5d7a7fb781dfdea196cf78e..eb1de16069338e073064278fccef5c6f51027e2a 100644 GIT binary patch delta 2920 zcmY+^eQXp(7{~E}mO|eITM7lLT~MIBv_*N5_fiU$0`gMPVxg_q-d=l^-W|tX3yK~n zC`5?Wv#1d@q=|t*G}7Q78ZfAdkr)i}5)u+5R$h#O7zyZK#_w-;OLWp_KeN-l*_mf% z_WIhcb&1P4sa=NBK@Y9AB@tigl=d_hK%-i=%nJIYQ-OJdH~2ZSR3Jex1twNF0WRI0|Q=I;uvJ zVCqlJf<48_Vrkf5!6x~ zMZNeE>P0v371Xr!yB$cA=|ru0H>#gQs3raq^}92<ix#HkyBQddFK|BPQjfR?q|&BsEm!{Y-gYUTiFyG)b?tjEVm}aPXY zUg8MP!gFh}SAuGf%0+TGp5@hKiyfLgPCUi%T$56`1I>_sMJ?qUh%jq&yb zYJjz<&9>3IZ%0_rXaAZGG@^BEQG=HsZ5e}`n>T)d4$}PucYt-MV-)e+hRQ%EYJmGu6YBBqPhd6o=TS>nG?Dz*Q>o;v@n=5fq9r(k zYQKW%SjNs&rm8RlZB%L_sQR1~nlTgvpa5$V#H=hCLh2Shv7_|o;CFT*ci4dVdt0;?YM4~^J zRYYIWH$a6-ScQBEu)RCL_>N*R?FLOWeWJ6Xjdo*-Ci=aV`XRrD2Xc53cr6U_1M=Xwt2 z{mxfP_d~tLcAQFVBt{bp2<_TNLM4j`I5mzgYQyTd>ht>ukxFP!Jx!=gAUIG?S;4h~ z&|Z6n(EpsXEw!_wM3ZhP+K4J~Vr}wfdSmifMkM)5#?b6Qpejkech1;SCw7xxFlmOmc##e(6G<+o#YQ!E+D$R87Hu`RC)e=tgGIJ(6O2CNNs zAZFQZk=T}=F_}N5WVu}~bl%d_Z*Xr`va%qYoL-PK#DA{?Zw!Bos!2GF{~JboxNjW( zcs%NkAZV9Z&z41-9f+2s<4lzh(-fVC1 k#q3atS>e;e!B9&$-gC0xPD-}({$hmO^D>w%oBk!vf@MJe5iOR)u`upd)#5YzEFR7a(HVRd@ll6bXz{ zFD^yBs2Y!A6Y9BdkUw*c53Tv%sD7fDm6kXa^_&;A1RIx<|3WGUXvoGe-h*dRGyctS zF?mzRUer=lpzg0nr9Ob_@C0h}O=BP4#D47M?aJtnsEJ;4yqQA&Sq_sxo;9-!)CluX zDXK!UXzFnjHX_fOSMhB;gC1<*A!Xnx9KvI$rExE_?_Y-MuMpK=DQYQeLQX>imeJ6H zn$e3$-)06$g83TN!5j|aAGiVgI7+F+<|qdy>b%O&%3Cln0DIF zJJ**mSLgpHDm%F$$z!io2Wqz;K|MH*n%R5E7|bWAO*@O)3#nQ50KKS9R_$EZA**2a zqXsgFn&?r~CVmzZdA~V9h3uMBID#{H3U}Sk(ZYXF4>YZ?J8DBO*8x`Qnug@d(Bf&sZB@C(2H6EA2K%6h^07$%G4xQ z;#bItGa3A-u-s-9Ds$UV6KF-|VtP=|jpUGj50z;e?!`;^IOg1G%oF$~Ds?&BtpOIH zj*riAJ1PTy)Bpph2|evxkKlH$Cs0fGCpP2qJo}VAmPh`zdB$ka7n7)wCattnm5%Cg zEh@D>)b~4318K$v44{tThp3tVf*MeKzMc9NILvi1-iPO~7+oP2QfpL(5jbDEsMHaS z#Qnr3!bR*M77%+0ofeL}^*mU=2kWt)s3f#R^@Ik_#7ze=Uo^YwaeqwpuTh zcA}5SBUlx4kWkUA*)C=yq0H?fYKV1&hnO#&RJIa3iAUxeQ5#T28-9(>|2FH=PK&Cm z32l-?1X;97FQ04$t5oy3o6vsH4-lEO&OI3RpS6!v*Ls(z@}I&nFFBxZ7zzfI8aAyx-b5 zMa~y~+($$c4-?wG`-wc$A1G{$I5577}qpgg2bx z_Q$uk_w=@Pcn$@F-F@MhxaRPXyL;+F+~<)AR=ck&&~mV=t#4|4(RcCA%?0+&X_>pj Y!x_P`A2Op7b#H;+xwl~Ide&InzhVdYYybcN diff --git a/languages/piperless-nl_NL.po b/languages/piperless-nl_NL.po index 62d2fe5..8496b1c 100644 --- a/languages/piperless-nl_NL.po +++ b/languages/piperless-nl_NL.po @@ -469,9 +469,12 @@ msgstr "16 kbps (compact)" msgid "12 kbps (minimal)" msgstr "12 kbps (minimaal)" -msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." -msgstr "Absoluut pad naar ffmpeg-tools voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten." +msgid "FFprobe Binary Path" +msgstr "FFprobe-binair pad" -msgid "FFmpeg Binaries Path" -msgstr "FFmpeg-binaries-pad" +msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty." +msgstr "Absoluut pad naar de ffprobe binary voor audioduurdetectie. Automatisch gedetecteerd vanuit de ffmpeg-directory, indien leeg gelaten." + +msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty." +msgstr "Absoluut pad naar de ffmpeg binary voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten." diff --git a/languages/piperless-pt_BR.json b/languages/piperless-pt_BR.json index 8e7a18e..f4d605e 100644 --- a/languages/piperless-pt_BR.json +++ b/languages/piperless-pt_BR.json @@ -3,8 +3,8 @@ "locale": "pt_BR", "source": "translations.json", "generated": "2026-05-10", - "total_strings": 117, - "translated": 117, + "total_strings": 118, + "translated": 118, "locked": false }, "strings": { @@ -123,7 +123,8 @@ "24 kbps (standard)": "24 kbps (padrão)", "16 kbps (compact)": "16 kbps (compacto)", "12 kbps (minimal)": "12 kbps (mínimo)", - "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Caminho absoluto para as ferramentas ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio.", - "FFmpeg Binaries Path": "Caminho dos binários FFmpeg" + "FFprobe Binary Path": "Caminho do binário FFprobe", + "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Caminho absoluto para o binário ffprobe para detecção de duração do áudio. Detectado automaticamente do diretório ffmpeg se deixado vazio.", + "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Caminho absoluto para o binário ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio." } } \ No newline at end of file diff --git a/languages/piperless-pt_BR.mo b/languages/piperless-pt_BR.mo index a070bb8fb22038111b64ed407c04147fe703961d..7792da417f0ecd9a039e2bdd0ded86ba90054240 100644 GIT binary patch delta 2916 zcmXxlYiv_x9LMnocY)oQFfL*jKRiW2*_n9FxZ7|J%x^Stz9=Zlr#h| zB%(~p5MKb!84aS4&|nOBiK#El5=lT}NJvmrh=zbfqP{W4@9*^N$^Pf_oTsPH<^P^sxs4fk57qBKSj6}yn{VrZ>6nXikja~BT#Reo_QR+SPN4=q?Y3V;`Z9w! z4X@)0OrbM9w;Ic^0oCstn1{!)nDNcWRGz@gsMJ1mA4uohsoWRfI4r`6I1klPEs_M& zfSN$7Yd4PP{xy6RPvQ}r$UfHNSxm<)28(Ltqp3WJ1<13e64@S8i`x4}ti%v%E6$?^ zzJVI(H{6F>mcF+iX)?X2Js&{za~ie9mr&okl1KiFsQgaDOw3?ol!^Jc5F1b{e#i9! zs^crDt@su7{C!mF^XOguRiIwRM(n_T?8LF8Q5k(5wb0&iUa4*GC6p1=ysFEC~XZo;SW0JaS?=2KMaCvmowxw)wO6{yTc zw@}eB>B1NBA_g$`F=O7sJ*Y3_KAzmmV${1Z1(kX~>hm{o3ciag@mtgYdF;n*EJID8 z1$(dySyho4q3cE225299f6sz$J&cX+%iAZpiN#*_`la*9?OBytE%LVNxk(N1VFDkF#h5q*Tq zI%25k$f>YJPFcovIkA$ca9WZpa;r`{RcB|MvWe?jB1Ft}T8#0yih4pBdR8|&|LI(} z5j%;Y!VB*dKUcjUZA639l01sq3Z*l{ZS&%A!glY6*g}O<>HNUy#Z4iah&e$^Mu~oN@5kEvNefwUCea{G0$z&Sy!=$7l=|qKQxmG6`hFfPAz%qfQ9aTxoa-t zJ7-h(I{PYJ#BAbaqL^4h)Dq2vN;cthYWybPNJ7U|C*c_)l~_$|Bvd#&&QG)IYlvNh z-nBYHpE*ZH>ZpW?7Tr*IC!NyCb#v@qMsw^!W+?V^=9nCxFA%b~Th0D0tb4%>3O@cP5F2E#p;-)FVi zzKCT9LXn<$N!Hbr>|~c!&M5I=xp%T-b%pz4OAGTyFmj?l><`BNn&^uT-Oy+98zE2F zlN>McVPb$e*v>TEo1m5G*VJZO)y|YW-XL?01Ov>o#S^gGBRtNRm{}wdXON+}cF=D7 lyY+mRXEz;~%1|QS5x-T~mpV!-ccx@5U+&Bzez15j`+u*@S0DfY delta 2667 zcmZA3eN5F=9LMo50V2f4ae{pvn1ZT(1k0|hlRKnPhbg-V?3tC znnhv`=3*W$!VZix3)+4c=;wPAllehvSxhes(u?g4VJUs4&!TR49W~D_ z)E94nrIl=oSjB3;GE+R zcn9ytu^*@KE$n4AH5g4D=b#^znKlgGL#Kz1R{SoKbsI+hY>by;ynrf2Jgd}=b5S=c z#TT&}^}U~wKfA_@YW@#uo(OiO5-&h~&x0z#hWX?_n@%$WX*h@lcpA0in~w9ynPNmz5whqZ6o&UUQswk$=iz@#I-MOF^wL1C^p;B#Tyo z8*w}GT^quW@f5nz%a@da7jQ2Qph^?7aOV1jsQI!{^W~ySSr&8#Dlv}%FKS0ek-6<0 zk_5YgnqU(9@GmUH0MF7&9KqFi6m4?L(E`%o$BK&8A7Q}KZF`G_C_kI+V?Z@HHI6kFbPUe0Ux8+*UE0&cF`Lz(!PN-azf>ebf#=MP=d) zu0t2A)}gCH-KPnU;d2<&ic3L*Lb_p|aDxLiET}xxur*I1%#uGS%1#D9byo_4;1ak00-l;v+*@aKwKGec~#0LBuweY$u@~_&wNkQB39aIWqH~`vl3hMJbR0_*b zsosX#StD-1J(z=EqZV=lb(RuV&ScbsdTevB1cytxXBq_Uha24-6eolV4c;!$EF z5k)9Vw-GhO{e-fjov0NOs&@~up2#IC2yKXj+D>A&X>kt{LDf+yj3GF{p%V?}CjtZ+ z50$73)szL*P`gebwh?8-TEb1twx{WAC6xYMvxBItswqnk==pyn^w#VlM}8EH2f(@s z$`opyymDqjt(4a%2_0CS0V)Ki*>8nPw zt(*=|pxsNvIfD=5T*BqN7j;g*4cnc51hx|TeP|-q5NgdtH4%FLIRc@76u=sZT0)QE zGsI&=JrPc*>4&O;h$lLT9Yis)ndl|dDhVI4n}{a<-*oWi5IV?Voi(~_Pg--(0EBpySJ;w7Z^R6I1!iN4Y>Wjt}btzuf5wF7+kf) lKRA%GZ!~e~(TJpgyRoJHo8w(A9RYV)nZ7*w#q#rU{{m&o0BZmM diff --git a/languages/piperless-pt_BR.po b/languages/piperless-pt_BR.po index 8391cc5..bc8d16e 100644 --- a/languages/piperless-pt_BR.po +++ b/languages/piperless-pt_BR.po @@ -469,9 +469,12 @@ msgstr "16 kbps (compacto)" msgid "12 kbps (minimal)" msgstr "12 kbps (mínimo)" -msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." -msgstr "Caminho absoluto para as ferramentas ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio." +msgid "FFprobe Binary Path" +msgstr "Caminho do binário FFprobe" -msgid "FFmpeg Binaries Path" -msgstr "Caminho dos binários FFmpeg" +msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty." +msgstr "Caminho absoluto para o binário ffprobe para detecção de duração do áudio. Detectado automaticamente do diretório ffmpeg se deixado vazio." + +msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty." +msgstr "Caminho absoluto para o binário ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio." diff --git a/languages/piperless-zh_CN.json b/languages/piperless-zh_CN.json index 0db13f5..5579bb4 100644 --- a/languages/piperless-zh_CN.json +++ b/languages/piperless-zh_CN.json @@ -3,8 +3,8 @@ "locale": "zh_CN", "source": "translations.json", "generated": "2026-05-10", - "total_strings": 117, - "translated": 117, + "total_strings": 118, + "translated": 118, "locked": false }, "strings": { @@ -123,7 +123,8 @@ "24 kbps (standard)": "24 kbps(标准)", "16 kbps (compact)": "16 kbps(紧凑)", "12 kbps (minimal)": "12 kbps(最小)", - "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "ffmpeg 工具的绝对路径,用于 MP3/Opus 转换。留空则自动检测。", - "FFmpeg Binaries Path": "FFmpeg 二进制文件路径" + "FFprobe Binary Path": "FFprobe 二进制文件路径", + "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "ffprobe 二进制文件的绝对路径,用于音频时长检测。留空则从 ffmpeg 目录自动检测。", + "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "ffmpeg 二进制文件的绝对路径,用于 MP3/Opus 转换。留空则自动检测。" } } \ No newline at end of file diff --git a/languages/piperless-zh_CN.mo b/languages/piperless-zh_CN.mo index 042abbf9b282bf2c4f0447a28f78a85c8837ee5f..ba3ed9efcdc4bce378b4f68faea493a6ccc1414b 100644 GIT binary patch delta 2914 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 M>xqf>rK8UO0K}F0CIA2c diff --git a/languages/piperless-zh_CN.po b/languages/piperless-zh_CN.po index aa31dc2..0ea6989 100644 --- a/languages/piperless-zh_CN.po +++ b/languages/piperless-zh_CN.po @@ -469,9 +469,12 @@ msgstr "16 kbps(紧凑)" msgid "12 kbps (minimal)" msgstr "12 kbps(最小)" -msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." -msgstr "ffmpeg 工具的绝对路径,用于 MP3/Opus 转换。留空则自动检测。" +msgid "FFprobe Binary Path" +msgstr "FFprobe 二进制文件路径" -msgid "FFmpeg Binaries Path" -msgstr "FFmpeg 二进制文件路径" +msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty." +msgstr "ffprobe 二进制文件的绝对路径,用于音频时长检测。留空则从 ffmpeg 目录自动检测。" + +msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty." +msgstr "ffmpeg 二进制文件的绝对路径,用于 MP3/Opus 转换。留空则自动检测。"