- replaceHost() 自动为裸 IPv6 地址包裹方括号,修复 IPv6 URL 畸形问题 - 新增 ValidateServerIPs() 校验 IP 格式,保存配置时拦截非法输入 - GetServerIPList() 运行时自动过滤非法 IP 条目 - CDN IP 尝试时 TLS/认证错误降级为非致命,跳过该 IP 继续故障转移 而非终止整个连接循环(仅原始域名 ipIndex==0 时才判为致命) - 占位符提示支持 IPv4/IPv6
119 lines
3.9 KiB
TOML
119 lines
3.9 KiB
TOML
WindowTitle = "LMVPN"
|
||
|
||
StatusLabel = "状态"
|
||
ProfileLabel = "配置"
|
||
|
||
StateDisconnected = "已断开"
|
||
StateConnecting = "连接中..."
|
||
StateConnected = "已连接"
|
||
StateReconnecting = "重新连接中..."
|
||
StateError = "错误"
|
||
|
||
BtnConnect = "连接"
|
||
BtnDisconnect = "断开连接"
|
||
BtnAddProfile = "添加配置"
|
||
BtnEdit = "编辑"
|
||
BtnDelete = "删除"
|
||
BtnSave = "保存"
|
||
BtnCancel = "取消"
|
||
BtnOK = "确定"
|
||
|
||
IpLabel = "IP: {{.ip}}"
|
||
Ip6Label = "IPv6: {{.ip}}"
|
||
Ip6None = "IPv6: —"
|
||
IpNone = "IP: —"
|
||
UptimeLabel = "运行时长: {{.uptime}}"
|
||
UptimeNone = "运行时长: —"
|
||
RxV4Label = "IPv4 ↓ {{.bytes}} {{.speed}}"
|
||
TxV4Label = "↑ {{.bytes}} {{.speed}}"
|
||
RxV6Label = "IPv6 ↓ {{.bytes}} {{.speed}}"
|
||
TxV6Label = "↑ {{.bytes}} {{.speed}}"
|
||
RxTotalLabel = "合计 ↓ {{.bytes}} {{.speed}}"
|
||
TxTotalLabel = "↑ {{.bytes}} {{.speed}}"
|
||
RxV4Zero = "IPv4 ↓ 0 B 0 bps"
|
||
TxV4Zero = "↑ 0 B 0 bps"
|
||
RxV6Zero = "IPv6 ↓ 0 B 0 bps"
|
||
TxV6Zero = "↑ 0 B 0 bps"
|
||
RxTotalZero = "合计 ↓ 0 B 0 bps"
|
||
TxTotalZero = "↑ 0 B 0 bps"
|
||
|
||
DlgNoProfileTitle = "无配置"
|
||
DlgNoProfileEditMsg = "请选择要编辑的配置。"
|
||
DlgNoProfileConnectMsg = "请先选择或创建一个配置。"
|
||
DlgDeleteProfileTitle = "删除配置"
|
||
DlgDeleteProfileMsg = '删除配置"{{.name}}"及其存储的凭据?'
|
||
DlgProfileTitle = "配置"
|
||
DlgValidationTitle = "验证"
|
||
DlgValidationMsg = "名称、主机名和用户名为必填项。"
|
||
DlgInvalidIPMsg = "以下 IP 地址格式无效:{{.ips}}"
|
||
DlgDaemonError = "守护进程错误"
|
||
DlgCredentialError = "凭据错误"
|
||
DlgCredentialErrorMsg = "此配置未存储密码。请编辑配置以设置密码。"
|
||
DlgIPCError = "IPC 错误"
|
||
DlgVPNError = "VPN 错误"
|
||
DlgSaveError = "保存错误"
|
||
DlgKeychainError = "钥匙串错误"
|
||
DlgError = "错误"
|
||
DlgAuthError = "认证失败"
|
||
AuthErrWrongCredentials = "用户名或密码错误,请检查凭据。"
|
||
AuthErrUserDisabled = "用户不存在或已被禁用。"
|
||
AuthErrTokenInvalid = "认证令牌无效或已过期。"
|
||
AuthErrRateLimited = "认证尝试过于频繁,请稍后再试。"
|
||
AuthErrMalformed = "认证消息格式错误。"
|
||
|
||
BtnResetDB = "重置数据库"
|
||
DlgResetDBTitle = "重置数据库"
|
||
DlgResetDBMsg = "删除所有配置和连接记录?此操作无法撤销。"
|
||
|
||
BtnProfileList = "配置列表"
|
||
ProfileListTitle = "配置列表"
|
||
DlgNoListSelectTitle = "无选择"
|
||
DlgNoListSelectEditMsg = "请在列表中选择一个配置。"
|
||
DlgNoListSelectDeleteMsg = "请在列表中选择一个配置。"
|
||
|
||
TrayShowWindow = "显示窗口"
|
||
TrayConnect = "连接"
|
||
TrayDisconnect = "断开连接"
|
||
TrayLanguage = "语言"
|
||
TrayLanguageAuto = "自动"
|
||
TrayQuit = "退出"
|
||
|
||
FieldName = "名称"
|
||
FieldProtocol = "协议"
|
||
FieldHost = "主机名"
|
||
FieldServerIPs = "服务器 IP(CDN 优选)"
|
||
FieldPort = "端口"
|
||
FieldPath = "路径"
|
||
FieldUsername = "用户名"
|
||
FieldPassword = "密码"
|
||
FieldAuthMode = "认证方式"
|
||
FieldRoutingMode = "路由模式"
|
||
FieldCustomCIDRs = "自定义 CIDR(逗号分隔)"
|
||
FieldMTUOverride = "MTU 覆盖"
|
||
|
||
PlaceholderCIDRs = "10.0.0.0/8, 172.16.0.0/12"
|
||
PlaceholderMTU = "0 = 使用服务器 MTU"
|
||
PlaceholderPasswordUnchanged = "(未更改)"
|
||
PlaceholderServerIPs = "支持 IPv4/IPv6,例: 1.2.3.4, 5.6.7.8"
|
||
|
||
AuthModeBoth = "全部(JWT + 密码)"
|
||
AuthModeJWT = "JWT"
|
||
AuthModePassword = "密码"
|
||
|
||
RoutingModeFull = "全隧道"
|
||
RoutingModeSplit = "分离隧道"
|
||
RoutingModeCustom = "自定义"
|
||
|
||
FieldTLS = "TLS 证书"
|
||
FieldTLSCACert = "CA 证书 (PEM)"
|
||
FieldTLSCAPath = "CA 证书路径"
|
||
HintTLSCAReplacesSystem = "设置自定义 CA 将替换系统根证书,使用公共 CA(如 Let's Encrypt)的服务器将验证失败。"
|
||
FieldTLSInsecure = "跳过验证 (不安全)"
|
||
FieldTLSPinnedHash = "证书固定 (SHA-256)"
|
||
PlaceholderTLSCACert = "-----BEGIN CERTIFICATE-----..."
|
||
PlaceholderTLSCAPath = "/path/to/ca.crt"
|
||
PlaceholderTLSPinnedHash = "sha256:a1b2c3..."
|
||
BtnBrowse = "浏览..."
|
||
DlgTLSError = "TLS 证书错误"
|
||
TLSErrorVerification = "服务器证书验证失败。"
|