Files
3x-ui/internal/web/translation/tr-TR.json
T
Sanaei 41645255f1 refactor: focused service files, leaf subpackages, and an internal/ layout (#5167)
* refactor(service): split client.go into focused files

client.go had grown to 4455 lines mixing ~10 responsibilities. Split it
verbatim into cohesive same-package files (no behavior change):

  client.go            foundation: ClientService, ClientWithAttachments,
                       ClientCreatePayload, ErrClientNotInInbound, sqlInChunk
  client_locks.go      inbound mutation locks, delete tombstones, compactOrphans
  client_lookup.go     read-only lookups (GetByID, List, EffectiveFlow, ...)
  client_link.go       inbound association sync (SyncInbound, DetachInbound, ...)
  client_crud.go       single-client CRUD + validation + protocol defaults
  client_inbound_apply.go  low-level inbound-settings mutators + by-email setters
  client_bulk.go       bulk attach/detach/adjust/delete/create + DelDepleted
  client_traffic.go    traffic-reset paths
  client_groups.go     client group management
  client_paging.go     paged listing, filtering, sorting, summary

Every declaration moved unchanged (verified: identical func/type/const/var
signature set before vs after). Imports redistributed per file via goimports.
go build ./..., go vet, and go test ./web/service/... all pass.

* refactor(service): split inbound.go into focused files

inbound.go was 4100 lines. Split it verbatim into cohesive same-package
files (no behavior change):

  inbound.go             core inbound CRUD + InboundService (keeps pkg doc)
  inbound_protocol.go    protocol / stream capability helpers
  inbound_node.go        node/runtime/remote coordination + online tracking
  inbound_traffic.go     traffic accounting, reset, client stats
  inbound_client_ips.go  per-client IP tracking
  inbound_clients.go     client lookups within inbounds + copy-clients
  inbound_disable.go     auto-disable invalid inbounds/clients
  inbound_migration.go   DB migrations
  inbound_sublink.go     subscription link providers
  inbound_util.go        generic slice/string helpers

Identical func/type/const/var signature set before vs after; package doc
comment preserved on inbound.go. Imports redistributed via goimports.
Build, vet, and go test ./web/service/... all pass.

* refactor(service): split tgbot.go into focused files

tgbot.go was 3738 lines dominated by a 1246-line answerCallback. Split it
verbatim into cohesive same-package files (no behavior change):

  tgbot.go           lifecycle, bot setup, caches, small utils
  tgbot_router.go    incoming update / command / callback dispatch
  tgbot_send.go      outbound messaging primitives
  tgbot_client.go    client views, actions, subscription links
  tgbot_inbound.go   inbound listing / pickers
  tgbot_report.go    server usage, exhausted, online, backups, notifications

Identical func/type/const/var signature set before vs after. Imports
redistributed via goimports. Build, vet, and go test ./web/service/... pass.

* refactor(client): dedupe single-field by-email setters

ResetClientIpLimitByEmail, ResetClientExpiryTimeByEmail, and
ResetClientTrafficLimitByEmail shared an identical ~50-line body that
resolves the inbound by email, confirms the client exists, rewrites a
single-client settings payload, and delegates to UpdateInboundClient.

Extract that into applyClientFieldByEmail(inboundSvc, email, mutate) and
reduce each setter to a 3-line wrapper. Behavior is unchanged: same checks
and error strings, same single-client payload contract, same totalGB guard.

SetClientTelegramUserID (resolves by traffic id, different error text) and
ToggleClientEnableByEmail/SetClientEnableByEmail (different return shape and
a pre-read of the old state) intentionally keep their own bodies.

* refactor(service): extract panel/ subpackage

Move the panel-administration leaf services out of the flat service
package into web/service/panel/ (package panel):

  user.go         UserService (auth / 2FA / LDAP)
  panel.go        PanelService (restart / self-update) + version helpers
  panel_other.go  non-unix RestartPanel
  panel_unix.go   unix RestartPanel
  api_token.go    ApiTokenService
  websocket.go    WebSocketService
  panel_test.go   version/shellQuote unit tests

These are leaves: they depend on core (SettingService, Release) but no
core file references them, so the extraction creates no import cycle.
Core references are now qualified (service.SettingService, service.Release);
callers in main.go, web/web.go, and web/controller/* updated to panel.*.
Build, vet, and go test ./web/... pass.

* refactor(service): extract integration/ subpackage

Move the external-provider integration leaves into web/service/integration/
(package integration):

  warp.go        WarpService (Cloudflare WARP)
  nord.go        NordService (NordVPN)
  custom_geo.go  CustomGeoService (custom geo asset management)
  *_test.go      custom_geo / panel-proxy tests

These depend on core (SettingService, ServerService, XraySettingService) but
no core file references them. xray_setting.go stays in core because it calls
the unexported SettingService.saveSetting. The shared isBlockedIP SSRF helper
(used by core url_safety.go and by custom_geo) now has a small copy in each
package rather than being exported. Core references qualified; callers in
web/web.go, web/job/*, and web/controller/* updated to integration.*.
Build, vet, and go test ./web/... pass.

* refactor(service): extract tgbot/ subpackage

Move the Telegram bot (6 files + test) into web/service/tgbot/ (package
tgbot). It is a leaf: it embeds five core services (Inbound/Client/Setting/
Server/Xray) and the core never references it, so no import cycle.

To support the package boundary without changing behavior:
  - core exposes XrayProcess() *xray.Process so tgbot keeps calling the
    exact same running-process methods it used via the package-level `p`;
  - three core methods tgbot calls are exported: ClientService.checkIs-
    EnabledByEmail -> CheckIsEnabledByEmail, InboundService.getAllEmails ->
    GetAllEmails (callers updated in-package);
  - tgbot's embedded-field types and the few core type refs (Status,
    ClientCreatePayload, SanitizePublicHTTPURL) are now service-qualified.

Callers in main.go, web/web.go, web/job/*, and web/controller/* updated to
tgbot.*. Build, vet, and go test ./web/... pass.

* refactor(service): extract outbound/ subpackage

OutboundService (outbound.go) imports only neutral packages (config,
database, model, xray) and its production code is referenced by no core or
sibling service file — only by web/controller/xray_setting.go and
web/job/xray_traffic_job.go. Move it to web/service/outbound/ (package
outbound); no core qualification needed inside. Callers updated to outbound.*.

The one coupling was a tiny pure test helper, outboundsContainTag, used by
both outbound.go and the core outbound_subscription_test.go; it now has a
small copy in that test file rather than being shared across the boundary.
Build, vet, and go test ./web/... pass.

* refactor(util): move wireguard into its own subpackage

util/wireguard.go was the lone file of the root `util` package (24 lines,
one exported func GenerateWireguardKeypair), while every other util concern
lives in a focused subpackage (util/common, util/crypto, util/netsafe, ...).
Move it to util/wireguard/ (package wireguard) for consistency; its only
importer, web/service/integration/warp.go, is updated. The root `util`
package no longer exists.

* refactor(sub): drop redundant sub prefix from filenames

Inside package sub the subXxx.go prefix just repeats the package name
(like client_*.go did inside service). Rename for consistency; content and
type names are unchanged:

  subController.go    -> controller.go
  subService.go       -> service.go
  subClashService.go  -> clash_service.go
  subJsonService.go   -> json_service.go
  (+ matching _test.go files)

* refactor(controller): rename xui.go -> spa.go

XUIController serves the panel's single-page-app shell; spa.go names that
role plainly (the other controller files are domain-named). File rename only
— the type stays XUIController. api_docs_test.go keys route base paths by
filename, so its "xui.go" case is updated to "spa.go".

* refactor: move backend packages under internal/

Adopt the idiomatic Go application layout: the backend packages now live
under internal/ (a boundary the toolchain enforces), signalling private
implementation instead of a library-style flat root. No runtime behavior
changes — only import paths and a few build/config paths move.

Moved: config, database, logger, mtproto, sub, util, web, xray -> internal/.
main.go stays at the repo root and tools/openapigen stays under tools/ (both
still import internal/* because the internal rule keys off the module root).
The module path github.com/mhsanaei/3x-ui/v3 is unchanged; 149 .go files had
their import prefix rewritten to .../internal/<pkg>.

Couplings the Go compiler can't see, updated to the new layout:
  - frontend i18n imports of web/translation (react.ts, setup.components.ts)
  - vite outDir + eslint/tsconfig ignore globs -> internal/web/dist
  - Dockerfile COPY paths for web/dist and web/translation
  - locale.go os.DirFS("web") disk fallback -> "internal/web"
  - .gitignore and ci.yml go:embed stub for internal/web/dist
  - api_docs_test.go repo-root relative walk (one level deeper)
  - tools/openapigen filesystem package paths; ApiTokenView repointed to the
    web/service/panel subpackage and codegen regenerated (clears a stale
    type the ci.yml codegen check was failing on)

Verified: go build/vet/test (all packages), and frontend typecheck, lint,
vitest (478 tests), and production build into internal/web/dist.

* fix(config): keep test runs from writing logs into the source tree

GetLogFolder() returns a CWD-relative "./log" on Windows. Under `go test`
the working directory is each package's own folder, so InitLogger (called by
tests in web/job, web/service, xray, web/websocket) created stray log/
directories scattered through the source tree (e.g. internal/web/job/log/).

Redirect to a shared temp folder when testing.Testing() reports a test run.
Production behavior is unchanged: Windows still uses ./log next to the binary
and Linux /var/log/x-ui. The log files were always gitignored (*.log) and
never committed; this just stops the noise at the source.

* docs: move subscription-template guide out of root into docs/

sub_templates/ was a top-level folder holding only a README and no actual
templates (3x-ui ships none by design), referenced nowhere and unlinked from
any doc — it read like an empty placeholder cluttering the repo root.

Move the guide to docs/custom-subscription-templates.md (a proper docs home),
reword its intro to read as documentation rather than a folder note, link it
from the Features list in README.md, and drop the empty sub_templates/ folder.

* fix: update stale web/ path references after the internal/ move

The internal/ migration rewrote Go import paths but left some references to
the old top-level layout in docs, comments, and a few runtime disk paths.

Functional (dev-mode only): the disk-serving fallbacks that read the Vite
build from disk when running from source still pointed at web/dist/, which
moved to internal/web/dist/ — so `os.DirFS`/`os.Stat`/`os.ReadFile` in
internal/web/web.go and internal/sub/{sub,controller}.go are corrected.
Production was unaffected (it serves the embedded FS; verified by the Docker
build), but `go run` with a live frontend build silently fell back to embed.

Docs/comments: frontend/README.md, CONTRIBUTING.md, the claude-issue-bot and
release workflows, the openapigen -root help text, and assorted Go comments
now reference internal/web, internal/database, internal/sub, internal/xray,
etc. Package-name mentions (the "web" package), root paths (main.go,
frontend/, install scripts, /etc/x-ui), routes (/panel/api/xray), and the
historical "web/assets no longer exists" note were intentionally left as-is.

* refactor(web): remove the legacy /xui -> /panel redirect middleware

RedirectMiddleware existed only for backward compatibility with the old
`/xui` URL scheme (301-redirecting /xui and /xui/API to /panel and
/panel/api). That cutover was long ago, so drop the middleware, its
registration in initRouter, and the now-inaccurate "URL redirection"
mention in the middleware package doc. Old /xui URLs now 404 like any other
unknown path. HTTPS auto-redirect and auth redirects are unrelated and stay.

* build: fix .dockerignore for internal/ layout and exclude runtime dir

- web/dist -> internal/web/dist: the embedded frontend moved under internal/,
  so the stale exclude no longer matched and the locally-built dist could be
  sent to the build context (the frontend stage rebuilds it fresh anyway).
- exclude x-ui/: the local runtime directory (SQLite db, geo .dat files, xray
  binaries, certs — ~150MB) was being shipped into the build context for no
  reason. Verified the pattern excludes only the directory and still keeps
  x-ui.sh, which the Dockerfile copies to /usr/bin/x-ui.
2026-06-10 15:19:22 +02:00

1720 lines
96 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"username": "Kullanıcı Adı",
"password": "Şifre",
"login": "Giriş Yap",
"confirm": "Onayla",
"cancel": "İptal",
"close": "Kapat",
"save": "Kaydet",
"logout": "Çıkış Yap",
"create": "Oluştur",
"add": "Ekle",
"remove": "Kaldır",
"update": "Güncelle",
"copy": "Kopyala",
"copied": "Kopyalandı",
"more": "Diğer",
"download": "İndir",
"remark": "Açıklama",
"enable": "Etkin",
"protocol": "Protokol",
"search": "Ara",
"filter": "Filtre",
"all": "Tümü",
"from": "Başlangıç",
"to": "Bitiş",
"done": "Tamam",
"loading": "Yükleniyor...",
"refresh": "Yenile",
"clear": "Temizle",
"second": "Saniye",
"minute": "Dakika",
"hour": "Saat",
"day": "Gün",
"check": "Kontrol Et",
"indefinite": "Belirsiz",
"unlimited": "Sınırsız",
"none": "Yok",
"qrCode": "QR Kod",
"info": "Daha Fazla Bilgi",
"edit": "Düzenle",
"delete": "Sil",
"reset": "Sıfırla",
"noData": "Veri yok.",
"copySuccess": "Başarıyla kopyalandı",
"sure": "Emin misiniz?",
"encryption": "Şifreleme",
"useIPv4ForHost": "Ana bilgisayar için IPv4 kullan",
"transmission": "İletim",
"host": "Host",
"path": "Yol",
"camouflage": "Maskeleme",
"status": "Durum",
"enabled": "Etkin",
"disabled": "Devre Dışı",
"depleted": "Bitti",
"depletingSoon": "Bitmek Üzere",
"offline": "Çevrimdışı",
"online": "Çevrimiçi",
"domainName": "Alan Adı",
"monitor": "Dinleme IP",
"certificate": "Dijital Sertifika",
"fail": "Başarısız",
"comment": "Yorum",
"success": "Başarılı",
"lastOnline": "Son Çevrimiçi",
"getVersion": "Sürümü Al",
"install": "Yükle",
"clients": "Kullanıcılar",
"usage": "Kullanım",
"twoFactorCode": "Kod",
"remained": "Kalan",
"security": "Güvenlik",
"secAlertTitle": "Güvenlik Uyarısı",
"secAlertSsl": "Bu bağlantı güvenli değil. Verilerin korunması için TLS etkinleştirilene kadar hassas bilgi girmekten kaçının.",
"secAlertConf": "Bazı ayarlar saldırıya açıktır. Olası ihlalleri önlemek için güvenlik protokollerini güçlendirmeniz önerilir.",
"secAlertSSL": "Panelde güvenli bağlantı yok. Verilerin korunması için TLS sertifikası yükleyin.",
"secAlertPanelPort": "Panelin varsayılan portu savunmasız. Rastgele veya belirli bir port yapılandırın.",
"secAlertPanelURI": "Panelin varsayılan URI yolu güvensiz. Karmaşık bir URI yolu yapılandırın.",
"secAlertSubURI": "Aboneliğin varsayılan URI yolu güvensiz. Karmaşık bir URI yolu yapılandırın.",
"secAlertSubJsonURI": "Abonelik JSON dosyasının varsayılan URI yolu güvensiz. Karmaşık bir URI yolu yapılandırın.",
"emptyDnsDesc": "Eklenmiş DNS sunucusu yok.",
"emptyFakeDnsDesc": "Eklenmiş Fake DNS sunucusu yok.",
"emptyBalancersDesc": "Eklenmiş dengeleyici yok.",
"emptyReverseDesc": "Eklenmiş ters proxy yok.",
"somethingWentWrong": "Bir hata oluştu",
"subscription": {
"title": "Abonelik Bilgisi",
"subId": "Abonelik Kimliği",
"status": "Durum",
"downloaded": "İndirilen",
"uploaded": "Yüklenen",
"expiry": "Son Kullanma",
"totalQuota": "Toplam Kota",
"individualLinks": "Bireysel Bağlantılar",
"active": "Aktif",
"inactive": "Pasif",
"unlimited": "Sınırsız",
"noExpiry": "Süresiz"
},
"menu": {
"theme": "Tema",
"dark": "Koyu",
"ultraDark": "Ultra Koyu",
"dashboard": "Genel Bakış",
"inbounds": "Gelen Bağlantılar",
"clients": "Kullanıcılar",
"groups": "Gruplar",
"nodes": "Düğümler",
"settings": "Panel Ayarları",
"xray": "Xray Yapılandırmaları",
"apiDocs": "API Belgeleri",
"logout": "Çıkış Yap",
"link": "Yönet",
"donate": "Bağış Yap"
},
"pages": {
"login": {
"hello": "Merhaba",
"title": "Hoş Geldiniz",
"loginAgain": "Oturum süreniz doldu, lütfen tekrar giriş yapın.",
"toasts": {
"invalidFormData": "Veri formatı geçersiz.",
"emptyUsername": "Kullanıcı adı zorunludur",
"emptyPassword": "Şifre zorunludur",
"wrongUsernameOrPassword": "Geçersiz kullanıcı adı, şifre veya iki adımlı doğrulama kodu.",
"successLogin": "Hesabınıza başarıyla giriş yaptınız."
}
},
"index": {
"title": "Genel Bakış",
"cpu": "CPU",
"logicalProcessors": "Mantıksal İşlemciler",
"frequency": "Frekans",
"swap": "Takas",
"storage": "Depolama",
"memory": "RAM",
"threads": "İş Parçacığı",
"xrayStatus": "Xray",
"stopXray": "Durdur",
"restartXray": "Yeniden Başlat",
"xraySwitch": "Sürüm",
"xrayUpdates": "Xray Güncellemeleri",
"xraySwitchClick": "Geçiş yapmak istediğiniz sürümü seçin.",
"xraySwitchClickDesk": "Dikkatli seçin, eski sürümler mevcut yapılandırmalarla uyumlu olmayabilir.",
"updatePanel": "Paneli Güncelle",
"panelUpdateDesc": "Bu işlem 3X-UI'yi en son sürüme güncelleyecek ve panel servisini yeniden başlatacaktır.",
"currentPanelVersion": "Mevcut panel sürümü",
"latestPanelVersion": "Panelin en son sürümü",
"panelUpToDate": "Panel güncel",
"upToDate": "Güncel",
"xrayStatusUnknown": "Bilinmiyor",
"xrayStatusRunning": "Çalışıyor",
"xrayStatusStop": "Durduruldu",
"xrayStatusError": "Hata",
"xrayErrorPopoverTitle": "Xray çalıştırılırken bir hata oluştu",
"operationHours": "Çalışma Süresi",
"systemHistoryTitle": "Sistem Geçmişi",
"historyTitleCpu": "CPU Kullanımı",
"historyTitleMem": "Bellek Kullanımı",
"historyTitleNetwork": "Ağ Bant Genişliği",
"historyTitlePackets": "Ağ Paketleri",
"historyTitleDisk": "Disk G/Ç",
"historyTitleOnline": "Çevrimiçi Kullanıcılar",
"historyTitleLoad": "Sistem Yük Ortalaması (1dk / 5dk / 15dk)",
"historyTitleConnections": "Etkin Bağlantılar (TCP / UDP)",
"historyTitleDiskUsage": "Disk Alanı Kullanımı",
"historyTabBandwidth": "Bant Genişliği",
"historyTabPackets": "Paketler",
"historyTabDisk": "Disk G/Ç",
"historyTabOnline": "Çevrimiçi",
"historyTabLoad": "Yük",
"historyTabConnections": "Bağlantılar",
"historyTabDiskUsage": "Disk Kullanımı",
"charts": "Grafikler",
"xrayMetricsTitle": "Xray Metrikleri",
"xrayTitleHeap": "Ayrılan Yığın Belleği",
"xrayTitleSys": "İşletim Sisteminden Ayrılan Bellek",
"xrayTitleObjects": "Aktif Yığın Nesneleri",
"xrayTitleGcCount": "Tamamlanan GC Döngüleri",
"xrayTitleGcPause": "GC Duraklama Süresi",
"xrayTitleObservatory": "Giden Bağlantı Durumu",
"xrayTabHeap": "Heap",
"xrayTabSys": "Sys",
"xrayTabObjects": "Nesneler",
"xrayTabGcCount": "GC Sayısı",
"xrayTabGcPause": "GC Duraklaması",
"xrayTabObservatory": "Gözlemevi",
"xrayMetricsDisabled": "Xray metrik uç noktası yapılandırılmadı",
"xrayMetricsHint": "Xray yapılandırmasına tag metrics_out ve listen 127.0.0.1:11111 olan üst düzey bir metrics bloğu ekleyin, sonra Xray'i yeniden başlatın.",
"xrayObservatoryEmpty": "Henüz Gözlemevi verisi yok",
"xrayObservatoryHint": "Xray yapılandırmasına test edilecek giden bağlantı etiketlerini listeleyen bir Gözlemevi bloğu ekleyin, sonra Xray'i yeniden başlatın.",
"xrayObservatoryTagPlaceholder": "Giden bağlantı seç",
"xrayObservatoryAlive": "Aktif",
"xrayObservatoryDead": "Kapalı",
"xrayObservatoryLastSeen": "Son görülme",
"xrayObservatoryLastTry": "Son deneme",
"trendLast2Min": "Son 2 dakika",
"systemLoad": "Sistem Yükü",
"systemLoadDesc": "Son 1, 5 ve 15 dakikanın sistem yükü ortalaması",
"connectionCount": "Bağlantı İstatistikleri",
"ipAddresses": "IP Adresleri",
"toggleIpVisibility": "IP görünürlüğünü değiştir",
"overallSpeed": "Genel Hız",
"upload": "Yükleme",
"download": "İndirme",
"totalData": "Toplam Veri",
"sent": "Gönderilen",
"received": "Alınan",
"documentation": "Dokümantasyon",
"xraySwitchVersionDialog": "Xray sürümünü gerçekten değiştirmek istiyor musunuz?",
"xraySwitchVersionDialogDesc": "Bu işlem Xray sürümünü #version# olarak değiştirecektir.",
"xraySwitchVersionPopover": "Xray başarıyla güncellendi",
"panelUpdateDialog": "Gerçekten paneli güncellemek istiyor musunuz?",
"panelUpdateDialogDesc": "Bu işlem 3X-UI'yi #version# sürümüne güncelleyecek ve panel servisini yeniden başlatacaktır.",
"panelUpdateCheckPopover": "Panel güncelleme kontrolü başarısız oldu",
"panelUpdateStartedPopover": "Panel güncellemesi başlatıldı",
"geofileUpdateDialog": "Geofile'ı gerçekten güncellemek istiyor musunuz?",
"geofileUpdateDialogDesc": "Bu işlem #filename# dosyasını güncelleyecektir.",
"geofilesUpdateDialogDesc": "Bu, tüm dosyaları güncelleyecektir.",
"geofilesUpdateAll": "Tümünü Güncelle",
"geofileUpdatePopover": "Geofile başarıyla güncellendi",
"customGeoTitle": "Özel GeoSite / GeoIP",
"customGeoAdd": "Ekle",
"customGeoType": "Tür",
"customGeoAlias": "Takma Ad",
"customGeoUrl": "URL",
"customGeoEnabled": "Etkin",
"customGeoLastUpdated": "Son güncelleme",
"customGeoExtColumn": "Yönlendirme (ext:…)",
"customGeoToastUpdateAll": "Tüm özel kaynaklar güncellendi",
"customGeoActions": "İşlemler",
"customGeoEdit": "Düzenle",
"customGeoDelete": "Sil",
"customGeoDownload": "Şimdi Güncelle",
"customGeoModalAdd": "Özel geo ekle",
"customGeoModalEdit": "Özel geo düzenle",
"customGeoModalSave": "Kaydet",
"customGeoDeleteConfirm": "Bu özel geo kaynağı silinsin mi?",
"customGeoRoutingHint": "Yönlendirme kurallarında value sütununu ext:dosya.dat:etiket olarak kullanın (etiketi uygun şekilde değiştirin).",
"customGeoInvalidId": "Geçersiz kaynak kimliği",
"customGeoAliasesError": "Özel geo takma adları yüklenemedi",
"customGeoValidationAlias": "Takma ad yalnızca küçük harf, rakam, - ve _ içerebilir",
"customGeoValidationUrl": "URL http:// veya https:// ile başlamalıdır",
"customGeoAliasPlaceholder": "a-z 0-9 _ -",
"customGeoAliasLabelSuffix": " (özel)",
"customGeoToastList": "Özel geo listesi",
"customGeoToastAdd": "Özel geo ekle",
"customGeoToastUpdate": "Özel geo güncelle",
"customGeoToastDelete": "Özel geofile \"{{ .fileName }}\" silindi",
"customGeoToastDownload": "\"{{ .fileName }}\" geofile güncellendi",
"customGeoErrInvalidType": "Tür geosite veya geoip olmalıdır",
"customGeoErrAliasRequired": "Takma ad gerekli",
"customGeoErrAliasPattern": "Takma ad izin verilmeyen karakterler içeriyor",
"customGeoErrAliasReserved": "Bu takma ad ayrılmış",
"customGeoErrUrlRequired": "URL gerekli",
"customGeoErrInvalidUrl": "URL geçersiz",
"customGeoErrUrlScheme": "URL http veya https kullanmalıdır",
"customGeoErrUrlHost": "URL ana bilgisayarı geçersiz",
"customGeoErrDuplicateAlias": "Bu takma ad bu tür için zaten kullanılıyor",
"customGeoErrNotFound": "Özel geo kaynağı bulunamadı",
"customGeoErrDownload": "İndirme başarısız",
"customGeoErrUpdateAllIncomplete": "Bir veya daha fazla özel geo kaynağı güncellenemedi",
"customGeoEmpty": "Henüz özel geo kaynağı yok — oluşturmak için Ekle'ye tıklayın",
"dontRefresh": "Kurulum devam ediyor, lütfen bu sayfayı yenilemeyin",
"logs": "Günlükler",
"config": "Yapılandırma",
"backup": "Yedek",
"backupTitle": "Yedekleme ve Geri Yükleme",
"exportDatabase": "Yedekle",
"exportDatabaseDesc": "Mevcut veritabanınızın yedeğini içeren bir .db dosyasını cihazınıza indirmek için tıklayın.",
"importDatabase": "Geri Yükle",
"importDatabaseDesc": "Cihazınızdan bir .db dosyası seçip yükleyerek veritabanınızı yedekten geri yüklemek için tıklayın.",
"importDatabaseSuccess": "Veritabanı başarıyla içe aktarıldı.",
"importDatabaseError": "Veritabanı içe aktarılırken bir hata oluştu.",
"readDatabaseError": "Veritabanı okunurken bir hata oluştu.",
"getDatabaseError": "Veritabanı alınırken bir hata oluştu.",
"getConfigError": "Yapılandırma dosyası alınırken bir hata oluştu.",
"backupPostgresNote": "Bu panel PostgreSQL üzerinde çalışıyor. 'Yedekle' bir pg_dump arşivi (.dump) indirir, 'Geri Yükle' ise onu pg_restore ile geri yükler. Sunucuda PostgreSQL istemci araçlarının (pg_dump ve pg_restore) kurulu olması gerekir.",
"exportDatabasePgDesc": "Mevcut veritabanınızın PostgreSQL dökümünü (.dump) cihazınıza indirmek için tıklayın.",
"importDatabasePgDesc": "PostgreSQL veritabanınızı geri yüklemek için bir .dump dosyası seçip yüklemek üzere tıklayın. Bu, tüm mevcut verilerin yerini alır.",
"migrationDownload": "Geçiş Dosyasını İndir",
"migrationDownloadDesc": "SQLite veritabanınızın taşınabilir .dump (SQL metni) yedeğini indirmek için tıklayın.",
"migrationDownloadPgDesc": "PostgreSQL verilerinizden oluşturulan ve bu paneli SQLite üzerinde çalıştırmaya hazır bir .db SQLite veritabanı indirmek için tıklayın."
},
"inbounds": {
"title": "Gelen Bağlantılar",
"totalDownUp": "Toplam Gönderilen/Alınan",
"totalUsage": "Toplam Kullanım",
"inboundCount": "Toplam Gelen Bağlantı",
"operate": "Menü",
"enable": "Etkin",
"remark": "Açıklama",
"node": "Düğüm",
"deployTo": "Şuraya Dağıt",
"localPanel": "Yerel Panel",
"fallbacks": {
"title": "Fallback'ler",
"help": "Bu gelen bağlantı üzerindeki bir istek hiçbir istemci ile eşleşmediğinde, başka bir yere yönlendirilir. Aşağıdan bir alt (child) gelen bağlantı seçerek yönlendirme alanlarını (SNI / ALPN / Path / xver) aktarım (transport) ayarlarından otomatik doldurun ya da seçimi boş bırakıp Hedef (Dest) değerini doğrudan girin (örn. 8080 veya 127.0.0.1:8080); böylece Nginx gibi harici bir sunucuya yönlendirebilirsiniz. Her alt gelen bağlantı 127.0.0.1 üzerinde security=none (güvenlik=yok) ile dinlemelidir.",
"empty": "Henüz fallback yok",
"add": "Fallback Ekle",
"pickInbound": "Bir Gelen Bağlantı Seç",
"matchAny": "herhangi",
"destPlaceholder": "otomatik (child listen:port)",
"rederive": "Child'dan Yeniden Doldur",
"rederived": "Child'dan yeniden dolduruldu",
"editAdvanced": "Yönlendirme Alanlarını Düzenle",
"hideAdvanced": "Gelişmişi Gizle",
"quickAddAll": "Uygun Olan Tümünü Hızlı Ekle",
"quickAdded": "{n} fallback eklendi",
"quickAddedNone": "Eklenecek yeni uygun gelen bağlantı yok",
"routesWhen": "Şu Durumda Yönlendirir",
"defaultCatchAll": "Varsayılan — başka her şeyi yakalar"
},
"protocol": "Protokol",
"port": "Port",
"portMap": "Port Eşlemesi",
"traffic": "Trafik",
"details": "Detaylar",
"transportConfig": "Aktarım",
"expireDate": "Süre",
"createdAt": "Oluşturuldu",
"updatedAt": "Güncellendi",
"resetTraffic": "Trafiği Sıfırla",
"addInbound": "Gelen Bağlantı Ekle",
"generalActions": "Genel İşlemler",
"modifyInbound": "Gelen Bağlantını Düzenle",
"deleteInbound": "Gelen Bağlantını Sil",
"deleteInboundContent": "Bu gelen bağlantıyı silmek istediğinizden emin misiniz?",
"deleteConfirmTitle": "\"{remark}\" gelen bağlantı silinsin mi?",
"deleteConfirmContent": "Bu işlem gelen bağlantıyı ve tüm kullanıcılarını siler. Geri alınamaz.",
"resetConfirmTitle": "\"{remark}\" trafiği sıfırlansın mı?",
"resetConfirmContent": "Bu gelen bağlantı için gönderme/alma sayaçlarını 0'a sıfırlar.",
"selectedCount": "{count} seçildi",
"selectAll": "Tümünü Seç",
"bulkDeleteConfirmTitle": "{count} gelen bağlantı silinsin mi?",
"bulkDeleteConfirmContent": "Bu işlem seçili gelen bağlantılarnı ve tüm kullanıcılarını siler. Geri alınamaz.",
"cloneConfirmTitle": "\"{remark}\" gelen bağlantı klonlansın mı?",
"cloneConfirmContent": "Yeni bir port ve boş kullanıcı listesiyle bir kopya oluşturur.",
"delAllClients": "Tüm Kullanıcıları Sil",
"delAllClientsConfirmTitle": "\"{remark}\" içindeki {count} kullanıcının tamamı silinsin mi?",
"delAllClientsConfirmContent": "Bu gelen bağlantıya ait tüm kullanıcıları ve trafik kayıtlarını siler. Gelen bağlantı silinmez. Bu işlem geri alınamaz.",
"attachClients": "Kullanıcıları Şuna Bağla…",
"addClientsToGroup": "Kullanıcıları Gruba Ekle…",
"attachClientsTitle": "\"{remark}\" gelen bağlantındaki kullanıcıları bağla",
"attachClientsDesc": "Aynı {count} kullanıcıyı (aynı UUID/parola ve paylaşılan trafik) seçilen gelen bağlantılarna bağlar. Bu gelen bağlantında da kalırlar.",
"attachClientsTargets": "Hedef Gelen Bağlantılar",
"attachClientsNoTargets": "Bağlanacak uyumlu başka gelen bağlantı yok.",
"attachClientsResult": "Bağlandı {attached}, atlandı {skipped}.",
"attachClientsResultMixed": "Bağlandı {attached}, atlandı {skipped}, hatalar {errors}.",
"attachClientsSelectLabel": "Bağlanacak Kullanıcılar",
"attachClientsSearchPlaceholder": "E-posta veya yorum ara",
"attachClientsStatusDisabled": "Devre Dışı",
"attachClientsSelectedCount": "{total} içinden {selected} seçildi",
"attachExistingClients": "Mevcut Kullanıcıları Bağla…",
"attachExistingTitle": "«{remark}» gelen bağlantıya mevcut kullanıcıları bağla",
"attachExistingDesc": "Mevcut kullanıcıları ({count} uygun) bu gelen bağlantıya bağlar — aynı UUID/şifre ve paylaşılan trafik. Halihazırda bu gelen bağlantıya bağlı olan kullanıcılar atlanır.",
"attachExistingNoClients": "Henüz kullanıcı yok. Önce kullanıcı oluşturun, ardından buraya bağlayın.",
"attachExistingStatusAttached": "Zaten Bağlı",
"detachClients": "Kullanıcıları Çöz",
"detachClientsTitle": "«{remark}» gelen bağlantındaki kullanıcıları çöz",
"detachClientsDesc": "Seçilen kullanıcıları yalnızca bu gelen bağlantıdan kaldırır. Kullanıcı kayıtları korunur (tamamen kaldırmak için Delete kullanın). Kaynakta toplam {count} kullanıcı var.",
"detachClientsResult": "Çözüldü {detached}, atlandı {skipped}.",
"detachClientsResultMixed": "Çözüldü {detached}, atlandı {skipped}, hatalar {errors}.",
"detachClientsSelectLabel": "Çözülecek Kullanıcılar",
"exportLinksTitle": "Gelen bağlantı bağlantılarını dışa aktar",
"exportSubsTitle": "Abonelik bağlantılarını dışa aktar",
"exportAllLinksTitle": "Tüm gelen bağlantı bağlantılarını dışa aktar",
"exportAllSubsTitle": "Tüm abonelik bağlantılarını dışa aktar",
"exportAllLinksFileName": "Tüm-BağlantıNoktaları",
"exportAllSubsFileName": "Tüm-BağlantıNoktaları-Subs",
"inboundJsonTitle": "Gelen Bağlantı JSON",
"deleteClient": "Kullanıcıyı Sil",
"deleteClientContent": "Kullanıcıyı silmek istediğinizden emin misiniz?",
"resetTrafficContent": "Trafiği sıfırlamak istediğinizden emin misiniz?",
"copyLink": "URL'yi Kopyala",
"address": "Adres",
"network": "Ağ",
"destinationPort": "Hedef Port",
"targetAddress": "Hedef Adres",
"monitorDesc": "Tüm IP'leri dinlemek için boş bırakın",
"meansNoLimit": "= Sınırsız. (birim: GB)",
"totalFlow": "Toplam Akış",
"leaveBlankToNeverExpire": "Süresiz olması için boş bırakın",
"noRecommendKeepDefault": "Varsayılan ayarda bırakılması önerilir",
"certificatePath": "Dosya Yolu",
"certificateContent": "Dosya İçeriği",
"publicKey": "Genel Anahtar",
"privatekey": "Özel Anahtar",
"clickOnQRcode": "Kopyalamak İçin QR Koda Tıklayın",
"client": "Kullanıcı",
"export": "Tüm URL'leri Dışa Aktar",
"clone": "Klonla",
"cloneInbound": "Klonla",
"cloneInboundContent": "Bu gelen bağlantıyın tüm ayarları, Port, Dinleme IP ve Kullanıcılar hariç, klona uygulanacaktır.",
"cloneInboundOk": "Klonla",
"resetAllTraffic": "Tüm Gelen Trafiği Sıfırla",
"resetAllTrafficTitle": "Tüm Gelen Trafiği Sıfırla",
"resetAllTrafficContent": "Tüm gelen bağlantılarnın trafiğini sıfırlamak istediğinizden emin misiniz?",
"resetInboundClientTraffics": "Kullanıcıların Trafiğini Sıfırla",
"resetInboundClientTrafficTitle": "Kullanıcı Trafiklerini Sıfırla",
"resetInboundClientTrafficContent": "Bu gelen bağlantıya ait kullanıcıların trafiğini sıfırlamak istediğinizden emin misiniz?",
"resetAllClientTraffics": "Tüm Kullanıcıların Trafiğini Sıfırla",
"resetAllClientTrafficTitle": "Tüm Kullanıcı Trafiklerini Sıfırla",
"resetAllClientTrafficContent": "Tüm kullanıcıların trafiğini sıfırlamak istediğinizden emin misiniz?",
"delDepletedClients": "Kotası Dolan Kullanıcıları Sil",
"delDepletedClientsTitle": "Kotası Dolan Kullanıcıları Sil",
"delDepletedClientsContent": "Kotası dolan veya süresi biten tüm kullanıcıları silmek istediğinizden emin misiniz?",
"email": "E-posta",
"emailDesc": "Lütfen benzersiz bir e-posta adresi sağlayın.",
"IPLimit": "IP Limiti",
"IPLimitDesc": "Sayının aşılması durumunda gelen bağlantı devre dışı bırakılır. (0 = devre dışı)",
"IPLimitlog": "IP Günlüğü",
"IPLimitlogDesc": "IP geçmiş günlüğü. (devre dışı bırakıldıktan sonra yeniden etkinleştirmek için günlüğü temizleyin)",
"IPLimitlogclear": "Günlüğü Temizle",
"setDefaultCert": "Panelden Sertifikayı Ayarla",
"setDefaultCertEmpty": "Panel için sertifika yapılandırılmamış. Önce Ayarlar'dan ayarlayın.",
"streamTab": "Akış",
"securityTab": "Güvenlik",
"sniffingTab": "Dinleme",
"sniffingMetadataOnly": "Yalnızca üst veri",
"sniffingRouteOnly": "Yalnızca yönlendirme",
"sniffingIpsExcluded": "Hariç tutulan IP'ler",
"sniffingDomainsExcluded": "Hariç tutulan alan adları",
"decryption": "Şifre Çözme",
"encryption": "Şifreleme",
"vlessAuthX25519": "X25519 Kimlik Doğrulama",
"vlessAuthMlkem768": "ML-KEM-768 Kimlik Doğrulama",
"vlessAuthCustom": "Özel",
"vlessAuthSelected": "Seçili: {auth}",
"advanced": {
"title": "Gelen Bağlantı JSON Bölümleri",
"subtitle": "Tam gelen bağlantı JSON'u ve settings, sniffing, streamSettings için odaklanmış düzenleyiciler.",
"all": "Tümü",
"allHelp": "Tüm alanları tek bir düzenleyicide içeren tam gelen bağlantı nesnesi.",
"settings": "Ayarlar",
"settingsHelp": "Xray settings bloğunun sarmalayıcısı:",
"sniffing": "Sniffing",
"sniffingHelp": "Xray sniffing bloğunun sarmalayıcısı:",
"stream": "Stream",
"streamHelp": "Xray stream bloğunun sarmalayıcısı:",
"jsonErrorPrefix": "Gelişmiş JSON"
},
"telegramDesc": "Lütfen Telegram Sohbet Kimliği (Chat ID) sağlayın. ({'@'}userinfobot'tan öğrenebilir veya botta '/id' komutunu kullanabilirsiniz.)",
"subscriptionDesc": "Abonelik URL'nizi bulmak için 'Detaylar'a gidin. Aynı adı birden fazla kullanıcı için kullanabilirsiniz.",
"same": "Aynı",
"inboundInfo": "Gelen Bağlantı Bilgileri",
"exportInbound": "Gelen Bağlantını Dışa Aktar",
"import": "İçe Aktar",
"importInbound": "Gelen Bağlantı İçe Aktar",
"periodicTrafficResetTitle": "Trafik Sıfırlama",
"periodicTrafficResetDesc": "Belirtilen aralıklarla trafik sayacını otomatik olarak sıfırla",
"lastReset": "Son Sıfırlama",
"periodicTrafficReset": {
"never": "Asla",
"daily": "Günlük",
"weekly": "Haftalık",
"monthly": "Aylık",
"hourly": "Saatlik"
},
"toasts": {
"obtain": "Al",
"updateSuccess": "Güncelleme başarılı oldu.",
"logCleanSuccess": "Günlük temizlendi.",
"inboundsUpdateSuccess": "Gelen bağlantılar başarıyla güncellendi.",
"inboundUpdateSuccess": "Gelen bağlantı başarıyla güncellendi.",
"inboundCreateSuccess": "Gelen bağlantı başarıyla oluşturuldu.",
"bulkDeleted": "{count} gelen bağlantı silindi",
"bulkDeletedMixed": "{ok} silindi, {failed} başarısız",
"inboundDeleteSuccess": "Gelen bağlantı başarıyla silindi.",
"inboundClientAddSuccess": "Gelen bağlantı kullanıcı(lar)ı eklendi.",
"inboundClientDeleteSuccess": "Gelen bağlantı kullanıcısı silindi.",
"inboundClientUpdateSuccess": "Gelen bağlantı kullanıcısı güncellendi.",
"savedNodeOfflineWillSync": "Yerel olarak kaydedildi. Destekleyen bir düğüm çevrimdışı veya devre dışı — değişiklik yeniden bağlandığında senkronize edilecek.",
"delDepletedClientsSuccess": "Tüm tükenmiş kullanıcılar silindi.",
"resetAllClientTrafficSuccess": "Tüm kullanıcıların trafiği sıfırlandı.",
"resetAllTrafficSuccess": "Tüm trafik sıfırlandı.",
"resetInboundClientTrafficSuccess": "Trafik sıfırlandı.",
"resetInboundTrafficSuccess": "Gelen trafik sıfırlandı.",
"trafficGetError": "Trafik bilgisi alınırken hata oluştu.",
"getNewX25519CertError": "X25519 sertifikası alınırken hata oluştu.",
"getNewmldsa65Error": "mldsa65 sertifikası alınırken hata oluştu.",
"getNewVlessEncError": "VlessEnc sertifikası alınırken hata oluştu.",
"invalidClientField": "Kullanıcı {client}: {field} — {reason}",
"invalidField": "{field} — {reason}",
"moreIssues": "{message} (+{count} tane daha)"
},
"form": {
"moveUp": "Yukarı Taşı",
"moveDown": "Aşağı Taşı",
"addAll": "Tümünü Ekle",
"addAllFallbackTooltip": "Henüz bağlanmamış her uygun gelen bağlantı için bir fallback satırı ekler",
"peers": "Eşler (Peers)",
"addPeer": "Eş (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 trafik için fiziksel arabirim. Tespit için 'auto' kullanın; Otomatik sistem yönlendirmeleri açıkken otomatik etkinleşir.",
"rewriteAddress": "Adresi Yeniden Yaz",
"rewritePort": "Port'u Yeniden Yaz",
"allowedNetwork": "İzin Verilen Ağ",
"followRedirect": "Yönlendirmeleri İzle",
"accounts": "Hesaplar",
"allowTransparent": "Şeffafa İzin Ver",
"encryptionMethod": "Şifreleme Yöntemi",
"fakeTlsDomain": "FakeTLS alan adı (SNI)",
"mtprotoSecret": "Gizli Anahtar (Secret)",
"mtgDomainFrontingIp": "Domain fronting IP",
"mtgDomainFrontingPort": "Domain fronting portu",
"mtgDomainFrontingProxyProtocol": "Domain fronting PROXY protokolü",
"mtgDomainFrontingHint": "mtg'nin Telegram dışı trafiği gönderdiği yer — örn. NGINX sahte siteniz. FakeTLS alan adını DNS üzerinden kullanmak için IP'yi boş bırakın; varsayılan port 443'tür.",
"mtgProxyProtocolListener": "PROXY protokolünü kabul et (dinleyici)",
"mtgPreferIp": "IP tercihi",
"mtgDebug": "Hata ayıklama günlüğü",
"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 Sunucusu",
"serverMaxHeaderBytes": "Sunucu Maks. Başlık Byte'ı",
"paddingBytes": "Padding Byte'ı",
"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": "Uplink (MB/s)",
"downlinkMbps": "Downlink (MB/s)",
"cwndMultiplier": "CWND Çarpanı",
"maxSendingWindow": "Maks. Gönderme Penceresi",
"externalProxy": "Harici Proxy",
"forceTls": "TLS'ye Zorla",
"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",
"tcpWindowClampHint": "İşletim sistemi varsayılanını kullanmak için 0 bırakın. Sıfır olmayan değerler ilan edilen TCP alım penceresini sınırlar; 600 gibi değerler (Xray belgelerindeki örnek) yüksek gecikmeli bağlantılarda verimi çökertebilir.",
"tcpFastOpen": "TCP Fast Open",
"multipathTcp": "Multipath TCP",
"penetrate": "Penetrate",
"v6Only": "Yalnızca IPv6",
"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": "Server Name Indication (SNI)",
"cipherSuites": "Cipher Suites",
"autoOption": "Otomatik",
"minMaxVersion": "Min/Maks Sürüm",
"rejectUnknownSni": "Bilinmeyen SNI Reddet",
"disableSystemRoot": "Sistem 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ı",
"pinnedPeerCertSha256": "Sabitlenmiş Peer Sertifikası SHA-256",
"pinnedPeerCertSha256Tip": "Peer sertifikasının SHA-256 hash'leri onaltılık (hex) dizge olarak (örn. e8e2d3…), virgülle ayrılmış. Sadece panel — sunucunun Xray yapılandırmasına yazılmaz, ancak kullanıcıların sertifikayı sabitleyebilmesi için paylaşım bağlantılarına eklenir.",
"pinnedPeerCertSha256Placeholder": "onaltılık (hex) hash(ler), virgülle ayrılmış",
"generateRandomPin": "Rastgele Hash Üret",
"getNewEchCert": "Yeni ECH Sertifikası Al",
"show": "Göster",
"xver": "Xver",
"target": "Hedef",
"maxTimeDiff": "Maks. Zaman Farkı (ms)",
"minClientVer": "Min. Kullanıcı Sürümü",
"maxClientVer": "Maks. Kullanıcı Sürümü",
"shortIds": "Short IDs",
"realityTargetHint": "Zorunlu. Bir port içermelidir (ör. example.com:443). Port belirtilmezse Xray-core başlamaz.",
"realityTargetRequired": "REALITY hedefi zorunludur",
"realityTargetNeedsPort": "REALITY hedefi bir port içermelidir (ör. example.com:443)",
"realityTargetInvalidPort": "REALITY hedefinde geçersiz bir port var",
"spiderX": "SpiderX",
"getNewCert": "Yeni Sertifika Al",
"mldsa65Seed": "mldsa65 Seed",
"mldsa65Verify": "mldsa65 Verify",
"getNewSeed": "Yeni Seed Al",
"listenHelp": "TCP portu yerine bir Unix soket yolu da girebilirsiniz (örn. /run/xray/in.sock) — bu durumda Port'u 0 olarak ayarlayın."
},
"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",
"response": "Yanıt",
"name": "Ad",
"value": "Değer"
},
"tcp": {
"version": "Sürüm",
"method": "Yöntem",
"path": "Yol",
"status": "Durum",
"statusDescription": "Durum Açıklaması",
"requestHeader": "İstek Başlığı",
"responseHeader": "Yanıt Başlığı"
}
}
},
"clients": {
"add": "Kullanıcı Ekle",
"edit": "Kullanıcıyı Düzenle",
"submitAdd": "Kullanıcı Ekle",
"submitEdit": "Değişiklikleri Kaydet",
"clientCount": "Kullanıcı Sayısı",
"bulk": "Toplu Ekle",
"copyFromInbound": "Gelen Bağlantından Kullanıcıları Kopyala",
"copyToInbound": "Kullanıcıların Kopyalanacağı Yer",
"copySelected": "Seçileni Kopyala",
"copySource": "Kaynak",
"copyEmailPreview": "Oluşacak E-posta Önizlemesi",
"copySelectSourceFirst": "Önce bir kaynak gelen bağlantı seçin.",
"copyResult": "Kopya Sonucu",
"copyResultSuccess": "Başarıyla kopyalandı",
"copyResultNone": "Kopyalanacak bir şey yok: kullanıcı seçilmemiş veya kaynak boş.",
"copyResultErrors": "Kopyalama Hataları",
"copyFlowLabel": "Yeni Kullanıcılar İçin Flow (VLESS)",
"copyFlowHint": "Kopyalanan tüm kullanıcılara uygulanır. Atlamak için boş bırakın.",
"selectAll": "Tümünü Seç",
"clearAll": "Tümünü Temizle",
"method": "Yöntem",
"first": "İlk",
"last": "Son",
"ipLog": "IP Günlüğü",
"prefix": "Önek",
"postfix": "Sonek",
"delayedStart": "İlk Kullanımdan Sonra Başla",
"expireDays": "Süre",
"days": "Gün(ler)",
"renew": "Otomatik Yenileme",
"renewDesc": "Süre dolduktan sonra otomatik yeniler. (0 = devre dışı) (birim: gün)",
"searchPlaceholder": "E-posta, yorum, sub ID, UUID, parola, auth ara…",
"filterTitle": "Kullanıcıları Filtrele",
"clearAllFilters": "Tümünü Temizle",
"showingCount": "{total} içinden {shown} gösteriliyor",
"sortOldest": "Önce En Eski",
"sortNewest": "Önce En Yeni",
"sortRecentlyUpdated": "Son Güncellenen",
"sortRecentlyOnline": "Son Çevrimiçi",
"sortEmailAZ": "E-posta A→Z",
"sortEmailZA": "E-posta Z→A",
"sortMostTraffic": "En Çok Trafik",
"sortHighestRemaining": "En Çok Kalan",
"sortExpiringSoonest": "Yakında Biten",
"has": "Var",
"hasNot": "Yok",
"title": "Kullanıcılar",
"actions": "İşlemler",
"totalGB": "Toplam Gönderilen/Alınan (GB)",
"expiryTime": "Son Kullanma",
"addClients": "Kullanıcı Ekle",
"limitIp": "IP Limiti",
"password": "Şifre",
"subId": "Abonelik ID'si",
"online": "Çevrimiçi",
"email": "E-posta",
"emailInvalidChars": "E-posta boşluk, '/', '\\' veya kontrol karakterleri içeremez",
"subIdInvalidChars": "Abonelik kimliği boşluk, '/', '\\' veya kontrol karakterleri içeremez",
"group": "Grup",
"groupDesc": "İlgili kullanıcıları 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ışı",
"addClient": "Kullanıcı Ekle",
"qrCode": "QR Kodu",
"clientInfo": "Kullanıcı Bilgileri",
"delete": "Sil",
"reset": "Trafiği Sıfırla",
"editClient": "Kullanıcıyı Düzenle",
"client": "Kullanıcı",
"enabled": "Etkin",
"remaining": "Kalan",
"duration": "Süre",
"attachedInbounds": "Bağlı Gelen Bağlantılar",
"selectInbound": "Bir veya Daha Fazla Gelen Bağlantı Seçin",
"noSubId": "Bu kullanıcının subId'si yok, dolayısıyla paylaşılabilir bir bağlantısı bulunmuyor.",
"noLinks": "Paylaşılabilir bağlantı yok — önce bu kullanıcıyı bir protokole sahip olan gelen bağlantıya bağlayın.",
"link": "Bağlantı",
"resetNotPossible": "Önce bu kullanıcıyı bir gelen bağlantıya bağlayın.",
"general": "Genel",
"resetAllTraffics": "Tüm Kullanıcıların Trafiğini Sıfırla",
"resetAllTrafficsTitle": "Tüm Kullanıcıların Trafiği Sıfırlansın Mı?",
"resetAllTrafficsContent": "Her kullanıcının yükleme/indirme sayaçları sıfırlanır. Kotalar ve son kullanma tarihleri etkilenmez. Geri alınamaz.",
"deleteConfirmTitle": "{email} Kullanıcısı Silinsin Mi?",
"deleteConfirmContent": "Bu işlem kullanıcıyı bağlı tüm gelen bağlantılarndan 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} Kullanıcıyı Bir Gruba Ekle",
"addToGroupTooltip": "Mevcut bir grubu seçin veya yeni ad girin. Kullanıcıları mevcut gruplarından çıkarmak için Gruptan Çıkar'ı kullanın.",
"groupName": "Grup Adı",
"addToGroupSuccessToast": "{count} kullanıcı {group} grubuna eklendi",
"ungroupSuccessToast": "{count} kullanıcının grubu temizlendi",
"ungroup": "Gruptan Çıkar",
"ungroupConfirmTitle": "{count} Kullanıcıyı Gruptan Çıkar?",
"ungroupConfirmContent": "Seçilen her kullanıcının grup etiketini temizler. Kullanıcılar korunur (tamamen kaldırmak için Sil'i 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} Kullanıcıyı Gelen Bağlantına Bağla",
"attachToInboundsDesc": "Seçilen {count} kullanıcıyı (aynı UUID/şifre ve paylaşılan trafikle) seçilen gelen bağlantıya bağlar. Mevcut bağlantıları da korunur.",
"attachToInboundsTargets": "Hedef Gelen Bağlantılar",
"attachToInboundsNoTargets": "Bağlanacak çoklu kullanıcılı gelen bağlantı yok.",
"detachSelected": "Ayır ({count})",
"detach": "Ayır",
"detachFromInboundsTitle": "{count} Kullanıcıyı Gelen Bağlantından Ayır",
"detachFromInboundsDesc": "Seçilen {count} kullanıcıyı seçilen gelen bağlantıdan kaldırır. Kullanıcının zaten bağlı olmadığı gelen bağlantılar atlanır. Kullanıcı kayıtları korunur (tamamen kaldırmak için Sil'i kullanın).",
"detachFromInboundsTargets": "Çözülecek Gelen Bağlantılar",
"detachFromInboundsNoTargets": "Çoklu kullanıcılı gelen bağlantı yok.",
"detachFromInboundsResult": "Ayrıldı {detached}, atlandı {skipped}.",
"detachFromInboundsResultMixed": "Ayrıldı {detached}, atlandı {skipped}, hatalar {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 kullanıcıların 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} Kullanıcı Silinsin Mi?",
"bulkDeleteConfirmContent": "Seçili her kullanıcı bağlı tüm gelen bağlantılarndan kaldırılır ve trafik kaydı silinir. Geri alınamaz.",
"bulkAdjustTitle": "{count} Kullanıcıyı Ayarla",
"bulkAdjustHint": "Pozitif değerler ekler, negatif değerler azaltır. Sınırsız süreli veya trafikli kullanıcılar ilgili alan için atlanır.",
"bulkAdjustNothing": "Uygulamadan önce gün veya trafik belirleyin.",
"addDays": "Gün Ekle",
"addTrafficGB": "Trafik Ekle (GB)",
"delDepleted": "Süresi/Kotası Bitenleri Sil",
"delDepletedConfirmTitle": "Tükenmiş Kullanıcılar Silinsin Mi?",
"delDepletedConfirmContent": "Trafik kotası dolan veya süresi geçen tüm kullanıcılar silinir. Geri alınamaz.",
"auth": "Auth",
"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",
"telegramIdPlaceholder": "Sayısal Telegram kullanıcı ID'si (0 = yok)",
"created": "Oluşturuldu",
"updated": "Güncellendi",
"ipLimit": "IP Limiti",
"toasts": {
"deleted": "Kullanıcı silindi",
"trafficReset": "Trafik sıfırlandı",
"allTrafficsReset": "Tüm kullanıcıların trafiği sıfırlandı",
"bulkDeleted": "{count} kullanıcı silindi",
"bulkDeletedMixed": "{ok} silindi, {failed} başarısız",
"bulkCreated": "{count} kullanıcı oluşturuldu",
"bulkCreatedMixed": "{ok} oluşturuldu, {failed} başarısız",
"bulkAdjusted": "{count} kullanıcı ayarlandı",
"bulkAdjustedMixed": "{ok} ayarlandı, {skipped} atlandı",
"delDepleted": "{count} tükenmiş kullanıcı silindi"
}
},
"groups": {
"title": "Gruplar",
"name": "İsim",
"clientCount": "Gruptaki kullanıcılar",
"totalGroups": "Toplam grup",
"totalGroupedClients": "Grubu olan kullanıcılar",
"trafficUsed": "Kullanılan trafik",
"totalTraffic": "Toplam trafik",
"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} kullanıcının grubu yeniden adlandırıldı.",
"deleteConfirmTitle": "{name} Grubunu Sil?",
"deleteConfirmContent": "Bu işlem grubu siler ve etiketini {count} kullanıcıdan kaldırır. Kullanıcılar silinmez.",
"deleteSuccess": "{count} kullanıcının grubu temizlendi.",
"resetTraffic": "Trafiği Sıfırla",
"resetConfirmTitle": "{name} Grubunun Trafiğini Sıfırla?",
"resetConfirmContent": "Bu, bu gruptaki tüm {count} kullanıcının yukarı/aşağı trafiğini sıfırlar.",
"resetSuccess": "{count} kullanıcının trafiği sıfırlandı.",
"adjustSuccess": "{name} içinde {count} kullanıcı ayarlandı.",
"emptyForAction": "Bu grupta henüz kullanıcı yok.",
"deleteGroupOnly": "Grubu Sil (Kullanıcıları Tut)",
"deleteClients": "Gruptaki Kullanıcıları Sil",
"deleteClientsConfirmTitle": "{name} İçindeki Tüm Kullanıcıları Sil?",
"deleteClientsConfirmContent": "Bu işlem, {count} kullanıcıyı trafik kayıtlarıyla birlikte kalıcı olarak siler. Grup etiketi de temizlenir. Geri alınamaz.",
"deleteClientsSuccess": "{count} kullanıcı silindi.",
"deleteClientsMixed": "{ok} silindi, {failed} atlandı",
"addToGroup": "Kullanıcı Ekle…",
"addToGroupTitle": "«{name}» Grubuna Kullanıcı Ekle",
"addToGroupDesc": "Bu gruba eklemek için kullanıcıları seçin. Mevcut gelen bağlantılar korunur; yalnızca grup etiketi değişir. Halihazırda bu grupta olan kullanıcılar listelenmez.",
"addToGroupEmpty": "Eklenecek başka kullanıcı yok.",
"addToGroupResult": "{count} kullanıcı {name} grubuna eklendi.",
"removeFromGroup": "Kullanıcı Çıkar…",
"removeFromGroupTitle": "«{name}» Grubundan Kullanıcı Çıkar",
"removeFromGroupDesc": "Bu gruptan çıkarılacak üyeleri seçin. Kullanıcılar korunur (tamamen kaldırmak için «Gruptaki kullanıcıları sil» kullanın).",
"removeFromGroupResult": "{name} grubundan {count} kullanıcı çıkarıldı."
},
"nodes": {
"title": "Düğümler",
"addNode": "Düğüm Ekle",
"editNode": "Düğümü Düzenle",
"totalNodes": "Toplam Düğüm",
"onlineNodes": "Çevrimiçi",
"offlineNodes": "Çevrimdışı",
"avgLatency": "Ortalama Gecikme",
"name": "Ad",
"namePlaceholder": "ör. de-frankfurt-1",
"addressPlaceholder": "panel.example.com veya 1.2.3.4",
"remark": "Açıklama",
"scheme": "Şema",
"address": "Adres",
"port": "Port",
"basePath": "Temel Yol",
"apiToken": "API Token",
"apiTokenPlaceholder": "Uzak panelin Ayarlar sayfasındaki token",
"apiTokenHint": "Uzak panel API token'ını Ayarlar → API Token altında gösterir.",
"regenerate": "Token'ı Yeniden Oluştur",
"regenerateConfirm": "Yeniden oluşturmak mevcut token'ı geçersiz kılar. Onu kullanan tüm merkezi paneller, güncellenene kadar erişimini kaybeder. Devam edilsin mi?",
"allowPrivateAddress": "Özel Adrese İzin Ver",
"allowPrivateAddressHint": "Yalnızca özel ağ veya VPN üzerindeki düğümler için etkinleştirin.",
"enable": "Etkin",
"status": "Durum",
"cpu": "CPU",
"mem": "Bellek",
"uptime": "Çalışma Süresi",
"latency": "Gecikme",
"lastHeartbeat": "Son Sinyal",
"xrayVersion": "Xray Sürümü",
"panelVersion": "Panel Sürümü",
"actions": "İşlemler",
"probe": "Şimdi Test Et",
"updatePanel": "Paneli Güncelle",
"updateSelected": "Seçilenleri Güncelle ({count})",
"updateAvailable": "Güncelleme mevcut",
"upToDate": "Güncel",
"updateConfirmTitle": "{count} düğüm en son sürüme güncellensin mi?",
"updateConfirmContent": "Seçilen her düğüm en son sürümü indirir ve yeniden başlatılır. Yalnızca etkin ve çevrimiçi düğümler güncellenir.",
"testConnection": "Bağlantıyı Test Et",
"connectionOk": "Bağlantı tamam ({ms} ms)",
"connectionFailed": "Bağlantı başarısız",
"never": "Asla",
"justNow": "Şimdi",
"subNode": "Alt Düğüm",
"subNodeTip": "Salt okunur: {parent} üzerinden erişilen bir alt düğüm. Bunu {parent} panelinden yönetin.",
"deleteConfirmTitle": "\"{name}\" düğümü silinsin mi?",
"deleteConfirmContent": "Bu işlem düğüm izlemeyi durdurur. Uzak panelin kendisi etkilenmez.",
"statusValues": {
"online": "Çevrimiçi",
"offline": "Çevrimdışı",
"unknown": "Bilinmiyor"
},
"toasts": {
"list": "Düğümler yüklenemedi",
"obtain": "Düğüm yüklenemedi",
"add": "Düğüm ekle",
"update": "Düğümü güncelle",
"delete": "Düğümü sil",
"deleted": "Düğüm silindi",
"test": "Bağlantıyı test et",
"fillRequired": "Ad, adres, port ve API token gereklidir",
"probeFailed": "Test başarısız",
"updateStarted": "Panel güncellemesi başlatıldı",
"updateResult": "{ok} düğümde güncelleme başlatıldı, {failed} başarısız",
"updateNoneEligible": "En az bir çevrimiçi ve etkin düğüm seçin"
},
"tlsVerifyMode": "TLS Doğrulaması",
"tlsVerifyModeHint": "Panelin düğümün HTTPS sertifikasını nasıl doğrulayacağını belirler. Sabitle veya Atla, kendinden imzalı sertifikalar içindir (yalnızca https düğümleri).",
"tlsVerify": "Doğrula (varsayılan CA)",
"tlsPin": "Sertifikayı Sabitle (SHA-256)",
"tlsSkip": "Doğrulamayı Atla",
"tlsSkipWarning": "Doğrulamayı atlamak, ortadaki adam (MITM) saldırılarına karşı korumayı kaldırır — API anahtarı ele geçirilebilir. Bunun yerine sertifikayı sabitlemeniz önerilir.",
"pinnedCert": "Sabitlenen Sertifika SHA-256",
"pinnedCertHint": "Düğüm sertifikasının base64 veya hex biçiminde SHA-256 değeri. Şimdi düğümden okumak için Getir'i kullanın.",
"pinnedCertPlaceholder": "base64 veya hex SHA-256",
"fetchPin": "Getir",
"pinFetched": "Düğümün geçerli sertifikası alındı",
"pinFetchFailed": "Sertifika alınamadı"
},
"settings": {
"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",
"restartPanelDesc": "Paneli yeniden başlatmak istediğinizden emin misiniz? Yeniden başlattıktan sonra panele erişemezseniz, sunucudaki panel loglarını kontrol edin.",
"restartPanelSuccess": "Panel başarıyla yeniden başlatıldı.",
"actions": "İşlemler",
"resetDefaultConfig": "Varsayılana Sıfırla",
"panelSettings": "Genel",
"securitySettings": "Kimlik Doğrulama",
"securityWarnings": "Güvenlik Uyarıları",
"panelExposed": "Paneliniz dışa açık olabilir:",
"warnHttp": "Panel düz HTTP üzerinden sunuluyor — üretim için TLS kurun.",
"warnDefaultPort": "Varsayılan 2053 portu yaygın olarak bilinmektedir — farklı bir portla değiştirin.",
"warnDefaultBasePath": "Varsayılan temel yol \"/\" yaygın olarak bilinmektedir — rastgele bir yol ile değiştirin.",
"warnDefaultSubPath": "Varsayılan abonelik yolu \"/sub/\" yaygın olarak bilinmektedir — değiştirin.",
"warnDefaultJsonPath": "Varsayılan JSON abonelik yolu \"/json/\" yaygın olarak bilinmektedir — değiştirin.",
"TGBotSettings": "Telegram Bot",
"panelListeningIP": "Dinleme IP",
"panelListeningIPDesc": "Web paneli için IP adresi. (tüm IP'leri dinlemek için boş bırakın)",
"panelListeningDomain": "Dinleme Alan Adı",
"panelListeningDomainDesc": "Web paneli için alan adı. (tüm alan adlarını ve IP'leri dinlemek için boş bırakın)",
"panelPort": "Dinleme Portu",
"panelPortDesc": "Web paneli için port numarası. (kullanılmayan bir port olmalıdır)",
"publicKeyPath": "Genel Anahtar Yolu",
"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",
"panelUrlPathDesc": "Web paneli için URI yolu. ('/' ile başlar ve '/' ile biter)",
"pageSize": "Sayfa Boyutu",
"pageSizeDesc": "Gelen Bağlantılar tablosu için sayfa boyutunu belirler. (0 = devre dışı)",
"panelProxy": "Panel Ağ Proxy'si",
"panelProxyDesc": "Panelin kendi giden isteklerini (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 gelen bağlantı. Doğrudan bağlantı için boş bırakın.",
"remarkModel": "Açıklama Modeli ve Ayırma Karakteri",
"datepicker": "Takvim Türü",
"datepickerPlaceholder": "Tarih Seçin",
"datepickerDescription": "Planlanmış görevler bu takvime göre çalışacaktır.",
"sampleRemark": "Örnek Açıklama",
"oldUsername": "Mevcut Kullanıcı Adı",
"currentPassword": "Mevcut Şifre",
"newUsername": "Yeni Kullanıcı Adı",
"newPassword": "Yeni Şifre",
"telegramBotEnable": "Telegram Botunu Etkinleştir",
"telegramBotEnableDesc": "Telegram botunu etkinleştirir.",
"telegramToken": "Telegram Token",
"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 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 (Chat ID). Birden fazla ise virgülle ayırın. ({'@'}userinfobot'tan alabilirsiniz veya botta '/id' komutunu kullanabilirsiniz.)",
"telegramNotifyTime": "Bildirim Zamanı",
"telegramNotifyTimeDesc": "Periyodik raporlar için ayarlanan Telegram bot bildirim zamanı. (crontab zaman formatını kullanın)",
"tgNotifyBackup": "Veritabanı Yedeği",
"tgNotifyBackupDesc": "Bir rapor ile birlikte veritabanı yedek dosyasını gönderir.",
"tgNotifyLogin": "Giriş Bildirimi",
"tgNotifyLoginDesc": "Birisi web panelinize giriş yapmaya çalıştığında kullanıcı adı, IP adresi ve zaman hakkında bildirim almanızı sağlar.",
"sessionMaxAge": "Oturum Süresi",
"sessionMaxAgeDesc": "Giriş yaptıktan sonra oturum süresi. (birim: dakika)",
"expireTimeDiff": "Son Kullanma Tarihi Bildirimi",
"expireTimeDiffDesc": "Bu eşik seviyesine ulaşıldığında son kullanma tarihi hakkında bildirim almanızı sağlar. (birim: gün)",
"trafficDiff": "Trafik Sınırı Bildirimi",
"trafficDiffDesc": "Bu eşik seviyesine ulaşıldığında trafik sınırı hakkında bildirim almanızı sağlar. (birim: GB)",
"tgNotifyCpu": "CPU Yükü Bildirimi",
"tgNotifyCpuDesc": "CPU yükü bu eşik seviyesini aşarsa bildirim almanızı sağlar. (birim: %)",
"timeZone": "Saat Dilimi",
"timeZoneDesc": "Planlanmış görevler bu saat dilimine göre çalışacaktır.",
"subSettings": "Abonelik",
"subEnable": "Abonelik Hizmeti",
"subEnableDesc": "Abonelik hizmetini etkinleştirir/devre dışı bırakır.",
"subJsonEnable": "JSON abonelik uç noktasını bağımsız olarak etkinleştirir/devre dışı bırakır.",
"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",
"subSupportUrlDesc": "VPN istemcisinde gösterilen teknik destek bağlantısı.",
"subProfileUrl": "Profil URL'si",
"subProfileUrlDesc": "VPN istemcisinde görüntülenen web sitenize giden bağlantı.",
"subAnnounce": "Duyuru",
"subAnnounceDesc": "VPN istemcisinde görüntülenen duyuru metni",
"subThemeDir": "Abonelik Tema Dizini",
"subThemeDirDesc": "Abonelik sayfası için özel bir şablon (index.html/sub.html) içeren klasörün mutlak yolu (örn. /etc/3x-ui/sub_templates/my-theme/). Varsayılan sayfayı kullanmak için boş bırakın.",
"subEnableRouting": "Yönlendirmeyi etkinleştir",
"subEnableRoutingDesc": "VPN istemcisinde yönlendirmeyi etkinleştirmek için genel ayar. (Yalnızca Happ için)",
"subRoutingRules": "Yönlendirme kuralları",
"subRoutingRulesDesc": "VPN istemcisi için genel yönlendirme kuralları. (Yalnızca Happ için)",
"subClashEnableRouting": "Yönlendirmeyi Etkinleştir",
"subClashEnableRoutingDesc": "Oluşturulan YAML aboneliklerine genel Clash/Mihomo yönlendirme kurallarını ekler.",
"subClashRoutingRules": "Genel Yönlendirme Kuralları",
"subClashRoutingRulesDesc": "Her YAML aboneliğinin başına MATCH,PROXY öncesinde eklenen varsayılan Clash/Mihomo kuralları.",
"subListen": "Dinleme IP",
"subListenDesc": "Abonelik hizmeti için IP adresi. (tüm IP'leri dinlemek için boş bırakın)",
"subPort": "Dinleme Portu",
"subPortDesc": "Abonelik hizmeti için port numarası. (kullanılmayan bir port olmalıdır)",
"subCertPath": "Genel Anahtar Yolu",
"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",
"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": "İstemci uygulamalarındaki abonelik URL'sinin güncellenme aralığı. (birim: saat)",
"subEncrypt": "Kodla",
"subEncryptDesc": "Abonelik hizmetinin döndürülen içeriğini Base64 ile şifreler.",
"subShowInfo": "Kullanım Bilgisini Göster",
"subShowInfoDesc": "Kalan trafiği ve süreyi istemci uygulamalarında görüntüler.",
"subEmailInRemark": "Ada E-posta Ekle",
"subEmailInRemarkDesc": "Abonelik profil adına kullanıcının e-postasını dahil eder.",
"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 bilgilendirir.",
"externalTrafficInformURI": "Harici Trafik Bilgisi URI'si",
"externalTrafficInformURIDesc": "Trafik güncellemeleri bu URI'ye gönderilir.",
"restartXrayOnClientDisable": "Otomatik Devre Dışı Sonrası Xray'i Yeniden Başlat",
"restartXrayOnClientDisableDesc": "Bir kullanıcı süre dolumu veya trafik limiti nedeniyle otomatik devre dışı bırakıldığında Xray'i yeniden başlatır.",
"fragment": "Parçalama",
"fragmentDesc": "TLS merhaba paketinin parçalanmasını etkinleştirir.",
"fragmentSett": "Parçalama Ayarları",
"noisesDesc": "Noises'i etkinleştirir.",
"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 bağlantı etiketleri",
"inboundTagsDesc": "LDAP senkronizasyonunun istemci otomatik oluşturup/silebileceği gelen bağlantılar.",
"noInbounds": "Gelen bağlantı bulunamadı. Önce Gelen Bağlantılar'nda bir tane oluşturun.",
"autoCreate": "Kullanıcıları otomatik oluştur",
"autoDelete": "Kullanıcıları otomatik sil",
"defaultTotalGb": "Varsayılan toplam (GB)",
"defaultExpiryDays": "Varsayılan son kullanma (gün)",
"defaultIpLimit": "Varsayılan IP limiti"
},
"subFormats": {
"finalMask": "Final Mask",
"finalMaskDesc": "Her JSON abonelik akışına eklenen Xray finalmask maskeleri (TCP/UDP) ve QUIC ayarları. Güncel bir Xray istemcisi gerektirir.",
"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": "Mevcut bir veri akışı üzerinden birden çok bağımsız veri akışını iletir.",
"muxSett": "Mux Ayarları",
"direct": "Doğrudan Bağlantı",
"directDesc": "Belirli bir ülkenin alan adları veya IP aralıkları ile doğrudan bağlantı kurar.",
"notifications": "Bildirimler",
"certs": "Sertifikalar",
"externalTraffic": "Harici Trafik",
"dateAndTime": "Tarih ve Saat",
"proxyAndServer": "Proxy ve Sunucu",
"intervals": "Aralıklar",
"information": "Bilgi",
"language": "Dil",
"telegramBotLanguage": "Telegram Bot Dili",
"security": {
"admin": "Yönetici Kimlik Bilgileri",
"twoFactor": "İki Adımlı Doğrulama",
"twoFactorEnable": "2FA'yı Etkinleştir",
"twoFactorEnableDesc": "Daha fazla güvenlik için ek bir doğrulama katmanı ekler.",
"twoFactorModalSetTitle": "İki Adımlı Doğrulamayı Etkinleştir",
"twoFactorModalDeleteTitle": "İki Adımlı Doğrulamayı Devre Dışı Bırak",
"twoFactorModalSteps": "İki adımlı doğrulamayı ayarlamak için şu adımları izleyin:",
"twoFactorModalFirstStep": "1. Bu QR kodunu doğrulama uygulamasında tarayın veya QR kodunun yanındaki metni kopyalayıp uygulamaya yapıştırın.",
"twoFactorModalSecondStep": "2. Uygulamadaki kodu girin",
"twoFactorModalRemoveStep": "İki adımlı doğrulamayı kaldırmak için uygulamadaki kodu girin.",
"twoFactorModalChangeCredentialsTitle": "Kimlik Bilgilerini Değiştir",
"twoFactorModalChangeCredentialsStep": "Yönetici kimlik bilgilerini değiştirmek için uygulamadaki kodu girin.",
"twoFactorModalSetSuccess": "İki faktörlü kimlik doğrulama başarıyla kuruldu.",
"twoFactorModalDeleteSuccess": "İki faktörlü kimlik doğrulama başarıyla silindi.",
"twoFactorModalError": "Yanlış kod",
"show": "Göster",
"hide": "Gizle",
"apiTokenNew": "Yeni Token",
"apiTokenName": "Ad",
"apiTokenNamePlaceholder": "örn. central-panel-a",
"apiTokenNameRequired": "Ad zorunludur",
"apiTokenEmpty": "Henüz token yok — botları veya uzak panelleri doğrulamak için bir tane oluşturun.",
"apiTokenDeleteWarning": "Bu token'ı kullanan tüm bağlantılar anında kimlik doğrulamasını kaybeder.",
"apiTokenCreatedTitle": "Token Oluşturuldu",
"apiTokenCreatedNotice": "Bu token'ı şimdi kopyalayın. Güvenlik nedeniyle okunabilir biçimde saklanmaz ve tekrar gösterilmez."
},
"toasts": {
"modifySettings": "Parametreler değiştirildi.",
"getSettings": "Parametreler alınırken bir hata oluştu.",
"modifyUserError": "Yönetici kimlik bilgileri değiştirilirken bir hata oluştu.",
"modifyUser": "Yönetici kimlik bilgilerini başarıyla değiştirdiniz.",
"originalUserPassIncorrect": "Mevcut kullanıcı adı veya şifre hatalı.",
"userPassMustBeNotEmpty": "Yeni kullanıcı adı ve şifre boş olamaz.",
"getOutboundTrafficError": "Giden trafik alınırken hata oluştu.",
"resetOutboundTrafficError": "Giden trafik sıfırlanırken hata oluştu."
}
},
"xray": {
"title": "Xray Yapılandırmaları",
"save": "Kaydet",
"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.",
"basicTemplate": "Temeller",
"advancedTemplate": "Gelişmiş",
"generalConfigs": "Genel",
"generalConfigsDesc": "Bu seçenekler genel ayarlamaları belirler.",
"logConfigs": "Günlük",
"logConfigsDesc": "Günlükler sunucunuzun verimliliğini etkileyebilir. Yalnızca ihtiyaç durumunda akıllıca etkinleştirmeniz önerilir.",
"blockConfigsDesc": "Bu seçenekler belirli istek protokolleri ve web siteleri temelinde trafiği engeller.",
"basicRouting": "Temel Yönlendirme",
"blockConnectionsConfigsDesc": "Bu seçenekler, istenen belirli ülkelere göre trafiği engelleyecektir.",
"directConnectionsConfigsDesc": "Doğrudan bağlantı, belirli bir trafiğin başka bir sunucu üzerinden yönlendirilmeden doğrudan hedefe gitmesini sağlar.",
"blockips": "IP'leri Engelle",
"blockdomains": "Alan Adlarını Engelle",
"directips": "Doğrudan IP'ler",
"directdomains": "Doğrudan Alan Adları",
"ipv4Routing": "IPv4 Yönlendirme",
"ipv4RoutingDesc": "Bu seçenekler belirli bir varış yerine IPv4 üzerinden trafiği yönlendirir.",
"warpRouting": "WARP Yönlendirme",
"warpRoutingDesc": "Bu seçenekler belirli bir varış yerine WARP üzerinden trafiği yönlendirir.",
"nordRouting": "NordVPN Yönlendirme",
"nordRoutingDesc": "Bu seçenekler belirli bir varış yerine NordVPN üzerinden trafiği yönlendirir.",
"Template": "Gelişmiş Xray Yapılandırma Şablonu",
"TemplateDesc": "Nihai Xray yapılandırma dosyası bu şablona göre oluşturulacaktır.",
"FreedomStrategy": "Freedom Protokol Stratejisi",
"FreedomStrategyDesc": "Freedom Protokolünde ağın çıkış stratejisini ayarlayın.",
"FreedomHappyEyeballs": "Freedom Happy Eyeballs (IPv4/IPv6)",
"FreedomHappyEyeballsDesc": "Doğrudan (freedom) çıkış için çift yığınlı (dual-stack) arama — hem IPv4 hem de IPv6 desteği olan çıkış sunucularında kullanışlıdır.",
"FreedomHappyEyeballsTryDelayDesc": "Diğer adres ailesini denemeden önceki milisaniye. 150250 ms iyi bir başlangıç noktasıdır.",
"RoutingStrategy": "Genel Yönlendirme Stratejisi",
"RoutingStrategyDesc": "Tüm istekleri çözmek için genel trafik yönlendirme stratejisini ayarlayın.",
"outboundTestUrl": "Giden Bağlantı Test URL'si",
"outboundTestUrlDesc": "Giden bağlantı bağlantı testinde kullanılan URL.",
"Torrent": "BitTorrent Protokolünü Engelle",
"Inbounds": "Gelen Bağlantılar",
"InboundsDesc": "Belirtilen istemcileri (clients) kabul eder.",
"Outbounds": "Giden Bağlantılar",
"OutboundSubscriptions": "Giden Bağlantı Abonelikleri",
"OutboundSubscriptionsDesc": "Uzak abonelik URL'lerinden (vmess/vless/trojan/ss/...) giden bağlantılarnı içe aktarın. Etiketler dengeleyicilerde ve yönlendirme kurallarında kullanılabilmek için sabit tutulur. Güncellemeler otomatiktir.",
"Balancers": "Dengeleyiciler",
"balancerTagRequired": "Etiket zorunludur",
"balancerSelectorRequired": "En az bir giden bağlantı seçin",
"OutboundsDesc": "Giden trafiğin yolunu ayarlayın.",
"Routings": "Yönlendirme Kuralları",
"RoutingsDesc": "Her kuralın önceliği önemlidir!",
"completeTemplate": "Tümü",
"logLevel": "Günlük Seviyesi",
"logLevelDesc": "Hata günlükleri için kayıt seviyesi; hangi detayda bilginin kaydedileceğini belirler.",
"accessLog": "Erişim Günlüğü",
"accessLogDesc": "Erişim günlüğü için dosya yolu. 'none' özel değeri erişim günlüklerini devre dışı bırakır.",
"errorLog": "Hata Günlüğü",
"errorLogDesc": "Hata günlüğü için dosya yolu. 'none' özel değeri hata günlüklerini devre dışı bırakır.",
"dnsLog": "DNS Günlüğü",
"dnsLogDesc": "DNS sorgu günlüklerini etkinleştirir.",
"maskAddress": "Adres Maskesi",
"maskAddressDesc": "IP adresi maskesi, etkinleştirildiğinde günlükte görünen IP adresini otomatik olarak değiştirecektir.",
"statistics": "İstatistikler",
"statsInboundUplink": "Gelen Yükleme İstatistikleri",
"statsInboundUplinkDesc": "Tüm gelen proxy'lerin yükleme trafiği için istatistik toplamayı etkinleştirir.",
"statsInboundDownlink": "Gelen İndirme İstatistikleri",
"statsInboundDownlinkDesc": "Tüm gelen proxy'lerin indirme trafiği için istatistik toplamayı etkinleştirir.",
"statsOutboundUplink": "Giden Yükleme İstatistikleri",
"statsOutboundUplinkDesc": "Tüm giden proxy'lerin yükleme trafiği için istatistik toplamayı etkinleştirir.",
"statsOutboundDownlink": "Giden İndirme İstatistikleri",
"statsOutboundDownlinkDesc": "Tüm giden proxy'lerin indirme trafiği için istatistik toplamayı etkinleştirir.",
"connectionLimits": "Bağlantı Sınırları",
"connectionLimitsDesc": "Kullanıcı seviyesi 0 için bağlantı düzeyi politikaları. Xray'in varsayılanını kullanmak için alanı boş bırakın.",
"connIdle": "Boşta Kalma Zaman Aşımı",
"connIdleDesc": "Bağlantı bu kadar saniye boşta kaldıktan sonra kapatılır. Değerin düşürülmesi, yoğun sunucularda belleği ve dosya tanımlayıcılarını daha hızlı serbest bırakır (Xray varsayılanı: 300).",
"bufferSize": "Arabellek Boyutu",
"bufferSizeDesc": "Bağlantı başına dahili arabellek boyutu (KB). Düşük RAM'li sunucularda bellek kullanımını en aza indirmek için 0 olarak ayarlayın (Xray varsayılanı platforma bağlıdır).",
"bufferSizePlaceholder": "otomatik",
"seconds": "saniye",
"rules": {
"first": "İlk",
"last": "Son",
"up": "Yukarı",
"down": "Aşağı",
"source": "Kaynak",
"dest": "Hedef",
"inbound": "Gelen Bağlantı",
"outbound": "Giden Bağlantı",
"balancer": "Dengeleyici",
"info": "Bilgi",
"add": "Kural Ekle",
"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 Bağlantı Etiketleri",
"outboundTag": "Giden Bağlantı 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 bağlantı tarafından kullanılıyor",
"tagRequired": "Etiket zorunludur",
"tagPlaceholder": "benzersiz-etiket",
"localIpPlaceholder": "yerel IP",
"dialerProxyPlaceholder": "Zincirlemek için bir giden bağlantı seçin",
"dialerProxyHint": "Bir proxy zinciri oluşturmak için bu giden bağlantıyı başka bir giden bağlantı (etikete göre) üzerinden bağlayın. Doğrudan bağlanmak için boş bırakın.",
"addressRequired": "Adres zorunludur",
"portRequired": "Port zorunludur",
"optional": "opsiyonel",
"udpOverTcp": "UDP over TCP",
"uotVersion": "UoT Sürümü",
"inboundTag": "Gelen Bağlantı Etiketi",
"inboundTagPlaceholder": "yönlendirme kurallarında kullanılan gelen bağlantı 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. İstek 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",
"proxyProtocol": "Proxy Protocol",
"tcpUserTimeoutMs": "TCP User Timeout (ms)",
"tcpKeepAliveIdleS": "TCP keep-alive idle (s)"
},
"outbound": {
"addOutbound": "Giden Bağlantı Ekle",
"addReverse": "Ters Ekle",
"editOutbound": "Giden Bağlantını Düzenle",
"editReverse": "Tersi Düzenle",
"reverseTag": "Ters Etiket",
"reverseTagDesc": "VLESS basit ters proxy giden bağlantı etiketi. Devre dışı bırakmak için boş bırakın.",
"reverseTagPlaceholder": "çıkış etiketi (boş = devre dışı)",
"tag": "Etiket",
"tagDesc": "Benzersiz Etiket",
"address": "Adres",
"reverse": "Ters",
"domain": "Alan Adı",
"type": "Tür",
"bridge": "Bridge",
"portal": "Portal",
"link": "Bağlantı",
"intercon": "Bağlantı",
"settings": "Ayarlar",
"accountInfo": "Hesap Bilgileri",
"outboundStatus": "Giden Bağlantı Durumu",
"sendThrough": "Üzerinden Gönder",
"test": "Test",
"testResult": "Test Sonucu",
"testing": "Bağlantı test ediliyor...",
"testSuccess": "Test başarılı",
"testFailed": "Test başarısız",
"testError": "Giden bağlantı test edilemedi",
"testModeTooltip": "TCP: hızlı sadece arama (dial-only) testi. HTTP: Xray üzerinden tam istek.",
"testAll": "Tümünü Test Et",
"nordvpn": "NordVPN",
"accessToken": "Erişim Jetonu",
"country": "Ülke",
"server": "Sunucu",
"city": "Şehir",
"allCities": "Tüm Şehirler",
"privateKey": "Özel Anahtar",
"load": "Yükle"
},
"outboundSub": {
"manage": "Abonelikler",
"title": "Giden Bağlantı Abonelikleri",
"remark": "Açıklama (isteğe bağlı)",
"remarkPlaceholder": "örn. HK düğümleri",
"url": "Abonelik URL'si",
"urlPlaceholder": "https://... (bağlantıların base64 listesi)",
"tagPrefix": "Etiket öneki",
"tagPrefixPlaceholder": "hk-",
"interval": "Güncelleme aralığı",
"hours": "sa",
"minutes": "dk",
"intervalHint": "Varsayılan 10 dakika. Arka plan görevi sık sık kontrol eder; her abonelik yalnızca kendi güncelleme süresi dolduğunda yeniden getirilir.",
"enabled": "Etkin",
"allowPrivate": "Özel ağ adreslerine izin ver",
"allowPrivateHint": "Bu aboneliğin URL'si için localhost / LAN / özel IP adreslerine izin verir. Güvenlik nedeniyle varsayılan olarak kapalıdır — yalnızca güvenilen bir yerel kaynak için etkinleştirin.",
"prepend": "Manuel giden bağlantılarndan önce",
"prependHint": "Bu aboneliğin giden bağlantılarnı manuel olanlarınızın öncesine ekler, böylece birisi varsayılan giden bağlantı olabilir.",
"preview": "Önizleme",
"previewEmpty": "Bu URL'de hiçbir giden bağlantı bulunamadı.",
"refreshAll": "Tümünü yenile",
"statusOk": "Tamam",
"toastUpdated": "Abonelik güncellendi",
"addButton": "Ekle",
"active": "Aktif abonelikler",
"empty": "Henüz hiç abonelik yok. Yukarıdan bir tane ekleyin.",
"colRemark": "Açıklama",
"colPrefix": "Önek",
"colInterval": "Aralık",
"colLastFetch": "Son getirme",
"colEnabled": "Etkin",
"auto": "otomatik",
"never": "asla",
"yes": "Evet",
"no": "Hayır",
"refreshNow": "Şimdi yenile",
"lastError": "Son hata",
"deleteConfirm": "Bu aboneliği silmek istiyor musunuz?",
"restartHint": "Ekledikten veya yeniledikten sonra giden bağlantılarnı aktif hale getirmek için Xray'i yeniden başlatın (veya bir sonraki otomatik yeniden yüklemeyi bekleyin).",
"fromSubsTitle": "Giden bağlantı aboneliklerinden (salt okunur)",
"fromSubsDesc": "Aktif aboneliklerinizden içe aktarıldı. Bunları yukarıdaki Abonelikler panelinden yönetin.",
"toastLoadFailed": "Abonelikler yüklenemedi",
"toastUrlRequired": "Abonelik URL'si gereklidir",
"toastAdded": "Abonelik eklendi",
"toastAddFailed": "Abonelik eklenemedi",
"toastRefreshed": "Yenilendi",
"toastRefreshFailed": "Yenileme başarısız",
"toastDeleted": "Silindi",
"toastDeleteFailed": "Silme işlemi başarısız"
},
"balancer": {
"addBalancer": "Dengeleyici Ekle",
"editBalancer": "Dengeleyiciyi Düzenle",
"balancerStrategy": "Strateji",
"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 (balancerTag) ve Giden Bağlantı Etiketi (outboundTag) aynı anda kullanılamaz. Aynı anda kullanıldığında yalnızca giden bağlantı etiketi geçerli olur."
},
"wireguard": {
"secretKey": "Gizli Anahtar",
"publicKey": "Genel Anahtar",
"allowedIPs": "İzin Verilen IP'ler",
"endpoint": "Uç Nokta",
"psk": "Ön Paylaşılan Anahtar",
"domainStrategy": "Alan Adı Stratejisi"
},
"tun": {
"nameDesc": "TUN arabiriminin adı. Varsayılan değer 'xray0'dır.",
"mtuDesc": "Maksimum İletim Birimi. Veri paketlerinin maksimum boyutu. Varsayılan değer 1500'dür.",
"userLevel": "Kullanıcı Seviyesi",
"userLevelDesc": "Bu gelen bağlantı üzerinden 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 bağlantı eklendi.",
"outboundUpdated": "NordVPN giden bağlantı güncellendi."
},
"warp": {
"changeIp": "IP Değiştir",
"changeIpSuccess": "WARP IP adresi başarıyla değiştirildi!",
"autoUpdateIp": "IP Adresini Otomatik Güncelle",
"intervalDays": "Aralık (Gün)",
"intervalDesc": "Devre dışı bırakmak için 0. IP adresini otomatik olarak değiştirir.",
"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 Bağlantı Ekle"
},
"dns": {
"enable": "DNS'yi Etkinleştir",
"enableDesc": "Dahili DNS sunucusunu etkinleştirir.",
"tag": "DNS Gelen Bağlantı Etiketi",
"tagDesc": "Bu etiket, yönlendirme kurallarında gelen bağlantı etiketi olarak kullanılabilir.",
"clientIp": "İstemci IP",
"clientIpDesc": "DNS sorguları sırasında belirtilen IP konumunu sunucuya bildirmek için kullanılır.",
"disableCache": "Önbelleği Devre Dışı Bırak",
"disableCacheDesc": "DNS önbelleğini devre dışı bırakır.",
"disableFallback": "Yedeklemeyi Devre Dışı Bırak",
"disableFallbackDesc": "Yedek DNS sorgularını devre dışı bırakır.",
"disableFallbackIfMatch": "Eşleşirse Yedeklemeyi Devre Dışı Bırak",
"disableFallbackIfMatchDesc": "Alan adı listesi eşleştiğinde yedek DNS sorgularını devre dışı bırakır.",
"enableParallelQuery": "Paralel Sorguyu Etkinleştir",
"enableParallelQueryDesc": "Daha hızlı çözümleme için birden fazla sunucuya paralel DNS sorgularını etkinleştirir.",
"strategy": "Sorgu Stratejisi",
"strategyDesc": "Alan adlarını çözmek için genel strateji.",
"add": "Sunucu Ekle",
"edit": "Sunucuyu Düzenle",
"domains": "Alan Adları",
"expectIPs": "Beklenen IP'ler",
"unexpectIPs": "Beklenmeyen IP'ler",
"useSystemHosts": "Sistem Hosts'larını Kullan",
"useSystemHostsDesc": "İşletim sisteminin hosts dosyasını kullanır.",
"serveStale": "Süresi Dolmuş Sonuçları Sun",
"serveStaleDesc": "Arka planda yenilenirken süresi dolmuş önbellek sonuçlarını döndürür.",
"serveExpiredTTL": "Süresi Dolmuş TTL",
"serveExpiredTTLDesc": "Süresi dolmuş önbellek girdilerinin geçerlilik süresi (saniye); 0 = asla",
"timeoutMs": "Zaman Aşımı (ms)",
"skipFallback": "Yedekleri Atla",
"finalQuery": "Son Sorgu",
"hosts": "Hosts",
"hostsAdd": "Host Ekle",
"hostsEmpty": "Tanımlı Host yok.",
"hostsDomain": "Alan adı (ör. domain:example.com)",
"hostsValues": "IP veya alan adı — yazıp Enter'a basın",
"usePreset": "Şablon Kullan",
"dnsPresetTitle": "DNS Şablonları",
"dnsPresetFamily": "Aile",
"clearAll": "Tümünü Sil",
"clearAllTitle": "Tüm DNS sunucularını sil?",
"clearAllConfirm": "Bu işlem tüm DNS sunucularını listeden kaldırır. Geri alınamaz."
},
"fakedns": {
"add": "Sahte DNS Ekle",
"edit": "Sahte DNS'i Düzenle",
"ipPool": "IP Havuzu Alt Ağı",
"poolSize": "Havuz Boyutu"
}
}
},
"tgbot": {
"keyboardClosed": "❌ Klavye kapatıldı!",
"noResult": "❗ Sonuç yok!",
"noQuery": "❌ Sorgu bulunamadı! Lütfen komutu tekrar kullanın!",
"wentWrong": "❌ Bir şeyler yanlış gitti!",
"noIpRecord": "❗ IP Kaydı Yok!",
"noInbounds": "❗ Gelen bağlantı bulunamadı!",
"unlimited": "♾ Sınırsız (Sıfırla)",
"add": "Ekle",
"month": "Ay",
"months": "Aylar",
"day": "Gün",
"days": "Günler",
"hours": "Saatler",
"minutes": "Dakikalar",
"unknown": "Bilinmeyen",
"inbounds": "Gelen Bağlantılar",
"clients": "Kullanıcılar",
"offline": "🔴 Çevrimdışı",
"online": "🟢 Çevrimiçi",
"commands": {
"unknown": "❗ Bilinmeyen komut.",
"pleaseChoose": "👇 Lütfen seçin:\r\n",
"help": "🤖 Bu bota hoş geldiniz! Web panelinden belirli verileri sunmak ve gerektiğinde değişiklik yapmanıza olanak tanımak için tasarlanmıştır.\r\n\r\n",
"start": "👋 Merhaba <i>{{ .Firstname }}</i>.\r\n",
"welcome": "🤖 <b>{{ .Hostname }}</b> yönetim botuna hoş geldiniz.\r\n",
"status": "✅ Bot çalışıyor!",
"usage": "❗ Lütfen aramak için bir metin sağlayın!",
"getID": "🆔 Kimliğiniz: <code>{{ .ID }}</code>",
"helpAdminCommands": "Xray Core'u yeniden başlatmak için:\r\n<code>/restart</code>\r\n\r\nBir kullanıcının istatistiklerini aramak için:\r\n<code>/usage [E-posta]</code>\r\n\r\nGelen bağlantılarnı aramak için (kullanıcı istatistikleri ile):\r\n<code>/inbound [Açıklama]</code>\r\n\r\nTelegram Sohbet Kimliği (Chat ID):\r\n<code>/id</code>",
"helpClientCommands": "İstatistiklerinizi görmek için şu komutu kullanın:\r\n\r\n<code>/usage [E-posta]</code>\r\n\r\nTelegram Sohbet Kimliği:\r\n<code>/id</code>",
"restartUsage": "\r\n\r\n<code>/restart</code>",
"restartSuccess": "✅ İşlem başarılı!",
"restartFailed": "❗ İşlem hatası.\r\n\r\n<code>Hata: {{ .Error }}</code>.",
"xrayNotRunning": "❗ Xray Core çalışmıyor.",
"startDesc": "Ana menüyü göster",
"helpDesc": "Bot yardımı",
"statusDesc": "Bot durumunu kontrol et",
"idDesc": "Telegram Kimliğinizi gösterir"
},
"messages": {
"cpuThreshold": "🔴 CPU Yükü ({{ .Percent }}%), {{ .Threshold }}% eşiğini aşıyor",
"selectUserFailed": "❌ Kullanıcı seçiminde hata!",
"userSaved": "✅ Telegram Kullanıcısı kaydedildi.",
"loginSuccess": "✅ Panele başarıyla giriş yapıldı.\r\n",
"loginFailed": "❗️Panele giriş denemesi başarısız oldu.\r\n",
"2faFailed": "2FA Hatası",
"report": "🕰 Planlanmış Raporlar: {{ .RunTime }}\r\n",
"datetime": "⏰ Tarih ve Saat: {{ .DateTime }}\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",
"ipv4": "🌐 IPv4: {{ .IPv4 }}\r\n",
"ip": "🌐 IP: {{ .IP }}\r\n",
"ips": "🔢 IP'ler:\r\n{{ .IPs }}\r\n",
"serverUpTime": "⏳ Çalışma Süresi: {{ .UpTime }} {{ .Unit }}\r\n",
"serverLoad": "📈 Sistem Yükü: {{ .Load1 }}, {{ .Load2 }}, {{ .Load3 }}\r\n",
"serverMemory": "📋 RAM: {{ .Current }}/{{ .Total }}\r\n",
"tcpCount": "🔹 TCP: {{ .Count }}\r\n",
"udpCount": "🔸 UDP: {{ .Count }}\r\n",
"traffic": "🚦 Trafik: {{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n",
"xrayStatus": "️ Durum: {{ .State }}\r\n",
"username": "👤 Kullanıcı Adı: {{ .Username }}\r\n",
"reason": "❗️ Sebep: {{ .Reason }}\r\n",
"time": "⏰ Zaman: {{ .Time }}\r\n",
"inbound": "📍 Gelen Bağlantı: {{ .Remark }}\r\n",
"port": "🔌 Port: {{ .Port }}\r\n",
"expire": "📅 Son Kullanma Tarihi: {{ .Time }}\r\n",
"expireIn": "📅 Sona Erecek: {{ .Time }}\r\n",
"active": "💡 Aktif: {{ .Enable }}\r\n",
"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",
"upload": "🔼 Yükleme: ↑{{ .Upload }}\r\n",
"download": "🔽 İndirme: ↓{{ .Download }}\r\n",
"total": "📊 Toplam: ↑↓{{ .UpDown }} / {{ .Total }}\r\n",
"TGUser": "👤 Telegram Kullanıcısı: {{ .TelegramID }}\r\n",
"exhaustedMsg": "🚨 Limiti Dolanlar ({{ .Type }}):\r\n",
"exhaustedCount": "🚨 Limiti Dolan {{ .Type }} sayısı:\r\n",
"onlinesCount": "🌐 Çevrimiçi Kullanıcılar: {{ .Count }}\r\n",
"disabled": "🛑 Devre Dışı: {{ .Disabled }}\r\n",
"depleteSoon": "🔜 Kotası Dolmak Üzere: {{ .Deplete }}\r\n\r\n",
"backupTime": "🗄 Yedekleme Zamanı: {{ .Time }}\r\n",
"refreshedOn": "\r\n📋🔄 Yenilendi: {{ .Time }}\r\n\r\n",
"yes": "✅ Evet",
"no": "❌ Hayır",
"received_id": "🔑📥 Kimlik (ID) güncellendi.",
"received_password": "🔑📥 Şifre güncellendi.",
"received_email": "📧📥 E-posta güncellendi.",
"received_comment": "💬📥 Yorum güncellendi.",
"id_prompt": "🔑 Mevcut Kimlik (ID): {{ .ClientId }}\n\nYeni kimliğinizi (ID) girin.",
"pass_prompt": "🔑 Varsayılan Şifre: {{ .ClientPassword }}\n\nŞifrenizi girin.",
"email_prompt": "📧 Varsayılan E-posta: {{ .ClientEmail }}\n\nE-postanızı girin.",
"comment_prompt": "💬 Varsayılan Yorum: {{ .ClientComment }}\n\nYorumunuzu girin.",
"inbound_client_data_id": "🔄 Gelen Bağlantı: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n📊 Kota: {{ .ClientTraffic }}\n📅 Bitiş Tarihi: {{ .ClientExp }}\n🌐 IP Sınırı: {{ .IpLimit }}\n💬 Açıklama: {{ .ClientComment }}\n\nArtık bu kullanıcıyı gelen bağlantıya ekleyebilirsiniz!",
"inbound_client_data_pass": "🔄 Gelen Bağlantı: {{ .InboundRemark }}\n\n🔑 Şifre: {{ .ClientPass }}\n📧 E-posta: {{ .ClientEmail }}\n📊 Kota: {{ .ClientTraffic }}\n📅 Bitiş Tarihi: {{ .ClientExp }}\n🌐 IP Sınırı: {{ .IpLimit }}\n💬 Açıklama: {{ .ClientComment }}\n\nArtık bu kullanıcıyı gelen bağlantıya ekleyebilirsiniz!",
"cancel": "❌ İşlem iptal edildi! \n\nİstediğiniz zaman /start ile yeniden başlayabilirsiniz. 🔄",
"error_add_client": "⚠️ Hata:\n\n {{ .error }}",
"using_default_value": "Tamam, varsayılan değeri kullanacağım. 😊",
"incorrect_input": "Geçersiz değer girdiniz.\nİfadeler arasında boşluk olmamalıdır.\nDoğru örnek: aaaaaa\nYanlış örnek: aaa aaa 🚫",
"AreYouSure": "Emin misiniz? 🤔",
"SuccessResetTraffic": "📧 E-posta: {{ .ClientEmail }}\n🏁 Sonuç: ✅ Başarılı",
"FailedResetTraffic": "📧 E-posta: {{ .ClientEmail }}\n🏁 Sonuç: ❌ Başarısız \n\n🛠️ Hata: [ {{ .ErrorMessage }} ]",
"FinishProcess": "🔚 Tüm kullanıcılar için trafik sıfırlama işlemi tamamlandı."
},
"buttons": {
"closeKeyboard": "❌ Klavyeyi Kapat",
"cancel": "❌ İptal",
"cancelReset": "❌ Sıfırlamayı İptal Et",
"cancelIpLimit": "❌ IP Limitini İptal Et",
"confirmResetTraffic": "✅ Trafiği Sıfırlamayı Onayla?",
"confirmClearIps": "✅ IP'leri Temizlemeyi Onayla?",
"confirmRemoveTGUser": "✅ Telegram Kullanıcısını Kaldırmayı Onayla?",
"confirmToggle": "✅ Kullanıcıyı Etkinleştirme/Devre Dışı Bırakmayı Onayla?",
"dbBackup": "Veritabanı Yedeği Al",
"serverUsage": "Sunucu Kullanımı",
"getInbounds": "Gelen Bağlantılarnı Al",
"depleteSoon": "Kotası Dolmak Üzere",
"clientUsage": "Kullanıcı İstatistikleri",
"onlines": "Çevrimiçi Kullanıcılar",
"commands": "Komutlar",
"refresh": "🔄 Yenile",
"clearIPs": "❌ IP'leri Temizle",
"removeTGUser": "❌ Telegram Kullanıcısını Kaldır",
"selectTGUser": "👤 Telegram Kullanıcısını Seç",
"selectOneTGUser": "👤 Bir Telegram Kullanıcısını Seçin:",
"resetTraffic": "📈 Trafiği Sıfırla",
"resetExpire": "📅 Son Kullanma Tarihini Değiştir",
"ipLog": "🔢 IP Günlüğü",
"ipLimit": "🔢 IP Limiti",
"setTGUser": "👤 Telegram Kullanıcısını Ayarla",
"toggle": "🔘 Etkinleştir / Devre Dışı Bırak",
"custom": "🔢 Özel",
"confirmNumber": "✅ Onayla: {{ .Num }}",
"confirmNumberAdd": "✅ Ekleme onayı: {{ .Num }}",
"limitTraffic": "🚧 Trafik Sınırı",
"getBanLogs": "Yasak Günlüklerini Al",
"allClients": "Tüm Kullanıcılar",
"addClient": "Kullanıcı Ekle",
"submitDisable": "Devre Dışı Olarak Gönder ☑️",
"submitEnable": "Etkin Olarak Gönder ✅",
"use_default": "🏷️ Varsayılanı Kullan",
"change_id": "⚙️🔑 Kimlik",
"change_password": "⚙️🔑 Şifre",
"change_email": "⚙️📧 E-posta",
"change_comment": "⚙️💬 Yorum",
"change_flow": "⚙️🚦 Flow",
"ResetAllTraffics": "Tüm Trafikleri Sıfırla",
"SortedTrafficUsageReport": "Sıralı Trafik Kullanım Raporu"
},
"answers": {
"successfulOperation": "✅ İşlem başarılı!",
"errorOperation": "❗ İşlemde hata.",
"getInboundsFailed": "❌ Gelen Bağlantılar alınamadı.",
"getClientsFailed": "❌ Kullanıcılar alınamadı.",
"canceled": "❌ {{ .Email }}: İşlem iptal edildi.",
"clientRefreshSuccess": "✅ {{ .Email }}: Kullanıcı başarıyla yenilendi.",
"IpRefreshSuccess": "✅ {{ .Email }}: IP'ler başarıyla yenilendi.",
"TGIdRefreshSuccess": "✅ {{ .Email }}: Kullanıcının Telegram Kimliği başarıyla yenilendi.",
"resetTrafficSuccess": "✅ {{ .Email }}: Trafik başarıyla sıfırlandı.",
"setTrafficLimitSuccess": "✅ {{ .Email }}: Trafik limiti başarıyla kaydedildi.",
"expireResetSuccess": "✅ {{ .Email }}: Son kullanma günleri başarıyla sıfırlandı.",
"resetIpSuccess": "✅ {{ .Email }}: IP limiti {{ .Count }} başarıyla kaydedildi.",
"clearIpSuccess": "✅ {{ .Email }}: IP'ler başarıyla temizlendi.",
"getIpLog": "✅ {{ .Email }}: IP Günlüğü alındı.",
"getUserInfo": "✅ {{ .Email }}: Telegram Kullanıcı Bilgisi alındı.",
"removedTGUserSuccess": "✅ {{ .Email }}: Telegram Kullanıcısı başarıyla kaldırıldı.",
"enableSuccess": "✅ {{ .Email }}: Başarıyla etkinleştirildi.",
"disableSuccess": "✅ {{ .Email }}: Başarıyla devre dışı bırakıldı.",
"askToAddUserId": "Yapılandırmanız bulunamadı!\r\nLütfen yöneticinizden Telegram Chat ID'nizi yapılandırmanıza eklemesini isteyin.\r\n\r\nSizin Chat ID'niz: <code>{{ .TgUserID }}</code>",
"chooseClient": "Gelen Bağlantı {{ .Inbound }} için bir Kullanıcı Seçin",
"chooseInbound": "Bir Gelen Bağlantı Seçin"
}
}
}