feat(happ): add routing editor, optional ad blocking, and LAN bypass preset (#6545)

* feat(happ): make ad blocking optional in routing presets

Add an independent AdBlock toggle for Iran, China, and global presets, applied only when generating routing rules. Update the China preset to Bypass-CN and cover preset behavior and localized controls.

* feat: add visual routing editor with JSON support and localization updates

- Implemented a new modal for editing routing profiles with basic and advanced tabs.
- Added functionality to load, parse, and generate routing profiles in JSON format.
- Enhanced user experience with validation and error handling for JSON input.
- Updated translations for Russian, Turkish, Ukrainian, Vietnamese, Chinese (Simplified and Traditional) to include new routing editor terms.
- Created helper functions for managing routing profiles and generating deep links.
- Added unit tests for routing editor functionalities and JSON handling.

* feat: update routing editor to preserve null lists in profiles and enhance validation messages
This commit is contained in:
NgaiYeanCoi
2026-09-27 04:57:01 +08:00
committed by GitHub
parent 94fa317e76
commit 5e15120cec
22 changed files with 1363 additions and 209 deletions
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "أسماء حزم Android",
"subHappPerAppListDesc": "أسماء حزم تطبيقات Android المراد تضمينها أو استثناؤها، مفصولة بفواصل (مثل org.telegram.messenger).",
"subHappPresetIran": "تجاوز إيران",
"subHappPresetChina": "مباشر للصين",
"subHappPresetAdblock": "حظر الإعلانات (AdBlock)",
"subHappPresetChina": "مباشر للصين (Bypass-CN)",
"subHappIncludeAdblock": "تضمين AdBlock",
"subHappApplyPreset": "تطبيق الإعداد المسبق",
"subHappPresetGlobal": "بروكسي كامل",
"subHappPresetLocal": "بروكسي شامل مع تجاوز الشبكة المحلية",
"subHappPresetOff": "تعطيل التوجيه (happ://routing/off)",
"subHappColorBlue": "أزرق (قياسي / افتراضي)",
"subHappColorGreen": "أخضر (نجاح)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "تجاوز (استثناء التطبيقات المحددة)",
"subHappPresetApplied": "تم تطبيق إعداد Happ المسبق على قواعد التوجيه",
"subHappPresets": "إعدادات التوجيه المسبقة",
"subHappPresetsDesc": "قواعد توجيه مُعدّة مسبقًا ومخصصة لعملاء Happ.",
"subHappPresetsDesc": "اختر إعدادًا مسبقًا أساسيًا وحدد ما إذا كنت تريد حظر الإعلانات، ثم طبّقه لاستبدال قواعد التوجيه الحالية.",
"subHappVisualBuilder": "منشئ القواعد المرئي",
"subHappVisualBuilderDesc": "إنشاء رابط عميق مخصص للتوجيه من قوائم النطاقات وعناوين IP.",
"subHappVisualBuilderDesc": "حمّل ملف تعريف التوجيه الحالي وعدّل قواعده أو JSON بالكامل.",
"subHappEditorBasic": "القواعد الأساسية",
"subHappEditorAdvanced": "المحرر المتقدم",
"subHappEditorListHint": "قاعدة واحدة في كل سطر. تُحفظ حقول ملف التعريف الأخرى.",
"subHappEditorAdvancedHint": "عدّل ملف تعريف JSON بالكامل. تتم مزامنة التغييرات مع علامة تبويب القواعد الأساسية.",
"subHappEditorInvalidJson": "أدخل كائن JSON. يجب أن تكون قوائم التوجيه، إن وُجدت، مصفوفات من السلاسل النصية أو null.",
"subHappEditorLoadInvalid": "القواعد الحالية ليست رابط توجيه Happ صالحًا أو ملف تعريف JSON صالحًا.",
"subHappEditorLoadRemote": "لا يمكن تحميل عناوين URL البعيدة هنا. الصق رابط توجيه Happ أو ملف تعريف JSON أولًا.",
"subHappEditorLoadOff": "التوجيه معطّل. طبّق إعدادًا مسبقًا أو امسح قواعد التوجيه لإنشاء ملف تعريف.",
"subHappEditorNew": "لا توجد قواعد حاليًا. ابدأ بملف تعريف مخصص فارغ.",
"subHappBuildDeeplink": "إنشاء رابط عميق",
"subHappModalTitle": "منشئ قواعد التوجيه المرئي لـ Happ",
"subHappDirectDomains": "نطاقات مباشرة (تجاوز)",
+15 -4
View File
@@ -1690,9 +1690,11 @@
"subHappPerAppList": "Android Package Names",
"subHappPerAppListDesc": "Comma-separated package names of Android applications to include or exclude (e.g. org.telegram.messenger).",
"subHappPresetIran": "Iran Bypass",
"subHappPresetChina": "China Direct",
"subHappPresetAdblock": "AdBlock",
"subHappPresetChina": "China Direct (Bypass-CN)",
"subHappIncludeAdblock": "Include AdBlock",
"subHappApplyPreset": "Apply preset",
"subHappPresetGlobal": "Full Proxy",
"subHappPresetLocal": "Global Bypass Local Network",
"subHappPresetOff": "Disable Routing (happ://routing/off)",
"subHappColorBlue": "Blue (Standard / Default)",
"subHappColorGreen": "Green (Success)",
@@ -1716,9 +1718,18 @@
"subHappPerAppBypass": "Bypass (Exclude Listed Apps)",
"subHappPresetApplied": "Happ preset applied to routing rules",
"subHappPresets": "Routing Presets",
"subHappPresetsDesc": "Pre-configured routing rule presets tailored for Happ clients.",
"subHappPresetsDesc": "Choose a base preset and optional ad blocking, then apply to replace the current routing rules.",
"subHappVisualBuilder": "Visual Rule Generator",
"subHappVisualBuilderDesc": "Create custom routing deeplink from domain and IP lists.",
"subHappVisualBuilderDesc": "Load the current routing profile and edit its rules or full JSON.",
"subHappEditorBasic": "Basic rules",
"subHappEditorAdvanced": "Advanced editor",
"subHappEditorListHint": "One rule per line. Other profile fields are preserved.",
"subHappEditorAdvancedHint": "Edit the complete JSON profile. Changes sync with the basic rules tab.",
"subHappEditorInvalidJson": "Enter a JSON object. Routing lists, when present, must be arrays of strings or null.",
"subHappEditorLoadInvalid": "The current rules are not a valid Happ routing link or JSON profile.",
"subHappEditorLoadRemote": "Remote URLs cannot be loaded here. Paste a Happ routing link or JSON profile first.",
"subHappEditorLoadOff": "Routing is disabled. Apply a preset or clear the routing rules to create a profile.",
"subHappEditorNew": "No current rules. Start with an empty custom profile.",
"subHappBuildDeeplink": "Generate Deeplink",
"subHappModalTitle": "Happ Visual Routing Rule Generator",
"subHappDirectDomains": "Direct Domains (Bypass)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Nombres de paquete de Android",
"subHappPerAppListDesc": "Nombres de paquete de aplicaciones Android separados por comas que se incluirán o excluirán (p. ej. org.telegram.messenger).",
"subHappPresetIran": "Irán: omitir proxy",
"subHappPresetChina": "China: conexión directa",
"subHappPresetAdblock": "AdBlock",
"subHappPresetChina": "China: conexión directa (Bypass-CN)",
"subHappIncludeAdblock": "Incluir AdBlock",
"subHappApplyPreset": "Aplicar preajuste",
"subHappPresetGlobal": "Todo por proxy",
"subHappPresetLocal": "Proxy global con exclusión de la red local",
"subHappPresetOff": "Desactivar enrutamiento (happ://routing/off)",
"subHappColorBlue": "Azul (estándar / predeterminado)",
"subHappColorGreen": "Verde (éxito)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "Omitir (excluir apps de la lista)",
"subHappPresetApplied": "Preajuste de Happ aplicado a las reglas de enrutamiento",
"subHappPresets": "Preajustes de enrutamiento",
"subHappPresetsDesc": "Preajustes de reglas de enrutamiento preconfigurados para clientes Happ.",
"subHappPresetsDesc": "Elige un preajuste base y si deseas bloquear anuncios; luego aplícalo para reemplazar las reglas de enrutamiento actuales.",
"subHappVisualBuilder": "Generador visual de reglas",
"subHappVisualBuilderDesc": "Crear un deeplink de enrutamiento personalizado a partir de listas de dominios e IPs.",
"subHappVisualBuilderDesc": "Carga el perfil de enrutamiento actual y edita sus reglas o el JSON completo.",
"subHappEditorBasic": "Reglas básicas",
"subHappEditorAdvanced": "Editor avanzado",
"subHappEditorListHint": "Una regla por línea. Se conservan los demás campos del perfil.",
"subHappEditorAdvancedHint": "Edita el perfil JSON completo. Los cambios se sincronizan con la pestaña de reglas básicas.",
"subHappEditorInvalidJson": "Introduce un objeto JSON. Las listas de enrutamiento, si existen, deben ser matrices de cadenas de texto o null.",
"subHappEditorLoadInvalid": "Las reglas actuales no son un enlace de enrutamiento de Happ ni un perfil JSON válidos.",
"subHappEditorLoadRemote": "No se pueden cargar URL remotas aquí. Primero pega un enlace de enrutamiento de Happ o un perfil JSON.",
"subHappEditorLoadOff": "El enrutamiento está desactivado. Aplica un preajuste o vacía las reglas de enrutamiento para crear un perfil.",
"subHappEditorNew": "No hay reglas actuales. Empieza con un perfil personalizado vacío.",
"subHappBuildDeeplink": "Generar deeplink",
"subHappModalTitle": "Generador visual de reglas de enrutamiento de Happ",
"subHappDirectDomains": "Dominios directos (sin proxy)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "نام بسته‌های برنامه‌های اندروید",
"subHappPerAppListDesc": "نام بسته برنامه‌های اندروید برای شامل یا مستثنی کردن، جدا شده با کاما (مانند org.telegram.messenger).",
"subHappPresetIran": "دور زدن سایت‌های ایران (Iran Bypass)",
"subHappPresetChina": "دور زدن چین (China Direct)",
"subHappPresetAdblock": "مسدودسازی تبلیغات (AdBlock)",
"subHappPresetChina": "اتصال مستقیم چین (Bypass-CN)",
"subHappIncludeAdblock": "افزودن AdBlock",
"subHappApplyPreset": "اعمال الگو",
"subHappPresetGlobal": "پراکسی کل ترافیک (Global)",
"subHappPresetLocal": "پراکسی سراسری با اتصال مستقیم شبکه محلی",
"subHappPresetOff": "غیرفعال‌سازی روتینگ (happ://routing/off)",
"subHappColorBlue": "آبی (استاندارد / پیش‌فرض)",
"subHappColorGreen": "سبز (موفقیت)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "بای‌پس (مستثنی‌کردن برنامه‌های فهرست‌شده)",
"subHappPresetApplied": "الگوی روتینگ Happ اعمال شد",
"subHappPresets": "الگوهای آماده روتینگ",
"subHappPresetsDesc": "الگوهای آماده و بهینه‌سازی‌شده برای روتینگ در برنامه Happ.",
"subHappPresetsDesc": "یک الگوی پایه انتخاب کنید و در صورت نیاز مسدودسازی تبلیغات را فعال کنید، سپس آن را برای جایگزینی قوانین مسیریابی فعلی اعمال کنید.",
"subHappVisualBuilder": "سازنده بصری قوانین",
"subHappVisualBuilderDesc": "ایجاد آسان دیپ‌لینک روتینگ سفارشی بر اساس دامنه‌ها و آی‌پی‌ها.",
"subHappVisualBuilderDesc": "پروفایل مسیریابی فعلی را بارگیری کنید و قوانین یا کل JSON آن را ویرایش کنید.",
"subHappEditorBasic": "قوانین پایه",
"subHappEditorAdvanced": "ویرایشگر پیشرفته",
"subHappEditorListHint": "در هر خط یک قانون وارد کنید. سایر فیلدهای پروفایل حفظ می‌شوند.",
"subHappEditorAdvancedHint": "کل پروفایل JSON را ویرایش کنید. تغییرات با زبانه قوانین پایه همگام می‌شوند.",
"subHappEditorInvalidJson": "یک شیء JSON وارد کنید. فهرست‌های مسیریابی، در صورت وجود، باید آرایه‌هایی از رشته‌ها یا null باشند.",
"subHappEditorLoadInvalid": "قوانین فعلی، لینک مسیریابی معتبر Happ یا پروفایل معتبر JSON نیستند.",
"subHappEditorLoadRemote": "نشانی‌های راه دور در اینجا قابل بارگیری نیستند. ابتدا یک لینک مسیریابی Happ یا پروفایل JSON جای‌گذاری کنید.",
"subHappEditorLoadOff": "مسیریابی غیرفعال است. برای ساخت پروفایل، یک الگو اعمال کنید یا قوانین مسیریابی را پاک کنید.",
"subHappEditorNew": "در حال حاضر قانونی وجود ندارد. با یک پروفایل سفارشی خالی شروع کنید.",
"subHappBuildDeeplink": "تولید دیپ‌لینک",
"subHappModalTitle": "سازنده بصری قوانین روتینگ Happ",
"subHappDirectDomains": "دامنه‌های مستقیم (Direct)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Nama Paket Android",
"subHappPerAppListDesc": "Nama paket aplikasi Android yang disertakan atau dikecualikan, dipisahkan koma (mis. org.telegram.messenger).",
"subHappPresetIran": "Bypass Iran",
"subHappPresetChina": "Tiongkok Langsung",
"subHappPresetAdblock": "AdBlock",
"subHappPresetChina": "Tiongkok Langsung (Bypass-CN)",
"subHappIncludeAdblock": "Sertakan AdBlock",
"subHappApplyPreset": "Terapkan preset",
"subHappPresetGlobal": "Proxy Penuh",
"subHappPresetLocal": "Proxy Global dengan Pengecualian Jaringan Lokal",
"subHappPresetOff": "Nonaktifkan Routing (happ://routing/off)",
"subHappColorBlue": "Biru (Standar / Bawaan)",
"subHappColorGreen": "Hijau (Sukses)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "Bypass (Kecualikan Aplikasi Terdaftar)",
"subHappPresetApplied": "Preset Happ diterapkan ke aturan routing",
"subHappPresets": "Preset Routing",
"subHappPresetsDesc": "Preset aturan routing siap pakai yang disesuaikan untuk klien Happ.",
"subHappPresetsDesc": "Pilih preset dasar dan opsi pemblokiran iklan, lalu terapkan untuk mengganti aturan routing saat ini.",
"subHappVisualBuilder": "Pembuat Aturan Visual",
"subHappVisualBuilderDesc": "Buat deeplink routing kustom dari daftar domain dan IP.",
"subHappVisualBuilderDesc": "Muat profil routing saat ini dan edit aturannya atau seluruh JSON.",
"subHappEditorBasic": "Aturan dasar",
"subHappEditorAdvanced": "Editor lanjutan",
"subHappEditorListHint": "Satu aturan per baris. Kolom lainnya dalam profil tetap dipertahankan.",
"subHappEditorAdvancedHint": "Edit seluruh profil JSON. Perubahan disinkronkan dengan tab aturan dasar.",
"subHappEditorInvalidJson": "Masukkan objek JSON. Daftar routing, jika ada, harus berupa array string atau null.",
"subHappEditorLoadInvalid": "Aturan saat ini bukan tautan routing Happ atau profil JSON yang valid.",
"subHappEditorLoadRemote": "URL jarak jauh tidak dapat dimuat di sini. Tempel tautan routing Happ atau profil JSON terlebih dahulu.",
"subHappEditorLoadOff": "Routing dinonaktifkan. Terapkan preset atau kosongkan aturan routing untuk membuat profil.",
"subHappEditorNew": "Belum ada aturan. Mulai dengan profil kustom yang kosong.",
"subHappBuildDeeplink": "Buat Deeplink",
"subHappModalTitle": "Pembuat Aturan Routing Visual Happ",
"subHappDirectDomains": "Domain Langsung (Bypass)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Android パッケージ名",
"subHappPerAppListDesc": "対象または除外する Android アプリのパッケージ名をカンマ区切りで指定します (例: org.telegram.messenger)。",
"subHappPresetIran": "イラン向けバイパス",
"subHappPresetChina": "中国向け直接接続",
"subHappPresetAdblock": "AdBlock",
"subHappPresetChina": "中国向け直接接続 (Bypass-CN)",
"subHappIncludeAdblock": "AdBlock を追加",
"subHappApplyPreset": "プリセットを適用",
"subHappPresetGlobal": "フルプロキシ",
"subHappPresetLocal": "ローカルネットワークを除く全通信をプロキシ経由",
"subHappPresetOff": "ルーティングを無効化 (happ://routing/off)",
"subHappColorBlue": "ブルー (標準 / デフォルト)",
"subHappColorGreen": "グリーン (成功)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "バイパス (リストされたアプリを除外)",
"subHappPresetApplied": "Happ プリセットをルーティングルールに適用しました",
"subHappPresets": "ルーティングプリセット",
"subHappPresetsDesc": "Happ クライアント向けに事前設定されたルーティングルールのプリセット。",
"subHappPresetsDesc": "基本プリセットと広告ブロックの有無を選択し、適用して現在のルーティングルールを置き換えます。",
"subHappVisualBuilder": "ビジュアルルールジェネレーター",
"subHappVisualBuilderDesc": "ドメインと IP のリストからカスタムルーティングのディープリンクを作成します。",
"subHappVisualBuilderDesc": "現在のルーティングプロファイルを読み込み、ルールまたは JSON 全体を編集します。",
"subHappEditorBasic": "基本ルール",
"subHappEditorAdvanced": "詳細エディター",
"subHappEditorListHint": "1 行に 1 つのルールを入力します。プロファイルのほかの項目は保持されます。",
"subHappEditorAdvancedHint": "JSON プロファイル全体を編集します。変更は基本ルールタブと同期されます。",
"subHappEditorInvalidJson": "JSON オブジェクトを入力してください。ルーティングリストがある場合は、文字列の配列または null にする必要があります。",
"subHappEditorLoadInvalid": "現在のルールは、有効な Happ ルーティングリンクまたは JSON プロファイルではありません。",
"subHappEditorLoadRemote": "ここではリモート URL を読み込めません。先に Happ ルーティングリンクまたは JSON プロファイルを貼り付けてください。",
"subHappEditorLoadOff": "ルーティングは無効です。プリセットを適用するか、ルーティングルールを空にしてプロファイルを作成してください。",
"subHappEditorNew": "現在のルールはありません。空のカスタムプロファイルから作成を始めます。",
"subHappBuildDeeplink": "ディープリンクを生成",
"subHappModalTitle": "Happ ビジュアルルーティングルールジェネレーター",
"subHappDirectDomains": "直接接続するドメイン (バイパス)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Nomes de pacotes Android",
"subHappPerAppListDesc": "Nomes de pacotes de aplicativos Android separados por vírgula a incluir ou excluir (ex.: org.telegram.messenger).",
"subHappPresetIran": "Irã (desvio)",
"subHappPresetChina": "China (direto)",
"subHappPresetAdblock": "AdBlock",
"subHappPresetChina": "China direto (Bypass-CN)",
"subHappIncludeAdblock": "Incluir AdBlock",
"subHappApplyPreset": "Aplicar predefinição",
"subHappPresetGlobal": "Proxy total",
"subHappPresetLocal": "Proxy global com exceção da rede local",
"subHappPresetOff": "Desativar roteamento (happ://routing/off)",
"subHappColorBlue": "Azul (padrão)",
"subHappColorGreen": "Verde (sucesso)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "Desviar (excluir apps listados)",
"subHappPresetApplied": "Predefinição do Happ aplicada às regras de roteamento",
"subHappPresets": "Predefinições de roteamento",
"subHappPresetsDesc": "Predefinições de regras de roteamento pré-configuradas para clientes Happ.",
"subHappPresetsDesc": "Escolha uma predefinição base e se deseja bloquear anúncios; depois aplique para substituir as regras de roteamento atuais.",
"subHappVisualBuilder": "Gerador visual de regras",
"subHappVisualBuilderDesc": "Crie um deeplink de roteamento personalizado a partir de listas de domínios e IPs.",
"subHappVisualBuilderDesc": "Carregue o perfil de roteamento atual e edite suas regras ou o JSON completo.",
"subHappEditorBasic": "Regras básicas",
"subHappEditorAdvanced": "Editor avançado",
"subHappEditorListHint": "Uma regra por linha. Os demais campos do perfil são preservados.",
"subHappEditorAdvancedHint": "Edite o perfil JSON completo. As alterações são sincronizadas com a aba de regras básicas.",
"subHappEditorInvalidJson": "Insira um objeto JSON. As listas de roteamento, quando presentes, devem ser arrays de strings ou null.",
"subHappEditorLoadInvalid": "As regras atuais não são um link de roteamento do Happ nem um perfil JSON válidos.",
"subHappEditorLoadRemote": "URLs remotas não podem ser carregadas aqui. Primeiro cole um link de roteamento do Happ ou um perfil JSON.",
"subHappEditorLoadOff": "O roteamento está desativado. Aplique uma predefinição ou limpe as regras de roteamento para criar um perfil.",
"subHappEditorNew": "Não há regras atuais. Comece com um perfil personalizado vazio.",
"subHappBuildDeeplink": "Gerar deeplink",
"subHappModalTitle": "Gerador visual de regras de roteamento do Happ",
"subHappDirectDomains": "Domínios diretos (desvio)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Пакеты приложений Android",
"subHappPerAppListDesc": "Имена пакетов Android-приложений для включения или исключения через запятую (например, org.telegram.messenger).",
"subHappPresetIran": "Обход сайтов Ирана (Iran Bypass)",
"subHappPresetChina": "Обход сайтов Китая (China Direct)",
"subHappPresetAdblock": "Блокировка рекламы (AdBlock)",
"subHappPresetChina": "Китай напрямую (Bypass-CN)",
"subHappIncludeAdblock": "Добавить AdBlock",
"subHappApplyPreset": "Применить шаблон",
"subHappPresetGlobal": "Полный прокси (Global)",
"subHappPresetLocal": "Всё через прокси, локальная сеть напрямую",
"subHappPresetOff": "Отключить маршрутизацию (happ://routing/off)",
"subHappColorBlue": "Синий (стандартный / по умолчанию)",
"subHappColorGreen": "Зеленый (успех)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "Обход (исключить выбранные приложения)",
"subHappPresetApplied": "Пресет маршрутизации Happ успешно применен",
"subHappPresets": "Пресеты маршрутизации",
"subHappPresetsDesc": "Готовые конфигурации маршрутизации для клиентов Happ.",
"subHappPresetsDesc": "Выберите базовый шаблон и при необходимости включите блокировку рекламы, затем примените его для замены текущих правил маршрутизации.",
"subHappVisualBuilder": "Визуальный конструктор правил",
"subHappVisualBuilderDesc": "Генератор диплинков маршрутизации на основе списков доменов и IP.",
"subHappVisualBuilderDesc": "Загрузите текущий профиль маршрутизации и отредактируйте его правила или полный JSON.",
"subHappEditorBasic": "Основные правила",
"subHappEditorAdvanced": "Расширенный редактор",
"subHappEditorListHint": "Одно правило на строку. Остальные поля профиля сохраняются.",
"subHappEditorAdvancedHint": "Редактируйте полный JSON-профиль. Изменения синхронизируются с вкладкой основных правил.",
"subHappEditorInvalidJson": "Введите объект JSON. Списки маршрутизации, если они присутствуют, должны быть массивами строк или null.",
"subHappEditorLoadInvalid": "Текущие правила не являются допустимой ссылкой маршрутизации Happ или JSON-профилем.",
"subHappEditorLoadRemote": "Здесь нельзя загрузить удалённые URL. Сначала вставьте ссылку маршрутизации Happ или JSON-профиль.",
"subHappEditorLoadOff": "Маршрутизация отключена. Примените шаблон или очистите правила маршрутизации, чтобы создать профиль.",
"subHappEditorNew": "Текущих правил нет. Начните с пустого пользовательского профиля.",
"subHappBuildDeeplink": "Сгенерировать диплинк",
"subHappModalTitle": "Визуальный конструктор правил маршрутизации Happ",
"subHappDirectDomains": "Прямые домены (Direct)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Android Paket Adları",
"subHappPerAppListDesc": "Dahil edilecek veya hariç tutulacak Android uygulamalarının virgülle ayrılmış paket adları (ör. org.telegram.messenger).",
"subHappPresetIran": "İran'ı Atla",
"subHappPresetChina": "Çin Doğrudan",
"subHappPresetAdblock": "AdBlock",
"subHappPresetChina": "Çin Doğrudan (Bypass-CN)",
"subHappIncludeAdblock": "AdBlock ekle",
"subHappApplyPreset": "Hazır ayarı uygula",
"subHappPresetGlobal": "Tam Proxy",
"subHappPresetLocal": "Yerel Ağ Hariç Tüm Trafik için Proxy",
"subHappPresetOff": "Yönlendirmeyi Devre Dışı Bırak (happ://routing/off)",
"subHappColorBlue": "Mavi (Standart / Varsayılan)",
"subHappColorGreen": "Yeşil (Başarılı)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "Atla (Listelenen Uygulamaları Hariç Tut)",
"subHappPresetApplied": "Happ hazır ayarı yönlendirme kurallarına uygulandı",
"subHappPresets": "Yönlendirme Hazır Ayarları",
"subHappPresetsDesc": "Happ istemcilerine özel, önceden yapılandırılmış yönlendirme kuralı hazır ayarları.",
"subHappPresetsDesc": "Temel bir hazır ayar seçin ve isterseniz reklam engellemeyi etkinleştirin, ardından mevcut yönlendirme kurallarını değiştirmek için uygulayın.",
"subHappVisualBuilder": "Görsel Kural Oluşturucu",
"subHappVisualBuilderDesc": "Alan adı ve IP listelerinden özel yönlendirme derin bağlantısı oluşturur.",
"subHappVisualBuilderDesc": "Mevcut yönlendirme profilini yükleyin ve kurallarını veya JSON içeriğinin tamamını düzenleyin.",
"subHappEditorBasic": "Temel kurallar",
"subHappEditorAdvanced": "Gelişmiş düzenleyici",
"subHappEditorListHint": "Her satıra bir kural yazın. Profilin diğer alanları korunur.",
"subHappEditorAdvancedHint": "JSON profilinin tamamını düzenleyin. Değişiklikler temel kurallar sekmesiyle eşitlenir.",
"subHappEditorInvalidJson": "Bir JSON nesnesi girin. Yönlendirme listeleri varsa metin dizileri veya null olmalıdır.",
"subHappEditorLoadInvalid": "Mevcut kurallar geçerli bir Happ yönlendirme bağlantısı veya JSON profili değil.",
"subHappEditorLoadRemote": "Uzak URL'ler burada yüklenemez. Önce bir Happ yönlendirme bağlantısı veya JSON profili yapıştırın.",
"subHappEditorLoadOff": "Yönlendirme devre dışı. Profil oluşturmak için bir hazır ayar uygulayın veya yönlendirme kurallarını temizleyin.",
"subHappEditorNew": "Mevcut kural yok. Boş bir özel profille başlayın.",
"subHappBuildDeeplink": "Derin Bağlantı Oluştur",
"subHappModalTitle": "Happ Görsel Yönlendirme Kuralı Oluşturucu",
"subHappDirectDomains": "Doğrudan Alan Adları (Atla)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Назви пакетів Android",
"subHappPerAppListDesc": "Назви пакетів програм Android через кому для включення або виключення (напр. org.telegram.messenger).",
"subHappPresetIran": "Обхід для Ірану",
"subHappPresetChina": "Китай напряму",
"subHappPresetAdblock": "AdBlock",
"subHappPresetChina": "Китай напряму (Bypass-CN)",
"subHappIncludeAdblock": "Додати AdBlock",
"subHappApplyPreset": "Застосувати шаблон",
"subHappPresetGlobal": "Усе через проксі",
"subHappPresetLocal": "Усе через проксі, локальна мережа напряму",
"subHappPresetOff": "Вимкнути маршрутизацію (happ://routing/off)",
"subHappColorBlue": "Синій (стандартний / за замовчуванням)",
"subHappColorGreen": "Зелений (успіх)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "Обхід (виключити вказані програми)",
"subHappPresetApplied": "Шаблон Happ застосовано до правил маршрутизації",
"subHappPresets": "Шаблони маршрутизації",
"subHappPresetsDesc": "Готові шаблони правил маршрутизації, адаптовані для клієнтів Happ.",
"subHappPresetsDesc": "Виберіть базовий шаблон і за потреби увімкніть блокування реклами, потім застосуйте його, щоб замінити поточні правила маршрутизації.",
"subHappVisualBuilder": "Візуальний генератор правил",
"subHappVisualBuilderDesc": "Створіть власний діплінк маршрутизації зі списків доменів та IP.",
"subHappVisualBuilderDesc": "Завантажте поточний профіль маршрутизації та відредагуйте його правила або повний JSON.",
"subHappEditorBasic": "Базові правила",
"subHappEditorAdvanced": "Розширений редактор",
"subHappEditorListHint": "Одне правило на рядок. Решта полів профілю зберігається.",
"subHappEditorAdvancedHint": "Редагуйте повний JSON-профіль. Зміни синхронізуються з вкладкою базових правил.",
"subHappEditorInvalidJson": "Введіть об'єкт JSON. Списки маршрутизації, якщо вони є, мають бути масивами рядків або null.",
"subHappEditorLoadInvalid": "Поточні правила не є дійсним посиланням маршрутизації Happ або JSON-профілем.",
"subHappEditorLoadRemote": "Тут неможливо завантажити віддалені URL. Спочатку вставте посилання маршрутизації Happ або JSON-профіль.",
"subHappEditorLoadOff": "Маршрутизацію вимкнено. Застосуйте шаблон або очистьте правила маршрутизації, щоб створити профіль.",
"subHappEditorNew": "Поточних правил немає. Почніть із порожнього власного профілю.",
"subHappBuildDeeplink": "Згенерувати діплінк",
"subHappModalTitle": "Візуальний генератор правил маршрутизації Happ",
"subHappDirectDomains": "Домени напряму (обхід)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Tên gói Android",
"subHappPerAppListDesc": "Tên gói ứng dụng Android cách nhau bằng dấu phẩy để bao gồm hoặc loại trừ (ví dụ org.telegram.messenger).",
"subHappPresetIran": "Bỏ qua Iran",
"subHappPresetChina": "Trực tiếp Trung Quốc",
"subHappPresetAdblock": "AdBlock",
"subHappPresetChina": "Trực tiếp Trung Quốc (Bypass-CN)",
"subHappIncludeAdblock": "Thêm AdBlock",
"subHappApplyPreset": "Áp dụng mẫu",
"subHappPresetGlobal": "Proxy toàn bộ",
"subHappPresetLocal": "Proxy toàn bộ, bỏ qua mạng cục bộ",
"subHappPresetOff": "Tắt định tuyến (happ://routing/off)",
"subHappColorBlue": "Xanh dương (Tiêu chuẩn / Mặc định)",
"subHappColorGreen": "Xanh lá (Thành công)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "Bỏ qua (Loại trừ ứng dụng trong danh sách)",
"subHappPresetApplied": "Đã áp dụng mẫu Happ vào quy tắc định tuyến",
"subHappPresets": "Mẫu định tuyến",
"subHappPresetsDesc": "Các mẫu quy tắc định tuyến cấu hình sẵn dành cho ứng dụng Happ.",
"subHappPresetsDesc": "Chọn mẫu cơ bản và tùy chọn chặn quảng cáo, sau đó áp dụng để thay thế các quy tắc định tuyến hiện tại.",
"subHappVisualBuilder": "Trình tạo quy tắc trực quan",
"subHappVisualBuilderDesc": "Tạo deeplink định tuyến tùy chỉnh từ danh sách tên miền và IP.",
"subHappVisualBuilderDesc": "Tải cấu hình định tuyến hiện tại và chỉnh sửa các quy tắc hoặc toàn bộ JSON.",
"subHappEditorBasic": "Quy tắc cơ bản",
"subHappEditorAdvanced": "Trình chỉnh sửa nâng cao",
"subHappEditorListHint": "Mỗi dòng một quy tắc. Các trường khác của cấu hình được giữ nguyên.",
"subHappEditorAdvancedHint": "Chỉnh sửa toàn bộ cấu hình JSON. Các thay đổi được đồng bộ với thẻ quy tắc cơ bản.",
"subHappEditorInvalidJson": "Nhập một đối tượng JSON. Các danh sách định tuyến, nếu có, phải là mảng chuỗi hoặc null.",
"subHappEditorLoadInvalid": "Các quy tắc hiện tại không phải là liên kết định tuyến Happ hoặc cấu hình JSON hợp lệ.",
"subHappEditorLoadRemote": "Không thể tải URL từ xa tại đây. Hãy dán liên kết định tuyến Happ hoặc cấu hình JSON trước.",
"subHappEditorLoadOff": "Định tuyến đã bị tắt. Áp dụng một mẫu hoặc xóa các quy tắc định tuyến để tạo cấu hình.",
"subHappEditorNew": "Hiện chưa có quy tắc. Bắt đầu với cấu hình tùy chỉnh trống.",
"subHappBuildDeeplink": "Tạo deeplink",
"subHappModalTitle": "Trình tạo quy tắc định tuyến trực quan cho Happ",
"subHappDirectDomains": "Tên miền trực tiếp (bỏ qua)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Android 应用包名列表",
"subHappPerAppListDesc": "以逗号分隔的 Android 应用包名,用于包含或排除(例如 org.telegram.messenger)。",
"subHappPresetIran": "伊朗直连规则 (Iran Bypass)",
"subHappPresetChina": "大陆直连规则 (China Direct)",
"subHappPresetAdblock": "广告拦截规则 (AdBlock)",
"subHappPresetChina": "大陆直连规则 (Bypass-CN)",
"subHappIncludeAdblock": "附加 AdBlock",
"subHappApplyPreset": "应用预设",
"subHappPresetGlobal": "全局代理规则 (Global)",
"subHappPresetLocal": "全局代理,绕过局域网 (Global Bypass Local Network)",
"subHappPresetOff": "禁用路由 (happ://routing/off)",
"subHappColorBlue": "蓝色 (标准 / 默认)",
"subHappColorGreen": "绿色 (成功)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "绕过 (排除列表中的应用)",
"subHappPresetApplied": "Happ 预设规则已应用",
"subHappPresets": "预设路由规则",
"subHappPresetsDesc": "专为 Happ 客户端预设调优的常用分流规则。",
"subHappPresetsDesc": "选择基础预设和是否附加广告拦截,然后应用以替换当前分流规则。",
"subHappVisualBuilder": "可视化规则生成器",
"subHappVisualBuilderDesc": "通过域名与 IP 列表快速生成自定义 Happ 路由 DeepLink。",
"subHappVisualBuilderDesc": "加载当前路由配置,编辑其规则或完整 JSON。",
"subHappEditorBasic": "基础规则",
"subHappEditorAdvanced": "扩展编辑器",
"subHappEditorListHint": "每行一条规则。配置中的其他字段会保留。",
"subHappEditorAdvancedHint": "编辑完整的 JSON 配置。更改会与基础规则选项卡同步。",
"subHappEditorInvalidJson": "请输入 JSON 对象。路由列表字段(如存在)必须为字符串数组或 null。",
"subHappEditorLoadInvalid": "当前规则不是有效的 Happ 路由链接或 JSON 配置。",
"subHappEditorLoadRemote": "此处无法加载远程 URL。请先粘贴 Happ 路由链接或 JSON 配置。",
"subHappEditorLoadOff": "路由已禁用。请应用预设或清空路由规则,以创建配置。",
"subHappEditorNew": "当前没有规则。从空的自定义配置开始。",
"subHappBuildDeeplink": "生成 DeepLink",
"subHappModalTitle": "Happ 路由规则可视化生成器",
"subHappDirectDomains": "直连域名 (Direct)",
+15 -4
View File
@@ -1572,9 +1572,11 @@
"subHappPerAppList": "Android 套件名稱",
"subHappPerAppListDesc": "要納入或排除的 Android 應用程式套件名稱,以逗號分隔(例如 org.telegram.messenger)。",
"subHappPresetIran": "伊朗直連",
"subHappPresetChina": "中國直連",
"subHappPresetAdblock": "廣告封鎖(AdBlock)",
"subHappPresetChina": "中國直連(Bypass-CN)",
"subHappIncludeAdblock": "附加 AdBlock",
"subHappApplyPreset": "套用預設",
"subHappPresetGlobal": "全域代理",
"subHappPresetLocal": "全域代理,略過區域網路 (Global Bypass Local Network)",
"subHappPresetOff": "停用路由(happ://routing/off)",
"subHappColorBlue": "藍色(標準 / 預設)",
"subHappColorGreen": "綠色(成功)",
@@ -1598,9 +1600,18 @@
"subHappPerAppBypass": "繞過(排除清單中的應用程式)",
"subHappPresetApplied": "已將 Happ 範本套用至路由規則",
"subHappPresets": "路由範本",
"subHappPresetsDesc": "為 Happ 用戶端量身打造的預先設定路由規則範本。",
"subHappPresetsDesc": "選擇基礎預設及是否附加廣告封鎖,然後套用以取代目前的分流規則。",
"subHappVisualBuilder": "視覺化規則產生器",
"subHappVisualBuilderDesc": "從網域與 IP 清單建立自訂路由深層連結。",
"subHappVisualBuilderDesc": "載入目前的路由設定檔,編輯其規則或完整 JSON。",
"subHappEditorBasic": "基礎規則",
"subHappEditorAdvanced": "進階編輯器",
"subHappEditorListHint": "每行一條規則。設定檔中的其他欄位會保留。",
"subHappEditorAdvancedHint": "編輯完整的 JSON 設定檔。變更會與基礎規則分頁同步。",
"subHappEditorInvalidJson": "請輸入 JSON 物件。路由清單欄位(若存在)必須為字串陣列或 null。",
"subHappEditorLoadInvalid": "目前的規則不是有效的 Happ 路由連結或 JSON 設定檔。",
"subHappEditorLoadRemote": "此處無法載入遠端 URL。請先貼上 Happ 路由連結或 JSON 設定檔。",
"subHappEditorLoadOff": "路由已停用。請套用預設或清空路由規則,以建立設定檔。",
"subHappEditorNew": "目前沒有規則。從空白的自訂設定檔開始。",
"subHappBuildDeeplink": "產生深層連結",
"subHappModalTitle": "Happ 視覺化路由規則產生器",
"subHappDirectDomains": "直連網域(繞過)",