精简版第四轮补裁(P4): 页面层摘除 + Xray更新端点下线 + 本机核心监管下线
页面层(用户真机截图发现前两轮漏裁): - 设置: 摘除 Telegram机器人/邮件菜单与页面, 及页内残留入口(通知页/外部流量/LDAP/2FA设置页) - Xray配置: 摘除负载均衡/DNS/高级配置菜单与页面; 基础配置(出站+路由)完好 - 总览: 摘除 Xray更新弹窗(VersionModal+GeodataSection)全部入口, 版本号改为静态展示 - 13个locale同步摘除461个已删功能专属翻译键(逐键核查前后端引用为零; i18n-dead-keys测试全绿) Xray更新后端(经调查确认仅服务本机bin/xray, 与agent下发/订阅无关): - 删除 getXrayVersion/installXray/updateGeofile 路由与handler(访问返回404) - 删除 ServerService 对应实现与校验和函数; 同步api-docs/monitor白名单/openapi 本机核心监管下线(设计: 主控永不运行本机xray, 入站全在agent): - XrayService.RestartXray 降级为no-op(一次性Warning说明日志); StopXray无进程时幂等返回 - web.go 摘除启动拉起本机核心/CheckXrayRunning看门狗(1s)/ApplyPendingRestart cron(30s)/XrayTrafficJob/CheckClientIpJob 注册 - ApplyPendingRestart 降级为消费即清, 其测试更新为新语义 - XrayMetricsService.Sample 短路: 不再每2s探本机/debug/vars, 状态优雅置为不可用 - 配置生成(纯JSON)/agent链路/订阅/入站CRUD未动; 状态读数优雅归零(stop/Unknown) 注: TestGetXrayConfig_EnabledClientsStillEmitted 在基线945b3a5同样失败(既有问题, 非本轮引入)
This commit is contained in:
@@ -67,16 +67,12 @@
|
||||
"success": "Thành công",
|
||||
"lastOnline": "Lần online gần nhất",
|
||||
"lastSubFetch": "Lần tải gói đăng ký gần nhất",
|
||||
"getVersion": "Lấy phiên bản",
|
||||
"install": "Cài đặt",
|
||||
"clients": "Các khách hàng",
|
||||
"usage": "Sử dụng",
|
||||
"twoFactorCode": "Mã",
|
||||
"remained": "Còn lại",
|
||||
"security": "Bảo vệ",
|
||||
"emptyDnsDesc": "Không có máy chủ DNS nào được thêm.",
|
||||
"emptyFakeDnsDesc": "Không có máy chủ Fake DNS nào được thêm.",
|
||||
"emptyBalancersDesc": "Không có bộ cân bằng tải nào được thêm.",
|
||||
"somethingWentWrong": "Đã xảy ra lỗi",
|
||||
"subscription": {
|
||||
"title": "Thông tin đăng ký",
|
||||
@@ -86,7 +82,6 @@
|
||||
"uploaded": "Đã tải lên",
|
||||
"expiry": "Hết hạn",
|
||||
"totalQuota": "Tổng hạn mức",
|
||||
"individualLinks": "Liên kết riêng lẻ",
|
||||
"active": "Hoạt động",
|
||||
"inactive": "Không hoạt động",
|
||||
"unlimited": "Không giới hạn",
|
||||
@@ -136,9 +131,6 @@
|
||||
"xrayStatus": "Xray",
|
||||
"stopXray": "Dừng",
|
||||
"restartXray": "Khởi động lại",
|
||||
"xraySwitch": "Phiên bản",
|
||||
"xrayUpdates": "Cập nhật Xray",
|
||||
"xraySwitchClickDesk": "Hãy lựa chọn thận trọng, vì các phiên bản cũ có thể không tương thích với các cấu hình hiện tại.",
|
||||
"updatePanel": "Cập nhật Panel",
|
||||
"panelUpdateDesc": "Điều này sẽ cập nhật 3X-UI lên bản phát hành mới nhất và khởi động lại dịch vụ panel.",
|
||||
"currentPanelVersion": "Phiên bản panel hiện tại",
|
||||
@@ -200,9 +192,6 @@
|
||||
"download": "Tải xuống",
|
||||
"sent": "Đã gửi",
|
||||
"received": "Đã nhận",
|
||||
"xraySwitchVersionDialog": "Bạn có chắc chắn muốn thay đổi phiên bản Xray không?",
|
||||
"xraySwitchVersionDialogDesc": "Hành động này sẽ thay đổi phiên bản Xray thành #version#.",
|
||||
"xraySwitchVersionPopover": "Xray đã được cập nhật thành công",
|
||||
"panelUpdateDialog": "Bạn có chắc muốn cập nhật panel không?",
|
||||
"panelUpdateDialogDesc": "Điều này sẽ cập nhật 3X-UI lên #version# và khởi động lại dịch vụ panel.",
|
||||
"panelUpdateStartedPopover": "Bắt đầu cập nhật panel",
|
||||
@@ -210,24 +199,6 @@
|
||||
"panelUpdateFailedDesc": "Bản cập nhật không hoàn tất thành công. Hãy kiểm tra nhật ký máy chủ, hoặc chạy 'x-ui update' từ dòng lệnh.",
|
||||
"panelUpdateUnknownTitle": "Không thể xác nhận việc cập nhật đã hoàn tất",
|
||||
"panelUpdateUnknownDesc": "Panel không báo cáo kết quả kịp thời. Hãy tải lại trang để kiểm tra phiên bản hiện tại, hoặc kiểm tra nhật ký máy chủ.",
|
||||
"geofileUpdateDialog": "Bạn có chắc chắn muốn cập nhật geofile không?",
|
||||
"geofileUpdateDialogDesc": "Hành động này sẽ cập nhật tệp #filename#.",
|
||||
"geofilesUpdateDialogDesc": "Thao tác này sẽ cập nhật tất cả các tập tin.",
|
||||
"geofilesUpdateAll": "Cập nhật tất cả",
|
||||
"geofileUpdatePopover": "Geofile đã được cập nhật thành công",
|
||||
"geodataTitle": "Tự động cập nhật Geodata",
|
||||
"geodataHint": "Xray tải các tệp này theo lịch và nạp lại nóng mà không cần khởi động lại. URL phải là HTTPS. Mỗi tệp phải tồn tại sẵn trong thư mục bin thì Xray mới có thể cập nhật.",
|
||||
"geodataCron": "Lịch cập nhật (cron)",
|
||||
"geodataOutbound": "Tải qua outbound (tùy chọn)",
|
||||
"geodataFile": "Tên tệp",
|
||||
"geodataAddFile": "Thêm tệp",
|
||||
"geodataSaveRestart": "Lưu và khởi động lại Xray",
|
||||
"geodataConfirmTitle": "Lưu cài đặt geodata?",
|
||||
"geodataConfirmContent": "Mẫu cấu hình Xray sẽ được cập nhật và Xray sẽ khởi động lại.",
|
||||
"geodataInvalidUrl": "Mỗi tệp cần một URL HTTPS.",
|
||||
"geodataInvalidFile": "Tên tệp phải là tên đơn giản, ví dụ geosite_custom.dat (không chứa đường dẫn).",
|
||||
"geodataInvalidCron": "Cron phải có 5 trường, ví dụ 0 4 * * *",
|
||||
"geodataEmpty": "Chưa cấu hình tệp nào. Trong quy tắc định tuyến, tham chiếu tệp dạng ext:geosite_custom.dat:category.",
|
||||
"dontRefresh": "Đang tiến hành cài đặt, vui lòng không làm mới trang này.",
|
||||
"logs": "Nhật ký",
|
||||
"accessLogs": "Nhật ký truy cập",
|
||||
@@ -1082,7 +1053,6 @@
|
||||
"warnDefaultBasePath": "Đường dẫn cơ sở mặc định \"/\" đã quá phổ biến — đổi sang đường dẫn ngẫu nhiên.",
|
||||
"warnDefaultSubPath": "Đường dẫn đăng ký mặc định \"/sub/\" đã quá phổ biến — đổi nó.",
|
||||
"warnDefaultJsonPath": "Đường dẫn đăng ký JSON mặc định \"/json/\" đã quá phổ biến — đổi nó.",
|
||||
"TGBotSettings": "Bot Telegram",
|
||||
"panelListeningIP": "IP Nghe của bảng điều khiển",
|
||||
"panelListeningIPDesc": "Mặc định để trống để nghe tất cả các IP.",
|
||||
"panelListeningDomain": "Tên miền của nghe bảng điều khiển",
|
||||
@@ -1107,43 +1077,12 @@
|
||||
"currentPassword": "Mật khẩu hiện tại",
|
||||
"newUsername": "Tên người dùng mới",
|
||||
"newPassword": "Mật khẩu mới",
|
||||
"telegramBotEnable": "Bật Bot Telegram",
|
||||
"telegramBotEnableDesc": "Kết nối với các tính năng của bảng điều khiển này thông qua bot Telegram",
|
||||
"telegramToken": "Token Telegram",
|
||||
"telegramTokenDesc": "Bạn phải nhận token từ quản lý bot Telegram {'@'}botfather",
|
||||
"telegramProxy": "SOCKS Proxy",
|
||||
"telegramProxyDesc": "Nếu bạn cần socks5 proxy để kết nối với Telegram. Điều chỉnh cài đặt của nó theo hướng dẫn.",
|
||||
"telegramAPIServer": "Máy chủ API Telegram",
|
||||
"telegramAPIServerDesc": "Máy chủ API Telegram để sử dụng. Để trống để sử dụng máy chủ mặc định.",
|
||||
"telegramChatId": "Chat ID Telegram của quản trị viên",
|
||||
"telegramChatIdDesc": "Nhiều Chat ID phân tách bằng dấu phẩy. Sử dụng {'@'}userinfobot hoặc sử dụng lệnh '/id' trong bot để lấy Chat ID của bạn.",
|
||||
"telegramNotifyTime": "Thời gian thông báo của bot Telegram",
|
||||
"telegramNotifyTimeDesc": "Tần suất bot Telegram gửi báo cáo định kỳ. Chọn một khoảng thời gian có sẵn, hoặc chọn Tùy chỉnh để nhập biểu thức crontab.",
|
||||
"notifyTime": {
|
||||
"every": "@every — lặp lại theo khoảng thời gian",
|
||||
"hourly": "@hourly — mỗi giờ",
|
||||
"daily": "@daily — mỗi ngày lúc 00:00",
|
||||
"weekly": "@weekly — mỗi tuần",
|
||||
"monthly": "@monthly — mỗi tháng",
|
||||
"custom": "Tùy chỉnh (crontab)",
|
||||
"seconds": "Giây",
|
||||
"minutes": "Phút",
|
||||
"hours": "Giờ",
|
||||
"interval": "Khoảng thời gian",
|
||||
"unit": "Đơn vị"
|
||||
},
|
||||
"tgNotifyBackup": "Sao lưu Cơ sở dữ liệu",
|
||||
"tgNotifyBackupDesc": "Bao gồm tệp sao lưu cơ sở dữ liệu với thông báo báo cáo.",
|
||||
"tgNotifyLogin": "Thông báo Đăng nhập",
|
||||
"tgNotifyLoginDesc": "Hiển thị tên người dùng, địa chỉ IP và thời gian khi ai đó cố gắng đăng nhập vào bảng điều khiển của bạn.",
|
||||
"sessionMaxAge": "Thời gian tối đa của phiên",
|
||||
"sessionMaxAgeDesc": "Thời gian của phiên đăng nhập (đơn vị: phút)",
|
||||
"expireTimeDiff": "Ngưỡng hết hạn cho thông báo",
|
||||
"expireTimeDiffDesc": "Nhận thông báo về việc hết hạn tài khoản trước ngưỡng này (đơn vị: ngày)",
|
||||
"trafficDiff": "Ngưỡng lưu lượng cho thông báo",
|
||||
"trafficDiffDesc": "Nhận thông báo về việc cạn kiệt lưu lượng trước khi đạt đến ngưỡng này (đơn vị: GB)",
|
||||
"tgNotifyCpu": "Ngưỡng cảnh báo tỷ lệ CPU",
|
||||
"tgNotifyCpuDesc": "Nhận thông báo nếu tỷ lệ sử dụng CPU vượt quá ngưỡng này (đơn vị: %)",
|
||||
"timeZone": "Múi giờ",
|
||||
"timeZoneDesc": "Các tác vụ được lên lịch chạy theo thời gian trong múi giờ này.",
|
||||
"subSettings": "Gói đăng ký",
|
||||
@@ -1208,10 +1147,6 @@
|
||||
"subEncryptDesc": "Mã hóa các cấu hình được trả về trong gói đăng ký",
|
||||
"subURI": "URI proxy trung gian",
|
||||
"subURIDesc": "URL cơ sở đầy đủ (scheme://tênmiền[:cổng]/đường-dẫn/) cho liên kết đăng ký và mã QR, dùng thay cho Tên miền/Cổng gói đăng ký. Hãy đặt giá trị này khi đăng ký được truy cập qua proxy trung gian hoặc một tên miền/cổng khác với các mục trên.",
|
||||
"externalTrafficInformEnable": "Thông báo giao thông bên ngoài",
|
||||
"externalTrafficInformEnableDesc": "Thông báo API ngoài mỗi khi cập nhật lưu lượng.",
|
||||
"externalTrafficInformURI": "URI thông báo lưu lượng truy cập bên ngoài",
|
||||
"externalTrafficInformURIDesc": "Cập nhật lưu lượng truy cập được gửi tới URI này.",
|
||||
"restartXrayOnClientDisable": "Khởi Động Lại Xray Sau Khi Tự Động Vô Hiệu Hóa",
|
||||
"restartXrayOnClientDisableDesc": "Khi người dùng bị vô hiệu hóa tự động do hết hạn hoặc chạm giới hạn lưu lượng, hãy khởi động lại Xray.",
|
||||
"fragment": "Sự phân mảnh",
|
||||
@@ -1221,38 +1156,6 @@
|
||||
"noisesSett": "Cài đặt Noises",
|
||||
"trustedProxyCidrs": "CIDR proxy tin cậy",
|
||||
"trustedProxyCidrsDesc": "IPs/CIDRs cách nhau bằng dấu phẩy được phép đặt header host, proto và IP client chuyển tiếp.",
|
||||
"ldap": {
|
||||
"enable": "Bật đồng bộ LDAP",
|
||||
"host": "LDAP host",
|
||||
"port": "Cổng LDAP",
|
||||
"useTls": "Dùng TLS (LDAPS)",
|
||||
"skipTlsVerify": "Bỏ qua xác minh chứng chỉ TLS",
|
||||
"skipTlsVerifyDesc": "Không an toàn — tắt xác thực chứng chỉ máy chủ. Chỉ dùng với CA nội bộ/không đáng tin.",
|
||||
"bindDn": "Bind DN",
|
||||
"passwordConfigured": "Đã cấu hình; để trống để giữ mật khẩu hiện tại.",
|
||||
"passwordUnconfigured": "Chưa cấu hình.",
|
||||
"passwordPlaceholder": "Đã cấu hình — nhập giá trị mới để thay thế",
|
||||
"baseDn": "Base DN",
|
||||
"userFilter": "Bộ lọc user",
|
||||
"userAttr": "Thuộc tính user (username/email)",
|
||||
"vlessField": "Thuộc tính flag VLESS",
|
||||
"flagField": "Thuộc tính flag chung (tùy chọn)",
|
||||
"flagFieldDesc": "Nếu đặt, sẽ ghi đè VLESS flag — ví dụ shadowInactive.",
|
||||
"truthyValues": "Giá trị truthy",
|
||||
"truthyValuesDesc": "Cách nhau bằng dấu phẩy; mặc định: true,1,yes,on",
|
||||
"invertFlag": "Đảo flag",
|
||||
"invertFlagDesc": "Bật khi thuộc tính có nghĩa «đã tắt» (ví dụ shadowInactive).",
|
||||
"syncSchedule": "Lịch đồng bộ",
|
||||
"syncScheduleDesc": "Chuỗi kiểu cron, ví dụ @every 1m",
|
||||
"inboundTags": "Tag inbound",
|
||||
"inboundTagsDesc": "Các inbound mà đồng bộ LDAP có thể tự tạo hoặc tự xóa client.",
|
||||
"noInbounds": "Không tìm thấy inbound. Hãy tạo một inbound trong mục Inbound trước.",
|
||||
"autoCreate": "Tự động tạo client",
|
||||
"autoDelete": "Tự động xóa client",
|
||||
"defaultTotalGb": "Tổng mặc định (GB)",
|
||||
"defaultExpiryDays": "Hết hạn mặc định (ngày)",
|
||||
"defaultIpLimit": "Giới hạn IP mặc định"
|
||||
},
|
||||
"subFormats": {
|
||||
"finalMask": "Final Mask",
|
||||
"finalMaskDesc": "Thêm mask TCP/UDP của Xray finalmask và tham số QUIC vào mỗi hồ sơ Xray JSON được tạo. Yêu cầu ứng dụng hỗ trợ đăng ký Xray JSON và lõi Xray mới.",
|
||||
@@ -1276,31 +1179,15 @@
|
||||
"muxSett": "Mux Cài đặt",
|
||||
"direct": "Kết nối trực tiếp",
|
||||
"directDesc": "Trực tiếp thiết lập kết nối với tên miền hoặc dải IP của một quốc gia cụ thể.",
|
||||
"notifications": "Thông báo",
|
||||
"certs": "Chứng chỉ",
|
||||
"externalTraffic": "Lưu lượng bên ngoài",
|
||||
"dateAndTime": "Ngày và giờ",
|
||||
"proxyAndServer": "Proxy và máy chủ",
|
||||
"intervals": "Khoảng thời gian",
|
||||
"information": "Thông tin",
|
||||
"profile": "Hồ sơ",
|
||||
"language": "Ngôn ngữ",
|
||||
"telegramBotLanguage": "Ngôn ngữ của Bot Telegram",
|
||||
"security": {
|
||||
"admin": "Thông tin đăng nhập quản trị viên",
|
||||
"twoFactor": "Xác thực hai yếu tố",
|
||||
"twoFactorEnable": "Bật 2FA",
|
||||
"twoFactorEnableDesc": "Thêm một lớp bảo mật bổ sung để tăng cường an toàn.",
|
||||
"twoFactorModalSetTitle": "Bật xác thực hai yếu tố",
|
||||
"twoFactorModalDeleteTitle": "Tắt xác thực hai yếu tố",
|
||||
"twoFactorModalSteps": "Để thiết lập xác thực hai yếu tố, hãy thực hiện các bước sau:",
|
||||
"twoFactorModalFirstStep": "1. Quét mã QR này trong ứng dụng xác thực hoặc sao chép mã token gần mã QR và dán vào ứng dụng",
|
||||
"twoFactorModalSecondStep": "2. Nhập mã từ ứng dụng",
|
||||
"twoFactorModalRemoveStep": "Nhập mã từ ứng dụng để xóa xác thực hai yếu tố.",
|
||||
"twoFactorModalChangeCredentialsTitle": "Thay đổi thông tin xác thực",
|
||||
"twoFactorModalChangeCredentialsStep": "Nhập mã từ ứng dụng để thay đổi thông tin xác thực quản trị viên.",
|
||||
"twoFactorModalSetSuccess": "Xác thực hai yếu tố đã được thiết lập thành công",
|
||||
"twoFactorModalDeleteSuccess": "Xác thực hai yếu tố đã được xóa thành công",
|
||||
"twoFactorModalError": "Mã sai",
|
||||
"show": "Hiển thị",
|
||||
"hide": "Ẩn",
|
||||
@@ -1323,36 +1210,6 @@
|
||||
"getOutboundTrafficError": "Lỗi khi lấy lưu lượng truy cập đi",
|
||||
"resetOutboundTrafficError": "Lỗi khi đặt lại lưu lượng truy cập đi"
|
||||
},
|
||||
"smtpSettings": "Cài đặt SMTP",
|
||||
"smtpEnable": "Bật thông báo qua email",
|
||||
"smtpEnableDesc": "Bật thông báo qua email bằng SMTP",
|
||||
"smtpHost": "Máy chủ SMTP",
|
||||
"smtpHostDesc": "Tên máy chủ SMTP (ví dụ: smtp.gmail.com)",
|
||||
"smtpPort": "Cổng SMTP",
|
||||
"smtpPortDesc": "Cổng máy chủ SMTP (mặc định: 587)",
|
||||
"smtpUsername": "Tên đăng nhập SMTP",
|
||||
"smtpUsernameDesc": "Tên đăng nhập xác thực SMTP",
|
||||
"smtpFrom": "Địa chỉ người gửi (From)",
|
||||
"smtpFromDesc": "Địa chỉ dùng trong tiêu đề From của email. Để trống để dùng tên người dùng.",
|
||||
"smtpFromName": "Tên người gửi (From)",
|
||||
"smtpFromNameDesc": "Tên hiển thị tùy chọn trước địa chỉ trong tiêu đề From.",
|
||||
"smtpPassword": "Mật khẩu SMTP",
|
||||
"smtpPasswordDesc": "Mật khẩu xác thực SMTP",
|
||||
"smtpTo": "Người nhận",
|
||||
"smtpToDesc": "Các địa chỉ email người nhận, phân cách bằng dấu phẩy",
|
||||
"emailSettings": "Email",
|
||||
"emailNotifications": "Thông báo",
|
||||
"smtpEventBusNotify": "Thông báo sự kiện qua email",
|
||||
"smtpEventBusNotifyDesc": "Chọn những sự kiện nào sẽ kích hoạt thông báo qua email",
|
||||
"tgEventBusNotify": "Thông báo sự kiện qua Telegram",
|
||||
"tgEventBusNotifyDesc": "Chọn những sự kiện nào sẽ kích hoạt thông báo qua Telegram",
|
||||
"testSmtp": "Gửi email thử nghiệm",
|
||||
"testTgBot": "Gửi tin nhắn thử nghiệm",
|
||||
"eventGroupOutbound": "Outbound",
|
||||
"eventGroupXray": "Xray Core",
|
||||
"eventGroupSystem": "Hệ thống",
|
||||
"eventGroupSecurity": "Bảo mật",
|
||||
"eventGroupNode": "Node",
|
||||
"eventOutboundDown": "Ngừng hoạt động",
|
||||
"eventOutboundUp": "Hoạt động",
|
||||
"eventXrayCrash": "Sự cố",
|
||||
@@ -1360,36 +1217,7 @@
|
||||
"eventNodeUp": "Hoạt động",
|
||||
"eventCPUHigh": "CPU cao (%)",
|
||||
"requestFailed": "Yêu cầu thất bại",
|
||||
"smtpEncryption": "Mã hóa",
|
||||
"smtpEncryptionDesc": "Phương thức mã hóa kết nối SMTP",
|
||||
"smtpEncryptionNone": "Không (văn bản thuần)",
|
||||
"smtpEncryptionStartTLS": "STARTTLS",
|
||||
"smtpEncryptionTLS": "TLS (ngầm định)",
|
||||
"smtpStageConnect": "Kết nối",
|
||||
"smtpStageAuth": "Xác thực",
|
||||
"smtpStageSend": "Gửi",
|
||||
"smtpTestSuccess": "Đã gửi email thử nghiệm thành công",
|
||||
"smtpHostNotConfigured": "Chưa cấu hình máy chủ SMTP",
|
||||
"smtpNoRecipients": "Chưa cấu hình người nhận",
|
||||
"smtpFromNotConfigured": "Chưa cấu hình địa chỉ người gửi SMTP",
|
||||
"eventLoginAttempt": "Lần thử đăng nhập",
|
||||
"telegramTokenConfigured": "Đã cấu hình; để trống để giữ token hiện tại.",
|
||||
"telegramTokenPlaceholder": "Đã cấu hình - nhập token mới để thay thế",
|
||||
"smtpPasswordConfigured": "Đã cấu hình; để trống để giữ mật khẩu hiện tại.",
|
||||
"smtpPasswordPlaceholder": "Đã cấu hình - nhập mật khẩu mới để thay thế",
|
||||
"smtpNotInitialized": "SMTP chưa được khởi tạo",
|
||||
"tgBotNotEnabled": "Bot Telegram chưa được bật",
|
||||
"tgTestFailed": "Thử nghiệm Telegram thất bại",
|
||||
"tgTestSuccess": "Đã gửi tin nhắn thử nghiệm tới Telegram",
|
||||
"tgBotNotRunning": "Bot Telegram không hoạt động",
|
||||
"smtpErrorAuth": "Xác thực thất bại — kiểm tra tên đăng nhập và mật khẩu",
|
||||
"smtpErrorStarttls": "Máy chủ yêu cầu STARTTLS — thay đổi kiểu mã hóa",
|
||||
"smtpErrorTls": "Máy chủ yêu cầu TLS — thay đổi kiểu mã hóa",
|
||||
"smtpErrorRefused": "Kết nối bị từ chối — kiểm tra máy chủ và cổng",
|
||||
"smtpErrorTimeout": "Hết thời gian kết nối — không thể truy cập máy chủ",
|
||||
"smtpErrorRelay": "Máy chủ từ chối gửi từ địa chỉ này",
|
||||
"smtpErrorEof": "Kết nối đã bị máy chủ đóng",
|
||||
"smtpErrorUnknown": "Lỗi SMTP: {{ .Error }}",
|
||||
"eventMemoryHigh": "Sử dụng bộ nhớ cao (%)",
|
||||
"remarkTemplate": "Mẫu ghi chú",
|
||||
"remarkTemplateDesc": "Khi được đặt, mục này thay thế mô hình ghi chú cho mọi liên kết đăng ký — hãy viết định dạng riêng của bạn bằng các token biến (dùng nút để chèn chúng). Để trống để dùng mô hình ở trên.",
|
||||
@@ -1483,8 +1311,6 @@
|
||||
"directdomains": "Tên Miền Trực Tiếp",
|
||||
"ipv4Routing": "Định tuyến IPv4",
|
||||
"ipv4RoutingDesc": "Những tùy chọn này sẽ chỉ định kết nối đến các tên miền mục tiêu qua IPv4.",
|
||||
"Template": "Mẫu Cấu hình Xray",
|
||||
"TemplateDesc": "Tạo tệp cấu hình Xray cuối cùng dựa trên mẫu này.",
|
||||
"FreedomStrategy": "Cấu hình Chiến lược cho Giao thức Freedom",
|
||||
"FreedomStrategyDesc": "Đặt chiến lược đầu ra của mạng trong Giao thức Freedom.",
|
||||
"FreedomHappyEyeballs": "Freedom Happy Eyeballs (IPv4/IPv6)",
|
||||
@@ -1500,11 +1326,6 @@
|
||||
"Balancers": "Cân bằng",
|
||||
"balancerTagRequired": "Tag là bắt buộc",
|
||||
"balancerSelectorRequired": "Chọn ít nhất một outbound",
|
||||
"balancerLive": "Mục tiêu hiện tại",
|
||||
"balancerOverride": "Ghi đè đích",
|
||||
"balancerOverridePh": "Tự động (chiến lược)",
|
||||
"balancerLiveRefresh": "Làm mới trạng thái bộ cân bằng tải",
|
||||
"balancerNotRunning": "Bộ cân bằng này không hoạt động trong Xray đang chạy — hãy lưu thay đổi hoặc khởi động Xray trước",
|
||||
"routeTester": "Kiểm tra tuyến đường",
|
||||
"routeTesterDesc": "Hỏi Xray đang chạy outbound nào sẽ xử lý kết nối. Không có lưu lượng nào được gửi — quyết định đến thẳng từ công cụ định tuyến trực tiếp.",
|
||||
"routeTesterDest": "Tên miền hoặc IP",
|
||||
@@ -1516,7 +1337,6 @@
|
||||
"routeTesterViaBalancer": "qua bộ cân bằng tải",
|
||||
"routeTesterDefaultOutbound": "Không có quy tắc định tuyến nào khớp — lưu lượng đến outbound mặc định (đầu tiên).",
|
||||
"Routings": "Quy tắc định tuyến",
|
||||
"completeTemplate": "Tất cả",
|
||||
"logLevel": "Mức đăng nhập",
|
||||
"logLevelDesc": "Cấp độ nhật ký cho nhật ký lỗi, cho biết thông tin cần được ghi lại.",
|
||||
"accessLog": "Nhật ký truy cập",
|
||||
@@ -1544,7 +1364,6 @@
|
||||
"source": "Nguồn",
|
||||
"dest": "Đích",
|
||||
"inbound": "Vào",
|
||||
"balancer": "Cân bằng",
|
||||
"useComma": "Các mục được phân tách bằng dấu phẩy"
|
||||
},
|
||||
"routing": {
|
||||
@@ -1725,32 +1544,7 @@
|
||||
"alreadyAdded": "Máy chủ này đã có trong danh sách outbound. Dùng {reset} để gia hạn khóa.",
|
||||
"provisionFailed": "Không tạo được outbound PIA. Hãy thử lại."
|
||||
},
|
||||
"tabBalancerSettings": "Cài đặt Balancer",
|
||||
"tabObservatory": "Observatory",
|
||||
"observatory": {
|
||||
"autoManaged": "Observer được quản lý tự động từ các balancer của bạn. Điều chỉnh cách chúng dò ở bên dưới; các outbound được theo dõi sẽ tuân theo selector của balancer.",
|
||||
"emptyHint": "Không có observer kết nối nào đang hoạt động. Một observer sẽ được thêm tự động khi bạn tạo balancer Least Ping hoặc Least Load — hoặc balancer Random / Round-robin có fallback — để các balancer dùng observer có thể kiểm tra sức khỏe outbound trước khi chọn mục tiêu.",
|
||||
"mixedLegacy": "Cấu hình này có cả Observatory và Burst Observatory. Xray chỉ dùng một observer toàn cục, nên trạng thái hỗn hợp cũ này không được hỗ trợ; khi lưu balancer, nó sẽ được chuẩn hóa về một observer.",
|
||||
"subjectSelector": "Outbound được theo dõi",
|
||||
"subjectSelectorDesc": "Các thẻ outbound mà observer này dò. Được quản lý tự động từ các balancer của bạn.",
|
||||
"probeURL": "URL dò",
|
||||
"probeURLDesc": "URL được yêu cầu để đo mỗi outbound. Phải trả về HTTP 204.",
|
||||
"probeInterval": "Khoảng thời gian dò",
|
||||
"probeIntervalDesc": "Tần suất dò mỗi outbound, ví dụ 30s, 1m, 2h45m.",
|
||||
"enableConcurrency": "Dò đồng thời",
|
||||
"enableConcurrencyDesc": "Dò tất cả outbound được theo dõi cùng lúc thay vì lần lượt. Nhanh hơn nhưng dễ bị phát hiện trên mạng hơn.",
|
||||
"destination": "Đích dò",
|
||||
"destinationDesc": "URL được yêu cầu để đo mỗi outbound. Phải trả về HTTP 204.",
|
||||
"connectivity": "Kiểm tra kết nối",
|
||||
"connectivityDesc": "URL kiểm tra mạng cục bộ tùy chọn, chỉ thử sau khi đích thất bại. Để trống để bỏ qua.",
|
||||
"interval": "Khoảng thời gian dò",
|
||||
"intervalDesc": "Thời gian trung bình giữa các lần dò cho mỗi outbound, ví dụ 1m. Tối thiểu 10s.",
|
||||
"timeout": "Thời gian chờ dò",
|
||||
"timeoutDesc": "Thời gian chờ một lần dò trước khi coi là thất bại, ví dụ 5s.",
|
||||
"sampling": "Số mẫu",
|
||||
"samplingDesc": "Số kết quả dò gần đây được giữ để chấm điểm mỗi outbound.",
|
||||
"httpMethod": "Phương thức HTTP",
|
||||
"httpMethodDesc": "Phương thức HTTP dùng cho việc dò.",
|
||||
"deleteAlsoObservatory": "Đây là balancer cuối cùng dùng Observatory, nên nó cũng sẽ bị xóa.",
|
||||
"deleteAlsoBurst": "Đây là balancer cuối cùng dùng Burst Observatory, nên nó cũng sẽ bị xóa."
|
||||
},
|
||||
@@ -1762,25 +1556,7 @@
|
||||
},
|
||||
"balancer": {
|
||||
"balancerStrategy": "Chiến lược",
|
||||
"tag": "Tag",
|
||||
"tagDuplicate": "Tag đã được dùng bởi balancer khác",
|
||||
"tagPlaceholder": "tag balancer duy nhất",
|
||||
"selector": "Selector",
|
||||
"fallback": "Fallback",
|
||||
"cycleTooltip": "Vòng lặp: {path} → (quay lại {start})",
|
||||
"expected": "Kỳ vọng",
|
||||
"expectedPlaceholder": "số node tối ưu",
|
||||
"maxRtt": "RTT tối đa",
|
||||
"tolerance": "Dung sai",
|
||||
"baselines": "Baselines",
|
||||
"costs": "Costs",
|
||||
"costMatch": "Mẫu thẻ",
|
||||
"costValue": "Trọng số",
|
||||
"costRegexp": "Khớp biểu thức chính quy",
|
||||
"balancerDeleteInUse": "Không thể xóa load balancer này — nó được sử dụng làm dự phòng cho: {names}",
|
||||
"balancerFallbackCycle": "Không thể đặt load balancer này làm dự phòng — sẽ tạo ra phụ thuộc vòng.",
|
||||
"balancerFallbackInfo": "Lưu lượng sẽ được định tuyến qua: Load Balancer → Loopback → Máy chủ → Load Balancer mục tiêu → kết nối ra ngoài. Điều này thêm một hop bổ sung qua máy chủ, có thể gây ra độ trễ nhẹ.",
|
||||
"fallbackBalancerHint": "Chọn một load balancer khác làm dự phòng",
|
||||
"reservedPrefix": "Tiền tố _bl_ được dành riêng cho các đối tượng loopback nội bộ của bộ cân bằng"
|
||||
},
|
||||
"wireguard": {
|
||||
@@ -1883,55 +1659,8 @@
|
||||
"usage": "Sử dụng",
|
||||
"addOutbound": "Thêm outbound"
|
||||
},
|
||||
"dns": {
|
||||
"enable": "Kích hoạt DNS",
|
||||
"enableDesc": "Kích hoạt máy chủ DNS tích hợp",
|
||||
"tag": "Thẻ gửi đến DNS",
|
||||
"tagDesc": "Thẻ này sẽ có sẵn dưới dạng thẻ Gửi đến trong quy tắc định tuyến.",
|
||||
"clientIp": "IP khách hàng",
|
||||
"clientIpDesc": "Được sử dụng để thông báo cho máy chủ về vị trí IP được chỉ định trong các truy vấn DNS",
|
||||
"disableCache": "Tắt bộ nhớ đệm",
|
||||
"disableCacheDesc": "Tắt bộ nhớ đệm DNS",
|
||||
"disableFallback": "Tắt Fallback",
|
||||
"disableFallbackDesc": "Tắt các truy vấn DNS Fallback",
|
||||
"disableFallbackIfMatch": "Tắt Fallback Nếu Khớp",
|
||||
"disableFallbackIfMatchDesc": "Tắt các truy vấn DNS Fallback khi danh sách tên miền khớp của máy chủ DNS được kích hoạt",
|
||||
"enableParallelQuery": "Bật Truy vấn Song song",
|
||||
"enableParallelQueryDesc": "Bật truy vấn DNS song song đến nhiều máy chủ để phân giải nhanh hơn",
|
||||
"strategy": "Chiến lược truy vấn",
|
||||
"strategyDesc": "Chiến lược tổng thể để phân giải tên miền",
|
||||
"add": "Thêm máy chủ",
|
||||
"edit": "Chỉnh sửa máy chủ",
|
||||
"domains": "Tên miền",
|
||||
"expectIPs": "Các IP Dự Kiến",
|
||||
"unexpectIPs": "IP không mong muốn",
|
||||
"useSystemHosts": "Sử dụng Hosts hệ thống",
|
||||
"useSystemHostsDesc": "Sử dụng file hosts từ hệ thống đã cài đặt",
|
||||
"serveStale": "Phục vụ kết quả hết hạn",
|
||||
"serveStaleDesc": "Trả về kết quả cache đã hết hạn trong khi làm mới ở chế độ nền",
|
||||
"serveExpiredTTL": "TTL hết hạn",
|
||||
"serveExpiredTTLDesc": "Thời gian hiệu lực (giây) của các mục cache hết hạn; 0 = không bao giờ hết hạn",
|
||||
"timeoutMs": "Thời gian chờ (ms)",
|
||||
"skipFallback": "Bỏ qua Fallback",
|
||||
"finalQuery": "Truy vấn cuối",
|
||||
"hosts": "Hosts",
|
||||
"hostsAdd": "Thêm Host",
|
||||
"hostsEmpty": "Chưa có Host nào",
|
||||
"hostsDomain": "Tên miền (vd. domain:example.com)",
|
||||
"hostsValues": "IP hoặc tên miền — nhập và nhấn Enter",
|
||||
"usePreset": "Dùng mẫu",
|
||||
"dnsPresetTitle": "Mẫu DNS",
|
||||
"dnsPresetFamily": "Gia đình",
|
||||
"clearAll": "Xóa tất cả",
|
||||
"clearAllTitle": "Xóa tất cả máy chủ DNS?",
|
||||
"clearAllConfirm": "Thao tác này sẽ xóa toàn bộ máy chủ DNS khỏi danh sách. Không thể hoàn tác.",
|
||||
"dnsLeakWarning": "DNS có thể rò rỉ qua localhost, UDP/TCP không mã hóa, DoH/DoQ chế độ cục bộ, truy vấn fallback hoặc EDNS client IP. Hãy dùng DoH được định tuyến, ghim resolver trong hosts và tắt fallback khi cần riêng tư."
|
||||
},
|
||||
"fakedns": {
|
||||
"add": "Thêm DNS giả",
|
||||
"ipPool": "Mạng con nhóm IP",
|
||||
"poolSize": "Kích thước bể bơi"
|
||||
},
|
||||
"dns": {},
|
||||
"fakedns": {},
|
||||
"defaultOutbound": "Outbound mặc định",
|
||||
"defaultOutboundDesc": "Lưu lượng không khớp quy tắc định tuyến dùng outbound này (mục đầu danh sách)."
|
||||
},
|
||||
@@ -2055,198 +1784,7 @@
|
||||
}
|
||||
},
|
||||
"tgbot": {
|
||||
"keyboardClosed": "❌ Bàn phím đã đóng!",
|
||||
"noResult": "❗ Không có kết quả!",
|
||||
"noQuery": "❌ Không tìm thấy truy vấn! Vui lòng sử dụng lại lệnh!",
|
||||
"wentWrong": "❌ Đã xảy ra lỗi!",
|
||||
"noIpRecord": "❗ Không có bản ghi IP!",
|
||||
"noInbounds": "❗ Không tìm thấy inbound!",
|
||||
"unlimited": "♾ Không giới hạn (Đặt lại)",
|
||||
"add": "Thêm",
|
||||
"month": "Tháng",
|
||||
"months": "Tháng",
|
||||
"days": "Ngày",
|
||||
"hours": "Giờ",
|
||||
"minutes": "Phút",
|
||||
"unknown": "Không xác định",
|
||||
"inbounds": "Inbound",
|
||||
"clients": "Client",
|
||||
"offline": "🔴 Ngoại tuyến",
|
||||
"online": "🟢 Trực tuyến",
|
||||
"commands": {
|
||||
"unknown": "❗ Lệnh không rõ",
|
||||
"pleaseChoose": "👇 Vui lòng chọn:\r\n",
|
||||
"help": "🤖 Chào mừng bạn đến với bot này! Bot được thiết kế để cung cấp cho bạn dữ liệu cụ thể từ máy chủ và cho phép bạn thực hiện các thay đổi cần thiết.\r\n\r\n",
|
||||
"start": "👋 Xin chào <i>{{ .Firstname }}</i>.\r\n",
|
||||
"welcome": "🤖 Chào mừng đến với bot quản lý của <b>{{ .Hostname }}</b>.\r\n",
|
||||
"status": "✅ Bot hoạt động bình thường!",
|
||||
"usage": "❗ Vui lòng cung cấp văn bản để tìm kiếm!",
|
||||
"getID": "🆔 ID của bạn: <code>{{ .ID }}</code>",
|
||||
"helpAdminCommands": "Để khởi động lại Xray Core:\r\n<code>/restart</code>\r\n\r\nĐể tìm kiếm email của khách hàng:\r\n<code>/usage [Email]</code>\r\n\r\nĐể tìm kiếm các nhập (với số liệu thống kê của khách hàng):\r\n<code>/inbound [Ghi chú]</code>\r\n\r\nID Trò chuyện Telegram:\r\n<code>/id</code>",
|
||||
"helpClientCommands": "Để tìm kiếm thống kê, sử dụng lệnh sau:\r\n<code>/usage [Email]</code>\r\n\r\nID Trò chuyện Telegram:\r\n<code>/id</code>",
|
||||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||||
"restartSuccess": "✅ Hoạt động thành công!",
|
||||
"restartFailed": "❗ Lỗi trong quá trình hoạt động.\r\n\r\n<code>Lỗi: {{ .Error }}</code>.",
|
||||
"xrayNotRunning": "❗ Xray Core không chạy.",
|
||||
"startDesc": "Hiển thị menu chính",
|
||||
"helpDesc": "Trợ giúp bot",
|
||||
"statusDesc": "Kiểm tra trạng thái bot",
|
||||
"idDesc": "Hiển thị ID Telegram của bạn",
|
||||
"usageDesc": "Xem mức dùng của khách: /usage email",
|
||||
"inboundDesc": "Tìm inbound: /inbound tên (quản trị)",
|
||||
"restartDesc": "Khởi động lại lõi Xray (quản trị)",
|
||||
"clearallDesc": "Đặt lại lưu lượng mọi khách hàng (quản trị)"
|
||||
},
|
||||
"messages": {
|
||||
"cpuThreshold": "Sử dụng CPU {{ .Percent }}% vượt quá ngưỡng {{ .Threshold }}%",
|
||||
"selectUserFailed": "❌ Lỗi khi chọn người dùng!",
|
||||
"userSaved": "✅ Người dùng Telegram đã được lưu.",
|
||||
"loginSuccess": "✅ Đăng nhập thành công vào bảng điều khiển.\r\n",
|
||||
"loginFailed": "❗️ Đăng nhập vào bảng điều khiển thất bại.\r\n",
|
||||
"report": "🕰 Báo cáo định kỳ: {{ .RunTime }}\r\n",
|
||||
"datetime": "⏰ Ngày-Giờ: {{ .DateTime }}\r\n",
|
||||
"hostname": "💻 Host: {{ .Hostname }}\r\n",
|
||||
"version": "🚀 Phiên bản X-UI: {{ .Version }}\r\n",
|
||||
"xrayVersion": "📡 Phiên bản Xray: {{ .XrayVersion }}\r\n",
|
||||
"ipv6": "🌐 IPv6: {{ .IPv6 }}\r\n",
|
||||
"ipv4": "🌐 IPv4: {{ .IPv4 }}\r\n",
|
||||
"ip": "🌐 IP: {{ .IP }}\r\n",
|
||||
"ips": "🔢 IPs:\r\n{{ .IPs }}\r\n",
|
||||
"serverUpTime": "⏳ Thời gian hoạt động của máy chủ: {{ .UpTime }} {{ .Unit }}\r\n",
|
||||
"serverLoad": "📈 Tải máy chủ: {{ .Load1 }}, {{ .Load2 }}, {{ .Load3 }}\r\n",
|
||||
"serverMemory": "📋 RAM: {{ .Current }}/{{ .Total }}\r\n",
|
||||
"tcpCount": "🔹 TCP: {{ .Count }}\r\n",
|
||||
"udpCount": "🔸 UDP: {{ .Count }}\r\n",
|
||||
"traffic": "🚦 Lưu lượng: {{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n",
|
||||
"xrayStatus": "ℹ️ Trạng thái: {{ .State }}\r\n",
|
||||
"username": "👤 Tên người dùng: {{ .Username }}\r\n",
|
||||
"reason": "❗️ Lý do: {{ .Reason }}\r\n",
|
||||
"time": "⏰ Thời gian: {{ .Time }}\r\n",
|
||||
"inbound": "📍 Inbound: {{ .Remark }}\r\n",
|
||||
"port": "🔌 Cổng: {{ .Port }}\r\n",
|
||||
"expire": "📅 Ngày hết hạn: {{ .Time }}\r\n",
|
||||
"expireIn": "📅 Hết hạn sau: {{ .Time }}\r\n",
|
||||
"active": "💡 Đang hoạt động: {{ .Enable }}\r\n",
|
||||
"enabled": "🚨 Đã bật: {{ .Enable }}\r\n",
|
||||
"online": "🌐 Trạng thái kết nối: {{ .Status }}\r\n",
|
||||
"lastOnline": "🔙 Lần online gần nhất: {{ .Time }}\r\n",
|
||||
"email": "📧 Email: {{ .Email }}\r\n",
|
||||
"upload": "🔼 Tải lên: ↑{{ .Upload }}\r\n",
|
||||
"download": "🔽 Tải xuống: ↓{{ .Download }}\r\n",
|
||||
"total": "📊 Tổng: ↑↓{{ .UpDown }} / {{ .Total }}\r\n",
|
||||
"TGUser": "👤 Người dùng Telegram: {{ .TelegramID }}\r\n",
|
||||
"exhaustedCount": "🚨 Số lần cạn kiệt {{ .Type }}:\r\n",
|
||||
"onlinesCount": "🌐 Khách hàng trực tuyến: {{ .Count }}\r\n",
|
||||
"disabled": "🛑 Vô hiệu hóa: {{ .Disabled }}\r\n",
|
||||
"depleteSoon": "🔜 Sắp cạn kiệt: {{ .Deplete }}\r\n\r\n",
|
||||
"backupTime": "🗄 Thời gian sao lưu: {{ .Time }}\r\n",
|
||||
"refreshedOn": "\r\n📋🔄 Đã cập nhật lần cuối vào: {{ .Time }}\r\n\r\n",
|
||||
"yes": "✅ Có",
|
||||
"no": "❌ Không",
|
||||
"received_email": "📧📥 Email đã được cập nhật.",
|
||||
"received_comment": "💬📥 Bình luận đã được cập nhật.",
|
||||
"email_prompt": "📧 Email mặc định: {{ .ClientEmail }}\n\nVui lòng nhập email của bạn.",
|
||||
"comment_prompt": "💬 Bình luận mặc định: {{ .ClientComment }}\n\nVui lòng nhập bình luận của bạn.",
|
||||
"cancel": "❌ Quá trình đã bị hủy! \n\nBạn có thể bắt đầu lại bất cứ lúc nào bằng cách nhập /start. 🔄",
|
||||
"error_add_client": "⚠️ Lỗi:\n\n {{ .error }}",
|
||||
"using_default_value": "Được rồi, tôi sẽ sử dụng giá trị mặc định. 😊",
|
||||
"incorrect_input": "Dữ liệu bạn nhập không hợp lệ.\nCác chuỗi phải liền mạch và không có dấu cách.\nVí dụ đúng: aaaaaa\nVí dụ sai: aaa aaa 🚫",
|
||||
"AreYouSure": "Bạn có chắc không? 🤔",
|
||||
"SuccessResetTraffic": "📧 Email: {{ .ClientEmail }}\n🏁 Kết quả: ✅ Thành công",
|
||||
"FailedResetTraffic": "📧 Email: {{ .ClientEmail }}\n🏁 Kết quả: ❌ Thất bại \n\n🛠️ Lỗi: [ {{ .ErrorMessage }} ]",
|
||||
"FinishProcess": "🔚 Quá trình đặt lại lưu lượng đã hoàn tất cho tất cả khách hàng.",
|
||||
"eventOutboundDown": "Outbound {{ .Tag }} đã NGỪNG HOẠT ĐỘNG",
|
||||
"eventOutboundUp": "Outbound {{ .Tag }} đã HOẠT ĐỘNG",
|
||||
"eventErrorDetail": "Lỗi: {{ .Error }}",
|
||||
"eventDelayDetail": "Độ trễ: {{ .Delay }}ms",
|
||||
"eventXrayCrash": "Xray GẶP SỰ CỐ",
|
||||
"eventXrayCrashError": "Lỗi: {{ .Error }}",
|
||||
"eventNodeDown": "Node {{ .Name }} đã NGỪNG HOẠT ĐỘNG",
|
||||
"eventNodeUp": "Node {{ .Name }} đã HOẠT ĐỘNG",
|
||||
"eventLoginFallback": "Đăng nhập thất bại từ {{ .Source }}",
|
||||
"memoryThreshold": "Sử dụng bộ nhớ {{ .Percent }}% vượt quá ngưỡng {{ .Threshold }}%"
|
||||
},
|
||||
"buttons": {
|
||||
"closeKeyboard": "❌ Đóng Bàn Phím",
|
||||
"cancel": "❌ Hủy",
|
||||
"cancelReset": "❌ Hủy Đặt Lại",
|
||||
"cancelIpLimit": "❌ Hủy Giới Hạn IP",
|
||||
"confirmResetTraffic": "✅ Xác Nhận Đặt Lại Lưu Lượng?",
|
||||
"confirmClearIps": "✅ Xác Nhận Xóa Các IP?",
|
||||
"confirmRemoveTGUser": "✅ Xác Nhận Xóa Người Dùng Telegram?",
|
||||
"confirmToggle": "✅ Xác nhận Bật/Tắt người dùng?",
|
||||
"dbBackup": "Tải bản sao lưu cơ sở dữ liệu",
|
||||
"serverUsage": "Sử Dụng Máy Chủ",
|
||||
"getInbounds": "Lấy cổng vào",
|
||||
"depleteSoon": "Depleted Soon",
|
||||
"clientUsage": "Lấy Sử Dụng",
|
||||
"onlines": "Khách hàng trực tuyến",
|
||||
"commands": "Lệnh",
|
||||
"refresh": "🔄 Cập Nhật",
|
||||
"clearIPs": "❌ Xóa IP",
|
||||
"removeTGUser": "❌ Xóa Người Dùng Telegram",
|
||||
"selectTGUser": "👤 Chọn Người Dùng Telegram",
|
||||
"selectOneTGUser": "👤 Chọn một người dùng telegram:",
|
||||
"resetTraffic": "📈 Đặt Lại Lưu Lượng",
|
||||
"resetExpire": "📅 Thay đổi ngày hết hạn",
|
||||
"ipLog": "🔢 Nhật ký địa chỉ IP",
|
||||
"ipLimit": "🔢 Giới Hạn địa chỉ IP",
|
||||
"setTGUser": "👤 Đặt Người Dùng Telegram",
|
||||
"toggle": "🔘 Bật / Tắt",
|
||||
"custom": "🔢 Tùy chỉnh",
|
||||
"confirmNumber": "✅ Xác nhận: {{ .Num }}",
|
||||
"confirmNumberAdd": "✅ Xác nhận thêm: {{ .Num }}",
|
||||
"limitTraffic": "🚧 Giới hạn lưu lượng",
|
||||
"getBanLogs": "Cấm nhật ký",
|
||||
"allClients": "Tất cả Khách hàng",
|
||||
"addClient": "Thêm Khách Hàng",
|
||||
"submitDisable": "Gửi Dưới Dạng Vô Hiệu ☑️",
|
||||
"submitEnable": "Gửi Dưới Dạng Kích Hoạt ✅",
|
||||
"use_default": "🏷️ Sử Dụng Mặc Định",
|
||||
"change_email": "⚙️📧 Email",
|
||||
"change_comment": "⚙️💬 Bình Luận",
|
||||
"ResetAllTraffics": "Đặt lại tất cả lưu lượng",
|
||||
"SortedTrafficUsageReport": "Báo cáo sử dụng lưu lượng đã sắp xếp"
|
||||
},
|
||||
"answers": {
|
||||
"successfulOperation": "✅ Thành công!",
|
||||
"errorOperation": "❗ Lỗi Trong Quá Trình Thực Hiện.",
|
||||
"getInboundsFailed": "❌ Không Thể Lấy Được Inbounds",
|
||||
"getClientsFailed": "❌ Không thể lấy khách hàng.",
|
||||
"canceled": "❌ {{ .Email }} : Thao Tác Đã Bị Hủy.",
|
||||
"clientRefreshSuccess": "✅ {{ .Email }} : Cập Nhật Thành Công Cho Khách Hàng.",
|
||||
"IpRefreshSuccess": "✅ {{ .Email }} : Cập Nhật Thành Công Cho IPs.",
|
||||
"TGIdRefreshSuccess": "✅ {{ .Email }} : Cập Nhật Thành Công Cho Người Dùng Telegram.",
|
||||
"resetTrafficSuccess": "✅ {{ .Email }} : Đặt Lại Lưu Lượng Thành Công.",
|
||||
"setTrafficLimitSuccess": "✅ {{ .Email }} : Đã lưu thành công giới hạn lưu lượng.",
|
||||
"expireResetSuccess": "✅ {{ .Email }} : Đặt Lại Ngày Hết Hạn Thành Công.",
|
||||
"resetIpSuccess": "✅ {{ .Email }} : Giới Hạn IP {{ .Count }} Đã Được Lưu Thành Công.",
|
||||
"clearIpSuccess": "✅ {{ .Email }} : IP Đã Được Xóa Thành Công.",
|
||||
"getIpLog": "✅ {{ .Email }} : Lấy nhật ký IP Thành Công.",
|
||||
"getUserInfo": "✅ {{ .Email }} : Lấy Thông Tin Người Dùng Telegram Thành Công.",
|
||||
"removedTGUserSuccess": "✅ {{ .Email }} : Người Dùng Telegram Đã Được Xóa Thành Công.",
|
||||
"enableSuccess": "✅ {{ .Email }} : Đã Bật Thành Công.",
|
||||
"disableSuccess": "✅ {{ .Email }} : Đã Tắt Thành Công.",
|
||||
"askToAddUserId": "Cấu hình của bạn không được tìm thấy!\r\nVui lòng yêu cầu Quản trị viên sử dụng ID người dùng telegram của bạn trong cấu hình của bạn.\r\n\r\nID người dùng của bạn: <code>{{ .TgUserID }}</code>",
|
||||
"chooseClient": "Chọn một Khách hàng cho Inbound {{ .Inbound }}",
|
||||
"chooseInbound": "Chọn một Inbound"
|
||||
}
|
||||
"noIpRecord": "❗ Không có bản ghi IP!"
|
||||
},
|
||||
"email": {
|
||||
"labelStatus": "Trạng thái",
|
||||
"labelOutbound": "Outbound",
|
||||
"labelNode": "Node",
|
||||
"labelError": "Lỗi",
|
||||
"labelDelay": "Độ trễ",
|
||||
"labelUsername": "Tên đăng nhập",
|
||||
"labelIP": "IP",
|
||||
"labelReason": "Lý do",
|
||||
"labelSource": "Nguồn",
|
||||
"statusCrashed": "GẶP SỰ CỐ",
|
||||
"statusHigh": "CAO",
|
||||
"statusSuccess": "THÀNH CÔNG",
|
||||
"statusFailed": "THẤT BẠI",
|
||||
"statusDown": "NGỪNG HOẠT ĐỘNG",
|
||||
"statusUp": "HOẠT ĐỘNG"
|
||||
}
|
||||
"email": {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user