mirror of
https://github.com/2dust/v2rayN.git
synced 2026-02-28 13:13:04 +00:00
I18n
This commit is contained in:
parent
4ad89770d8
commit
c7dd495a71
11 changed files with 379 additions and 326 deletions
|
|
@ -52,11 +52,11 @@ public class CoreConfigContextBuilder
|
||||||
|
|
||||||
var (actRuleNode, ruleNodeValidatorResult) = await ResolveNodeAsync(context, ruleOutboundNode, false);
|
var (actRuleNode, ruleNodeValidatorResult) = await ResolveNodeAsync(context, ruleOutboundNode, false);
|
||||||
validatorResult.Warnings.AddRange(ruleNodeValidatorResult.Warnings.Select(w =>
|
validatorResult.Warnings.AddRange(ruleNodeValidatorResult.Warnings.Select(w =>
|
||||||
$"Routing rule {ruleItem.Remarks} outbound node {ruleItem.OutboundTag} warning: {w}"));
|
string.Format(ResUI.MsgRoutingRuleOutboundNodeWarning, ruleItem.Remarks, ruleItem.OutboundTag, w)));
|
||||||
if (!ruleNodeValidatorResult.Success)
|
if (!ruleNodeValidatorResult.Success)
|
||||||
{
|
{
|
||||||
validatorResult.Warnings.AddRange(ruleNodeValidatorResult.Errors.Select(e =>
|
validatorResult.Warnings.AddRange(ruleNodeValidatorResult.Errors.Select(e =>
|
||||||
$"Routing rule {ruleItem.Remarks} outbound node {ruleItem.OutboundTag} error: {e}. Fallback to proxy node only."));
|
string.Format(ResUI.MsgRoutingRuleOutboundNodeError, ruleItem.Remarks, ruleItem.OutboundTag, e)));
|
||||||
ruleItem.OutboundTag = Global.ProxyTag;
|
ruleItem.OutboundTag = Global.ProxyTag;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -235,7 +235,7 @@ public class CoreConfigContextBuilder
|
||||||
if (ancestorsGroup.Contains(childNode.IndexId))
|
if (ancestorsGroup.Contains(childNode.IndexId))
|
||||||
{
|
{
|
||||||
childNodeValidatorResult.Errors.Add(
|
childNodeValidatorResult.Errors.Add(
|
||||||
$"Group {node.Remarks} has a cycle dependency on child node {childNode.Remarks}. Skipping this node.");
|
string.Format(ResUI.MsgGroupCycleDependency, node.Remarks, childNode.Remarks));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -249,9 +249,9 @@ public class CoreConfigContextBuilder
|
||||||
{
|
{
|
||||||
var childNodeResult = RegisterSingleNodeAsync(context, childNode);
|
var childNodeResult = RegisterSingleNodeAsync(context, childNode);
|
||||||
childNodeValidatorResult.Warnings.AddRange(childNodeResult.Warnings.Select(w =>
|
childNodeValidatorResult.Warnings.AddRange(childNodeResult.Warnings.Select(w =>
|
||||||
$"Group {node.Remarks} child node {childNode.Remarks} warning: {w}"));
|
string.Format(ResUI.MsgGroupChildNodeWarning, node.Remarks, childNode.Remarks, w)));
|
||||||
childNodeValidatorResult.Errors.AddRange(childNodeResult.Errors.Select(e =>
|
childNodeValidatorResult.Errors.AddRange(childNodeResult.Errors.Select(e =>
|
||||||
$"Group {node.Remarks} child node {childNode.Remarks} error: {e}. Skipping this node."));
|
string.Format(ResUI.MsgGroupChildNodeError, node.Remarks, childNode.Remarks, e)));
|
||||||
if (!childNodeResult.Success)
|
if (!childNodeResult.Success)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -267,9 +267,9 @@ public class CoreConfigContextBuilder
|
||||||
var childGroupResult =
|
var childGroupResult =
|
||||||
await TraverseGroupNodeAsync(context, childNode, globalVisitedGroup, newAncestorsGroup);
|
await TraverseGroupNodeAsync(context, childNode, globalVisitedGroup, newAncestorsGroup);
|
||||||
childNodeValidatorResult.Warnings.AddRange(childGroupResult.Warnings.Select(w =>
|
childNodeValidatorResult.Warnings.AddRange(childGroupResult.Warnings.Select(w =>
|
||||||
$"Group {node.Remarks} child group node {childNode.Remarks} warning: {w}"));
|
string.Format(ResUI.MsgGroupChildGroupNodeWarning, node.Remarks, childNode.Remarks, w)));
|
||||||
childNodeValidatorResult.Errors.AddRange(childGroupResult.Errors.Select(e =>
|
childNodeValidatorResult.Errors.AddRange(childGroupResult.Errors.Select(e =>
|
||||||
$"Group {node.Remarks} child group node {childNode.Remarks} error: {e}. Skipping this node."));
|
string.Format(ResUI.MsgGroupChildGroupNodeError, node.Remarks, childNode.Remarks, e)));
|
||||||
if (!childGroupResult.Success)
|
if (!childGroupResult.Success)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -280,7 +280,7 @@ public class CoreConfigContextBuilder
|
||||||
|
|
||||||
if (childIndexIdList.Count == 0)
|
if (childIndexIdList.Count == 0)
|
||||||
{
|
{
|
||||||
childNodeValidatorResult.Errors.Add($"Group {node.Remarks} has no valid child node.");
|
childNodeValidatorResult.Errors.Add(string.Format(ResUI.MsgGroupNoValidChildNode, node.Remarks));
|
||||||
return childNodeValidatorResult;
|
return childNodeValidatorResult;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace ServiceLib.Handler.Builder;
|
namespace ServiceLib.Handler.Builder;
|
||||||
|
|
||||||
public record NodeValidatorResult(List<string> Errors, List<string> Warnings)
|
public record NodeValidatorResult(List<string> Errors, List<string> Warnings)
|
||||||
{
|
{
|
||||||
|
|
@ -72,8 +72,8 @@ public class NodeValidator
|
||||||
}
|
}
|
||||||
|
|
||||||
// Basic Property Validation
|
// Basic Property Validation
|
||||||
v.Assert(!item.Address.IsNullOrEmpty(), string.Format(ResUI.InvalidProperty, "Address"));
|
v.Assert(!item.Address.IsNullOrEmpty(), string.Format(ResUI.MsgInvalidProperty, "Address"));
|
||||||
v.Assert(item.Port is > 0 and <= 65535, string.Format(ResUI.InvalidProperty, "Port"));
|
v.Assert(item.Port is > 0 and <= 65535, string.Format(ResUI.MsgInvalidProperty, "Port"));
|
||||||
|
|
||||||
// Network & Core Logic
|
// Network & Core Logic
|
||||||
var net = item.GetNetwork();
|
var net = item.GetNetwork();
|
||||||
|
|
@ -85,14 +85,14 @@ public class NodeValidator
|
||||||
|
|
||||||
if (!Global.SingboxSupportConfigType.Contains(item.ConfigType))
|
if (!Global.SingboxSupportConfigType.Contains(item.ConfigType))
|
||||||
{
|
{
|
||||||
v.Error(string.Format(ResUI.CoreNotSupportProtocol, nameof(ECoreType.sing_box), item.ConfigType));
|
v.Error(string.Format(ResUI.MsgCoreNotSupportProtocol, nameof(ECoreType.sing_box), item.ConfigType));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (coreType is ECoreType.Xray)
|
else if (coreType is ECoreType.Xray)
|
||||||
{
|
{
|
||||||
if (!Global.XraySupportConfigType.Contains(item.ConfigType))
|
if (!Global.XraySupportConfigType.Contains(item.ConfigType))
|
||||||
{
|
{
|
||||||
v.Error(string.Format(ResUI.CoreNotSupportProtocol, nameof(ECoreType.Xray), item.ConfigType));
|
v.Error(string.Format(ResUI.MsgCoreNotSupportProtocol, nameof(ECoreType.Xray), item.ConfigType));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -102,30 +102,30 @@ public class NodeValidator
|
||||||
{
|
{
|
||||||
case EConfigType.VMess:
|
case EConfigType.VMess:
|
||||||
v.Assert(!item.Password.IsNullOrEmpty() && Utils.IsGuidByParse(item.Password),
|
v.Assert(!item.Password.IsNullOrEmpty() && Utils.IsGuidByParse(item.Password),
|
||||||
string.Format(ResUI.InvalidProperty, "Password"));
|
string.Format(ResUI.MsgInvalidProperty, "Password"));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EConfigType.VLESS:
|
case EConfigType.VLESS:
|
||||||
// Example of converting a non-critical issue to Warning if desired
|
// Example of converting a non-critical issue to Warning if desired
|
||||||
if (item.Password.Length <= 30 && !Utils.IsGuidByParse(item.Password))
|
if (item.Password.Length <= 30 && !Utils.IsGuidByParse(item.Password))
|
||||||
{
|
{
|
||||||
v.Assert(!item.Password.IsNullOrEmpty(), string.Format(ResUI.InvalidProperty, "Password"));
|
v.Assert(!item.Password.IsNullOrEmpty(), string.Format(ResUI.MsgInvalidProperty, "Password"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
v.Assert(!item.Password.IsNullOrEmpty(), string.Format(ResUI.InvalidProperty, "Password"));
|
v.Assert(!item.Password.IsNullOrEmpty(), string.Format(ResUI.MsgInvalidProperty, "Password"));
|
||||||
}
|
}
|
||||||
|
|
||||||
v.Assert(Global.Flows.Contains(protocolExtra.Flow ?? string.Empty),
|
v.Assert(Global.Flows.Contains(protocolExtra.Flow ?? string.Empty),
|
||||||
string.Format(ResUI.InvalidProperty, "Flow"));
|
string.Format(ResUI.MsgInvalidProperty, "Flow"));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EConfigType.Shadowsocks:
|
case EConfigType.Shadowsocks:
|
||||||
v.Assert(!item.Password.IsNullOrEmpty(), string.Format(ResUI.InvalidProperty, "Password"));
|
v.Assert(!item.Password.IsNullOrEmpty(), string.Format(ResUI.MsgInvalidProperty, "Password"));
|
||||||
v.Assert(
|
v.Assert(
|
||||||
!string.IsNullOrEmpty(protocolExtra.SsMethod) &&
|
!string.IsNullOrEmpty(protocolExtra.SsMethod) &&
|
||||||
Global.SsSecuritiesInSingbox.Contains(protocolExtra.SsMethod),
|
Global.SsSecuritiesInSingbox.Contains(protocolExtra.SsMethod),
|
||||||
string.Format(ResUI.InvalidProperty, "SsMethod"));
|
string.Format(ResUI.MsgInvalidProperty, "SsMethod"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -135,20 +135,20 @@ public class NodeValidator
|
||||||
if (!item.Cert.IsNullOrEmpty() && CertPemManager.ParsePemChain(item.Cert).Count == 0 &&
|
if (!item.Cert.IsNullOrEmpty() && CertPemManager.ParsePemChain(item.Cert).Count == 0 &&
|
||||||
!item.CertSha.IsNullOrEmpty())
|
!item.CertSha.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
v.Error(string.Format(ResUI.InvalidProperty, "TLS Certificate"));
|
v.Error(string.Format(ResUI.MsgInvalidProperty, "TLS Certificate"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.StreamSecurity == Global.StreamSecurityReality)
|
if (item.StreamSecurity == Global.StreamSecurityReality)
|
||||||
{
|
{
|
||||||
v.Assert(!item.PublicKey.IsNullOrEmpty(), string.Format(ResUI.InvalidProperty, "PublicKey"));
|
v.Assert(!item.PublicKey.IsNullOrEmpty(), string.Format(ResUI.MsgInvalidProperty, "PublicKey"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.Network == nameof(ETransport.xhttp) && !item.Extra.IsNullOrEmpty())
|
if (item.Network == nameof(ETransport.xhttp) && !item.Extra.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
if (JsonUtils.ParseJson(item.Extra) is null)
|
if (JsonUtils.ParseJson(item.Extra) is null)
|
||||||
{
|
{
|
||||||
v.Error(string.Format(ResUI.InvalidProperty, "XHTTP Extra"));
|
v.Error(string.Format(ResUI.MsgInvalidProperty, "XHTTP Extra"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -158,20 +158,20 @@ public class NodeValidator
|
||||||
// sing-box does not support xhttp / kcp transports
|
// sing-box does not support xhttp / kcp transports
|
||||||
if (SingboxUnsupportedTransports.Contains(net))
|
if (SingboxUnsupportedTransports.Contains(net))
|
||||||
{
|
{
|
||||||
return string.Format(ResUI.CoreNotSupportNetwork, nameof(ECoreType.sing_box), net);
|
return string.Format(ResUI.MsgCoreNotSupportNetwork, nameof(ECoreType.sing_box), net);
|
||||||
}
|
}
|
||||||
|
|
||||||
// sing-box does not support non-tcp transports for protocols other than vmess/trojan/vless/shadowsocks
|
// sing-box does not support non-tcp transports for protocols other than vmess/trojan/vless/shadowsocks
|
||||||
if (!SingboxTransportSupportedProtocols.Contains(configType) && net != nameof(ETransport.tcp))
|
if (!SingboxTransportSupportedProtocols.Contains(configType) && net != nameof(ETransport.tcp))
|
||||||
{
|
{
|
||||||
return string.Format(ResUI.CoreNotSupportProtocolTransport,
|
return string.Format(ResUI.MsgCoreNotSupportProtocolTransport,
|
||||||
nameof(ECoreType.sing_box), configType.ToString(), net);
|
nameof(ECoreType.sing_box), configType.ToString(), net);
|
||||||
}
|
}
|
||||||
|
|
||||||
// sing-box shadowsocks only supports tcp/ws/quic transports
|
// sing-box shadowsocks only supports tcp/ws/quic transports
|
||||||
if (configType == EConfigType.Shadowsocks && !SingboxShadowsocksAllowedTransports.Contains(net))
|
if (configType == EConfigType.Shadowsocks && !SingboxShadowsocksAllowedTransports.Contains(net))
|
||||||
{
|
{
|
||||||
return string.Format(ResUI.CoreNotSupportProtocolTransport,
|
return string.Format(ResUI.MsgCoreNotSupportProtocolTransport,
|
||||||
nameof(ECoreType.sing_box), configType.ToString(), net);
|
nameof(ECoreType.sing_box), configType.ToString(), net);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
216
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
216
v2rayN/ServiceLib/Resx/ResUI.Designer.cs
generated
|
|
@ -132,33 +132,6 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Core '{0}' does not support network type '{1}'. 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string CoreNotSupportNetwork {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("CoreNotSupportNetwork", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Core '{0}' does not support protocol '{1}'. 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string CoreNotSupportProtocol {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("CoreNotSupportProtocol", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Core '{0}' does not support protocol '{1}' when using transport '{2}'. 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string CoreNotSupportProtocolTransport {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("CoreNotSupportProtocolTransport", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Note that custom configuration relies entirely on your own configuration and does not work with all settings. If you want to use the system proxy, please modify the listening port manually. 的本地化字符串。
|
/// 查找类似 Note that custom configuration relies entirely on your own configuration and does not work with all settings. If you want to use the system proxy, please modify the listening port manually. 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -312,24 +285,6 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Group '{0}' is empty. Please add at least one node. 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string GroupEmpty {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("GroupEmpty", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 {0} Group cannot reference itself or have a circular reference 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string GroupSelfReference {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("GroupSelfReference", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 This is not the correct configuration, please check 的本地化字符串。
|
/// 查找类似 This is not the correct configuration, please check 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -357,15 +312,6 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 The {0} property is invalid, please check. 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string InvalidProperty {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("InvalidProperty", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Invalid address (URL) 的本地化字符串。
|
/// 查找类似 Invalid address (URL) 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -1914,6 +1860,33 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Core '{0}' does not support network type '{1}' 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgCoreNotSupportNetwork {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgCoreNotSupportNetwork", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Core '{0}' does not support protocol '{1}' 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgCoreNotSupportProtocol {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgCoreNotSupportProtocol", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Core '{0}' does not support protocol '{1}' when using transport '{2}' 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgCoreNotSupportProtocolTransport {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgCoreNotSupportProtocolTransport", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Downloaded GeoFile: {0} successfully 的本地化字符串。
|
/// 查找类似 Downloaded GeoFile: {0} successfully 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -1959,6 +1932,60 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Group {0} child group node {1} error: {2}. Skipping this node. 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgGroupChildGroupNodeError {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgGroupChildGroupNodeError", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Group {0} child group node {1} warning: {2} 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgGroupChildGroupNodeWarning {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgGroupChildGroupNodeWarning", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Group {0} child node {1} error: {2}. Skipping this node. 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgGroupChildNodeError {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgGroupChildNodeError", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Group {0} child node {1} warning: {2} 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgGroupChildNodeWarning {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgGroupChildNodeWarning", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Group {0} has a cycle dependency on child node {1}. Skipping this node. 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgGroupCycleDependency {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgGroupCycleDependency", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Group {0} has no valid child node. 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgGroupNoValidChildNode {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgGroupNoValidChildNode", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Information 的本地化字符串。
|
/// 查找类似 Information 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -1968,6 +1995,15 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 The {0} property is invalid, please check 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgInvalidProperty {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgInvalidProperty", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Please enter the URL 的本地化字符串。
|
/// 查找类似 Please enter the URL 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -1977,6 +2013,15 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Not support protocol '{0}' 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgNotSupportProtocol {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgNotSupportProtocol", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 No valid subscriptions set 的本地化字符串。
|
/// 查找类似 No valid subscriptions set 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -1995,6 +2040,24 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Routing rule {0} outbound node {1} error: {2}. Fallback to proxy node only. 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgRoutingRuleOutboundNodeError {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgRoutingRuleOutboundNodeError", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Routing rule {0} outbound node {1} warning: {2} 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgRoutingRuleOutboundNodeWarning {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgRoutingRuleOutboundNodeWarning", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Filter, press Enter to execute 的本地化字符串。
|
/// 查找类似 Filter, press Enter to execute 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -2103,15 +2166,6 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Node alias '{0}' does not exist. 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string NodeTagNotExist {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("NodeTagNotExist", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Non-VMess or SS protocol 的本地化字符串。
|
/// 查找类似 Non-VMess or SS protocol 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -2139,15 +2193,6 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Not support protocol '{0}'. 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string NotSupportProtocol {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("NotSupportProtocol", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Scan completed, no valid QR code found 的本地化字符串。
|
/// 查找类似 Scan completed, no valid QR code found 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -2229,24 +2274,6 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Policy group: 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string PolicyGroupPrefix {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("PolicyGroupPrefix", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Proxy chained: 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string ProxyChainedPrefix {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("ProxyChainedPrefix", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Global hotkey {0} registration failed, reason: {1} 的本地化字符串。
|
/// 查找类似 Global hotkey {0} registration failed, reason: {1} 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -2310,15 +2337,6 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 查找类似 Routing rule outbound: 的本地化字符串。
|
|
||||||
/// </summary>
|
|
||||||
public static string RoutingRuleOutboundPrefix {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("RoutingRuleOutboundPrefix", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Run as Admin 的本地化字符串。
|
/// 查找类似 Run as Admin 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -1539,38 +1539,20 @@
|
||||||
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
||||||
<value>Multi-Configuration Fallback by Xray</value>
|
<value>Multi-Configuration Fallback by Xray</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportNetwork" xml:space="preserve">
|
<data name="MsgCoreNotSupportNetwork" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support network type '{1}'.</value>
|
<value>Core '{0}' does not support network type '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocolTransport" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocolTransport" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support protocol '{1}' when using transport '{2}'.</value>
|
<value>Core '{0}' does not support protocol '{1}' when using transport '{2}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocol" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocol" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support protocol '{1}'.</value>
|
<value>Core '{0}' does not support protocol '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ProxyChainedPrefix" xml:space="preserve">
|
<data name="MsgInvalidProperty" xml:space="preserve">
|
||||||
<value>Proxy chained: </value>
|
<value>The {0} property is invalid, please check</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RoutingRuleOutboundPrefix" xml:space="preserve">
|
<data name="MsgNotSupportProtocol" xml:space="preserve">
|
||||||
<value>Routing rule outbound: </value>
|
<value>Not support protocol '{0}'</value>
|
||||||
</data>
|
|
||||||
<data name="PolicyGroupPrefix" xml:space="preserve">
|
|
||||||
<value>Policy group: </value>
|
|
||||||
</data>
|
|
||||||
<data name="NodeTagNotExist" xml:space="preserve">
|
|
||||||
<value>Node alias '{0}' does not exist.</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupEmpty" xml:space="preserve">
|
|
||||||
<value>Group '{0}' is empty. Please add at least one node.</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidProperty" xml:space="preserve">
|
|
||||||
<value>The {0} property is invalid, please check.</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupSelfReference" xml:space="preserve">
|
|
||||||
<value>{0} Group cannot reference itself or have a circular reference</value>
|
|
||||||
</data>
|
|
||||||
<data name="NotSupportProtocol" xml:space="preserve">
|
|
||||||
<value>Not support protocol '{0}'.</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
||||||
<value>If the system does not have a tray function, please do not enable it</value>
|
<value>If the system does not have a tray function, please do not enable it</value>
|
||||||
|
|
@ -1668,4 +1650,28 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbFinalmask" xml:space="preserve">
|
<data name="TbFinalmask" xml:space="preserve">
|
||||||
<value>Finalmask</value>
|
<value>Finalmask</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeWarning" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeError" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} error: {2}. Fallback to proxy node only.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupCycleDependency" xml:space="preserve">
|
||||||
|
<value>Group {0} has a cycle dependency on child node {1}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupNoValidChildNode" xml:space="preserve">
|
||||||
|
<value>Group {0} has no valid child node.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -1536,38 +1536,20 @@
|
||||||
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
||||||
<value>Xray basculement (multi-sélection)</value>
|
<value>Xray basculement (multi-sélection)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportNetwork" xml:space="preserve">
|
<data name="MsgCoreNotSupportNetwork" xml:space="preserve">
|
||||||
<value>Le cœur « {0} » ne prend pas en charge le type de réseau « {1} ».</value>
|
<value>Le cœur « {0} » ne prend pas en charge le type de réseau « {1} »</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocolTransport" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocolTransport" xml:space="preserve">
|
||||||
<value>Le cœur « {0} » ne prend pas en charge le protocole « {1} » avec le mode de transport « {2} ».</value>
|
<value>Le cœur « {0} » ne prend pas en charge le protocole « {1} » avec le mode de transport « {2} »</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocol" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocol" xml:space="preserve">
|
||||||
<value>Le cœur « {0} » ne prend pas en charge le protocole « {1} ».</value>
|
<value>Le cœur « {0} » ne prend pas en charge le protocole « {1} »</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ProxyChainedPrefix" xml:space="preserve">
|
<data name="MsgInvalidProperty" xml:space="preserve">
|
||||||
<value>Chaîne de proxy : </value>
|
|
||||||
</data>
|
|
||||||
<data name="RoutingRuleOutboundPrefix" xml:space="preserve">
|
|
||||||
<value>Règle de routage sortante : </value>
|
|
||||||
</data>
|
|
||||||
<data name="PolicyGroupPrefix" xml:space="preserve">
|
|
||||||
<value>Groupe de stratégie : </value>
|
|
||||||
</data>
|
|
||||||
<data name="NodeTagNotExist" xml:space="preserve">
|
|
||||||
<value>L’alias « {0} » n’existe pas.</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupEmpty" xml:space="preserve">
|
|
||||||
<value>Le groupe « {0} » est vide. Veuillez ajouter au moins une configuration.</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidProperty" xml:space="preserve">
|
|
||||||
<value>La propriété {0} est invalide, veuillez vérifier</value>
|
<value>La propriété {0} est invalide, veuillez vérifier</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GroupSelfReference" xml:space="preserve">
|
<data name="MsgNotSupportProtocol" xml:space="preserve">
|
||||||
<value>Le groupe {0} ne peut pas se référencer lui-même ni créer de référence circulaire</value>
|
<value>Protocole « {0} » non pris en charge</value>
|
||||||
</data>
|
|
||||||
<data name="NotSupportProtocol" xml:space="preserve">
|
|
||||||
<value>Protocole « {0} » non pris en charge.</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
||||||
<value>Si le système n’a pas de zone de notif., n’activez pas cette option</value>
|
<value>Si le système n’a pas de zone de notif., n’activez pas cette option</value>
|
||||||
|
|
@ -1665,4 +1647,28 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbFinalmask" xml:space="preserve">
|
<data name="TbFinalmask" xml:space="preserve">
|
||||||
<value>Finalmask</value>
|
<value>Finalmask</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeWarning" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeError" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} error: {2}. Fallback to proxy node only.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupCycleDependency" xml:space="preserve">
|
||||||
|
<value>Group {0} has a cycle dependency on child node {1}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupNoValidChildNode" xml:space="preserve">
|
||||||
|
<value>Group {0} has no valid child node.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
|
||||||
|
|
@ -1539,38 +1539,20 @@
|
||||||
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
||||||
<value>Multi-Configuration Fallback by Xray</value>
|
<value>Multi-Configuration Fallback by Xray</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportNetwork" xml:space="preserve">
|
<data name="MsgCoreNotSupportNetwork" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support network type '{1}'.</value>
|
<value>Core '{0}' does not support network type '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocolTransport" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocolTransport" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support protocol '{1}' when using transport '{2}'.</value>
|
<value>Core '{0}' does not support protocol '{1}' when using transport '{2}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocol" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocol" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support protocol '{1}'.</value>
|
<value>Core '{0}' does not support protocol '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ProxyChainedPrefix" xml:space="preserve">
|
<data name="MsgInvalidProperty" xml:space="preserve">
|
||||||
<value>Proxy chained: </value>
|
<value>The {0} property is invalid, please check</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RoutingRuleOutboundPrefix" xml:space="preserve">
|
<data name="MsgNotSupportProtocol" xml:space="preserve">
|
||||||
<value>Routing rule outbound: </value>
|
<value>Not support protocol '{0}'</value>
|
||||||
</data>
|
|
||||||
<data name="PolicyGroupPrefix" xml:space="preserve">
|
|
||||||
<value>Policy group: </value>
|
|
||||||
</data>
|
|
||||||
<data name="NodeTagNotExist" xml:space="preserve">
|
|
||||||
<value>Node alias '{0}' does not exist.</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupEmpty" xml:space="preserve">
|
|
||||||
<value>Group '{0}' is empty. Please add at least one node.</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidProperty" xml:space="preserve">
|
|
||||||
<value>The {0} property is invalid, please check.</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupSelfReference" xml:space="preserve">
|
|
||||||
<value>{0} Group cannot reference itself or have a circular reference</value>
|
|
||||||
</data>
|
|
||||||
<data name="NotSupportProtocol" xml:space="preserve">
|
|
||||||
<value>Not support protocol '{0}'.</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
||||||
<value>If the system does not have a tray function, please do not enable it</value>
|
<value>If the system does not have a tray function, please do not enable it</value>
|
||||||
|
|
@ -1668,4 +1650,28 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbFinalmask" xml:space="preserve">
|
<data name="TbFinalmask" xml:space="preserve">
|
||||||
<value>Finalmask</value>
|
<value>Finalmask</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeWarning" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeError" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} error: {2}. Fallback to proxy node only.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupCycleDependency" xml:space="preserve">
|
||||||
|
<value>Group {0} has a cycle dependency on child node {1}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupNoValidChildNode" xml:space="preserve">
|
||||||
|
<value>Group {0} has no valid child node.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -1539,38 +1539,20 @@
|
||||||
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
||||||
<value>Fallback by Xray</value>
|
<value>Fallback by Xray</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportNetwork" xml:space="preserve">
|
<data name="MsgCoreNotSupportNetwork" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support network type '{1}'.</value>
|
<value>Core '{0}' does not support network type '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocolTransport" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocolTransport" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support protocol '{1}' when using transport '{2}'.</value>
|
<value>Core '{0}' does not support protocol '{1}' when using transport '{2}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocol" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocol" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support protocol '{1}'.</value>
|
<value>Core '{0}' does not support protocol '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ProxyChainedPrefix" xml:space="preserve">
|
<data name="MsgInvalidProperty" xml:space="preserve">
|
||||||
<value>Proxy chained: </value>
|
<value>The {0} property is invalid, please check</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RoutingRuleOutboundPrefix" xml:space="preserve">
|
<data name="MsgNotSupportProtocol" xml:space="preserve">
|
||||||
<value>Routing rule outbound: </value>
|
<value>Not support protocol '{0}'</value>
|
||||||
</data>
|
|
||||||
<data name="PolicyGroupPrefix" xml:space="preserve">
|
|
||||||
<value>Policy group: </value>
|
|
||||||
</data>
|
|
||||||
<data name="NodeTagNotExist" xml:space="preserve">
|
|
||||||
<value>Node alias '{0}' does not exist.</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupEmpty" xml:space="preserve">
|
|
||||||
<value>Group '{0}' is empty. Please add at least one node.</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidProperty" xml:space="preserve">
|
|
||||||
<value>The {0} property is invalid, please check.</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupSelfReference" xml:space="preserve">
|
|
||||||
<value>{0} Group cannot reference itself or have a circular reference</value>
|
|
||||||
</data>
|
|
||||||
<data name="NotSupportProtocol" xml:space="preserve">
|
|
||||||
<value>Not support protocol '{0}'.</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
||||||
<value>If the system does not have a tray function, please do not enable it</value>
|
<value>If the system does not have a tray function, please do not enable it</value>
|
||||||
|
|
@ -1668,4 +1650,28 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbFinalmask" xml:space="preserve">
|
<data name="TbFinalmask" xml:space="preserve">
|
||||||
<value>Finalmask</value>
|
<value>Finalmask</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeWarning" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeError" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} error: {2}. Fallback to proxy node only.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupCycleDependency" xml:space="preserve">
|
||||||
|
<value>Group {0} has a cycle dependency on child node {1}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupNoValidChildNode" xml:space="preserve">
|
||||||
|
<value>Group {0} has no valid child node.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -1539,38 +1539,20 @@
|
||||||
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
||||||
<value>Multi-Configuration Fallback by Xray</value>
|
<value>Multi-Configuration Fallback by Xray</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportNetwork" xml:space="preserve">
|
<data name="MsgCoreNotSupportNetwork" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support network type '{1}'.</value>
|
<value>Core '{0}' does not support network type '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocolTransport" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocolTransport" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support protocol '{1}' when using transport '{2}'.</value>
|
<value>Core '{0}' does not support protocol '{1}' when using transport '{2}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocol" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocol" xml:space="preserve">
|
||||||
<value>Core '{0}' does not support protocol '{1}'.</value>
|
<value>Core '{0}' does not support protocol '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ProxyChainedPrefix" xml:space="preserve">
|
<data name="MsgInvalidProperty" xml:space="preserve">
|
||||||
<value>Proxy chained: </value>
|
<value>The {0} property is invalid, please check</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RoutingRuleOutboundPrefix" xml:space="preserve">
|
<data name="MsgNotSupportProtocol" xml:space="preserve">
|
||||||
<value>Routing rule outbound: </value>
|
<value>Not support protocol '{0}'</value>
|
||||||
</data>
|
|
||||||
<data name="PolicyGroupPrefix" xml:space="preserve">
|
|
||||||
<value>Policy group: </value>
|
|
||||||
</data>
|
|
||||||
<data name="NodeTagNotExist" xml:space="preserve">
|
|
||||||
<value>Node alias '{0}' does not exist.</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupEmpty" xml:space="preserve">
|
|
||||||
<value>Group '{0}' is empty. Please add at least one node.</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidProperty" xml:space="preserve">
|
|
||||||
<value>The {0} property is invalid, please check.</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupSelfReference" xml:space="preserve">
|
|
||||||
<value>{0} Group cannot reference itself or have a circular reference</value>
|
|
||||||
</data>
|
|
||||||
<data name="NotSupportProtocol" xml:space="preserve">
|
|
||||||
<value>Not support protocol '{0}'.</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
||||||
<value>If the system does not have a tray function, please do not enable it</value>
|
<value>If the system does not have a tray function, please do not enable it</value>
|
||||||
|
|
@ -1668,4 +1650,28 @@ The "Get Certificate" action may fail if a self-signed certificate is used or if
|
||||||
<data name="TbFinalmask" xml:space="preserve">
|
<data name="TbFinalmask" xml:space="preserve">
|
||||||
<value>Finalmask</value>
|
<value>Finalmask</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeWarning" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeError" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} error: {2}. Fallback to proxy node only.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupCycleDependency" xml:space="preserve">
|
||||||
|
<value>Group {0} has a cycle dependency on child node {1}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupNoValidChildNode" xml:space="preserve">
|
||||||
|
<value>Group {0} has no valid child node.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -1536,38 +1536,20 @@
|
||||||
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
||||||
<value>多选故障转移 Xray</value>
|
<value>多选故障转移 Xray</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportNetwork" xml:space="preserve">
|
<data name="MsgCoreNotSupportNetwork" xml:space="preserve">
|
||||||
<value>核心 '{0}' 不支持网络类型 '{1}'。</value>
|
<value>核心 '{0}' 不支持网络类型 '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocolTransport" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocolTransport" xml:space="preserve">
|
||||||
<value>核心 '{0}' 在使用传输方式 '{2}' 时不支持协议 '{1}'。</value>
|
<value>核心 '{0}' 在使用传输方式 '{2}' 时不支持协议 '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocol" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocol" xml:space="preserve">
|
||||||
<value>核心 '{0}' 不支持协议 '{1}'。</value>
|
<value>核心 '{0}' 不支持协议 '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ProxyChainedPrefix" xml:space="preserve">
|
<data name="MsgInvalidProperty" xml:space="preserve">
|
||||||
<value>代理链: </value>
|
<value>{0} 属性无效,请检查</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RoutingRuleOutboundPrefix" xml:space="preserve">
|
<data name="MsgNotSupportProtocol" xml:space="preserve">
|
||||||
<value>路由规则出站: </value>
|
<value>不支持协议 '{0}'</value>
|
||||||
</data>
|
|
||||||
<data name="PolicyGroupPrefix" xml:space="preserve">
|
|
||||||
<value>策略组: </value>
|
|
||||||
</data>
|
|
||||||
<data name="NodeTagNotExist" xml:space="preserve">
|
|
||||||
<value>别名 '{0}' 不存在。</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupEmpty" xml:space="preserve">
|
|
||||||
<value>组“{0}”为空。请至少添加一个配置。</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidProperty" xml:space="preserve">
|
|
||||||
<value>{0}属性无效,请检查</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupSelfReference" xml:space="preserve">
|
|
||||||
<value>{0} 分组不能引用自身或循环引用</value>
|
|
||||||
</data>
|
|
||||||
<data name="NotSupportProtocol" xml:space="preserve">
|
|
||||||
<value>不支持协议 '{0}'。</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
||||||
<value>如果系统没有托盘功能,请不要开启</value>
|
<value>如果系统没有托盘功能,请不要开启</value>
|
||||||
|
|
@ -1665,4 +1647,28 @@
|
||||||
<data name="TbFinalmask" xml:space="preserve">
|
<data name="TbFinalmask" xml:space="preserve">
|
||||||
<value>Finalmask</value>
|
<value>Finalmask</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeWarning" xml:space="preserve">
|
||||||
|
<value>路由规则 {0} 出站节点 {1} 警告:{2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeError" xml:space="preserve">
|
||||||
|
<value>路由规则 {0} 出站节点 {1} 错误:{2}。已回退为仅使用代理节点。</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupCycleDependency" xml:space="preserve">
|
||||||
|
<value>节点组 {0} 与子节点 {1} 存在循环依赖,已跳过该节点。</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeWarning" xml:space="preserve">
|
||||||
|
<value>节点组 {0} 子节点 {1} 警告:{2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeError" xml:space="preserve">
|
||||||
|
<value>节点组 {0} 子节点 {1} 错误:{2}。已跳过该节点。</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeWarning" xml:space="preserve">
|
||||||
|
<value>节点组 {0} 子节点组 {1} 警告:{2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeError" xml:space="preserve">
|
||||||
|
<value>节点组 {0} 子节点组 {1} 错误:{2}。已跳过该节点。</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupNoValidChildNode" xml:space="preserve">
|
||||||
|
<value>节点组 {0} 下没有有效的子节点。</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -1536,38 +1536,20 @@
|
||||||
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
<data name="menuGenGroupMultipleServerXrayFallback" xml:space="preserve">
|
||||||
<value>多選容錯移轉 Xray</value>
|
<value>多選容錯移轉 Xray</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportNetwork" xml:space="preserve">
|
<data name="MsgCoreNotSupportNetwork" xml:space="preserve">
|
||||||
<value>核心 '{0}' 不支援網路類型 '{1}'.</value>
|
<value>核心 '{0}' 不支援網路類型 '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocolTransport" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocolTransport" xml:space="preserve">
|
||||||
<value>核心 '{0}' 在使用傳輸方式 '{2}' 時不支援協定 '{1}'.</value>
|
<value>核心 '{0}' 在使用傳輸方式 '{2}' 時不支援協定 '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CoreNotSupportProtocol" xml:space="preserve">
|
<data name="MsgCoreNotSupportProtocol" xml:space="preserve">
|
||||||
<value>核心 '{0}' 不支援協定 '{1}'.</value>
|
<value>核心 '{0}' 不支援協定 '{1}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ProxyChainedPrefix" xml:space="preserve">
|
<data name="MsgInvalidProperty" xml:space="preserve">
|
||||||
<value>代理鏈: </value>
|
<value>{0} 屬性無效,請檢查</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RoutingRuleOutboundPrefix" xml:space="preserve">
|
<data name="MsgNotSupportProtocol" xml:space="preserve">
|
||||||
<value>路由規則出站: </value>
|
<value>不支援協定 '{0}'</value>
|
||||||
</data>
|
|
||||||
<data name="PolicyGroupPrefix" xml:space="preserve">
|
|
||||||
<value>策略組: </value>
|
|
||||||
</data>
|
|
||||||
<data name="NodeTagNotExist" xml:space="preserve">
|
|
||||||
<value>別名 '{0}' 不存在。</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupEmpty" xml:space="preserve">
|
|
||||||
<value>組“{0}”為空.請至少添加一個配置。</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidProperty" xml:space="preserve">
|
|
||||||
<value>{0}屬性無效,請檢查</value>
|
|
||||||
</data>
|
|
||||||
<data name="GroupSelfReference" xml:space="preserve">
|
|
||||||
<value>{0} 分組不能引用自身或循環引用</value>
|
|
||||||
</data>
|
|
||||||
<data name="NotSupportProtocol" xml:space="preserve">
|
|
||||||
<value>不支援協定 '{0}'.</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
<data name="TbSettingsHide2TrayWhenCloseTip" xml:space="preserve">
|
||||||
<value>如果系統沒有託盤功能,請不要開啟</value>
|
<value>如果系統沒有託盤功能,請不要開啟</value>
|
||||||
|
|
@ -1665,4 +1647,28 @@
|
||||||
<data name="TbFinalmask" xml:space="preserve">
|
<data name="TbFinalmask" xml:space="preserve">
|
||||||
<value>Finalmask</value>
|
<value>Finalmask</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeWarning" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgRoutingRuleOutboundNodeError" xml:space="preserve">
|
||||||
|
<value>Routing rule {0} outbound node {1} error: {2}. Fallback to proxy node only.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupCycleDependency" xml:space="preserve">
|
||||||
|
<value>Group {0} has a cycle dependency on child node {1}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeWarning" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} warning: {2}</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupChildGroupNodeError" xml:space="preserve">
|
||||||
|
<value>Group {0} child group node {1} error: {2}. Skipping this node.</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgGroupNoValidChildNode" xml:space="preserve">
|
||||||
|
<value>Group {0} has no valid child node.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -234,13 +234,6 @@ public class AddGroupServerViewModel : MyReactiveObject
|
||||||
|
|
||||||
SelectedSource.SetProtocolExtra(protocolExtra);
|
SelectedSource.SetProtocolExtra(protocolExtra);
|
||||||
|
|
||||||
var hasCycle = await GroupProfileManager.HasCycle(SelectedSource.IndexId, protocolExtra);
|
|
||||||
if (hasCycle)
|
|
||||||
{
|
|
||||||
NoticeManager.Instance.Enqueue(string.Format(ResUI.GroupSelfReference, remarks));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (await ConfigHandler.AddServerCommon(_config, SelectedSource) == 0)
|
if (await ConfigHandler.AddServerCommon(_config, SelectedSource) == 0)
|
||||||
{
|
{
|
||||||
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
|
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue