♻️ refactor: Refactoring and adding multiple features

This commit is contained in:
web
2025-08-05 06:42:39 -07:00
committed by speakeloudest
parent 5a2fa2e937
commit 47d19d1b44
106 changed files with 6893 additions and 4604 deletions
+4 -11
View File
@@ -1,32 +1,25 @@
{
"ADS Config": "Конфигурация ADS",
"Announcement Management": "Управление объявлениями",
"Apple": "Apple ID",
"Application Management": "Управление приложениями",
"Auth Control": "Управление аутентификацией",
"Coupon Management": "Управление купонами",
"Dashboard": "Панель управления",
"Device": "Устройство",
"Document Management": "Управление документами",
"Email": "Электронная почта",
"Facebook": "Facebook",
"Finance": "Финансы",
"General": "Общий",
"GitHub": "GitHub",
"Google": "Google",
"Order Management": "Управление заказами",
"Payment Config": "Настройки оплаты",
"Phone Number": "Номер телефона",
"Product Management": "Управление продуктом",
"Protocol Management": "Управление протоколом",
"Rule Management": "Управление правилами",
"Server": "Сервер",
"Server Management": "Управление сервером",
"Settings": "Настройки",
"Subscribe Management": "Управление подписками",
"Subscribe Config": "Настройки подписки",
"System Config": "Системная конфигурация",
"System Management": "Управление системой",
"System Tool": "Системные инструменты",
"Telegram": "Телеграм",
"Ticket Management": "Управление заявками",
"Twitter": "Твиттер",
"User": "Пользователь",
"User Detail": "Детали пользователя",
"User Management": "Управление пользователями"
+160
View File
@@ -0,0 +1,160 @@
{
"actions": "действия",
"app": {
"appDownloadURL": "URL загрузки приложения",
"appIcon": "Иконка приложения",
"appList": "Список приложений",
"appName": "Название приложения",
"backupDomains": "Список резервных доменов",
"backupDomainsDescription": "Список резервных доменов для разрешения доменов, по одному домену на строку",
"batchDelete": "Удалить пакетно",
"cancel": "Отмена",
"communicationKey": "Ключ связи",
"communicationKeyDescription": "Ключ, используемый для связи с клиентом",
"config": "Конфигурация",
"configApp": "Конфигурация приложения",
"confirm": "Подтвердить",
"confirmDelete": "Подтвердить удаление",
"create": "Создать",
"createApp": "Создать приложение",
"createSuccess": "Успешно создано",
"defaultVersion": "По умолчанию",
"delete": "Удалить",
"deleteWarning": "Это действие необратимо",
"describeDescription": "Используется для описания приложения, отображается в списке приложений",
"description": "Описание",
"downloadLink": "Ссылка для загрузки",
"edit": "Редактировать",
"editApp": "Редактировать приложение",
"encryption": "Метод шифрования",
"encryptionDescription": "Выберите метод шифрования для связи с клиентом. Если выбран, клиент будет использовать этот метод для связи с сервером",
"nameDescription": "Название приложения, отображается в списке приложений",
"platform": "Платформа",
"selectApp": "Выбрать приложение",
"selectAppDescription": "Выберите приложение для настройки, все параметры будут применены к выбранному приложению",
"startupPicture": "Стартовое изображение",
"startupPictureDescription": "Стартовое изображение, поддерживает сетевые и локальные изображения. Для сетевых изображений введите полный URL изображения",
"startupPicturePreview": "Предварительный просмотр стартового изображения",
"startupPictureSkip": "Время пропуска стартового изображения",
"startupPictureSkipDescription": "Время отображения стартового изображения в секундах, введите 0, чтобы не отображать",
"subscriptionProtocol": "Протокол подписки",
"updateSuccess": "Успешно обновлено",
"version": "Версия"
},
"cancel": "Отмена",
"config": {
"singleSubscriptionMode": "Режим единой подписки",
"subscriptionDomain": "Домен подписки",
"subscriptionDomainDescription": "Используется для подписки; оставьте пустым, чтобы использовать домен сайта",
"subscriptionDomainPlaceholder": "Введите домен подписки, по одному на строку",
"subscriptionPath": "Путь подписки",
"subscriptionPathDescription": "Используется для подписки; обязательно перезапустите систему после изменения для оптимальной производительности",
"subscriptionPathPlaceholder": "Введите",
"updateSuccess": "Успешно обновлено",
"wildcardResolution": "Разрешение подстановочных знаков",
"wildcardResolutionDescription": "Используется для подписки"
},
"confirm": "Подтвердить",
"confirmDelete": "Вы уверены, что хотите удалить?",
"copy": "Копировать",
"copySuccess": "Успешно скопировано",
"create": "Создать",
"createSubscribe": "Создать подписку",
"createSuccess": "Создание успешно",
"delete": "Удалить",
"deleteSuccess": "Удаление успешно",
"deleteWarning": "После удаления данные не могут быть восстановлены, пожалуйста, действуйте осторожно.",
"deviceLimit": "Количество устройств/шт",
"edit": "редактировать",
"editSubscribe": "Редактировать подписку",
"form": {
"Day": "День",
"Hour": "Час",
"Minute": "Минута",
"Month": "Месяц",
"NoLimit": "Без ограничений",
"Year": "Год",
"annualReset": "Ежегодный Сброс",
"basic": "Основной",
"cancel": "Отмена",
"confirm": "Подтвердить",
"deductionRatio": "Автоматическая/Ручная Конфигурация Вычетов",
"deductionRatioDescription": "Используется для вычетов. По умолчанию система использует алгоритм автоматического расчета. Когда предоставляется ручное соотношение, система рассчитывает пропорции на основе времени и трафика, обеспечивая, чтобы сумма составляла 100%.",
"description": "Описание",
"deviceLimit": "Ограничение устройств",
"discount": "Скидка",
"discountDescription": "Установить скидку на основе цены за единицу",
"discountMonths": "месяцев",
"discountPercent": "Процент скидки",
"discount_price": "Цена со скидкой",
"duration": "Продолжительность (месяцы)",
"groupId": "Группа подписки",
"inventory": "Лимит подписки",
"monthlyReset": "Ежемесячный Сброс",
"name": "Название",
"noLimit": "Без ограничений",
"noReset": "Без Сброса",
"pricing": "Цены",
"purchaseWithDiscount": "Разрешить Вычет",
"purchaseWithDiscountDescription": "Включить или отключить функцию отписки. После активации система выполнит обработку вычетов в соответствии с настроенными правилами и пропорциями, а оставшаяся сумма будет возвращена на баланс",
"quota": "Лимит покупки",
"renewalReset": "Сброс при Обновлении",
"renewalResetDescription": "Сброс цикла при обновлении",
"replacement": "Цена замены (за раз)",
"resetCycle": "Цикл Сброса",
"resetOn1st": "Сброс 1-го числа",
"selectResetCycle": "Пожалуйста, выберите цикл сброса",
"selectSubscribeGroup": "Пожалуйста, выберите группу подписки",
"selectUnitTime": "Пожалуйста, выберите единицу времени",
"server": "Сервер",
"serverGroup": "Группа серверов",
"servers": "Серверы",
"speedLimit": "Ограничение скорости",
"traffic": "Трафик",
"unitPrice": "Цена за единицу",
"unitTime": "Единица времени"
},
"group": {
"actions": "Действия",
"cancel": "Отмена",
"confirm": "Подтвердить",
"confirmDelete": "Вы уверены, что хотите удалить?",
"create": "Создать",
"createSubscribeGroup": "Создать новую группу подписок",
"createSuccess": "Успешно создано",
"delete": "Удалить",
"deleteSuccess": "Успешно удалено",
"deleteWarning": "После удаления данные не могут быть восстановлены, пожалуйста, будьте осторожны.",
"description": "Описание",
"edit": "Редактировать",
"editSubscribeGroup": "Редактировать группу подписок",
"form": {
"cancel": "Отмена",
"confirm": "Подтвердить",
"description": "Описание",
"name": "Название"
},
"name": "Название",
"title": "Список групп подписок",
"updateSuccess": "Успешно обновлено",
"updatedAt": "Время обновления"
},
"inventory": "Лимит подписки",
"name": "название",
"quota": "Лимит/раз",
"replacement": "Сбросить цену/раз",
"sell": "Продажа",
"show": "Показать",
"sold": "Количество подписок",
"subscribe": "Подписаться",
"subscribeGroup": "Подписаться на группу",
"tabs": {
"subscribe": "Подписаться",
"subscribeApp": "Конфигурация приложения",
"subscribeConfig": "Конфигурация подписки",
"subscribeGroup": "Группа подписок"
},
"traffic": "трафик",
"unitPrice": "Цена за единицу",
"updateSuccess": "Обновление успешно"
}
+78 -150
View File
@@ -1,161 +1,89 @@
{
"actions": "действия",
"app": {
"appDownloadURL": "URL загрузки приложения",
"appIcon": "Иконка приложения",
"appList": "Список приложений",
"appName": "Название приложения",
"backupDomains": "Список резервных доменов",
"backupDomainsDescription": "Список резервных доменов для разрешения доменов, по одному домену на строку",
"batchDelete": "Удалить пакетно",
"cancel": "Отмена",
"communicationKey": "Ключ связи",
"communicationKeyDescription": "Ключ, используемый для связи с клиентом",
"config": "Конфигурация",
"configApp": "Конфигурация приложения",
"confirm": "Подтвердить",
"confirmDelete": "Подтвердить удаление",
"create": "Создать",
"createApp": "Создать приложение",
"createSuccess": "Успешно создано",
"defaultVersion": "По умолчанию",
"actions": {
"cancel": "Отменить",
"delete": "Удалить",
"deleteWarning": "Это действие необратимо",
"describeDescription": "Используется для описания приложения, отображается в списке приложений",
"description": "Описание",
"downloadLink": "Ссылка для загрузки",
"edit": "Редактировать",
"editApp": "Редактировать приложение",
"encryption": "Метод шифрования",
"encryptionDescription": "Выберите метод шифрования для связи с клиентом. Если выбран, клиент будет использовать этот метод для связи с сервером",
"nameDescription": "Название приложения, отображается в списке приложений",
"platform": "Платформа",
"selectApp": "Выбрать приложение",
"selectAppDescription": "Выберите приложение для настройки, все параметры будут применены к выбранному приложению",
"startupPicture": "Стартовое изображение",
"startupPictureDescription": "Стартовое изображение, поддерживает сетевые и локальные изображения. Для сетевых изображений введите полный URL изображения",
"startupPicturePreview": "Предварительный просмотр стартового изображения",
"startupPictureSkip": "Время пропуска стартового изображения",
"startupPictureSkipDescription": "Время отображения стартового изображения в секундах, введите 0, чтобы не отображать",
"subscriptionProtocol": "Протокол подписки",
"updateSuccess": "Успешно обновлено",
"version": "Версия"
"save": "Сохранить",
"saveTemplate": "Сохранить Шаблон"
},
"cancel": "Отмена",
"config": {
"singleSubscriptionMode": "Режим единой подписки",
"singleSubscriptionModeDescription": "Когда включено, все пользовательские подписки будут преобразованы в баланс",
"subscriptionDomain": "Домен подписки",
"subscriptionDomainDescription": "Используется для подписки; оставьте пустым, чтобы использовать домен сайта",
"description": "Управление настройками системы подписки",
"restrictUserAgent": "Ограничение User-Agent",
"restrictUserAgentDescription": "Включить ограничения доступа на основе User-Agent",
"singleSubscriptionMode": "Режим Единой Подписки",
"singleSubscriptionModeDescription": "Ограничить пользователей одной активной подпиской. Существующие подписки не затрагиваются",
"subscriptionDomain": "Домен Подписки",
"subscriptionDomainDescription": "Пользовательский домен для ссылок на подписку",
"subscriptionDomainPlaceholder": "Введите домен подписки, по одному на строку",
"subscriptionPath": "Путь подписки",
"subscriptionPathDescription": "Используется для подписки; обязательно перезапустите систему после изменения для оптимальной производительности",
"subscriptionPathPlaceholder": "Введите",
"updateSuccess": "Успешно обновлено",
"wildcardResolution": "Разрешение подстановочных знаков",
"wildcardResolutionDescription": "Используется для подписки"
"subscriptionPath": "Путь Подписки",
"subscriptionPathDescription": "Пользовательский путь для конечных точек подписки (лучшее выполнение после перезапуска системы)",
"subscriptionPathPlaceholder": "Введите путь подписки",
"title": "Настройки Подписки",
"updateError": "Ошибка обновления",
"updateSuccess": "Настройки успешно обновлены",
"userAgentWhitelist": "Белый список User-Agent",
"userAgentWhitelistDescription": "Разрешенные User-Agent для доступа к подписке, по одному на строку. Встроенные шаблоны автоматически включаются в белый список",
"userAgentWhitelistPlaceholder": "Введите разрешенные User-Agent, по одному на строку",
"wildcardResolution": "Разрешение Подстановочных Знаков",
"wildcardResolutionDescription": "Включить разрешение подстановочных доменов для подписок"
},
"confirm": "Подтвердить",
"confirmDelete": "Вы уверены, что хотите удалить?",
"copy": "Копировать",
"copySuccess": "Успешно скопировано",
"create": "Создать",
"createSubscribe": "Создать подписку",
"createSuccess": "Создание успешно",
"delete": "Удалить",
"deleteSuccess": "Удаление успешно",
"deleteWarning": "После удаления данные не могут быть восстановлены, пожалуйста, действуйте осторожно.",
"deviceLimit": "Количество устройств/шт",
"edit": "редактировать",
"editSubscribe": "Редактировать подписку",
"form": {
"Day": "День",
"Hour": "Час",
"Minute": "Минута",
"Month": "Месяц",
"NoLimit": "Без ограничений",
"Year": "Год",
"annualReset": "Ежегодный Сброс",
"basic": "Основной",
"cancel": "Отмена",
"confirm": "Подтвердить",
"deductionRatio": "Автоматическая/Ручная Конфигурация Вычетов",
"deductionRatioDescription": "Используется для вычетов. По умолчанию система использует алгоритм автоматического расчета. Когда предоставляется ручное соотношение, система рассчитывает пропорции на основе времени и трафика, обеспечивая, чтобы сумма составляла 100%.",
"description": "Описание",
"deviceLimit": "Ограничение устройств",
"discount": "Скидка",
"discountDescription": "Установить скидку на основе цены за единицу",
"discountMonths": "месяцев",
"discountPercent": "Процент скидки",
"discount_price": "Цена со скидкой",
"duration": "Продолжительность (месяцы)",
"groupId": "Группа подписки",
"inventory": "Лимит подписки",
"monthlyReset": "Ежемесячный Сброс",
"name": "Название",
"noLimit": "Без ограничений",
"noReset": "Без Сброса",
"pricing": "Цены",
"purchaseWithDiscount": "Разрешить Вычет",
"purchaseWithDiscountDescription": "Включить или отключить функцию отписки. После активации система выполнит обработку вычетов в соответствии с настроенными правилами и пропорциями, а оставшаяся сумма будет возвращена на баланс",
"quota": "Лимит покупки",
"renewalReset": "Сброс при Обновлении",
"renewalResetDescription": "Сброс цикла при обновлении",
"replacement": "Цена замены (за раз)",
"resetCycle": "Цикл Сброса",
"resetOn1st": "Сброс 1-го числа",
"selectResetCycle": "Пожалуйста, выберите цикл сброса",
"selectSubscribeGroup": "Пожалуйста, выберите группу подписки",
"selectUnitTime": "Пожалуйста, выберите единицу времени",
"server": "Сервер",
"serverGroup": "Группа серверов",
"servers": "Серверы",
"speedLimit": "Ограничение скорости",
"traffic": "Трафик",
"unitPrice": "Цена за единицу",
"unitTime": "Единица времени"
"description": "Настройка параметров подписки и шаблонов клиентов",
"messages": {
"noClients": "Нет Шаблонов Клиентов",
"noClientsDescription": "Шаблоны клиентов еще не настроены. Добавьте свой первый шаблон, чтобы начать."
},
"group": {
"actions": "Действия",
"cancel": "Отмена",
"confirm": "Подтвердить",
"confirmDelete": "Вы уверены, что хотите удалить?",
"create": "Создать",
"createSubscribeGroup": "Создать новую группу подписок",
"createSuccess": "Успешно создано",
"delete": "Удалить",
"deleteSuccess": "Успешно удалено",
"deleteWarning": "После удаления данные не могут быть восстановлены, пожалуйста, будьте осторожны.",
"description": "Описание",
"edit": "Редактировать",
"editSubscribeGroup": "Редактировать группу подписок",
"form": {
"cancel": "Отмена",
"confirm": "Подтвердить",
"description": "Описание",
"name": "Название"
"protocol": {
"clients": {
"clash": {
"features": "Большая экосистема, обширные правила, активное сообщество"
},
"egern": {
"features": "Современный клиент для iOS, отличная производительность"
},
"hiddify": {
"features": "Мультиплатформенный, обширные протоколы, дружелюбный к новичкам"
},
"loon": {
"features": "Расширенный клиент для iOS, богатые правила, красивый интерфейс"
},
"netch": {
"features": "Прокси-клиент, ориентированный на игры"
},
"quantumult": {
"features": "Расширенный клиент для iOS, гибкие правила, богатые скрипты"
},
"shadowrocket": {
"features": "Классический клиент для iOS, гибкая конфигурация"
},
"singbox": {
"features": "Последнее ядро, официальный GUI, поддержка нескольких платформ"
},
"stash": {
"features": "Современный мобильный интерфейс, обширные протоколы"
},
"surfboard": {
"features": "Бесплатный, активная разработка, современный интерфейс"
},
"surge": {
"features": "Премиум инструмент для iOS/Mac, мощные функции"
},
"v2box": {
"features": "Удобный клиент V2Ray"
},
"v2rayn": {
"features": "Популярный клиент для Windows, богатый функциями"
},
"v2rayng": {
"features": "Популярный клиент для Android, легковесный"
}
},
"name": "Название",
"title": "Список групп подписок",
"updateSuccess": "Успешно обновлено",
"updatedAt": "Время обновления"
"description": "Управление шаблонами конфигурации подписки для прокси-клиентов",
"features": "Ключевые Особенности",
"platforms": "Платформы",
"subscribeTemplate": "Конфигурация Шаблона Подписки",
"templateContent": "Содержимое Шаблона",
"templatePlaceholder": "Введите шаблон конфигурации клиента...",
"title": "Шаблоны Подписки Клиентов"
},
"inventory": "Лимит подписки",
"name": "название",
"quota": "Лимит/раз",
"replacement": "Сбросить цену/раз",
"sell": "Продажа",
"show": "Показать",
"sold": "Количество подписок",
"subscribe": "Подписаться",
"subscribeGroup": "Подписаться на группу",
"tabs": {
"subscribe": "Подписаться",
"subscribeApp": "Конфигурация приложения",
"subscribeConfig": "Конфигурация подписки",
"subscribeGroup": "Группа подписок"
},
"traffic": "трафик",
"unitPrice": "Цена за единицу",
"updateSuccess": "Обновление успешно"
"title": "Управление Подписками"
}