Update tl
| @@ -1957,7 +1957,7 @@ | |||
| 1957 | <span data-i18n="Enable web search">Enable web search</span> | 1957 | <span data-i18n="Enable web search">Enable web search</span> |
| 1958 | </label> | 1958 | </label> |
| 1959 | <div class="flexBasis100p toggle-description justifyLeft"> | 1959 | <div class="flexBasis100p toggle-description justifyLeft"> |
| 1960 | <span> | 1960 | <span data-i18n="Use search capabilities provided by the backend."> |
| 1961 | Use search capabilities provided by the backend. | 1961 | Use search capabilities provided by the backend. |
| 1962 | </span> | 1962 | </span> |
| 1963 | </div> | 1963 | </div> |
| @@ -2188,7 +2188,7 @@ | |||
| 2188 | <input id="horde_trusted_workers_only" type="checkbox" /> | 2188 | <input id="horde_trusted_workers_only" type="checkbox" /> |
| 2189 | <span data-i18n="Trusted workers only">Trusted workers only</span> | 2189 | <span data-i18n="Trusted workers only">Trusted workers only</span> |
| 2190 | </label> | 2190 | </label> |
| 2191 | <small id="adjustedHordeParams">Context: --, Response: --</small> | 2191 | <small id="adjustedHordeParams"><span data-i18n="Context">Context</span>: --, <span data-i18n="Response">Response</span>: --</small> |
| 2192 | <h4 data-i18n="API key">API key</h4> | 2192 | <h4 data-i18n="API key">API key</h4> |
| 2193 | <small> | 2193 | <small> |
| 2194 | <span data-i18n="Get it here:">Get it here: </span> <a target="_blank" href="https://aihorde.net/register" data-i18n="Register">Register</a> (<a id="horde_kudos" href="javascript:void(0);" data-i18n="View my Kudos">View my Kudos</a>)<br> | 2194 | <span data-i18n="Get it here:">Get it here: </span> <a target="_blank" href="https://aihorde.net/register" data-i18n="Register">Register</a> (<a id="horde_kudos" href="javascript:void(0);" data-i18n="View my Kudos">View my Kudos</a>)<br> |
| @@ -6563,7 +6563,7 @@ | |||
| 6563 | <div class="ch_name"></div> | 6563 | <div class="ch_name"></div> |
| 6564 | <small class="ch_additional_info group_select_counter"></small> | 6564 | <small class="ch_additional_info group_select_counter"></small> |
| 6565 | </div> | 6565 | </div> |
| 6566 | <small class="character_name_block_sub_line">in this group</small> | 6566 | <small class="character_name_block_sub_line" data-i18n="in this group">in this group</small> |
| 6567 | <i class='group_fav_icon fa-solid fa-star'></i> | 6567 | <i class='group_fav_icon fa-solid fa-star'></i> |
| 6568 | <input class="ch_fav" value="" hidden /> | 6568 | <input class="ch_fav" value="" hidden /> |
| 6569 | <div class="group_select_block_list ch_description"></div> | 6569 | <div class="group_select_block_list ch_description"></div> |
| @@ -23,9 +23,8 @@ | |||
| 23 | "Mirostat Mode": "Режим", | 23 | "Mirostat Mode": "Режим", |
| 24 | "Mirostat Tau": "Tau", | 24 | "Mirostat Tau": "Tau", |
| 25 | "Mirostat Eta": "Eta", | 25 | "Mirostat Eta": "Eta", |
| 26 | "Variability parameter for Mirostat outputs": "Параметр изменчивости для выходных данных Mirostat.", | 26 | "Variability parameter for Mirostat outputs": "Вариативность для выходных данных Mirostat.", |
| 27 | "Learning rate of Mirostat": "Скорость обучения Mirostat.", | 27 | "Learning rate of Mirostat": "Скорость обучения Mirostat.", |
| 28 | "Strength of the Contrastive Search regularization term. Set to 0 to disable CS": "Сила условия регуляризации контрастивного поиска. Установите значение 0, чтобы отключить CS.", | ||
| 29 | "Temperature Last": "Температура последней", | 28 | "Temperature Last": "Температура последней", |
| 30 | "LLaMA / Mistral / Yi models only": "Только для моделей LLaMA / Mistral / Yi. Перед этим обязательно выберите подходящий токенизатор.\nПоследовательности, которых не должно быть на выходе.\nОдна на строку. Текст или [идентификаторы токенов].\nМногие токены имеют пробел впереди. Используйте счетчик токенов, если не уверены.", | 29 | "LLaMA / Mistral / Yi models only": "Только для моделей LLaMA / Mistral / Yi. Перед этим обязательно выберите подходящий токенизатор.\nПоследовательности, которых не должно быть на выходе.\nОдна на строку. Текст или [идентификаторы токенов].\nМногие токены имеют пробел впереди. Используйте счетчик токенов, если не уверены.", |
| 31 | "Example: some text [42, 69, 1337]": "Пример:\nкакой-то текст\n[42, 69, 1337]", | 30 | "Example: some text [42, 69, 1337]": "Пример:\nкакой-то текст\n[42, 69, 1337]", |
| @@ -60,13 +59,11 @@ | |||
| 60 | "Add BOS Token": "Добавлять BOS-токен", | 59 | "Add BOS Token": "Добавлять BOS-токен", |
| 61 | "Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative": "Добавлять BOS-токен в начале промпта. Если выключить, ответы могут стать более креативными.", | 60 | "Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative": "Добавлять BOS-токен в начале промпта. Если выключить, ответы могут стать более креативными.", |
| 62 | "Ban EOS Token": "Запретить EOS-токен", | 61 | "Ban EOS Token": "Запретить EOS-токен", |
| 63 | "Ban the eos_token. This forces the model to never end the generation prematurely": "Запрет EOS-токена не позволит модели завершить генерацию преждевременно", | 62 | "Ban the eos_token. This forces the model to never end the generation prematurely": "Запрет EOS-токена не позволит модели завершить генерацию самостоятельно (только при достижении лимита токенов)", |
| 64 | "Skip Special Tokens": "Пропускать спец. токены", | 63 | "Skip Special Tokens": "Пропускать спец. токены", |
| 65 | "Beam search": "Поиск Beam", | 64 | "Beam search": "Beam Search", |
| 66 | "Number of Beams": "Количество Beam", | ||
| 67 | "Length Penalty": "Штраф за длину", | 65 | "Length Penalty": "Штраф за длину", |
| 68 | "Early Stopping": "Преждевременная остановка", | 66 | "Early Stopping": "Прекращать сразу", |
| 69 | "Contrastive search": "Контрастный поиск", | ||
| 70 | "Penalty Alpha": "Penalty Alpha", | 67 | "Penalty Alpha": "Penalty Alpha", |
| 71 | "Seed": "Зерно", | 68 | "Seed": "Зерно", |
| 72 | "Epsilon Cutoff": "Epsilon Cutoff", | 69 | "Epsilon Cutoff": "Epsilon Cutoff", |
| @@ -89,7 +86,7 @@ | |||
| 89 | "Text Completion presets": "Пресеты для Text Completion", | 86 | "Text Completion presets": "Пресеты для Text Completion", |
| 90 | "Documentation on sampling parameters": "Документация по параметрам сэмплеров", | 87 | "Documentation on sampling parameters": "Документация по параметрам сэмплеров", |
| 91 | "Set all samplers to their neutral/disabled state.": "Установить все сэмплеры в нейтральное/отключенное состояние.", | 88 | "Set all samplers to their neutral/disabled state.": "Установить все сэмплеры в нейтральное/отключенное состояние.", |
| 92 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Включайте эту опцию, только если ваша модель поддерживает размер контекста более 8192 токенов.\nУвеличивайте только если вы знаете, что делаете.", | 89 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Включайте эту опцию, только если ваша модель поддерживает размер контекста более 8192 токенов.\nУвеличивайте только если вы понимаете, что делаете.", |
| 93 | "Wrap in Quotes": "Заключать в кавычки", | 90 | "Wrap in Quotes": "Заключать в кавычки", |
| 94 | "Wrap entire user message in quotes before sending.": "Перед отправкой заключать всё сообщение пользователя в кавычки.", | 91 | "Wrap entire user message in quotes before sending.": "Перед отправкой заключать всё сообщение пользователя в кавычки.", |
| 95 | "Leave off if you use quotes manually for speech.": "Оставьте выключенным, если вручную выставляете кавычки для прямой речи.", | 92 | "Leave off if you use quotes manually for speech.": "Оставьте выключенным, если вручную выставляете кавычки для прямой речи.", |
| @@ -109,7 +106,7 @@ | |||
| 109 | "Adjust response length to worker capabilities": "Подстраивать длину ответа под возможности рабочих машин", | 106 | "Adjust response length to worker capabilities": "Подстраивать длину ответа под возможности рабочих машин", |
| 110 | "API key": "API-ключ", | 107 | "API key": "API-ключ", |
| 111 | "Tabby API key": "Tabby API-ключ", | 108 | "Tabby API key": "Tabby API-ключ", |
| 112 | "Get it here:": "Получить здесь:", | 109 | "Get it here:": "Получите здесь:", |
| 113 | "Register": "Зарегистрироваться", | 110 | "Register": "Зарегистрироваться", |
| 114 | "TogetherAI Model": "Модель TogetherAI", | 111 | "TogetherAI Model": "Модель TogetherAI", |
| 115 | "Example: 127.0.0.1:5001": "Пример: http://127.0.0.1:5001", | 112 | "Example: 127.0.0.1:5001": "Пример: http://127.0.0.1:5001", |
| @@ -289,10 +286,10 @@ | |||
| 289 | "Author's Note": "Заметки автора", | 286 | "Author's Note": "Заметки автора", |
| 290 | "Replace empty message": "Заменять пустые сообщения", | 287 | "Replace empty message": "Заменять пустые сообщения", |
| 291 | "Send this text instead of nothing when the text box is empty.": "Этот текст будет отправлен в случае отсутствия текста на отправку.", | 288 | "Send this text instead of nothing when the text box is empty.": "Этот текст будет отправлен в случае отсутствия текста на отправку.", |
| 292 | "Unrestricted maximum value for the context slider": "Убрать потолок для ползунка контекста. Включайте только если точно знаете, что делаете", | 289 | "Unrestricted maximum value for the context slider": "Убрать потолок для ползунка контекста. Включайте только если точно понимаете, что делаете", |
| 293 | "Chat Completion Source": "Источник для Chat Completion", | 290 | "Chat Completion Source": "Источник для Chat Completion", |
| 294 | "Avoid sending sensitive information to the Horde.": "Избегайте отправки личной информации Horde", | 291 | "Avoid sending sensitive information to the Horde.": "Избегайте отправки личной информации Horde.", |
| 295 | "Review the Privacy statement": "Ознакомиться с заявлением о конфиденциальности", | 292 | "Review the Privacy statement": "Ознакомьтесь с заявлением о конфиденциальности", |
| 296 | "Trusted workers only": "Только доверенные рабочие машины", | 293 | "Trusted workers only": "Только доверенные рабочие машины", |
| 297 | "For privacy reasons, your API key will be hidden after you reload the page.": "Из соображений безопасности ваш API-ключ будет скрыт после перезагрузки страницы.", | 294 | "For privacy reasons, your API key will be hidden after you reload the page.": "Из соображений безопасности ваш API-ключ будет скрыт после перезагрузки страницы.", |
| 298 | "-- Horde models not loaded --": "--Модель Horde не загружена--", | 295 | "-- Horde models not loaded --": "--Модель Horde не загружена--", |
| @@ -699,7 +696,7 @@ | |||
| 699 | "Aggressive": "Агрессивный", | 696 | "Aggressive": "Агрессивный", |
| 700 | "Very aggressive": "Очень агрессивный", | 697 | "Very aggressive": "Очень агрессивный", |
| 701 | "Eta_Cutoff_desc": "Eta cutoff - основной параметр специальной техники сэмплинга под названием Eta Sampling. В единицах 1e-4; разумное значение - 3. Установите в 0, чтобы отключить. См. статью Truncation Sampling as Language Model Desmoothing от Хьюитт и др. (2022) для получения подробной информации.", | 698 | "Eta_Cutoff_desc": "Eta cutoff - основной параметр специальной техники сэмплинга под названием Eta Sampling. В единицах 1e-4; разумное значение - 3. Установите в 0, чтобы отключить. См. статью Truncation Sampling as Language Model Desmoothing от Хьюитт и др. (2022) для получения подробной информации.", |
| 702 | "Learn how to contribute your idle GPU cycles to the Horde": "Узнайте, как внести свой вклад в свои свободные GPU-циклы в орду", | 699 | "Learn how to contribute your idle GPU cycles to the Horde": "Узнайте, как использовать время простоя вашего GPU для помощи Horde", |
| 703 | "Use the appropriate tokenizer for Google models via their API. Slower prompt processing, but offers much more accurate token counting.": "Используйте соответствующий токенизатор для моделей Google через их API. Медленная обработка подсказок, но предлагает намного более точный подсчет токенов.", | 700 | "Use the appropriate tokenizer for Google models via their API. Slower prompt processing, but offers much more accurate token counting.": "Используйте соответствующий токенизатор для моделей Google через их API. Медленная обработка подсказок, но предлагает намного более точный подсчет токенов.", |
| 704 | "Load koboldcpp order": "Загрузить порядок из koboldcpp", | 701 | "Load koboldcpp order": "Загрузить порядок из koboldcpp", |
| 705 | "Use Google Tokenizer": "Использовать токенизатор Google", | 702 | "Use Google Tokenizer": "Использовать токенизатор Google", |
| @@ -744,7 +741,7 @@ | |||
| 744 | "Last Assistant Prefix": "Последний префикс ассистента", | 741 | "Last Assistant Prefix": "Последний префикс ассистента", |
| 745 | "System Instruction Prefix": "Префикс системной инструкции", | 742 | "System Instruction Prefix": "Префикс системной инструкции", |
| 746 | "User Filler Message": "Принудительное сообщение пользователя", | 743 | "User Filler Message": "Принудительное сообщение пользователя", |
| 747 | "Permanent": "перманентных", | 744 | "Permanent": "постоянных", |
| 748 | "Alt. Greetings": "Др. варианты", | 745 | "Alt. Greetings": "Др. варианты", |
| 749 | "Smooth Streaming": "Плавный стриминг", | 746 | "Smooth Streaming": "Плавный стриминг", |
| 750 | "Save checkpoint": "Сохранить чекпоинт", | 747 | "Save checkpoint": "Сохранить чекпоинт", |
| @@ -1227,7 +1224,6 @@ | |||
| 1227 | "JSON-serialized array of strings.": "Список строк в формате JSON.", | 1224 | "JSON-serialized array of strings.": "Список строк в формате JSON.", |
| 1228 | "Mirostat_desc": "Mirostat - своего рода термометр, измеряющий перплексию для выводимого текста.\nMirostat подгоняет перплексию генерируемого текста к перплексии входного текста, что позволяет избежать повторов.\n(когда по мере генерации текста авторегрессионным инференсом, перплексия всё больше приближается к нулю)\n а также ловушки перплексии (когда перплексия начинает уходить в сторону)\nБолее подробное описание в статье Mirostat: A Neural Text Decoding Algorithm that Directly Controls Perplexity by Basu et al. (2020).\nРежим выбирает версию Mirostat. 0=отключить, 1=Mirostat 1.0 (только llama.cpp), 2=Mirostat 2.0.", | 1225 | "Mirostat_desc": "Mirostat - своего рода термометр, измеряющий перплексию для выводимого текста.\nMirostat подгоняет перплексию генерируемого текста к перплексии входного текста, что позволяет избежать повторов.\n(когда по мере генерации текста авторегрессионным инференсом, перплексия всё больше приближается к нулю)\n а также ловушки перплексии (когда перплексия начинает уходить в сторону)\nБолее подробное описание в статье Mirostat: A Neural Text Decoding Algorithm that Directly Controls Perplexity by Basu et al. (2020).\nРежим выбирает версию Mirostat. 0=отключить, 1=Mirostat 1.0 (только llama.cpp), 2=Mirostat 2.0.", |
| 1229 | "Helpful tip coming soon.": "Подсказку скоро добавим.", | 1226 | "Helpful tip coming soon.": "Подсказку скоро добавим.", |
| 1230 | "Temperature_Last_desc": "Использовать Temperature сэмплер в последнюю очередь. Это почти всегда разумно.\nПри включении: сначала выборка набора правдоподобных токенов, затем применение Temperature для корректировки их относительных вероятностей (технически, логитов).\nПри отключении: сначала применение Temperature для корректировки относительных вероятностей ВСЕХ токенов, затем выборка правдоподобных токенов из этого.\nОтключение Temperature Last увеличивает вероятности в хвосте распределения, что увеличивает шансы получить несогласованный ответ.", | ||
| 1231 | "Speculative Ngram": "Speculative Ngram", | 1227 | "Speculative Ngram": "Speculative Ngram", |
| 1232 | "Use a different speculative decoding method without a draft model": "Use a different speculative decoding method without a draft model.\rUsing a draft model is preferred. Speculative ngram is not as effective.", | 1228 | "Use a different speculative decoding method without a draft model": "Use a different speculative decoding method without a draft model.\rUsing a draft model is preferred. Speculative ngram is not as effective.", |
| 1233 | "Spaces Between Special Tokens": "Spaces Between Special Tokens", | 1229 | "Spaces Between Special Tokens": "Spaces Between Special Tokens", |
| @@ -1734,7 +1730,7 @@ | |||
| 1734 | "markdown_hotkeys_desc": "Включить горячие клавиши для вставки символов разметки в некоторых полях ввода. См. '/help hotkeys'.", | 1730 | "markdown_hotkeys_desc": "Включить горячие клавиши для вставки символов разметки в некоторых полях ввода. См. '/help hotkeys'.", |
| 1735 | "Save and Update": "Сохранить и обновить", | 1731 | "Save and Update": "Сохранить и обновить", |
| 1736 | "Profile name:": "Название профиля:", | 1732 | "Profile name:": "Название профиля:", |
| 1737 | "API returned an error": "API вернуло ошибку", | 1733 | "API returned an error": "API ответило ошибкой", |
| 1738 | "Failed to save preset": "Не удалось сохранить пресет", | 1734 | "Failed to save preset": "Не удалось сохранить пресет", |
| 1739 | "Preset name should be unique.": "Название пресета должно быть уникальным.", | 1735 | "Preset name should be unique.": "Название пресета должно быть уникальным.", |
| 1740 | "Invalid file": "Невалидный файл", | 1736 | "Invalid file": "Невалидный файл", |
| @@ -1756,8 +1752,7 @@ | |||
| 1756 | "dot quota_error": "имеется достаточно кредитов.", | 1752 | "dot quota_error": "имеется достаточно кредитов.", |
| 1757 | "If you have sufficient credits, please try again later.": "Если кредитов достаточно, то повторите попытку позднее.", | 1753 | "If you have sufficient credits, please try again later.": "Если кредитов достаточно, то повторите попытку позднее.", |
| 1758 | "Proxy preset '${0}' not found": "Пресет '${0}' не найден", | 1754 | "Proxy preset '${0}' not found": "Пресет '${0}' не найден", |
| 1759 | "Window.ai returned an error": "Window.ai вернул ошибку", | 1755 | "Window.ai returned an error": "Window.ai ответил ошибкой", |
| 1760 | "Get it here:": "Загрузите здесь:", | ||
| 1761 | "Extension is not installed": "Расширение не установлено", | 1756 | "Extension is not installed": "Расширение не установлено", |
| 1762 | "Update or remove your reverse proxy settings.": "Измените или удалите ваши настройки прокси.", | 1757 | "Update or remove your reverse proxy settings.": "Измените или удалите ваши настройки прокси.", |
| 1763 | "An error occurred while importing prompts. More info available in console.": "В процессе импорта произошла ошибка. Подробную информацию см. в консоли.", | 1758 | "An error occurred while importing prompts. More info available in console.": "В процессе импорта произошла ошибка. Подробную информацию см. в консоли.", |
| @@ -1866,7 +1861,7 @@ | |||
| 1866 | "Group Chat could not be saved": "Не удалось сохранить групповой чат", | 1861 | "Group Chat could not be saved": "Не удалось сохранить групповой чат", |
| 1867 | "Deleted group member swiped. To get a reply, add them back to the group.": "Вы пытаетесь свайпнуть удалённого члена группы. Чтобы получить ответ, добавьте этого персонажа обратно в группу.", | 1862 | "Deleted group member swiped. To get a reply, add them back to the group.": "Вы пытаетесь свайпнуть удалённого члена группы. Чтобы получить ответ, добавьте этого персонажа обратно в группу.", |
| 1868 | "Currently no group selected.": "В данный момент не выбрано ни одной группы.", | 1863 | "Currently no group selected.": "В данный момент не выбрано ни одной группы.", |
| 1869 | "Not so fast! Wait for the characters to stop typing before deleting the group.": "Чуть помедленнее! Перед удалением группы дождитесь, пока персонаж закончит печатать.", | 1864 | "Not so fast! Wait for the characters to stop typing before deleting the group.": "Чуть помедленнее! Перед удалением группы дождитесь, пока персонажи закончат печатать.", |
| 1870 | "Delete the group?": "Удалить группу?", | 1865 | "Delete the group?": "Удалить группу?", |
| 1871 | "This will also delete all your chats with that group. If you want to delete a single conversation, select a \"View past chats\" option in the lower left menu.": "Вместе с ней будут удалены и все её чаты. Если требуется удалить только один чат, воспользуйтесь кнопкой \"Все чаты\" в меню в левом нижнем углу.", | 1866 | "This will also delete all your chats with that group. If you want to delete a single conversation, select a \"View past chats\" option in the lower left menu.": "Вместе с ней будут удалены и все её чаты. Если требуется удалить только один чат, воспользуйтесь кнопкой \"Все чаты\" в меню в левом нижнем углу.", |
| 1872 | "Can't peek a character while group reply is being generated": "Невозможно открыть карточку персонажа во время генерации ответа", | 1867 | "Can't peek a character while group reply is being generated": "Невозможно открыть карточку персонажа во время генерации ответа", |
| @@ -1997,7 +1992,7 @@ | |||
| 1997 | "Default persona deleted": "Удалена персона по умолчанию", | 1992 | "Default persona deleted": "Удалена персона по умолчанию", |
| 1998 | "The locked persona was deleted. You will need to set a new persona for this chat.": "Удалена привязанная к чату персона. Вам будет необходимо выбрать новую фиксированную персону для этого чата.", | 1993 | "The locked persona was deleted. You will need to set a new persona for this chat.": "Удалена привязанная к чату персона. Вам будет необходимо выбрать новую фиксированную персону для этого чата.", |
| 1999 | "Persona deleted": "Персона удалена", | 1994 | "Persona deleted": "Персона удалена", |
| 2000 | "You must bind a name to this persona before you can set it as the default.": "Прежде чем установить эту персону в качестве персоны по умолчанию, ей необходимо задать имя.", | 1995 | "You must bind a name to this persona before you can set it as the default.": "Прежде чем установить эту персону в качестве персоны по умолчанию, ей необходимо присвоить имя.", |
| 2001 | "Persona name not set": "У персоны отсутствует имя", | 1996 | "Persona name not set": "У персоны отсутствует имя", |
| 2002 | "Are you sure you want to remove the default persona?": "Вы точно хотите снять статус персоны по умолчанию?", | 1997 | "Are you sure you want to remove the default persona?": "Вы точно хотите снять статус персоны по умолчанию?", |
| 2003 | "This persona will no longer be used by default when you open a new chat.": "Эта персона больше не будет автоматически выбираться при старте нового чата", | 1998 | "This persona will no longer be used by default when you open a new chat.": "Эта персона больше не будет автоматически выбираться при старте нового чата", |
| @@ -2203,5 +2198,127 @@ | |||
| 2203 | "Input:": "Входные данные:", | 2198 | "Input:": "Входные данные:", |
| 2204 | "Tokenized text:": "Токенизированный текст:", | 2199 | "Tokenized text:": "Токенизированный текст:", |
| 2205 | "Token IDs:": "Идентификаторы токенов:", | 2200 | "Token IDs:": "Идентификаторы токенов:", |
| 2206 | "Tokens:": "Токенов:" | 2201 | "Tokens:": "Токенов:", |
| 2202 | "Max prompt cost:": "Макс. стоимость промпта:", | ||
| 2203 | "Reset custom sampler selection": "Сбросить подборку семплеров", | ||
| 2204 | "Here you can toggle the display of individual samplers. (WIP)": "Здесь можно включить или выключить отображение каждого из сэмплеров отдельно. (WIP)", | ||
| 2205 | "Request Model Reasoning": "Запрашивать цепочку рассуждений", | ||
| 2206 | "Reasoning": "Рассуждения / Reasoning", | ||
| 2207 | "Auto-Parse": "Авто-парсинг", | ||
| 2208 | "reasoning_auto_parse": "Автоматически считывать блоки рассуждений, расположенные между префиксом и суффиксом рассуждений. Для работы должно быть указано и то, и другое.", | ||
| 2209 | "Auto-Expand": "Разворачивать", | ||
| 2210 | "reasoning_auto_expand": "Автоматически разворачивать блоки рассуждений.", | ||
| 2211 | "Show Hidden": "Показывать время", | ||
| 2212 | "reasoning_show_hidden": "Отображать затраченное на рассуждения время для моделей со скрытой цепочкой рассуждений", | ||
| 2213 | "Add to Prompts": "Добавлять в промпт", | ||
| 2214 | "reasoning_add_to_prompts": "Добавлять существующие блоки рассуждений в промпт. Для добавления новых используйте меню редактирования сообщений.", | ||
| 2215 | "reasoning_max_additions": "Макс. кол-во блоков рассуждений в промпте, считается от последнего сообщения", | ||
| 2216 | "Max": "Макс.", | ||
| 2217 | "Reasoning Formatting": "Форматирование рассуждений", | ||
| 2218 | "Prefix": "Префикс", | ||
| 2219 | "Suffix": "Постфикс", | ||
| 2220 | "Separator": "Разделитель", | ||
| 2221 | "reasoning_separator": "Вставляется между рассуждениями и содержанием самого сообщения.", | ||
| 2222 | "reasoning_prefix": "Вставляется перед рассуждениями.", | ||
| 2223 | "reasoning_suffix": "Вставляется после рассуждений.", | ||
| 2224 | "Seed_desc": "Фиксированное значение зерна позволяет получать предсказуемые, одинаковые результаты на одинаковых настройках. Поставьте -1 для рандомного зерна.", | ||
| 2225 | "# of Beams": "Кол-во лучей", | ||
| 2226 | "The number of sequences generated at each step with Beam Search.": "Кол-во вариантов, генерируемых Beam Search на каждом шаге работы.", | ||
| 2227 | "Penalize sequences based on their length.": "Штрафует строки в зависимости от длины", | ||
| 2228 | "Controls the stopping condition for beam search. If checked, the generation stops as soon as there are '# of Beams' sequences. If not checked, a heuristic is applied and the generation is stopped when it's very unlikely to find better candidates.": "Определяет, когда останавливать работу Beam Search. Поставив галочку, вы укажете поиску остановиться тогда, когда будет достигнуто кол-во лучей из соответствующего поля. Если галочку не отмечать, то генерация остановится тогда, когда сочтёт, что дальше найти лучших кандидатов слишком маловероятно.", | ||
| 2229 | "A greedy, brute-force algorithm used in LLM sampling to find the most likely sequence of words or tokens. It expands multiple candidate sequences at once, maintaining a fixed number (beam width) of top sequences at each step.": "Жадный алгоритм LLM-сэмплинга, подбирающий наиболее вероятную последовательность слов или токенов путём исследования и расширения сразу нескольких вариантов. На каждом шаге он удерживает фиксированное кол-во самых подходящих вариантов (ширина луча).", | ||
| 2230 | "Smooth_Sampling_desc": "Изменяет распределение с помощью квадратичных и кубических преобразований. Снижение Коэффициента сглаживания даёт более креативные ответы, обычно идеальное значение находится в диапазоне 0.2-0.3 (при кривой сглаживания=1.0). Повышение значения Кривой сглаживания сделает кривую круче, что приведёт к более агрессивной фильтрации маловероятных вариантов. Установив Кривую сглаживания = 1.0, вы фактически нейтрализуете этот параметр и будете работать только с Коэффициентом", | ||
| 2231 | "Temperature_Last_desc": "Применять сэмплер Температуры в последнюю очередь. Почти всегда оправдано.\nПри включении: сначала все токены семплируются, и затем температура регулирует распределение у оставшихся (технически, у оставшихся логитов).\nПри выключении: сначала температура настраивает распределение ВСЕХ токенов, и потом они семплируются уже с этим обновлённым распределением.\nПри отключении этой опции токены в хвосте получают больше шансов попасть в итоговую последовательность, что может привести к менее связным и логичным ответам.", | ||
| 2232 | "Swipe # for All Messages": "Номер свайпа на всех сообщениях", | ||
| 2233 | "Display swipe numbers for all messages, not just the last.": "Отображать номер свайпа для всех сообщений, а не только для последнего.", | ||
| 2234 | "Penalty Range": "Окно для штрафа", | ||
| 2235 | "Never": "Никогда", | ||
| 2236 | "Groups and Past Personas": "Для групп и прошлых персон", | ||
| 2237 | "Always": "Всегда", | ||
| 2238 | "Request model reasoning": "Запрашивать рассуждения", | ||
| 2239 | "Allows the model to return its thinking process.": "Позволяет модели высылать в ответе свою цепочку рассуждений.", | ||
| 2240 | "Rename Persona": "Переименовать персону", | ||
| 2241 | "Change Persona Image": "Изменить изображение персоны", | ||
| 2242 | "Duplicate Persona": "Клонировать персону", | ||
| 2243 | "Delete Persona": "Удалить персону", | ||
| 2244 | "Enter a new name for this persona:": "Введите новое имя персоны:", | ||
| 2245 | "Connections": "Связи", | ||
| 2246 | "Click to select this as default persona for the new chats. Click again to remove it.": "Нажмите, чтобы установить эту персону стандартной для всех новых чатов. Нажмите ещё раз, чтобы отключить.", | ||
| 2247 | "Character": "Персонаж", | ||
| 2248 | "Click to lock your selected persona to the current character. Click again to remove the lock.": "Нажмите, чтобы закрепить эту персону для текущего персонажа. Нажмите ещё раз, чтобы открепить.", | ||
| 2249 | "Chat": "Чат", | ||
| 2250 | "[No character connections. Click one of the buttons above to connect this persona.]": "[Связи отсутствуют. Нажмите на одну из кнопок выше, чтобы создать.]", | ||
| 2251 | "Global Settings": "Общие настройки", | ||
| 2252 | "Allow multiple persona connections per character": "Разрешить привязывать несколько персон к одному персонажу", | ||
| 2253 | "When multiple personas are connected to a character, a popup will appear to select which one to use": "При связывании нескольких персон с персонажем, будет появляться окошко с предложением выбрать нужную.", | ||
| 2254 | "Auto-lock a chosen persona to the chat": "Автоматически привязывать выбранную персону к чату", | ||
| 2255 | "Whenever a persona is selected, it will be locked to the current chat and automatically selected when the chat is opened.": "При выборе новой персоны она автоматически будет привязана к текущему чату, и будет выбираться при его открытии.", | ||
| 2256 | "Current Persona": "Текущая персона", | ||
| 2257 | "The chat has been successfully converted!": "Чат успешно преобразован!", | ||
| 2258 | "Manual": "Когда вы скажете", | ||
| 2259 | "Auto Mode delay": "Задержка авто-режима", | ||
| 2260 | "Use tag as folder": "Тег-папка", | ||
| 2261 | "All connections to ${0} have been removed.": "Все связи с персонажем ${0} были удалены.", | ||
| 2262 | "Personas Unlocked": "Персоны отвязаны", | ||
| 2263 | "Remove All Connections": "Удалить все связи", | ||
| 2264 | "Persona ${0} selected and auto-locked to current chat": "Персона ${0} выбрана и автоматически закреплена за этим чатом", | ||
| 2265 | "This persona is only temporarily chosen. Click for more info.": "Данная персона выбрана лишь временно. Нажмите, чтобы узнать больше.", | ||
| 2266 | "Temporary Persona": "Временная персона", | ||
| 2267 | "A different persona is locked to this chat, or you have a different default persona set. The currently selected persona will only be temporary, and resets on reload. Consider locking this persona to the chat if you want to permanently use it.": "К этому чату уже привязана иная персона, либо у вас выбрана иная персона по-умолчанию. Выбранная в данный момент персона будет временной, и сбросится после перезагрузки. Если хотите всегда использовать её в этом чате, советуем её прикрепить.", | ||
| 2268 | "Current Persona: ${0}": "Выбранная персона: ${0}", | ||
| 2269 | "Chat persona: ${0}": "Персона для этого чата: ${0}", | ||
| 2270 | "Default persona: ${0}": "Персона по умолчанию (стандартная): ${0}", | ||
| 2271 | "Persona ${0} is now unlocked from this chat.": "Персона ${0} отвязана от этого чата.", | ||
| 2272 | "Persona Unlocked": "Персона отвязана", | ||
| 2273 | "Persona ${0} is now unlocked from character ${1}.": "Персона ${0} отвязана от персонажа ${1}.", | ||
| 2274 | "Persona Not Found": "Персона не найдена", | ||
| 2275 | "Persona Locked": "Персона закреплена", | ||
| 2276 | "User persona ${0} is locked to character ${1}${2}": "Персона ${0} прикреплена к персонажу ${1}${2}", | ||
| 2277 | "Persona Name Not Set": "У персоны отсутствует имя", | ||
| 2278 | "You must bind a name to this persona before you can set a lorebook.": "Перед привязкой лорбука персоне необходимо присвоить имя.", | ||
| 2279 | "Default Persona Removed": "Персона по умолчанию снята", | ||
| 2280 | "Persona is locked to the current character": "Персона закреплена за этим персонажем", | ||
| 2281 | "Persona is locked to the current chat": "Персона закреплена за этим чатом", | ||
| 2282 | "characters": "перс.", | ||
| 2283 | "character": "персонаж", | ||
| 2284 | "in this group": "в группе", | ||
| 2285 | "Chatting Since": "Первая беседа", | ||
| 2286 | "Context": "Контекст", | ||
| 2287 | "Response": "Ответ", | ||
| 2288 | "Connected": "Подключено", | ||
| 2289 | "Enter new background name:": "Введите новое название для фона:", | ||
| 2290 | "AI Horde Website": "Сайт AI Horde", | ||
| 2291 | "Enable web search": "Включить поиск в Интернете", | ||
| 2292 | "Use search capabilities provided by the backend.": "Разрешить использование предоставляемых бэкендом функций поиска.", | ||
| 2293 | "Request inline images": "Запрашивать inline-изображения", | ||
| 2294 | "Allows the model to return image attachments.": "Разрешить модели отправлять вложения в виде картинок.", | ||
| 2295 | "Request inline images_desc_2": "Не совместимо со следующим функционалом: вызов функций, поиск в Интернете, системный промпт.", | ||
| 2296 | "Connected Personas": "Связанные персоны", | ||
| 2297 | "[Currently no personas connected]": "[Связанных персон нет]", | ||
| 2298 | "The following personas are connected to the current character.\n\nClick on a persona to select it for the current character.\nShift + Click to unlink the persona from the character.": "С этим персонажем связаны следующие персоны.\n\nНажмите на персону, чтобы выбрать её для данного персонажа.\nShift + ЛКМ, чтобы её отвязать.", | ||
| 2299 | "Persona Connections": "Связи с персонами", | ||
| 2300 | "Pooled order": "Если уже давно не отвечали", | ||
| 2301 | "Attach a File": "Приложить файл", | ||
| 2302 | "Attach a file or image to a current chat.": "Приложить файл или изображение к текущему чату", | ||
| 2303 | "Remove the file": "Удалить файл", | ||
| 2304 | "Delete the Chat File?": "Удалить чат?", | ||
| 2305 | "Forbidden": "Доступ запрещён", | ||
| 2306 | "To view your API keys here, set the value of allowKeysExposure to true in config.yaml file and restart the SillyTavern server.": "Чтобы видеть здесь ваши API-ключи, установите параметр allowKeysExposure в config.yaml в положение true, после чего перезапустите сервер SillyTavern.", | ||
| 2307 | "Invalid endpoint URL. Requests may fail.": "Некорректный адрес эндпоинта. Запросы могут не проходить.", | ||
| 2308 | "How to install extensions?": "Как устанавливать расширения?", | ||
| 2309 | "Click the flashing button to install extensions.": "Чтобы их установить, нажмите на мигающую кнопку.", | ||
| 2310 | "ext_regex_reasoning_desc": "Содержимое блоков рассуждений. При отмеченной галочке \"Только промпт\" будут также обработаны добавленные в промпт рассуждения.", | ||
| 2311 | "Macro in Find Regex": "Макросы в рег. выражении", | ||
| 2312 | "Don't substitute": "Не заменять", | ||
| 2313 | "Substitute (raw)": "Заменять в \"чистом\" виде", | ||
| 2314 | "Substitute (escaped)": "Заменять после экранирования", | ||
| 2315 | "ext_regex_other_options_desc": "По умолчанию, расширение вносит изменения в сам файл чата.\nПри включении одной из опций (или обеих), файл чата останется нетронутым, при этом сами изменения по-прежнему будут действовать.", | ||
| 2316 | "ext_regex_flags_help": "Нажмите, чтобы узнать больше о флагах в рег. выражениях.", | ||
| 2317 | "Applies to all matches": "Заменяет все вхождения", | ||
| 2318 | "Applies to the first match": "Заменяет первое вхождение", | ||
| 2319 | "Case insensitive": "Не чувствительно к регистру", | ||
| 2320 | "Case sensitive": "Чувствительно к регистру", | ||
| 2321 | "Find Regex is empty": "Рег. выражение не указано", | ||
| 2322 | "Click the button to save it as a file.": "Нажмите на кнопку справа, чтобы сохранить его в файл.", | ||
| 2323 | "Export as JSONL": "Экспорт в формате JSONL" | ||
| 2207 | } | 2324 | } |
| @@ -1019,7 +1019,7 @@ export function displayOnlineStatus() { | |||
| 1019 | $('.online_status_text').text($('#API-status-top').attr('no_connection_text')); | 1019 | $('.online_status_text').text($('#API-status-top').attr('no_connection_text')); |
| 1020 | } else { | 1020 | } else { |
| 1021 | $('.online_status_indicator').addClass('success'); | 1021 | $('.online_status_indicator').addClass('success'); |
| 1022 | $('.online_status_text').text(online_status); | 1022 | $('.online_status_text').text(t([online_status])); |
| 1023 | } | 1023 | } |
| 1024 | } | 1024 | } |
| 1025 | 1025 | ||
| @@ -10417,7 +10417,7 @@ jQuery(async function () { | |||
| 10417 | e.stopPropagation(); | 10417 | e.stopPropagation(); |
| 10418 | chat_file_for_del = $(this).attr('file_name'); | 10418 | chat_file_for_del = $(this).attr('file_name'); |
| 10419 | console.debug('detected cross click for' + chat_file_for_del); | 10419 | console.debug('detected cross click for' + chat_file_for_del); |
| 10420 | callPopup('<h3>Delete the Chat File?</h3>', 'del_chat'); | 10420 | callPopup('<h3>' + t`Delete the Chat File?` + '</h3>', 'del_chat'); |
| 10421 | }); | 10421 | }); |
| 10422 | 10422 | ||
| 10423 | $('#advanced_div').click(function () { | 10423 | $('#advanced_div').click(function () { |
| @@ -5,6 +5,7 @@ import { saveMetadataDebounced } from './extensions.js'; | |||
| 5 | import { SlashCommand } from './slash-commands/SlashCommand.js'; | 5 | import { SlashCommand } from './slash-commands/SlashCommand.js'; |
| 6 | import { SlashCommandParser } from './slash-commands/SlashCommandParser.js'; | 6 | import { SlashCommandParser } from './slash-commands/SlashCommandParser.js'; |
| 7 | import { flashHighlight, stringFormat } from './utils.js'; | 7 | import { flashHighlight, stringFormat } from './utils.js'; |
| 8 | import { t } from './i18n.js'; | ||
| 8 | 9 | ||
| 9 | const BG_METADATA_KEY = 'custom_background'; | 10 | const BG_METADATA_KEY = 'custom_background'; |
| 10 | const LIST_METADATA_KEY = 'chat_backgrounds'; | 11 | const LIST_METADATA_KEY = 'chat_backgrounds'; |
| @@ -243,7 +244,7 @@ async function getNewBackgroundName(referenceElement) { | |||
| 243 | const fileExtension = oldBg.split('.').pop(); | 244 | const fileExtension = oldBg.split('.').pop(); |
| 244 | const fileNameBase = isCustom ? oldBg.split('/').pop() : oldBg; | 245 | const fileNameBase = isCustom ? oldBg.split('/').pop() : oldBg; |
| 245 | const oldBgExtensionless = fileNameBase.replace(`.${fileExtension}`, ''); | 246 | const oldBgExtensionless = fileNameBase.replace(`.${fileExtension}`, ''); |
| 246 | const newBgExtensionless = await callPopup('<h3>Enter new background name:</h3>', 'input', oldBgExtensionless); | 247 | const newBgExtensionless = await callPopup('<h3>' + t`Enter new background name:` + '</h3>', 'input', oldBgExtensionless); |
| 247 | 248 | ||
| 248 | if (!newBgExtensionless) { | 249 | if (!newBgExtensionless) { |
| 249 | console.debug('no new_bg_extensionless'); | 250 | console.debug('no new_bg_extensionless'); |
| @@ -358,7 +358,7 @@ export async function convertSoloToGroupChat() { | |||
| 358 | // Click on the freshly selected group to open it | 358 | // Click on the freshly selected group to open it |
| 359 | await openGroupById(group.id); | 359 | await openGroupById(group.id); |
| 360 | 360 | ||
| 361 | toastr.success('The chat has been successfully converted!'); | 361 | toastr.success(t`The chat has been successfully converted!`); |
| 362 | } | 362 | } |
| 363 | 363 | ||
| 364 | /** | 364 | /** |
| @@ -424,7 +424,7 @@ jQuery(async () => { | |||
| 424 | installHintButton.on('click', async function () { | 424 | installHintButton.on('click', async function () { |
| 425 | const installButton = $('#third_party_extension_button'); | 425 | const installButton = $('#third_party_extension_button'); |
| 426 | flashHighlight(installButton, 5000); | 426 | flashHighlight(installButton, 5000); |
| 427 | toastr.info('Click the flashing button to install extensions.', 'How to install extensions?'); | 427 | toastr.info(t`Click the flashing button to install extensions.`, t`How to install extensions?`); |
| 428 | }); | 428 | }); |
| 429 | 429 | ||
| 430 | const connectButton = windowHtml.find('#assets-connect-button'); | 430 | const connectButton = windowHtml.find('#assets-connect-button'); |
| @@ -1,4 +1,4 @@ | |||
| 1 | <div id="attachFile" class="list-group-item flex-container flexGap5" title="Attach a file or image to a current chat."> | 1 | <div id="attachFile" class="list-group-item flex-container flexGap5" data-i18n="[title]Attach a file or image to a current chat." title="Attach a file or image to a current chat."> |
| 2 | <div class="fa-fw fa-solid fa-paperclip extensionsMenuExtensionButton"></div> | 2 | <div class="fa-fw fa-solid fa-paperclip extensionsMenuExtensionButton"></div> |
| 3 | <span data-i18n="Attach a File">Attach a File</span> | 3 | <span data-i18n="Attach a File">Attach a File</span> |
| 4 | </div> | 4 | </div> |
| @@ -19,7 +19,7 @@ | |||
| 19 | <div id="regex_info_block_wrapper"> | 19 | <div id="regex_info_block_wrapper"> |
| 20 | <div id="regex_info_block" class="info-block"></div> | 20 | <div id="regex_info_block" class="info-block"></div> |
| 21 | <a id="regex_info_block_flags_hint" href="https://docs.sillytavern.app/extensions/regex/#flags" target="_blank" rel="noopener noreferrer"> | 21 | <a id="regex_info_block_flags_hint" href="https://docs.sillytavern.app/extensions/regex/#flags" target="_blank" rel="noopener noreferrer"> |
| 22 | <i class="fa-solid fa-circle-info" title="Click here to learn more about regex flags."></i> | 22 | <i class="fa-solid fa-circle-info" data-i18n="[title]ext_regex_flags_help" title="Click here to learn more about regex flags."></i> |
| 23 | </a> | 23 | </a> |
| 24 | </div> | 24 | </div> |
| 25 | 25 | ||
| @@ -147,7 +147,7 @@ | |||
| 147 | </label> | 147 | </label> |
| 148 | <span> | 148 | <span> |
| 149 | <small data-i18n="ext_regex_other_options" data-i18n="Ephemerality">Ephemerality</small> | 149 | <small data-i18n="ext_regex_other_options" data-i18n="Ephemerality">Ephemerality</small> |
| 150 | <span class="fa-solid fa-circle-question note-link-span" title="By default, regex scripts alter the chat file directly and irreversibly. Enabling either (or both) of the options below will prevent chat file alteration, while still altering the specified item(s)."></span> | 150 | <span class="fa-solid fa-circle-question note-link-span" data-i18n="[title]ext_regex_other_options_desc" title="By default, regex scripts alter the chat file directly and irreversibly. Enabling either (or both) of the options below will prevent chat file alteration, while still altering the specified item(s)."></span> |
| 151 | </span> | 151 | </span> |
| 152 | <label class="checkbox flex-container" data-i18n="[title]ext_regex_only_format_visual_desc" title="Chat history file contents won't change, but regex will be applied to the messages displayed in the Chat UI."> | 152 | <label class="checkbox flex-container" data-i18n="[title]ext_regex_only_format_visual_desc" title="Chat history file contents won't change, but regex will be applied to the messages displayed in the Chat UI."> |
| 153 | <input type="checkbox" name="only_format_display" /> | 153 | <input type="checkbox" name="only_format_display" /> |
| @@ -398,7 +398,7 @@ function runRegexCallback(args, value) { | |||
| 398 | for (const script of scripts) { | 398 | for (const script of scripts) { |
| 399 | if (script.scriptName.toLowerCase() === scriptName.toLowerCase()) { | 399 | if (script.scriptName.toLowerCase() === scriptName.toLowerCase()) { |
| 400 | if (script.disabled) { | 400 | if (script.disabled) { |
| 401 | toastr.warning(`Regex script "${scriptName}" is disabled.`); | 401 | toastr.warning(t`Regex script "${scriptName}" is disabled.`); |
| 402 | return value; | 402 | return value; |
| 403 | } | 403 | } |
| 404 | 404 | ||
| @@ -696,7 +696,7 @@ export function getGroupBlock(group) { | |||
| 696 | template.find('.group_fav_icon').css('display', 'none'); | 696 | template.find('.group_fav_icon').css('display', 'none'); |
| 697 | template.addClass(group.fav ? 'is_fav' : ''); | 697 | template.addClass(group.fav ? 'is_fav' : ''); |
| 698 | template.find('.ch_fav').val(group.fav); | 698 | template.find('.ch_fav').val(group.fav); |
| 699 | template.find('.group_select_counter').text(`${count} ${count != 1 ? 'characters' : 'character'}`); | 699 | template.find('.group_select_counter').text(count + ' ' + (count != 1 ? t`characters` : t`character`)); |
| 700 | template.find('.group_select_block_list').text(namesList.join(', ')); | 700 | template.find('.group_select_block_list').text(namesList.join(', ')); |
| 701 | 701 | ||
| 702 | // Display inline tags | 702 | // Display inline tags |
| @@ -10,6 +10,7 @@ import { SECRET_KEYS, writeSecret } from './secrets.js'; | |||
| 10 | import { delay } from './utils.js'; | 10 | import { delay } from './utils.js'; |
| 11 | import { isMobile } from './RossAscends-mods.js'; | 11 | import { isMobile } from './RossAscends-mods.js'; |
| 12 | import { autoSelectInstructPreset } from './instruct-mode.js'; | 12 | import { autoSelectInstructPreset } from './instruct-mode.js'; |
| 13 | import { t } from './i18n.js'; | ||
| 13 | 14 | ||
| 14 | export { | 15 | export { |
| 15 | horde_settings, | 16 | horde_settings, |
| @@ -169,7 +170,7 @@ async function adjustHordeGenerationParams(max_context_length, max_length) { | |||
| 169 | } | 170 | } |
| 170 | } | 171 | } |
| 171 | console.log(maxContextLength, maxLength); | 172 | console.log(maxContextLength, maxLength); |
| 172 | $('#adjustedHordeParams').text(`Context: ${maxContextLength}, Response: ${maxLength}`); | 173 | $('#adjustedHordeParams').text(t`Context` + `: ${maxContextLength}, ` + t`Response` + `: ${maxLength}`); |
| 173 | return { maxContextLength, maxLength }; | 174 | return { maxContextLength, maxLength }; |
| 174 | } | 175 | } |
| 175 | 176 | ||
| @@ -177,7 +178,7 @@ function setContextSizePreview() { | |||
| 177 | if (horde_settings.models.length) { | 178 | if (horde_settings.models.length) { |
| 178 | adjustHordeGenerationParams(max_context, amount_gen); | 179 | adjustHordeGenerationParams(max_context, amount_gen); |
| 179 | } else { | 180 | } else { |
| 180 | $('#adjustedHordeParams').text('Context: --, Response: --'); | 181 | $('#adjustedHordeParams').text(t`Context` + ': --, ' + t`Response` + ': --'); |
| 181 | } | 182 | } |
| 182 | } | 183 | } |
| 183 | 184 | ||
| @@ -404,7 +405,7 @@ jQuery(function () { | |||
| 404 | if (horde_settings.models.length) { | 405 | if (horde_settings.models.length) { |
| 405 | adjustHordeGenerationParams(max_context, amount_gen); | 406 | adjustHordeGenerationParams(max_context, amount_gen); |
| 406 | } else { | 407 | } else { |
| 407 | $('#adjustedHordeParams').text('Context: --, Response: --'); | 408 | $('#adjustedHordeParams').text(t`Context` + ': --, ' + t`Response` + ': --'); |
| 408 | } | 409 | } |
| 409 | 410 | ||
| 410 | saveSettingsDebounced(); | 411 | saveSettingsDebounced(); |
| @@ -800,7 +800,7 @@ async function selectCurrentPersona({ toastPersonaNameChange = true } = {}) { | |||
| 800 | chat_metadata['persona'] = user_avatar; | 800 | chat_metadata['persona'] = user_avatar; |
| 801 | console.log(`Auto locked persona to ${user_avatar}`); | 801 | console.log(`Auto locked persona to ${user_avatar}`); |
| 802 | if (toastPersonaNameChange && power_user.persona_show_notifications) { | 802 | if (toastPersonaNameChange && power_user.persona_show_notifications) { |
| 803 | toastr.success(`Persona ${personaName} selected and auto-locked to current chat`, t`Persona Selected`); | 803 | toastr.success(t`Persona ${personaName} selected and auto-locked to current chat`, t`Persona Selected`); |
| 804 | } | 804 | } |
| 805 | saveMetadataDebounced(); | 805 | saveMetadataDebounced(); |
| 806 | updatePersonaUIStates(); | 806 | updatePersonaUIStates(); |
| @@ -9,6 +9,7 @@ import { power_user } from './power-user.js'; | |||
| 9 | //import { getSortableDelay, onlyUnique } from './utils.js'; | 9 | //import { getSortableDelay, onlyUnique } from './utils.js'; |
| 10 | //import { getCfgPrompt } from './cfg-scale.js'; | 10 | //import { getCfgPrompt } from './cfg-scale.js'; |
| 11 | import { setting_names } from './textgen-settings.js'; | 11 | import { setting_names } from './textgen-settings.js'; |
| 12 | import { renderTemplateAsync } from './templates.js'; | ||
| 12 | 13 | ||
| 13 | 14 | ||
| 14 | const TGsamplerNames = setting_names; | 15 | const TGsamplerNames = setting_names; |
| @@ -25,25 +26,7 @@ async function showSamplerSelectPopup() { | |||
| 25 | const html = $(document.createElement('div')); | 26 | const html = $(document.createElement('div')); |
| 26 | html.attr('id', 'sampler_view_list') | 27 | html.attr('id', 'sampler_view_list') |
| 27 | .addClass('flex-container flexFlowColumn'); | 28 | .addClass('flex-container flexFlowColumn'); |
| 28 | html.append(` | 29 | html.append(await renderTemplateAsync('samplerSelector')); |
| 29 | <div class="title_restorable flexFlowColumn alignItemsBaseline"> | ||
| 30 | <div class="flex-container justifyCenter"> | ||
| 31 | <h3>Sampler Select</h3> | ||
| 32 | <div class="flex-container alignItemsBaseline"> | ||
| 33 | <div id="resetSelectedSamplers" class="menu_button menu_button_icon" title="Reset custom sampler selection"> | ||
| 34 | <i class="fa-solid fa-recycle"></i> | ||
| 35 | </div> | ||
| 36 | </div> | ||
| 37 | <!--<div class="flex-container alignItemsBaseline"> | ||
| 38 | <div class="menu_button menu_button_icon" title="Create a new sampler"> | ||
| 39 | <i class="fa-solid fa-plus"></i> | ||
| 40 | <span data-i18n="Create">Create</span> | ||
| 41 | </div> | ||
| 42 | </div>--> | ||
| 43 | </div> | ||
| 44 | <small>Here you can toggle the display of individual samplers. (WIP)</small> | ||
| 45 | </div> | ||
| 46 | <hr>`); | ||
| 47 | 30 | ||
| 48 | const listContainer = $('<div id="apiSamplersList" class="flex-container flexNoGap"></div>'); | 31 | const listContainer = $('<div id="apiSamplersList" class="flex-container flexNoGap"></div>'); |
| 49 | const APISamplers = await listSamplers(main_api); | 32 | const APISamplers = await listSamplers(main_api); |
| @@ -1,5 +1,6 @@ | |||
| 1 | import { DOMPurify } from '../lib.js'; | 1 | import { DOMPurify } from '../lib.js'; |
| 2 | import { callPopup, getRequestHeaders } from '../script.js'; | 2 | import { callPopup, getRequestHeaders } from '../script.js'; |
| 3 | import { t } from './i18n.js'; | ||
| 3 | 4 | ||
| 4 | export const SECRET_KEYS = { | 5 | export const SECRET_KEYS = { |
| 5 | HORDE: 'api_key_horde', | 6 | HORDE: 'api_key_horde', |
| @@ -104,7 +105,7 @@ async function viewSecrets() { | |||
| 104 | }); | 105 | }); |
| 105 | 106 | ||
| 106 | if (response.status == 403) { | 107 | if (response.status == 403) { |
| 107 | callPopup('<h3>Forbidden</h3><p>To view your API keys here, set the value of allowKeysExposure to true in config.yaml file and restart the SillyTavern server.</p>', 'text'); | 108 | callPopup('<h3>' + t`Forbidden` + '</h3><p>' + t`To view your API keys here, set the value of allowKeysExposure to true in config.yaml file and restart the SillyTavern server.` + '</p>', 'text'); |
| 108 | return; | 109 | return; |
| 109 | } | 110 | } |
| 110 | 111 | ||
| @@ -1,9 +1,9 @@ | |||
| 1 | <div data-type="assistant_note"> | 1 | <div data-type="assistant_note"> |
| 2 | <div> | 2 | <div> |
| 3 | <b data-i18n="Note:">Note:</b> <span data-i18n="this chat is temporary and will be deleted as soon as you leave it.">this chat is temporary and will be deleted as soon as you leave it.</span> | 3 | <b data-i18n="Note:">Note:</b> <span data-i18n="this chat is temporary and will be deleted as soon as you leave it.">this chat is temporary and will be deleted as soon as you leave it.</span> |
| 4 | <span>Click the button to save it as a file.</span> | 4 | <span data-i18n="Click the button to save it as a file.">Click the button to save it as a file.</span> |
| 5 | </div> | 5 | </div> |
| 6 | <div class="assistant_note_export menu_button menu_button_icon" title="Export as JSONL"> | 6 | <div class="assistant_note_export menu_button menu_button_icon" data-i18n="[title]Export as JSONL" title="Export as JSONL"> |
| 7 | <i class="fa-solid fa-file-export"></i> | 7 | <i class="fa-solid fa-file-export"></i> |
| 8 | </div> | 8 | </div> |
| 9 | </div> | 9 | </div> |
| @@ -0,0 +1,18 @@ | |||
| 1 | <div class="title_restorable flexFlowColumn alignItemsBaseline"> | ||
| 2 | <div class="flex-container justifyCenter"> | ||
| 3 | <h3 data-i18n="Sampler Select">Sampler Select</h3> | ||
| 4 | <div class="flex-container alignItemsBaseline"> | ||
| 5 | <div id="resetSelectedSamplers" class="menu_button menu_button_icon" data-i18n="[title]Reset custom sampler selection" title="Reset custom sampler selection"> | ||
| 6 | <i class="fa-solid fa-recycle"></i> | ||
| 7 | </div> | ||
| 8 | </div> | ||
| 9 | <!--<div class="flex-container alignItemsBaseline"> | ||
| 10 | <div class="menu_button menu_button_icon" title="Create a new sampler"> | ||
| 11 | <i class="fa-solid fa-plus"></i> | ||
| 12 | <span data-i18n="Create">Create</span> | ||
| 13 | </div> | ||
| 14 | </div>--> | ||
| 15 | </div> | ||
| 16 | <small data-i18n="Here you can toggle the display of individual samplers. (WIP)">Here you can toggle the display of individual samplers. (WIP)</small> | ||
| 17 | </div> | ||
| 18 | <hr> | ||
| \ No newline at end of file | 18 | \ No newline at end of file | |