i18n(panel): migrate hardcoded panel strings to en-US and translate all locales

Surface ~400 hardcoded English labels, tooltips, placeholders, dt/divider
text, modal okText/cancelText, and Spin loading from the panel pages
(clients/groups/inbounds/nodes/settings/xray/sub/index) into
web/translation/en-US.json under existing pages.<page>.* namespaces, with
JSX swapped to t(...). Brand and protocol identifiers (TLS, MTU, SNI,
NordVPN, Cloudflare WARP, etc.) stay literal.

Sync all 12 non-English locales (ar-EG, es-ES, fa-IR, id-ID, ja-JP,
pt-BR, ru-RU, tr-TR, uk-UA, vi-VN, zh-CN, zh-TW) to match en-US's
structure and translate the 521 new key paths per locale. Every locale
file now has 1539 lines, mirroring en-US ordering.

Also remove a dead duplicate "info": "Info" key under pages.inbounds
that collided with the new pages.inbounds.info.* object.

Backend: bulk attach/detach errors in web/service/client.go now route
through logger.Warningf (so they appear under /panel/api/server/logs/)
instead of only living on the response payload.
This commit is contained in:
MHSanaei
2026-05-28 18:03:07 +02:00
parent 0829f1ecd4
commit 72b97efa8a
34 changed files with 6391 additions and 1125 deletions
+454 -37
View File
@@ -8,15 +8,22 @@
"save": "Kaydet",
"logout": "Çıkış Yap",
"create": "Oluştur",
"add": "Ekle",
"remove": "Kaldır",
"update": "Güncelle",
"copy": "Kopyala",
"copied": "Kopyalandı",
"more": "daha",
"download": "İndir",
"remark": "Açıklama",
"enable": "Etkin",
"protocol": "Protokol",
"search": "Ara",
"filter": "Filtrele",
"filter": "Filtre",
"all": "Tümü",
"from": "Başlangıç",
"to": "Bitiş",
"done": "Tamam",
"loading": "Yükleniyor...",
"refresh": "Yenile",
"clear": "Temizle",
@@ -27,7 +34,7 @@
"check": "Kontrol Et",
"indefinite": "Belirsiz",
"unlimited": "Sınırsız",
"none": "Hiçbiri",
"none": "Yok",
"qrCode": "QR Kod",
"info": "Daha Fazla Bilgi",
"edit": "Düzenle",
@@ -39,9 +46,9 @@
"encryption": "Şifreleme",
"useIPv4ForHost": "Ana bilgisayar için IPv4 kullan",
"transmission": "İletim",
"host": "Sunucu",
"host": "Host",
"path": "Yol",
"camouflage": "Kandırma",
"camouflage": "Karartma",
"status": "Durum",
"enabled": "Etkin",
"disabled": "Devre Dışı",
@@ -97,6 +104,7 @@
"dashboard": "Genel Bakış",
"inbounds": "Gelenler",
"clients": "İstemciler",
"groups": "Gruplar",
"nodes": "Düğümler",
"settings": "Panel Ayarları",
"xray": "Xray Yapılandırmaları",
@@ -120,16 +128,16 @@
},
"index": {
"title": "Genel Bakış",
"cpu": "İşlemci",
"cpu": "CPU",
"logicalProcessors": "Mantıksal işlemciler",
"frequency": "Frekans",
"swap": "Takas",
"swap": "Swap",
"storage": "Depolama",
"memory": "RAM",
"threads": "İş parçacıkları",
"threads": "İş parçacığı",
"xrayStatus": "Xray",
"stopXray": "Durdur",
"restartXray": "Yeniden Başlat",
"restartXray": "Yeniden başlat",
"xraySwitch": "Sürüm",
"xrayUpdates": "Xray Güncellemeleri",
"xraySwitchClick": "Geçiş yapmak istediğiniz sürümü seçin.",
@@ -166,7 +174,7 @@
"toggleIpVisibility": "IP görünürlüğünü değiştir",
"overallSpeed": "Genel hız",
"upload": "Yükleme",
"download": "İndirme",
"download": "İndir",
"totalData": "Toplam veri",
"sent": "Gönderilen",
"received": "Alınan",
@@ -270,14 +278,14 @@
},
"protocol": "Protokol",
"port": "Port",
"portMap": "Port Atama",
"portMap": "Port eşlemesi",
"traffic": "Trafik",
"details": "Detaylar",
"transportConfig": "Taşıma",
"expireDate": "Süre",
"createdAt": "Oluşturuldu",
"updatedAt": "Güncellendi",
"resetTraffic": "Trafiği Sıfırla",
"resetTraffic": "Trafiği sıfırla",
"addInbound": "Gelen Ekle",
"generalActions": "Genel Eylemler",
"modifyInbound": "Geleni Düzenle",
@@ -292,11 +300,29 @@
"delAllClients": "Tüm istemcileri sil",
"delAllClientsConfirmTitle": "\"{remark}\" içindeki {count} istemcinin tamamı silinsin mi?",
"delAllClientsConfirmContent": "Bu inbound'a ait tüm istemcileri ve trafik kayıtlarını siler. Inbound'un kendisi korunur. Bu işlem geri alınamaz.",
"attachClients": "İstemcileri şuna bağla…",
"addClientsToGroup": "İstemcileri gruba ekle…",
"attachClientsTitle": "«{remark}» gelenindeki istemcileri bağla",
"attachClientsDesc": "Aynı {count} istemciyi (aynı UUID/parola ve paylaşılan trafik) seçilen gelenlere bağlar. Bu gelende de kalırlar.",
"attachClientsTargets": "Hedef gelenler",
"attachClientsNoTargets": "Bağlanacak uyumlu başka gelen yok.",
"attachClientsResult": "Bağlandı {attached}, atlandı {skipped}.",
"attachClientsResultMixed": "Bağlandı {attached}, atlandı {skipped}, hata {errors}.",
"attachClientsSelectLabel": "Bağlanacak istemciler",
"attachClientsSearchPlaceholder": "Email veya yorum ara",
"attachClientsStatusDisabled": "Devre dışı",
"attachClientsSelectedCount": "{total} içinden {selected} seçildi",
"detachClients": "İstemcileri çöz",
"detachClientsTitle": "«{remark}» gelenindeki istemcileri çöz",
"detachClientsDesc": "Seçilen istemcileri yalnızca bu gelenden kaldırır. İstemci kayıtları korunur (tamamen kaldırmak için Delete kullanın). Kaynakta toplam {count} istemci var.",
"detachClientsResult": "Çözüldü {detached}, atlandı {skipped}.",
"detachClientsResultMixed": "Çözüldü {detached}, atlandı {skipped}, hata {errors}.",
"detachClientsSelectLabel": "Çözülecek istemciler",
"exportLinksTitle": "Inbound bağlantılarını dışa aktar",
"exportSubsTitle": "Abonelik bağlantılarını dışa aktar",
"exportAllLinksTitle": "Tüm inbound bağlantılarını dışa aktar",
"exportAllSubsTitle": "Tüm abonelik bağlantılarını dışa aktar",
"inboundJsonTitle": "Inbound JSON",
"inboundJsonTitle": "Gelen JSON",
"deleteClient": "Müşteriyi Sil",
"deleteClientContent": "Müşteriyi silmek istediğinizden emin misiniz?",
"resetTrafficContent": "Trafiği sıfırlamak istediğinizden emin misiniz?",
@@ -333,7 +359,7 @@
"delDepletedClients": "Bitmiş Müşterileri Sil",
"delDepletedClientsTitle": "Bitmiş Müşterileri Sil",
"delDepletedClientsContent": "Tüm bitmiş müşterileri silmek istediğinizden emin misiniz?",
"email": "E-posta",
"email": "Email",
"emailDesc": "Lütfen benzersiz bir e-posta adresi sağlayın.",
"IPLimit": "IP Limiti",
"IPLimitDesc": "Sayının aşılması durumunda gelen devre dışı bırakılır. (0 = devre dışı)",
@@ -341,7 +367,8 @@
"IPLimitlogDesc": "IP geçmiş günlüğü. (devre dışı bırakıldıktan sonra gelini etkinleştirmek için günlüğü temizleyin)",
"IPLimitlogclear": "Günlüğü Temizle",
"setDefaultCert": "Panelden Sertifikayı Ayarla",
"streamTab": "Akış",
"setDefaultCertEmpty": "Panel için sertifika yapılandırılmamış. Önce Ayarlar'dan ayarlayın.",
"streamTab": "Stream",
"securityTab": "Güvenlik",
"sniffingTab": "Sniffing",
"sniffingMetadataOnly": "Yalnızca üst veri",
@@ -363,13 +390,12 @@
"settingsHelp": "Xray settings bloğunun sarmalayıcısı:",
"sniffing": "Sniffing",
"sniffingHelp": "Xray sniffing bloğunun sarmalayıcısı:",
"stream": "Akış",
"stream": "Stream",
"streamHelp": "Xray stream bloğunun sarmalayıcısı:",
"jsonErrorPrefix": "Gelişmiş JSON"
},
"telegramDesc": "Lütfen Telegram Sohbet Kimliği sağlayın. (botta '/id' komutunu kullanın) veya ({'@'}userinfobot)",
"subscriptionDesc": "Abonelik URL'inizi bulmak için 'Detaylar'a gidin. Ayrıca, aynı adı birden fazla müşteri için kullanabilirsiniz.",
"info": "Bilgi",
"same": "Aynı",
"inboundData": "Gelenin Verileri",
"exportInbound": "Geleni Dışa Aktar",
@@ -406,6 +432,139 @@
"getNewmldsa65Error": "mldsa65 sertifikası alınırken hata oluştu.",
"getNewVlessEncError": "VlessEnc sertifikası alınırken hata oluştu."
},
"form": {
"moveUp": "Yukarı",
"moveDown": "Aşağı",
"addAll": "Tümünü ekle",
"addAllFallbackTooltip": "Henüz bağlanmamış her uygun gelen için bir fallback satırı ekler",
"peers": "Peers",
"addPeer": "Peer ekle",
"keepAlive": "Keep-alive",
"autoSystemRoutesTooltip": "Yalnızca Windows. CIDR'ler eşleşen trafiğin TUN üzerinden gitmesi için sistem yönlendirme tablosuna otomatik eklenir.",
"autoOutboundsInterface": "Otomatik giden arabirimi",
"autoOutboundsInterfaceTooltip": "Giden trafiği için fiziksel arabirim. Tespit için 'auto' kullanın; Auto system routes açıkken otomatik etkinleşir.",
"rewriteAddress": "Adresi yeniden yaz",
"rewritePort": "Port'u yeniden yaz",
"allowedNetwork": "İzin verilen ağ",
"followRedirect": "Redirect'i takip et",
"accounts": "Hesaplar",
"allowTransparent": "Şeffafa izin ver",
"encryptionMethod": "Şifreleme yöntemi",
"visionTestseed": "Vision testseed",
"version": "Sürüm",
"udpIdleTimeout": "UDP idle timeout (s)",
"masquerade": "Masquerade",
"type": "Tip",
"upstreamUrl": "Upstream URL",
"rewriteHost": "Host'u yeniden yaz",
"skipTlsVerify": "TLS doğrulamayı atla",
"directory": "Dizin",
"statusCode": "Durum kodu",
"body": "Body",
"headers": "Başlıklar",
"proxyProtocol": "Proxy Protocol",
"requestVersion": "İstek sürümü",
"requestMethod": "İstek yöntemi",
"requestPath": "İstek yolu",
"requestHeaders": "İstek başlıkları",
"responseVersion": "Yanıt sürümü",
"responseStatus": "Yanıt durumu",
"responseReason": "Yanıt sebebi",
"responseHeaders": "Yanıt başlıkları",
"heartbeatPeriod": "Heartbeat periyodu",
"serviceName": "Servis adı",
"authority": "Authority",
"multiMode": "Multi Mode",
"maxBufferedUpload": "Maks. tamponlu yükleme",
"maxUploadSize": "Maks. yükleme boyutu (Byte)",
"streamUpServer": "Stream-Up Server",
"serverMaxHeaderBytes": "Sunucu maks. başlık bayt",
"paddingBytes": "Padding bayt",
"uplinkHttpMethod": "Uplink HTTP yöntemi",
"paddingObfsMode": "Padding obfs modu",
"paddingKey": "Padding Key",
"paddingHeader": "Padding Header",
"paddingPlacement": "Padding konumu",
"paddingMethod": "Padding yöntemi",
"sessionPlacement": "Session Placement",
"sessionKey": "Session Key",
"sequencePlacement": "Sequence Placement",
"sequenceKey": "Sequence Key",
"uplinkDataPlacement": "Uplink Data Placement",
"uplinkDataKey": "Uplink Data Key",
"noSseHeader": "SSE başlığı yok",
"ttiMs": "TTI (ms)",
"uplinkMbps": "Yükleme (MB/s)",
"downlinkMbps": "İndirme (MB/s)",
"cwndMultiplier": "CWND çarpanı",
"maxSendingWindow": "Maks. gönderme penceresi",
"externalProxy": "Harici proxy",
"sniPlaceholder": "SNI (varsayılan host)",
"fingerprint": "Fingerprint",
"defaultOption": "Varsayılan",
"routeMark": "Route Mark",
"tcpKeepAliveInterval": "TCP Keep Alive Interval",
"tcpKeepAliveIdle": "TCP Keep Alive Idle",
"tcpMaxSeg": "TCP Max Seg",
"tcpUserTimeout": "TCP User Timeout",
"tcpWindowClamp": "TCP Window Clamp",
"tcpFastOpen": "TCP Fast Open",
"multipathTcp": "Multipath TCP",
"penetrate": "Penetrate",
"v6Only": "Yalnızca V6",
"tcpCongestion": "TCP Congestion",
"dialerProxy": "Dialer Proxy",
"trustedXForwardedFor": "Güvenilir X-Forwarded-For",
"addressPortStrategy": "Adres+port stratejisi",
"tryDelayMs": "Deneme gecikmesi (ms)",
"prioritizeIPv6": "IPv6 önceliği",
"interleave": "Interleave",
"maxConcurrentTry": "Maks. eş zamanlı deneme",
"customSockopt": "Özel sockopt",
"addCustomOption": "Özel seçenek ekle",
"serverNameIndication": "SNI",
"cipherSuites": "Cipher Suites",
"autoOption": "Otomatik",
"minMaxVersion": "Min/Maks sürüm",
"rejectUnknownSni": "Bilinmeyen SNI reddet",
"disableSystemRoot": "System Root'u devre dışı bırak",
"sessionResumption": "Oturum sürdürme",
"oneTimeLoading": "Tek seferlik yükleme",
"usageOption": "Kullanım seçeneği",
"buildChain": "Zincir oluştur",
"echKey": "ECH key",
"echConfig": "ECH yapılandırması",
"getNewEchCert": "Yeni ECH sertifikası al",
"show": "Göster",
"xver": "Xver",
"target": "Hedef",
"maxTimeDiff": "Maks. zaman farkı (ms)",
"minClientVer": "Min. istemci sürümü",
"maxClientVer": "Maks. istemci sürümü",
"shortIds": "Short IDs",
"spiderX": "SpiderX",
"getNewCert": "Yeni sertifika al",
"mldsa65Seed": "mldsa65 Seed",
"mldsa65Verify": "mldsa65 Verify",
"getNewSeed": "Yeni Seed al"
},
"info": {
"mode": "Mod",
"grpcServiceName": "grpc serviceName",
"grpcMultiMode": "grpc multiMode",
"interfaceName": "Arabirim adı",
"mtu": "MTU",
"gateway": "Gateway",
"dns": "DNS",
"outboundsInterface": "Giden arabirimi",
"autoSystemRoutes": "Otomatik sistem yönlendirmeleri",
"followRedirect": "FollowRedirect",
"auth": "Auth",
"noKernelTun": "Çekirdeksiz TUN",
"keepAlive": "Keep alive",
"peerNumber": "Peer {n}",
"peerNumberConfig": "Peer {n} yapılandırması"
},
"stream": {
"general": {
"request": "İstek",
@@ -456,6 +615,20 @@
"days": "Gün",
"renew": "Otomatik yenileme",
"renewDesc": "Süre dolduktan sonra otomatik yenileme. (0 = devre dışı) (birim: gün)",
"searchPlaceholder": "Email, yorum, sub ID, UUID, parola, auth ara…",
"filterTitle": "İstemcileri filtrele",
"clearAllFilters": "Tümünü temizle",
"sortOldest": "Önce en eski",
"sortNewest": "Önce en yeni",
"sortRecentlyUpdated": "Son güncellenen",
"sortRecentlyOnline": "Son zamanlarda çevrimiçi",
"sortEmailAZ": "Email A→Z",
"sortEmailZA": "Email Z→A",
"sortMostTraffic": "En çok trafik",
"sortHighestRemaining": "En çok kalan",
"sortExpiringSoonest": "Yakında biten",
"has": "Var",
"hasNot": "Yok",
"title": "İstemciler",
"actions": "Eylemler",
"totalGB": "Toplam Gönderilen/Alınan (GB)",
@@ -465,7 +638,10 @@
"password": "Şifre",
"subId": "Abonelik ID'si",
"online": "Çevrimiçi",
"email": "E-posta",
"email": "Email",
"group": "Grup",
"groupDesc": "İlgili istemcileri gruplamak için mantıksal etiket (ekip, müşteri, bölge). Araç çubuğundan filtrelenebilir.",
"groupPlaceholder": "örn. customer-a",
"comment": "Yorum",
"traffic": "Trafik",
"offline": "Çevrimdışı",
@@ -489,11 +665,45 @@
"resetAllTraffics": "Tüm istemcilerin trafiğini sıfırla",
"resetAllTrafficsTitle": "Tüm istemcilerin trafiği sıfırlansın mı?",
"resetAllTrafficsContent": "Her istemcinin yükleme/indirme sayaçları sıfırlanır. Kotalar ve son kullanma tarihleri etkilenmez. Geri alınamaz.",
"empty": "Henüz istemci yok — başlamak için bir tane ekleyin.",
"deleteConfirmTitle": "{email} istemcisi silinsin mi?",
"deleteConfirmContent": "Bu işlem istemciyi bağlı tüm inbound'lardan kaldırır ve trafik kaydını siler. Geri alınamaz.",
"deleteSelected": "Sil ({count})",
"adjustSelected": "Ayarla ({count})",
"subLinksSelected": "Abonelik bağlantıları ({count})",
"addToGroupTitle": "{count} istemciyi bir gruba ekle",
"addToGroupTooltip": "Mevcut bir grubu seçin veya yeni ad girin. İstemcileri mevcut gruplarından çıkarmak için Ungroup'u kullanın.",
"addToGroupPlaceholder": "Grup adı",
"addToGroupSuccessToast": "{count} istemci {group} grubuna eklendi",
"ungroupSuccessToast": "{count} istemcinin grubu temizlendi",
"ungroup": "Gruptan çıkar",
"ungroupConfirmTitle": "{count} istemciyi gruptan çıkar?",
"ungroupConfirmContent": "Seçilen her istemcinin grup etiketini temizler. İstemciler korunur (tamamen kaldırmak için Delete kullanın).",
"addToGroup": "Gruba ekle",
"attach": "Bağla",
"adjust": "Ayarla",
"subLinks": "Abonelik bağlantıları",
"selectedCount": "{count} seçildi",
"attachSelected": "Bağla ({count})",
"attachToInboundsTitle": "{count} istemciyi gelen(ler)e bağla",
"attachToInboundsDesc": "Seçilen {count} istemciyi (aynı UUID/parola ve paylaşılan trafik) seçilen gelene bağlar. Mevcut bağlantılar korunur.",
"attachToInboundsTargets": "Hedef gelenler",
"attachToInboundsNoTargets": "Bağlanacak çoklu kullanıcılı gelen yok.",
"detachSelected": "Çöz ({count})",
"detach": "Çöz",
"detachFromInboundsTitle": "{count} istemciyi gelen(ler)den çöz",
"detachFromInboundsDesc": "Seçilen {count} istemciyi seçilen gelenden kaldırır. İstemcinin bağlı olmadığı çiftler sessizce atlanır. İstemci kayıtları korunur (tamamen kaldırmak için Delete kullanın).",
"detachFromInboundsTargets": "Çözülecek gelenler",
"detachFromInboundsNoTargets": "Çoklu kullanıcılı gelen yok.",
"detachFromInboundsResult": "Çözüldü {detached}, atlandı {skipped}.",
"detachFromInboundsResultMixed": "Çözüldü {detached}, atlandı {skipped}, hata {errors}.",
"subLinksTitle": "Abonelik bağlantıları ({count})",
"subLinkColumn": "Abonelik URL",
"subJsonLinkColumn": "Abonelik JSON URL",
"subLinksCopyAll": "Tümünü kopyala",
"subLinksCopiedAll": "{count} bağlantı kopyalandı",
"subLinksEmpty": "Seçilen istemcilerin hiçbirinin abonelik ID'si yok.",
"subLinksDisabled": "Abonelik hizmeti devre dışı.",
"subLinksDisabledHint": "Bağlantı oluşturmak için Panel Ayarları → Abonelik'ten etkinleştirin.",
"bulkDeleteConfirmTitle": "{count} istemci silinsin mi?",
"bulkDeleteConfirmContent": "Seçili her istemci bağlı tüm inbound'lardan kaldırılır ve trafik kaydı silinir. Geri alınamaz.",
"bulkAdjustTitle": "{count} istemciyi ayarla",
@@ -508,6 +718,7 @@
"hysteriaAuth": "Hysteria Auth",
"uuid": "UUID",
"flow": "Flow",
"vmessSecurity": "VMess Güvenlik",
"reverseTag": "Reverse tag",
"reverseTagPlaceholder": "İsteğe bağlı Reverse tag",
"telegramId": "Telegram kullanıcı ID'si",
@@ -528,10 +739,48 @@
"delDepleted": "{count} tükenmiş istemci silindi"
}
},
"groups": {
"title": "Gruplar",
"name": "İsim",
"clientCount": "Gruptaki istemciler",
"totalGroups": "Toplam grup",
"totalGroupedClients": "Grubu olan istemciler",
"emptyGroups": "Boş gruplar",
"addGroup": "Grup ekle",
"createSuccess": "«{name}» grubu oluşturuldu.",
"rename": "Yeniden adlandır",
"renameTitle": "{name} yeniden adlandır",
"renameCollision": "«{name}» adında bir grup zaten var.",
"renameSuccess": "{count} istemcinin grubu yeniden adlandırıldı.",
"deleteConfirmTitle": "{name} grubunu sil?",
"deleteConfirmContent": "Bu, grubu siler ve etiketini {count} istemciden temizler. İstemciler silinmez.",
"deleteSuccess": "{count} istemcinin grubu temizlendi.",
"resetTraffic": "Trafiği sıfırla",
"resetConfirmTitle": "{name} grubunun trafiğini sıfırla?",
"resetConfirmContent": "Bu, bu gruptaki tüm {count} istemcinin yukarı/aşağı trafiğini sıfırlar.",
"resetSuccess": "{count} istemcinin trafiği sıfırlandı.",
"adjustSuccess": "{name} içinde {count} istemci ayarlandı.",
"emptyForAction": "Bu grupta henüz istemci yok.",
"deleteGroupOnly": "Grubu sil (istemcileri tut)",
"deleteClients": "Gruptaki istemcileri sil",
"deleteClientsConfirmTitle": "{name} içindeki tüm istemcileri sil?",
"deleteClientsConfirmContent": "Bu, {count} istemciyi trafik kayıtlarıyla birlikte kalıcı olarak siler. Grup etiketi de temizlenir. Geri alınamaz.",
"deleteClientsSuccess": "{count} istemci silindi.",
"deleteClientsMixed": "{ok} silindi, {failed} atlandı",
"addToGroup": "İstemci ekle…",
"addToGroupTitle": "«{name}» grubuna istemci ekle",
"addToGroupDesc": "Bu gruba eklemek için istemcileri seçin. Mevcut gelen bağlantıları korunur; yalnızca grup etiketi değişir. Halihazırda bu grupta olan istemciler listelenmez.",
"addToGroupEmpty": "Eklenecek başka istemci yok.",
"addToGroupResult": "{count} istemci {name} grubuna eklendi.",
"removeFromGroup": "İstemci çıkar…",
"removeFromGroupTitle": "«{name}» grubundan istemci çıkar",
"removeFromGroupDesc": "Bu gruptan çıkarılacak üyeleri seçin. İstemciler korunur (tamamen kaldırmak için «Gruptaki istemcileri sil» kullanın).",
"removeFromGroupResult": "{name} grubundan {count} istemci çıkarıldı."
},
"nodes": {
"title": "Düğümler",
"addNode": "Düğüm Ekle",
"editNode": "Düğümü Düzenle",
"editNode": "Düğümü düzenle",
"totalNodes": "Toplam Düğüm",
"onlineNodes": "Çevrimiçi",
"offlineNodes": "Çevrimdışı",
@@ -543,7 +792,7 @@
"scheme": "Şema",
"address": "Adres",
"port": "Port",
"basePath": "Temel Yol",
"basePath": "Base Path",
"apiToken": "API Token",
"apiTokenPlaceholder": "Uzak panelin Ayarlar sayfasındaki token",
"apiTokenHint": "Uzak panel API token'ını Ayarlar → API Token altında gösterir.",
@@ -555,7 +804,7 @@
"status": "Durum",
"cpu": "CPU",
"mem": "Bellek",
"uptime": "Çalışma Süresi",
"uptime": "Çalışma süresi",
"latency": "Gecikme",
"lastHeartbeat": "Son Sinyal",
"xrayVersion": "Xray Sürümü",
@@ -590,7 +839,7 @@
"title": "Panel Ayarları",
"save": "Kaydet",
"infoDesc": "Burada yapılan her değişikliğin kaydedilmesi gerekir. Değişikliklerin uygulanması için paneli yeniden başlatın.",
"restartPanel": "Paneli Yeniden Başlat",
"restartPanel": "Paneli yeniden başlat",
"restartPanelDesc": "Paneli yeniden başlatmak istediğinizden emin misiniz? Yeniden başlattıktan sonra panele erişemezseniz, sunucudaki panel günlük bilgilerini görüntüleyin.",
"restartPanelSuccess": "Panel başarıyla yeniden başlatıldı",
"actions": "Eylemler",
@@ -615,10 +864,12 @@
"publicKeyPathDesc": "Web paneli için genel anahtar dosya yolu. ('/' ile başlar)",
"privateKeyPath": "Özel Anahtar Yolu",
"privateKeyPathDesc": "Web paneli için özel anahtar dosya yolu. ('/' ile başlar)",
"panelUrlPath": "URI Yolu",
"panelUrlPath": "URI yolu",
"panelUrlPathDesc": "Web paneli için URI yolu. ('/' ile başlar ve '/' ile biter)",
"pageSize": "Sayfa Boyutu",
"pageSizeDesc": "Gelenler tablosu için sayfa boyutunu belirleyin. (0 = devre dışı)",
"panelProxy": "Panel ağ proxy'si",
"panelProxyDesc": "Panelin kendi giden istekleri (geo güncellemeleri, Xray/panel sürüm kontrolleri, Telegram) bu proxy üzerinden yönlendirir; sunucu tarafındaki GitHub/Telegram filtrelemesini atlatmak için. socks5:// veya http(s):// kabul eder, örn. yerel bir Xray SOCKS geleni. Doğrudan bağlantı için boş bırakın.",
"remarkModel": "Açıklama Modeli & Ayırma Karakteri",
"datepicker": "Takvim Türü",
"datepickerPlaceholder": "Tarih Seçin",
@@ -634,7 +885,7 @@
"telegramTokenDesc": "'{'@'}BotFather'dan alınan Telegram bot token.",
"telegramProxy": "SOCKS Proxy",
"telegramProxyDesc": "Telegram'a bağlanmak için SOCKS5 proxy'sini etkinleştirir. (ayarları kılavuzda belirtilen şekilde ayarlayın)",
"telegramAPIServer": "Telegram API Server",
"telegramAPIServer": "Telegram API Sunucusu",
"telegramAPIServerDesc": "Kullanılacak Telegram API sunucusu. Varsayılan sunucuyu kullanmak için boş bırakın.",
"telegramChatId": "Yönetici Sohbet Kimliği",
"telegramChatIdDesc": "Telegram Yönetici Sohbet Kimliği(leri). (virgülle ayrılmış)(buradan alın {'@'}userinfobot) veya (botta '/id' komutunu kullanın)",
@@ -658,6 +909,8 @@
"subEnable": "Abonelik Hizmetini Etkinleştir",
"subEnableDesc": "Abonelik hizmetini etkinleştirir.",
"subJsonEnable": "JSON abonelik uç noktasını bağımsız olarak Etkinleştir/Devre Dışı bırak.",
"subJsonEnableTitle": "JSON aboneliği",
"subClashEnableTitle": "Clash / Mihomo aboneliği",
"subTitle": "Abonelik Başlığı",
"subTitleDesc": "VPN istemcisinde gösterilen başlık",
"subSupportUrl": "Destek URL'si",
@@ -678,13 +931,13 @@
"subCertPathDesc": "Abonelik hizmeti için genel anahtar dosya yolu. ('/' ile başlar)",
"subKeyPath": "Özel Anahtar Yolu",
"subKeyPathDesc": "Abonelik hizmeti için özel anahtar dosya yolu. ('/' ile başlar)",
"subPath": "URI Yolu",
"subPath": "URI yolu",
"subPathDesc": "Abonelik hizmeti için URI yolu. ('/' ile başlar ve '/' ile biter)",
"subDomain": "Dinleme Alan Adı",
"subDomainDesc": "Abonelik hizmeti için alan adı. (tüm alan adlarını ve IP'leri dinlemek için boş bırakın)",
"subUpdates": "Güncelleme Aralıkları",
"subUpdatesDesc": "Müşteri uygulamalarındaki abonelik URL'sinin güncelleme aralıkları. (birim: saat)",
"subEncrypt": "Şifrele",
"subEncrypt": "Kodla",
"subEncryptDesc": "Abonelik hizmetinin döndürülen içeriği Base64 ile şifrelenir.",
"subShowInfo": "Kullanım Bilgisini Göster",
"subShowInfoDesc": "Kalan trafik ve tarih müşteri uygulamalarında görüntülenir.",
@@ -693,7 +946,7 @@
"subURI": "Ters Proxy URI",
"subURIDesc": "Proxy arkasında kullanılacak abonelik URL'sinin URI yolu.",
"externalTrafficInformEnable": "Harici Trafik Bilgisi",
"externalTrafficInformEnableDesc": "Her trafik güncellemesinde harici API'yi bilgilendirin.",
"externalTrafficInformEnableDesc": "Her trafik güncellemesinde harici API'yi bilgilendir.",
"externalTrafficInformURI": "Harici Trafik Bilgisi URI'si",
"externalTrafficInformURIDesc": "Trafik güncellemeleri bu URI'ye gönderildi.",
"restartXrayOnClientDisable": "Otomatik Devre Dışı Sonrası Xray'i Yeniden Başlat",
@@ -703,6 +956,54 @@
"fragmentSett": "Parçalama Ayarları",
"noisesDesc": "Noises'i Etkinleştir.",
"noisesSett": "Noises Ayarları",
"trustedProxyCidrs": "Güvenilir proxy CIDR'leri",
"trustedProxyCidrsDesc": "İletilen host, proto ve istemci IP başlıklarını ayarlamasına izin verilen IP'ler/CIDR'ler (virgülle ayrılmış).",
"ldap": {
"enable": "LDAP senkronizasyonunu etkinleştir",
"host": "LDAP host",
"port": "LDAP port",
"useTls": "TLS kullan (LDAPS)",
"bindDn": "Bind DN",
"passwordConfigured": "Yapılandırıldı; mevcut parolayı korumak için boş bırakın.",
"passwordUnconfigured": "Yapılandırılmadı.",
"passwordPlaceholder": "Yapılandırıldı — değiştirmek için yeni değer girin",
"baseDn": "Base DN",
"userFilter": "Kullanıcı filtresi",
"userAttr": "Kullanıcı özniteliği (username/email)",
"vlessField": "VLESS flag özniteliği",
"flagField": "Genel flag özniteliği (opsiyonel)",
"flagFieldDesc": "Ayarlanırsa VLESS flag'ini geçersiz kılar — örn. shadowInactive.",
"truthyValues": "Truthy değerler",
"truthyValuesDesc": "Virgülle ayrılmış; varsayılan: true,1,yes,on",
"invertFlag": "Flag'i tersine çevir",
"invertFlagDesc": "Öznitelik «devre dışı» anlamına geldiğinde etkinleştirin (örn. shadowInactive).",
"syncSchedule": "Senkronizasyon programı",
"syncScheduleDesc": "cron benzeri dize, örn. @every 1m",
"inboundTags": "Gelen etiketleri",
"inboundTagsDesc": "LDAP senkronizasyonunun istemci otomatik oluşturup/silebileceği gelenler.",
"noInbounds": "Gelen bulunamadı. Önce Gelenler'de bir tane oluşturun.",
"autoCreate": "İstemcileri otomatik oluştur",
"autoDelete": "İstemcileri otomatik sil",
"defaultTotalGb": "Varsayılan toplam (GB)",
"defaultExpiryDays": "Varsayılan son kullanma (gün)",
"defaultIpLimit": "Varsayılan IP limiti"
},
"subFormats": {
"packets": "Paketler",
"length": "Uzunluk",
"interval": "Aralık",
"maxSplit": "Maks. bölünme",
"noises": "Gürültüler",
"noiseItem": "Gürültü №{n}",
"type": "Tip",
"packet": "Paket",
"delayMs": "Gecikme (ms)",
"applyTo": "Şuna uygula",
"addNoise": "+ Gürültü",
"concurrency": "Eşzamanlılık",
"xudpConcurrency": "xudp eşzamanlılık",
"xudpUdp443": "xudp UDP 443"
},
"mux": "Mux",
"muxDesc": "Kurulmuş bir veri akışında birden çok bağımsız veri akışını iletir.",
"muxSett": "Mux Ayarları",
@@ -756,8 +1057,11 @@
"xray": {
"title": "Xray Yapılandırmaları",
"save": "Kaydet",
"restart": "Xray'i Yeniden Başlat",
"restart": "Xray'i yeniden başlat",
"restartSuccess": "Xray başarıyla yeniden başlatıldı",
"restartOutputTitle": "Xray yeniden başlatma çıktısı",
"restartConfirmTitle": "Xray'i yeniden başlat?",
"restartConfirmContent": "Xray hizmeti kaydedilmiş yapılandırma ile yeniden yüklenir.",
"stopSuccess": "Xray başarıyla durduruldu",
"restartError": "Xray yeniden başlatılırken bir hata oluştu.",
"stopError": "Xray durdurulurken bir hata oluştu.",
@@ -794,6 +1098,8 @@
"InboundsDesc": "Belirli müşterileri kabul eder.",
"Outbounds": "Gidenler",
"Balancers": "Dengeler",
"balancerTagRequired": "Etiket gereklidir",
"balancerSelectorRequired": "En az bir giden seçin",
"OutboundsDesc": "Giden trafiğin yolunu ayarlayın.",
"Routings": "Yönlendirme Kuralları",
"RoutingsDesc": "Her kuralın önceliği önemlidir!",
@@ -832,6 +1138,73 @@
"edit": "Kuralı Düzenle",
"useComma": "Virgülle ayrılmış öğeler"
},
"routing": {
"dragToReorder": "Yeniden sıralamak için sürükleyin"
},
"ruleForm": {
"sourceIps": "Kaynak IP'ler",
"sourcePort": "Kaynak port",
"vlessRoute": "VLESS rotası",
"attributes": "Öznitelikler",
"value": "Değer",
"user": "Kullanıcı",
"inboundTags": "Gelen etiketleri",
"outboundTag": "Giden etiketi",
"balancerTag": "Dengeleyici etiketi",
"balancerTagTooltip": "Trafiği yapılandırılmış yük dengeleyicilerden biri üzerinden yönlendirir"
},
"outboundForm": {
"tagDuplicate": "Etiket başka bir giden tarafından kullanılıyor",
"tagRequired": "Etiket gereklidir",
"tagPlaceholder": "benzersiz-etiket",
"localIpPlaceholder": "yerel IP",
"addressRequired": "Adres gereklidir",
"portRequired": "Port gereklidir",
"optional": "opsiyonel",
"udpOverTcp": "UDP over TCP",
"uotVersion": "UoT sürümü",
"inboundTag": "Gelen etiketi",
"inboundTagPlaceholder": "yönlendirme kurallarında kullanılan gelen etiketi",
"responseType": "Yanıt tipi",
"rewriteNetwork": "Ağı yeniden yaz",
"unchanged": "(değişmedi)",
"unchangedAddress": "(değişmedi) örn. 1.1.1.1",
"rules": "Kurallar",
"ruleN": "Kural {n}",
"action": "Eylem",
"redirect": "Redirect",
"fragment": "Fragment",
"finalRules": "Nihai kurallar",
"overrideXrayPrivateIp": "Xray'in varsayılan özel IP bloğunu geçersiz kıl",
"blockDelay": "Engelleme gecikmesi (ms)",
"reverseSniffing": "Ters sniffing",
"workers": "Workers",
"reserved": "Ayrılmış",
"minUploadInterval": "Min. yükleme aralığı (ms)",
"maxUploadSizeBytes": "Maks. yükleme boyutu (bayt)",
"uplinkChunkSize": "Uplink chunk boyutu",
"noGrpcHeader": "gRPC başlığı yok",
"maxConcurrency": "Maks. eşzamanlılık",
"maxConnections": "Maks. bağlantı",
"maxReuseTimes": "Maks. yeniden kullanım",
"maxRequestTimes": "Maks. istek sayısı",
"maxReusableSecs": "Maks. yeniden kullanılabilir saniye",
"keepAlivePeriod": "Keep alive periyodu",
"authPassword": "Auth parolası",
"visionTestpre": "Vision testpre",
"serverNamePlaceholder": "sunucu adı",
"verifyPeerName": "Peer adını doğrula",
"pinnedSha256": "Pinned SHA256",
"shortId": "Short ID",
"sockopts": "Sockopts",
"keepAliveInterval": "Keep alive aralığı",
"markFwmark": "Mark (fwmark)",
"interface": "Arabirim",
"ipv6Only": "Yalnızca IPv6",
"acceptProxyProtocol": "Proxy protocol kabul et",
"tcpUserTimeoutMs": "TCP user timeout (ms)",
"tcpKeepAliveIdleS": "TCP keep-alive idle (s)"
},
"outbound": {
"addOutbound": "Giden Ekle",
"addReverse": "Ters Ekle",
@@ -844,9 +1217,9 @@
"tagDesc": "Benzersiz Etiket",
"address": "Adres",
"reverse": "Ters",
"domain": "Alan Adı",
"domain": "Alan adı",
"type": "Tür",
"bridge": "Köprü",
"bridge": "Bridge",
"portal": "Portal",
"link": "Bağlantı",
"intercon": "Bağlantı",
@@ -860,6 +1233,8 @@
"testSuccess": "Test başarılı",
"testFailed": "Test başarısız",
"testError": "Giden test edilemedi",
"testModeTooltip": "TCP: hızlı dial-only probe. HTTP: xray üzerinden tam istek.",
"testAll": "Tümünü test et",
"nordvpn": "NordVPN",
"accessToken": "Erişim Jetonu",
"country": "Ülke",
@@ -876,6 +1251,16 @@
"balancerSelectors": "Seçiciler",
"tag": "Etiket",
"tagDesc": "Benzersiz Etiket",
"tagDuplicate": "Etiket başka bir dengeleyici tarafından kullanılıyor",
"tagPlaceholder": "benzersiz dengeleyici etiketi",
"selector": "Seçici",
"fallback": "Fallback",
"expected": "Beklenen",
"expectedPlaceholder": "optimal düğüm sayısı",
"maxRtt": "Maks. RTT",
"tolerance": "Tolerans",
"baselines": "Baselines",
"costs": "Costs",
"balancerDesc": "Dengeleyici Etiketi ve Giden Etiketi aynı anda kullanılamaz. Aynı anda kullanıldığında yalnızca giden etiketi çalışır."
},
"wireguard": {
@@ -892,6 +1277,38 @@
"userLevel": "Kullanıcı Seviyesi",
"userLevelDesc": "Bu giriş yoluyla yapılan tüm bağlantılar bu kullanıcı seviyesini kullanacaktır. Varsayılan değer 0'dır"
},
"nord": {
"accessToken": "Access token",
"privateKey": "Özel anahtar",
"noServers": "Seçilen ülke için sunucu bulunamadı",
"noPublicKey": "Seçilen sunucu NordLynx genel anahtarı yayınlamıyor.",
"outboundAdded": "NordVPN giden eklendi",
"outboundUpdated": "NordVPN giden güncellendi"
},
"warp": {
"licenseError": "WARP lisansı ayarlanamadı.",
"fetchFirst": "Önce WARP yapılandırmasını alın.",
"createAccount": "WARP hesabı oluştur",
"accessToken": "Access token",
"deviceId": "Cihaz ID",
"licenseKey": "Lisans anahtarı",
"privateKey": "Özel anahtar",
"deleteAccount": "Hesabı sil",
"settings": "Ayarlar",
"licenseKeyLabel": "WARP / WARP+ lisans anahtarı",
"key": "Anahtar",
"keyPlaceholder": "26 karakterli WARP+ anahtarı",
"accountInfo": "Hesap bilgisi",
"deviceName": "Cihaz adı",
"deviceModel": "Cihaz modeli",
"deviceEnabled": "Cihaz etkin",
"accountType": "Hesap tipi",
"role": "Rol",
"warpPlusData": "WARP+ veri",
"quota": "Kota",
"usage": "Kullanım",
"addOutbound": "Giden ekle"
},
"dns": {
"enable": "DNS'yi Etkinleştir",
"enableDesc": "Dahili DNS sunucusunu etkinleştir",
@@ -911,7 +1328,7 @@
"strategyDesc": "Alan adlarını çözmek için genel strateji",
"add": "Sunucu Ekle",
"edit": "Sunucuyu Düzenle",
"domains": "Alan Adları",
"domains": "Alan adları",
"expectIPs": "Beklenen IP'ler",
"unexpectIPs": "Beklenmeyen IP'ler",
"useSystemHosts": "Sistem Hosts'larını Kullan",
@@ -992,7 +1409,7 @@
"2faFailed": "2FA Hatası",
"report": "🕰 Planlanmış Raporlar: {{ .RunTime }}\r\n",
"datetime": "⏰ Tarih&Zaman: {{ .DateTime }}\r\n",
"hostname": "💻 Sunucu: {{ .Hostname }}\r\n",
"hostname": "💻 Host: {{ .Hostname }}\r\n",
"version": "🚀 3X-UI Sürümü: {{ .Version }}\r\n",
"xrayVersion": "📡 Xray Sürümü: {{ .XrayVersion }}\r\n",
"ipv6": "🌐 IPv6: {{ .IPv6 }}\r\n",
@@ -1017,7 +1434,7 @@
"enabled": "🚨 Etkin: {{ .Enable }}\r\n",
"online": "🌐 Bağlantı durumu: {{ .Status }}\r\n",
"lastOnline": "🔙 Son çevrimiçi: {{ .Time }}\r\n",
"email": "📧 E-posta: {{ .Email }}\r\n",
"email": "📧 Email: {{ .Email }}\r\n",
"upload": "🔼 Yükleme: ↑{{ .Upload }}\r\n",
"download": "🔽 İndirme: ↓{{ .Download }}\r\n",
"total": "📊 Toplam: ↑↓{{ .UpDown }} / {{ .Total }}\r\n",
@@ -1087,11 +1504,11 @@
"submitDisable": "Devre Dışı Olarak Gönder ☑️",
"submitEnable": "Etkin Olarak Gönder ✅",
"use_default": "🏷️ Varsayılanı Kullan",
"change_id": "⚙️🔑 Kimlik",
"change_id": "⚙️🔑 ID",
"change_password": "⚙️🔑 Şifre",
"change_email": "⚙️📧 E-posta",
"change_email": "⚙️📧 Email",
"change_comment": "⚙️💬 Yorum",
"change_flow": "⚙️🚦 Akış",
"change_flow": "⚙️🚦 Flow",
"ResetAllTraffics": "Tüm Trafikleri Sıfırla",
"SortedTrafficUsageReport": "Sıralı Trafik Kullanım Raporu"
},
@@ -1119,4 +1536,4 @@
"chooseInbound": "Bir Gelen Seçin"
}
}
}
}