diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index 1a506f9d..f089ab46 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -90,6 +90,10 @@ var Ls = { "m_ok": "OK", "m_ng": "Cancel", + "enable": "Enable", + "danger": "DANGER", + "clipped": "copied to clipboard", + "ht_s": "second!s", "ht_m": "minute!s", "ht_h": "hour!s", @@ -170,6 +174,15 @@ var Ls = { "utl_stat": "status", "utl_prog": "progress", + // keep short: + "utl_404": "404", + "utl_err": "ERROR", + "utl_oserr": "OS-error", + "utl_found": "found", + "utl_defer": "defer", + "utl_yolo": "YOLO", + "utl_done": "done", + "ul_flagblk": "the files were added to the queue
however there is a busy up2k in another browser tab,
so waiting for that to finish first", "ul_btnlk": "the server configuration has locked this switch into this state", @@ -195,6 +208,7 @@ var Ls = { "cl_hcancel": "column hiding aborted", "ct_grid": '田 the grid', + "ct_ttips": '◔ ◡ ◔">ℹ️ tooltips', "ct_thumb": 'in grid-view, toggle icons or thumbnails$NHotkey: T">🖼️ thumbs', "ct_csel": 'use CTRL and SHIFT for file selection in grid-view">sel', "ct_ihop": 'when the image viewer is closed, scroll down to the last viewed file">g⮯', @@ -326,6 +340,7 @@ var Ls = { "fs_pname": "optional link name; will be random if blank", "fs_tsrc": "the file or folder to share", "fs_ppwd": "optional password", + "fs_w8": "creating share...", "fs_ok": "
share-URL created
\npress Enter/OK to Clipboard\npress ESC/Cancel to Close\n\n", "frt_dec": "may fix some cases of broken filenames\">url-decode", @@ -336,6 +351,8 @@ var Ls = { "fr_case": "case-sensitive regex\">case", "fr_win": "windows-safe names; replace <>:"\\|?* with japanese fullwidth characters\">win", "fr_slash": "replace / with a character that doesn't cause new folders to be created\">no /", + "fr_re": "regex search pattern to apply to original filenames; capturing groups can be referenced in the format field below like <code>(1)</code> and <code>(2)</code> and so on", + "fr_fmt": "inspired by foobar2000:$N<code>(title)</code> is replaced by song title,$N<code>[(artist) - ](title)</code> skips [this] part if artist is blank$N<code>$lpad((tn),2,0)</code> pads tracknumber to 2 digits", "fr_pdel": "delete", "fr_pnew": "save as", "fr_pname": "provide a name for your new preset", @@ -345,7 +362,7 @@ var Ls = { "fr_tags": "tags for the selected files (read-only, just for reference):", "fr_busy": "renaming {0} items...\n\n{1}", "fr_efail": "rename failed:\n", - "fr_nchg": "{0} of the new names were altered due to win and/or ikke /\n\nOK to continue with these altered new names?", + "fr_nchg": "{0} of the new names were altered due to win and/or no /\n\nOK to continue with these altered new names?", "fd_ok": "delete OK", "fd_err": "delete failed:\n", @@ -395,6 +412,7 @@ var Ls = { "gt_c1": "truncate filenames more (show less)", "gt_c2": "truncate filenames less (show more)", + "sm_w8": "searching...", "sm_prev": "search results below are from a previous query:\n ", "sl_close": "close search results", "sl_hits": "showing {0} hits", @@ -467,16 +485,20 @@ var Ls = { "un_del": "delete", "un_m3": "loading your recent uploads...", "un_busy": "deleting {0} files...", + "un_clip": "{0} links copied to clipboard", "u_https1": "you should", "u_https2": "switch to https", "u_https3": "for better performance", "u_ancient": 'your browser is impressively ancient -- maybe you should use bup instead', "u_nowork": "need firefox 53+ or chrome 57+ or iOS 11+", + "u_nodrop": 'your browser is too old for drag-and-drop uploading', + "u_notdir": "that's not a folder!\n\nyour browser is too old,\nplease try dragdrop instead", "u_uri": "to dragdrop images from other browser windows,\nplease drop it onto the big upload button", "u_enpot": 'switch to potato UI (may improve upload speed)', "u_depot": 'switch to fancy UI (may reduce upload speed)', "u_gotpot": 'switching to the potato UI for improved upload speed,\n\nfeel free to disagree and switch back!', + "u_pott": "

files:   {0} finished,   {1} failed,   {2} busy,   {3} queued

", "u_ever": "this is the basic uploader; up2k needs at least
chrome 21 // firefox 13 // edge 12 // opera 12 // safari 5.1", "u_su2k": 'this is the basic uploader; up2k is better', "u_ewrite": 'you do not have write-access to this folder', @@ -489,11 +511,15 @@ var Ls = { "u_up_life": "This upload will be deleted from the server\n{0} after it completes", "u_asku": 'upload these {0} files to {1}', "u_unpt": "you can undo / delete this upload using the top-left 🧯", + "u_bigtab": 'about to show {0} files\n\nthis may crash your browser, are you sure?', + "u_scan": 'Scanning files...', + "u_dirstuck": 'directory iterator got stuck trying to access the following {0} items; will skip:', "u_etadone": 'Done ({0}, {1} files)', "u_etaprep": '(preparing to upload)', "u_hashdone": 'hashing done', "u_hashing": 'hash', "u_dupdefer": "duplicate; will be processed after all other files", + "u_actx": "click this text to prevent loss of
performance when switching to other windows/tabs", "u_fixed": "OK!  Fixed it 👍", "u_cuerr": "failed to upload chunk {0} of {1};\nprobably harmless, continuing\n\nfile: {2}", "u_cuerr2": "server rejected upload (chunk {0} of {1});\nwill retry later\n\nfile: {2}\n\nerror ", @@ -627,6 +653,10 @@ var Ls = { "m_ok": "OK", "m_ng": "Avbryt", + "enable": "Aktiv", + "danger": "VARSKU", + "clipped": "kopiert til utklippstavlen", + "ht_s": "sekund!er", "ht_m": "minutt!er", "ht_h": "time!r", @@ -707,6 +737,15 @@ var Ls = { "utl_stat": "status", "utl_prog": "fremdrift", + // må være korte: + "utl_404": "404", + "utl_err": "FEIL!", + "utl_oserr": "OS-feil", + "utl_found": "funnet", + "utl_defer": "senere", + "utl_yolo": "YOLO", + "utl_done": "ferdig", + "ul_flagblk": "filene har blitt lagt i køen
men det er en annen nettleserfane som holder på med befaring eller opplastning akkurat nå,
så venter til den er ferdig først", "ul_btnlk": "bryteren har blitt låst til denne tilstanden i serverens konfigurasjon", @@ -732,6 +771,7 @@ var Ls = { "cl_hcancel": "kolonne-skjuling avbrutt", "ct_grid": '田 ikoner', + "ct_ttips": 'hvis hjelpetekst ved å holde musen over ting">ℹ️ tips', "ct_thumb": 'vis miniatyrbilder istedenfor ikoner$NSnarvei: T">🖼️ bilder', "ct_csel": 'bruk tastene CTRL og SHIFT for markering av filer i ikonvisning">merk', "ct_ihop": 'bla ned til sist viste bilde når bildeviseren lukkes">g⮯', @@ -863,6 +903,7 @@ var Ls = { "fs_pname": "frivillig navn (blir noe tilfeldig ellers)", "fs_tsrc": "fil/mappe som skal deles", "fs_ppwd": "frivillig passord", + "fs_w8": "oppretter deling...", "fs_ok": "
URL opprettet
\ntrykk Enter/OK for å kopiere linken (for CTRL-V)\ntrykk ESC/Avbryt for å bare bekrefte\n\n", "frt_dec": "kan korrigere visse ødelagte filnavn\">url-decode", @@ -873,6 +914,8 @@ var Ls = { "fr_case": "versalfølsomme uttrykk\">Aa", "fr_win": "bytt ut bokstavene <>:"\\|?* med$Ntilsvarende som windows ikke får panikk av\">win", "fr_slash": "bytt ut bokstaven / slik at den ikke forårsaker at nye mapper opprettes\">ikke /", + "fr_re": "regex-mønster som kjøres på hvert filnavn. Grupper kan leses ut i format-feltet nedenfor, f.eks. <code>(1)</code> og <code>(2)</code> osv.", + "fr_fmt": "inspirert av foobar2000:$N<code>(title)</code> byttes ut med sangtittel,$N<code>[(artist) - ](title)</code> dropper [dette] hvis artist er blank$N<code>$lpad((tn),2,0)</code> viser sangnr. med 2 siffer", "fr_pdel": "slett", "fr_pnew": "lagre som", "fr_pname": "gi innstillingene dine et navn", @@ -932,6 +975,7 @@ var Ls = { "gt_c1": "reduser maks-lengde på filnavn", "gt_c2": "øk maks-lengde på filnavn", + "sm_w8": "søker...", "sm_prev": "søkeresultatene er fra et tidligere søk:\n ", "sl_close": "lukk søkeresultater", "sl_hits": "viser {0} treff", @@ -1004,16 +1048,20 @@ var Ls = { "un_del": "slett", "un_m3": "henter listen med nylig opplastede filer...", "un_busy": "sletter {0} filer...", + "un_clip": "{0} lenker kopiert til utklippstavlen", "u_https1": "du burde", "u_https2": "bytte til https", "u_https3": "for høyere hastighet", "u_ancient": 'nettleseren din er prehistorisk -- mulig du burde bruke bup istedenfor', "u_nowork": "krever firefox 53+, chrome 57+, eller iOS 11+", + "u_nodrop": 'nettleseren din er for gammel til å laste opp filer ved å dra dem inn i vinduet', + "u_notdir": "mottok ikke mappen!\n\nnettleseren din er for gammel,\nprøv å dra mappen inn i vinduet istedenfor", "u_uri": "for å laste opp bilder ifra andre nettleservinduer,\nslipp bildet rett på den store last-opp-knappen", "u_enpot": 'bytt til enkelt UI (gir sannsynlig raskere opplastning)', "u_depot": 'bytt til snæsent UI (gir sannsynlig tregere opplastning)', "u_gotpot": 'byttet til et enklere UI for å laste opp raskere,\n\ndu kan gjerne bytte tilbake altså!', + "u_pott": "

filer:   {0} ferdig,   {1} feilet,   {2} behandles,   {3} i kø

", "u_ever": "dette er den primitive opplasteren; up2k krever minst:
chrome 21 // firefox 13 // edge 12 // opera 12 // safari 5.1", "u_su2k": 'dette er den primitive opplasteren; up2k er bedre', "u_ewrite": 'du har ikke skrivetilgang i denne mappen', @@ -1026,11 +1074,15 @@ var Ls = { "u_up_life": "Filene slettes fra serveren {0}\netter at opplastningen er fullført", "u_asku": 'Laste opp disse {0} filene til {1}', "u_unpt": "Du kan angre / slette opplastningen med 🧯 oppe til venstre", + "u_bigtab": 'Vil nå vise {0} filer...\n\nDette kan krasje nettleseren din. Fortsette?', + "u_scan": 'Leser mappene...', + "u_dirstuck": 'Nettleseren din fikk ikke tilgang til å lese følgende {0} filer/mapper, så de blir hoppet over:', "u_etadone": 'Ferdig ({0}, {1} filer)', "u_etaprep": '(forbereder opplastning)', "u_hashdone": 'befaring ferdig', "u_hashing": 'les', "u_dupdefer": "duplikat; vil bli håndtert til slutt", + "u_actx": "klikk her for å forhindre tap av
ytelse ved bytte til andre vinduer/faner", "u_fixed": "OK!  Løste seg 👍", "u_cuerr": "kunne ikke laste opp del {0} av {1};\nsikkert greit, fortsetter\n\nfil: {2}", "u_cuerr2": "server nektet opplastningen (del {0} av {1});\nprøver igjen senere\n\nfil: {2}\n\nerror ", @@ -1164,6 +1216,10 @@ var Ls = { "m_ok": "确定", "m_ng": "取消", + "enable": "启用", //m + "danger": "危险", //m + "clipped": "已复制到剪贴板", //m + "ht_s": "秒", "ht_m": "分", "ht_h": "时", @@ -1244,6 +1300,15 @@ var Ls = { "utl_stat": "状态", "utl_prog": "进度", + // 保持简短: + "utl_404": "404", //m + "utl_err": "故障", //m + "utl_oserr": "OS故障", //m + "utl_found": "已找到", //m + "utl_defer": "延期", //m + "utl_yolo": "加速", //m + "utl_done": "完成", + "ul_flagblk": "文件已添加到队列
但另一个浏览器标签中有一个繁忙的 up2k,
因此等待它完成", "ul_btnlk": "服务器配置已将此开关锁定到此状态", @@ -1269,6 +1334,7 @@ var Ls = { "cl_hcancel": "列隐藏已取消", "ct_grid": '网格视图', + "ct_ttips": '◔ ◡ ◔">ℹ️ 工具提示', //m "ct_thumb": '在网格视图中,切换图标或缩略图$N快捷键: T">🖼️ 缩略图', "ct_csel": '在网格视图中使用 CTRL 和 SHIFT 进行文件选择">CTRL', "ct_ihop": '当图像查看器关闭时,滚动到最后查看的文件">滚动', @@ -1400,6 +1466,7 @@ var Ls = { "fs_pname": "链接名称可选;如果为空则随机", "fs_tsrc": "共享的文件或文件夹", "fs_ppwd": "密码可选", + "fs_w8": "正在创建文件共享...", //m "fs_ok": "
分享链接已创建
\n按 Enter/OK 复制到剪贴板\n按 ESC/Cancel 关闭\n\n", "frt_dec": "可能修复一些损坏的文件名\">url-decode", @@ -1410,6 +1477,8 @@ var Ls = { "fr_case": "区分大小写的正则表达式\">case", "fr_win": "Windows 安全名称;将 <>:"\\|?* 替换为日文全角字符\">win", "fr_slash": "将 / 替换为不会导致新文件夹创建的字符\">不使用 /", + "fr_re": "正则表达式搜索模式应用于原始文件名;$N可以在下面的格式字段中引用捕获组,如<code>(1)</code>和<code>(2)</code>等等。", //m + "fr_fmt": "受到 foobar2000 的启发:$N<code>(title)</code> 被歌曲名称替换,$N<code>[(artist) - ](title)</code> 仅当歌曲艺术家不为空时才包含<code>[此]</code>部分$N<code>$lpad((tn),2,0)</code> 将曲目编号填充为 2 位数字", //m "fr_pdel": "删除", "fr_pnew": "另存为", "fr_pname": "为你的新预设提供一个名称", @@ -1419,7 +1488,7 @@ var Ls = { "fr_tags": "选定文件的标签(只读,仅供参考):", "fr_busy": "正在重命名 {0} 项...\n\n{1}", "fr_efail": "重命名失败:\n", - "fr_nchg": "{0} 个新名称由于 win 和/或 ikke / 被更改\n\n确定继续使用这些更改的新名称?", + "fr_nchg": "{0} 个新名称由于 win 和/或 不使用 / 被更改\n\n确定继续使用这些更改的新名称?", "fd_ok": "删除成功", "fd_err": "删除失败:\n", @@ -1469,6 +1538,7 @@ var Ls = { "gt_c1": "截断文件名更多(显示更少)", "gt_c2": "截断文件名更少(显示更多)", + "sm_w8": "正在搜寻匹配...", //m "sm_prev": "以下是来自先前查询的搜索结果:\n ", "sl_close": "关闭搜索结果", "sl_hits": "显示 {0} 个结果", @@ -1541,16 +1611,20 @@ var Ls = { "un_del": "删除", "un_m3": "正在加载你的近期上传...", "un_busy": "正在删除 {0} 个文件...", + "un_clip": "{0} 个链接已复制到剪贴板", //m "u_https1": "你应该", "u_https2": "切换到 https", "u_https3": "以获得更好的性能", "u_ancient": '你的浏览器非常古老 -- 也许你应该 改用 bup', "u_nowork": "需要 Firefox 53+ 或 Chrome 57+ 或 iOS 11+", + "u_nodrop": '您的浏览器太旧,不支持通过拖动文件到窗口来上传文件', //m + "u_notdir": "未收到文件夹!\n\n您的浏览器太旧;\n请尝试将文件夹拖入窗口", //m "u_uri": "要从其他浏览器窗口拖放图片,\n请将其拖放到大的上传按钮上", "u_enpot": '切换到 简约 UI(可能提高上传速度)', "u_depot": '切换到 精美 UI(可能降低上传速度)', "u_gotpot": '切换到土豆 UI 以提高上传速度,\n\n随时可以不同意并切换回去!', + "u_pott": "

个文件:   {0} 已完成,   {1} 失败,   {2} 正在处理,   {3} 已排队

", //m "u_ever": "这是基本的上传工具; up2k 需要至少
chrome 21 // firefox 13 // edge 12 // opera 12 // safari 5.1", "u_su2k": '这是基本的上传工具;up2k 更好', "u_ewrite": '你对这个文件夹没有写入权限', @@ -1563,11 +1637,15 @@ var Ls = { "u_up_life": "此上传将在 {0} 后从服务器删除", "u_asku": '将这些 {0} 个文件上传到 {1}', "u_unpt": "你可以使用左上角的 🧯 撤销/删除此上传", + "u_bigtab": '即将显示 {0} 个文件。这可能会导致您的浏览器崩溃。您确定吗?', //m + "u_scan": '正在扫描文件...', //m + "u_dirstuck": '您的浏览器无法访问以下 {0} 个文件/文件夹,因此它们将被跳过:', //m "u_etadone": '完成 ({0}, {1} 个文件)', "u_etaprep": '(准备上传)', "u_hashdone": '哈希完成', "u_hashing": '哈希', "u_dupdefer": "这是一个重复文件。它将在所有其他文件上传后进行处理", //m + "u_actx": "单击此文本以防止切换到其他窗口/选项卡时性能下降", //m "u_fixed": "好! 已修复 👍", "u_cuerr": "上传块 {0} 的 {1} 失败;\n可能无害,继续中\n\n文件:{2}", "u_cuerr2": "服务器拒绝上传(块 {0} 的 {1});\n稍后重试\n\n文件:{2}\n\n错误 ", @@ -1813,7 +1891,7 @@ ebi('op_cfg').innerHTML = ( '
\n' + '

' + L.cl_opts + '

\n' + '
\n' + - ' ℹ️ tooltips\n' + + ' ' + L.ct_grid + '\n' + ' ', - 'enable'], + '' + L.enable + ''], h2 = [], h3 = [], h4 = []; var vs = []; @@ -3640,7 +3718,7 @@ var afilt = (function () { h2 = []; html = ['']; + '' + L.enable + '']; for (var a = 0; a < r.drch.length; a++) { html.push(''); @@ -4504,7 +4582,7 @@ var fileman = (function () { surl = surl.slice(15); modal.confirm(L.fs_ok + esc(surl), function() { cliptxt(surl, function () { - toast.ok(2, 'copied to clipboard'); + toast.ok(2, L.clipped); }); }); } @@ -4519,7 +4597,7 @@ var fileman = (function () { plist.push(pbtns[a].textContent); shui.style.display = 'none'; - toast.inf(30, "creating share..."); + toast.inf(30, L.fs_w8); var body = { "k": sh_k.value, @@ -4607,8 +4685,8 @@ var fileman = (function () { '
', - 'enable' + r.drch[a] + '
', - '', - '', + '', + '', '
regex
format
regex
format
preset', '', '', @@ -4616,7 +4694,9 @@ var fileman = (function () { '
' ]); - var cheap = f.length > 500; + var cheap = f.length > 500, + t_rst = L.frt_rst.split('>').pop(); + if (sel.length == 1) html.push( '
\n' + @@ -4631,7 +4711,7 @@ var fileman = (function () { '' : '' + - '') + + '') + '' + ''); } @@ -4889,7 +4969,7 @@ var fileman = (function () { deleter(); } - modal.confirm('
DANGER
\n' + L.fd_warn1.format(vps.length) + '
    ' + uricom_adec(vps, true).join('') + '
', function () { + modal.confirm('
' + L.danger + '
\n' + L.fd_warn1.format(vps.length) + '
    ' + uricom_adec(vps, true).join('') + '
', function () { modal.confirm(L.fd_warn2, deleter, null); }, null); }; @@ -6505,7 +6585,7 @@ var ahotkeys = function (e) { function do_search() { search_in_progress = Date.now(); - srch_msg(false, "searching..."); + srch_msg(false, L.sm_w8); clearTimeout(search_timeout); var xhr = new XHR(); @@ -9115,7 +9195,7 @@ var unpost = (function () { ev(e); var txt = linklist(); cliptxt(txt + '\n', function () { - toast.inf(5, txt.split('\n').length + ' links copied to clipboard'); + toast.inf(5, L.un_clip.format(txt.split('\n').length)); }); }; diff --git a/copyparty/web/up2k.js b/copyparty/web/up2k.js index 947d3a67..50afd99b 100644 --- a/copyparty/web/up2k.js +++ b/copyparty/web/up2k.js @@ -152,13 +152,13 @@ function U2pvis(act, btns, uc, st) { r.mod0 = null; var markup = { - '404': '404', - 'ERROR': 'ERROR', - 'OS-error': 'OS-error', - 'found': 'found', - 'defer': 'defer', - 'YOLO': 'YOLO', - 'done': 'done', + '404': '' + L.utl_404 + '', + 'ERROR': '' + L.utl_err + '', + 'OS-error': '' + L.utl_oserr + '', + 'found': '' + L.utl_found + '', + 'defer': '' + L.utl_defer + '', + 'YOLO': '' + L.utl_yolo + '', + 'done': '' + L.utl_done + '', }; r.addfile = function (entry, sz, draw) { @@ -446,9 +446,7 @@ function U2pvis(act, btns, uc, st) { return; r.npotato = 0; - var html = [ - "

files:   {0} finished,   {1} failed,   {2} busy,   {3} queued

".format( - r.ctr.ok, r.ctr.ng, r.ctr.bz, r.ctr.q)]; + var html = [L.u_pott.format(r.ctr.ok, r.ctr.ng, r.ctr.bz, r.ctr.q)]; while (r.head < r.tab.length && has(["ok", "ng"], r.tab[r.head].in)) r.head++; @@ -603,7 +601,7 @@ function U2pvis(act, btns, uc, st) { if (nf < 9000) return go(); - modal.confirm('about to show ' + nf + ' files\n\nthis may crash your browser, are you sure?', go, null); + modal.confirm(L.u_bigtab.format(nf), go, null); }; } @@ -1038,7 +1036,7 @@ function up2k_init(subtle) { } catch (ex) { document.body.ondragenter = document.body.ondragleave = document.body.ondragover = null; - return modal.alert('your browser does not support drag-and-drop uploading'); + return modal.alert(L.u_nodrop); } if (btn) return; @@ -1105,7 +1103,7 @@ function up2k_init(subtle) { } if (!good_files.length && bad_files.length) - return toast.err(30, "that's not a folder!\n\nyour browser is too old,\nplease try dragdrop instead"); + return toast.err(30, L.u_notdir); return read_dirs(null, [], [], good_files, nil_files, bad_files); } @@ -1123,7 +1121,7 @@ function up2k_init(subtle) { if (err) return modal.alert('sorry, ' + err); - toast.inf(0, 'Scanning files...'); + toast.inf(0, L.u_scan); if ((dz == 'up_dz' && uc.fsearch) || (dz == 'srch_dz' && !uc.fsearch)) tgl_fsearch(); @@ -1211,7 +1209,7 @@ function up2k_init(subtle) { match = false; if (match) { - var msg = ['directory iterator got stuck trying to access the following {0} items; will skip:
    '.format(missing.length)]; + var msg = [L.u_dirstuck.format(missing.length) + '
      ']; for (var a = 0; a < Math.min(20, missing.length); a++) msg.push('
    • ' + esc(missing[a]) + '
    • '); @@ -1282,7 +1280,7 @@ function up2k_init(subtle) { } function gotallfiles(good_files, nil_files, bad_files) { - if (toast.txt == 'Scanning files...') + if (toast.txt == L.u_scan) toast.hide(); if (uc.fsearch && !uc.turbo) @@ -1438,7 +1436,7 @@ function up2k_init(subtle) { if (!actx || actx.state != 'suspended' || toast.visible) return; - toast.warn(30, "
      please click this text to
      unlock full upload speed
      "); + toast.warn(30, "
      " + L.u_actx + "
      "); }, 500); } @@ -1480,7 +1478,7 @@ function up2k_init(subtle) { ev(e); var txt = linklist(); cliptxt(txt + '\n', function () { - toast.inf(5, txt.split('\n').length + ' links copied to clipboard'); + toast.inf(5, un_clip.format(txt.split('\n').length)); }); }; @@ -2282,7 +2280,8 @@ function up2k_init(subtle) { apop(st.busy.handshake, t); st.todo.handshake.unshift(t); t.cooldown = Date.now() + 5000 + Math.floor(Math.random() * 3000); - return toast.err(0, 'Handshake error; will retry...\n\n' + L.badreply + ':\n\n' + unpre(xhr.responseText)); + var txt = t.t_uploading ? L.u_ehsfin : t.srch ? L.u_ehssrch : L.u_ehsinit; + return toast.err(0, txt + '\n\n' + L.badreply + ':\n\n' + unpre(xhr.responseText)); } t.t_handshake = Date.now();
' + (cheap ? '