Parcourir la source

docs(settings): clarify Sub Port/Sub Domain double as subscription-link fallback (#5721)

* docs(settings): clarify Sub Port/Sub Domain double as subscription-link fallback

subPort/subDomain are documented purely as the subscription service's own
listen address, but when "Reverse Proxy URI" is empty, GetDefaultSettings
silently reuses them (with the admin API request's own Host header as the
domain fallback) to build the subscription link/QR shown in the panel.
Behind a reverse proxy where the sub service listens on an internal port
and is exposed externally on a different port/domain, this produces a
broken link even though "Reverse Proxy URI" already solves it - nothing
in the UI text pointed to it. Clarify all locales.

* docs(settings): fix wording nits from review (punctuation, CJK parens, es-ES field name)

- en-US/id-ID/pt-BR/tr-TR/uk-UA/ar-EG: add terminating punctuation before
  the appended sentence so it doesn't run on directly after the closing
  parenthesis.
- zh-CN/zh-TW/ja-JP: restore full-width CJK parentheses around the
  pre-existing parenthetical, matching the rest of each file.
- es-ES: subURIDesc referenced "Dominio/Puerto de escucha", but the
  actual field labels in this locale are "Dominio de Escucha" and
  "Puerto de Suscripción".

---------

Co-authored-by: Volov <[email protected]>
Volov Vyacheslav il y a 17 heures
Parent
commit
6e0067fca3

+ 3 - 3
internal/web/translation/ar-EG.json

@@ -1206,7 +1206,7 @@
       "subListen": "IP الاستماع",
       "subListenDesc": "عنوان IP لخدمة الاشتراك. (سيبه فاضي عشان يستمع على كل الـ IPs)",
       "subPort": "بورت الاستماع",
-      "subPortDesc": "رقم البورت لخدمة الاشتراك. (لازم يكون بورت فاضي)",
+      "subPortDesc": "رقم البورت لخدمة الاشتراك. (لازم يكون بورت فاضي). كمان بيتحسب منه رابط الاشتراك/الـ QR اللي بيظهر في اللوحة لو حقل «مسار البروكسي العكسي» تحت فاضي — لو الاشتراك بيتفتح من ورا بروكسي عكسي على بورت مختلف، املا «مسار البروكسي العكسي» بدل كده.",
       "subCertPath": "مسار المفتاح العام",
       "subCertPathDesc": "مسار ملف المفتاح العام لخدمة الاشتراك. (يبدأ بـ '/')",
       "subKeyPath": "مسار المفتاح الخاص",
@@ -1214,13 +1214,13 @@
       "subPath": "مسار URI",
       "subPathDesc": "مسار URI لخدمة الاشتراك. (يبدأ بـ '/' وبينتهي بـ '/')",
       "subDomain": "دومين الاستماع",
-      "subDomainDesc": "اسم الدومين لخدمة الاشتراك. (سيبه فاضي عشان يستمع على كل الدومينات والـ IPs)",
+      "subDomainDesc": "اسم الدومين لخدمة الاشتراك. (سيبه فاضي عشان يستمع على كل الدومينات والـ IPs). كمان بيتستخدم كدومين افتراضي لرابط الاشتراك اللي بيظهر لو حقل «مسار البروكسي العكسي» فاضي — املا «مسار البروكسي العكسي» لو اللوحة والاشتراك بيتفتحوا من دومينات مختلفة (زي لما يكونوا ورا بروكسي عكسي).",
       "subUpdates": "فترات التحديث",
       "subUpdatesDesc": "فترات تحديث رابط الاشتراك في تطبيقات العملاء. (الوحدة: ساعة)",
       "subEncrypt": "تشفير",
       "subEncryptDesc": "المحتوى اللي هيترجع من خدمة الاشتراك هيكون مشفر بـ Base64.",
       "subURI": "مسار البروكسي العكسي",
-      "subURIDesc": "مسار URI لرابط الاشتراك عشان تستخدمه ورا البروكسي.",
+      "subURIDesc": "الرابط الأساسي الكامل (scheme://domain[:port]/path/) لرابط الاشتراك وكود الـQR، بيتستخدم بدل دومين الاستماع/بورت الاستماع. املا الحقل ده لو الاشتراك بيتفتح من ورا بروكسي عكسي أو على دومين/بورت مختلف عن اللي فوق.",
       "externalTrafficInformEnable": "تنبيه الترافيك الخارجي",
       "externalTrafficInformEnableDesc": "إخطار واجهة API خارجية بكل تحديث لحركة المرور.",
       "externalTrafficInformURI": "مسار تنبيه الترافيك الخارجي",

+ 3 - 3
internal/web/translation/en-US.json

@@ -1324,7 +1324,7 @@
       "subListen": "Listen IP",
       "subListenDesc": "The IP address for the subscription service. (leave blank to listen on all IPs)",
       "subPort": "Listen Port",
-      "subPortDesc": "The port number for the subscription service. (must be an unused port)",
+      "subPortDesc": "The port number for the subscription service. (must be an unused port). Also used to build the subscription link/QR shown in the panel when \"Reverse Proxy URI\" below is empty — if the subscription is reached through a reverse proxy on a different port, set \"Reverse Proxy URI\" instead.",
       "subCertPath": "Public Key Path",
       "subCertPathDesc": "The public key file path for the subscription service. (begins with ‘/‘)",
       "subKeyPath": "Private Key Path",
@@ -1332,13 +1332,13 @@
       "subPath": "URI Path",
       "subPathDesc": "The URI path for the subscription service. (begins with ‘/‘ and concludes with ‘/‘)",
       "subDomain": "Listen Domain",
-      "subDomainDesc": "The domain name for the subscription service. (leave blank to listen on all domains and IPs)",
+      "subDomainDesc": "The domain name for the subscription service. (leave blank to listen on all domains and IPs). Also used as the fallback domain for the displayed subscription link when \"Reverse Proxy URI\" is empty — set \"Reverse Proxy URI\" if the panel and the subscription are reached through different domains (e.g. behind a reverse proxy).",
       "subUpdates": "Update Intervals",
       "subUpdatesDesc": "The update intervals of the subscription URL in the client apps. (unit: hour)",
       "subEncrypt": "Encode",
       "subEncryptDesc": "The returned content of subscription service will be Base64 encoded.",
       "subURI": "Reverse Proxy URI",
-      "subURIDesc": "The URI path of the subscription URL for use behind proxies.",
+      "subURIDesc": "The full base URL (scheme://domain[:port]/path/) for the subscription link and QR code, used instead of Listen Domain/Listen Port. Set this whenever the subscription is reached through a reverse proxy or a domain/port different from the ones above.",
       "externalTrafficInformEnable": "External Traffic Inform",
       "externalTrafficInformEnableDesc": "Inform external API on every traffic update.",
       "externalTrafficInformURI": "External Traffic Inform URI",

+ 3 - 3
internal/web/translation/es-ES.json

@@ -1206,7 +1206,7 @@
       "subListen": "Listening IP",
       "subListenDesc": "Dejar en blanco por defecto para monitorear todas las IPs.",
       "subPort": "Puerto de Suscripción",
-      "subPortDesc": "El número de puerto para el servicio de suscripción debe estar sin usar en el servidor.",
+      "subPortDesc": "El número de puerto para el servicio de suscripción debe estar sin usar en el servidor. También se usa para construir el enlace/QR de suscripción mostrado en el panel cuando «URI de proxy inverso» está vacío — si la suscripción se accede a través de un proxy inverso en otro puerto, configure «URI de proxy inverso» en su lugar.",
       "subCertPath": "Ruta del Archivo de Clave Pública del Certificado de Suscripción",
       "subCertPathDesc": "Complete con una ruta absoluta que comience con '/'",
       "subKeyPath": "Ruta del Archivo de Clave Privada del Certificado de Suscripción",
@@ -1214,13 +1214,13 @@
       "subPath": "Ruta URI",
       "subPathDesc": "Debe empezar con '/' y terminar con '/'",
       "subDomain": "Dominio de Escucha",
-      "subDomainDesc": "Dejar en blanco por defecto para monitorear todos los dominios e IPs.",
+      "subDomainDesc": "Dejar en blanco por defecto para monitorear todos los dominios e IPs. También se usa como dominio de reserva para el enlace de suscripción mostrado cuando «URI de proxy inverso» está vacío — configure «URI de proxy inverso» si el panel y la suscripción se acceden por dominios diferentes (por ejemplo, detrás de un proxy inverso).",
       "subUpdates": "Intervalos de Actualización de Suscripción",
       "subUpdatesDesc": "Horas de intervalo entre actualizaciones en la aplicación del cliente.",
       "subEncrypt": "Codificar",
       "subEncryptDesc": "Encriptar las configuraciones devueltas en la suscripción.",
       "subURI": "URI de proxy inverso",
-      "subURIDesc": "Cambiar el URI base de la URL de suscripción para usar detrás de los servidores proxy",
+      "subURIDesc": "La URL base completa (scheme://dominio[:puerto]/ruta/) para el enlace de suscripción y el código QR, usada en lugar de Dominio de Escucha/Puerto de Suscripción. Configúrela cuando la suscripción se acceda a través de un proxy inverso o un dominio/puerto distinto a los anteriores.",
       "externalTrafficInformEnable": "Informe de tráfico externo",
       "externalTrafficInformEnableDesc": "Informar a una API externa en cada actualización de tráfico.",
       "externalTrafficInformURI": "URI de información de tráfico externo",

+ 3 - 3
internal/web/translation/fa-IR.json

@@ -1208,7 +1208,7 @@
       "subListen": "آدرس آی‌پی",
       "subListenDesc": "آدرس آی‌پی برای سرویس سابسکریپشن. برای گوش دادن به‌تمام آی‌پی‌ها خالی‌بگذارید",
       "subPort": "پورت",
-      "subPortDesc": "شماره پورت برای سرویس سابسکریپشن. باید پورت استفاده نشده‌باشد",
+      "subPortDesc": "شماره پورت برای سرویس سابسکریپشن. باید پورت استفاده‌نشده‌باشد. همچنین وقتی «مسیر پراکسی معکوس» خالی باشد، برای ساخت لینک/QR سابسکریپشن نمایش‌داده‌شده در پنل استفاده می‌شود — اگر سابسکریپشن از پشت یک پراکسی معکوس روی پورت دیگری در دسترس است، به جای این، «مسیر پراکسی معکوس» را پر کنید.",
       "subCertPath": "مسیر کلید عمومی",
       "subCertPathDesc": "مسیر فایل کلیدعمومی برای سرویس سابیکریپشن. با '/' شروع‌می‌شود",
       "subKeyPath": "مسیر کلید خصوصی",
@@ -1216,13 +1216,13 @@
       "subPath": "مسیر URI",
       "subPathDesc": "برای سرویس سابسکریپشن. با '/' شروع‌ و با '/' خاتمه‌ می‌یابد URI مسیر",
       "subDomain": "نام دامنه",
-      "subDomainDesc": "آدرس دامنه برای سرویس سابسکریپشن. برای گوش دادن به تمام دامنه‌ها و آی‌پی‌ها خالی‌بگذارید‌",
+      "subDomainDesc": "آدرس دامنه برای سرویس سابسکریپشن. برای گوش دادن به تمام دامنه‌ها و آی‌پی‌ها خالی‌بگذارید. همچنین وقتی «مسیر پراکسی معکوس» خالی باشد، به عنوان دامنه پیشفرض لینک سابسکریپشن نمایش‌داده‌شده استفاده می‌شود — اگر پنل و سابسکریپشن از دامنه‌های متفاوتی در دسترس هستند (مثلاً پشت یک پراکسی معکوس)، «مسیر پراکسی معکوس» را پر کنید.",
       "subUpdates": "فاصله بروزرسانی‌ سابسکریپشن",
       "subUpdatesDesc": "(فاصله مابین بروزرسانی در برنامه‌های کاربری. (واحد: ساعت",
       "subEncrypt": "انکود",
       "subEncryptDesc": "کدگذاری خواهدشد Base64 محتوای برگشتی سرویس سابسکریپشن برپایه",
       "subURI": "پروکسی معکوس URI مسیر",
-      "subURIDesc": "سابسکریپشن را برای استفاده در پشت پراکسی‌ها تغییر می‌دهد URI مسیر",
+      "subURIDesc": "آدرس پایه کامل (scheme://domain[:port]/path/) برای لینک سابسکریپشن و کد QR، به جای نام دامنه/پورت استفاده می‌شود. هر وقت سابسکریپشن از پشت یک پراکسی معکوس یا روی دامنه/پورت متفاوتی نسبت به موارد بالا در دسترس است، این را پر کنید.",
       "externalTrafficInformEnable": "اطلاع رسانی خارجی مصرف ترافیک",
       "externalTrafficInformEnableDesc": "به API خارجی در هر به‌روزرسانی ترافیک اطلاع بده.",
       "externalTrafficInformURI": "لینک اطلاع رسانی خارجی مصرف ترافیک",

+ 3 - 3
internal/web/translation/id-ID.json

@@ -1206,7 +1206,7 @@
       "subListen": "IP Pendengar",
       "subListenDesc": "Alamat IP untuk layanan langganan. (biarkan kosong untuk mendengarkan semua IP)",
       "subPort": "Port Pendengar",
-      "subPortDesc": "Nomor port untuk layanan langganan. (harus menjadi port yang tidak digunakan)",
+      "subPortDesc": "Nomor port untuk layanan langganan. (harus menjadi port yang tidak digunakan). Juga digunakan untuk membangun tautan/QR langganan yang ditampilkan di panel ketika \"URI Proxy Terbalik\" di bawah kosong — jika langganan diakses melalui reverse proxy pada port yang berbeda, atur \"URI Proxy Terbalik\" sebagai gantinya.",
       "subCertPath": "Path Kunci Publik",
       "subCertPathDesc": "Path berkas kunci publik untuk layanan langganan. (dimulai dengan ‘/‘)",
       "subKeyPath": "Path Kunci Privat",
@@ -1214,13 +1214,13 @@
       "subPath": "Path URI",
       "subPathDesc": "URI path untuk layanan langganan. (dimulai dengan ‘/‘ dan diakhiri dengan ‘/‘)",
       "subDomain": "Domain Pendengar",
-      "subDomainDesc": "Nama domain untuk layanan langganan. (biarkan kosong untuk mendengarkan semua domain dan IP)",
+      "subDomainDesc": "Nama domain untuk layanan langganan. (biarkan kosong untuk mendengarkan semua domain dan IP). Juga digunakan sebagai domain cadangan untuk tautan langganan yang ditampilkan ketika \"URI Proxy Terbalik\" kosong — atur \"URI Proxy Terbalik\" jika panel dan langganan diakses melalui domain yang berbeda (misalnya di belakang reverse proxy).",
       "subUpdates": "Interval Pembaruan",
       "subUpdatesDesc": "Interval pembaruan URL langganan dalam aplikasi klien. (unit: jam)",
       "subEncrypt": "Encode",
       "subEncryptDesc": "Konten yang dikembalikan dari layanan langganan akan dienkripsi Base64.",
       "subURI": "URI Proxy Terbalik",
-      "subURIDesc": "Path URI dari URL langganan untuk digunakan di belakang proxy.",
+      "subURIDesc": "URL dasar lengkap (scheme://domain[:port]/path/) untuk tautan langganan dan kode QR, digunakan sebagai pengganti Domain/Port Pendengar. Atur ini kapan pun langganan diakses melalui reverse proxy atau domain/port yang berbeda dari yang di atas.",
       "externalTrafficInformEnable": "Informasikan API eksternal pada setiap pembaruan lalu lintas.",
       "externalTrafficInformEnableDesc": "Beritahu API eksternal setiap kali ada pembaruan trafik.",
       "externalTrafficInformURI": "Lalu Lintas Eksternal Menginformasikan URI",

+ 3 - 3
internal/web/translation/ja-JP.json

@@ -1206,7 +1206,7 @@
       "subListen": "監視IP",
       "subListenDesc": "サブスクリプションサービスが監視するIPアドレス(空白にするとすべてのIPを監視)",
       "subPort": "監視ポート",
-      "subPortDesc": "サブスクリプションサービスが監視するポート番号(使用されていないポートである必要があります)",
+      "subPortDesc": "サブスクリプションサービスが監視するポート番号(使用されていないポートである必要があります)。「リバースプロキシURI」が空の場合、パネルに表示されるサブスクリプションリンク/QRコードの生成にも使われます — サブスクリプションが別のポートのリバースプロキシ経由でアクセスされる場合は、代わりに「リバースプロキシURI」を設定してください。",
       "subCertPath": "公開鍵パス",
       "subCertPathDesc": "サブスクリプションサービスで使用する公開鍵ファイルのパス('/'で始まる)",
       "subKeyPath": "秘密鍵パス",
@@ -1214,13 +1214,13 @@
       "subPath": "URI パス",
       "subPathDesc": "サブスクリプションサービスで使用するURIパス('/'で始まり、'/'で終わる)",
       "subDomain": "監視ドメイン",
-      "subDomainDesc": "サブスクリプションサービスが監視するドメイン(空白にするとすべてのドメインとIPを監視)",
+      "subDomainDesc": "サブスクリプションサービスが監視するドメイン(空白にするとすべてのドメインとIPを監視)。「リバースプロキシURI」が空の場合、表示されるサブスクリプションリンクのフォールバックドメインとしても使われます — パネルとサブスクリプションが異なるドメイン(例: リバースプロキシの背後)でアクセスされる場合は「リバースプロキシURI」を設定してください。",
       "subUpdates": "更新間隔",
       "subUpdatesDesc": "クライアントアプリケーションでサブスクリプションURLの更新間隔(単位:時間)",
       "subEncrypt": "エンコード",
       "subEncryptDesc": "サブスクリプションサービスが返す内容をBase64エンコードする",
       "subURI": "リバースプロキシURI",
-      "subURIDesc": "プロキシ後ろのサブスクリプションURLのURIパスに使用する",
+      "subURIDesc": "サブスクリプションリンクとQRコードに使われる完全なベースURL(scheme://domain[:port]/path/)で、監視ドメイン/監視ポートの代わりに使用されます。サブスクリプションがリバースプロキシ経由、または上記と異なるドメイン/ポートでアクセスされる場合に設定してください。",
       "externalTrafficInformEnable": "外部トラフィック情報",
       "externalTrafficInformEnableDesc": "トラフィック更新ごとに外部 API に通知。",
       "externalTrafficInformURI": "外部トラフィック通知 URI",

+ 3 - 3
internal/web/translation/pt-BR.json

@@ -1206,7 +1206,7 @@
       "subListen": "IP de Escuta",
       "subListenDesc": "O endereço IP para o serviço de assinatura. (deixe em branco para escutar em todos os IPs)",
       "subPort": "Porta de Escuta",
-      "subPortDesc": "O número da porta para o serviço de assinatura. (deve ser uma porta não usada)",
+      "subPortDesc": "O número da porta para o serviço de assinatura. (deve ser uma porta não usada). Também é usada para construir o link/QR de assinatura exibido no painel quando \"URI de Proxy Reverso\" abaixo estiver vazio — se a assinatura for acessada por um proxy reverso em outra porta, configure \"URI de Proxy Reverso\" em vez disso.",
       "subCertPath": "Caminho da Chave Pública",
       "subCertPathDesc": "O caminho do arquivo de chave pública para o serviço de assinatura. (começa com ‘/‘)",
       "subKeyPath": "Caminho da Chave Privada",
@@ -1214,13 +1214,13 @@
       "subPath": "Caminho URI",
       "subPathDesc": "O caminho URI para o serviço de assinatura. (começa com ‘/‘ e termina com ‘/‘)",
       "subDomain": "Domínio de Escuta",
-      "subDomainDesc": "O nome de domínio para o serviço de assinatura. (deixe em branco para escutar em todos os domínios e IPs)",
+      "subDomainDesc": "O nome de domínio para o serviço de assinatura. (deixe em branco para escutar em todos os domínios e IPs). Também é usado como domínio de fallback para o link de assinatura exibido quando \"URI de Proxy Reverso\" estiver vazio — configure \"URI de Proxy Reverso\" se o painel e a assinatura forem acessados por domínios diferentes (por exemplo, atrás de um proxy reverso).",
       "subUpdates": "Intervalos de Atualização",
       "subUpdatesDesc": "Os intervalos de atualização da URL de assinatura nos aplicativos de cliente. (unidade: hora)",
       "subEncrypt": "Codificar",
       "subEncryptDesc": "O conteúdo retornado pelo serviço de assinatura será codificado em Base64.",
       "subURI": "URI de Proxy Reverso",
-      "subURIDesc": "O caminho URI da URL de assinatura para uso por trás de proxies.",
+      "subURIDesc": "A URL base completa (scheme://dominio[:porta]/caminho/) para o link de assinatura e o código QR, usada em vez de Domínio/Porta de Escuta. Configure isso sempre que a assinatura for acessada por um proxy reverso ou um domínio/porta diferente dos acima.",
       "externalTrafficInformEnable": "Informações de tráfego externo",
       "externalTrafficInformEnableDesc": "Informar API externa a cada atualização de tráfego.",
       "externalTrafficInformURI": "URI de informação de tráfego externo",

+ 3 - 3
internal/web/translation/ru-RU.json

@@ -1206,7 +1206,7 @@
       "subListen": "Прослушивание IP",
       "subListenDesc": "Оставьте пустым по умолчанию, чтобы отслеживать все IP-адреса",
       "subPort": "Порт подписки",
-      "subPortDesc": "Номер порта для обслуживания службы подписки не должен использоваться на сервере",
+      "subPortDesc": "Номер порта для обслуживания службы подписки не должен использоваться на сервере. Также используется для построения ссылки подписки в панели, если поле «URI обратного прокси» ниже пустое — если подписка доступна через reverse-proxy на другом порту, укажите «URI обратного прокси».",
       "subCertPath": "Путь к файлу публичного ключа сертификата подписки",
       "subCertPathDesc": "Введите полный путь, начинающийся с '/'",
       "subKeyPath": "Путь к файлу приватного ключа сертификата подписки",
@@ -1214,13 +1214,13 @@
       "subPath": "URI-путь",
       "subPathDesc": "Должен начинаться с '/' и заканчиваться на '/'",
       "subDomain": "Домен прослушивания",
-      "subDomainDesc": "Оставьте пустым по умолчанию, чтобы слушать все домены и IP-адреса",
+      "subDomainDesc": "Оставьте пустым по умолчанию, чтобы слушать все домены и IP-адреса. Также используется как домен по умолчанию для отображаемой ссылки подписки, если поле «URI обратного прокси» пустое — заполните «URI обратного прокси», если панель и подписка доступны на разных доменах (например, за reverse-proxy).",
       "subUpdates": "Интервалы обновления подписки",
       "subUpdatesDesc": "Интервал между обновлениями в клиентском приложении (в часах)",
       "subEncrypt": "Кодировать",
       "subEncryptDesc": "Шифровать возвращенные конфиги в подписке",
       "subURI": "URI обратного прокси",
-      "subURIDesc": "Изменить базовый URI URL-адреса подписки для использования за прокси-серверами",
+      "subURIDesc": "Полный базовый URL (schema://домен[:порт]/путь/) для ссылки подписки и QR-кода вместо «Домена прослушивания»/«Порта подписки». Заполните, если подписка доступна через reverse-proxy или на другом домене/порту.",
       "externalTrafficInformEnable": "Информация о внешнем трафике",
       "externalTrafficInformEnableDesc": "Уведомлять внешний API при каждом обновлении трафика.",
       "externalTrafficInformURI": "URI информации о внешнем трафике",

+ 3 - 3
internal/web/translation/tr-TR.json

@@ -1206,7 +1206,7 @@
       "subListen": "Dinleme IP",
       "subListenDesc": "Abonelik hizmeti için IP adresi. (tüm IP'leri dinlemek için boş bırakın)",
       "subPort": "Dinleme Portu",
-      "subPortDesc": "Abonelik hizmeti için port numarası. (kullanılmayan bir port olmalıdır)",
+      "subPortDesc": "Abonelik hizmeti için port numarası. (kullanılmayan bir port olmalıdır). Ayrıca, aşağıdaki \"Ters Proxy URI\" boşsa panelde gösterilen abonelik bağlantısı/QR kodunu oluşturmak için de kullanılır — abonelik farklı bir portta ters proxy üzerinden erişiliyorsa bunun yerine \"Ters Proxy URI\"yi ayarlayın.",
       "subCertPath": "Genel Anahtar Yolu",
       "subCertPathDesc": "Abonelik hizmeti için genel anahtar dosya yolu. ('/' ile başlar)",
       "subKeyPath": "Özel Anahtar Yolu",
@@ -1214,13 +1214,13 @@
       "subPath": "URI Yolu",
       "subPathDesc": "Abonelik hizmeti için URI yolu. ('/' ile başlar ve '/' ile biter)",
       "subDomain": "Dinleme Alan Adı",
-      "subDomainDesc": "Abonelik hizmeti için alan adı. (tüm alan adlarını ve IP'leri dinlemek için boş bırakın)",
+      "subDomainDesc": "Abonelik hizmeti için alan adı. (tüm alan adlarını ve IP'leri dinlemek için boş bırakın). Ayrıca, \"Ters Proxy URI\" boşsa gösterilen abonelik bağlantısı için yedek alan adı olarak da kullanılır — panel ve abonelik farklı alan adları üzerinden erişiliyorsa (örneğin bir ters proxy arkasında) \"Ters Proxy URI\"yi ayarlayın.",
       "subUpdates": "Güncelleme Aralıkları",
       "subUpdatesDesc": "İstemci uygulamalarındaki abonelik URL'sinin güncellenme aralığı. (birim: saat)",
       "subEncrypt": "Kodla",
       "subEncryptDesc": "Abonelik hizmetinin döndürülen içeriğini Base64 ile şifreler.",
       "subURI": "Ters Proxy URI",
-      "subURIDesc": "Proxy arkasında kullanılacak abonelik URL'sinin URI yolu.",
+      "subURIDesc": "Abonelik bağlantısı ve QR kodu için Dinleme Alan Adı/Dinleme Portu yerine kullanılan tam temel URL (scheme://alanadi[:port]/yol/). Abonelik bir ters proxy üzerinden veya yukarıdakilerden farklı bir alan adı/port üzerinden erişildiğinde bunu ayarlayın.",
       "externalTrafficInformEnable": "Harici Trafik Bilgisi",
       "externalTrafficInformEnableDesc": "Her trafik güncellemesinde harici API'yi bilgilendirir.",
       "externalTrafficInformURI": "Harici Trafik Bilgisi URI'si",

+ 3 - 3
internal/web/translation/uk-UA.json

@@ -1206,7 +1206,7 @@
       "subListen": "Слухати IP",
       "subListenDesc": "IP-адреса для служби підписки. (залиште порожнім, щоб слухати всі IP-адреси)",
       "subPort": "Слухати порт",
-      "subPortDesc": "Номер порту для служби підписки. (має бути невикористаний порт)",
+      "subPortDesc": "Номер порту для служби підписки. (має бути невикористаний порт). Також використовується для побудови посилання/QR підписки, що показується в панелі, коли поле «URI зворотного проксі» нижче порожнє — якщо підписка доступна через зворотний проксі на іншому порту, вкажіть замість цього «URI зворотного проксі».",
       "subCertPath": "Шлях відкритого ключа",
       "subCertPathDesc": "Шлях до файлу відкритого ключа для служби підписки. (починається з ‘/‘)",
       "subKeyPath": "Шлях приватного ключа",
@@ -1214,13 +1214,13 @@
       "subPath": "URI-шлях",
       "subPathDesc": "Шлях URI для служби підписки. (починається з ‘/‘ і закінчується ‘/‘)",
       "subDomain": "Домен прослуховування",
-      "subDomainDesc": "Ім'я домену для служби підписки. (залиште порожнім, щоб слухати всі домени та IP-адреси)",
+      "subDomainDesc": "Ім'я домену для служби підписки. (залиште порожнім, щоб слухати всі домени та IP-адреси). Також використовується як резервний домен для показаного посилання підписки, коли «URI зворотного проксі» порожнє — вкажіть «URI зворотного проксі», якщо панель і підписка доступні через різні домени (наприклад, за зворотним проксі).",
       "subUpdates": "Інтервали оновлення",
       "subUpdatesDesc": "Інтервали оновлення URL-адреси підписки в клієнтських програмах. (одиниця: година)",
       "subEncrypt": "Кодувати",
       "subEncryptDesc": "Повернений вміст послуги підписки матиме кодування Base64.",
       "subURI": "URI зворотного проксі",
-      "subURIDesc": "URI до URL-адреси підписки для використання за проксі.",
+      "subURIDesc": "Повна базова URL-адреса (scheme://домен[:порт]/шлях/) для посилання підписки та QR-коду, використовується замість Домену/Порту прослуховування. Вкажіть це, якщо підписка доступна через зворотний проксі або на іншому домені/порту, ніж вказано вище.",
       "externalTrafficInformEnable": "Інформація про зовнішній трафік",
       "externalTrafficInformEnableDesc": "Повідомляти зовнішній API про кожне оновлення трафіку.",
       "externalTrafficInformURI": "Інформаційний URI зовнішнього трафіку",

+ 3 - 3
internal/web/translation/vi-VN.json

@@ -1206,7 +1206,7 @@
       "subListen": "Listening IP",
       "subListenDesc": "Mặc định để trống để nghe tất cả các IP",
       "subPort": "Cổng gói đăng ký",
-      "subPortDesc": "Số cổng dịch vụ đăng ký phải chưa được sử dụng trên máy chủ",
+      "subPortDesc": "Số cổng dịch vụ đăng ký phải chưa được sử dụng trên máy chủ. Cũng được dùng để tạo liên kết/QR đăng ký hiển thị trên bảng điều khiển khi \"URI proxy trung gian\" bên dưới để trống — nếu đăng ký được truy cập qua proxy trung gian trên một cổng khác, hãy đặt \"URI proxy trung gian\" thay thế.",
       "subCertPath": "Đường dẫn file chứng chỉ gói đăng ký",
       "subCertPathDesc": "Điền vào đường dẫn đầy đủ (bắt đầu với '/')",
       "subKeyPath": "Đường dẫn file khóa của chứng chỉ gói đăng ký",
@@ -1214,13 +1214,13 @@
       "subPath": "Đường dẫn URI",
       "subPathDesc": "Phải bắt đầu và kết thúc bằng '/'",
       "subDomain": "Tên miền con",
-      "subDomainDesc": "Mặc định để trống để nghe tất cả các tên miền và IP",
+      "subDomainDesc": "Mặc định để trống để nghe tất cả các tên miền và IP. Cũng được dùng làm tên miền dự phòng cho liên kết đăng ký hiển thị khi \"URI proxy trung gian\" để trống — hãy đặt \"URI proxy trung gian\" nếu bảng điều khiển và đăng ký được truy cập qua các tên miền khác nhau (ví dụ: đứng sau proxy trung gian).",
       "subUpdates": "Khoảng thời gian cập nhật gói đăng ký",
       "subUpdatesDesc": "Số giờ giữa các cập nhật trong ứng dụng khách",
       "subEncrypt": "Mã hóa",
       "subEncryptDesc": "Mã hóa các cấu hình được trả về trong gói đăng ký",
       "subURI": "URI proxy trung gian",
-      "subURIDesc": "Thay đổi URI cơ sở của URL gói đăng ký để sử dụng cho proxy trung gian",
+      "subURIDesc": "URL cơ sở đầy đủ (scheme://tênmiền[:cổng]/đường-dẫn/) cho liên kết đăng ký và mã QR, dùng thay cho Tên miền/Cổng gói đăng ký. Hãy đặt giá trị này khi đăng ký được truy cập qua proxy trung gian hoặc một tên miền/cổng khác với các mục trên.",
       "externalTrafficInformEnable": "Thông báo giao thông bên ngoài",
       "externalTrafficInformEnableDesc": "Thông báo API ngoài mỗi khi cập nhật lưu lượng.",
       "externalTrafficInformURI": "URI thông báo lưu lượng truy cập bên ngoài",

+ 3 - 3
internal/web/translation/zh-CN.json

@@ -1206,7 +1206,7 @@
       "subListen": "监听 IP",
       "subListenDesc": "订阅服务监听的 IP 地址(留空表示监听所有 IP)",
       "subPort": "监听端口",
-      "subPortDesc": "订阅服务监听的端口号(必须是未使用的端口)",
+      "subPortDesc": "订阅服务监听的端口号(必须是未使用的端口)。当下方「反向代理 URI」为空时,也会用来生成面板中显示的订阅链接/二维码——如果订阅是通过反向代理的其他端口访问的,请改为设置「反向代理 URI」。",
       "subCertPath": "公钥路径",
       "subCertPathDesc": "订阅服务使用的公钥文件路径(以 '/' 开头)",
       "subKeyPath": "私钥路径",
@@ -1214,13 +1214,13 @@
       "subPath": "URI 路径",
       "subPathDesc": "订阅服务使用的 URI 路径(以 '/' 开头,以 '/' 结尾)",
       "subDomain": "监听域名",
-      "subDomainDesc": "订阅服务监听的域名(留空表示监听所有域名和 IP)",
+      "subDomainDesc": "订阅服务监听的域名(留空表示监听所有域名和 IP)。当「反向代理 URI」为空时,也会作为显示的订阅链接的回退域名——如果面板和订阅通过不同的域名访问(例如位于反向代理之后),请设置「反向代理 URI」。",
       "subUpdates": "更新间隔",
       "subUpdatesDesc": "客户端应用中订阅 URL 的更新间隔(单位:小时)",
       "subEncrypt": "编码",
       "subEncryptDesc": "订阅服务返回的内容将采用 Base64 编码",
       "subURI": "反向代理 URI",
-      "subURIDesc": "用于代理后面的订阅 URL 的 URI 路径",
+      "subURIDesc": "用于订阅链接和二维码的完整基础 URL(scheme://域名[:端口]/路径/),会替代监听域名/监听端口使用。当订阅通过反向代理访问,或使用与上面不同的域名/端口访问时,请设置此项。",
       "externalTrafficInformEnable": "外部交通通知",
       "externalTrafficInformEnableDesc": "每次流量更新时通知外部 API。",
       "externalTrafficInformURI": "外部流量通知 URI",

+ 3 - 3
internal/web/translation/zh-TW.json

@@ -1206,7 +1206,7 @@
       "subListen": "監聽 IP",
       "subListenDesc": "訂閱服務監聽的 IP 地址(留空表示監聽所有 IP)",
       "subPort": "監聽埠",
-      "subPortDesc": "訂閱服務監聽的埠號(必須是未使用的埠)",
+      "subPortDesc": "訂閱服務監聽的埠號(必須是未使用的埠)。當下方「反向代理 URI」為空時,也會用來產生面板中顯示的訂閱連結/QR 碼——如果訂閱是透過反向代理的其他埠存取的,請改為設定「反向代理 URI」。",
       "subCertPath": "公鑰路徑",
       "subCertPathDesc": "訂閱服務使用的公鑰檔案路徑(以 '/' 開頭)",
       "subKeyPath": "私鑰路徑",
@@ -1214,13 +1214,13 @@
       "subPath": "URI 路徑",
       "subPathDesc": "訂閱服務使用的 URI 路徑(以 '/' 開頭,以 '/' 結尾)",
       "subDomain": "監聽域名",
-      "subDomainDesc": "訂閱服務監聽的域名(留空表示監聽所有域名和 IP)",
+      "subDomainDesc": "訂閱服務監聽的域名(留空表示監聽所有域名和 IP)。當「反向代理 URI」為空時,也會作為顯示的訂閱連結的備援域名——如果面板和訂閱透過不同的域名存取(例如位於反向代理之後),請設定「反向代理 URI」。",
       "subUpdates": "更新間隔",
       "subUpdatesDesc": "客戶端應用中訂閱 URL 的更新間隔(單位:小時)",
       "subEncrypt": "編碼",
       "subEncryptDesc": "訂閱服務返回的內容將採用 Base64 編碼",
       "subURI": "反向代理 URI",
-      "subURIDesc": "用於代理後面的訂閱 URL 的 URI 路徑",
+      "subURIDesc": "用於訂閱連結和 QR 碼的完整基礎 URL(scheme://域名[:埠]/路徑/),會取代監聽域名/監聽埠使用。當訂閱透過反向代理存取,或使用與上面不同的域名/埠存取時,請設定此項。",
       "externalTrafficInformEnable": "外部交通通知",
       "externalTrafficInformEnableDesc": "每次流量更新時通知外部 API。",
       "externalTrafficInformURI": "外部流量通知 URI",