// Turkish translations
window.LANG_TR = {
  // Common
  common: {
    save: "Kaydet",
    cancel: "İptal",
    confirm: "Onayla",
    loading: "Yükleniyor...",
    success: "Başarılı",
    failed: "Başarısız",
    delete: "Sil",
    edit: "Düzenle",
    add: "Ekle",
    enable: "Etkinleştir",
    disable: "Devre Dışı Bırak",
    enabled: "Etkin",
    disabled: "Devre Dışı",
    yes: "Evet",
    no: "Hayır",
    on: "Açık",
    off: "Kapalı",
    apply: "Uygula",
    reset: "Sıfırla",
    refresh: "Yenile",
    close: "Kapat",
    back: "Geri",
    next: "İleri",
    previous: "Önceki",
    submit: "Gönder",
    action: "Eylem",
    chinese: "中文",
    traditionalChinese: "繁體中文",
    english: "English",
    spanish: "Español",
    japanese: "日本語",
    korean: "한국어",
    german: "Deutsch",
    french: "Français",
    portuguese: "Português",
    russian: "Русский",
    italian: "Italiano",
    turkish: "Türkçe",
    continue: "Devam",
    copy: "Kopyala",
    copied: "Kopyalandı"
  },

  preview: {
    flvRequired: "FLV akışını etkinleştirin.",
    flvOrHlsRequired: "En az bir canlı akışı etkinleştirin: FLV veya HLS.",
    hlsUnsupportedEnableFlv: "Bu tarayıcı HLS önizlemeyi desteklemiyor. Lütfen FLV akışını etkinleştirin."
  },

  play: {
    mainFlvRequired: "Ana FLV akışı etkinleştirilmelidir",
    browserFlvUnsupported: "Bu tarayıcı FLV oynatmayı desteklemiyor. Lütfen Chrome, Edge veya Firefox gibi modern bir tarayıcı kullanın"
  },

  // Page titles
  title: {
    ndi: "NDI",
    encoder: "H.265/H.264 Kodlayıcı",
    status: "Durum",
    mainStream: "Ana Akış",
    subStream1: "Alt Akış 1",
    subStream2: "Alt Akış 2",
    subStream3: "Alt Akış 3",
    videoSettings: "Video Ayarları",
    audioSettings: "Ses Ayarları",
    advancedSettings: "Gelişmiş Ayarlar",
    osdMain: "OSD - Ana Akış",
    osdSub1: "OSD - Alt Akış 1",
    osdSub2: "OSD - Alt Akış 2",
    osdSub3: "OSD - Alt Akış 3",
    logoUpload: "LOGO Yükleme",
    network: "Ağ Ayarları",
    record: "Kayıt Ayarları",
    gb28181: "GB28181",
    wifi: "WIFI Ayarları",
    password: "Şifre Ayarları",
    serial: "Seri Port İletimi",
    update: "Güncelleme ve Yedekleme",
    reboot: "Cihazı Yeniden Başlat",
    timedReboot: "Zamanlanmış Yeniden Başlatma",
    factoryReset: "Fabrika Ayarlarına Sıfırla",
    recordFiles: "Kayıt Dosyaları",
    netTest: "Ağ Testi",
    recordSet: "Kayıt Ayarları",
    alirtcTokenPage: "AliRTC Token"
  },

  // Menu
  menu: {
    status: "Durum",
    encoder: "Kodlayıcı",
    mainStream: "Ana Akış",
    subStream1: "Alt Akış 1",
    subStream2: "Alt Akış 2",
    subStream3: "Alt Akış 3",
    videoSettings: "Video Ayarları",
    audioSettings: "Ses Ayarları",
    advancedSettings: "Gelişmiş Ayarlar",
    osd: "OSD",
    logoUpload: "LOGO Yükleme",
    system: "Sistem",
    scheduleRecord: "Zamanlanmış Kayıt",
    network: "Ağ",
    record: "Kayıt",
    gb28181: "GB28181",
    wifi: "WIFI",
    password: "Şifre",
    serial: "Seri Port İletimi",
    update: "Güncelleme ve Yedekleme",
    reboot: "Yeniden Başlat",
    timedReboot: "Zamanlanmış Yeniden Başlatma",
    factoryReset: "Fabrika Ayarlarına Sıfırla"
  },

  // Status page
  status: {
    // Device status
    deviceStatus: "Cihaz Durumu",
    runningTime: "Çalışma Süresi: ",
    runtimeDayWithTime: "{0}g {1}",
    deviceTime: "Cihaz Saati: ",
    syncTime: " (Saati cihaza eşitle)",
    cpuUsage: "CPU Kullanımı: ",
    memoryUsage: "Bellek Kullanımı: ",
    codecUsage: "Kodlama Kaynak Kullanımı: ",
    encPpsUsage: "Kodlama Kaynak Kullanımı: ",
    memoryWarning: " (Açılıştan 1 dakika sonra bellek kullanımı çok yüksekse, bazı HLS akışlarını devre dışı bırakın veya bit hızını düşürün)",
    cpuWarning: " (CPU kullanımı %85'in üzerinde kalıyorsa, bazı akışları devre dışı bırakın veya alt akış çözünürlüğünü düşürün)",
    networkStatus: "Ağ Durumu: ",
    inputVideo: "Giriş Videosu: ",
    inputBeyondCapability: "(cihaz kapasitesini aşıyor, kaynağı 1080p olarak ayarlayın)",
    inputVideoStatus: "Giriş video durumu: ",
    vgaAutoAdjust: " (VGA Otomatik Ayarlama)",
    capturedFrames: "Yakalanan Video Kareleri: ",
    lostFrames: "Kaybedilen Video Kareleri: ",
    audioSampleRate: "Giriş Ses Örnekleme Hızı: ",
    inputAudioStatus: "Giriş ses durumu: ",
    capturedAudioFrames: "Yakalanan Ses Kareleri: ",
    bFrameMode: "Gelişmiş sıkıştırma modu: ",
    bFrameModeEnabled: "Etkin",
    packetsSent: "Gönderilen Paketler: ",
    netTxRate: "Ağ gönderim hızı: ",
    netTestLink: " (Ağ Testi ve Sistem Günlüğü)",
    packetsDropped: "Düşürülen Paketler: ",
    videoTcpConnections: "TCP video bağlantıları: {0}",
    tcpDetailsLink: " (Ayrıntılar)",
    canAccessInternet: "İnternet Erişimi",
    canAccessInternetIP: "İnternet IP Erişimi",
    lanOnly: "Sadece LAN",
    localNetwork: "Yerel Ağ",

    // Recording status
    recordStatus: "Kayıt Durumu",
    recordType: "Kayıt Türü: ",
    diskStatus: "Disk Durumu: ",
    diskNotExist: "Bulunamadı",
    mountStatus: "Bağlama Durumu: ",
    notMounted: "Bağlı Değil",
    mounted: "Bağlı",
    totalSpace: "Toplam Alan: ",
    freeSpace: "Boş Alan: ",
    recordingStatus: "Kayıt Durumu: ",
    diskFull: "Disk Dolu",
    diskSlow: "Disk Çok Yavaş",
    recordFileList: "Kayıt Dosya Listesi",
    notRecording: "Kayıt Yapılmıyor",
    recording: "Kayıt Yapılıyor",
    recordingNoVideo: " (Video girişi olmadan dosyalar kaydedilemeyebilir)",
    startRecord: "(Kaydı Başlat)",
    stopRecord: "(Kaydı Durdur)",
    usbTfCard: "USB/TF Kart",

    // DHCP status
    dhcpStatus: "DHCP Durumu",
    ip: "IP: ",
    subnetMask: "Alt Ağ Maskesi: ",
    gateway: "Ağ Geçidi: ",

    // WIFI status
    wifiStatus: "WIFI Durumu",
    wifiDisabled: "WIFI: Devre Dışı",
    wifiState: "WIFI Durumu: ",
    wifiSSID: "WIFI SSID: ",
    wifiIP: "WIFI IP: ",
    wifiMAC: "WIFI MAC: ",
    wifiRSSI: "WIFI Sinyal (RSSI): ",
    wifiFreq: "WIFI Frekansı: ",
    wifiConnected: "Bağlı",
    wifiDisconnected: "Bağlı Değil",
    wifiConnecting: "Bağlanıyor (Bağlantı çok uzun sürüyorsa, WIFI ayarlarını kontrol edin)",

    noSigPicOnly: "Only transmit no-signal image:",

    timeHour: "s",
    timeMinute: "d",
    timeSecond: "sn",

    // Streams
    mainStream: "Ana Akış",
    subStream1: "Alt Akış 1",
    subStream2: "Alt Akış 2",
    subStream3: "Alt Akış 3",
    streamDisabled: "Devre Dışı (Kodlama kapasitesi doldu: ana akış ile alt akışların çözünürlük×kare hızı toplamı 1080p@90 sınırını aşıyor; bu alt akış otomatik olarak kapatıldı. Ana akışın veya önceki alt akışların çözünürlüğünü/kare hızını düşürüp tekrar deneyin)",
    codecType: "Kodek: ",
    encodeResolution: "Kodlama Çözünürlüğü: ",
    videoBitrate: "Video Bit Hızı: ",
    realTimeBitrate: "Gerçek Zamanlı Bit Hızı: ",
    realTimeFps: "Gerçek Zamanlı FPS: ",
    videoEncoded: "Video Kodlandı: ",
    reconnect: " (Yeniden Bağlan)",
	    previewWebRTC: "Video Önizleme (WebRTC)",
	    previewHTML5: "Video Önizleme (HTML5)",
	    previewLowLatency: "Video Önizleme (düşük gecikme)",

    // URL related
    disabled: "Devre Dışı",
    connected: "Bağlı",
    disconnected: "Bağlı Değil",
    statusNormal: "Normal",
    statusNoData: "Veri yok",
    bufferPackets: "Tampon Paketleri",
    bufferPacketsLabel: "Tampon Paketleri: ",
    pushSpeed: "Gönderim Hızı",
    pushSpeedLabel: "Gönderim Hızı: ",
    pushed: "Gönderildi",
    pushedLabel: "Gönderildi: ",
    sendBytesLabel: "Gönderilen veri: ",
    memoryUsed: "Kullanılan Bellek",
    memoryUsedLabel: "Kullanılan Bellek: ",
    cacheFiles: "Önbellek Dosyaları",
    cacheFilesLabel: "Önbellek Dosyaları: ",
    multicastUrl: "Çoklu Yayın URL: ",
    mjpgUrl: "MJPG Akış URL: ",
    jpgUrl: "JPG Akış URL: ",
    tsUrl: "TS Akış URL: ",
    flvUrl: "FLV Akış URL: ",
    hlsTsUrl: "HLS TS Akış URL: ",
    hlsMp4Url: "HLS MP4 Akış URL: ",
    mp4Url: "MP4 Akış URL: ",
    rtspUrl: "RTSP Akış URL: ",
    rtmpUrl: "RTMP Akış URL: ",
    srtListenerUrl: "SRT Dinleyici URL: ",
    webrtcP2pUrl: "WebRTC P2P Akış URL: ",
    rtmpPushUrlAny: "RTMP(S)/RTSP Yayın URL {0}: ",
    rtmpPushUrlAny0: "RTMP(S)/RTSP Yayın URL 0: ",
    rtmpPushUrlAny1: "RTMP(S)/RTSP Yayın URL 1: ",
    rtmpPushUrlAny2: "RTMP(S)/RTSP Yayın URL 2: ",
    rtmpPushUrl: "RTMP(S) Yayın URL {0}: ",
    rtspPushUrl: "RTSP Yayın URL {0}: ",
    srtCallerUrl: "SRT Arayan URL: ",
    hlsPushUrl: "HLS PUSH URL: ",
    icecastPushUrl: "ICECAST PUSH URL: ",
    shoutcastPushUrl: "Shoutcast PUSH URL: ",
    whipLabel: "WHIP: ",
    viewers: "İzleyiciler",
    viewersLabel: "İzleyiciler: ",

    // TRTC status
    trtcRoomId: "TRTC Oda ID: ",
    inRoom: "Odada",
    notInRoom: "Odada Değil",
    initializingServer: "Sunucu bağlantısı başlatılıyor",
    serverDisconnected: "Sunucu bağlantısı kesildi",
    connectingServer: "Sunucuya bağlanılıyor",
    serverConnected: "Sunucuya bağlandı",
    networkUnknown: "Ağ durumu bilinmiyor",
    networkExcellent: "Mükemmel ağ",
    networkGood: "İyi ağ",
    networkNormal: "Normal ağ",
    networkPoor: "Zayıf ağ",
    networkBad: "Kötü ağ",
    networkNotMeet: "Ağ TRTC minimum gereksinimlerini karşılamıyor",
    errorCode: "Hata Kodu",
    errorCodeLabel: "Hata Kodu: ",
    trtcError1: "Genel hata, sorun giderme için günlük dosyalarını kontrol edin",
    trtcError100: "İş mantığı hatası: geçersiz çağrı",
    trtcError101: "İş mantığı hatası: geçersiz parametre",
    trtcError102: "Şu anda okunamıyor, lütfen tekrar deneyin",
    trtcError103: "Ağa bağlanılamıyor",
    trtcError200: "Odaya girilemedi",
    trtcError201: "Geçersiz user_sig parametresi",
    trtcError202: "Geçersiz oda ID formatı",
    trtcError203: "Geçersiz sdk_app_id",
    trtcError204: "Hizmet kullanılamıyor. Paket dakikalarının > 0 olduğunu ve Tencent Cloud hesabının vadesi geçmemiş olduğunu kontrol edin",
    trtcError205: "Kullanıcı sunucu tarafından odadan atıldı",

    // WHIP status
    whipInitializing: "Başlatılıyor",
    whipConnected: "Bağlı",
    whipDisconnected: "Bağlı Değil",
    whipUnknown: "Bilinmeyen Durum",
    alirtcLabel: "AliRTC: ",
    alirtcConnecting: "Bağlanıyor",
    alirtcConnected: "Bağlı",
    alirtcDisconnected: "Bağlı Değil",
    alirtcUnknown: "Bilinmeyen Durum",
    alirtcRoomId: "AliRTC Oda ID: ",
    alirtcRoomIdLabel: "Oda ID: ",
    alirtcUserIdLabel: "Kullanıcı ID: ",
    alirtcUserNameLabel: "Kullanıcı Adı: ",
    alirtcVideoBitrateLabel: "Video: ",
    alirtcAudioBitrateLabel: "Ses: ",
    alirtcRttLabel: "RTT: ",

    // GB28181
    gb28181: "GB28181: ",
    gb28181Online: "Çevrimiçi",
    gb28181Offline: "Çevrimdışı"
  },

  // Reboot page
  tcp: {
    pageTitle: "TCP bağlantı durumu",
    subtitle: "Mevcut HTTP / HTTPS / RTSP / RTMP bağlantıları ve yakın zamanda kapatılan kayıtlar",
    refreshAria: "Yenileme durumu",
    reading: "Okunuyor",
    refreshNow: "Şimdi yenile",
    summaryAria: "Bağlantı özeti",
    activeConnections: "Etkin bağlantılar",
    waitingSnapshot: "Anlık görüntü bekleniyor",
    tcpVideoConnections: "TCP video bağlantıları",
    pendingData: "Bekleyen veri",
    maxPendingPerConnection: "Bağlantı başına en fazla bekleyen",
    recentlyClosed: "Yakın zamanda kapatılan",
    recentRecords: "Arayüz tarafından tutulan son kayıtlar",
    stateAria: "Bağlantı durumu",
    allRecords: "Tüm kayıtlar",
    currentConnections: "Mevcut bağlantılar",
    typeAria: "Bağlantı türü",
    allTypes: "Tüm türler",
    tcpVideoOnly: "Yalnızca TCP video",
    nonVideoConnections: "Video olmayan bağlantılar",
    searchPlaceholder: "IP, port, protokol, istek, URI veya akış kimliği ara",
    columnState: "Durum",
    columnConnection: "Bağlantı",
    columnClient: "İstemci",
    columnLocalService: "Yerel hizmet",
    columnRequestStream: "İstek / Video akışı",
    columnSent: "Gönderilen",
    columnPending: "Bekleyen",
    columnDropped: "Atılan",
    loadingSnapshot: "Bağlantı anlık görüntüsü okunuyor…",
    tableNote: "Veriler yalnızca bu sayfa açıldığında veya “Şimdi yenile” tıklandığında okunur. Yenileme isteğinin kendisi kısa süreliğine sınıflandırılmamış bir HTTP bağlantısı olarak görünebilir; bekleyen veriler çekirdek socket kuyruğunu içermez.",
    lessThanSecond: "<1 sn",
    durationSeconds: "{0} sn",
    durationMinutesSeconds: "{0} dk {1} sn",
    durationHoursMinutes: "{0} sa {1} dk",
    durationDaysHours: "{0} gün {1} sa",
    unclassified: "Sınıflandırılmamış",
    dropQueuePackets: "Paket kuyruğu sınırı",
    dropQueueBytes: "Bayt kuyruğu sınırı",
    dropNone: "Yok",
    noConnections: "Mevcut bağlantı yok",
    pendingConnectionsSummary: "{0} bağlantıda bekleyen veri · {1} paket",
    maxPendingConnection: "Bağlantı #{0} · {1}",
    noPending: "Bekleyen veri yok",
    stateActive: "Etkin",
    stateClosed: "Kapalı",
    connectedFor: "{0} süredir bağlı",
    closedDuration: "{0} sürdü · {1} önce kapandı",
    unclassifiedRequest: "Sınıflandırılmamış istek",
    streamDescription: "Kanal {0} · Grup {1} / Akış {2}",
    noVideoStream: "Video akışı yok",
    tcpVideo: "TCP video",
    packets: "{0} paket",
    packetsAndReason: "{0} paket · {1}",
    noMatches: "Geçerli filtrelerle eşleşen bağlantı yok",
    filterResult: "{0} / {1} gösteriliyor",
    invalidXml: "Yanıt geçerli bir XML değil",
    readSuccess: "Okuma başarılı",
    parseFailed: "Ayrıştırma başarısız",
    snapshotParseFailed: "Bağlantı anlık görüntüsü ayrıştırılamadı",
    readFailed: "Okuma başarısız",
    endpointReadFailed: "/debug?cmd=tcp okunamadı. Cihaz bağlantısını kontrol edin veya yeniden oturum açın.",
    readTimeout: "Okuma zaman aşımına uğradı",
    timeoutMessage: "Cihaz 10 saniye içinde bağlantı anlık görüntüsü döndürmedi.",
    networkError: "Ağ hatası",
    networkMessage: "Cihaza bağlanılamadı. Ağı kontrol edin.",
  },

  reboot: {
    title: "Cihazı Yeniden Başlat",
    description: "Kodlayıcıyı yeniden başlatmak için bu düğmeye tıklayın.",
    button: "Yeniden Başlat",
    success: "Yeniden başlatma komutu gönderildi!",
    failed: "Yeniden başlatma başarısız!",
    confirm: "Cihazı yeniden başlatmak istediğinizden emin misiniz?"
  },

  // Factory reset page
  reset: {
    title: "Fabrika Ayarlarına Sıfırla",
    description: "Tüm kodlayıcı ayarlarını fabrika varsayılan durumuna geri yüklemek için bu düğmeye tıklayın.",
    button: "Sıfırla",
    success: "Fabrika ayarlarına sıfırlama başarılı! Sistem otomatik olarak yeniden başlatılacak, lütfen bekleyin.",
    failed: "Fabrika ayarlarına sıfırlama başarısız!",
    confirm: "Fabrika ayarlarına geri yüklemek istediğinizden emin misiniz?"
  },

  // Scheduled reboot page
  scheduleRecord: {
    title: "Zamanlanmış Kayıt",
    allDay: "Tüm gün",
    timeRange: "Zaman aralığı",
    segment: "Zaman aralığı",
    to: "-",
    monday: "Pzt",
    tuesday: "Sal",
    wednesday: "Çar",
    thursday: "Per",
    friday: "Cum",
    saturday: "Cmt",
    sunday: "Paz",
    nextDay: "(ertesi gün)",
    hint: "Her aralık Tüm gün veya Zaman aralığı olabilir, kendi etkin günleriyle; bir aralıkta bitiş başlangıçtan erken ise gece aşırı demektir (ertesi güne kaydeder, başlangıç gününe göre). Önce Ağ ayarlarında saati (NTP) eşitleyin, yoksa tetiklenmez.",
    saveSuccess: "Başarıyla kaydedildi!",
    saveFailed: "Kaydetme başarısız!",
    invalidTime: "Geçersiz saat!",
    needWeekday: "En az bir gün seçin!",
  },
  timedReboot: {
    title: "Zamanlanmış Yeniden Başlatma",
    enable: "Zamanlanmış Yeniden Başlatma",
    enableLabel: "Zamanlanmış Yeniden Başlatma:",
    timeLabel: "Yeniden Başlatma Saati:",
    enabled: "Etkin",
    disabled: "Devre Dışı",
    time: "Yeniden Başlatma Saati",
    weekdays: "Yeniden Başlatma Günleri",
    everyday: "Her gün",
    monday: "Pazartesi",
    tuesday: "Salı",
    wednesday: "Çarşamba",
    thursday: "Perşembe",
    friday: "Cuma",
    saturday: "Cumartesi",
    sunday: "Pazar",
    save: "Kaydet",
    saveSuccess: "Ayarlar kaydedildi!",
    saveFailed: "Ayarlar başarısız!",
    invalidTime: "Geçersiz saat değeri!"
  },

  // Network test page
  netTest: {
    title: "Ağ Testi ve Sistem Günlüğü",
    command: "Komut:",
    run: "Çalıştır",
    address: "Adres:",
    result: "Sonuç:",
    invalidAddr: "Lütfen geçerli bir adres girin!"
  },

  // Record files page
  recordFiles: {
    title: "Dosya Listesi",
    fileName: "Dosya Adı",
    time: "Zaman",
    fileSize: "Dosya Boyutu",
    action: "Eylem",
    delete: "Sil",
    confirmDelete: "Silmek istediğinizden emin misiniz",
    deleteSuccess: "Silme komutu başarıyla gönderildi!",
    deleteFailed: "Silme başarısız!",
    noFiles: "Kayıt dosyası yok",
    loadError: "Yükleme başarısız"
  },

  // Password settings page
  password: {
    title: "Şifre Ayarları",
    oldPassword: "Eski Şifre",
    oldPasswordLabel: "Eski Şifre:",
    newPassword: "Yeni Şifre",
    newPasswordLabel: "Yeni Şifre:",
    confirmPassword: "Şifreyi Onayla",
    confirmPasswordLabel: "Şifreyi Onayla:",
    save: "Kaydet",
    success: "Ayarlar kaydedildi!",
    failed: "Şifre ayarlama başarısız, lütfen eski şifrenin doğru olup olmadığını kontrol edin!",
    mismatch: "Yeni şifreler eşleşmiyor!",
    empty: "Şifre boş olamaz!"
  },

  // Encoding common (only actually used keys)
  encoding: {
    sameAsInput: "Giriş çözünürlüğü ile aynı",
    mp3Required: "Lütfen ses kodlamasını MP3 olarak ayarlayın!",
    choosePrimaryColor: "Ana rengi seç",
    toggleTheme: "Temayı değiştir"
  },

  // OSD settings
  osd: {
    title: "OSD Ayarları",
    globalSettings: "Genel OSD Ayarları",
    followVideoTransformLabel: "Video döndürme/aynalamayı izle:",
    mainStream: "Ana Akış OSD",
    subStream1: "Alt Akış 1 OSD",
    subStream2: "Alt Akış 2 OSD",
    subStream3: "Alt Akış 3 OSD",
    alpha: "Saydamlık",
    alphaLabel: "Saydamlık:",
    alphaRange: "[0-255]",
    alphaError: "Saydamlık 0-128 arasında bir tam sayı olmalıdır!",
    region: "Bölge",
    regionLabel: "Bölge:",
    region1: "Bölge 1",
    region2: "Bölge 2",
    region3: "Bölge 3",
    region4: "Bölge 4",
    type: "Tür",
    typeLabel: "Tür:",
    typeText: "Metin",
    typeImage: "Görüntü",
    typeScroll: "Kayan Metin",
    typeTime: "Zaman",
    typeAudioStatus: "Ses durumu",
    typeVolumeMeter: "Ses seviyesi göstergesi",
    timeFormatLabel: "Saat biçimi:",
    position: "Konum",
    positionLabel: "Konum:",
    speed: "Hız",
    speedLabel: "Hız:",
    xLabel: "X:",
    yLabel: "Y:",
    textLabel: "Metin:",
    fontSize: "Yazı Boyutu",
    fontSizeLabel: "Yazı Boyutu:",
    fontSizeRange: "[8-72]",
    backgroundColor: "Arka Plan Rengi",
    backgroundLabel: "Arka Plan Rengi:",
    sizeLabel: "Boyut (G×Y):",
    sizeHint: "[px]",
    sizeError: "{0}: boyut (G×Y) geçerli pozitif tam sayı olmalıdır",
    bgTransparent: "Saydam",
    bgWhite: "Beyaz",
    bgBlack: "Siyah",
    fontColor: "Yazı Rengi",
    fontColorLabel: "Yazı Rengi:",
    pickColor: "Renk Seç",
    closeColor: "Kapat",
    logoLabel: "LOGO:",
    success: "Ayarlar başarıyla kaydedildi!",
    failed: "Ayarlar başarısız!",
    xRangeError: "{0} X değeri 0-{1} arasında bir tam sayı olmalıdır!",
    yRangeError: "{0} Y değeri 0-{1} arasında bir tam sayı olmalıdır!",
    textEmpty: "{0} metin boş olamaz!",
    fontSizeError: "{0} yazı boyutu 8-72 arasında bir tam sayı olmalıdır!",
    speedRangeError: "{0} hız değeri 0-30 arasında bir tam sayı olmalıdır!",
    positionRangeError: "{0} konum değeri 0-{1} arasında bir tam sayı olmalıdır!",
    selectLogo: "Lütfen {0} için bir LOGO seçin!",
    webrtcPreview: "Video önizleme"
  },

  // LOGO upload
  logo: {
    title: "LOGO Yükleme",
    logoLabel: "LOGO:",
    upload: "Yükle",
    hint: "Lütfen 500 KB'tan küçük bir görüntü yükleyin. Desteklenen biçimler: PNG / JPG / BMP (şeffaflık için alfa kanallı PNG veya 32 bit BMP kullanın).",
    hint2: "Dosya adı logo1 / logo2 / logo3 / logo4 olmalı, uzantı .png / .jpg / .jpeg / .bmp.",
    hint3: "örn. logo1.png, logo1.jpg, logo1.jpeg, logo1.bmp",
    noFileSelected: "Lütfen yüklenecek bir dosya seçin!",
    invalidFile: "Lütfen istenilen şekilde görüntü yükleyin!",
    uploadSuccess: "Yükleme başarılı!",
    uploadFailed: "Yükleme başarısız!",
    imageSizeExceeded: "Görüntü dosya boyutu sınırı aşıldı!",
    imageResolutionExceeded: "Görüntü dosya çözünürlüğü sınırı aşıldı!",
    storageInsufficient: "Güncelleme dosyası çok büyük, yetersiz depolama alanı!",
    listTitle: "Yüklenen LOGO",
    refresh: "Yenile",
    preview: "Önizleme",
    logoFile: "LOGO Dosyası",
    fileType: "Tür",
    fileSize: "Boyut",
    operation: "İşlem",
    loading: "Yükleniyor...",
    emptyList: "Yüklenen LOGO yok",
    loadListFailed: "LOGO listesi yüklenemedi",
    confirmDelete: "{0} silinsin mi?\nAynı adlı PNG/BMP/OSD dosyaları da silinecek. Bu LOGO kullanılıyorsa ilgili görüntü OSD'si temizlenecek.",
    deleteSuccess: "Başarıyla silindi!",
    deleteFailed: "Silme başarısız!"
  },

  // WIFI settings
  wifi: {
    title: "WIFI Ayarları",
    mode: "Mod",
    ap: "Erişim Noktası",
    sta: "İstemci Modu",
    ssid: "SSID",
    password: "Şifre",
    security: "Güvenlik",
    channel: "Kanal",
    scan: "Tara",
    connect: "Bağlan",
    disconnect: "Bağlantıyı Kes",
    status: "Durum",
    connected: "Bağlı",
    disconnected: "Bağlı Değil",
    signalStrength: "Sinyal Gücü",
    basicSettings: "Temel Ayarlar",
    wifiModule: "Wifi Modülü:",
    wifiMode: "Wifi Modu:",
    staMode: "STA Modu",
    apMode: "AP Modu",
    mainConfig: "WIFI Ana Yapılandırma",
    backupConfig1: "WIFI Yedek Yapılandırma 1",
    backupConfig2: "WIFI Yedek Yapılandırma 2",
    apModeSettings: "AP Modu",
    wifiList: "Wifi Listesi:",
    wifiEssid: "Wifi Essid:",
    wifiPassword: "Wifi Şifresi:",
    wifiDhcp: "Wifi DHCP:",
    wifiIp: "Wifi IP:",
    wifiNetmask: "Wifi Alt Ağ Maskesi:",
    wifiGateway: "Wifi Ağ Geçidi:",
    backupEnable1: "Yedek Yapılandırma 1:",
    backupEnable2: "Yedek Yapılandırma 2:",
    wifiBand: "Wifi Bandı:",
    wifiChannel: "Wifi Kanalı:",
    refresh: "Yenile",
    success: "Ayarlar başarıyla kaydedildi!",
    failed: "Ayarlar kaydetme başarısız!",
    mainConfigEmpty: "WIFI Ana Yapılandırma: {0} boş olamaz!",
    mainConfigInvalid: "WIFI Ana Yapılandırma: {0} formatı geçersiz!",
    backupConfigEmpty: "WIFI {0}: {1} boş olamaz!",
    backupConfigInvalid: "WIFI {0}: {1} formatı geçersiz!",
    ipAddr: "IP Adresi",
    netmask: "Alt Ağ Maskesi",
    gateway: "Ağ Geçidi",
    essidEmpty: "WiFi adı boş olamaz!",
    passwordTooShort: "WiFi şifresi en az 8 karakter olmalıdır!"
  },


  // Upgrade and backup
  updateBackup: {
    title: "Sistem Güncelleme",
    uploadTitle: "Firmware ve Yapılandırma Yükle",
    backupTitle: "Firmware ve Yapılandırma Yedekle",
    systemVersion: "Sistem Sürümü",
    systemVersionLabel: "Sistem Sürümü: ",
    hardware: "Donanım",
    hardwareLabel: "Donanım: ",
    selectFile: "Dosya Seç",
    selectFileLabel: "Dosya Seç:",
    uploadHint: "Yükleme dosya adı: up.rar veya box.ini",
    uploadHintEncrypted: "Yükleme dosya adı: up.bin veya box.ini",
    uploadWarning: "Eş zamanlı yükleme yapmayın. Yükleme sırasında gücü kapatmayın.",
    upload: "Yükle",
    backupFirmware: "Firmware Yedekle",
    backupConfig: "Yapılandırma Yedekle",
    noFileSelected: "Lütfen yüklenecek bir dosya seçin!",
    uploadSuccess: "Yükleme başarılı, lütfen sistemi yeniden başlatın!",
    uploadFailed: "Yükleme başarısız!",
    kernelUpdating: "Çekirdek güncellemesi birkaç dakika sürer; cihazı kapatmayın. Tamamlandığında cihaz otomatik olarak yeniden başlatılır — elle yeniden başlatmaya gerek yoktur.",
    kernelUpdatingBin: "Çekirdek güncellemesi birkaç dakika sürer; cihazı kapatmayın. Tamamlandığında cihaz otomatik olarak yeniden başlatılır — elle yeniden başlatmaya gerek yoktur!",
    imageSizeExceeded: "Görüntü dosya boyutu sınırı aşıldı!",
    imageResolutionExceeded: "Görüntü dosya çözünürlüğü sınırı aşıldı!",
    storageInsufficient: "Güncelleme dosyası çok büyük, yetersiz depolama alanı!"
  },

  // Serial transport settings
  serial: {
    title: "Seri Port İletimi",
    frpTitle: "FRP İstemci Ayarları",
    serialTitle: "Seri Port Geçişi",
    enable: "Etkin",
    disable: "Devre Dışı",
    enableLabel: "Etkin:",
    serverAddr: "Sunucu Adresi",
    serverAddrLabel: "Sunucu Adresi:",
    serverPort: "Sunucu Portu",
    serverPortLabel: "Sunucu Portu:",
    serverToken: "Sunucu Jetonu",
    serverTokenLabel: "Sunucu Jetonu:",
    channel: "Kanal",
    channel1: "Kanal 1",
    channel2: "Kanal 2",
    channel3: "Kanal 3",
    channel4: "Kanal 4",
    protocolLabel: "Protokol:",
    localPort: "Yerel Port",
    localPortLabel: "Yerel Port:",
    remotePort: "Uzak Port",
    remotePortLabel: "Uzak Port:",
    serialMode: "Seri Mod",
    serialModeLabel: "Mod:",
    server: "Sunucu",
    client: "İstemci",
    baudRate: "Baud Hızı",
    baudRateLabel: "Baud Hızı:",
    listenPort: "Dinleme Portu",
    listenPortLabel: "Dinleme Portu:",
    save: "Kaydet",
    success: "Ayarlar kaydedildi, lütfen cihazı yeniden başlatın!",
    failed: "Ayarlar başarısız!",
    emptyError: "Ayarlar boş olamaz!",
    remoteAddrError: "Uzak sunucu adresi geçersiz (geçerli bir IP veya ana bilgisayar adı girin)!",
    portRangeError: "TCP dinleme portu 1-65535 arasında bir tam sayı olmalıdır!",
    frpAddrEmpty: "FRP sunucu adresi boş olamaz!",
    frpPortError: "FRP sunucu portu 1-65535 arasında bir tam sayı olmalıdır!"
  },

  // Advanced Settings
  advanced: {
    title: "Gelişmiş Ayarlar",
    // Section titles
    videoInput: "Video Girişi",
    avTransmission: "A/V İletimi",
    recordSettings: "Kayıt Ayarları",
    hlsSettings: "HLS Ayarları",
    networkTransmission: "Akış İletimi",
    serviceSettings: "Hizmet Ayarları",
    logSettings: "Günlük Ayarları",
    encoderParams: "Kodlayıcı Parametreleri",
    imageEnhancement: "Görüntü İyileştirme",
    autoRestart: "Otomatik Yeniden Başlatma",
    // Video Input
    edidSelect: "EDID Seçimi:",
    colorGamut: "Renk Gamı:",
    colorRange: "Renk Aralığı:",
    bFrameMode: "Advanced compression mode:",

    interlaceMode: "Geçmeli Mod:",
    noSignal: "Sinyal Yok:",
    noSigPicOnly: "Only transmit no-signal image:",

    vgaAutoAdjust: "Başlangıçta VGA Otomatik Ayar:",
    interlaceWeaving: "Örgü (alanları birleştir)",
    interlaceBottom: "Sadece alt alan",
    interlaceTop: "Sadece üst alan",
    interlaceBobbing: "Bobbing (alandan kareye)",
    noSignalHide: "Gizle",
    noSignalImage: "Show no-signal image",
    noSignalColor: "Düz renk göster",
    // A/V Transmission
    videoOnly: "Sadece Video:",
    audioOnly: "Sadece Ses:",
    avSync: "A/V Senkronizasyonu:",
    audioDelay: "Ses Gecikmesi (ms):",
    syncAuto: "Otomatik",
    syncResample: "Yeniden Örnekle",
    audioDelayHint: "Negatif değerler sesi öne alır, pozitif değerler geciktirir. Sadece A/V senkronizasyon ayarı için kullanın.",
    // Recording Settings
    recordType: "Kayıt Türü:",
    cycleRecord: "Döngüsel Kayıt:",
    diskOverwriteOldest: "Dolunca en eskiyi sil:",
    noRecordNoSig: "Sinyal yokken kayıt yok:",
    recordSplitTime: "Kayıt Bölme Süresi (sn):",
    // HLS Settings
    hlsSplitTime: "HLS Segment Süresi (sn):",
    hlsBufferNum: "HLS Segment Sayısı:",
    hlsIndexUri: "HLS Global İndeks URI:",
    // Network Transmission
    tsMuxer: "TS Muxer:",
    sliceNumber: "SLICE Number:",

    netDropThreshold: "Paket Düşürme Eşiği:",
    tsOnce: "Gönderim Başına TS Paketi:",
    rtspPackType: "RTSP Kapsülleme:",
    multicastType: "Çoklu Yayın Türü:",
    enableSap: "SAP Etkin:",
    mtuSize: "MTU Boyutu:",
    ethSpeed: "Ethernet speed:",

    natAddr: "NAT mapped address:",

    udpTtl: "UDP TTL:",
    udpSockBuf: "UDP SOCKET_BUF_SIZE:",
    rtpH264PacketMode: "RTP H264 Paketleme:",
    packetizeByAccessUnit: "packetize_by_access_unit",
    packetizeByNalu: "packetize_by_nalu",
    vlcCompat: "VLC Uyumlu",
    ffmpegCompat: "FFMPEG Uyumlu",
    esStream: "ES Akışı",
    tsStream: "TS Akışı",
    // Service Settings
    tsRtspAuth: "TS/RTSP Kimlik Doğrulama Gerekli:",
    httpNoAuth: "Web Erişimi Kimlik Doğrulamasız:",
    netCheck: "Ağ Durumu Kontrolü:",
    telnetService: "Telnet Hizmeti:",
    sshService: "SSH Hizmeti:",
    ndiService: "NDI Hizmeti:",
    sambaService: "Samba Hizmeti:",
    onvifService: "ONVIF Hizmeti:",
    onvifLocation: "ONVIF Location:",
    onvifMode: "ONVIF Modu:",
    onvifModeLegacy: "Legacy XML (paylaşılan HTTP/ONVIF portu)",
    onvifModeProfileST: "Profile S/T (özel ONVIF portu)",
    onvifModeProfileSCompat: "Profile S Hikvision uyumlu (özel ONVIF portu)",
    onvifPassword: "ONVIF password required:",

    rtspDefaultStream: "RTSP Varsayılan Akış:",
    vmixCompat: "VMix Uyumlu:",
    readOnlyConfig: "Lock all settings:",

    telnetLan: "Sadece LAN",
    // Log Settings
    localLog: "Yerel Günlük Hizmeti:",
    trtcLogLevel: "TRTC SDK Günlük Seviyesi:",
    alirtcLogLevel: "AliRTC SDK Günlük Seviyesi:",
    sdkLogDebug: "Hata Ayıklama",
    sdkLogInfo: "Bilgi",
    sdkLogWarning: "Uyarı",
    sdkLogError: "Hata",
    sdkLogFatal: "Kritik",
    sdkLogNone: "Yok",
    lokiAddr: "Loki Sunucu Adresi:",
    lokiPort: "Loki Sunucu Portu:",
    // Encoder Parameters
    sliceSplit: "SLICE Bölme:",
    sliceBytes: "SLICE Bayt:",
    minQp: "MIN_QP:",
    maxQp: "MAX_QP:",
    deblocking: "Deblocking filter:",
    deblockingAlpha: "Deblocking alpha:",
    deblockingBeta: "Deblocking beta:",



    debreath: "Nefes Giderme:",
    sar: "PAR:",
    cbrOnlyHint: "Sadece bit hızı kontrol modu CBR olarak ayarlandığında etkilidir",
    // Image Enhancement
    contrastEnhance: "Kontrast İyileştirme:",
    sharpnessEnhance: "Keskinlik İyileştirme:",
    lumaSfStrength: "Luma Uzamsal Gürültü Azaltma:",
    lumaTfStrength: "Luma Zamansal Gürültü Azaltma:",
    chromaSfStrength: "Chroma Uzamsal Gürültü Azaltma:",
    chromaTfStrength: "Chroma Zamansal Gürültü Azaltma:",
    // Auto Restart
    kickAllOnChange: "Giriş Değişikliğinde Kullanıcıları Kes:",
    noVideoReboot: "Video Yoksa Otomatik Yeniden Başlat:",
    noAudioReboot: "Ses Yoksa Otomatik Yeniden Başlat:",
    picStillRestart: "Restart on frozen video:",

    // Button
    save: "Kaydet",
    // Messages
    success: "Ayarlar kaydedildi, lütfen cihazı yeniden başlatın!",
    failed: "Ayarlar başarısız!",
    emptyError: "Ayarlar boş olamaz!",
    netDropError: "Paket düşürme eşiği 50-50000 arasında bir tam sayı olmalıdır!",
    tsOnceError: "TS packets per send must be an integer between 3-128!",
    sliceError: "SLICE Number must be an integer between 1-255!",
    minQpError: "MIN_QP 1-35 arasında bir tam sayı olmalıdır!",
    maxQpError: "MAX_QP, MIN_QP'den büyük ve en fazla 50 olmalıdır!",
    udpTtlError: "UDP TTL 1-254 arasında bir tam sayı olmalıdır!",
    contrastError: "Kontrast iyileştirme 0-63 arasında bir tam sayı olmalıdır!",
    sharpnessError: "Keskinlik iyileştirme 0-16 arasında bir tam sayı olmalıdır!",
    lumaSfError: "Luma uzamsal gürültü azaltma 0-255 arasında bir tam sayı olmalıdır!",
    lumaTfError: "Luma zamansal gürültü azaltma 0-63 arasında bir tam sayı olmalıdır!",
    chromaSfError: "Chroma uzamsal gürültü azaltma 0-255 arasında bir tam sayı olmalıdır!",
    chromaTfError: "Chroma zamansal gürültü azaltma 0-32 arasında bir tam sayı olmalıdır!",
    hlsSplitError: "HLS segment süresi 3-10 arasında bir tam sayı olmalıdır!",
    hlsBufferError: "HLS segment sayısı 3-10 arasında bir tam sayı olmalıdır!",
    hlsUriError: "HLS global indeks URI formatı geçersiz!",
    udpSockBufError: "UDP SOCKET_BUF_SIZE 0-20971520 arasında bir tam sayı olmalıdır!",
    mtuError: "MTU boyutu 500-1500 arasında bir tam sayı olmalıdır!",
    deblockingAlphaError: "Deblocking alpha must be an integer between -6 and 6!",
    deblockingBetaError: "Deblocking beta must be an integer between -6 and 6!",


    audioCacheError: "Ses gecikmesi -2000 ile 2000 arasında bir tam sayı olmalıdır!",
    recordSplitError: "Kayıt bölme süresi 60-7200 arasında bir tam sayı olmalıdır!",
    lokiPortError: "Loki sunucu portu 1-65535 arasında olmalıdır"
  },

  // Audio Encoding Settings
  audioEnc: {
    blkInput: "Giriş",
    blkEncode: "Kodlama",
    blkVolume: "Ses Düzeyi",
    blkVolumeNote: "Manuel sabit kazanç",
    blkAgc: "Otomatik Kazanç",
    blkAgcNote: "Değişken sesi otomatik olarak hedef düzeye getirir",
    blkDenoise: "Gürültü Azaltma",
    blkDenoiseNote: "Arka plan gürültüsünü bastırır; yüksek CPU, genellikle kapalı",
    mute: "Sessiz",
    gain0: "0 dB (değişmez)",
    agcLevel: "AGC Hedef Seviyesi (dBFS):",
    agc: "Otomatik Kazanç Kontrolü:",
    agcLevelError: "AGC hedef seviyesi -42 ile -12 dBFS arasında olmalıdır!",
    title: "Ses Ayarları",
    // Tabs
    tabAudio: "Ses Ayarları",
    tabOnvif: "ONVIF Ses",
    // Tips
    tipAudio: "Dijital ses kazancını çok yüksek ayarlamayın, bozulmaya veya gürültüye neden olabilir.<br>Çoğu durumda kazancı 0 olarak ayarlayın.<br>Genel ses seviyesini ön uç kontrollerini kullanarak ayarlayın.",
    tipVolVsAgc: "<b>Ses kazancı vs otomatik kazanç (AGC)</b><br>Ses kazancı, elle ayarlanan sabit bir kazançtır: pozitif değerler yükseltir, negatif değerler azaltır. Giriş sinyaline göre değişmez ve seviyesi kararlı, öngörülebilir kaynaklar için uygundur.<br>Otomatik kazanç (AGC), giriş sinyalinin anlık düzeyine göre kazancı otomatik olarak ayarlar, çıkışı hedef seviyeye yakın tutar ve yükselip alçalan sesi düzgünleştirir.<br>AGC açıkken, ses kazancını 0 dB'de tutun; böylece seviyeyi yalnızca AGC denetler ve iki denetim üst üste binmez.",
    tipAgcLevel: "<b>AGC Hedef Seviyesi (dBFS)</b><br>Nihai seviye referansını belirler. Hedef 0 dBFS'ye ne kadar yakınsa çıkış o kadar yüksek olur, ancak ani tepe değerleri için kalan pay azalır ve kırpılma daha kolay oluşur.<br>• -18 dBFS (önerilen): ses yüksekliği ile pay arasında denge; çoğu durum için uygundur.<br>• -12 dBFS: en yüksek seçenek; canlı yayın gibi yüksek ses gereken durumlar için idealdir, ancak yalnızca 12 dB pay olduğundan ani yüksek sesler kolayca kırpılır.<br>• -20 ~ -24 dBFS: ses, canlı performans ve tepe değişimi büyük diğer girişler için uygundur.<br>• -30 ~ -42 dBFS: yüksek kazançlı mikrofon girişleri veya gürültülü ortamlar için uygundur.",
    tipOnvif: "NVR'ye bağlanmak için RTSP G711 kodlamasını 'Etkinleştir ve 8K'ya yeniden örnekle' olarak ayarlayın",
    // Audio Settings
    audioInput: "Ses Girişi:",
    sampleRate: "Örnekleme Hızı:",
    codec: "Kodek:",
    channel: "Kanallar:",
    bitrate: "Bit Hızı:",
    digitalGain: "Dijital Ses Kazancı:",
    analogGain: "Analog Ses Kazancı:",
    denoise: "Gürültü Azaltma:",
    denoiseStrength: "Gürültü Azaltma Gücü (dB):",
    pteG711: "PTE Akış G711:",
    // Audio Input Options
    inputDigital: "Dijital",
    inputAnalog: "Analog",
    inputMixed: "Karışık",
    // Sample Rate Options
    sampleSameAsInput: "Giriş ile aynı",
    // ONVIF Audio
    rtspG711: "RTSP G711 Kodlaması:",
    rtspG711Resample: "Etkinleştir ve 8K'ya yeniden örnekle",
    g711Codec: "G711 Kodek:",
    // Buttons and Messages
    save: "Kaydet",
    success: "Ayarlar kaydedildi!",
    failed: "Ayarlar başarısız!",
    emptyError: "Ayarlar boş olamaz!",
    bitrateError: "Bit hızı {0}-{1} arasında bir tam sayı olmalıdır!",
    gainError: "Dijital ses kazancı -20 ile 10 arasında bir tam sayı olmalıdır!",
    denoiseError: "Gürültü azaltma gücü 1-100 arasında bir tam sayı olmalıdır!",
    analogVolEmpty: "Analog ses kazancı boş olamaz!",
    analogVolError: "Analog ses kazancı {0} ile {1} arasında bir tam sayı olmalıdır!"
  },

  // Recording Settings Page
  recordSet: {
    title: "Kayıt Ayarları",
    // Card Titles
    statusTitle: "Kayıt Durumu",
    settingsTitle: "Kayıt Ayarları",
    // Status
    recordType: "Kayıt Türü:",
    diskStatus: "Disk Durumu:",
    currentAddr: "Mevcut Adres:",
    mountDevice: "Bağlama Cihazı:",
    mountStatus: "Bağlama Durumu:",
    totalSpace: "Toplam Alan:",
    freeSpace: "Boş Alan:",
    recordStatus: "Kayıt Durumu:",
    recordFiles: "Kayıt Dosyaları:",
    fileList: "Dosya Listesi",
    // Disk Status
    diskNotExist: "Mevcut Değil",
    diskFull: "Disk Dolu",
    diskSlow: "Disk Çok Yavaş",
    mounted: "Bağlı",
    unmounted: "Bağlı Değil",
    notRecording: "Kayıt Yapılmıyor",
    recording: "Kayıt Yapılıyor",
    noVideoWarning: " (Video girişi olmadan dosyalar kaydedilemeyebilir)",
    // Action Links
    startRecord: "(Kaydı Başlat)",
    stopRecord: "(Kaydı Durdur)",
    mountDisk: "(Disk Bağla)",
    unmountDisk: "(Disk Ayır)",
    deleteAll: "(Tüm Kayıtları Sil)",
    // Settings
    storageType: "Depolama Türü:",
    partition: "Bölüm:",
    partitionInfo: "Bölüm Bilgisi:",
    diskInfo: "Disk Bilgisi:",
    formatDisk: "(Diski Yeniden Biçimlendir)",
    exampleAddr: "Örnek Adres:",
    storageAddr: "Depolama Adresi:",
    username: "Kullanıcı Adı:",
    password: "Şifre:",
    // Storage Type Options
    storageDisabled: "Devre Dışı",
    storageUsb: "USB/TF Kart",
    storageNfs: "NFS",
    storageSamba: "SAMBA/CIFS",
    // Format Dialog
    formatTitle: "Disk Bilgisi",
    formatDevice: "Cihaz:",
    formatType: "Tür:",
    formatModel: "Model:",
    formatRemovable: "Çıkarılabilir:",
    formatPartTable: "Bölüm Tablosu:",
    formatCapacity: "Kapasite:",
    formatPartitions: "Bölüm Bilgisi",
    formatPartition: "Bölüm",
    formatAvailable: "(kullanılabilir)",
    formatTotal: "(toplam)",
    formatConfirm: "Disk biçimlendirmeye devam edilsin mi?",
    formatDanger: "Uyarı: Biçimlendirme yeniden bölümlendirecek ve tüm veriler kaybolacak. Devam edilsin mi?",
    formatContinue: "Devam",
    formatCancel: "İptal",
    formatConfirmBtn: "Onayla",
    formatting: "Biçimlendiriliyor...",
    // Buttons and Messages
    save: "Kaydet",
    yes: "Evet",
    no: "Hayır",
    success: "Ayarlar kaydedildi!",
    failed: "Ayarlar başarısız!",
    formatSuccess: "Biçimlendirme başarılı!",
    formatFailed: "Biçimlendirme başarısız!",
    deleteSuccess: "Silme komutu gönderildi!",
    deleteFailed: "Silme başarısız!",
    confirmDeleteAll: "Tüm kayıt dosyaları silinsin mi?",
    recordingWarning: "Şu anda kayıt yapılıyor. Ayırmadan önce kaydı durdurun.",
    diskMountedWarning: "Disk bağlı. Biçimlendirmeden önce ayırın.",
    diskMountedSettingWarning: "Disk bağlı. Ayarları değiştirmeden önce ayırın.",
    storageLockedHint: "Bağlıyken kilitli; değiştirmek için diski çıkarın.",
    partitionNotExist: "Bölüm mevcut değil",
    partitionRemoved: " (Kaldırıldı)",
    unpartitioned: " (bölümsüz)",
    unpartitionedHint: "Diskte bölüm yok, önce diski yeniden bölümleyip biçimlendirin",
    // Address Validation
    addrEmpty: "Depolama adresi boş olamaz!",
    addrNfsFormat: "Geçersiz adres formatı, ':' ayırıcısı içermelidir",
    addrIpError: "Geçersiz IP adresi formatı",
    addrPathSlash: "Yol '/' ile başlamalıdır",
    addrPathInvalid: "Yol geçersiz karakterler içeriyor",
    addrSambaStart: "Adres '\\\\' ile başlamalıdır",
    addrSambaFormat: "Geçersiz adres, '\\' ile ayrılmış IP ve yol içermelidir",
    addrPathEmpty: "Yol boş olamaz",
    addrPathChars: "Yol geçersiz karakterler içeriyor, sadece harfler, rakamlar, alt çizgi ve tire kullanılabilir",
    // Disk size info "{available} / {total}"
    diskSizeInfo: "{0} (kullanılabilir) / {1} (toplam)"
  },
  // GB28181 Settings
  gb28181: {
    title: "GB28181 Ayarları",
    basicSettings: "Temel Ayarlar",
    heartbeatSettings: "Heartbeat Ayarları",
    sipServerSettings: "SIP Sunucu Ayarları",
    authSettings: "Kimlik Doğrulama Ayarları",
    enable: "Etkin:",
    disabled: "Devre Dışı",
    enabled: "Etkin",
    localSipPort: "Yerel SIP Portu:",
    videoChannelId: "Video Kanal ID:",
    streamSelect: "Akış Seçimi:",
    mainStream: "Ana Akış",
    subStream1: "Alt Akış 1",
    subStream2: "Alt Akış 2",
    subStream3: "Alt Akış 3",
    regExpiry: "Kayıt Süresi Dolumu:",
    heartbeatCycle: "Heartbeat Döngüsü:",
    maxHeartbeatTimeout: "Maks Heartbeat Zaman Aşımı:",
    sipServerId: "SIP Sunucu ID:",
    sipServerDomain: "SIP Sunucu Alan Adı:",
    sipServerAddr: "SIP Sunucu Adresi:",
    sipServerPort: "SIP Sunucu Portu:",
    sipUserId: "SIP Kullanıcı ID:",
    sipPassword: "SIP Şifresi:",
    emptyError: "Ayarlar boş olamaz!",
    localPortError: "Yerel SIP portu 1-65535 arasında bir tam sayı olmalıdır!",
    serverPortError: "SIP sunucu portu 1-65535 arasında bir tam sayı olmalıdır!",
    regExpiryError: "Kayıt süresi dolumu 100-100000 arasında bir tam sayı olmalıdır!",
    heartbeatError: "Heartbeat döngüsü 5-3600 arasında bir tam sayı olmalıdır!",
    maxTimeoutError: "Maks heartbeat zaman aşımı 3-255 arasında bir tam sayı olmalıdır!",
    success: "Ayarlar başarıyla kaydedildi!",
    failed: "Ayarlar başarısız!"
  },
  // Video Source Settings
  videoSource: {
    title: "Video Kaynak Ayarları",
    videoInput: "Video Giriş Ayarları",
    brightAdjust: "Giriş Parlaklık Ayarı",
    videoOutput: "Video Çıkış Ayarları",
    inputFormat: "Video Giriş Formatı:",
    yuv422: "YUV422",
    yuv420: "YUV420 (Döndürme Desteklenir)",
    rotation: "Döndürme Açısı:",
    flipMirror: "Çevir/Ayna:",
    flipDisable: "Devre Dışı",
    mirror: "Ayna",
    flip: "Çevir",
    flipAndMirror: "Ayna ve Çevir",
    cropEnable: "Video Kırpma:",
    cropLeft: "Kırpma Başlangıç Noktası (Sol):",
    cropTop: "Kırpma Başlangıç Noktası (Üst):",
    cropWidth: "Kırpma Genişliği:",
    cropHeight: "Kırpma Yüksekliği:",
    monochrome: "Siyah-beyaz:",
    colorMode: "Giriş Renk Modu:",
    unknown: "Bilinmiyor",
    brightEnable: "Parlaklık Ayarı:",
    gain: "Kazanç:",
    gainHint: "[10-1000], varsayılan 100",
    offset: "Ofset:",
    offsetHint: "[0-100], varsayılan 0",
    note: "Not:",
    brightNote1: "1. Parlaklık = (Orijinal Parlaklık * Kazanç / 100) + Ofset",
    brightNote2: "2. Parlaklık ayarı sadece RGB giriş renk modunda çalışır",
    outputRes: "Video Çıkış Çözünürlüğü:",
    auto: "Otomatik",
    cscEnable: "CSC Ayarı:",
    luminance: "Parlaklık:",
    contrast: "Kontrast:",
    hue: "Ton:",
    saturation: "Doygunluk:",
    cscHint: "[0-100], varsayılan 50",
    rotateHint: "180° ve 270° döndürme, 0°/90° döndürme ile çevirme/ayna kombinasyonu ile elde edilebilir.",
    emptyError: "Ayarlar boş olamaz!",
    gainError: "Kazanç 10-1000 arasında bir tam sayı olmalıdır!",
    offsetError: "Ofset 0-100 arasında bir tam sayı olmalıdır!",
    leftError: "Sol değeri 0-{0} arasında bir tam sayı olmalıdır!",
    topError: "Üst değeri 0-{0} arasında bir tam sayı olmalıdır!",
    widthError: "Genişlik değeri 400-{0} arasında bir tam sayı olmalıdır!",
    heightError: "Yükseklik değeri 400-{0} arasında bir tam sayı olmalıdır!",
    luminanceError: "Parlaklık 0-100 arasında bir tam sayı olmalıdır!",
    contrastError: "Kontrast 0-100 arasında bir tam sayı olmalıdır!",
    hueError: "Ton 0-100 arasında bir tam sayı olmalıdır!",
    saturationError: "Doygunluk 0-100 arasında bir tam sayı olmalıdır!",
    success: "Ayarlar başarıyla kaydedildi!",
    failed: "Ayarlar başarısız!"
  },
  // Network Settings
  network: {
    title: "Ağ Ayarları",
    ipv4Title: "IPv4 Ayarları",
    ipv6Status: "IPv6 Durumu",
    ipv6Title: "IPv6 Ayarları",
    ipv6TypeGlobal: "Global IP",
    ipv6TypeLinkLocal: "Link-Local IP",
    ipv6TypeUniqueLocal: "Yerel IP",
    ipv6TypeMulticast: "Çoklu Yayın IP",
    ipv6TypeGeneric: "IP",
    ipv6StatusGateway: "Ağ Geçidi",
    dnsTitle: "DNS Ayarları",
    ntpTitle: "NTP Ayarları",
    portTitle: "Port Ayarları",
    httpsTitle: "HTTPS Ayarları",
    hostnameTitle: "HOSTNAME Ayarları",
    dhcp: "DHCP:",
    dhcpHint: "DHCP etkinleştirildikten sonra, cihaz ONVIF uyumlu arama araçları tarafından bulunabilir.",
    ipAddr: "IP Adresi:",
    netmask: "Alt Ağ Maskesi:",
    gateway: "Kablolu Ağ Geçidi:",
    macAddr: "MAC Adresi:",
    defaultGateway: "Varsayılan Ağ Geçidi:",
    lanFirst: "Önce Kablolu",
    wifiFirst: "Önce WIFI",
    g4First: "Önce 4G/5G",
    ipv6Mode: "Mod:",
    ipv6Disable: "Devre Dışı",
    ipv6Auto: "Otomatik Yapılandırma",
    ipv6Manual: "Manuel Yapılandırma",
    ipv6Addr: "IPv6 Adresi:",
    ipv6Prefix: "IPv6 Önek Uzunluğu:",
    ipv6Gateway: "IPv6 Varsayılan Ağ Geçidi:",
    dns1: "DNS1:",
    dns2: "DNS2:",
    ntpSync: "NTP Senkronizasyonu:",
    ntpServer: "Sunucu:",
    timezone: "Saat Dilimi:",
    httpPort1: "HTTP Port 1:",
    httpPort2: "HTTP Port 2:",
    rtspPort1: "RTSP Port 1:",
    rtspPort2: "RTSP Port 2:",
    onvifPort: "ONVIF Port:",
    sadpProtocol: "SADP Port:",
    httpsService: "HTTPS Hizmeti:",
    httpsPort1: "HTTPS Port 1:",
    httpsPort2: "HTTPS Port 2:",
    httpsPrivatePass: "HTTPS Özel Anahtar Şifresi:",
    socks5Title: "SOCKS5 Proxy",
    socks5Enable: "SOCKS5 Proxy:",
    socks5Host: "Proxy Host:",
    socks5Port: "Proxy Port:",
    socks5User: "Username:",
    socks5Pass: "Password:",
    socks5AuthHint: "(Optional authentication, username and password must both be set)",
    privatePassHint: "(Şifre yoksa boş bırakın)",
    uploadCert: "Sertifika Yükle:",
    uploadCertHint: "(Dosya adı private.key veya public.crt olmalıdır. Eş zamanlı yükleme yapmayın veya yükleme sırasında gücü kapatmayın)",
    uploadBtn: "Sertifika Yükle",
    deleteCert: "Sertifikayı Sil",
    hostname: "HOSTNAME:",
    mdnsService: "mDNS Hizmeti:",
    mdnsAddr: "mDNS Erişim Adresi:",
    portRange: "[1-65535]",
    prefixRange: "[0-128]",
    emptyError: "Ayarlar boş olamaz!",
    ipError: "Geçersiz IP adresi formatı!",
    netmaskError: "Geçersiz alt ağ maskesi formatı!",
    gatewayError: "Geçersiz ağ geçidi formatı!",
    dns1Error: "Geçersiz birincil DNS formatı!",
    dns2Error: "Geçersiz ikincil DNS formatı!",
    macError: "Geçersiz MAC adresi formatı!",
    ipv6Error: "Geçersiz IPv6 adres biçimi!",
    ipv6PrefixError: "Geçersiz IPv6 önek uzunluğu (1-128)!",
    ipv6GatewayError: "Geçersiz IPv6 ağ geçidi biçimi!",
    httpPort1Error: "HTTP port 1, 1-65535 arasında bir tam sayı olmalıdır!",
    httpPort2Error: "HTTP port 2, 1-65535 arasında bir tam sayı olmalıdır!",
    rtspPort1Error: "RTSP port 1, 1-65535 arasında bir tam sayı olmalıdır!",
    rtspPort2Error: "RTSP port 2, 1-65535 arasında bir tam sayı olmalıdır!",
    httpsPort1Error: "HTTPS port 1, 1-65535 arasında bir tam sayı olmalıdır!",
    httpsPort2Error: "HTTPS port 2, 1-65535 arasında bir tam sayı olmalıdır!",
    onvifPortError: "ONVIF port, 1-65535 arasında bir tam sayı olmalıdır!",
    sadpPortError: "SADP portu, 1-65535 arasında bir tam sayı olmalıdır!",
    httpBothDisableError: "HTTP port 1 ve port 2 her ikisi de devre dışı bırakılamaz!",
    httpsBothDisableError: "HTTPS etkinleştirildiğinde, port 1 ve port 2 her ikisi de devre dışı bırakılamaz!",
    socks5HostError: "Invalid SOCKS5 proxy host!",
    socks5PortError: "SOCKS5 proxy port must be an integer between 1-65535!",
    socks5AuthPairError: "SOCKS5 username and password must both be set or both be empty!",
    socks5AuthLengthError: "SOCKS5 username and password must not exceed 255 characters!",
    ntpEmptyError: "NTP sunucusu boş olamaz!",
    ntpFormatError: "Geçersiz NTP sunucu adresi!",
    hostnameEmptyError: "HOSTNAME boş olamaz!",
    hostnameFormatError: "Geçersiz HOSTNAME!\n\n1. HOSTNAME 63 karakteri aşmamalıdır!\n2. Sadece harfler (a-z), rakamlar (0-9), tire (-) ve alt çizgi (_) kullanılabilir!\n3. '-' ve '_' ardışık, tek başına veya başta/sonda olamaz!",
    deleteCertConfirm: "Yüklenen HTTPS sertifikasını silmek istediğinizden emin misiniz?",
    selectFile: "Lütfen yüklenecek bir dosya seçin!",
    uploadSuccess: "Yükleme başarılı!",
    uploadFailed: "Yükleme başarısız!",
    fileSizeError: "Görüntü dosya boyutu sınırı aşıyor!",
    fileResError: "Görüntü çözünürlüğü sınırı aşıyor!",
    spaceError: "Güncelleme dosyası çok büyük, yetersiz depolama alanı!",
    deleteSuccess: "Başarıyla silindi!",
    deleteFailed: "Silme başarısız!",
    successReboot: "Ayarlar kaydedildi, lütfen cihazı yeniden başlatın!",
    failed: "Ayarlar başarısız!"
  },

  // Output Settings Page (Stream Settings)
  output: {
    // Tab names
    tabs: {
      ndi: "NDI",
      encode: "Kodlama",
      ts: "TS/Çoklu Yayın",
      mjpeg: "MJPEG",
      rtsp: "RTSP",
      rtmp: "RTMP",
      srt: "SRT",
      webrtc: "WebRTC",
      trtc: "TRTC",
      alirtc: "AliRTC",
      hls: "HLS",
      other: "MP4/FLV/Diğer"
    },

    // Encoding settings
    encode: {
      codecType: "Kodek Türü:",
      frameRate: "Kare Hızı:",
      sameAsInput: "Giriş kare hızı ile aynı",
      auto: "Otomatik",
      customFrameRate: "Özel kare hızı",
      customFrameRateLabel: "Özel Kare Hızı:",
      gopInterval: "GOP Aralığı (kare):",
      bitrate: "Bit Hızı (kbit):",
      qualityRange: "Kalite Aralığı:",
      qualityStrict: "Katı (Yüksek)",
      qualityTight: "Sıkı (Yakın-Yüksek~Yüksek)",
      qualityNormal: "Normal (Orta~Yüksek)",
      qualityLoose: "Gevşek (Yakın-Düşük~Yüksek)",
      qualityWide: "Geniş (Düşük~Yüksek)",
      mjpegQuality: "MJPEG Kalitesi:",
      outputResolution: "Çıkış Çözünürlüğü:",
      h264Profile: "H.264 Profil:",
      bitrateControl: "Bit Hızı Kontrolü:",
      cbrStableRange: "CBR Stability Range:",
      cbrStableMin: "min",
      cbrStableMax: "max",
      bFramesMode: "B-Frame Mode:",
      bFramesDisable: "Disabled",
      bFramesIbp: "IBP",
      bFramesIbbp: "IBBP",
      // Tips
      tipCodec: "H.265, H.264'ten daha iyi video kalitesi sağlar. Kod çözücünüz destekliyorsa H.265 kullanın.",
      tipVbr: "VBR modunda, bit hızı \"Kalite Aralığı\" tarafından düzenlenir; Kalite Aralığı QP değerlerini sınırlar;<br>\"Yakın-Yüksek~Yüksek\" veya \"Yüksek\" seçildiğinde gerçek bit hızı çok yüksek olur, ayarlanan bit hızı anlamsız kalır;<br>Sadece Kalite Aralığı \"Yakın-Düşük~Yüksek\" olduğunda bit hızının referans değeri vardır;",
      tipCbr: "\"Güçlü CBR\" CATV sistemlerinde kararlı TS bit hızı sağlamak için kullanılır. 1080P'de \"Güçlü CBR\" ile bit hızı 5000kbit/s'den düşük olmamalı, 8000kbit/s önerilir.",
      tipGop: "Giriş video kare hızının n olduğunu varsayarsak, yaygın değerler 60, 50, 30, 25'tir;<br>GOP aralığı genellikle n * 2 olarak ayarlanır, yaygın değerler 120, 100, 60, 50'dir;<br>Kare hızı Otomatik olarak ayarlandığında, n > 30 ise kodlama kare hızı n / 2'dir, aksi takdirde n'ye eşittir"
    },

    // TS/Multicast settings
    ts: {
      tsUri: "TS Akış URL:",
      multicastIp: "Çoklu Yayın IP:",
      multicastPort: "Çoklu Yayın Portu:",
      sapName: "SAP Adı:",
      tsVideoPid: "TS Video PID:",
      tsAudioPid: "TS Ses PID:",
      tsTransportStreamId: "TS Transport Stream ID:",
      tsOriginalNetworkId: "TS Orijinal Ağ ID:",
      tsPmtStartPid: "TS PMT Başlangıç PID:",
      tsStartPid: "TS Başlangıç PID:",
      tsTablesVersion: "TS Tablolar Sürümü:",
      tsServiceId: "TS Hizmet ID:",
      tsServiceName: "TS Hizmet Adı:",
      tsProviderName: "TS Sağlayıcı Adı:",
      tsPcrPeriod: "TS PCR Periyodu (ms):",
      conformSystemB: "Sistem B'ye Uygun (DVB):",
      tsNullPacket: "TS Boş Paketler:",
      noInsert: "Ekleme yok",
      insert12: "Ekle (1.2x)",
      insert13: "Ekle (1.3x)",
      insert15: "Ekle (1.5x)",
      insert20: "Ekle (2x)",
      insert25: "Ekle (2.5x)",
      tsTdt: "TS TDT:",
      // Tips
      tipMulticast: "Çoklu yayın adresi ayrıca yayın veya tek noktaya yayın adreslerini de kabul edebilir, sistem otomatik algılar.",
      tipVlc: "VLC çoklu yayını oynatamıyorsa, bilgisayarınızda birden fazla ağ adaptörü olup olmadığını kontrol edin, başka bir adaptöre geçmeyi deneyin.",
      tipSap: "SAP adı, VLC'nin çalma listesi -> Yerel Ağ gibi desteklenen cihazlarda görüntülenebilir.",
      tipAdvanced: "TS gelişmiş ayarları genellikle ayarlamaya gerek yoktur.",
      tipIptv: "IPTV sistemlerine bağlanırken, TS boş paketleri 1.3x olarak ayarlanmalıdır, cihaz kararlı bit hızı sağlamak için otomatik olarak boş paketler ekleyecektir;<br>Bu ayar sadece \"Güçlü CBR\" modunda geçerlidir."
    },

    // MJPEG settings

    mjpeg: {

      jpgUri: "JPG Image URL:",

      mjpgUri: "MJPG Stream URL:",

      // Tips

      tipJpg: "JPG is a still image; MJPG is a motion image.",

      tipMjpg: "Both can be opened directly in a browser."

    },


    // RTSP settings
    rtsp: {
      rtspUri: "RTSP Akış URL:",
      enableMulticast: "Etkin (Çoklu Yayın)",
      enableTcpOnly: "Etkin (Sadece TCP)",
      multicastIp: "RTSP Çoklu Yayın IP:",
      multicastPort: "RTSP Çoklu Yayın Portu:",
      // Tips
      tipEnable: "Etkin seçilirse, gerçek taşıma (UDP veya TCP) istemci tarafından belirlenir. Örneğin, VLC'de TCP kullanmak için \"RTP over RTSP(TCP)\" seçebilirsiniz.",
      tipTcpOnly: "Etkin (Sadece TCP) seçildiğinde cihaz TCP kullanmaya zorlanır.",
      tipUdp: "UDP, ağ sorunları nedeniyle zaman zaman paket düşürebilir. Tüm istemciler destekliyorsa, TCP önerilir.",
      tipMulticast: "Etkin (Çoklu Yayın) seçildiğinde \"RTSP Çoklu Yayın Portu\"ndan başlayarak 4 ardışık port kullanılacaktır."
    },

    // RTMP settings
    rtmp: {
      rtmpUri: "RTMP Akış URL:",
      publishUri0: "RTMP(S)/RTSP Yayın URL 0:",
      publishUri1: "RTMP(S)/RTSP Yayın URL 1:",
      publishUri2: "RTMP(S)/RTSP Yayın URL 2:",
      mode: "RTMP Akış Modu:",
      modeStandard: "Standard (Enhanced RTMP)",
      modeLegacy: "Legacy (CodecID 12)",
      // Tips
      tipPublish: "Yayın URL'leri 0-2, diğer LAN veya genel RTMP/RTSP sunucularına akış göndermek içindir, H.265/H.264 destekler.",
      tipBuiltin: "Bu cihazda H.264/H.265 çekme akışını destekleyen yerleşik bir RTMP sunucusu vardır;<br>RTMP akış URL'si \"/live/0\" olarak ayarlanırsa PotPlayer http://cihaz-IP/live/0 üzerinden oynatabilir.",
      tipMode: "RTMP Akış Modu yalnızca H.265 için geçerlidir ve FLV akışını da etkiler;"
    },

    // SRT settings
    srt: {
      listenerUri: "SRT Dinleyici URL:",
      callerUri: "SRT Arayan URL:",
      // Tips
      tipListener: "SRT Dinleyici modu, oynatıcıların akışı çekmesi için yerel bir portu dinler.<br>Örneğin, srt://0.0.0.0:9000 ayarlayın;<br>VLC daha sonra \"srt://cihaz-IP:9000\" oynatabilir.<br>streamid ekleme örneği:<br>srt://0.0.0.0:9000?streamid=channel100<br>Şifre ekleme örneği (minimum 10 karakter):<br>srt://0.0.0.0:9000?passphrase=0123456789<br>streamid ve şifre ekleme:<br>srt://0.0.0.0:9000?streamid=channel100&passphrase=0123456789",
      tipCaller: "SRT Arayan modu akışı başka bir sunucuya gönderir, örn.:<br>srt://live.example.com:9000?streamid=channel100&latency=120&maxbw=8000000",
      tipParams: "Desteklenen SRT parametreleri (ayrıntılar için SRT protokolüne bakın):<br>streamid - çoğullama için akış tanımlayıcısı<br>passphrase - şifreleme şifresi, SRT 10-79 karakter gerektirir<br>pbkeylen - anahtar uzunluğu: 16 (AES-128), 24 (AES-192), 32 (AES-256)<br>latency - ms cinsinden gecikme (20-8000ms)<br>maxbw - bayt/sn cinsinden maks bant genişliği<br>rcvbuf - alma tamponu boyutu<br>sndbuf - gönderme tamponu boyutu<br>ipttl - IP TTL değeri<br>conntimeo - ms cinsinden bağlantı zaman aşımı"
    },

    ndi: {
      enable: "NDI Çıkışı:",
      name: "Kaynak Adı:",
      mainStream: "Tam Kalite Akışı:",
      previewStream: "Önizleme Akışı (640x360 sabit):",
      groups: "NDI Grupları:",
      tipScope: "NDI etkinleştirildiğinde LAN'daki alıcılar (NDI Studio Monitor, vMix, OBS vb.) bu kaynağı otomatik bulur; şu şekilde görünür: CihazAdı (Kaynak Adı).",
      tipPreview: "NDI, tam kalite akışın yanında 640 piksel genişliğinde bir önizleme akışı gerektirir. Etkinleştirildiğinde seçilen önizleme akışının çözünürlüğü 640x360 olarak sabitlenir.",
      unlicensed: "Etkinleştirmek için lisans kodu girin.",
      unlicensedHint: "Lisanssız sürüm, 30 dakika ile sınırlıdır. ",
      licenseCode: "Lisans Kodu:",
      activate: "Etkinleştir",
      deviceId: "Cihaz Kimliği:",
      deviceTypeLabel: "Cihaz Türü:",
      globalTitle: "Genel Ayarlar (tüm portlara uygulanır)",
      tabGlobal: "Genel Ayarlar",
      gotoLicense: "Etkinleştirmeye git",
      discoveryEnable: "Discovery Server:",
      discoveryServer: "Sunucu Adresi:",
      serverHint: "Discovery Server varsayılan portu 5959'dur.",
      sendMode: "Veri Gönderim Modu:",
      sendModeAuto: "Otomatik (unicast)",
      sendModeMulticast: "Multicast",
      multicastAddr: "Multicast Adres Öneki:",
      multicastMask: "Multicast Ağ Maskesi:",
      tipDiscovery: "Discovery Server etkinleştirildiğinde bu cihaz artık mDNS kullanmaz; alıcıların kaynakları bulabilmesi için aynı Discovery Server adresini yapılandırması gerekir. Yönlendirilmiş veya multicast kısıtlı ağlar için uygundur. Birden fazla sunucuyu virgülle ayırın.",
      tipMulticast: "Multicast gönderim, birçok alıcının tek bir akışı paylaşmasını sağlar; ancak switch'lerde IGMP snooping'in doğru yapılandırılmış olması gerekir. Hazırlıksız bir ağda etkinleştirmek ağı tıkayabilir. Yalnızca yönetilen ağlarda kullanın."
    },
    // WebRTC settings
    webrtc: {
      previewTitle: "Web önizleme",
      previewNote: "(durum sayfasında düşük gecikmeli önizleme)",
      whipTitle: "WHIP yayını",
      whipNote: "(bir sunucuya gönder, çok sayıda izleyici için)",
      p2pTitle: "P2P uzaktan",
      p2pNote: "(NAT geçişi, birkaç uzak izleyici için)",
      optional: "isteğe bağlı",
      preview: "Web önizleme",
      whipServer: "Yayın URL'si",
      whipToken: "Bearer belirteci",
      p2pServer: "Sinyal sunucusu URL'si",
      p2pUuid: "Cihaz UUID",
      p2pToken: "P2P Kimlik Doğrulama Jetonu:",
      p2pAuthToken: "Yetki belirteci",
      regenerate: "Yeniden Oluştur",
      // Tips
      tipPreview: "Ana akım tarayıcılarda WebRTC önizleme H.264 video ve Opus/G.711 ses kodlamasını destekler.<br>Sesi Opus olarak ayarlamak daha iyi sonuçlar verir. Opus olarak ayarlanmazsa, varsayılan olarak G.711 8K kullanılır.",
      tipWhip: "WHIP akışı standart WHIP sunucularına bağlanır. Adresi sunucunuzdan kopyalayın.<br>Bearer jetonu boş olabilir.",
      tipP2p: "P2P sunucusu etkinleştirildikten sonra, izleme URL'si durum sayfasında gösterilir.<br>P2P kimlik doğrulama jetonu boş olabilir.",
      tipP2pNote: "P2P karmaşık intranet ortamlarında bağlanamayabilir."
    },

    // TRTC settings
    trtc: {
      roomId: "TRTC Oda ID:",
      userId: "TRTC Kullanıcı Adı:",
      roomKey: "TRTC Oda Anahtarı:",
      userSig: "TRTC UserSig:",
      sdkAppId: "TRTC SDKAppID:",
      roomIdType: "TRTC Oda ID Türü:",
      roomIdNumber: "Sayı",
      roomIdString: "Metin",
      // Short enum labels for template use
      number: "Sayı",
      string: "Metin",
      // Tips
      tipTrtc: "Tencent TRTC sunucusuna akış gönderir. Adresi sunucudan kopyalayın.<br>Tencent TRTC şu anda sadece H.264'ü destekliyor."
    },

    alirtc: {
      roomId: "AliRTC Oda ID:",
      userId: "AliRTC Kullanıcı ID:",
      userName: "AliRTC Kullanıcı Adı:",
      region: "AliRTC Bölge:",
      token: "AliRTC Token:",
      tipAliRtcToken: "Alibaba Cloud RTC sunucusuna akış gönderir ve H.265/H.264 desteği sunar.<br>Hizmet tarafından verilen Token'ı doğrudan girebilir veya AliRTC Token'a tıklayarak ayrı sayfada AppID/AppKey ile Token oluşturabilirsiniz.<br>Token boşsa cihaz açılışta ayrı sayfaya kaydedilmiş AppID/AppKey ile otomatik olarak oluşturmayı dener.<br>Oda ID, kullanıcı ID veya kullanıcı adı değişirse token'ı yeniden oluşturmanız gerekebilir."
    },

    alirtcTokenPage: {
      title: "AliRTC Token",
      roomId: "AliRTC Oda ID:",
      userId: "AliRTC Kullanıcı ID:",
      userName: "AliRTC Kullanıcı Adı:",
      appId: "AliRTC AppID:",
      appKey: "AliRTC AppKey:",
      token: "AliRTC Token:",
      generate: "Token oluştur ve kaydet",
      appFieldsRequired: "AliRTC AppID ve AppKey gereklidir.",
      identityRequired: "Geçerli akış çıkış ayarlarında AliRTC oda ID, kullanıcı ID ve kullanıcı adı gereklidir.",
      generateSuccess: "AliRTC token oluşturuldu ve kaydedildi.",
      generateFailed: "AliRTC token oluşturma başarısız oldu.",
      unavailable: "AliRTC bu cihazda kullanılamıyor."
    },

    // HLS settings
    hls: {
      hlsTsUri: "HLS TS Akış URL:",
      hlsMp4Uri: "HLS MP4 Akış URL:",
      hlsPushUri: "HLS PUSH URL:",
      hlsPushUrl: "HLS PUSH URL:",
      // Tips
      tipHls: "HLS TS/MP4 etkinleştirildiğinde, cihaz gelişmiş ayarlardaki segment süresine ve sayısına göre verileri bellekte tamponlar.<br>Hem segment süresini hem de sayısını 3 olarak ayarlamak bellek kullanımını azaltır.",
      tipPush: "HLS yayın URL'si YouTube gibi sunuculara göndermek içindir."
    },

    // MP4/FLV/Other settings
    other: {
      mp4Uri: "MP4 Akış URL:",
      flvUri: "FLV Akış URL:",
      icecastUri: "ICECAST PUSH URL:",
      icecastPushUrl: "ICECAST PUSH URL:",
      shoutcastUri: "Shoutcast PUSH URL:",
      shoutcastPushUrl: "Shoutcast PUSH URL:",
      // Tips
      tipMp4: "MP4 akışı etkinleştirildiğinde, doğrudan tarayıcıda oynatılabilir.<br>FLV akışı bu cihazda H.265/H.264'ü destekler, ancak VLC ve diğer oynatıcılar şu anda sadece H.264'ü destekliyor.<br>ICECAST/Shoutcast sadece MP3'ü destekler, ses sunucularına göndermek için.",
      tipShoutcast: "Shoutcast v1 ve v2'yi destekler;<br>Örnekler:<br>http://password@shoutcast_server:8000<br>http://password@shoutcast_server:8000?sid=100<br>http://password@shoutcast_server:8000?icy-name=Stream&icy-genre=Pop<br>Format:<br>http://password@sunucu-IP:dinleme-portu[?params...]; kullanıcı adı atlanabilir (varsayılan \"source\").<br>Sunucunun \"dinleme portunu\" kullanın, cihaz otomatik olarak kaynak portuna bağlanacaktır (dinleme portu + 1).<br>Desteklenen parametreler:<br>sid: Shoutcast v2 akış ID (varsayılan 1)<br>icy-name: akış adı (isteğe bağlı)<br>icy-genre: tür (isteğe bağlı)<br>icy-url: web sitesi URL'si (isteğe bağlı)<br>icy-pub: genel 0/1 (isteğe bağlı)"
    },

    // Common
    common: {
      save: "Kaydet",
      disabled: "Devre Dışı",
      enabled: "Etkin"
    },

    // Error and success messages
    messages: {
      success: "Ayarlar kaydedildi!",
      failed: "Ayarlar başarısız!",
      emptyError: "Ayarlar boş olamaz!",
      trtcH264Only: "TRTC etkinleştirildiğinde, sadece H.264 kodlaması desteklenir. Otomatik değiştirildi.",
      mp3Required: "Lütfen ses kodlamasını MP3 olarak ayarlayın!",
      subStreamDisabled: "Sub-stream settings are disabled.",
      // Encoding validation
      frameRateError: "Kare hızı 5-60 arasında bir tam sayı olmalıdır!",
      gopError: "GOP aralığı 5-300 arasında bir tam sayı olmalıdır!",
      mjpegQualityError: "MJPEG kalitesi 10-99 arasında bir tam sayı olmalıdır!",
      hlsBitrateWarning: "Bit hızı 32~8000 aralığında değil, HLS TS/MP4/PUSH akışları devre dışı bırakıldı.",
      trtcCodecWarning: "Kodek H.264 değil, TRTC devre dışı bırakıldı.",
      alirtcFieldsRequired: "AliRTC etkinleştirildiğinde AppID, AppKey, oda ID, kullanıcı ID ve kullanıcı adı gereklidir.",
      alirtcIdentityRequired: "AliRTC etkinleştirildiğinde oda ID, kullanıcı ID ve kullanıcı adı boş bırakılamaz.",
      hlsBitrateError: "Bit hızı 32~8000 aralığında değil, HLS TS/MP4/PUSH akışları etkinleştirilemiyor",
      // SRT validation
      srtListenerPortError: "SRT Dinleyici portu 1-65535 arasında bir tam sayı olmalıdır!",
      srtListenerFormatError: "Geçersiz SRT Dinleyici URL formatı!",
      srtCallerFormatError: "Geçersiz SRT Arayan URL formatı!",
      srtPasswordLengthError: "URL kodu çözülmüş SRT parolası 10-79 bayt olmalıdır!",
      srtLatencyError: "SRT Gecikme 1-10000 arasında bir tam sayı olmalıdır!",
      srtBandwidthError: "SRT Bant Genişliği 0-102400 arasında bir tam sayı olmalıdır!",
      // RTMP validation
      rtmpFormatError: "Yayın URL'si rtmp://, rtmps://, rtsp:// veya rtmpt:// ile başlamalıdır",
      // HLS validation
      hlsFormatError: "Geçersiz HLS yayın URL formatı!",
      // RTSP validation
      rtspMulticastIpError: "Geçersiz RTSP çoklu yayın IP formatı!",
      rtspMulticastPortError: "RTSP çoklu yayın portu 1-65535 arasında bir tam sayı olmalıdır!",
      // TS validation
      multicastIpError: "Geçersiz çoklu yayın IP formatı!",
      multicastPortError: "Çoklu yayın portu 1-65535 arasında bir tam sayı olmalıdır!",
      tsTransportIdError: "TS Transport Stream ID 1-65535 arasında bir tam sayı olmalıdır!",
      tsNetworkIdError: "TS Orijinal Ağ ID 1-65535 arasında bir tam sayı olmalıdır!",
      tsPmtPidError: "TS PMT Başlangıç PID 32-8186 arasında bir tam sayı olmalıdır!",
      tsStartPidError: "TS Başlangıç PID 32-3840 arasında bir tam sayı olmalıdır!",
      tsPidConflict: "TS Başlangıç PID ve TS PMT Başlangıç PID farklı olmalıdır!",
      tsVersionError: "TS Tablolar Sürümü 0-31 arasında bir tam sayı olmalıdır!",
      tsServiceIdError: "TS Hizmet ID 1-65535 arasında bir tam sayı olmalıdır!",
      tsVideoPidError: "TS Video PID 16-8190 arasında bir tam sayı olmalıdır!",
      tsAudioPidError: "TS Ses PID 16-8190 arasında bir tam sayı olmalıdır!",
      tsPcrPeriodError: "TS PCR periyodu 0-100 arasında bir tam sayı olmalıdır (0=otomatik)!",
      tsVideoPidConflict: "TS Video PID ve TS Ses PID farklı olmalıdır!",
      tsAudioPmtConflict: "TS Ses PID ve TS PMT Başlangıç PID farklı olmalıdır!",
      tsVideoPmtConflict: "TS Video PID ve TS PMT Başlangıç PID farklı olmalıdır!",
      // Other validation
      icecastFormatError: "Geçersiz Icecast yayın URL formatı!",
      shoutcastFormatError: "Geçersiz Shoutcast yayın URL formatı!",
      ndiNameEmpty: "NDI kaynak adı boş olamaz!",
      ndiSameStream: "NDI ana akışı ile önizleme akışı farklı olmalıdır!",
      ndiLicenseOk: "Lisans başarıyla etkinleştirildi!",
      ndiLicenseFail: "Geçersiz lisans kodu!",
      ndiDiscoveryServerEmpty: "Discovery Server adresi boş olamaz!",
      ndiMulticastAddrError: "Geçersiz multicast adresi veya ağ maskesi!"
    }
  }
};
