diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js
index 59b1ab5f..824d2fd1 100644
--- a/copyparty/web/browser.js
+++ b/copyparty/web/browser.js
@@ -2510,9 +2510,634 @@ var Ls = {
"lang_set": "Neuladen um Änderungen anzuwenden?",
},
+ "rus": {
+ "tt": "Русский",
+
+ "cols": {
+ "c": "кнопки действий",
+ "dur": "длительность",
+ "q": "качество / битрейт",
+ "Ac": "аудио кодек",
+ "Vc": "видео кодек",
+ "Fmt": "формат / контейнер",
+ "Ahash": "аудио хэш",
+ "Vhash": "видео хэш",
+ "Res": "разрешение",
+ "T": "тип файла",
+ "aq": "качество аудио / битрейт",
+ "vq": "качество видео / битрейт",
+ "pixfmt": "цветность / структура пикселей",
+ "resw": "ширина",
+ "resh": "высота",
+ "chs": "аудио каналы",
+ "hz": "частота"
+ },
+
+ "hks": [
+ [
+ "misc",
+ ["ESC", "закрывает всё"],
+
+ "file-manager",
+ ["G", "переключить вид (список / плитки)"],
+ ["T", "миниатюры / иконки"],
+ ["⇧ A/D", "размер миниатюр"],
+ ["ctrl-K", "удалить выбранное"],
+ ["ctrl-X", "вырезать в буфер"],
+ ["ctrl-C", "копировать в буфер"],
+ ["ctrl-V", "вставить сюда"],
+ ["Y", "скачать выбранное"],
+ ["F2", "переименовать"],
+
+ "file-list-sel",
+ ["space", "выбрать файл"],
+ ["↑/↓", "переместить курсор"],
+ ["ctrl ↑/↓", "прокрутить список"],
+ ["⇧ ↑/↓", "выбрать след/пред файл"],
+ ["ctrl-A", "выбрать всё"],
+ ], [
+ "navigation",
+ ["B", "переключить дерево / путь"],
+ ["I/K", "пред/след папка"],
+ ["M", "на уровень выше"],
+ ["V", "переключить папки / текстовые файлы"],
+ ["A/D", "размер панели"],
+ ], [
+ "audio-player",
+ ["J/L", "пред/след трек"],
+ ["U/O", "назад/вперёд 10 сек"],
+ ["0..9", "перейти на 0%..90%"],
+ ["P", "play/pause"],
+ ["S", "выбрать текущий трек"],
+ ["Y", "скачать трек"],
+ ], [
+ "image-viewer",
+ ["J/L, ←/→", "пред/след картинка"],
+ ["Home/End", "первая/последняя"],
+ ["F", "полный экран"],
+ ["R", "повернуть по часовой"],
+ ["⇧ R", "повернуть против"],
+ ["S", "выбрать картинку"],
+ ["Y", "скачать картинку"],
+ ], [
+ "video-player",
+ ["U/O", "назад/вперёд 10 сек"],
+ ["P/K/Space", "play/pause"],
+ ["C", "продолжить след. трек"],
+ ["V", "повтор"],
+ ["M", "заглушить"],
+ ["[ и ]", "установить интервал повтора"],
+ ], [
+ "textfile-viewer",
+ ["I/K", "пред/след файл"],
+ ["M", "закрыть"],
+ ["E", "редактировать"],
+ ["S", "выбрать файл"],
+ ]
+ ],
+
+ "m_ok": "ОК",
+ "m_ng": "Отмена",
+
+ "enable": "Вкл",
+ "danger": "ОПАСНО",
+ "clipped": "скопировано",
+
+ "ht_s1": "секунда",
+ "ht_s2": "секунд",
+ "ht_m1": "минута",
+ "ht_m2": "минут",
+ "ht_h1": "час",
+ "ht_h2": "часов",
+ "ht_d1": "день",
+ "ht_d2": "дней",
+ "ht_and": " и ",
+
+ "goh": "панель-управления",
+ "gop": 'пред. объект">пред',
+ "gou": 'родительская папка">вверх',
+ "gon": 'след. папка">след',
+ "logout": "Выйти ",
+ "access": " доступ",
+ "ot_close": "закрыть",
+ "ot_search": "поиск файлов по атрибутам, пути, тегам или комбинации$N$Nпримеры:$Nfoo bar
= и «foo» и «bar»$Nfoo -bar
= «foo» но не «bar»$N^yana .opus$
= начинается на «yana» и расширение «opus»$N\"try unite\"
= точное совпадение$N$Nдаты в формате ISO-8601, например$N2009-12-31
или 2020-09-12 23:30:00
",
+ "ot_unpost": "удалить недавние загрузки или отменить текущие",
+ "ot_bup": "простой загрузчик (работает даже в Netscape 4.0)",
+ "ot_mkdir": "создать папку",
+ "ot_md": "создать markdown",
+ "ot_msg": "отправить сообщение в лог",
+ "ot_mp": "настройки плеера",
+ "ot_cfg": "настройки",
+ "ot_u2i": 'загрузка файлов (если есть доступ)$N$Nподдержка докачки, многопоточность, сохранение дат$Nно больше нагрузки на CPU чем [🎈] (простой загрузчик)
иконка становится индикатором загрузки!',
+ "ot_u2w": 'загрузка с докачкой$N$Nмногопоточность, сохранение дат$Nно больше нагрузки на CPU чем [🎈] (простой загрузчик)
иконка становится индикатором загрузки!',
+ "ot_noie": 'Используй Chrome / Firefox / Edge',
+
+ "ab_mkdir": "создать папку",
+ "ab_mkdoc": "создать markdown",
+ "ab_msg": "отправить в лог",
+
+ "ay_path": "к папкам",
+ "ay_files": "к файлам",
+
+ "wt_ren": "переименовать $NГор. клавиша: F2",
+ "wt_del": "удалить $NГор. клавиша: ctrl-K",
+ "wt_cut": "вырезать $NГор. клавиша: ctrl-X",
+ "wt_cpy": "копировать $NГор. клавиша: ctrl-C",
+ "wt_pst": "вставить $NГор. клавиша: ctrl-V",
+ "wt_selall": "выбрать всё $NГор. клавиша: ctrl-A",
+ "wt_selinv": "инвертировать выбор",
+ "wt_zip1": "скачать папку архивом",
+ "wt_selzip": "скачать выбранное архивом",
+ "wt_seldl": "скачать выбранное $NГор. клавиша: Y",
+ "wt_npirc": "скопировать инфо о треке (IRC)",
+ "wt_nptxt": "скопировать инфо о треке (текст)",
+ "wt_m3ua": "добавить в m3u-плейлист",
+ "wt_m3uc": "скопировать m3u в буфер",
+ "wt_grid": "переключить вид $NГор. клавиша: G",
+ "wt_prev": "пред. трек $NГор. клавиша: J",
+ "wt_play": "play/pause $NГор. клавиша: P",
+ "wt_next": "след. трек $NГор. клавиша: L",
+
+ "ul_par": "параллельные загрузки:",
+ "ut_rand": "рандомные имена",
+ "ut_u2ts": "сохранить дату изменения",
+ "ut_ow": "перезаписать существующие?$N🛡️: никогда$N🕒: если старее$N♻️: всегда",
+ "ut_mt": "продолжать хешировать во время загрузки$N$Nможно выключить при медленном HDD/CPU",
+ "ut_ask": 'спросить перед загрузкой">💭',
+ "ut_pot": "упрощённый интерфейс для ускорения",
+ "ut_srch": "не загружать, а проверить наличие файлов на сервере",
+ "ut_par": "пауза при 0$N$Nувеличить при медленном соединении$N$Nоставить 1 для LAN или медленного HDD",
+ "ul_btn": "перетащи файлы/папки сюда (или кликни)",
+ "ul_btnu": "З А Г Р У З И Т Ь",
+ "ul_btns": "П О И С К",
+
+ "ul_hash": "хеш",
+ "ul_send": "отправка",
+ "ul_done": "готово",
+ "ul_idle1": "очередь пуста",
+ "ut_etah": "средняя скорость хеширования и оставшееся время",
+ "ut_etau": "средняя скорость загрузки и оставшееся время",
+ "ut_etat": "общая скорость и оставшееся время",
+
+ "uct_ok": "успешно",
+ "uct_ng": "ошибка",
+ "uct_done": "все завершённые",
+ "uct_bz": "в процессе",
+ "uct_q": "в очереди",
+
+ "utl_name": "имя",
+ "utl_ulist": "список",
+ "utl_ucopy": "копировать",
+ "utl_links": "ссылки",
+ "utl_stat": "статус",
+ "utl_prog": "прогресс",
+
+ "utl_404": "404",
+ "utl_err": "ОШИБКА",
+ "utl_oserr": "ОС-ошибка",
+ "utl_found": "найдено",
+ "utl_defer": "отложено",
+ "utl_yolo": "YOLO",
+ "utl_done": "готово",
+
+ "ul_flagblk": "файлы в очереди, но другая вкладка уже загружает - ждём",
+ "ul_btnlk": "настройки сервера фиксируют этот переключатель",
+
+ "udt_up": "Загрузить",
+ "udt_srch": "Поиск",
+ "udt_drop": "брось сюда",
+
+ "u_nav_m": '
Enter
= Файлы (один или несколько)\nESC
= Папку (включая подпапки)',
+ "u_nav_b": 'ФайлыПапку',
+
+ "cl_opts": "настройки",
+ "cl_themes": "тема",
+ "cl_langs": "язык",
+ "cl_ziptype": "скачать папку",
+ "cl_uopts": "настройки up2k",
+ "cl_favico": "иконка",
+ "cl_bigdir": "большие папки",
+ "cl_hsort": "#сортировка",
+ "cl_keytype": "обозначение клавиш",
+ "cl_hiddenc": "скрытые колонки",
+ "cl_hidec": "скрыть",
+ "cl_reset": "сброс",
+ "cl_hpick": "нажми на заголовок колонки, чтобы скрыть",
+ "cl_hcancel": "отмена скрытия",
+
+ "ct_grid": '田 сетка',
+ "ct_ttips": '◔ ◡ ◔">ℹ️ подсказки',
+ "ct_thumb": 'в режиме сетки, переключает иконки или миниатюры$NГор. клавиша: T">🖼️ thumbs',
+ "ct_csel": 'использовать CTRL и SHIFT для выбора файлов в режиме сетки">sel',
+ "ct_ihop": 'перематытывать к файлу после закрытия просмотра картинки">g⮯',
+ "ct_dots": 'показывать скрытые файлы (если сервер разрешает)">dotfiles',
+ "ct_qdel": 'спрашивать только один раз перед удалением файлов">qdel',
+ "ct_dir1st": 'сортировать папки перед файлами">📁 first',
+ "ct_nsort": 'натуральная сортировка (для файлов где цифры в начале)">nsort',
+ "ct_readme": 'показывать README.md, если таковой есть в папке">📜 readme',
+ "ct_idxh": 'показывать index.html вместо содержимого папки, если таковой есть">htm',
+ "ct_sbars": 'показывать полосы прокрутки">⟊',
+
+ "cut_umod": "если файл уже существует на сервере, то обновляет дату изменения файла на ту, как у твоего файла (требуется разрешение на запись+удаление)\">re📅",
+
+ "cut_turbo": "YOLO кнопка, ты, скорее всего, не хочешь это нажимать:$N$Nиспользуй если прервал огромную загрузку и хочешь продолжить как можно быстрее$N$Nпроверяет только размер файла, а не содержимое$N$Nвыключи после загрузки и перепроверь файлы\">turbo",
+
+ "cut_datechk": "работает только с turbo$N$Nпроверяет дату изменения$N$Nтеоретически ловит незавершённые загрузки$N$Nно лучше потом перепроверить с выключенным турбо\">date-chk",
+
+ "cut_u2sz": "размер чанка (в MiB) для загрузки; большие значения лучше для медленных соединений",
+
+ "cut_flag": "разрешить загрузку только в одной вкладке $N -- у других вкладок тоже должно быть это включено $N -- влияет только на вкладки на одном домене",
+
+ "cut_az": "загружать файлы по алфавиту$N$Nлегче следить, но немного медленнее",
+
+ "cut_nag": "уведомление при завершении",
+ "cut_sfx": "звук при завершении",
+
+ "cut_mt": "многопоточное хеширование$N$Nиспользует больше RAM (до +512 MiB)$N$Nускоряет https на 30%, http в 4.5 раза\">mt",
+
+ "cut_wasm": "использовать wasm вместо встроенного хешера; быстрее в Chrome, но может сожрать всю память и упасть\">wasm",
+
+ "cft_text": "текст иконки (оставь пустым чтобы выключить)",
+ "cft_fg": "цвет текста",
+ "cft_bg": "цвет фона",
+
+ "cdt_lim": "макс. файлов в папке",
+ "cdt_ask": "спрашивать при прокрутке вниз",
+ "cdt_hsort": "количество правил сортировки в URL",
+
+ "tt_entree": "показать дерево папок$NГор. клавиша: B",
+ "tt_detree": "показать путь$NГор. клавиша: B",
+ "tt_visdir": "прокрутить к выбранной папке",
+ "tt_ftree": "переключить дерево / текстовые файлы$NГор. клавиша: V",
+ "tt_pdock": "показать родительские папки сверху",
+ "tt_dynt": "автоматически расширяться",
+ "tt_wrap": "перенос строк",
+ "tt_hover": "показывать полный текст при наведении$N(ломает скроллинг)",
+
+ "ml_pmode": "в конце папки...",
+ "ml_btns": "команды",
+ "ml_tcode": "перекодировать",
+ "ml_tcode2": "в формат",
+ "ml_tint": "оттенок",
+ "ml_eq": "эквалайзер",
+ "ml_drc": "компрессор",
+
+ "mt_loop": "повторять один трек\">🔁",
+ "mt_one": "стоп после одного трека\">1️⃣",
+ "mt_shuf": "перемешать треки в каждой папке\">🔀",
+ "mt_aplay": "автопроигрывание если в ссылке есть ID трека$N$Nотключение этого так же отключает автообновление ссылки в браузере, чтобы предотвратить автопроигрывание\">a▶",
+ "mt_preload": "загружать след. трек заранее\">preload",
+ "mt_prescan": "перейти в след. папку перед окончанием$Nтрека, оставляя браузер довольным,$Nчтобы он не остановил проигрывание\">nav",
+ "mt_fullpre": "пытаться загрузить весь трек;$N✅ включи для нестабильных соединений,$N❌ выключи для медленного соединения\">full",
+ "mt_fau": "на телефонах,: не останавливать музыку если след. трек грузится медленно\">☕️",
+ "mt_waves": "волны в прогресс-баре\">~s",
+ "mt_npclip": "кнопки для копирования текущего трека\">/np",
+ "mt_m3u_c": "кнопки для копирования плейлиста как m3u8 плейлист\">📻",
+ "mt_octl": "интеграция с ОС (горячие клавиши)\">os-ctl",
+ "mt_oseek": "позволить ОС перематывать треки\">seek",
+ "mt_oscv": "показывать обложку в ОС\">art",
+ "mt_follow": "прокручивать к играющему треку\">🎯",
+ "mt_compact": "компактное управление\">⟎",
+ "mt_uncache": "очистить кеш\">uncache",
+ "mt_mloop": "повторять папку\">🔁 loop",
+ "mt_mnext": "загрузить след. папку и продолжить\">📂 next",
+ "mt_mstop": "стоп\">⏸ stop",
+ "mt_cflac": "конвертировать flac/wav в opus\">flac",
+ "mt_caac": "конвертировать aac/m4a в opus\">aac",
+ "mt_coth": "конвертировать остальное (не mp3) в opus\">oth",
+ "mt_c2opus": "лучший выбор для ПК/Android\">opus",
+ "mt_c2owa": "для iOS 17.5+\">owa",
+ "mt_c2caf": "для iOS 11-17\">caf",
+ "mt_c2mp3": "для очень старых устройств\">mp3",
+ "mt_c2ok": "отличный выбор",
+ "mt_c2nd": "не рекомендуемый формат, но ок",
+ "mt_c2ng": "устройство не поддерживает этот формат, но попробуем",
+ "mt_xowa": "баги в iOS мешают фоновому воспроизведению; используй caf или mp3",
+ "mt_tint": "уровень фона (0-100) в прогресс-баре",
+ "mt_eq": "эквалайзер и громкость;$N$N0
= стандартная громкость$N$N1
= стерео$N0.5
= 50% микса$N0
= моно$N$N-0.8
& 10
= убрать вокал :^)$N$Nэквалайзер делает gapless-альбомы идеальными",
+ "mt_drc": "компрессор динамического диапазона;$N$Nснижает громкость выше порога;$Nможно увеличить громкость в эквалайзере",
+
+ "mb_play": "воспроизвести",
+ "mm_hashplay": "воспроизвести этот файл?",
+ "mm_m3u": "Enter/ОК
= Воспроизвести\nESC/Отмена
= Изменить",
+ "mp_breq": "нужен Firefox 82+ или Chrome 73+ или iOS 15+",
+ "mm_bload": "загрузка...",
+ "mm_bconv": "конвертируем в {0}, жди...",
+ "mm_opusen": "браузер не может играть aac/m4a;$Nвключено перекодирование в opus",
+ "mm_playerr": "ошибка воспроизведения: ",
+ "mm_eabrt": "воспроизведение отменено",
+ "mm_enet": "проблемы с интернетом",
+ "mm_edec": "файл повреждён??",
+ "mm_esupp": "браузер не понимает этот формат",
+ "mm_eunk": "неизвестная ошибка",
+ "mm_e404": "ошибка 404: файл не найден",
+ "mm_e403": "ошибка 403: доступ запрещён\n\nF5, возможно ты вышел?",
+ "mm_e500": "ошибка 500: проверь логи сервера",
+ "mm_e5xx": "ошибка сервера ",
+ "mm_nof": "больше нет аудиофайлов рядом",
+ "mm_prescan": "ищем следующий трек...",
+ "mm_scank": "найдена следующая:",
+ "mm_uncache": "кеш очищен; треки перезагрузятся",
+ "mm_hnf": "этого трека больше нет",
+
+ "im_hnf": "этой картинки больше нет",
+
+ "f_empty": 'папка пуста',
+ "f_chide": 'скроешь колонку «{0}»\n\nможно вернуть в настройках',
+ "f_bigtxt": "файл {0} MiB — открыть как текст?",
+ "f_bigtxt2": "показать конец файла? это включит режим слежения за новыми строками",
+ "fbd_more": '',
+ "fbd_all": '',
+ "f_anota": "выбрано {0} из {1};$Nдля выбора всей папки сначала прокрути вниз",
+
+ "f_dls": 'ссылки в папке стали скачиваемыми',
+
+ "f_partial": "Для безопасного скачивания файла, который сейчас загружается, кликни на файл с таким же именем, но без .PARTIAL
.\n\nОК/Enter — скачать .PARTIAL
(скорее всего битый файл)",
+
+ "ft_paste": "вставить {0} $NГор. клавиша: ctrl-V",
+ "fr_eperm": 'нельзя переименовать:$Nнет прав на перемещение',
+ "fd_eperm": 'нельзя удалить:$Nнет прав на удаление',
+ "fc_eperm": 'нельзя вырезать:$Nнет прав на перемещение',
+ "fp_eperm": 'нельзя вставить:$Nнет прав на запись',
+ "fr_emore": "выбери хотя бы один файл",
+ "fd_emore": "выбери хотя бы один файл",
+ "fc_emore": "выбери хотя бы один файл",
+ "fcp_emore": "выбери хотя бы один файл",
+
+ "fs_sc": "поделиться текущей папкой",
+ "fs_ss": "поделиться выбранным",
+ "fs_just1d": "нельзя выбрать несколько папок или смешивать файлы и папки",
+ "fs_abrt": "❌ отмена",
+ "fs_rand": "🎲 случайное имя",
+ "fs_go": "✅ создать",
+ "fs_name": "имя",
+ "fs_src": "источник",
+ "fs_pwd": "пароль",
+ "fs_exp": "срок",
+ "fs_tmin": "мин",
+ "fs_thrs": "часы",
+ "fs_tdays": "дни",
+ "fs_never": "вечно",
+ "fs_pname": "имя ссылки (если пусто — случайное)",
+ "fs_tsrc": "файл или папка для расшаривания",
+ "fs_ppwd": "пароль (не обязательно)",
+ "fs_w8": "создаём...",
+ "fs_ok": "Enter/ОК
= в буфер\nESC/Отмена
= закрыть",
+
+ "frt_dec": "может быть починит некоторые сломанные имена\">url-decode",
+ "frt_rst": "сбросить изменения имён файлов на прошлые\">↺ reset",
+ "frt_abrt": "отменить и закрыть окно\">❌ cancel",
+ "frb_apply": "ПРИМЕНИТЬ ПЕРЕИМЕНОВАНИЕ",
+ "fr_adv": "пакетное переименование / метаданные",
+ "fr_case": "регистрозависимый regex\">case",
+ "fr_win": "безопасные имена для Windows; заменит <>:"\\|?*
на полноценные японские символы\">win",
+ "fr_slash": "заменить /
на символ, который не создаёт новые папки\">no /",
+ "fr_re": "regex-шаблон для поиска; группы можно использовать в поле формата как (1)
, (2)
и т.д.",
+ "fr_fmt": "вдохновлено foobar2000:$N(title)
= название трека,$N[(artist) - ](title)
пропустит [это] если artist пуст$N$lpad((tn),2,0)
дополнит номер трека нулями до 2 цифр",
+ "fr_pdel": "удалить",
+ "fr_pnew": "сохранить как",
+ "fr_pname": "название для нового пресета",
+ "fr_aborted": "отменено",
+ "fr_lold": "старое имя",
+ "fr_lnew": "новое имя",
+ "fr_tags": "теги выбранных файлов (только для справки):",
+ "fr_busy": "переименовываем {0}...\n\n{1}",
+ "fr_efail": "ошибка:\n",
+ "fr_nchg": "{0} имён изменены из-за win
и/или no /
\n\nПродолжить с изменёнными именами?",
+
+ "fd_ok": "удалено",
+ "fd_err": "ошибка:\n",
+ "fd_none": "ничего не удалено; возможно запрещено на сервере",
+ "fd_busy": "удаляем {0}...\n\n{1}",
+ "fd_warn1": "УДАЛИТЬ {0}?",
+ "fd_warn2": "Последний шанс! Нельзя отменить. Удалить?",
+
+ "fc_ok": "вырезано {0}",
+ "fc_warn": 'вырезано {0}\n\nно: только эта вкладка может вставить$N(из-за огромного выбора)',
+
+ "fcc_ok": "скопировано {0} в буфер",
+ "fcc_warn": 'скопировано {0} в буфер\n\nно: только эта вкладка может вставить$N(из-за огромного выбора)',
+
+ "fp_apply": "использовать эти имена",
+ "fp_ecut": "сначала вырежи или скопируй файлы/папки\n\nможно вырезать/вставлять между вкладками",
+ "fp_ename": "{0} нельзя переместить: имена заняты. Введи новые имена или оставь пустым чтобы пропустить:",
+ "fcp_ename": "{0} нельзя скопировать: имена заняты. Введи новые имена или оставь пустым чтобы пропустить:",
+ "fp_emore": "есть ещё конфликты имён",
+ "fp_ok": "перемещено",
+ "fcp_ok": "скопировано",
+ "fp_busy": "перемещаем {0}...\n\n{1}",
+ "fcp_busy": "копируем {0}...\n\n{1}",
+ "fp_err": "ошибка:\n",
+ "fcp_err": "ошибка:\n",
+ "fp_confirm": "переместить {0} сюда?",
+ "fcp_confirm": "скопировать {0} сюда?",
+ "fp_etab": 'не удалось прочитать буфер из другой вкладки',
+ "fp_name": "загружаешь файл с устройства. Введи имя:",
+ "fp_both_m": 'Enter
= Переместить {0} из «{1}»\nESC
= Загрузить {2} с устройства',
+ "fcp_both_m": 'Enter
= Копировать {0} из «{1}»\nESC
= Загрузить {2} с устройства',
+ "fp_both_b": 'ПереместитьЗагрузить',
+ "fcp_both_b": 'КопироватьЗагрузить',
+
+ "mk_noname": "введи имя в поле слева :p",
+
+ "tv_load": "Загружаем текст:\n\n{0}\n\n{1}% ({2} из {3} MiB)",
+ "tv_xe1": "ошибка загрузки:\n\nошибка ",
+ "tv_xe2": "404, файл не найден",
+ "tv_lst": "текстовые файлы в",
+ "tvt_close": "вернуться к папке$NГор. клавиша: M (или Esc)\">❌ close",
+ "tvt_dl": "скачать$NГор. клавиша: Y\">💾 download",
+ "tvt_prev": "показать пред. файл$NГор. клавиша: I\">⬆ prev",
+ "tvt_next": "показать след. файл$NГор. клавиша: K\">⬇ next",
+ "tvt_sel": "выбрать файл (для перемещения / копирования / удаления)$NГор. клавиша: S\">sel",
+ "tvt_edit": "редактировать$NГор. клавиша: E\">✏️ edit",
+ "tvt_tail": "следить за изменениями файла; показывает новые строки в реальном времени\">📡 follow",
+ "tvt_wrap": "перенос строк\">↵",
+ "tvt_atail": "прикрепить скролл к низу страницы\">⚓",
+ "tvt_ctail": "раскрасить терминальные коды (ansi коды)\">🌈",
+ "tvt_ntail": "лимит истории (сколько текста хранить)",
+
+ "m3u_add1": "трек добавлен в m3u",
+ "m3u_addn": "{0} треков добавлено в m3u",
+ "m3u_clip": "m3u скопирован в буфер\n\nсоздай текстовый файл something.m3u и вставь туда плейлист",
+
+ "gt_vau": "не показывать видео, только аудио\">🎧",
+ "gt_msel": "включить выбор файлов; ctrl-клик для переопределения$N$Nпри активном: двойной клик открывает файл/папку$N$NГор. клавиша: S\">multiselect",
+ "gt_crop": "обрезать миниатюры по центру\">crop",
+ "gt_3x": "миниатюры высокого разрешения\">3x",
+ "gt_zoom": "зум",
+ "gt_chop": "обрезать",
+ "gt_sort": "сортировка по",
+ "gt_name": "имени",
+ "gt_sz": "размеру",
+ "gt_ts": "дате",
+ "gt_ext": "типу",
+ "gt_c1": "сильнее обрезать имена",
+ "gt_c2": "меньше обрезать имена",
+
+ "sm_w8": "ищем...",
+ "sm_prev": "результаты предыдущего поиска:\n ",
+ "sl_close": "закрыть результаты",
+ "sl_hits": "найдено {0}",
+ "sl_moar": "ещё",
+
+ "s_sz": "размер",
+ "s_dt": "дата",
+ "s_rd": "путь",
+ "s_fn": "имя",
+ "s_ta": "теги",
+ "s_ua": "загружено",
+ "s_ad": "доп.",
+ "s_s1": "мин. MiB",
+ "s_s2": "макс. MiB",
+ "s_d1": "мин. дата",
+ "s_d2": "макс. дата",
+ "s_u1": "загружено после",
+ "s_u2": "и/или до",
+ "s_r1": "путь содержит (через пробел)",
+ "s_f1": "имя содержит (исключить через -nope)",
+ "s_t1": "теги содержат (^=начало, $=конец)",
+ "s_a1": "специфичные свойства метаданных",
+
+ "md_eshow": "не удалось отобразить ",
+ "md_off": "[📜readme] выключен в [⚙️] — документ скрыт",
+
+ "badreply": "Ошибка разбора ответа сервера",
+
+ "xhr403": "403: Доступ запрещён\n\nF5, возможно ты вышел?",
+ "xhr0": "нет соединения (сервер не доступен?)",
+ "cf_ok": "защита от DD" + wah + "oS сработала\n\nпопробуй через 30 сек\n\nесли ничего — F5",
+ "tl_xe1": "ошибка списка подпапок:\n\nошибка ",
+ "tl_xe2": "404: Папка не найдена",
+ "fl_xe1": "ошибка списка файлов:\n\nошибка ",
+ "fl_xe2": "404: Папка не найдена",
+ "fd_xe1": "ошибка создания папки:\n\nошибка ",
+ "fd_xe2": "404: Родительская папка не найдена",
+ "fsm_xe1": "ошибка отправки сообщения:\n\nошибка ",
+ "fsm_xe2": "404: Папка не найдена??",
+ "fu_xe1": "ошибка загрузки списка загрузок:\n\nошибка ",
+ "fu_xe2": "404: Файл не найден??",
+
+ "fz_tar": "несжатый gnu-tar (linux/mac)",
+ "fz_pax": "несжатый pax-tar (медленнее)",
+ "fz_targz": "gnu-tar + gzip уровень 3$N$Nобычно очень медленно",
+ "fz_tarxz": "gnu-tar + xz уровень 1$N$Nобычно очень медленно",
+ "fz_zip8": "zip с utf8 (может глючить на Windows 7 и старше)",
+ "fz_zipd": "zip с cp437 (для древнего софта)",
+ "fz_zipc": "cp437 с ранним crc32,$Nдля MS-DOS PKZIP v2.04g (октябрь 1993)$N(дольше обрабатывает перед скачиванием)",
+
+ "un_m1": "можно удалить недавние загрузки (или отменить незавершённые)",
+ "un_upd": "обновить",
+ "un_m4": "или расшарить файлы ниже:",
+ "un_ulist": "список",
+ "un_ucopy": "копировать",
+ "un_flt": "фильтр: URL должен содержать",
+ "un_fclr": "сбросить фильтр",
+ "un_derr": 'ошибка удаления:\n',
+ "un_f5": 'что-то сломалось, F5',
+ "un_uf5": "нужно обновить страницу (F5 или CTRL-R) перед отменой",
+ "un_nou": 'внимание: сервер перегружен, попробуй "обновить" позже',
+ "un_noc": 'внимание: удаление загруженных файлов запрещено на сервере',
+ "un_max": "показано первых 2000 (используй фильтр)",
+ "un_avail": "{0} загрузок можно удалитьфайлы: {0} готово, {1} ошибок, {2} в процессе, {3} в очереди
", + "u_ever": "базовый загрузчик; up2k требует минимум$Nchrome 21 // firefox 13 // edge 12 // opera 12 // safari 5.1", + "u_su2k": 'это базовый загрузчик; up2k лучше', + "u_uput": 'оптимизировать для скорости (пропустить проверку)', + "u_ewrite": 'нет прав на запись в эту папку', + "u_eread": 'нет прав на чтение этой папки', + "u_enoi": 'поиск файлов выключен на сервере', + "u_enoow": "перезапись не работает: нужны права на удаление", + "u_badf": 'Пропущено {0} файлов (из {1}), возможно из-за прав:\n\n', + "u_blankf": '{0} файлов (из {1}) пустые — всё равно загрузить?\n\n', + "u_applef": '{0} файлов (из {1}) вероятно нежелательные;$NOK/Enter
= ПРОПУСТИТЬ:$NCancel/ESC
= ЗАГРУЗИТЬ их тоже:\n\n',
+ "u_just1": '\nМожет сработает если выбрать один файл',
+ "u_ff_many": "если у тебя Linux / MacOS / Android, то такое количество файлов может уронить Firefox!$Nесли упадёт — попробуй ещё раз (или Chrome).",
+ "u_up_life": "Эта загрузка удалится с сервера$N{0} после завершения",
+ "u_asku": 'загрузить {0} файлов в {1}
',
+ "u_unpt": "можно отменить / удалить через 🧯 сверху",
+ "u_bigtab": 'собрано {0} файлов$N$Nможет уронить браузер, точно?',
+ "u_scan": 'Сканируем файлы...',
+ "u_dirstuck": 'итератор застрял на {0} элементах; пропустим:',
+ "u_etadone": 'Готово ({0}, {1} файлов)',
+ "u_etaprep": '(подготовка)',
+ "u_hashdone": 'хеширование завершено',
+ "u_hashing": 'хеш',
+ "u_hs": 'рукопожатие...',
+ "u_started": "файлы загружаются; смотри [🚀]",
+ "u_dupdefer": "дубликат; обработается после остальных",
+ "u_actx": "кликни сюда чтобы не терять$Nпроизводительность при переключении вкладок",
+ "u_fixed": "OK! Исправлено 👍",
+ "u_cuerr": "ошибка загрузки чанка {0} из {1};$Nскорее всего не страшно, продолжаем$N$Nфайл: {2}",
+ "u_cuerr2": "сервер отклонил чанк {0} из {1};$Nпопробуем позже$N$Nфайл: {2}$N$Nошибка ",
+ "u_ehstmp": "попробуем ещё; смотри справа внизу",
+ "u_ehsfin": "сервер отклонил завершение загрузки; пробуем ещё...",
+ "u_ehssrch": "сервер отклонил поиск; пробуем ещё...",
+ "u_ehsinit": "сервер отклонил начало загрузки; пробуем ещё...",
+ "u_eneths": "сетевая ошибка при рукопожатии; пробуем ещё...",
+ "u_enethd": "сетевая ошибка при проверке цели; пробуем ещё...",
+ "u_cbusy": "ждём пока сервер снова доверяет нам после глюка...",
+ "u_ehsdf": "на сервере закончилось место!$N$Nбудем ждать, может кто-то освободит",
+ "u_emtleak1": "похоже у браузера утечка памяти;$Nпожалуйста",
+ "u_emtleak2": ' перейди на https (рекомендуется) или ',
+ "u_emtleak3": ' ',
+ "u_emtleakc": 'попробуй:$NF5
mt
в ⚙️ настройках
F5
🥔
(упрощённый интерфейс)connections-per-server
в about:config
",
+ "u_tu": 'ВНИМАНИЕ: турбо включён, клиент может не обнаружить и не возобновить незавершённые загрузки
', + "u_ts": 'ВНИМАНИЕ: турбо включён, результаты поиска могут быть некорректны
', + "u_turbo_c": "турбо выключен на сервере", + "u_turbo_g": "турбо выключен: нет прав на чтение списка файлов в этом томе", + "u_life_cfg": 'автоудаление через мин (или часов)', + "u_life_est": 'загрузка удалится ---', + "u_life_max": 'в этой папке макс. срок {0}', + "u_unp_ok": 'можно удалить через {0}', + "u_unp_ng": 'нельзя будет удалить', + "ue_ro": 'у тебя только чтение в этой папке\n\n', + "ue_nl": 'ты не вошёл', + "ue_la": 'вошёл как "{0}"', + "ue_sr": 'ты в режиме поиска файлов\n\nпереключись на загрузку через 🔎 (рядом с кнопкой SEARCH)\n\nпрости', + "ue_ta": "попробуй загрузить снова, теперь должно работать", + "ue_ab": "этот файл уже загружается в другую папку, и та загрузка должна завершиться прежде чем можно будет загрузить его сюда.\n\nМожно отменить первоначальную загрузку через 🧯 сверху", + "ur_1uo": "OK: Файл загружен", + "ur_auo": "OK: Все {0} файлов загружены", + "ur_1so": "OK: Файл найден на сервере", + "ur_aso": "OK: Все {0} файлов найдены", + "ur_1un": "Ошибка загрузки", + "ur_aun": "Все {0} загрузки провалились", + "ur_1sn": "Файл НЕ найден на сервере", + "ur_asn": "{0} файлов НЕ найдены на сервере", + "ur_um": "Готово;$N{0} загрузок OK,$N{1} ошибок", + "ur_sm": "Готово;$N{0} файлов найдено,$N{1} НЕ найдено", + + "lang_set": "обновить страницу для применения?" +}, }; -var LANGS = ["eng", "nor", "chi", "deu"]; +var LANGS = ["eng", "nor", "chi", "deu", "rus"]; if (window.langmod) langmod(); diff --git a/copyparty/web/splash.js b/copyparty/web/splash.js index c2e60eb6..dd310e9b 100644 --- a/copyparty/web/splash.js +++ b/copyparty/web/splash.js @@ -133,7 +133,50 @@ var Ls = { "ac1": "no304 aktivieren", "ad1": "Das Aktivieren von no304 deaktiviert jegliche Form von Caching; probier dies, wenn k304 nicht genug war. Dies verschwendet eine grosse Menge Netzwerk-Traffic!", "ae1": "Aktive Downloads:", - "af1": "Zeige neue Uploads", + "af1": "Zeige neue Uploads", + }, + + "rus": { + "a1": "обновить", + "b1": "привет (вы не вошли в систему)", + "c1": "выйти", + "d1": "состояние", + "d2": "показать состояние всех потоков", + "e1": "загрузить настройки", + "e2": "перечитывает конфигурационные файлы$N(аккаунты, тома, переключатели томов)$Nи сопоставляет все e2ds-тома$N$Nпримечание: изменения глобальных параметров$Nтребуют полного перезапуска для применения", + "f1": "вы можете просматривать:", + "g1": "вы можете загружать в:", + "cc1": "переключатели и прочее:", + "h1": "выключить k304", + "i1": "включить k304", + "j1": "k304 отключает соединение для каждого HTTP 304. Это помогает против некоторых промежуточных сервисов, которые могут зависнуть/внезапно перестать загружать страницы, но также значительно снижает производительность", + "k1": "сбросить настройки", + "l1": "войти:", + "m1": "добро пожаловать,", + "n1": "404: файл не найден ┐( ´ -`)┌", + "o1": 'или, возможно, у вас нет доступа? попробуйте ввести пароль или вернуться на главную', + "p1": "403: доступ запрещен ~┻━┻", + "q1": 'попробуйте ввести пароль или вернуться на главную', + "r1": "на главную", + ".s1": "сопоставить", + "t1": "действие", + "u2": "время с момента последней записи на сервер$N(загрузка/переименование/...)$N$N17d = 17 дней$N1h23 = 1 час 23 минуты$N4m56 = 4 минуты 56 секунд", + "v1": "подключиться", + "v2": "использовать этот сервер как локальный жесткий диск", + "w1": "переключиться на https", + "x1": "сменить пароль", + "y1": "ваши общие ресурсы", + "z1": "разблокировать область:", + "ta1": "сначала введите новый пароль", + "ta2": "повторите для подтверждения нового пароля:", + "ta3": "найдена опечатка; пожалуйста, попробуйте снова", + "aa1": "входящие:", + "ab1": "выключить no304", + "ac1": "включить no304", + "ad1": "no304 отключает использование кеша. Если k304 не помог, попробуйте это. Увеличивает потребление данных в разы!", + "ae1": "исходящие:", + "af1": "показать недавно загруженные файлы", + "ag1": "показать известных пользователей IdP" }, };