Update ru-ru locale (#4522) * Work on tl * eslint fix * Update data-i18n attribute for expand view button * Add data-i18n to button --------- Co-authored-by: Yokayo <nonameutubecomm@gmail.com> Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
Signed| @@ -5340,7 +5340,7 @@ | ||
| 5340 | 5340 | <i class="fa-solid fa-wand-magic"></i> |
| 5341 | 5341 | <span data-i18n="Auto-select">Auto-select</span> |
| 5342 | 5342 | </div> |
| 5343 | 5343 | <label for="add_bg_button" id="add_background_button_top" class="menu_button menu_button_icon interactable" data-i18n="[title]Add a new background" title="Add a new background"> |
| 5344 | 5344 | <i class="fa-solid fa-plus"></i> |
| 5345 | 5345 | <span data-i18n="Add Background">Add Background</span> |
| 5346 | 5346 | </label> |
| @@ -24,7 +24,7 @@ | ||
| 24 | 24 | "Mirostat_Tau_desc": "Целевая перплексия.", |
| 25 | 25 | "Mirostat_Eta_desc": "Скорость обучения Mirostat.", |
| 26 | 26 | "Temperature Last": "Температура последней", |
| 27 | 27 | "LLaMA / Mistral / Yi models only": "Только для моделей LLaMA / Mistral / Yi. Перед этим обязательно выберите подходящий токенизатор.\nПоследовательности, которых не должно быть на выходе.\nОдна на строку. Текст или [идентификаторы токенов].\nМногие токены имеют пробел впереди. Используйте счетчиксчётчик токенов, если не уверены, что правильно их определяете.", |
| 28 | 28 | "Example: some text [42, 69, 1337]": "Пример:\nкакой-то текст\n[42, 69, 1337]", |
| 29 | 29 | "Classifier Free Guidance. More helpful tip coming soon": "Classifier Free Guidance. Чуть позже опишем более подробно", |
| 30 | 30 | "Scale": "Scale", |
| @@ -91,7 +91,7 @@ | ||
| 91 | 91 | "Impersonation prompt": "Промпт для перевоплощения", |
| 92 | 92 | "Prompt that is used for Impersonation function": "Промпт, применяемый при генерации действий от лица пользователя", |
| 93 | 93 | "Logit Bias": "Смещение логитов", |
| 94 | 94 | "Helps to ban or reenforce the usage of certain words": "Запрещает или поощряет использование определенных слов.", |
| 95 | 95 | "View / Edit bias preset": "Просмотр / Редактирование пресета смещения", |
| 96 | 96 | "Add bias entry": "Добавить правило смещения", |
| 97 | 97 | "Connect": "Подключиться", |
| @@ -201,8 +201,8 @@ | ||
| 201 | 201 | "Bubbles": "Пузыри", |
| 202 | 202 | "No Blur Effect": "Отключить размытие", |
| 203 | 203 | "No Text Shadows": "Отключить тень текста", |
| 204 | 204 | "Waifu Mode": "Режим вайфувизуальной новеллы", |
| 205 | 205 | "Message Timer": "ТаймерДлительность генерации сообщений", |
| 206 | 206 | "Model Icon": "Значки моделей", |
| 207 | 207 | "Advanced Character Search": "Расширенный поиск по персонажам", |
| 208 | 208 | "Allow {{char}}: in bot messages": "Показывать {{char}}: в ответах", |
| @@ -211,12 +211,12 @@ | ||
| 211 | 211 | "Lorebook Import Dialog": "Показывать окно импорта лорбука", |
| 212 | 212 | "MUI Preset": "Пресет MUI:", |
| 213 | 213 | "If set in the advanced character definitions, this field will be displayed in the characters list.": "Если это поле задано в расширенных параметрах персонажа, оно будет отображаться в списке персонажей.", |
| 214 | 214 | "Relaxed API URLS": "Смягчённые\"Ленивые\" адреса API", |
| 215 | 215 | "Custom CSS": "Пользовательский CSS", |
| 216 | 216 | "Mancer Model": "Модель Mancer", |
| 217 | 217 | "API Type": "Тип API", |
| 218 | 218 | "Aphrodite API key": "Ключ от API Aphrodite", |
| 219 | 219 | "Relax message trim in Groups": "МягкаяСмягчить обрезкатребования сообщенийк сообщениям ИИ в группах", |
| 220 | 220 | "Characters Hotswap": "HotSwap (смена персонажей на лету)", |
| 221 | 221 | "Request token probabilities": "Запрашивать вероятность токена", |
| 222 | 222 | "Movable UI Panels": "Подвижные панели UI", |
| @@ -229,10 +229,10 @@ | ||
| 229 | 229 | "Text Shadow Width": "Размер теней текста", |
| 230 | 230 | "Swipes": "Свайпы", |
| 231 | 231 | "Miscellaneous": "Разное", |
| 232 | 232 | "Background Sound Only": "Только фоновыйфоновые звукзвуки", |
| 233 | 233 | "Auto-load Last Chat": "Автозагрузка последнего чата", |
| 234 | 234 | "Auto-save Message Edits": "Автоматически сохранять отредактированные сообщения", |
| 235 | 235 | "Auto-fix Markdown": "Автоисправление разметки Markdown", |
| 236 | 236 | "Auto-scroll Chat": "Автоматическая прокрутка чата", |
| 237 | 237 | "Send on Enter": "Отправка на Enter", |
| 238 | 238 | "Debug Menu": "Меню отладки", |
| @@ -329,7 +329,7 @@ | ||
| 329 | 329 | "Global Lore First": "Сначала глобальный лор", |
| 330 | 330 | "Recursive Scan": "Рекурсивное сканирование", |
| 331 | 331 | "Case Sensitive": "Учитывать регистр", |
| 332 | 332 | "Alert On Overflow": "Оповещение о переполнениипревышении бюджета", |
| 333 | 333 | "Use Probability": "Использовать вероятность", |
| 334 | 334 | "Exclude from recursion": "Исключить из рекурсии", |
| 335 | 335 | "Entry Title/Memo": "Название или заметка о записи", |
| @@ -354,7 +354,7 @@ | ||
| 354 | 354 | "Chat Background": "Фон чата", |
| 355 | 355 | "UI Background": "Фон UI", |
| 356 | 356 | "Mad Lab Mode": "Режим безумца", |
| 357 | 357 | "Show Message Token Count": "СчетчикПоказывать кол-во токенов сообщенияв сообщении", |
| 358 | 358 | "Compact Input Area (Mobile)": "Компактная зона ввода", |
| 359 | 359 | "Zen Sliders": "Дзен слайдеры", |
| 360 | 360 | "UI Border": "Границы UI", |
| @@ -363,7 +363,7 @@ | ||
| 363 | 363 | "Tags as Folders": "Теги как папки", |
| 364 | 364 | "Streaming FPS": "FPS для стриминга", |
| 365 | 365 | "Gestures": "Жесты", |
| 366 | 366 | "Message IDs": "IDНомера сообщений", |
| 367 | 367 | "Prefer Character Card Prompt": "Приоритет промпту из карточки персонажа", |
| 368 | 368 | "Prefer Character Card Jailbreak": "Приоритет джейлбрейку из карточки персонажа", |
| 369 | 369 | "Press Send to continue": "Кнопка отправки продолжает сообщение", |
| @@ -372,7 +372,7 @@ | ||
| 372 | 372 | "Never resize avatars": "Не менять размер аватарок", |
| 373 | 373 | "Show avatar filenames": "Показывать названия файлов аватарок", |
| 374 | 374 | "Import Card Tags": "Импортировать теги карточки", |
| 375 | 375 | "Confirm message deletion": "ПодтверждениеСпрашивать удаленияпри удалении сообщений", |
| 376 | 376 | "Spoiler Free Mode": "Режим без спойлеров", |
| 377 | 377 | "Auto-swipe": "Автоматические свайпы", |
| 378 | 378 | "Minimum generated message length": "Минимальная длина сгенерированных сообщений", |
| @@ -392,11 +392,11 @@ | ||
| 392 | 392 | "Always show the full list of the Message Actions context items for chat messages, instead of hiding them behind '...'": "Всегда показывать полный список действий с сообщением, а не прятать их за '...'.", |
| 393 | 393 | "Alternative UI for numeric sampling parameters with fewer steps": "Уменьшить кол-во шагов для параметров, регулируемых слайдерами.", |
| 394 | 394 | "Entirely unrestrict all numeric sampling parameters": "Снять ограничения со всех числовых сэмплеров.", |
| 395 | 395 | "Time the AI's message generation, and show the duration in the chat log": "ВремяЗасекать генерациивремя, сообщенийза ИИкоторое было сгенерировано сообщение, и егоотображать показэту винформацию журналев чатачате.", |
| 396 | 396 | "Show a timestamp for each message in the chat log": "Показывать временную метку для каждого сообщения в журнале чата.", |
| 397 | 397 | "Show an icon for the API that generated the message": "ПоказатьПоказывать значок API, сгенерировавшего сообщение.", |
| 398 | 398 | "Show sequential message numbers in the chat log": "Показывать порядковые номера сообщений в журнале чатачате.", |
| 399 | 399 | "Show the number of tokens in each message in the chat log": "ПоказатьПоказывать количество токенов в каждом сообщении в журнале чатачате.", |
| 400 | 400 | "Single-row message input area. Mobile only, no effect on PC": "Однорядная область ввода сообщений. Только для мобильных устройств, на ПК не работает.", |
| 401 | 401 | "In the Character Management panel, show quick selection buttons for favorited characters": "На панели управления персонажами будут отображены кнопки быстрого выбора для избранных персонажей.", |
| 402 | 402 | "Show tagged character folders in the character list": "Отобразить теговые папки с персонажами в списке персонажей.", |
| @@ -404,7 +404,7 @@ | ||
| 404 | 404 | "Only play a sound when ST's browser tab is unfocused": "Воспроизводить звук только тогда, когда вкладка браузера ST не выбрана.", |
| 405 | 405 | "Reduce the formatting requirements on API URLs": "Снижение требований к форматированию URL-адресов API.", |
| 406 | 406 | "Ask to import the World Info/Lorebook for every new character with embedded lorebook. If unchecked, a brief message will be shown instead": "Спрашивать разрешение на импорт лорбука для всех персонажей со встроенным лорбуком. При выключенной опции вместо этого будет показываться короткое сообщение", |
| 407 | 407 | "Restore unsaved user input on page refresh": "Восстановление несохраненного пользовательского запросасообщения при обновлении страницы.", |
| 408 | 408 | "Allow repositioning certain UI elements by dragging them. PC only, no effect on mobile": "Позволяет перемещать некоторые элементы интерфейса путем их перетаскивания. Только для ПК, на телефонах не работает.", |
| 409 | 409 | "MovingUI preset. Predefined/saved draggable positions": "Пресет для MovingUI. Предопределенные/сохраненные позиции для перетаскивания.", |
| 410 | 410 | "Save movingUI changes to a new file": "Сохранение изменений MovingUI в новый файл.", |
| @@ -419,7 +419,7 @@ | ||
| 419 | 419 | "Show arrow buttons on the last in-chat message to generate alternative AI responses. Both PC and mobile": "Показывать кнопки со стрелками на последнем сообщении в чате, чтобы генерировать альтернативные ответы ИИ. Как для ПК, так и для мобильных устройств.", |
| 420 | 420 | "Allow using swiping gestures on the last in-chat message to trigger swipe generation. Mobile only, no effect on PC": "Позволяет использовать жесты смахивания на последнем сообщении в чате, чтобы вызвать альтернативную генерацию. Только для мобильных устройств, на ПК не работает.", |
| 421 | 421 | "Save edits to messages without confirmation as you type": "Сохранять правки в сообщениях без подтверждения по мере ввода текста.", |
| 422 | 422 | "Skip encoding and characters in message text, allowing a subset of HTML markup as well as Markdown": "Не кодировать символы < и > в тексте сообщения, что позволяет использовать подмножествочасть возможностей HTML-разметки, а также разметку Markdown.", |
| 423 | 423 | "Allow AI messages in groups to contain lines spoken by other group members": "Разрешить ИИ в группах генерировать строчки за других участников группы в своих сообщениях.", |
| 424 | 424 | "Requests logprobs from the API for the Token Probabilities feature": "Запросить логпробы из API для функции Token Probabilities.", |
| 425 | 425 | "Automatically reject and re-generate AI message based on configurable criteria": "Автоматическое отклонение и повторная генерация сообщений AI на основе настраиваемых критериев.", |
| @@ -549,7 +549,7 @@ | ||
| 549 | 549 | "Character Management": "Управление персонажами", |
| 550 | 550 | "Locked = Character Management panel will stay open": "Закреплено = Панель управление персонажами останется открытой", |
| 551 | 551 | "Select/Create Characters": "Выбрать/Создать персонажа", |
| 552 | 552 | "Token counts may be inaccurate and provided just for reference.": "СчетчикСчётчик токенов может быть неточным, используйте как ориентир", |
| 553 | 553 | "Click to select a new avatar for this character": "Нажмите чтобы выбрать новый аватар для этого персонажа", |
| 554 | 554 | "Example: [{{user}} is a 28-year-old Romanian cat girl.]": "Пример:\n [{{user}} is a 28-year-old Romanian cat girl.]", |
| 555 | 555 | "Toggle grid view": "Сменить вид сетки", |
| @@ -1024,10 +1024,10 @@ | ||
| 1024 | 1024 | "image_inlining_hint_2": ". Также это можно сделать через меню", |
| 1025 | 1025 | "image_inlining_hint_3": ".", |
| 1026 | 1026 | "Contest Winners": "Победители конкурса", |
| 1027 | 1027 | "Rename backgroundBackground": "Переименовать фон", |
| 1028 | 1028 | "Lock": "Закрепить", |
| 1029 | 1029 | "Unlock": "Открепить", |
| 1030 | 1030 | "Delete backgroundBackground": "Удалить фон", |
| 1031 | 1031 | "Export all": "Экспортировать всё", |
| 1032 | 1032 | "Export all your prompts to a file": "Экспортировать все промпты в виде файла", |
| 1033 | 1033 | "Don't add character names.": "Не добавлять имя персонажа", |
| @@ -1621,7 +1621,7 @@ | ||
| 1621 | 1621 | "Auxiliary": "Вспомогательный", |
| 1622 | 1622 | "Post-History Instructions": "Инструкции после истории", |
| 1623 | 1623 | "Current persona updated": "Текущая персона изменена", |
| 1624 | 1624 | "Your messages will now be sent as ${0}": "Ваши сообщенияТеперь будутвы отправлятьсябудете отподписываться лицакак ${0}", |
| 1625 | 1625 | "Copied!": "Скопировано!", |
| 1626 | 1626 | "Are you sure you want to delete this message?": "Вы точно хотите удалить это сообщение?", |
| 1627 | 1627 | "Delete Message": "Удалить сообщение", |
| @@ -1977,7 +1977,7 @@ | ||
| 1977 | 1977 | "Importing Tags": "Импорт тегов", |
| 1978 | 1978 | "Couldn't import tags:": "Не удалось импортировать теги:", |
| 1979 | 1979 | "Allow fallback models": "Разрешить резервные модели", |
| 1980 | 1980 | "Allow fallback providers": "Разрешить fallback-резервных провайдеров", |
| 1981 | 1981 | "To use instruct formatting, switch to OpenRouter under Text Completion API.": "Переключитесь на OpenRouter в Text Completion API, чтобы использовать форматирование Instruct-режима.", |
| 1982 | 1982 | "Select providers. No selection = all providers.": "Выберите провайдера. Нет выбранного = выбраны все.", |
| 1983 | 1983 | "Model Providers": "Провайдеры моделей", |
| @@ -2406,7 +2406,7 @@ | ||
| 2406 | 2406 | "${0} is a system assistant. Choose another character.": "Персонаж ${0} выбран в качестве системного помощника. Выберите другого.", |
| 2407 | 2407 | "Set ${0} as your assistant.": "Персонаж ${0} установлен в качестве помощника.", |
| 2408 | 2408 | "${0} is no longer your assistant.": "Персонаж ${0} снят с роли помощника.", |
| 2409 | 2409 | "Manage API keys": "УправлениеМенеджер ключамиключей", |
| 2410 | 2410 | "Key:": "Ключ:", |
| 2411 | 2411 | "No secrets saved.": "Ключей нет.", |
| 2412 | 2412 | "Add Secret": "Добавить ключ", |
| @@ -2433,7 +2433,7 @@ | ||
| 2433 | 2433 | "prompt_post_processing_semi_tools": "Semi-strict (чередовать роли, функции включены)", |
| 2434 | 2434 | "prompt_post_processing_strict_tools": "Strict (чередовать роли, сначала пользователь; функции включены)", |
| 2435 | 2435 | "prompt_post_processing_single": "Только одно сообщение пользователя (функции отключены)", |
| 2436 | 2436 | "prompt_post_processing_merge_tools": "Объединять идущие подряд сообщениесообщения с одной ролью (функции включены)", |
| 2437 | 2437 | "completions note prefix": "Постфикс ", |
| 2438 | 2438 | "suffix will be added automatically.": "будет добавлен автоматически.", |
| 2439 | 2439 | "Tabby Model": "Модель Tabby", |
| @@ -2548,7 +2548,7 @@ | ||
| 2548 | 2548 | "Default (top of context)": "По умолчанию (наверху контекста)", |
| 2549 | 2549 | "Bind Model to Templates": "Связать модель с шаблоном", |
| 2550 | 2550 | "Persona Auto Selected": "Персона автоматически изменена", |
| 2551 | 2551 | "Auto-selected persona based on ${0} connection.<br />Your messages will now be sent as ${1}.": "Персона выбрана автоматически на основе следующего критерия: ${0}<br />Ваши сообщенияТеперь будутвы отправлятьсябудете отподписываться лицакак ${1}", |
| 2552 | 2552 | "Filter to specific generation types.": "Применять промпт только при определённых типах генерации.", |
| 2553 | 2553 | "Quiet": "Тихая", |
| 2554 | 2554 | "Swipe": "Свайп", |
| @@ -2601,7 +2601,7 @@ | ||
| 2601 | 2601 | "sd_snap_txt": "Корректировать автоматически выбранное разрешение", |
| 2602 | 2602 | "sd_snap": "Подгонять картинки с фиксированным соотношением сторон (фоны, портреты) к ближайшему известному разрешению (рекомендуется для SDXL)", |
| 2603 | 2603 | "Source": "API", |
| 2604 | 2604 | "Hint: Save an API key in AI Horde API settings to use it here.": "ПодсказкаСовет: сохраните ключ от API в настройках API на сайте AI Horde, чтобы использоватьавтоматически подтянуть его автоматическисюда.", |
| 2605 | 2605 | "Sanitize prompts (recommended)": "Прогонять промпты через санитайзер (рекомендуется)", |
| 2606 | 2606 | "Sampling method": "Метод сэмплинга", |
| 2607 | 2607 | "Resolution": "Целевое разрешение", |
| @@ -2652,5 +2652,97 @@ | ||
| 2652 | 2652 | "sd_auto_auth_warning_1": " запускайте Stable Diffusion с флагом", |
| 2653 | 2653 | "sd_auto_auth_warning_2": "! Адрес SD должен быть доступен с сервера SillyTavern.", |
| 2654 | 2654 | "Upscale by": "Множитель апскейлинга", |
| 2655 | 2655 | "Hires steps (2nd pass)": "Кол-во шагов Hires (на втором проходе)", |
| 2656 | + "Disallow embedded media from other domains in chat messages": "Запретить медиафайлы со сторонних доменов в сообщениях чата.", | |
| 2657 | + "Add Background": "Добавить фон", | |
| 2658 | + "Add a new background": "Добавить новый фон", | |
| 2659 | + "Backgrounds": "Фоны", | |
| 2660 | + "ext_regex_debugger_desc": "Дополнительные инструменты отладки", | |
| 2661 | + "ext_regex_debugger": "Отладка", | |
| 2662 | + "ext_regex_presets": "Пресеты", | |
| 2663 | + "ext_regex_presets_desc": "Переключайтесь между разными группами активных рег. выражений.", | |
| 2664 | + "ext_regex_preset_create": "Создать новый пресет", | |
| 2665 | + "ext_regex_preset_update": "Обновить текущий пресет", | |
| 2666 | + "ext_regex_preset_apply": "Перезагрузить текущий пресет", | |
| 2667 | + "ext_regex_preset_delete": "Удалить текущий пресет", | |
| 2668 | + "[No presets saved]": "[Пресет не выбран]", | |
| 2669 | + "Enter a name for the new regex preset:": "Введите имя нового пресета:", | |
| 2670 | + "ext_regex_debugger_active_rules": "Активные скрипты", | |
| 2671 | + "No regex rules found.": "Скриптов не найдено.", | |
| 2672 | + "ext_regex_debugger_testing_area": "Зона тестирования", | |
| 2673 | + "ext_regex_debugger_run_test": "Протестировать", | |
| 2674 | + "ext_regex_debugger_display_replace": "Заменить", | |
| 2675 | + "ext_regex_debugger_display_highlight": "Посдветить", | |
| 2676 | + "ext_regex_debugger_render_text": "Отображать как текст", | |
| 2677 | + "ext_regex_debugger_render_message": "Отображать как сообщение", | |
| 2678 | + "ext_regex_debugger_save_order": "Сохранить порядок", | |
| 2679 | + "ext_regex_debugger_save_order_help": "Сохранить текущий порядок скриптов", | |
| 2680 | + "Regex script order saved!": "Порядок сохранён!", | |
| 2681 | + "ext_regex_debugger_raw_input": "Исходный текст", | |
| 2682 | + "ext_regex_debugger_step_by_step": "Пошаговая трансформация", | |
| 2683 | + "ext_regex_debugger_final_output": "Итоговый результат", | |
| 2684 | + "Expand view": "Развернуть", | |
| 2685 | + "Global Rules": "Глобальные скрипты", | |
| 2686 | + "Scoped Rules": "Локальные скрипты", | |
| 2687 | + "Edit Rule": "Редактировать скрипт", | |
| 2688 | + "Global": "Глобальный", | |
| 2689 | + "Scoped": "Локальный", | |
| 2690 | + "Captured:": "Зафиксировано:", | |
| 2691 | + "Added:": "Добавлено:", | |
| 2692 | + "Removed:": "Удалено:", | |
| 2693 | + "Total Captured:": "Всего зафиксировано:", | |
| 2694 | + "Total Added:": "Всего добавлено:", | |
| 2695 | + "Total Removed:": "Всего удалено:", | |
| 2696 | + "ext_regex_debugger_run_test_help": "Прогнать текст через данный набор скриптов", | |
| 2697 | + "After:": "После:", | |
| 2698 | + "Are you sure you want to delete this regex preset?": "Точно хотите удалить этот пресет?", | |
| 2699 | + "Regex preset updated": "Пресет обновлён", | |
| 2700 | + "Regex preset saved": "Пресет сохранён", | |
| 2701 | + "Regex preset deleted": "Пресет удалён", | |
| 2702 | + "Enhance": "Улучшить", | |
| 2703 | + "Enables prompt enhancing (passes prompts through an LLM to add detail).": "Включить улучшение промпта (дополнительно прогоняет промпт через LLM, чтобы добавить больше деталей)", | |
| 2704 | + "Use ADetailer (Face)": "Использовать ADetailer (для лиц)", | |
| 2705 | + "You can find your API key in the Stability AI dashboard.": "Ключ от API можно найти на дашборде на сайте Stability AI", | |
| 2706 | + "sd_stability_style_preset": "Стиль", | |
| 2707 | + "Avoid spending Anlas": "Стараться не тратить Anlas", | |
| 2708 | + "Automatically adjust generation parameters to ensure free image generations.": "Автоматически подгонять параметры таким образом, чтобы генерация получалась бесплатной.", | |
| 2709 | + "View my Anlas": "Узнать баланс Anlas", | |
| 2710 | + "Hint: Save an API key in the NovelAI API settings to use it here.": "Совет: сохраните API-ключ в настройках API NovelAI, чтобы автоматически подтянуть его сюда.", | |
| 2711 | + "Hint: Save an API key in the Hugging Face (Text Completion) API settings to use it here.": "Совет: сохраните API-ключ в настройках API HuggingFace (раздел Text Completion), чтобы автоматически подтянуть его сюда.", | |
| 2712 | + "Model ID": "Идентификатор модели", | |
| 2713 | + "<Enter Model ID above>": "<Введите идентификатор в поле выше>", | |
| 2714 | + "Hint: Save an API key in the NanoGPT (Chat Completion) API settings to use it here.": "Совет: сохраните API-ключ в настройках API NanoGPT (раздел Chat Completion), чтобы автоматически подтянуть его сюда.", | |
| 2715 | + "Hint: Save an API key in the Electron Hub (Chat Completion) API settings to use it here.": "Совет: сохраните API-ключ в настройках API Electron Hub (раздел Chat Completion), чтобы автоматически подтянуть его сюда.", | |
| 2716 | + "sd_drawthings_auth_txt": " запускайте DrawThings только со включенным в UI флажком HTTP API! Сервер должен быть доступен с хоста, на котором запущена SillyTavern.", | |
| 2717 | + "Send me a picture of:": "Пришли мне...", | |
| 2718 | + "sd_Yourself": "Свою фотографию", | |
| 2719 | + "sd_Your_Face": "Своё лицо", | |
| 2720 | + "sd_Me": "Мою фотографию", | |
| 2721 | + "sd_The_Whole_Story": "Изображение всей истории", | |
| 2722 | + "sd_The_Last_Message": "Изображение посл. сообщения", | |
| 2723 | + "sd_Raw_Last_Message": "Изображение посл. сообщения до обработки", | |
| 2724 | + "sd_Background": "Фотографию фона", | |
| 2725 | + "ext_regex_title": "Регулярные выражения", | |
| 2726 | + "ext_sum_title": "Саммари (пересказ)", | |
| 2727 | + "Image Generation": "Генерация изображений", | |
| 2728 | + "ext_translate_title": "Перевод чата", | |
| 2729 | + "Select TTS Provider": "Выберите TTS-движок", | |
| 2730 | + "tts_enabled": "Включить", | |
| 2731 | + "Narrate user messages": "Озвучивать сообщения пользователя", | |
| 2732 | + "Auto Generation": "Автоматическая генерация", | |
| 2733 | + "Narrate by paragraphs (when streaming)": "Озвучивать по параграфу за раз (при вкл. стриминге)", | |
| 2734 | + "Narrate by paragraphs (when not streaming)": "Озвучивать по параграфу за раз (при выкл. стриминге)", | |
| 2735 | + "Only narrate quotes": "Озвучивать только текст \"в кавычках\"", | |
| 2736 | + "Ignore text, even quotes, inside asterisk": "Не озвучивать *текст, даже \"в кавычках\", если он внутри звёздочек*", | |
| 2737 | + "Narrate only the translated text": "Озвучивать только переведённый текст", | |
| 2738 | + "Skip codeblocks": "Пропускать блоки кода", | |
| 2739 | + "Skip tagged blocks": "Пропускать блоки с <тегами>", | |
| 2740 | + "Pass Asterisks to TTS Engine": "Передавать звёздочки TTS-движку", | |
| 2741 | + "Different voices for quotes and text inside asterisks": "Разные голоса для \"кавычек\", *звёздочек* и остального текста.", | |
| 2742 | + "Requires auto generation to be enabled.": "Работает только при включенной функции \"Автоматическая генерация\"", | |
| 2743 | + "tts_refresh": "Обновить", | |
| 2744 | + "Uses the voices provided by your operating system": "Используем стандартные голоса вашей ОС", | |
| 2745 | + "Your browser or operating system doesn't support speech synthesis": "Ваш браузер либо ОС не поддерживают синтез речи", | |
| 2746 | + "Works best when: Pass Asterisks to TTS Engine is enabled, and both Only narrate quotes and Ignore *text, even 'quotes', inside asterisks* are disabled.": "Работает лучше всего, когда: одновременно включена опция \"Передавать звёздочки TTS-движку\", а также отключены обе опции: \"Не озвучивать *текст, даже \"в кавычках\", если он внутри звёздочек*\", и \"Озвучивать только текст \"в кавычках\"\"", | |
| 2747 | + "Available voices": "Доступные голоса" | |
| 2656 | 2748 | } |
| @@ -11,6 +11,7 @@ | ||
| 11 | 11 | <button |
| 12 | 12 | id="regex_debugger_save_order" |
| 13 | 13 | class="menu_button menu_button_icon interactable" |
| 14 | + data-i18n="[title]ext_regex_debugger_save_order_help" | |
| 14 | 15 | title="Save current rule order" |
| 15 | 16 | tabindex="0" |
| 16 | 17 | > |
| @@ -53,6 +54,7 @@ | ||
| 53 | 54 | <button |
| 54 | 55 | id="regex_debugger_run_test" |
| 55 | 56 | class="menu_button menu_button_icon interactable" |
| 57 | + data-i18n="[title]ext_regex_debugger_run_test_help" | |
| 56 | 58 | title="Run the test pipeline" |
| 57 | 59 | tabindex="0" |
| 58 | 60 | > |
| @@ -115,6 +117,7 @@ | ||
| 115 | 117 | <div |
| 116 | 118 | id="regex_debugger_expand_steps" |
| 117 | 119 | class="menu_button menu_button_icon" |
| 120 | + data-i18n="[title]Expand view" | |
| 118 | 121 | title="Expand view" |
| 119 | 122 | > |
| 120 | 123 | <i class="fa-solid fa-expand"></i> |
| @@ -132,6 +135,7 @@ | ||
| 132 | 135 | <div |
| 133 | 136 | id="regex_debugger_expand_final" |
| 134 | 137 | class="menu_button menu_button_icon" |
| 138 | + data-i18n="[title]Expand view" | |
| 135 | 139 | title="Expand view" |
| 136 | 140 | > |
| 137 | 141 | <i class="fa-solid fa-expand"></i> |
| @@ -158,7 +162,7 @@ | ||
| 158 | 162 | <code class="rule-regex"></code> |
| 159 | 163 | <small class="rule-scope"></small> |
| 160 | 164 | </div> |
| 161 | 165 | <div class="menu_button menu_button_icon edit_rule" data-i18n="[title]Edit Rule" title="Edit Rule"> |
| 162 | 166 | <i class="fa-solid fa-pencil"></i> |
| 163 | 167 | </div> |
| 164 | 168 | </li> |
| @@ -969,7 +969,7 @@ function populateDebuggerRuleList(container) { | ||
| 969 | 969 | |
| 970 | 970 | const allScripts = getRegexScripts(); |
| 971 | 971 | if (!allScripts || allScripts.length === 0) { |
| 972 | 972 | rulesContainer.append('<div class="regex-debugger-no-rules">' + t`No regex rules found.` + '</div>'); |
| 973 | 973 | return; |
| 974 | 974 | } |
| 975 | 975 | |
| @@ -1002,7 +1002,7 @@ function populateDebuggerRuleList(container) { | ||
| 1002 | 1002 | ruleElement.find('.rule-name').text(script.scriptName); |
| 1003 | 1003 | ruleElement.find('.rule-regex').text(script.findRegex); |
| 1004 | 1004 | // @ts-ignore |
| 1005 | 1005 | ruleElement.find('.rule-scope').text(script.isScoped ? 't`Scoped'` : 't`Global'`); |
| 1006 | 1006 | ruleElement.find('.rule-enabled').prop('checked', !script.disabled); |
| 1007 | 1007 | // @ts-ignore |
| 1008 | 1008 | ruleElement.find('.edit_rule').on('click', () => onRegexEditorOpenClick(script.id, script.isScoped)); |
| @@ -1035,14 +1035,14 @@ function populateDebuggerRuleList(container) { | ||
| 1035 | 1035 | }; |
| 1036 | 1036 | |
| 1037 | 1037 | if (globalScripts.length > 0) { |
| 1038 | 1038 | rulesContainer.append('<div class="list-header regex-debugger-list-header">' + t`Global Rules` + '</div>'); |
| 1039 | 1039 | const globalList = $('<ul id="regex_debugger_rules_global" class="sortable-list"></ul>'); |
| 1040 | 1040 | globalScripts.forEach(script => globalList.append(renderRule(script))); |
| 1041 | 1041 | rulesContainer.append(globalList); |
| 1042 | 1042 | } |
| 1043 | 1043 | |
| 1044 | 1044 | if (scopedScripts.length > 0) { |
| 1045 | 1045 | rulesContainer.append('<div class="list-header regex-debugger-list-header">' + t`Scoped Rules` + '</div>'); |
| 1046 | 1046 | const scopedList = $('<ul id="regex_debugger_rules_scoped" class="sortable-list"></ul>'); |
| 1047 | 1047 | scopedScripts.forEach(script => scopedList.append(renderRule(script))); |
| 1048 | 1048 | rulesContainer.append(scopedList); |
| @@ -1106,9 +1106,9 @@ async function onRegexDebuggerOpenClick() { | ||
| 1106 | 1106 | // Set the ID on the TOP-LEVEL element that is being appended. |
| 1107 | 1107 | stepElement.find('>:first-child').attr('id', `step-result-${script.id}`); |
| 1108 | 1108 | const stepHeader = stepElement.find('.step-header'); |
| 1109 | 1109 | stepHeader.find('strong').text(t`After:` + ` ${script.scriptName}`); |
| 1110 | 1110 | |
| 1111 | 1111 | const metricsHtml = `'<span class="step-metrics">' + t`Captured:` + ` ${result.charsCaptured}, ` + t`Added:` + ` +${result.charsAdded}, ` + t`Removed:` + ` -${result.charsRemoved}</span>`; |
| 1112 | 1112 | stepHeader.append(metricsHtml); |
| 1113 | 1113 | |
| 1114 | 1114 | if (displayMode === 'highlight') { |
| @@ -1128,7 +1128,7 @@ async function onRegexDebuggerOpenClick() { | ||
| 1128 | 1128 | |
| 1129 | 1129 | const summaryHtml = ` |
| 1130 | 1130 | <div id="regex_debugger_final_summary" class="regex-debugger-summary"> |
| 1131 | 1131 | <strong>` + t`Total Captured:` + `</strong> ${totalCharsCaptured} | <strong>` + t`Total Added:` + `</strong> +${totalCharsAdded} | <strong>` + t`Total Removed:` + `</strong> -${totalCharsRemoved} |
| 1132 | 1132 | </div> |
| 1133 | 1133 | `; |
| 1134 | 1134 | finalOutput.before(summaryHtml); |
| @@ -1,6 +1,6 @@ | ||
| 1 | 1 | <div id="sd_dropdown"> |
| 2 | 2 | <ul class="list-group"> |
| 3 | 3 | <span data-i18n="Send me a picture of:">Send me a picture of:</span> |
| 4 | 4 | <li class="list-group-item" id="sd_you" data-value="you" data-i18n="sd_Yourself">Yourself</li> |
| 5 | 5 | <li class="list-group-item" id="sd_face" data-value="face" data-i18n="sd_Your_Face">Your Face</li> |
| 6 | 6 | <li class="list-group-item" id="sd_me" data-value="me" data-i18n="sd_Me">Me</li> |
| @@ -1705,7 +1705,7 @@ async function loadModels() { | ||
| 1705 | 1705 | models = await loadStabilityModels(); |
| 1706 | 1706 | break; |
| 1707 | 1707 | case sources.huggingface: |
| 1708 | 1708 | models = [{ value: '', text: 't`<Enter Model ID above>'` }]; |
| 1709 | 1709 | break; |
| 1710 | 1710 | case sources.electronhub: |
| 1711 | 1711 | models = await loadElectronHubModels(); |
| @@ -90,15 +90,15 @@ | ||
| 90 | 90 | <i><b data-i18n="Important:">Important:</b></i><i data-i18n="sd_drawthings_auth_txt"> run DrawThings app with HTTP API switch enabled in the UI! The server must be accessible from the SillyTavern host machine.</i> |
| 91 | 91 | </div> |
| 92 | 92 | <div data-sd-source="huggingface"> |
| 93 | 93 | <i data-i18n="Hint: Save an API key in the Hugging Face (Text Completion) API settings to use it here.">Hint: Save an API key in the Hugging Face (Text Completion) API settings to use it here.</i> |
| 94 | 94 | <label for="sd_huggingface_model_id" data-i18n="Model ID">Model ID</label> |
| 95 | 95 | <input id="sd_huggingface_model_id" type="text" class="text_pole" data-i18n="[placeholder]e.g. black-forest-labs/FLUX.1-dev" placeholder="e.g. black-forest-labs/FLUX.1-dev" value="" /> |
| 96 | 96 | </div> |
| 97 | 97 | <div data-sd-source="electronhub"> |
| 98 | 98 | <i data-i18n="Hint: Save an API key in the Electron Hub (Chat Completion) API settings to use it here.">Hint: Save an API key in the Electron Hub (Chat Completion) API settings to use it here.</i> |
| 99 | 99 | </div> |
| 100 | 100 | <div data-sd-source="nanogpt"> |
| 101 | 101 | <i data-i18n="Hint: Save an API key in the NanoGPT (Chat Completion) API settings to use it here.">Hint: Save an API key in the NanoGPT (Chat Completion) API settings to use it here.</i> |
| 102 | 102 | </div> |
| 103 | 103 | <div data-sd-source="vlad"> |
| 104 | 104 | <label for="sd_vlad_url">SD.Next API URL</label> |
| @@ -143,7 +143,7 @@ | ||
| 143 | 143 | View my Anlas |
| 144 | 144 | </div> |
| 145 | 145 | </div> |
| 146 | 146 | <i data-i18n="Hint: Save an API key in the NovelAI API settings to use it here.">Hint: Save an API key in the NovelAI API settings to use it here.</i> |
| 147 | 147 | </div> |
| 148 | 148 | <div data-sd-source="aimlapi"> |
| 149 | 149 | <div class="flex-container flexnowrap alignItemsBaseline marginBot5"> |
| @@ -204,7 +204,7 @@ | ||
| 204 | 204 | <a href="https://pollinations.ai">Pollinations.ai</a> |
| 205 | 205 | </p> |
| 206 | 206 | <div class="flex-container"> |
| 207 | 207 | <label class="flex1 checkbox_label" for="sd_pollinations_enhance" data-i18n="[title]Enables prompt enhancing (passes prompts through an LLM to add detail)." title="Enables prompt enhancing (passes prompts through an LLM to add detail)."> |
| 208 | 208 | <input id="sd_pollinations_enhance" type="checkbox" /> |
| 209 | 209 | <span data-i18n="Enhance"> |
| 210 | 210 | Enhance |
| @@ -297,7 +297,7 @@ | ||
| 297 | 297 | </div> |
| 298 | 298 | </div> |
| 299 | 299 | <div class="flex-container"> |
| 300 | 300 | <label class="flex1 checkbox_label" for="sd_google_enhance" data-i18n="[title]Enables prompt enhancing (passes prompts through an LLM to add detail)." title="Enables prompt enhancing (passes prompts through an LLM to add detail)."> |
| 301 | 301 | <input id="sd_google_enhance" type="checkbox" /> |
| 302 | 302 | <span data-i18n="Enhance"> |
| 303 | 303 | Enhance |
| @@ -12,7 +12,7 @@ | ||
| 12 | 12 | <div class="tts_block"> |
| 13 | 13 | <select id="tts_provider" class="flex1"> |
| 14 | 14 | </select> |
| 15 | 15 | <input id="tts_refresh" data-i18n="[value]tts_refresh" class="menu_button" type="submit" value="Reload" /> |
| 16 | 16 | </div> |
| 17 | 17 | <div> |
| 18 | 18 | <label class="checkbox_label" for="tts_enabled"> |
| @@ -88,7 +88,7 @@ | ||
| 88 | 88 | <form id="tts_provider_settings"> |
| 89 | 89 | </form> |
| 90 | 90 | <div class="tts_buttons"> |
| 91 | 91 | <input id="tts_voices" class="menu_button" data-i18n="[value]Available voices" type="submit" value="Available voices" /> |
| 92 | 92 | </div> |
| 93 | 93 | </div> |
| 94 | 94 | </div> |
| @@ -2,6 +2,7 @@ import { isMobile } from '../../RossAscends-mods.js'; | ||
| 2 | 2 | import { getPreviewString } from './index.js'; |
| 3 | 3 | import { saveTtsProviderSettings } from './index.js'; |
| 4 | 4 | export { SystemTtsProvider }; |
| 5 | +import { t } from '../../i18n.js'; | |
| 5 | 6 | |
| 6 | 7 | /** |
| 7 | 8 | * Chunkify |
| @@ -96,13 +97,13 @@ class SystemTtsProvider { | ||
| 96 | 97 | |
| 97 | 98 | get settingsHtml() { |
| 98 | 99 | if (!('speechSynthesis' in window)) { |
| 99 | 100 | return 't`Your browser or operating system doesn\'t support speech synthesis'`; |
| 100 | 101 | } |
| 101 | 102 | |
| 102 | 103 | return `'<p>' + t`Uses the voices provided by your operating system` + `</p> |
| 103 | 104 | <label for="system_tts_rate">` + t`Rate:` + ` <span id="system_tts_rate_output"></span></label> |
| 104 | 105 | <input id="system_tts_rate" type="range" value="${this.defaultSettings.rate}" min="0.1" max="2" step="0.01" /> |
| 105 | 106 | <label for="system_tts_pitch">` + t`Pitch:` + ` <span id="system_tts_pitch_output"></span></label> |
| 106 | 107 | <input id="system_tts_pitch" type="range" value="${this.defaultSettings.pitch}" min="0" max="2" step="0.01" />`; |
| 107 | 108 | } |
| 108 | 109 | |