Issue invite configs as subscription URLs with redeem-based lifetime.
Admin picks inbound once, sets duration in days from Get config, and configures the 3x-ui /sub base URL. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -215,6 +215,20 @@
|
||||
"invite_user_required": "Select a user to store configs under",
|
||||
"invite_password_label": "Password (optional)",
|
||||
"invite_expires_label": "Expires at (optional)",
|
||||
"invite_duration_label": "Config lifetime (days)",
|
||||
"invite_duration_hint": "Starts when the user clicks Get config. 0 = no expiry.",
|
||||
"invite_duration_short": "Lifetime",
|
||||
"invite_duration_starts_hint": "After you get a config it will work for {} day(s)",
|
||||
"invite_config_expires_at": "Config valid until: {}",
|
||||
"invite_inbound_hint": "Choose the VLESS inbound once — all configs from this link use it",
|
||||
"invite_inbound_loading": "Loading inbounds…",
|
||||
"invite_inbound_empty": "No VLESS inbounds found",
|
||||
"invite_inbound_need_xui": "Configure 3x-ui in Settings first",
|
||||
"invite_inbound_required": "Select a VLESS inbound",
|
||||
"invite_sub_url_missing_title": "Subscription URL is not set",
|
||||
"invite_sub_url_missing_hint": "In Settings → 3x-ui set Subscription URL base so invite links issue /sub/… configs.",
|
||||
"invite_sub_tab": "Subscription",
|
||||
"days_short": "d",
|
||||
"invite_clear_expires": "Remove expiration",
|
||||
"invite_note_label": "Note (admin only)",
|
||||
"invite_note_placeholder": "Internal comment",
|
||||
@@ -277,6 +291,8 @@
|
||||
"sync_hint": "Users will be created, disabled, and deleted automatically based on Remnawave data",
|
||||
"xui_url_label": "3x-ui URL",
|
||||
"xui_url_hint": "Include scheme, port and webBasePath if configured (example: https://host:2053/secret)",
|
||||
"xui_sub_url_label": "Subscription URL base",
|
||||
"xui_sub_url_hint": "Public /sub base without trailing slash (example: https://host:2096/sub). Invite configs are issued as subscription links.",
|
||||
"xui_api_token_label": "API Token (preferred)",
|
||||
"xui_api_token_placeholder": "Settings → Security → API Token",
|
||||
"xui_api_token_hint": "If set, username/password login is skipped",
|
||||
|
||||
@@ -213,6 +213,20 @@
|
||||
"invite_user_required": "یک کاربر انتخاب کنید",
|
||||
"invite_password_label": "رمز عبور (اختیاری)",
|
||||
"invite_expires_label": "انقضا (اختیاری)",
|
||||
"invite_duration_label": "مدت کانفیگ (روز)",
|
||||
"invite_duration_hint": "از لحظه کلیک روی دریافت کانفیگ شروع میشود. 0 = بدون انقضا.",
|
||||
"invite_duration_short": "مدت",
|
||||
"invite_duration_starts_hint": "پس از دریافت، کانفیگ {} روز معتبر است",
|
||||
"invite_config_expires_at": "اعتبار تا: {}",
|
||||
"invite_inbound_hint": "یکبار inbound مورد نیاز VLESS را انتخاب کنید",
|
||||
"invite_inbound_loading": "در حال بارگذاری…",
|
||||
"invite_inbound_empty": "inbound VLESS یافت نشد",
|
||||
"invite_inbound_need_xui": "ابتدا 3x-ui را در تنظیمات پیکربندی کنید",
|
||||
"invite_inbound_required": "یک inbound VLESS انتخاب کنید",
|
||||
"invite_sub_url_missing_title": "آدرس اشتراک تنظیم نشده",
|
||||
"invite_sub_url_missing_hint": "در تنظیمات → 3x-ui پایه /sub را وارد کنید.",
|
||||
"invite_sub_tab": "اشتراک",
|
||||
"days_short": "روز",
|
||||
"invite_clear_expires": "حذف تاریخ انقضا",
|
||||
"invite_note_label": "یادداشت (فقط ادمین)",
|
||||
"invite_note_placeholder": "توضیح داخلی",
|
||||
@@ -275,6 +289,8 @@
|
||||
"sync_hint": "کاربران طبق دادههای Remnawave بهطور خودکار مدیریت میشوند",
|
||||
"xui_url_label": "آدرس 3x-ui",
|
||||
"xui_url_hint": "شامل پروتکل، پورت و webBasePath در صورت وجود",
|
||||
"xui_sub_url_label": "آدرس پایه اشتراک",
|
||||
"xui_sub_url_hint": "پایه عمومی /sub بدون اسلش پایانی (مثال: https://host:2096/sub).",
|
||||
"xui_api_token_label": "توکن API (ترجیحی)",
|
||||
"xui_api_token_placeholder": "Settings → Security → API Token",
|
||||
"xui_api_token_hint": "در صورت تنظیم، ورود با نام کاربری/رمز رد میشود",
|
||||
|
||||
@@ -213,6 +213,20 @@
|
||||
"invite_user_required": "Choisissez un utilisateur",
|
||||
"invite_password_label": "Mot de passe (optionnel)",
|
||||
"invite_expires_label": "Expiration (optionnel)",
|
||||
"invite_duration_label": "Durée du config (jours)",
|
||||
"invite_duration_hint": "Commence quand l'utilisateur clique Obtenir. 0 = illimité.",
|
||||
"invite_duration_short": "Durée",
|
||||
"invite_duration_starts_hint": "Après obtention, valable {} jour(s)",
|
||||
"invite_config_expires_at": "Valable jusqu'au : {}",
|
||||
"invite_inbound_hint": "Choisissez l'inbound VLESS une fois",
|
||||
"invite_inbound_loading": "Chargement…",
|
||||
"invite_inbound_empty": "Aucun inbound VLESS",
|
||||
"invite_inbound_need_xui": "Configurez 3x-ui d'abord",
|
||||
"invite_inbound_required": "Sélectionnez un inbound VLESS",
|
||||
"invite_sub_url_missing_title": "URL d'abonnement manquante",
|
||||
"invite_sub_url_missing_hint": "Dans Paramètres → 3x-ui, définissez l'URL de base /sub.",
|
||||
"invite_sub_tab": "Abonnement",
|
||||
"days_short": "j",
|
||||
"invite_clear_expires": "Retirer l'expiration",
|
||||
"invite_note_label": "Note (admin)",
|
||||
"invite_note_placeholder": "Commentaire interne",
|
||||
@@ -275,6 +289,8 @@
|
||||
"sync_hint": "Synchro automatique avec Remnawave",
|
||||
"xui_url_label": "URL 3x-ui",
|
||||
"xui_url_hint": "Inclure le schéma, le port et webBasePath si configuré",
|
||||
"xui_sub_url_label": "URL de base d'abonnement",
|
||||
"xui_sub_url_hint": "Base /sub publique sans slash final (ex: https://host:2096/sub).",
|
||||
"xui_api_token_label": "Jeton API (préféré)",
|
||||
"xui_api_token_placeholder": "Settings → Security → API Token",
|
||||
"xui_api_token_hint": "Si défini, le login/mot de passe est ignoré",
|
||||
|
||||
@@ -215,6 +215,20 @@
|
||||
"invite_user_required": "Выберите пользователя для хранения конфигов",
|
||||
"invite_password_label": "Пароль (опционально)",
|
||||
"invite_expires_label": "Срок действия (опционально)",
|
||||
"invite_duration_label": "Срок конфига (дни)",
|
||||
"invite_duration_hint": "Отсчёт начинается, когда пользователь нажал «Получить конфиг». 0 = без срока.",
|
||||
"invite_duration_short": "Срок",
|
||||
"invite_duration_starts_hint": "После получения конфиг будет действовать {} дн.",
|
||||
"invite_config_expires_at": "Конфиг действует до: {}",
|
||||
"invite_inbound_hint": "Укажите нужный VLESS inbound один раз — все конфиги с этой ссылки пойдут в него",
|
||||
"invite_inbound_loading": "Загрузка inbound…",
|
||||
"invite_inbound_empty": "VLESS inbound не найдены",
|
||||
"invite_inbound_need_xui": "Сначала настройте 3x-ui в Настройках",
|
||||
"invite_inbound_required": "Выберите VLESS inbound",
|
||||
"invite_sub_url_missing_title": "Не задан URL подписки",
|
||||
"invite_sub_url_missing_hint": "В Настройки → 3x-ui укажите «Базовый URL подписки», чтобы ссылки выдавали /sub/… конфиги.",
|
||||
"invite_sub_tab": "Подписка",
|
||||
"days_short": "дн",
|
||||
"invite_clear_expires": "Убрать срок действия",
|
||||
"invite_note_label": "Заметка (только админ)",
|
||||
"invite_note_placeholder": "Внутренний комментарий",
|
||||
@@ -277,6 +291,8 @@
|
||||
"sync_hint": "Пользователи будут создаваться, отключаться и удаляться автоматически на основе данных из Remnawave",
|
||||
"xui_url_label": "URL 3x-ui",
|
||||
"xui_url_hint": "Укажите схему, порт и webBasePath при наличии (пример: https://host:2053/secret)",
|
||||
"xui_sub_url_label": "Базовый URL подписки",
|
||||
"xui_sub_url_hint": "Публичный /sub без слэша в конце (пример: https://host:2096/sub). Конфиги по ссылкам выдаются как subscription URL.",
|
||||
"xui_api_token_label": "API Token (предпочтительно)",
|
||||
"xui_api_token_placeholder": "Settings → Security → API Token",
|
||||
"xui_api_token_hint": "Если задан, вход по логину/паролю не используется",
|
||||
|
||||
@@ -213,6 +213,20 @@
|
||||
"invite_user_required": "请选择用户",
|
||||
"invite_password_label": "密码(可选)",
|
||||
"invite_expires_label": "过期时间(可选)",
|
||||
"invite_duration_label": "配置有效期(天)",
|
||||
"invite_duration_hint": "从用户点击获取配置时开始计时。0 = 不过期。",
|
||||
"invite_duration_short": "有效期",
|
||||
"invite_duration_starts_hint": "获取后配置将有效 {} 天",
|
||||
"invite_config_expires_at": "配置有效至:{}",
|
||||
"invite_inbound_hint": "一次性选择所需的 VLESS 入站",
|
||||
"invite_inbound_loading": "加载入站中…",
|
||||
"invite_inbound_empty": "未找到 VLESS 入站",
|
||||
"invite_inbound_need_xui": "请先在设置中配置 3x-ui",
|
||||
"invite_inbound_required": "请选择 VLESS 入站",
|
||||
"invite_sub_url_missing_title": "未设置订阅 URL",
|
||||
"invite_sub_url_missing_hint": "在 设置 → 3x-ui 中填写订阅基础 URL,以便发放 /sub/… 配置。",
|
||||
"invite_sub_tab": "订阅",
|
||||
"days_short": "天",
|
||||
"invite_clear_expires": "清除过期时间",
|
||||
"invite_note_label": "备注(仅管理员)",
|
||||
"invite_note_placeholder": "内部备注",
|
||||
@@ -275,6 +289,8 @@
|
||||
"sync_hint": "将根据 Remnawave 数据自动创建、禁用和删除用户",
|
||||
"xui_url_label": "3x-ui 地址",
|
||||
"xui_url_hint": "包含协议、端口和 webBasePath(如有)",
|
||||
"xui_sub_url_label": "订阅基础 URL",
|
||||
"xui_sub_url_hint": "公共 /sub 基础地址,末尾不要斜杠(如 https://host:2096/sub)。",
|
||||
"xui_api_token_label": "API Token(推荐)",
|
||||
"xui_api_token_placeholder": "Settings → Security → API Token",
|
||||
"xui_api_token_hint": "若已设置,将跳过用户名/密码登录",
|
||||
|
||||
Reference in New Issue
Block a user