Refactor multi-server configuration UI logic

This commit is contained in:
DHR60 2025-03-29 16:08:53 +08:00
parent dc3200f0a6
commit 2c32da4c95
15 changed files with 818 additions and 709 deletions

View file

@ -1005,32 +1005,11 @@ namespace ServiceLib.Handler
return 0;
}
public static async Task<RetResult> AddCustomServer4Multiple(Config config, List<ProfileItem> selecteds, EMultipleLoad multipleLoad)
public static async Task<RetResult> AddCustomServer4Multiple(Config config, List<ProfileItem> selecteds,ECoreType coreType, EMultipleLoad multipleLoad)
{
var indexId = Utils.GetMd5(Global.CoreMultipleLoadConfigFileName);
var configPath = Utils.GetConfigPath(Global.CoreMultipleLoadConfigFileName);
var coreType = AppHandler.Instance.Config.CoreTypeItem?.FirstOrDefault(it => it.ConfigType == EConfigType.Custom)?.CoreType ?? ECoreType.Xray;
if (multipleLoad == EMultipleLoad.LeastPing && coreType == ECoreType.Xray)
{
var support = selecteds.All(it => it.ConfigType is
EConfigType.VMess or
EConfigType.VLESS or
EConfigType.Trojan or
EConfigType.Shadowsocks or
EConfigType.SOCKS or
EConfigType.HTTP or
EConfigType.WireGuard);
if (!support)
{
coreType = ECoreType.sing_box;
}
}
else if (multipleLoad == EMultipleLoad.RoundRobin)
{
coreType = ECoreType.Xray;
}
var result = await CoreConfigHandler.GenerateClientMultipleLoadConfig(config, configPath, selecteds, coreType, multipleLoad);
if (result.Success != true)
{
@ -1044,7 +1023,14 @@ namespace ServiceLib.Handler
var profileItem = await AppHandler.Instance.GetProfileItem(indexId) ?? new();
profileItem.IndexId = indexId;
profileItem.Remarks = coreType == ECoreType.sing_box ? ResUI.menuSetDefaultMultipleServer : ResUI.menuSetDefaultLoadBalanceServer;
profileItem.Remarks = multipleLoad switch
{
EMultipleLoad.Random => ResUI.menuSetDefaultMultipleServerXrayRandom,
EMultipleLoad.RoundRobin => ResUI.menuSetDefaultMultipleServerXrayRoundRobin,
EMultipleLoad.LeastPing => ResUI.menuSetDefaultMultipleServerXrayLeastPing,
EMultipleLoad.LeastLoad => ResUI.menuSetDefaultMultipleServerXrayLeastLoad,
_ => ResUI.menuSetDefaultMultipleServerXrayRoundRobin,
};
profileItem.Address = Global.CoreMultipleLoadConfigFileName;
profileItem.ConfigType = EConfigType.Custom;
profileItem.CoreType = coreType;

View file

@ -140,20 +140,13 @@ namespace ServiceLib.Handler
public static async Task<RetResult> GenerateClientMultipleLoadConfig(Config config, string fileName, List<ProfileItem> selecteds, ECoreType coreType, EMultipleLoad multipleLoad)
{
var result = new RetResult();
if (multipleLoad == EMultipleLoad.RoundRobin)
{
result = await new CoreConfigV2rayService(config).GenerateClientMultipleRoundRobinConfig(selecteds);
}
else
{
if (coreType == ECoreType.sing_box)
{
result = await new CoreConfigSingboxService(config).GenerateClientMultipleLoadConfig(selecteds);
}
else if (coreType == ECoreType.Xray)
else
{
result = await new CoreConfigV2rayService(config).GenerateClientMultipleLeastPingConfig(selecteds);
}
result = await new CoreConfigV2rayService(config).GenerateClientMultipleLoadConfig(selecteds, multipleLoad);
}
if (result.Success != true)

View file

@ -1474,20 +1474,56 @@ namespace ServiceLib.Resx {
}
/// <summary>
/// 查找类似 Multi-server load balancing 的本地化字符串。
/// 查找类似 Multi-Server lowest latency sing-box 的本地化字符串。
/// </summary>
public static string menuSetDefaultLoadBalanceServer {
public static string menuSetDefaultMultipleServerSingBoxLeastPing {
get {
return ResourceManager.GetString("menuSetDefaultLoadBalanceServer", resourceCulture);
return ResourceManager.GetString("menuSetDefaultMultipleServerSingBoxLeastPing", resourceCulture);
}
}
/// <summary>
/// 查找类似 Multi-Server lowest latency 的本地化字符串。
/// 查找类似 Multi-Server Xray 的本地化字符串。
/// </summary>
public static string menuSetDefaultMultipleServer {
public static string menuSetDefaultMultipleServerXray {
get {
return ResourceManager.GetString("menuSetDefaultMultipleServer", resourceCulture);
return ResourceManager.GetString("menuSetDefaultMultipleServerXray", resourceCulture);
}
}
/// <summary>
/// 查找类似 Multi-Server LeastLoad 的本地化字符串。
/// </summary>
public static string menuSetDefaultMultipleServerXrayLeastLoad {
get {
return ResourceManager.GetString("menuSetDefaultMultipleServerXrayLeastLoad", resourceCulture);
}
}
/// <summary>
/// 查找类似 Multi-Server LeastPing 的本地化字符串。
/// </summary>
public static string menuSetDefaultMultipleServerXrayLeastPing {
get {
return ResourceManager.GetString("menuSetDefaultMultipleServerXrayLeastPing", resourceCulture);
}
}
/// <summary>
/// 查找类似 Multi-Server Random 的本地化字符串。
/// </summary>
public static string menuSetDefaultMultipleServerXrayRandom {
get {
return ResourceManager.GetString("menuSetDefaultMultipleServerXrayRandom", resourceCulture);
}
}
/// <summary>
/// 查找类似 Multi-Server RoundRobin 的本地化字符串。
/// </summary>
public static string menuSetDefaultMultipleServerXrayRoundRobin {
get {
return ResourceManager.GetString("menuSetDefaultMultipleServerXrayRoundRobin", resourceCulture);
}
}

View file

@ -936,21 +936,219 @@
<data name="TbSettingsTunMode" xml:space="preserve">
<value>تنظیمات TunMode</value>
</data>
<data name="menuMoveToGroup" xml:space="preserve">
<value>انتقال به گروه</value>
</data>
<data name="TbSettingsEnableDragDropSort" xml:space="preserve">
<value>فعال کردن مرتب‌سازی سرورها با کشیدن و رها کردن (نیاز به راه‌اندازی مجدد)</value>
</data>
<data name="TbAutoRefresh" xml:space="preserve">
<value>بازخوانی خودکار</value>
</data>
<data name="SpeedtestingSkip" xml:space="preserve">
<value>رد شدن از آزمون</value>
</data>
<data name="menuEditServer" xml:space="preserve">
<value>ویرایش سرور (Ctrl+D)</value>
</data>
<data name="TbSettingsDoubleClick2Activate" xml:space="preserve">
<value>دوبار کلیک کردن سرور باعث فعال شدن آن می شود</value>
</data>
<data name="SpeedtestingCompleted" xml:space="preserve">
<value>تست تکمیل شد</value>
</data>
<data name="TbSettingsDefFingerprint" xml:space="preserve">
<value>اثر انگشت tls پیش فرض</value>
</data>
<data name="TbSettingsDefUserAgent" xml:space="preserve">
<value>User-Agent</value>
</data>
<data name="TbSettingsDefUserAgentTips" xml:space="preserve">
<value>این پارامتر فقط برای tcp/http و ws معتبر است</value>
</data>
<data name="TbSettingsCurrentFontFamily" xml:space="preserve">
<value>FontFamily (نیاز به راه اندازی مجدد)</value>
</data>
<data name="TbSettingsCurrentFontFamilyTip" xml:space="preserve">
<value>فایل TTF/TTC فونت را در دایرکتوری guiFonts کپی کنید. پنجره تنظیمات را دوباره باز کنید</value>
</data>
<data name="TbSettingsSocksPortTip" xml:space="preserve">
<value>پورت Pac = +3; پورت Xray API = +4; پورت mihomo API = +5;</value>
</data>
<data name="TbSettingsStartBootTip" xml:space="preserve">
<value>این را با امتیازات ادمین تنظیم کنید، پس از راه اندازی، امتیازات مدیر را دریافت کنید</value>
</data>
<data name="TbSettingsFontSize" xml:space="preserve">
<value>اندازه فونت</value>
</data>
<data name="TbSettingsSpeedTestTimeout" xml:space="preserve">
<value>یمقدار تاخیر تست سرعت منفرد</value>
</data>
<data name="TbSettingsSpeedTestUrl" xml:space="preserve">
<value>/آدرس اینترنتی SpeedTest</value>
</data>
<data name="menuMoveTo" xml:space="preserve">
<value>بالا و پایین حرکت کنید</value>
</data>
<data name="TbPublicKey" xml:space="preserve">
<value>PublicKey</value>
</data>
<data name="TbShortId" xml:space="preserve">
<value>ShortId</value>
</data>
<data name="TbSpiderX" xml:space="preserve">
<value>SpiderX</value>
</data>
<data name="TbSettingsEnableHWA" xml:space="preserve">
<value>فعال‌ سازی شتاب‌ دهنده سخت‌ افزاری (نیاز به راه‌اندازی مجدد)</value>
</data>
<data name="SpeedtestingWait" xml:space="preserve">
<value>در انتظار آزمایش (برای پایان دادن به ESC فشار دهید)...</value>
</data>
<data name="TipDisplayLog" xml:space="preserve">
<value>لطفاً در صورت قطع غیرعادی آن را خاموش کنید</value>
</data>
<data name="MsgSkipSubscriptionUpdate" xml:space="preserve">
<value>به روز رسانی ها فعال نیستند، از این اشتراک رد شوید</value>
</data>
<data name="menuRebootAsAdmin" xml:space="preserve">
<value>به عنوان مدیر راه اندازی مجدد</value>
</data>
<data name="LvMoreUrl" xml:space="preserve">
<value>نشانی‌های وب بیشتر که با کاما از هم جدا شده‌اند. تبدیل اشتراک نامعتبر خواهد بود</value>
</data>
<data name="SpeedDisplayText" xml:space="preserve">
<value>{0} : {1}/s↑ | {2}/s↓</value>
</data>
<data name="LvAutoUpdateInterval" xml:space="preserve">
<value>فاصله به روز رسانی خودکار (دقیقه)</value>
</data>
<data name="TbSettingsLogEnabledToFile" xml:space="preserve">
<value>فعال کردن ورود به فایل</value>
</data>
<data name="LvConvertTarget" xml:space="preserve">
<value>تبدیل نوع هدف</value>
</data>
<data name="LvConvertTargetTip" xml:space="preserve">
<value>اگر نیازی به تبدیل نیست، لطفاً خالی بگذارید</value>
</data>
<data name="menuDNSSetting" xml:space="preserve">
<value>تنظیمات DNS</value>
</data>
<data name="TbSettingsCoreDnsSingbox" xml:space="preserve">
<value>تنظیمات DNS sing-box</value>
</data>
<data name="TbDnsSingboxObjectDoc" xml:space="preserve">
<value>لطفا ساختار DNS را پر کنید، برای مشاهده سند کلیک کنید</value>
</data>
<data name="TbSettingDnsImportDefConfig" xml:space="preserve">
<value>برای وارد کردن تنظیمات پیش‌فرض DNS کلیک کنید</value>
</data>
<data name="TbdomainStrategy4Singbox" xml:space="preserve">
<value>استراتژی دامنه sing-box</value>
</data>
<data name="TbSettingsMux4SboxProtocol" xml:space="preserve">
<value>پروتکل sing-box Mux</value>
</data>
<data name="TbRoutingRuleProcess" xml:space="preserve">
<value>نام کامل فرانید (حالت Tun)</value>
</data>
<data name="TbRoutingRuleIP" xml:space="preserve">
<value>IP or IP CIDR</value>
</data>
<data name="TbRoutingRuleDomain" xml:space="preserve">
<value>دامنه</value>
</data>
<data name="menuAddHysteria2Server" xml:space="preserve">
<value>Add [Hysteria2] server</value>
</data>
<data name="TbSettingsHysteriaBandwidth" xml:space="preserve">
<value>حداکتر پهنای باند هیستریا (آپلود/دانلود)</value>
</data>
<data name="TbSettingsUseSystemHosts" xml:space="preserve">
<value>استفاده کردن از System Hosts</value>
</data>
<data name="menuAddTuicServer" xml:space="preserve">
<value>افزودن سرور [TUIC]</value>
</data>
<data name="TbHeaderType8" xml:space="preserve">
<value>کنترل تراکم</value>
</data>
<data name="LvPrevProfile" xml:space="preserve">
<value>نام مستعار پروکسی قبلی</value>
</data>
<data name="LvNextProfile" xml:space="preserve">
<value>نام مستعار پروکسی بعدی</value>
</data>
<data name="LvPrevProfileTip" xml:space="preserve">
<value>لطفاً مطمئن شوید که ملاحظات وجود دارند و منحصر به فرد هستند</value>
</data>
<data name="TbSettingsEnableExInbound" xml:space="preserve">
<value>فعال سازی additional Inbound</value>
</data>
<data name="TbSettingsEnableIPv6Address" xml:space="preserve">
<value>فعال سازی آدرس IPv6</value>
</data>
<data name="menuAddWireguardServer" xml:space="preserve">
<value>افزودن سرور [WireGuard]</value>
</data>
<data name="TbPrivateKey" xml:space="preserve">
<value>کلید خصوصی</value>
</data>
<data name="TbReserved" xml:space="preserve">
<value>Reserved (2,3,4)</value>
</data>
<data name="TbLocalAddress" xml:space="preserve">
<value>آدرس (IPv4, IPv6)</value>
</data>
<data name="TbPath7" xml:space="preserve">
<value>پسورد obfs</value>
</data>
<data name="TbRuleMatchingTips" xml:space="preserve">
<value>(Domain or IP or ProcName) and Port and Protocol and InboundTag =&gt; OutboundTag</value>
</data>
<data name="TbAutoScrollToEnd" xml:space="preserve">
<value>خودکار ScrollToEnd</value>
</data>
<data name="TbSettingsSpeedPingTestUrl" xml:space="preserve">
<value>آدرس اینترنتی تست پینگ سرعت</value>
</data>
<data name="TbSettingsEnableUpdateSubOnlyRemarksExist" xml:space="preserve">
<value>اشتراک در حال به‌روزرسانی، فقط مشخص کنید که ملاحظاتی آیا وجود دارد!</value>
</data>
<data name="SpeedtestingStop" xml:space="preserve">
<value>پایان تست...</value>
</data>
<data name="TransportRequestHostTip5" xml:space="preserve">
<value>*grpc Authority</value>
</data>
<data name="menuAddHttpServer" xml:space="preserve">
<value>افزودن سرور [HTTP]</value>
</data>
<data name="TbSettingsEnableFragmentTips" xml:space="preserve">
<value>از Xray استفاده کنید و حالت non-Tun را فعال کنید، که با پراکسی قبلی گروه در تضاد است</value>
</data>
<data name="TbSettingsEnableFragment" xml:space="preserve">
<value>فعال کردن فرگمنت</value>
</data>
<data name="TbSettingsEnableCacheFile4Sbox" xml:space="preserve">
<value>فعال کردن کش فایل مجموعه قوانین برای sing-box</value>
</data>
<data name="LvCustomRulesetPath4Singbox" xml:space="preserve">
<value>سفارش سازی مجموعه قوانین sing box</value>
</data>
<data name="NeedRebootTips" xml:space="preserve">
<value>عملکرد موفقیت آمیز بود، روی منوی تنظیمات کلیک کنید تا برنامه راه اندازی مجدد شود.</value>
</data>
<data name="menuOpenTheFileLocation" xml:space="preserve">
<value>باز کردن محل ذخیره سازی</value>
</data>
<data name="TbSorting" xml:space="preserve">
<value>مرتب سازی</value>
</data>
<data name="TbSortingChain" xml:space="preserve">
<value>Chain</value>
</data>
<data name="TbSortingDefault" xml:space="preserve">
<value>پیش فرض</value>
</data>
@ -963,12 +1161,21 @@
<data name="TbSortingDownTraffic" xml:space="preserve">
<value>ترافیک دانلود</value>
</data>
<data name="TbSortingHost" xml:space="preserve">
<value>هاست</value>
</data>
<data name="TbSortingName" xml:space="preserve">
<value>نام</value>
</data>
<data name="TbSortingNetwork" xml:space="preserve">
<value>شبکه</value>
</data>
<data name="TbSortingTime" xml:space="preserve">
<value>زمان</value>
</data>
<data name="TbSortingType" xml:space="preserve">
<value>نوع</value>
</data>
<data name="TbSortingUpSpeed" xml:space="preserve">
<value>سرعت اپلود</value>
</data>
@ -1008,27 +1215,18 @@
<data name="menuProxiesDelaytestPart" xml:space="preserve">
<value>تست تاخیر قسمت گره (نقطه اتصال)</value>
</data>
<data name="menuProxiesReload" xml:space="preserve">
<value>تازه سازی پروکسی ها</value>
</data>
<data name="menuProxiesSelectActivity" xml:space="preserve">
<value>انتخاب گره فعال (Enter)</value>
</data>
<data name="menuRemoteBackup" xml:space="preserve">
<value>پشتیبان گیری از راه دور (WebDAV)</value>
</data>
<data name="menuRemoteRestore" xml:space="preserve">
<value>بازیابی از راه دور (WebDAV)</value>
</data>
<data name="TbSettingsDomainStrategy4Out" xml:space="preserve">
<value>استراتژی دامنه پیش فرض برای خروجی</value>
</data>
<data name="menuSetDefaultMultipleServer" xml:space="preserve">
<value>کمترین تأخیر چند سروره</value>
</data>
<data name="TbSettingsMainGirdOrientation" xml:space="preserve">
<value>جهت چیدمان اصلی (نیاز به راه اندازی مجدد)</value>
</data>
<data name="menuSetDefaultLoadBalanceServer" xml:space="preserve">
<value>تعادل بار چند سروره</value>
</data>
<data name="TbSettingsDomainDNSAddress" xml:space="preserve">
<value>آدرس DNS خروجی</value>
</data>
@ -1056,6 +1254,12 @@
<data name="menuLocalRestore" xml:space="preserve">
<value>بازیابی از محلی</value>
</data>
<data name="menuRemoteBackup" xml:space="preserve">
<value>پشتیبان گیری از راه دور (WebDAV)</value>
</data>
<data name="menuRemoteRestore" xml:space="preserve">
<value>بازیابی از راه دور (WebDAV)</value>
</data>
<data name="menuLocalBackupAndRestore" xml:space="preserve">
<value>محلی</value>
</data>
@ -1131,216 +1335,6 @@
<data name="LvMemo" xml:space="preserve">
<value>یادداشت ملاحظات</value>
</data>
<data name="TbSettingsLogEnabledToFile" xml:space="preserve">
<value>فعال کردن ورود به فایل</value>
</data>
<data name="MsgSkipSubscriptionUpdate" xml:space="preserve">
<value>به روز رسانی ها فعال نیستند، از این اشتراک رد شوید</value>
</data>
<data name="menuRebootAsAdmin" xml:space="preserve">
<value>به عنوان مدیر راه اندازی مجدد</value>
</data>
<data name="LvMoreUrl" xml:space="preserve">
<value>نشانی‌های وب بیشتر که با کاما از هم جدا شده‌اند. تبدیل اشتراک نامعتبر خواهد بود</value>
</data>
<data name="SpeedDisplayText" xml:space="preserve">
<value>{0} : {1}/s↑ | {2}/s↓</value>
</data>
<data name="LvAutoUpdateInterval" xml:space="preserve">
<value>فاصله به روز رسانی خودکار (دقیقه)</value>
</data>
<data name="LvConvertTarget" xml:space="preserve">
<value>تبدیل نوع هدف</value>
</data>
<data name="LvConvertTargetTip" xml:space="preserve">
<value>اگر نیازی به تبدیل نیست، لطفاً خالی بگذارید</value>
</data>
<data name="TipDisplayLog" xml:space="preserve">
<value>لطفاً در صورت قطع غیرعادی آن را خاموش کنید</value>
</data>
<data name="menuDNSSetting" xml:space="preserve">
<value>تنظیمات DNS</value>
</data>
<data name="TbDnsSingboxObjectDoc" xml:space="preserve">
<value>لطفا ساختار DNS را پر کنید، برای مشاهده سند کلیک کنید</value>
</data>
<data name="TbSettingDnsImportDefConfig" xml:space="preserve">
<value>برای وارد کردن تنظیمات پیش‌فرض DNS کلیک کنید</value>
</data>
<data name="TbdomainStrategy4Singbox" xml:space="preserve">
<value>استراتژی دامنه sing-box</value>
</data>
<data name="TbSettingsMux4SboxProtocol" xml:space="preserve">
<value>پروتکل sing-box Mux</value>
</data>
<data name="TbRoutingRuleProcess" xml:space="preserve">
<value>نام کامل فرانید (حالت Tun)</value>
</data>
<data name="TbRoutingRuleIP" xml:space="preserve">
<value>IP or IP CIDR</value>
</data>
<data name="TbRoutingRuleDomain" xml:space="preserve">
<value>دامنه</value>
</data>
<data name="TbSettingsCoreDnsSingbox" xml:space="preserve">
<value>تنظیمات DNS sing-box</value>
</data>
<data name="SpeedtestingWait" xml:space="preserve">
<value>در انتظار آزمایش (برای پایان دادن به ESC فشار دهید)...</value>
</data>
<data name="TbSpiderX" xml:space="preserve">
<value>SpiderX</value>
</data>
<data name="TbShortId" xml:space="preserve">
<value>ShortId</value>
</data>
<data name="menuMoveToGroup" xml:space="preserve">
<value>انتقال به گروه</value>
</data>
<data name="TbSettingsEnableDragDropSort" xml:space="preserve">
<value>فعال کردن مرتب‌سازی سرورها با کشیدن و رها کردن (نیاز به راه‌اندازی مجدد)</value>
</data>
<data name="TbAutoRefresh" xml:space="preserve">
<value>بازخوانی خودکار</value>
</data>
<data name="SpeedtestingSkip" xml:space="preserve">
<value>رد شدن از آزمون</value>
</data>
<data name="menuEditServer" xml:space="preserve">
<value>ویرایش سرور (Ctrl+D)</value>
</data>
<data name="TbSettingsDoubleClick2Activate" xml:space="preserve">
<value>دوبار کلیک کردن سرور باعث فعال شدن آن می شود</value>
</data>
<data name="SpeedtestingCompleted" xml:space="preserve">
<value>تست تکمیل شد</value>
</data>
<data name="TbSettingsDefFingerprint" xml:space="preserve">
<value>اثر انگشت tls پیش فرض</value>
</data>
<data name="TbSettingsCurrentFontFamily" xml:space="preserve">
<value>FontFamily (نیاز به راه اندازی مجدد)</value>
</data>
<data name="TbSettingsCurrentFontFamilyTip" xml:space="preserve">
<value>فایل TTF/TTC فونت را در دایرکتوری guiFonts کپی کنید. پنجره تنظیمات را دوباره باز کنید</value>
</data>
<data name="TbSettingsSocksPortTip" xml:space="preserve">
<value>پورت Pac = +3; پورت Xray API = +4; پورت mihomo API = +5;</value>
</data>
<data name="TbSettingsStartBootTip" xml:space="preserve">
<value>این را با امتیازات ادمین تنظیم کنید، پس از راه اندازی، امتیازات مدیر را دریافت کنید</value>
</data>
<data name="TbSettingsFontSize" xml:space="preserve">
<value>اندازه فونت</value>
</data>
<data name="TbSettingsSpeedTestTimeout" xml:space="preserve">
<value>یمقدار تاخیر تست سرعت منفرد</value>
</data>
<data name="TbSettingsSpeedTestUrl" xml:space="preserve">
<value>/آدرس اینترنتی SpeedTest</value>
</data>
<data name="menuMoveTo" xml:space="preserve">
<value>بالا و پایین حرکت کنید</value>
</data>
<data name="TbPublicKey" xml:space="preserve">
<value>PublicKey</value>
</data>
<data name="menuAddHysteria2Server" xml:space="preserve">
<value>Add [Hysteria2] server</value>
</data>
<data name="TbSettingsHysteriaBandwidth" xml:space="preserve">
<value>حداکتر پهنای باند هیستریا (آپلود/دانلود)</value>
</data>
<data name="menuAddTuicServer" xml:space="preserve">
<value>افزودن سرور [TUIC]</value>
</data>
<data name="TbSettingsEnableUpdateSubOnlyRemarksExist" xml:space="preserve">
<value>اشتراک در حال به‌روزرسانی، فقط مشخص کنید که ملاحظاتی آیا وجود دارد!</value>
</data>
<data name="menuProxiesReload" xml:space="preserve">
<value>تازه سازی پروکسی ها</value>
</data>
<data name="TbSortingNetwork" xml:space="preserve">
<value>شبکه</value>
</data>
<data name="TbSortingType" xml:space="preserve">
<value>نوع</value>
</data>
<data name="TransportRequestHostTip5" xml:space="preserve">
<value>*grpc Authority</value>
</data>
<data name="menuAddHttpServer" xml:space="preserve">
<value>افزودن سرور [HTTP]</value>
</data>
<data name="TbSettingsSpeedPingTestUrl" xml:space="preserve">
<value>آدرس اینترنتی تست پینگ سرعت</value>
</data>
<data name="TbSettingsEnableFragmentTips" xml:space="preserve">
<value>از Xray استفاده کنید و حالت non-Tun را فعال کنید، که با پراکسی قبلی گروه در تضاد است</value>
</data>
<data name="LvCustomRulesetPath4Singbox" xml:space="preserve">
<value>سفارش سازی مجموعه قوانین sing box</value>
</data>
<data name="NeedRebootTips" xml:space="preserve">
<value>عملکرد موفقیت آمیز بود، روی منوی تنظیمات کلیک کنید تا برنامه راه اندازی مجدد شود.</value>
</data>
<data name="menuOpenTheFileLocation" xml:space="preserve">
<value>باز کردن محل ذخیره سازی</value>
</data>
<data name="TbSortingChain" xml:space="preserve">
<value>Chain</value>
</data>
<data name="TbSortingHost" xml:space="preserve">
<value>هاست</value>
</data>
<data name="TbSettingsUseSystemHosts" xml:space="preserve">
<value>استفاده کردن از System Hosts</value>
</data>
<data name="TbSettingsEnableFragment" xml:space="preserve">
<value>فعال کردن فرگمنت</value>
</data>
<data name="TbAutoScrollToEnd" xml:space="preserve">
<value>خودکار ScrollToEnd</value>
</data>
<data name="SpeedtestingStop" xml:space="preserve">
<value>پایان تست...</value>
</data>
<data name="LvNextProfile" xml:space="preserve">
<value>نام مستعار پروکسی بعدی</value>
</data>
<data name="TbPath7" xml:space="preserve">
<value>پسورد obfs</value>
</data>
<data name="TbHeaderType8" xml:space="preserve">
<value>کنترل تراکم</value>
</data>
<data name="LvPrevProfile" xml:space="preserve">
<value>نام مستعار پروکسی قبلی</value>
</data>
<data name="TbLocalAddress" xml:space="preserve">
<value>آدرس (IPv4, IPv6)</value>
</data>
<data name="TbReserved" xml:space="preserve">
<value>Reserved (2,3,4)</value>
</data>
<data name="TbPrivateKey" xml:space="preserve">
<value>کلید خصوصی</value>
</data>
<data name="menuAddWireguardServer" xml:space="preserve">
<value>افزودن سرور [WireGuard]</value>
</data>
<data name="TbSettingsEnableIPv6Address" xml:space="preserve">
<value>فعال سازی آدرس IPv6</value>
</data>
<data name="TbSettingsEnableExInbound" xml:space="preserve">
<value>فعال سازی additional Inbound</value>
</data>
<data name="LvPrevProfileTip" xml:space="preserve">
<value>لطفاً مطمئن شوید که ملاحظات وجود دارند و منحصر به فرد هستند</value>
</data>
<data name="TbRuleMatchingTips" xml:space="preserve">
<value>(Domain or IP or ProcName) and Port and Protocol and InboundTag =&gt; OutboundTag</value>
</data>
<data name="TbSettingsLinuxSudoPassword" xml:space="preserve">
<value>رمز عبور sudo سیستم</value>
</data>
@ -1401,4 +1395,22 @@
<data name="TbPorts7Tips" xml:space="preserve">
<value>مخفی و پورت می شود، با کاما (،) جدا می شود</value>
</data>
<data name="menuSetDefaultMultipleServerXray" xml:space="preserve">
<value>چند سرور Xray (چند انتخابی)</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRandom" xml:space="preserve">
<value>چند سرور تصادفی</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRoundRobin" xml:space="preserve">
<value>چند سرور گردشی</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastPing" xml:space="preserve">
<value>چند سرور کمترین تأخیر</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastLoad" xml:space="preserve">
<value>چند سرور پایدارترین</value>
</data>
<data name="menuSetDefaultMultipleServerSingBoxLeastPing" xml:space="preserve">
<value>چند سرور کمترین تأخیر sing-box (چند انتخابی)</value>
</data>
</root>

View file

@ -1224,15 +1224,9 @@
<data name="TbSettingsDomainStrategy4Out" xml:space="preserve">
<value>Alapértelmezett domain stratégia a kimenő forgalomhoz</value>
</data>
<data name="menuSetDefaultMultipleServer" xml:space="preserve">
<value>Multi-szerver alacsony késleltetés</value>
</data>
<data name="TbSettingsMainGirdOrientation" xml:space="preserve">
<value>Fő elrendezés irányítása (indítás szükséges)</value>
</data>
<data name="menuSetDefaultLoadBalanceServer" xml:space="preserve">
<value>Multi-szerver terheléselosztás</value>
</data>
<data name="TbSettingsDomainDNSAddress" xml:space="preserve">
<value>Kimenő DNS cím</value>
</data>
@ -1401,4 +1395,22 @@
<data name="TbPorts7Tips" xml:space="preserve">
<value>Will cover the port, separate with commas (,)</value>
</data>
<data name="menuSetDefaultMultipleServerXray" xml:space="preserve">
<value>Többszerveres Xray (többválasztásos)</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRandom" xml:space="preserve">
<value>Többszerveres véletlenszerű</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRoundRobin" xml:space="preserve">
<value>Többszerveres körforgásos</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastPing" xml:space="preserve">
<value>Többszerveres legkisebb késleltetésű</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastLoad" xml:space="preserve">
<value>Többszerveres legstabilabb</value>
</data>
<data name="menuSetDefaultMultipleServerSingBoxLeastPing" xml:space="preserve">
<value>Többszerveres legkisebb késleltetésű sing-box (többválasztásos)</value>
</data>
</root>

View file

@ -1224,15 +1224,9 @@
<data name="TbSettingsDomainStrategy4Out" xml:space="preserve">
<value>Default domain strategy for outbound</value>
</data>
<data name="menuSetDefaultMultipleServer" xml:space="preserve">
<value>Multi-Server lowest latency</value>
</data>
<data name="TbSettingsMainGirdOrientation" xml:space="preserve">
<value>Main layout orientation (requires restart)</value>
</data>
<data name="menuSetDefaultLoadBalanceServer" xml:space="preserve">
<value>Multi-server load balancing</value>
</data>
<data name="TbSettingsDomainDNSAddress" xml:space="preserve">
<value>Outbound DNS address</value>
</data>
@ -1401,4 +1395,22 @@
<data name="TbPorts7Tips" xml:space="preserve">
<value>Will cover the port, separate with commas (,)</value>
</data>
<data name="menuSetDefaultMultipleServerXray" xml:space="preserve">
<value>Multi-Server Xray</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRandom" xml:space="preserve">
<value>Multi-Server Random</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRoundRobin" xml:space="preserve">
<value>Multi-Server RoundRobin</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastPing" xml:space="preserve">
<value>Multi-Server LeastPing</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastLoad" xml:space="preserve">
<value>Multi-Server LeastLoad</value>
</data>
<data name="menuSetDefaultMultipleServerSingBoxLeastPing" xml:space="preserve">
<value>Multi-Server lowest latency sing-box</value>
</data>
</root>

View file

@ -681,18 +681,12 @@
<data name="TbSettingsAutoUpdateInterval" xml:space="preserve">
<value>Интервал автоматического обновления Geo в часах</value>
</data>
<data name="LvAutoUpdateInterval" xml:space="preserve">
<value>Интервал автоматического обновления в минутах</value>
</data>
<data name="TbSettingsCore" xml:space="preserve">
<value>Ядро: базовые настройки</value>
</data>
<data name="TbSettingsCoreDns" xml:space="preserve">
<value>Настройки DNS V2ray</value>
</data>
<data name="TbSettingsCoreDnsSingbox" xml:space="preserve">
<value>Настройки DNS sing-box</value>
</data>
<data name="TbSettingsCoreKcp" xml:space="preserve">
<value>Ядро: настройки KCP</value>
</data>
@ -978,137 +972,146 @@
<data name="TbSettingsCurrentFontFamilyTip" xml:space="preserve">
<value>Скопируйте файл шрифта TTF/TTC в каталог guiFonts, перезапустите настройки</value>
</data>
<data name="TbSettingsSocksPortTip" xml:space="preserve">
<value>Pac порт = +3; Xray API порт = +4; mihomo API порт = +5;</value>
</data>
<data name="TbSettingsStartBootTip" xml:space="preserve">
<value>Установите это с правами администратора</value>
</data>
<data name="TbSettingsFontSize" xml:space="preserve">
<value>Размер шрифта</value>
</data>
<data name="TbSettingsEnableHWA" xml:space="preserve">
<value>Включить аппаратное ускорение (требуется перезагрузка)</value>
</data>
<data name="menuRebootAsAdmin" xml:space="preserve">
<value>Перезагрузить как администратор</value>
</data>
<data name="menuDNSSetting" xml:space="preserve">
<value>Настройки DNS</value>
</data>
<data name="TbSettingsLogEnabledToFile" xml:space="preserve">
<value>Включить логгирование в файл</value>
</data>
<data name="TbSettingsSpeedTestTimeout" xml:space="preserve">
<value>Таймаут одиночного спидтеста</value>
</data>
<data name="TbSettingsSpeedTestUrl" xml:space="preserve">
<value>URL спидтеста</value>
</data>
<data name="TbSettingsGeoFilesSource" xml:space="preserve">
<value>Источник geo файлов</value>
<data name="menuMoveTo" xml:space="preserve">
<value>Move up and down</value>
</data>
<data name="TbSettingsSrsFilesSource" xml:space="preserve">
<value>Источник sing-box srs файлов</value>
<data name="TbPublicKey" xml:space="preserve">
<value>PublicKey</value>
</data>
<data name="TbSettingsRoutingRulesSource" xml:space="preserve">
<value>Источник правил маршрутизации</value>
<data name="TbShortId" xml:space="preserve">
<value>ShortId</value>
</data>
<data name="menuRegionalPresets" xml:space="preserve">
<value>Региональные пресеты</value>
<data name="TbSpiderX" xml:space="preserve">
<value>SpiderX</value>
</data>
<data name="menuRegionalPresetsDefault" xml:space="preserve">
<value>По умолчанию (Китай)</value>
<data name="TbSettingsEnableHWA" xml:space="preserve">
<value>Включить аппаратное ускорение (требуется перезагрузка)</value>
</data>
<data name="menuRegionalPresetsRussia" xml:space="preserve">
<value>Россия</value>
<data name="SpeedtestingWait" xml:space="preserve">
<value>Ожидание тестирования (нажмите ESC для отмены)...</value>
</data>
<data name="menuRegionalPresetsIran" xml:space="preserve">
<value>Иран</value>
<data name="TipDisplayLog" xml:space="preserve">
<value>Please turn off when there is an abnormal disconnection</value>
</data>
<data name="TbSettingsChinaUserTip" xml:space="preserve">
<value>Используйте Настройки -&gt; Региональные пресеты вместо изменения этого поля</value>
<data name="MsgSkipSubscriptionUpdate" xml:space="preserve">
<value>Updates are not enabled, skip this subscription</value>
</data>
<data name="LvMemo" xml:space="preserve">
<value>Remarks Memo</value>
<data name="menuRebootAsAdmin" xml:space="preserve">
<value>Перезагрузить как администратор</value>
</data>
<data name="TbSettingsSpeedPingTestUrl" xml:space="preserve">
<value>URL-адрес для проверки скорости пинга</value>
<data name="LvMoreUrl" xml:space="preserve">
<value>More URLs, separated by commas; Subscription conversion will be invalid</value>
</data>
<data name="menuProxiesDelaytestPart" xml:space="preserve">
<value>Part Node Latency Test</value>
<data name="SpeedDisplayText" xml:space="preserve">
<value>{0} : {1}/s↑ | {2}/s↓</value>
</data>
<data name="menuProxiesReload" xml:space="preserve">
<value>Обновить прокси</value>
<data name="LvAutoUpdateInterval" xml:space="preserve">
<value>Интервал автоматического обновления в минутах</value>
</data>
<data name="TbAutoScrollToEnd" xml:space="preserve">
<value>Автоматическая прокрутка в конец</value>
<data name="TbSettingsLogEnabledToFile" xml:space="preserve">
<value>Включить логгирование в файл</value>
</data>
<data name="menuProxiesSelectActivity" xml:space="preserve">
<value>Активировать узел (Enter)</value>
<data name="LvConvertTarget" xml:space="preserve">
<value>Преобразовать тип цели</value>
</data>
<data name="TbRuleMatchingTips" xml:space="preserve">
<value>(Domain or IP or ProcName) and Port and Protocol and InboundTag =&gt; OutboundTag</value>
<data name="LvConvertTargetTip" xml:space="preserve">
<value>Если преобразование не требуется, оставьте поле пустым.</value>
</data>
<data name="TbPath7" xml:space="preserve">
<value>obfs password</value>
<data name="menuDNSSetting" xml:space="preserve">
<value>Настройки DNS</value>
</data>
<data name="TbLocalAddress" xml:space="preserve">
<value>Адрес(Ipv4,Ipv6)</value>
<data name="TbSettingsCoreDnsSingbox" xml:space="preserve">
<value>Настройки DNS sing-box</value>
</data>
<data name="TbSettingsDomainStrategy4Out" xml:space="preserve">
<value>Стратегия домена по умолчанию для исходящих</value>
<data name="TbDnsSingboxObjectDoc" xml:space="preserve">
<value>Пожалуйста, заполните структуру DNS. Нажмите, чтобы просмотреть документ.</value>
</data>
<data name="menuSetDefaultMultipleServer" xml:space="preserve">
<value>Multi-Server lowest latency</value>
<data name="TbSettingDnsImportDefConfig" xml:space="preserve">
<value>Нажмите, чтобы импортировать конфигурацию DNS по умолчанию</value>
</data>
<data name="TbSettingsMainGirdOrientation" xml:space="preserve">
<value>Основная ориентация макета (требуется перезагрузка)</value>
<data name="TbdomainStrategy4Singbox" xml:space="preserve">
<value>Стратегия домена для sing-box</value>
</data>
<data name="menuSetDefaultLoadBalanceServer" xml:space="preserve">
<value>Multi-server load balancing</value>
<data name="TbSettingsMux4SboxProtocol" xml:space="preserve">
<value>sing-box Mux Protocol</value>
</data>
<data name="menuProxiesDelaytest" xml:space="preserve">
<value>Тест задержки</value>
<data name="TbRoutingRuleProcess" xml:space="preserve">
<value>Full process name (Tun mode)</value>
</data>
<data name="TbReserved" xml:space="preserve">
<value>Reserved(2,3,4)</value>
<data name="TbRoutingRuleIP" xml:space="preserve">
<value>IP or IP CIDR</value>
</data>
<data name="TbPrivateKey" xml:space="preserve">
<value>PrivateKey</value>
<data name="TbRoutingRuleDomain" xml:space="preserve">
<value>Домен</value>
</data>
<data name="menuAddWireguardServer" xml:space="preserve">
<value>Добавить [WireGuard] сервер</value>
<data name="menuAddHysteria2Server" xml:space="preserve">
<value>Добавить [Hysteria2] сервер</value>
</data>
<data name="menuProfileAutofitColumnWidth" xml:space="preserve">
<value>Автоматическая регулировка ширины столбца</value>
<data name="TbSettingsHysteriaBandwidth" xml:space="preserve">
<value>Hysteria Max bandwidth (Up/Dw)</value>
</data>
<data name="menuExport2ShareUrlBase64" xml:space="preserve">
<value>Export Base64-encoded Share Links to Clipboard</value>
<data name="TbSettingsUseSystemHosts" xml:space="preserve">
<value>Использовать системные узлы</value>
</data>
<data name="TbSortingDelay" xml:space="preserve">
<value>Задержка</value>
</data>
<data name="TbSettingsEnableExInbound" xml:space="preserve">
<value>Enable additional Inbound</value>
</data>
<data name="LvPrevProfileTip" xml:space="preserve">
<value>Пожалуйста, убедитесь, что примечание существует и является уникальным.</value>
</data>
<data name="menuExport2ClientConfigClipboard" xml:space="preserve">
<value>Экспортировать выбранный сервер для полной конфигурации в буфер обмена</value>
</data>
<data name="LvNextProfile" xml:space="preserve">
<value>Next proxy remarks</value>
</data>
<data name="menuShowOrHideMainWindow" xml:space="preserve">
<value>Показать или скрыть главное окно</value>
</data>
<data name="LvPrevProfile" xml:space="preserve">
<value>Previous proxy remarks</value>
<data name="menuAddTuicServer" xml:space="preserve">
<value>Добавить [TUIC] сервер</value>
</data>
<data name="TbHeaderType8" xml:space="preserve">
<value>Контроль перегрузок</value>
</data>
<data name="TbSettingsDomainDNSAddress" xml:space="preserve">
<value>Исходящий DNS адрес</value>
<data name="LvPrevProfile" xml:space="preserve">
<value>Previous proxy remarks</value>
</data>
<data name="LvNextProfile" xml:space="preserve">
<value>Next proxy remarks</value>
</data>
<data name="LvPrevProfileTip" xml:space="preserve">
<value>Пожалуйста, убедитесь, что примечание существует и является уникальным.</value>
</data>
<data name="TbSettingsEnableExInbound" xml:space="preserve">
<value>Enable additional Inbound</value>
</data>
<data name="TbSettingsEnableIPv6Address" xml:space="preserve">
<value>Включить IPv6 адреса</value>
</data>
<data name="menuAddWireguardServer" xml:space="preserve">
<value>Добавить [WireGuard] сервер</value>
</data>
<data name="TbPrivateKey" xml:space="preserve">
<value>PrivateKey</value>
</data>
<data name="TbReserved" xml:space="preserve">
<value>Reserved(2,3,4)</value>
</data>
<data name="TbLocalAddress" xml:space="preserve">
<value>Адрес(Ipv4,Ipv6)</value>
</data>
<data name="TbPath7" xml:space="preserve">
<value>obfs password</value>
</data>
<data name="TbRuleMatchingTips" xml:space="preserve">
<value>(Domain or IP or ProcName) and Port and Protocol and InboundTag =&gt; OutboundTag</value>
</data>
<data name="TbAutoScrollToEnd" xml:space="preserve">
<value>Автоматическая прокрутка в конец</value>
</data>
<data name="TbSettingsSpeedPingTestUrl" xml:space="preserve">
<value>URL-адрес для проверки скорости пинга</value>
</data>
<data name="TbSettingsEnableUpdateSubOnlyRemarksExist" xml:space="preserve">
<value>Updating subscription, only determine remarks exists</value>
@ -1119,23 +1122,41 @@
<data name="TransportRequestHostTip5" xml:space="preserve">
<value>*grpc Authority</value>
</data>
<data name="TbSortingDefault" xml:space="preserve">
<value>По умолчанию</value>
<data name="menuAddHttpServer" xml:space="preserve">
<value>Добавить [HTTP] сервер</value>
</data>
<data name="TbSortingChain" xml:space="preserve">
<value>Chain</value>
<data name="TbSettingsEnableFragmentTips" xml:space="preserve">
<value>Use Xray and enable non-Tun mode, which conflicts with the group previous proxy</value>
</data>
<data name="TbSorting" xml:space="preserve">
<value>Сортировка</value>
<data name="TbSettingsEnableFragment" xml:space="preserve">
<value>Включить фрагмент</value>
</data>
<data name="menuOpenTheFileLocation" xml:space="preserve">
<value>Открыть место хранения</value>
<data name="TbSettingsEnableCacheFile4Sbox" xml:space="preserve">
<value>Включить файл кэша для sing-box (файлы наборов правил)</value>
</data>
<data name="LvCustomRulesetPath4Singbox" xml:space="preserve">
<value>Пользовательский набор правил для sing-box</value>
</data>
<data name="NeedRebootTips" xml:space="preserve">
<value>Successful operation. Click the settings menu to reboot the app.</value>
</data>
<data name="LvCustomRulesetPath4Singbox" xml:space="preserve">
<value>Пользовательский набор правил для sing-box</value>
<data name="menuOpenTheFileLocation" xml:space="preserve">
<value>Открыть место хранения</value>
</data>
<data name="TbSorting" xml:space="preserve">
<value>Сортировка</value>
</data>
<data name="TbSortingChain" xml:space="preserve">
<value>Chain</value>
</data>
<data name="TbSortingDefault" xml:space="preserve">
<value>По умолчанию</value>
</data>
<data name="TbSortingDelay" xml:space="preserve">
<value>Задержка</value>
</data>
<data name="TbSortingDownSpeed" xml:space="preserve">
<value>Скорость загрузки</value>
</data>
<data name="TbSortingDownTraffic" xml:space="preserve">
<value>Download Traffic</value>
@ -1155,9 +1176,6 @@
<data name="TbSortingType" xml:space="preserve">
<value>Тип</value>
</data>
<data name="TbSettingsEnableCacheFile4Sbox" xml:space="preserve">
<value>Включить файл кэша для sing-box (файлы наборов правил)</value>
</data>
<data name="TbSortingUpSpeed" xml:space="preserve">
<value>Скорость загрузки</value>
</data>
@ -1188,158 +1206,134 @@
<data name="menuModeNothing" xml:space="preserve">
<value>Do not change</value>
</data>
<data name="TbSettingsEnableFragment" xml:space="preserve">
<value>Включить фрагмент</value>
</data>
<data name="TbSettingsEnableFragmentTips" xml:space="preserve">
<value>Use Xray and enable non-Tun mode, which conflicts with the group previous proxy</value>
</data>
<data name="menuModeRule" xml:space="preserve">
<value>Правила</value>
</data>
<data name="menuAddHttpServer" xml:space="preserve">
<value>Добавить [HTTP] сервер</value>
<data name="menuProxiesDelaytest" xml:space="preserve">
<value>Тест задержки</value>
</data>
<data name="menuAddTuicServer" xml:space="preserve">
<value>Добавить [TUIC] сервер</value>
<data name="menuProxiesDelaytestPart" xml:space="preserve">
<value>Part Node Latency Test</value>
</data>
<data name="TbSettingsEnableIPv6Address" xml:space="preserve">
<value>Включить IPv6 адреса</value>
<data name="menuProxiesReload" xml:space="preserve">
<value>Обновить прокси</value>
</data>
<data name="menuProxiesSelectActivity" xml:space="preserve">
<value>Активировать узел (Enter)</value>
</data>
<data name="TbSettingsDomainStrategy4Out" xml:space="preserve">
<value>Стратегия домена по умолчанию для исходящих</value>
</data>
<data name="TbSettingsMainGirdOrientation" xml:space="preserve">
<value>Основная ориентация макета (требуется перезагрузка)</value>
</data>
<data name="TbSettingsDomainDNSAddress" xml:space="preserve">
<value>Исходящий DNS адрес</value>
</data>
<data name="menuProfileAutofitColumnWidth" xml:space="preserve">
<value>Автоматическая регулировка ширины столбца</value>
</data>
<data name="menuExport2ShareUrlBase64" xml:space="preserve">
<value>Export Base64-encoded Share Links to Clipboard</value>
</data>
<data name="menuExport2ClientConfigClipboard" xml:space="preserve">
<value>Экспортировать выбранный сервер для полной конфигурации в буфер обмена</value>
</data>
<data name="menuShowOrHideMainWindow" xml:space="preserve">
<value>Показать или скрыть главное окно</value>
</data>
<data name="TbPreSocksPort4Sub" xml:space="preserve">
<value>Пользовательская конфигурация порта socks</value>
</data>
<data name="menuBackupAndRestore" xml:space="preserve">
<value>Резервное копирование и восстановление</value>
</data>
<data name="menuLocalBackup" xml:space="preserve">
<value>Сохранить в файл</value>
</data>
<data name="menuLocalRestore" xml:space="preserve">
<value>Восстановить из файла</value>
</data>
<data name="menuRemoteBackup" xml:space="preserve">
<value>Backup to remote (WebDAV)</value>
</data>
<data name="menuRemoteRestore" xml:space="preserve">
<value>Restore from remote (WebDAV)</value>
</data>
<data name="menuLocalBackupAndRestore" xml:space="preserve">
<value>Local</value>
</data>
<data name="menuRemoteBackupAndRestore" xml:space="preserve">
<value>Remote (WebDAV)</value>
</data>
<data name="LvWebDavUrl" xml:space="preserve">
<value>WebDav Url</value>
</data>
<data name="LvWebDavUserName" xml:space="preserve">
<value>WebDav User Name</value>
</data>
<data name="LvWebDavPassword" xml:space="preserve">
<value>WebDav Password</value>
</data>
<data name="LvWebDavCheck" xml:space="preserve">
<value>WebDav Check</value>
</data>
<data name="TbRoutingRuleDomain" xml:space="preserve">
<value>Домен</value>
</data>
<data name="TbRoutingRuleIP" xml:space="preserve">
<value>IP or IP CIDR</value>
</data>
<data name="TbRoutingRuleProcess" xml:space="preserve">
<value>Full process name (Tun mode)</value>
</data>
<data name="TbSettingsMux4SboxProtocol" xml:space="preserve">
<value>sing-box Mux Protocol</value>
<data name="LvWebDavDirName" xml:space="preserve">
<value>Имя удаленной папки (необязательно)</value>
</data>
<data name="LocalRestoreInvalidZipTips" xml:space="preserve">
<value>Неверный файл резервной копии</value>
</data>
<data name="TbdomainStrategy4Singbox" xml:space="preserve">
<value>Стратегия домена для sing-box</value>
</data>
<data name="ConnectionsHostFilterTitle" xml:space="preserve">
<value>Host filter</value>
</data>
<data name="TbSettingDnsImportDefConfig" xml:space="preserve">
<value>Нажмите, чтобы импортировать конфигурацию DNS по умолчанию</value>
</data>
<data name="TipActiveServer" xml:space="preserve">
<value>Active</value>
</data>
<data name="TbDnsSingboxObjectDoc" xml:space="preserve">
<value>Пожалуйста, заполните структуру DNS. Нажмите, чтобы просмотреть документ.</value>
<data name="TbSettingsGeoFilesSource" xml:space="preserve">
<value>Источник geo файлов</value>
</data>
<data name="LvConvertTargetTip" xml:space="preserve">
<value>Если преобразование не требуется, оставьте поле пустым.</value>
</data>
<data name="LvConvertTarget" xml:space="preserve">
<value>Преобразовать тип цели</value>
</data>
<data name="SpeedDisplayText" xml:space="preserve">
<value>{0} : {1}/s↑ | {2}/s↓</value>
</data>
<data name="LvMoreUrl" xml:space="preserve">
<value>More URLs, separated by commas; Subscription conversion will be invalid</value>
</data>
<data name="MsgSkipSubscriptionUpdate" xml:space="preserve">
<value>Updates are not enabled, skip this subscription</value>
<data name="TbSettingsSrsFilesSource" xml:space="preserve">
<value>Источник sing-box srs файлов</value>
</data>
<data name="UpgradeAppNotExistTip" xml:space="preserve">
<value>Программы для обновления не существует</value>
</data>
<data name="TbSettingsRoutingRulesSource" xml:space="preserve">
<value>Источник правил маршрутизации</value>
</data>
<data name="menuRegionalPresets" xml:space="preserve">
<value>Региональные пресеты</value>
</data>
<data name="menuRegionalPresetsDefault" xml:space="preserve">
<value>По умолчанию (Китай)</value>
</data>
<data name="menuRegionalPresetsRussia" xml:space="preserve">
<value>Россия</value>
</data>
<data name="menuRegionalPresetsIran" xml:space="preserve">
<value>Иран</value>
</data>
<data name="TbSettingsChinaUserTip" xml:space="preserve">
<value>Используйте Настройки -&gt; Региональные пресеты вместо изменения этого поля</value>
</data>
<data name="menuAddServerViaImage" xml:space="preserve">
<value>Сканировать QR-код с изображения</value>
</data>
<data name="TipDisplayLog" xml:space="preserve">
<value>Please turn off when there is an abnormal disconnection</value>
</data>
<data name="SpeedtestingWait" xml:space="preserve">
<value>Ожидание тестирования (нажмите ESC для отмены)...</value>
</data>
<data name="TbSpiderX" xml:space="preserve">
<value>SpiderX</value>
</data>
<data name="TbShortId" xml:space="preserve">
<value>ShortId</value>
</data>
<data name="InvalidUrlTip" xml:space="preserve">
<value>Неверный адрес (Url)</value>
</data>
<data name="InsecureUrlProtocol" xml:space="preserve">
<value>Пожалуйста, не используйте небезопасный адрес подписки по протоколу HTTP.</value>
</data>
<data name="TbPublicKey" xml:space="preserve">
<value>PublicKey</value>
</data>
<data name="menuMoveTo" xml:space="preserve">
<value>Move up and down</value>
</data>
<data name="TbSettingsSocksPortTip" xml:space="preserve">
<value>Pac порт = +3; Xray API порт = +4; mihomo API порт = +5;</value>
</data>
<data name="TbSettingsCurrentFontFamilyLinuxTip" xml:space="preserve">
<value>Установите шрифт в систему и перезапустите настройки</value>
</data>
<data name="menuAddHysteria2Server" xml:space="preserve">
<value>Добавить [Hysteria2] сервер</value>
</data>
<data name="LvWebDavPassword" xml:space="preserve">
<value>WebDav Password</value>
</data>
<data name="LvWebDavDirName" xml:space="preserve">
<value>Имя удаленной папки (необязательно)</value>
</data>
<data name="TbSortingDownSpeed" xml:space="preserve">
<value>Скорость загрузки</value>
</data>
<data name="menuRemoteRestore" xml:space="preserve">
<value>Restore from remote (WebDAV)</value>
</data>
<data name="menuRemoteBackup" xml:space="preserve">
<value>Backup to remote (WebDAV)</value>
</data>
<data name="LvWebDavUserName" xml:space="preserve">
<value>WebDav User Name</value>
</data>
<data name="menuLocalRestore" xml:space="preserve">
<value>Восстановить из файла</value>
</data>
<data name="menuLocalBackup" xml:space="preserve">
<value>Сохранить в файл</value>
</data>
<data name="TbSettingsUseSystemHosts" xml:space="preserve">
<value>Использовать системные узлы</value>
</data>
<data name="menuBackupAndRestore" xml:space="preserve">
<value>Резервное копирование и восстановление</value>
</data>
<data name="menuLocalBackupAndRestore" xml:space="preserve">
<value>Local</value>
</data>
<data name="menuExitTips" xml:space="preserve">
<value>Вы уверены, что хотите выйти?</value>
</data>
<data name="TbSettingsHysteriaBandwidth" xml:space="preserve">
<value>Hysteria Max bandwidth (Up/Dw)</value>
</data>
<data name="LvWebDavUrl" xml:space="preserve">
<value>WebDav Url</value>
</data>
<data name="menuRemoteBackupAndRestore" xml:space="preserve">
<value>Remote (WebDAV)</value>
<data name="LvMemo" xml:space="preserve">
<value>Remarks Memo</value>
</data>
<data name="TbSettingsLinuxSudoPassword" xml:space="preserve">
<value>System sudo password</value>
@ -1401,4 +1395,22 @@
<data name="TbPorts7Tips" xml:space="preserve">
<value>Will cover the port, separate with commas (,)</value>
</data>
<data name="menuSetDefaultMultipleServerXray" xml:space="preserve">
<value>Мультисерверный Xray (множественный выбор)</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRandom" xml:space="preserve">
<value>Мультисерверный случайный</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRoundRobin" xml:space="preserve">
<value>Мультисерверный круговой</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastPing" xml:space="preserve">
<value>Мультисерверная минимальная задержка</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastLoad" xml:space="preserve">
<value>Мультисерверный наиболее стабильный</value>
</data>
<data name="menuSetDefaultMultipleServerSingBoxLeastPing" xml:space="preserve">
<value>Мультисерверная минимальная задержка sing-box (множественный выбор)</value>
</data>
</root>

View file

@ -1050,12 +1050,12 @@
<data name="TbRoutingRuleProcess" xml:space="preserve">
<value>进程名全称 (Tun 模式)</value>
</data>
<data name="TbRoutingRuleDomain" xml:space="preserve">
<value>Domain</value>
</data>
<data name="TbRoutingRuleIP" xml:space="preserve">
<value>IP 或 IP CIDR</value>
</data>
<data name="TbRoutingRuleDomain" xml:space="preserve">
<value>Domain</value>
</data>
<data name="menuAddHysteria2Server" xml:space="preserve">
<value>添加 [Hysteria2] 服务器</value>
</data>
@ -1122,12 +1122,12 @@
<data name="menuAddHttpServer" xml:space="preserve">
<value>添加 [HTTP] 服务器</value>
</data>
<data name="TbSettingsEnableFragment" xml:space="preserve">
<value>启用分片Fragment</value>
</data>
<data name="TbSettingsEnableFragmentTips" xml:space="preserve">
<value>使用 Xray 且非 Tun 模式启用,和分组前置代理冲突</value>
</data>
<data name="TbSettingsEnableFragment" xml:space="preserve">
<value>启用分片Fragment</value>
</data>
<data name="TbSettingsEnableCacheFile4Sbox" xml:space="preserve">
<value>启用 sing-box规则集文件的缓存文件</value>
</data>
@ -1221,15 +1221,9 @@
<data name="TbSettingsDomainStrategy4Out" xml:space="preserve">
<value>Outbound 默认解析策略</value>
</data>
<data name="menuSetDefaultMultipleServer" xml:space="preserve">
<value>多服务器最低延迟 (多选)</value>
</data>
<data name="TbSettingsMainGirdOrientation" xml:space="preserve">
<value>主界面布局方向(需重启)</value>
</data>
<data name="menuSetDefaultLoadBalanceServer" xml:space="preserve">
<value>多服务器负载均衡 (多选)</value>
</data>
<data name="TbSettingsDomainDNSAddress" xml:space="preserve">
<value>Outbound 域名解析地址</value>
</data>
@ -1269,17 +1263,17 @@
<data name="menuRemoteBackupAndRestore" xml:space="preserve">
<value>远程 (WebDAV)</value>
</data>
<data name="LvWebDavUrl" xml:space="preserve">
<value>WebDav 服务器地址</value>
</data>
<data name="LvWebDavUserName" xml:space="preserve">
<value>WebDav 账户</value>
</data>
<data name="LvWebDavCheck" xml:space="preserve">
<value>WebDav 可用检查</value>
</data>
<data name="LvWebDavPassword" xml:space="preserve">
<value>WebDav 密码</value>
</data>
<data name="LvWebDavUrl" xml:space="preserve">
<value>WebDav 服务器地址</value>
<data name="LvWebDavCheck" xml:space="preserve">
<value>WebDav 可用检查</value>
</data>
<data name="LvWebDavDirName" xml:space="preserve">
<value>远程文件夹名称 (可选)</value>
@ -1296,18 +1290,15 @@
<data name="TbSettingsGeoFilesSource" xml:space="preserve">
<value>Geo 文件来源 (可选)</value>
</data>
<data name="UpgradeAppNotExistTip" xml:space="preserve">
<value>升级工具 App 不存在</value>
</data>
<data name="TbSettingsSrsFilesSource" xml:space="preserve">
<value>sing-box ruleset 文件来源 (可选)</value>
</data>
<data name="UpgradeAppNotExistTip" xml:space="preserve">
<value>升级工具 App 不存在</value>
</data>
<data name="TbSettingsRoutingRulesSource" xml:space="preserve">
<value>路由规则集来源 (可选)</value>
</data>
<data name="TbSettingsChinaUserTip" xml:space="preserve">
<value>中国区域用户可忽略此项</value>
</data>
<data name="menuRegionalPresets" xml:space="preserve">
<value>区域预置设置</value>
</data>
@ -1320,6 +1311,9 @@
<data name="menuRegionalPresetsIran" xml:space="preserve">
<value>伊朗</value>
</data>
<data name="TbSettingsChinaUserTip" xml:space="preserve">
<value>中国区域用户可忽略此项</value>
</data>
<data name="menuAddServerViaImage" xml:space="preserve">
<value>扫描图片中的二维码</value>
</data>
@ -1398,4 +1392,22 @@
<data name="TbPorts7Tips" xml:space="preserve">
<value>会覆盖端口,多组时用逗号 (,) 隔开</value>
</data>
<data name="menuSetDefaultMultipleServerXray" xml:space="preserve">
<value>多服务器 Xray (多选)</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRandom" xml:space="preserve">
<value>多服务器随机</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRoundRobin" xml:space="preserve">
<value>多服务器轮询</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastPing" xml:space="preserve">
<value>多服务器最低延迟</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastLoad" xml:space="preserve">
<value>多服务器最稳定</value>
</data>
<data name="menuSetDefaultMultipleServerSingBoxLeastPing" xml:space="preserve">
<value>多服务器最低延迟 sing-box (多选)</value>
</data>
</root>

View file

@ -663,7 +663,6 @@
<data name="TipPreSocksPort" xml:space="preserve">
<value>*自訂設定的 Socks 埠值,可不設定;當設定此值後,將使用 Xray/sing-box (Tun) 額外啟動一個前置 Socks 服務,提供分流和速度顯示等功能</value>
</data>
<!--********************************************-->
<data name="TbBrowse" xml:space="preserve">
<value>瀏覽</value>
</data>
@ -1051,15 +1050,27 @@
<data name="TbRoutingRuleProcess" xml:space="preserve">
<value>行程名全稱 (Tun 模式)</value>
</data>
<data name="TbRoutingRuleDomain" xml:space="preserve">
<value>Domain</value>
</data>
<data name="TbRoutingRuleIP" xml:space="preserve">
<value>IP 或 IP CIDR</value>
</data>
<data name="TbRoutingRuleDomain" xml:space="preserve">
<value>Domain</value>
</data>
<data name="menuAddHysteria2Server" xml:space="preserve">
<value>添加 [Hysteria2] 伺服器</value>
</data>
<data name="TbSettingsHysteriaBandwidth" xml:space="preserve">
<value>Hysteria 最大頻寬 (Up/Dw)</value>
</data>
<data name="TbSettingsUseSystemHosts" xml:space="preserve">
<value>使用系統 hosts</value>
</data>
<data name="menuAddTuicServer" xml:space="preserve">
<value>新增 [TUIC] 伺服器</value>
</data>
<data name="TbHeaderType8" xml:space="preserve">
<value>擁塞控制算法</value>
</data>
<data name="LvPrevProfile" xml:space="preserve">
<value>前置代理別名</value>
</data>
@ -1075,6 +1086,21 @@
<data name="TbSettingsEnableIPv6Address" xml:space="preserve">
<value>啟用 IPv6</value>
</data>
<data name="menuAddWireguardServer" xml:space="preserve">
<value>添加 [WireGuard] 伺服器</value>
</data>
<data name="TbPrivateKey" xml:space="preserve">
<value>PrivateKey</value>
</data>
<data name="TbReserved" xml:space="preserve">
<value>Reserved (2,3,4)</value>
</data>
<data name="TbLocalAddress" xml:space="preserve">
<value>Address (Ipv4,Ipv6)</value>
</data>
<data name="TbPath7" xml:space="preserve">
<value>混淆密碼 (obfs password)</value>
</data>
<data name="TbRuleMatchingTips" xml:space="preserve">
<value>(Domain 或 IP 或 行程名) 与 Port 与 Protocol 与 InboundTag =&gt; OutboundTag</value>
</data>
@ -1096,12 +1122,12 @@
<data name="menuAddHttpServer" xml:space="preserve">
<value>新增 [HTTP] 伺服器</value>
</data>
<data name="TbSettingsEnableFragment" xml:space="preserve">
<value>啟用分片Fragment</value>
</data>
<data name="TbSettingsEnableFragmentTips" xml:space="preserve">
<value>使用 Xray 且非 Tun 模式啟用,和分組前置代理衝突</value>
</data>
<data name="TbSettingsEnableFragment" xml:space="preserve">
<value>啟用分片Fragment</value>
</data>
<data name="TbSettingsEnableCacheFile4Sbox" xml:space="preserve">
<value>啟用 sing-box規則集檔案的快取檔案</value>
</data>
@ -1114,6 +1140,93 @@
<data name="menuOpenTheFileLocation" xml:space="preserve">
<value>打開儲存所在的位置</value>
</data>
<data name="TbSorting" xml:space="preserve">
<value>排序</value>
</data>
<data name="TbSortingChain" xml:space="preserve">
<value>路由鏈</value>
</data>
<data name="TbSortingDefault" xml:space="preserve">
<value>預設</value>
</data>
<data name="TbSortingDelay" xml:space="preserve">
<value>延遲</value>
</data>
<data name="TbSortingDownSpeed" xml:space="preserve">
<value>下載速度</value>
</data>
<data name="TbSortingDownTraffic" xml:space="preserve">
<value>下載流量</value>
</data>
<data name="TbSortingHost" xml:space="preserve">
<value>主機</value>
</data>
<data name="TbSortingName" xml:space="preserve">
<value>名稱</value>
</data>
<data name="TbSortingNetwork" xml:space="preserve">
<value>網路</value>
</data>
<data name="TbSortingTime" xml:space="preserve">
<value>時間</value>
</data>
<data name="TbSortingType" xml:space="preserve">
<value>類型</value>
</data>
<data name="TbSortingUpSpeed" xml:space="preserve">
<value>上傳速度</value>
</data>
<data name="TbSortingUpTraffic" xml:space="preserve">
<value>上傳流量</value>
</data>
<data name="TbConnections" xml:space="preserve">
<value>目前連線</value>
</data>
<data name="menuConnectionClose" xml:space="preserve">
<value>關閉連線</value>
</data>
<data name="menuConnectionCloseAll" xml:space="preserve">
<value>關閉所有連線</value>
</data>
<data name="TbProxies" xml:space="preserve">
<value>目前代理</value>
</data>
<data name="menuRulemode" xml:space="preserve">
<value>規則模式</value>
</data>
<data name="menuModeDirect" xml:space="preserve">
<value>直連</value>
</data>
<data name="menuModeGlobal" xml:space="preserve">
<value>全局</value>
</data>
<data name="menuModeNothing" xml:space="preserve">
<value>随原配置</value>
</data>
<data name="menuModeRule" xml:space="preserve">
<value>規則</value>
</data>
<data name="menuProxiesDelaytest" xml:space="preserve">
<value>延遲測試</value>
</data>
<data name="menuProxiesDelaytestPart" xml:space="preserve">
<value>目前部分節點延遲測試</value>
</data>
<data name="menuProxiesReload" xml:space="preserve">
<value>重新整理</value>
</data>
<data name="menuProxiesSelectActivity" xml:space="preserve">
<value>設為活動節點 (Enter)</value>
</data>
<data name="TbSettingsDomainStrategy4Out" xml:space="preserve">
<value>Outbound 預設解析策略</value>
</data>
<data name="TbSettingsMainGirdOrientation" xml:space="preserve">
<value>主界面佈局方向 (需重啟)</value>
</data>
<data name="TbSettingsDomainDNSAddress" xml:space="preserve">
<value>Outbound 域名解析位址</value>
</data>
<data name="menuProfileAutofitColumnWidth" xml:space="preserve">
<value>自動調整列寬</value>
</data>
@ -1150,17 +1263,17 @@
<data name="menuRemoteBackupAndRestore" xml:space="preserve">
<value>遠端 (WebDAV)</value>
</data>
<data name="LvWebDavUrl" xml:space="preserve">
<value>WebDav 伺服器位址</value>
</data>
<data name="LvWebDavUserName" xml:space="preserve">
<value>WebDav 賬戶</value>
</data>
<data name="LvWebDavCheck" xml:space="preserve">
<value>WebDav 可用檢查</value>
</data>
<data name="LvWebDavPassword" xml:space="preserve">
<value>WebDav 密碼</value>
</data>
<data name="LvWebDavUrl" xml:space="preserve">
<value>WebDav 伺服器位址</value>
<data name="LvWebDavCheck" xml:space="preserve">
<value>WebDav 可用檢查</value>
</data>
<data name="LvWebDavDirName" xml:space="preserve">
<value>遠端資料夾名稱 (可選)</value>
@ -1177,18 +1290,15 @@
<data name="TbSettingsGeoFilesSource" xml:space="preserve">
<value>Geo 檔案來源 (可選)</value>
</data>
<data name="UpgradeAppNotExistTip" xml:space="preserve">
<value>升級工具 App 不存在</value>
</data>
<data name="TbSettingsSrsFilesSource" xml:space="preserve">
<value>sing-box ruleset 檔案來源 (可選)</value>
</data>
<data name="UpgradeAppNotExistTip" xml:space="preserve">
<value>升級工具 App 不存在</value>
</data>
<data name="TbSettingsRoutingRulesSource" xml:space="preserve">
<value>路由規則集來源 (可選)</value>
</data>
<data name="TbSettingsChinaUserTip" xml:space="preserve">
<value>中國區域用戶可忽略此項</value>
</data>
<data name="menuRegionalPresets" xml:space="preserve">
<value>區域預置設定</value>
</data>
@ -1201,6 +1311,9 @@
<data name="menuRegionalPresetsIran" xml:space="preserve">
<value>伊朗</value>
</data>
<data name="TbSettingsChinaUserTip" xml:space="preserve">
<value>中國區域用戶可忽略此項</value>
</data>
<data name="menuAddServerViaImage" xml:space="preserve">
<value>掃描圖片中的二維碼</value>
</data>
@ -1219,126 +1332,6 @@
<data name="LvMemo" xml:space="preserve">
<value>備註備忘</value>
</data>
<data name="TbHeaderType8" xml:space="preserve">
<value>擁塞控制算法</value>
</data>
<data name="menuProxiesSelectActivity" xml:space="preserve">
<value>設為活動節點 (Enter)</value>
</data>
<data name="menuProxiesReload" xml:space="preserve">
<value>重新整理</value>
</data>
<data name="TbSorting" xml:space="preserve">
<value>排序</value>
</data>
<data name="menuProxiesDelaytest" xml:space="preserve">
<value>延遲測試</value>
</data>
<data name="menuModeRule" xml:space="preserve">
<value>規則</value>
</data>
<data name="menuModeNothing" xml:space="preserve">
<value>随原配置</value>
</data>
<data name="menuModeGlobal" xml:space="preserve">
<value>全局</value>
</data>
<data name="menuModeDirect" xml:space="preserve">
<value>直連</value>
</data>
<data name="menuRulemode" xml:space="preserve">
<value>規則模式</value>
</data>
<data name="TbProxies" xml:space="preserve">
<value>目前代理</value>
</data>
<data name="menuConnectionCloseAll" xml:space="preserve">
<value>關閉所有連線</value>
</data>
<data name="TbSettingsDomainStrategy4Out" xml:space="preserve">
<value>Outbound 預設解析策略</value>
</data>
<data name="menuConnectionClose" xml:space="preserve">
<value>關閉連線</value>
</data>
<data name="TbSortingUpTraffic" xml:space="preserve">
<value>上傳流量</value>
</data>
<data name="TbSortingUpSpeed" xml:space="preserve">
<value>上傳速度</value>
</data>
<data name="TbSortingType" xml:space="preserve">
<value>類型</value>
</data>
<data name="TbSortingTime" xml:space="preserve">
<value>時間</value>
</data>
<data name="TbSortingNetwork" xml:space="preserve">
<value>網路</value>
</data>
<data name="TbSortingName" xml:space="preserve">
<value>名稱</value>
</data>
<data name="TbSortingHost" xml:space="preserve">
<value>主機</value>
</data>
<data name="TbSortingDownTraffic" xml:space="preserve">
<value>下載流量</value>
</data>
<data name="TbSortingDownSpeed" xml:space="preserve">
<value>下載速度</value>
</data>
<data name="TbSortingDelay" xml:space="preserve">
<value>延遲</value>
</data>
<data name="TbSortingDefault" xml:space="preserve">
<value>預設</value>
</data>
<data name="TbConnections" xml:space="preserve">
<value>目前連線</value>
</data>
<data name="menuSetDefaultMultipleServer" xml:space="preserve">
<value>多伺服器最低延遲 (多選)</value>
</data>
<data name="menuProxiesDelaytestPart" xml:space="preserve">
<value>目前部分節點延遲測試</value>
</data>
<data name="menuSetDefaultLoadBalanceServer" xml:space="preserve">
<value>多伺服器負載平衡 (多選)</value>
</data>
<data name="menuAddHysteria2Server" xml:space="preserve">
<value>添加 [Hysteria2] 伺服器</value>
</data>
<data name="TbSettingsHysteriaBandwidth" xml:space="preserve">
<value>Hysteria 最大頻寬 (Up/Dw)</value>
</data>
<data name="TbSettingsMainGirdOrientation" xml:space="preserve">
<value>主界面佈局方向 (需重啟)</value>
</data>
<data name="menuAddWireguardServer" xml:space="preserve">
<value>添加 [WireGuard] 伺服器</value>
</data>
<data name="TbPrivateKey" xml:space="preserve">
<value>PrivateKey</value>
</data>
<data name="TbReserved" xml:space="preserve">
<value>Reserved (2,3,4)</value>
</data>
<data name="TbLocalAddress" xml:space="preserve">
<value>Address (Ipv4,Ipv6)</value>
</data>
<data name="TbSettingsUseSystemHosts" xml:space="preserve">
<value>使用系統 hosts</value>
</data>
<data name="TbSortingChain" xml:space="preserve">
<value>路由鏈</value>
</data>
<data name="TbSettingsDomainDNSAddress" xml:space="preserve">
<value>Outbound 域名解析位址</value>
</data>
<data name="TbPath7" xml:space="preserve">
<value>混淆密碼 (obfs password)</value>
</data>
<data name="TbSettingsLinuxSudoPassword" xml:space="preserve">
<value>系統的 sudo 密碼</value>
</data>
@ -1399,4 +1392,22 @@
<data name="TbPorts7Tips" xml:space="preserve">
<value>會覆蓋端口,多組時用逗號 (,) 隔開</value>
</data>
<data name="menuSetDefaultMultipleServerXray" xml:space="preserve">
<value>多伺服器 Xray (多選)</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRandom" xml:space="preserve">
<value>多伺服器隨機</value>
</data>
<data name="menuSetDefaultMultipleServerXrayRoundRobin" xml:space="preserve">
<value>多伺服器輪詢</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastPing" xml:space="preserve">
<value>多伺服器最低延遲</value>
</data>
<data name="menuSetDefaultMultipleServerXrayLeastLoad" xml:space="preserve">
<value>多伺服器最穩定</value>
</data>
<data name="menuSetDefaultMultipleServerSingBoxLeastPing" xml:space="preserve">
<value>多伺服器最低延遲 sing-box (多選)</value>
</data>
</root>

View file

@ -77,16 +77,6 @@ namespace ServiceLib.Services.CoreConfig
}
}
public async Task<RetResult> GenerateClientMultipleRoundRobinConfig(List<ProfileItem> selecteds)
{
return await GenerateClientMultipleLoadConfig(selecteds, EMultipleLoad.RoundRobin);
}
public async Task<RetResult> GenerateClientMultipleLeastPingConfig(List<ProfileItem> selecteds)
{
return await GenerateClientMultipleLoadConfig(selecteds, EMultipleLoad.LeastPing);
}
public async Task<RetResult> GenerateClientMultipleLoadConfig(List<ProfileItem> selecteds, EMultipleLoad multipleLoad)
{
var ret = new RetResult();
@ -174,14 +164,7 @@ namespace ServiceLib.Services.CoreConfig
}
//add balancers
if (multipleLoad == EMultipleLoad.RoundRobin)
{
await GenRoundRobinBalancer(v2rayConfig);
}
else
{
await GenLeastPingBalancer(v2rayConfig);
}
await GenBalancer(v2rayConfig, multipleLoad);
var balancer = v2rayConfig.routing.balancers.First();
@ -1329,19 +1312,9 @@ namespace ServiceLib.Services.CoreConfig
return 0;
}
private async Task<int> GenRoundRobinBalancer(V2rayConfig v2rayConfig)
private async Task<int> GenBalancer(V2rayConfig v2rayConfig, EMultipleLoad multipleLoad)
{
var balancer = new BalancersItem4Ray
{
selector = [Global.ProxyTag],
strategy = new() { type = "roundRobin" },
tag = $"{Global.ProxyTag}-round",
};
v2rayConfig.routing.balancers = [balancer];
return await Task.FromResult(0);
}
private async Task<int> GenLeastPingBalancer(V2rayConfig v2rayConfig)
if (multipleLoad is EMultipleLoad.LeastLoad or EMultipleLoad.LeastPing)
{
var observatory = new Observatory4Ray
{
@ -1349,14 +1322,23 @@ namespace ServiceLib.Services.CoreConfig
probeUrl = AppHandler.Instance.Config.SpeedTestItem.SpeedPingTestUrl,
probeInterval = "3m"
};
v2rayConfig.observatory = observatory;
}
var strategyType = multipleLoad switch
{
EMultipleLoad.Random => "random",
EMultipleLoad.RoundRobin => "roundRobin",
EMultipleLoad.LeastPing => "leastPing",
EMultipleLoad.LeastLoad => "leastLoad",
_ => "roundRobin",
};
var balancer = new BalancersItem4Ray
{
selector = [Global.ProxyTag],
strategy = new() { type = "leastPing" },
strategy = new() { type = strategyType },
tag = $"{Global.ProxyTag}-round",
};
v2rayConfig.routing.balancers = [balancer];
v2rayConfig.observatory = observatory;
return await Task.FromResult(0);
}

View file

@ -62,6 +62,11 @@ namespace ServiceLib.ViewModels
public ReactiveCommand<Unit, Unit> CopyServerCmd { get; }
public ReactiveCommand<Unit, Unit> SetDefaultServerCmd { get; }
public ReactiveCommand<Unit, Unit> ShareServerCmd { get; }
public ReactiveCommand<Unit, Unit> SetDefaultMultipleServerXrayRandomCmd { get; }
public ReactiveCommand<Unit, Unit> SetDefaultMultipleServerXrayRoundRobinCmd { get; }
public ReactiveCommand<Unit, Unit> SetDefaultMultipleServerXrayLeastPingCmd { get; }
public ReactiveCommand<Unit, Unit> SetDefaultMultipleServerXrayLeastLoadCmd { get; }
public ReactiveCommand<Unit, Unit> SetDefaultMultipleServerSingBoxLeastPingCmd { get; }
public ReactiveCommand<Unit, Unit> SetDefaultMultipleServerCmd { get; }
public ReactiveCommand<Unit, Unit> SetDefaultLoadBalanceServerCmd { get; }
@ -150,13 +155,25 @@ namespace ServiceLib.ViewModels
{
await ShareServerAsync();
}, canEditRemove);
SetDefaultMultipleServerCmd = ReactiveCommand.CreateFromTask(async () =>
SetDefaultMultipleServerXrayRandomCmd = ReactiveCommand.CreateFromTask(async () =>
{
await SetDefaultMultipleServer(EMultipleLoad.LeastPing);
await SetDefaultMultipleServer(ECoreType.Xray, EMultipleLoad.Random);
}, canEditRemove);
SetDefaultLoadBalanceServerCmd = ReactiveCommand.CreateFromTask(async () =>
SetDefaultMultipleServerXrayRoundRobinCmd = ReactiveCommand.CreateFromTask(async () =>
{
await SetDefaultMultipleServer(EMultipleLoad.RoundRobin);
await SetDefaultMultipleServer(ECoreType.Xray, EMultipleLoad.RoundRobin);
}, canEditRemove);
SetDefaultMultipleServerXrayLeastPingCmd = ReactiveCommand.CreateFromTask(async () =>
{
await SetDefaultMultipleServer(ECoreType.Xray, EMultipleLoad.LeastPing);
}, canEditRemove);
SetDefaultMultipleServerXrayLeastLoadCmd = ReactiveCommand.CreateFromTask(async () =>
{
await SetDefaultMultipleServer(ECoreType.Xray, EMultipleLoad.LeastLoad);
}, canEditRemove);
SetDefaultMultipleServerSingBoxLeastPingCmd = ReactiveCommand.CreateFromTask(async () =>
{
await SetDefaultMultipleServer(ECoreType.sing_box, EMultipleLoad.LeastPing);
}, canEditRemove);
//servers move
@ -621,7 +638,7 @@ namespace ServiceLib.ViewModels
await _updateView?.Invoke(EViewAction.ShareServer, url);
}
private async Task SetDefaultMultipleServer(EMultipleLoad multipleLoad)
private async Task SetDefaultMultipleServer(ECoreType coreType, EMultipleLoad multipleLoad)
{
var lstSelected = await GetProfileItems(true);
if (lstSelected == null)
@ -629,7 +646,7 @@ namespace ServiceLib.ViewModels
return;
}
var ret = await ConfigHandler.AddCustomServer4Multiple(_config, lstSelected, multipleLoad);
var ret = await ConfigHandler.AddCustomServer4Multiple(_config, lstSelected, coreType, multipleLoad);
if (ret.Success != true)
{
NoticeHandler.Instance.Enqueue(ResUI.OperationFailed);

View file

@ -99,8 +99,13 @@
<MenuItem x:Name="menuCopyServer" Header="{x:Static resx:ResUI.menuCopyServer}" />
<MenuItem x:Name="menuShareServer" Header="{x:Static resx:ResUI.menuShareServer}" />
<Separator />
<MenuItem x:Name="menuSetDefaultMultipleServer" Header="{x:Static resx:ResUI.menuSetDefaultMultipleServer}" />
<MenuItem x:Name="menuSetDefaultLoadBalanceServer" Header="{x:Static resx:ResUI.menuSetDefaultLoadBalanceServer}" />
<MenuItem Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerXray}">
<MenuItem x:Name="menuSetDefaultMultipleServerXrayRandom" Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerXrayRandom}" />
<MenuItem x:Name="menuSetDefaultMultipleServerXrayRoundRobin" Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerXrayRoundRobin}" />
<MenuItem x:Name="menuSetDefaultMultipleServerXrayLeastPing" Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerXrayLeastPing}" />
<MenuItem x:Name="menuSetDefaultMultipleServerXrayLeastLoad" Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerXrayLeastLoad}" />
</MenuItem>
<MenuItem x:Name="menuSetDefaultMultipleServerSingBoxLeastPing" Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerSingBoxLeastPing}" />
<Separator />
<MenuItem x:Name="menuMixedTestServer" Header="{x:Static resx:ResUI.menuMixedTestServer}" />
<MenuItem x:Name="menuTcpingServer" Header="{x:Static resx:ResUI.menuTcpingServer}" />

View file

@ -67,8 +67,11 @@ namespace v2rayN.Desktop.Views
this.BindCommand(ViewModel, vm => vm.CopyServerCmd, v => v.menuCopyServer).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultServerCmd, v => v.menuSetDefaultServer).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.ShareServerCmd, v => v.menuShareServer).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerCmd, v => v.menuSetDefaultMultipleServer).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultLoadBalanceServerCmd, v => v.menuSetDefaultLoadBalanceServer).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerXrayRandomCmd, v => v.menuSetDefaultMultipleServerXrayRandom).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerXrayRoundRobinCmd, v => v.menuSetDefaultMultipleServerXrayRoundRobin).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerXrayLeastPingCmd, v => v.menuSetDefaultMultipleServerXrayLeastPing).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerXrayLeastLoadCmd, v => v.menuSetDefaultMultipleServerXrayLeastLoad).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerSingBoxLeastPingCmd, v => v.menuSetDefaultMultipleServerSingBoxLeastPing).DisposeWith(disposables);
//servers move
//this.OneWayBind(ViewModel, vm => vm.SubItems, v => v.cmbMoveToGroup.ItemsSource).DisposeWith(disposables);

View file

@ -120,15 +120,28 @@
Height="{StaticResource MenuItemHeight}"
Header="{x:Static resx:ResUI.menuShareServer}" />
<Separator />
<MenuItem Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerXray}">
<MenuItem
x:Name="menuSetDefaultMultipleServer"
x:Name="menuSetDefaultMultipleServerXrayRandom"
Height="{StaticResource MenuItemHeight}"
Header="{x:Static resx:ResUI.menuSetDefaultMultipleServer}" />
Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerXrayRandom}" />
<MenuItem
x:Name="menuSetDefaultLoadBalanceServer"
x:Name="menuSetDefaultMultipleServerXrayRoundRobin"
Height="{StaticResource MenuItemHeight}"
Header="{x:Static resx:ResUI.menuSetDefaultLoadBalanceServer}" />
Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerXrayRoundRobin}" />
<MenuItem
x:Name="menuSetDefaultMultipleServerXrayLeastPing"
Height="{StaticResource MenuItemHeight}"
Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerXrayLeastPing}" />
<MenuItem
x:Name="menuSetDefaultMultipleServerXrayLeastLoad"
Height="{StaticResource MenuItemHeight}"
Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerXrayLeastLoad}" />
</MenuItem>
<MenuItem
x:Name="menuSetDefaultMultipleServerSingBoxLeastPing"
Height="{StaticResource MenuItemHeight}"
Header="{x:Static resx:ResUI.menuSetDefaultMultipleServerSingBoxLeastPing}" />
<Separator />
<MenuItem
x:Name="menuMixedTestServer"

View file

@ -61,8 +61,11 @@ namespace v2rayN.Views
this.BindCommand(ViewModel, vm => vm.CopyServerCmd, v => v.menuCopyServer).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultServerCmd, v => v.menuSetDefaultServer).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.ShareServerCmd, v => v.menuShareServer).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerCmd, v => v.menuSetDefaultMultipleServer).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultLoadBalanceServerCmd, v => v.menuSetDefaultLoadBalanceServer).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerXrayRandomCmd, v => v.menuSetDefaultMultipleServerXrayRandom).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerXrayRoundRobinCmd, v => v.menuSetDefaultMultipleServerXrayRoundRobin).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerXrayLeastPingCmd, v => v.menuSetDefaultMultipleServerXrayLeastPing).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerXrayLeastLoadCmd, v => v.menuSetDefaultMultipleServerXrayLeastLoad).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SetDefaultMultipleServerSingBoxLeastPingCmd, v => v.menuSetDefaultMultipleServerSingBoxLeastPing).DisposeWith(disposables);
//servers move
this.OneWayBind(ViewModel, vm => vm.SubItems, v => v.cmbMoveToGroup.ItemsSource).DisposeWith(disposables);