export default {
  // Navigasyon
  nav: {
    printers: 'Yazıcılar',
    archives: 'Arşivler',
    queue: 'Baskı Kuyruğu',
    stats: 'İstatistikler',
    profiles: 'Profiller',
    maintenance: 'Bakım',
    projects: 'Projeler',
    inventory: 'Filament',
    finance: 'Finans',
    files: 'Dosya Yöneticisi',
    makerworld: 'MakerWorld',
    notifications: 'Bildirimler',
    settings: 'Ayarlar',
    system: 'Sistem',
    collapseSidebar: 'Kenar çubuğunu daralt',
    expandSidebar: 'Kenar çubuğunu genişlet',
    update: 'Güncelle',
    updateAvailable: 'Güncelleme mevcut: v{{version}}',
    updateAvailableBanner: '{{version}} sürümü kullanılabilir!',
    viewUpdate: 'Güncellemeyi gör',
    viewOnGithub: "GitHub'da gör",
    keyboardShortcuts: 'Klavye kısayolları (?)',
    switchToLight: 'Açık moda geç',
    switchToDark: 'Koyu moda geç',
    switchToSystem: 'Sistem moduna geç',
    smartSwitches: 'Akıllı Anahtarlar',
    logout: 'Çıkış',
    installApp: 'Uygulamayı yükle',
    installAppSuccess: 'Bambuddy yüklendi',
  },

  // Ortak
  common: {
    plusNMore: '+{{count}} tane daha',
    save: 'Kaydet',
    saving: 'Kaydediliyor...',
    cancel: 'İptal',
    delete: 'Sil',
    edit: 'Düzenle',
    add: 'Ekle',
    close: 'Kapat',
    confirm: 'Onayla',
    loading: 'Yükleniyor...',
    error: 'Hata',
    errorLoading: 'Veri yüklenirken hata',
    retry: 'Yeniden dene',
    success: 'Başarılı',
    warning: 'Uyarı',
    enabled: 'Etkin',
    disabled: 'Devre dışı',
    yes: 'Evet',
    no: 'Hayır',
    on: 'Açık',
    off: 'Kapalı',
    all: 'Tümü',
    none: 'Hiçbiri',
    search: 'Ara',
    filter: 'Filtrele',
    sort: 'Sırala',
    refresh: 'Yenile',
    download: 'İndir',
    upload: 'Yükle',
    uploading: 'Yükleniyor...',
    uploadFailed: 'Yükleme başarısız',
    actions: 'İşlemler',
    status: 'Durum',
    name: 'Ad',
    description: 'Açıklama',
    date: 'Tarih',
    time: 'Saat',
    hours: 'saat',
    minutes: 'dakika',
    seconds: 'saniye',
    days: 'gün',
    enable: 'Etkinleştir',
    disable: 'Devre dışı bırak',
    permissions: 'İzinler',
    noPrinters: 'Yapılandırılmış yazıcı yok',
    noData: 'Veri yok',
    linkNotFound: 'Bağlantı bulunamadı',
    required: 'Zorunlu',
    optional: 'İsteğe bağlı',
    dismiss: 'Kapat',
    apply: 'Uygula',
    reset: 'Sıfırla',
    export: 'Dışa aktar',
    import: 'İçe aktar',
    clear: 'Temizle',
    selectAll: 'Tümünü Seç',
    deselectAll: 'Seçimi Kaldır',
    noChange: '— Değişiklik yok —',
    unchanged: 'Değişmedi',
    unassigned: 'Atanmamış',
    unknown: 'Bilinmiyor',
    unknownError: 'Bilinmeyen hata',
    today: 'Bugün',
    tomorrow: 'Yarın',
    asap: 'En kısa sürede',
    overdue: 'Gecikmiş',
    now: 'Şimdi',
    collapse: 'Daralt',
    expand: 'Genişlet',
    previous: 'Önceki',
    next: 'Sonraki',
    viewArchive: 'Arşivi gör',
    viewInFileManager: 'Dosya Yöneticisinde gör',
    addedBy: '{{username}} tarafından eklendi',
    prints: 'baskı',
    more: '+{{count}} daha',
    ascending: 'Artan',
    descending: 'Azalan',
    back: 'Geri',
    copy: 'Kopyala',
    copied: 'Kopyalandı!',
    printer: 'Yazıcı',
    remove: 'Kaldır',
    type: 'Tür',
    print: 'Baskı',
    rename: 'Yeniden adlandır',
    move: 'Taşı',
    create: 'Oluştur',
    duplicate: 'Çoğalt',
    left: 'Sol',
    right: 'Sağ',
    user: 'Kullanıcı',
    run: 'Çalıştır',
    running: 'Çalışıyor...',
  },

  finance: {
    allTypes: 'Tüm türler',
    allCostCenters: 'Tüm masraf merkezleri',
    title: 'Finans',
    subtitle: 'Cüzdan, kişisel işlemler ve masraf merkezleri',
    noAccess: 'Finans verilerini görüntüleme izniniz yok.',
    personalView: 'Kişisel görünüm',
    adminView: 'Yönetici görünümü',
    createCostCenter: 'Masraf merkezi oluştur',
    adjustWallet: 'Cüzdanı ayarla',
    addManualPrint: 'Manuel baskı ekle',
    manageMembers: 'Masraf merkezi üyelerini yönet',
    currentBalance: 'Kişisel bakiye',
    transactions: 'İşlemler',
    personalTransactions: 'Kişisel işlemler',
    costCenters: 'Masraf merkezleri',
    availableForPrinting: 'Baskı ataması için kullanılabilir',
    costCenterName: 'Ad',
    budgetType: 'Bütçe türü',
    monthlyBudget: 'Aylık bütçe',
    totalBudget: 'Toplam bütçe',
    noBudget: 'Bütçe yok',
    create: 'Oluştur',
    selectUser: 'Kullanıcı seç',
    transactionType: 'Tür',
    amount: 'Tutar',
    noCostCenter: 'Masraf merkezi yok',
    descriptionOptional: 'Açıklama (isteğe bağlı)',
    applyAdjustment: 'Ayarlamayı uygula',
    memberCanPrint: 'Üye baskı yapabilir',
    addMember: 'Üye ekle',
    canPrint: 'Baskı yapabilir',
    noMembers: 'Atanmış üye yok.',
    editCostCenter: 'Masraf merkezini düzenle',
    myCostCenters: 'Masraf merkezlerim',
    costCentersHint: 'Bütçe sınırlarını gözden geçirin ve maliyetleri kontrol altında tutun',
    noCostCenters: 'Masraf merkezi bulunamadı.',
    owner: 'Sahip',
    balance: 'Hesap bakiyesi',
    unlimited: 'Sınırsız',
    budgetPolicyHint: 'Hesap bakiyeleri maliyetleri kaydeder. Baskı yalnızca seçilen masraf merkezinin bütçesiyle sınırlıdır; bütçe yoksa sınırsızdır.',
    budget: 'Bütçe',
    shared: 'Paylaşılan',
    cannotEditPrivateCostCenter: 'Özel masraf merkezleri burada düzenlenemez',
    recentTransactions: 'Son işlemler',
    transactionsHint: 'Türe ve masraf merkezine göre filtrele',
    first: 'İlk',
    prev: 'Önceki',
    next: 'Sonraki',
    last: 'Son',
    pageNumberOf: '{{total}} sayfanın {{page}}. sayfası',
    noTransactions: 'Kullanılabilir işlem yok.',
    noTransactionsForFilter: 'Seçilen filtrelerle eşleşen işlem yok.',
    costCenter: 'Masraf merkezi',
    balanceAfter: 'İşlem sonrası bakiye',
    userWithId: 'Kullanıcı #{{id}}',
    partial: 'Kısmi',
    editTransaction: 'İşlemi düzenle',
    selectCostCenter: 'Masraf merkezi seç...',
    costCenterRequired: 'Lütfen bir masraf merkezi seçin',
    amountExample: 'örn. 4,00',
    manualAdjustmentExample: 'örn. Manuel ayarlama',
    userRequired: 'Lütfen bir kullanıcı seçin',
    amountInvalid: 'Tutar geçerli bir sayı olmalıdır',
    createdCostCenter: 'Masraf merkezi oluşturuldu',
    createCostCenterFailed: 'Masraf merkezi oluşturulamadı',
    transactionDeleted: 'İşlem silindi',
    deleteTransactionFailed: 'İşlem silinemedi',
    transactionEdited: 'İşlem güncellendi ve hesap defteri yeniden hesaplandı',
    editTransactionFailed: 'İşlem düzenlenemedi',
    manualPrintCreated: 'Manuel baskı ücreti eklendi ve hesap defteri yeniden hesaplandı',
    manualPrintFailed: 'Manuel baskı oluşturulamadı',
    memberSaved: 'Üye kaydedildi',
    memberSaveFailed: 'Üye kaydedilemedi',
    memberRemoved: 'Üye kaldırıldı',
    memberRemoveFailed: 'Üye kaldırılamadı',
    costCenterNameRequired: 'Masraf merkezi adı gereklidir',
    costCenterUpdated: 'Masraf merkezi güncellendi',
    costCenterUpdateFailed: 'Masraf merkezi güncellenemedi',
    confirmDeleteCostCenter: '"{{name}}" masraf merkezi silinsin mi?',
    costCenterDeleted: 'Masraf merkezi silindi',
    costCenterDeleteFailed: 'Masraf merkezi silinemedi',
    deleteTransactionConfirm: 'Bu işlem silinsin mi? Bakiyeler otomatik olarak yeniden hesaplanacaktır.',
    deposit: 'Para yatırma',
    withdraw: 'Para çekme',
    printCharge: 'Baskı ücreti',
    deleteTransaction: 'İşlemi sil',
  },

  // Yazıcılar sayfası
  printers: {
    title: 'Yazıcılar',
    addPrinter: 'Yazıcı Ekle',
    addPreflight: {
      checking: 'Bağlantı kontrol ediliyor...',
      warning: 'Bazı bağlantı kontrolleri başarısız oldu. Bu yazıcı çevrimdışı olarak görünebilir. Aşağıdaki kontrolleri inceleyin, düzeltebileceklerinizi düzeltin veya yine de kaydedin.',
      back: 'Geri',
      saveAnyway: 'Yine de kaydet',
    },
    editPrinter: 'Yazıcıyı Düzenle',
    deletePrinter: 'Yazıcıyı Sil',
    printerName: 'Yazıcı Adı',
    serialNumber: 'Seri Numarası',
    ipAddress: 'IP Adresi / Ana Bilgisayar Adı',
    accessCode: 'Erişim Kodu',
    model: 'Model',
    nozzleCount: 'Nozul Sayısı',
    autoArchive: 'Otomatik Arşivle',
    status: {
      available: 'Müsait',
      idle: 'Boşta',
      printing: 'Baskıda',
      paused: 'Duraklatıldı',
      offline: 'Çevrimdışı',
      problem: 'Sorun',
      error: 'Hata',
      finished: 'Tamamlandı',
      unknown: 'Bilinmiyor',
    },
    temperatures: {
      nozzle: 'Nozul',
      bed: 'Tabla',
      chamber: 'Hazne',
    },
    heaterHistory: {
      title: 'Isıtıcı Geçmişi',
      openLabel: 'Isıtıcı geçmişini görüntüle',
      nozzle: 'Nozul',
      nozzle2: 'Nozul 2',
      bed: 'Tabla',
      chamber: 'Hazne',
      error: 'Geçmiş yüklenemedi',
      empty: 'Henüz veri kaydedilmedi',
    },
    progress: '%{{percent}} tamamlandı',
    timeRemaining: '{{time}} kaldı',
    deleteConfirm: '"{{name}}" silmek istediğinizden emin misiniz?',
    maintenanceOk: 'Bakım Tamam',
    maintenanceWarning: '{{count}} uyarı',
    maintenanceWarning_plural: '{{count}} uyarı',
    maintenanceDue: '{{count}} bekliyor',
    maintenanceDue_plural: '{{count}} bekliyor',
    // Sıralama seçenekleri
    sort: {
      name: 'Ad',
      status: 'Durum',
      model: 'Model',
      location: 'Konum',
      eta: 'Kalan süre',
      ascending: 'Artan sırala',
      descending: 'Azalan sırala',
    },
    // Kart boyutu
    cardSize: {
      small: 'Küçük kartlar',
      medium: 'Orta kartlar',
      large: 'Büyük kartlar',
      extraLarge: 'Çok büyük kartlar',
    },
    pageView: {
      openCamWallPage: 'Kamera duvarını sayfa olarak aç',
      cards: 'Kartlar',
      camWall: 'Kamera duvarı',
    },
    camWall: {
      page: {
        tokenRejected:
          'Bu kamera duvarı bağlantısı artık geçerli değil. Belirtecin süresi dolmuş veya belirteç iptal edilmiş olabilir.',
        loadFailed: 'Yazıcılar yüklenemedi.',
      },
      noPrinters: 'Gösterilecek yazıcı yok',
      noSignal: 'Sinyal yok',
      live: 'Canlı',
      snap: 'Foto',
      off: 'Kapalı',
      summary: '{{live}} canlı, {{snap}} fotoğraf, toplam {{total}}',
      layer: 'Katman {{cur}}/{{total}}',
      timeLeft: '{{time}} kaldı',
      statusMode: {
        off: 'Kapalı',
        compact: 'Sade',
        full: 'Tam',
      },
      settings: {
        title: 'Kamera duvarı ayarları',
        maxLive: 'Maks. canlı yayın',
        maxLiveHint: 'Aynı anda kaç döşemenin canlı yayın yaptığı. Diğerleri foto olarak yenilenir.',
        snapshotInterval: 'Foto aralığı (saniye)',
        snapshotIntervalHint: 'Canlı olmayan döşemelerin ne sıklıkla yeni bir foto aldığı.',
        statusOverlay: 'Durum kaplaması',
        statusOverlayHint: 'Sade: yalnızca durum rozeti. Tam: + ilerleme, katman, kalan süre.',
      },
    },
    // Kontroller
    hideOffline: 'Çevrimdışı olanları gizle',
    nextAvailable: 'Sıradaki müsait',
    powerOn: 'Aç',
    offlinePrintersWithPlugs: 'Akıllı prizli çevrimdışı yazıcılar',
    noPrintersConfigured: 'Henüz yapılandırılmış yazıcı yok',
    search: 'Yazıcı ara...',
    noSearchResults: 'Aramanıza veya filtrelerinize uyan yazıcı yok',
    filter: {
      allStatuses: 'Tüm durumlar',
      allLocations: 'Tüm konumlar',
    },
    toolbar: {
      filters: 'Filtreler',
      view: 'Görünüm',
      actions: 'İşlemler',
    },
    // Yazıcı kartı
    readyToPrint: 'Baskıya hazır',
    external: 'Harici',
    extL: 'Ext-L',
    extR: 'Ext-R',
    deleteArchives: 'Baskı arşivlerini sil',
    noLabel: 'Etiket yok',
    printPreview: 'Baskı önizleme',
    width: 'Genişlik',
    height: 'Yükseklik',
    noObjectsFound: 'Nesne bulunamadı',
    objectsLoadedOnPrintStart: 'Nesneler baskı başladığında yüklenir',
    willBeSkipped: 'Atlanacak',
    name: 'Ad',
    serialCannotBeChanged: 'Seri numarası değiştirilemez',
    locationHelp: 'Yazıcıları gruplamak ve kuyruk işlerini filtrelemek için kullanılır',
    // WiFi sinyal gücü
    wifiSignal: {
      veryWeak: 'Çok zayıf',
      weak: 'Zayıf',
      fair: 'Orta',
      good: 'İyi',
      excellent: 'Mükemmel',
    },
    // Bakım
    maintenanceUpToDate: 'Tüm bakım güncel - Görüntülemek için tıklayın',
    maintenance: {
      title: 'Bakımda',
      subtitle: 'Bu yazıcı duraklatıldı — bağlı değil, kuyruğa uygun değil, bildirim göndermiyor.',
      pillLabel: 'Bakım',
      exitButton: 'Bakımdan çık',
      menuEnter: 'Bakım moduna gir',
      menuExit: 'Bakım modundan çık',
      toastEntered: '{{name}} artık bakım modunda',
      toastExited: '{{name}} tekrar çevrimiçi',
      confirmMidPrintTitle: 'Yazdırma sırasında bakım moduna geçilsin mi?',
      confirmMidPrintMessage: '{{name}} şu anda yazdırıyor. Bakım moduna geçmek MQTT bağlantısını kesecek ve bu iş için ilerleme takibi ile tamamlanma bildirimlerini durduracak. Devam edilsin mi?',
      editFieldLabel: 'Bakım modu',
      editFieldHelp: 'Etkinleştirildiğinde, bu yazıcı MQTT, kuyruk gönderimi ve bildirimlerden duraklatılır — tamir, paralel Bambuddy kurulumları veya geçici askıya alma için kullanışlıdır.',
    },
    // Hazne ışığı
    chamberLightOn: 'Hazne ışığını aç',
    chamberLightOff: 'Hazne ışığını kapat',
    // Dosyalar
    files: 'Dosyalar',
    browseFiles: 'Yazıcı dosyalarına göz at',
    // Akıllı priz
    autoOffAfterPrint: 'Baskı sonrası otomatik kapat',
    autoOffExecuted: 'Otomatik kapama uygulandı - sıfırlamak için yazıcıyı açın',
    // HMS hataları
    hmsErrors: 'HMS Hataları',
    viewHmsErrors: '{{count}} HMS hatasını gör',
    // İşlemler
    resume: 'Devam Et',
    pause: 'Duraklat',
    stop: 'Durdur',
    camera: 'Kamera',
    skipObject: 'Nesneyi Atla',
    reconnect: 'Yeniden Bağlan',
    forceRefresh: 'Zorla Yenile',
    forceRefreshSuccess: 'Yenileme istendi',
    mqttDebug: 'MQTT Hata Ayıklama',
    printerInformation: 'Yazıcı Bilgisi',
    copyToClipboard: 'Kopyala',
    copied: 'Kopyalandı!',
    state: 'Durum',
    wifiSignalLabel: 'WiFi Sinyali',
    developerMode: 'Geliştirici Modu',
    enabled: 'Etkin',
    disabled: 'Devre dışı',
    addedOn: 'Eklendi',
    sdCard: 'SD Kart',
    inserted: 'Takılı',
    notInserted: 'Takılı değil',
    totalPrintHours: 'Baskı Saatleri',
    activeNozzle: 'Aktif: {{nozzle}} nozul',
    nozzleRack: 'Nozul Rafı',
    nozzleDocked: 'Yuvalanmış',
    nozzleMounted: 'Takılı',
    nozzleActive: 'Aktif',
    nozzleIdle: 'Boşta',
    nozzleDiameter: 'Çap',
    nozzleType: 'Tür',
    nozzleStatus: 'Durum',
    nozzleFilament: 'Filament',
    nozzleWear: 'Aşınma',
    nozzleMaxTemp: 'Maks. Sıcaklık',
    nozzleSerial: 'Seri',
    nozzleHardenedSteel: 'Sertleştirilmiş Çelik',
    nozzleStainlessSteel: 'Paslanmaz Çelik',
    nozzleTungstenCarbide: 'Tungsten Karbür',
    nozzleFlow: 'Akış',
    nozzleHighFlow: 'Yüksek Akış',
    nozzleStandardFlow: 'Standart',
    // Firmware
    firmwareUpdate: 'Firmware Güncellemesi',
    firmwareInstructions: 'Yazıcının dokunmatik ekranında şuraya gidin:',
    firmwareNav: 'Şuraya gidin',
    settings: 'Ayarlar',
    firmware: 'Firmware',
    // Keşif
    discoverPrinters: 'Yazıcıları Keşfet',
    searching: 'Aranıyor...',
    manualEntry: 'Manuel Giriş',
    addFromCloud: "Bulut'tan Ekle",
    // Toast mesajları
    toast: {
      printerDeleted: 'Yazıcı silindi',
      missingSpoolAssignment: '{{printer}} üzerinde baskı başladı. Şunlar için eksik makara ataması: {{slots}}',
      killSwitchTriggered: 'Faturalandırma durdurma anahtarı {{printer}} üzerindeki yetkisiz baskıyı durdurdu: {{filename}}',
      billingChargeFailed: '{{printer}} üzerindeki {{filename}} için faturalandırma başarısız oldu. Bütçe rezervasyonu korundu; sunucu günlüklerini kontrol edin.',
      assignmentVerified: '{{slot}} yuvasına filament yüklendi ({{printer}})',
      assignmentVerifiedNoKprofile: '{{printer}} üzerindeki {{slot}} yuvası yüklendi, ancak akış kalibrasyonu profili (K profili) uygulanmadı',
      assignmentNotConfirmed: '{{printer}} üzerindeki {{slot}} yuvası ataması doğrulanamadı — AMS yuvasını kontrol edin',
      printerAdded: 'Yazıcı eklendi',
      printerUpdated: 'Yazıcı güncellendi',
      failedToDelete: 'Yazıcı silinemedi',
      failedToAdd: 'Yazıcı eklenemedi',
      connectionFailedNotAdded: 'Yazıcıya bağlanılamadı. IP, seri numarası ve erişim kodunu doğrulayın ve yalnızca LAN modunun açık olduğunu onaylayın. Yazıcı eklenmedi.',
      failedToUpdate: 'Yazıcı güncellenemedi',
      commandSent: 'Komut gönderildi',
      failedToSendCommand: 'Komut gönderilemedi',
      turnedOn: '{{name}} açıldı',
      failedToPowerOn: '{{name}} açılamadı',
      scriptTriggered: 'Betik tetiklendi',
      printStopped: 'Baskı durduruldu',
      printPaused: 'Baskı duraklatıldı',
      printResumed: 'Baskıya devam edildi',
      referenceDeleted: 'Referans silindi',
      detectionAreaSaved: 'Algılama alanı kaydedildi',
      failedToRunScript: 'Betik çalıştırılamadı',
      failedToStopPrint: 'Baskı durdurulamadı',
      failedToPausePrint: 'Baskı duraklatılamadı',
      failedToResumePrint: 'Baskıya devam edilemedi',
      failedToControlChamberLight: 'Hazne ışığı kontrol edilemedi',
      failedToSetSpeed: 'Baskı hızı ayarlanamadı',
      failedToUpdateSetting: 'Ayar güncellenemedi',
      failedToSkipObjects: 'Nesneler atlanamadı',
      failedToRereadRfid: 'RFID yeniden okunamadı',
      failedToCheckPlate: 'Plaka kontrol edilemedi',
      failedToUpdateLabel: 'Etiket güncellenemedi',
      failedToDeleteReference: 'Referans silinemedi',
      failedToSaveDetectionArea: 'Algılama alanı kaydedilemedi',
      plateCheckEnabled: 'Plaka kontrolü etkinleştirildi',
      plateCheckDisabled: 'Plaka kontrolü devre dışı bırakıldı',
      calibrationSaved: 'Kalibrasyon kaydedildi!',
      calibrationFailed: 'Kalibrasyon başarısız',
      rfidRereadInitiated: 'RFID yeniden okuma başlatıldı',
      loadInitiated: 'Filament yükleniyor…',
      unloadInitiated: 'Filament çıkarılıyor…',
      failedToLoad: 'Filament yüklenemedi',
      failedToUnload: 'Filament çıkarılamadı',
    },
    // Bağlantı durumu
    connection: {
      connected: 'Bağlı',
      offline: 'Çevrimdışı',
    },
    plateStatus: {
      markCleared: 'Plakayı temizlendi olarak işaretle',
      cleared: 'Plaka Temiz',
      notCleared: 'Plaka Temiz Değil',
      inUse: 'Plaka Kullanımda',
    },
    // Kuyruk bilgisi
    queue: {
      inQueue: 'Kuyrukta {{count}} baskı',
      inQueue_plural: 'Kuyrukta {{count}} baskı',
    },
    // Kontroller bölümü
    controls: 'Kontroller',
    // RFID
    rfid: {
      reread: "RFID'yi yeniden oku",
    },
    // AMS yükle/çıkar (#891)
    ams: {
      load: 'Yükle',
      unload: 'Çıkar',
    },
    bedJog: {
      limitWarning: 'Manuel hareketlerde hareket sınırları uygulanmaz — bir Bambu donanım yazılımı hatası, uzaktan komutlarda yazılım limit anahtarlarını yok sayar. Çarpışmayı önlemek için dikkatlice hareket ettirin.',
      title: 'Jog kontrolleri',
      bed: 'Tabla',
      step: 'Adım (mm)',
      up: 'Plakayı yukarı hareket ettir',
      down: 'Plakayı aşağı hareket ettir',
      disabledWhilePrinting: 'Baskı sırasında devre dışı',
      notHomedTitle: 'Yazıcı sıfırlanmamış',
      notHomedMessage: 'Yazıcı son baskıdan bu yana sıfırlanmadı. Güvenli konumlandırma için önce otomatik sıfırlamayı çalıştırın (kafayı park eder, ardından X, Y ve Z sıfırlanır) veya yine de hareket ettirin — yazılım son durakları atlanır.',
      homeZ: 'Otomatik Sıfırla',
      moveAnyway: 'Yine de hareket ettir',
      homingStarted: 'Yazıcı otomatik sıfırlanıyor…',
    },
    // İzinler
    permission: {
      noAdd: 'Yazıcı eklemek için izniniz yok',
      noEdit: 'Yazıcıları düzenlemek için izniniz yok',
      noDelete: 'Yazıcıları silmek için izniniz yok',
      noControl: 'Yazıcıları kontrol etmek için izniniz yok',
      noFiles: 'Yazıcı dosyalarına erişim izniniz yok',
      noAmsRfid: "AMS RFID'yi yeniden okumak için izniniz yok",
      noSmartPlugControl: 'Akıllı prizleri kontrol etme izniniz yok',
      noCamera: 'Kameraları görüntüleme izniniz yok',
    },
    // Ekle/Düzenle modali
    modal: {
      addTitle: 'Yazıcı Ekle',
      editTitle: 'Yazıcıyı Düzenle',
      myPrinter: 'Yazıcım',
      selectModel: 'Model seç...',
      locationGroup: 'Konum / Grup (isteğe bağlı)',
      locationPlaceholder: 'örn., Atölye, Ofis, Bodrum',
      autoArchiveLabel: 'Tamamlanan baskıları otomatik arşivle',
      fromPrinterSettings: 'Yazıcı ayarlarından',
      modelOptional: 'Model (isteğe bağlı)',
      saveChanges: 'Değişiklikleri Kaydet',
    },
    // Nesneleri atla
    skipObjects: {
      tooltip: 'Nesneleri atla',
      onlyWhilePrinting: 'Nesneleri atla (yalnızca baskı sırasında)',
      requiresMultiple: 'Nesneleri atla (2+ nesne gerektirir)',
      title: 'Nesneleri Atla',
      matchIdsInfo: "ID'leri yazıcı ekranınızla eşleştirin",
      printerShowsIds: "Yazıcı ekranı baskı plakasındaki nesne ID'lerini gösterir",
      skipSelected: 'Seçilenleri Atla',
      skipping: 'Atlanıyor...',
      noObjectsSelected: 'Hiçbir nesne seçilmedi',
      selectObjectsToSkip: 'Mevcut baskıdan atlamak istediğiniz nesneleri seçin',
      skipped: 'atlandı',
      objectsSkipped: 'Nesneler atlandı',
      activeCount: '{{count}} aktif',
      waitForLayer: 'Nesneleri atlamak için 2+ katmanı bekleyin (şu an katman {{layer}})',
      skip: 'Atla',
      confirmTitle: 'Nesne Atlansın mı?',
      confirmMessage: '"{{name}}" atlamak istediğinizden emin misiniz? Bu geri alınamaz.',
      confirmAllMessage: 'Kalan tüm nesneler seçildi. Bu, yazdırma işini durduracaktır. Devam edilsin mi?',
      confirmMultipleMessage: 'Seçilen {{count}} nesne atlansın mı? Bu geri alınamaz.',
    },
    // Onay modalleri
    confirm: {
      deleteTitle: 'Yazıcıyı Sil',
      deleteMessage: '"{{name}}" silmek istediğinizden emin misiniz? Bu, tüm bağlantı ayarlarını kaldıracak.',
      deleteArchivesNote: 'Bu yazıcı için tüm baskı geçmişi kalıcı olarak silinecek.',
      keepArchivesNote: 'Baskı geçmişi saklanacak ancak artık bu yazıcıyla ilişkilendirilmeyecek.',
      stopTitle: 'Baskıyı Durdur',
      stopMessage: '"{{name}}" üzerindeki mevcut baskıyı durdurmak istediğinizden emin misiniz? Bu, baskı işini iptal edecek.',
      stopButton: 'Baskıyı Durdur',
      pauseTitle: 'Baskıyı Duraklat',
      pauseMessage: '"{{name}}" üzerindeki mevcut baskıyı duraklatmak istediğinizden emin misiniz?',
      pauseButton: 'Baskıyı Duraklat',
      resumeTitle: 'Baskıya Devam Et',
      resumeMessage: '"{{name}}" üzerindeki baskıya devam etmek istediğinizden emin misiniz?',
      resumeButton: 'Baskıya Devam Et',
      powerOnTitle: 'Yazıcıyı Aç',
      powerOnMessage: '"{{name}}" için gücü AÇMAK istediğinizden emin misiniz?',
      powerOnButton: 'Aç',
      powerOffTitle: 'Yazıcıyı Kapat',
      powerOffMessage: '"{{name}}" için gücü KAPATMAK istediğinizden emin misiniz?',
      powerOffWarning: 'UYARI: "{{name}}" şu anda baskı yapıyor! Gücü KAPATMAK istediğinizden emin misiniz? Bu, baskıyı kesintiye uğratacak ve yazıcıya zarar verebilir.',
      powerOffButton: 'Kapat',
      haToggleTitle: '"{{name}}" Aç/Kapat',
      haToggleMessage: 'Home Assistant varlığı {{entity}} açılıp kapatılsın mı? Şu anda açıksa güç kesilebilir.',
      haToggleWarning: 'UYARI: "{{name}}" şu anda baskı yapıyor! {{entity}} açılıp kapatılması gücü kesip baskıyı kesintiye uğratabilir. Devam edilsin mi?',
      haToggleButton: 'Aç/Kapat',
    },
    // Toplu işlemler
    bulk: {
      select: 'Seç',
      selectAll: 'Tümünü Seç',
      selectByLocation: 'Konuma Göre Seç',
      selected: '{{count}} seçildi',
      actions: {
        stop: 'Durdur',
        pause: 'Duraklat',
        resume: 'Devam Et',
        clearPlate: 'Tablayı Temizle',
        clearHMS: 'Bildirimleri Temizle',
      },
      confirm: {
        stopTitle: '{{count}} Baskıyı Durdur',
        stopMessage: 'Bu, {{count}} yazıcı üzerindeki aktif baskıları iptal edecek. Bu işlem geri alınamaz.',
        stopButton: 'Hepsini Durdur',
        pauseTitle: '{{count}} Baskıyı Duraklat',
        pauseMessage: 'Bu, {{count}} yazıcı üzerindeki aktif baskıları duraklatacak.',
        pauseButton: 'Hepsini Duraklat',
        clearPlateTitle: '{{count}} Baskı Tablasını Temizle',
        clearPlateMessage: 'Bu, {{count}} yazıcının baskı tablasını temizleyecek ve kuyruktaki işleri tetikleyebilir.',
        clearPlateButton: 'Hepsini Temizle',
      },
      success: '{{count}} yazıcı üzerinde {{action}} tamamlandı',
      partial: '{{succeeded}} başarılı, {{failed}} başarısız',
      noneApplicable: 'Seçilen yazıcılar bu işlem için doğru durumda değil',
      selectByState: 'Duruma Göre Seç',
    },
    // Keşif
    discovery: {
      title: 'Yazıcıları Keşfet',
      searching: 'Aranıyor...',
      scanning: 'Taranıyor...',
      scanProgress: 'Taranıyor... {{scanned}}/{{total}}',
      foundPrinters: '{{count}} yazıcı bulundu',
      noPrintersFound: 'Yazıcı bulunamadı',
      noPrintersFoundSubnet: 'Belirtilen alt ağda yazıcı bulunamadı.',
      noPrintersFoundNetwork: 'Ağda yazıcı bulunamadı.',
      allConfigured: 'Keşfedilen tüm yazıcılar zaten yapılandırılmış.',
      alreadyAdded: 'Zaten eklendi',
      select: 'Seç',
      manualEntry: 'Manuel Giriş',
      addFromCloud: "Bulut'tan Ekle",
      subnetToScan: 'Taranacak alt ağ',
      dockerNote: "Docker algılandı. Yazıcınızın alt ağını CIDR gösteriminde girin. docker-compose.yml'de network_mode: host gerektirir.",
      scanSubnet: 'Yazıcılar için Alt Ağı Tara',
      discoverNetwork: 'Ağda Yazıcıları Keşfet',
      scanningSubnet: 'Bambu yazıcıları için alt ağ taranıyor...',
      scanningNetwork: 'Ağ taranıyor...',
      serialRequired: 'Seri numarası gerekli',
      unknown: 'Bilinmiyor',
      failedToStart: 'Keşif başlatılamadı',
      customSubnetOption: 'Özel alt ağ...',
      customSubnetLabel: 'Özel alt ağ (CIDR)',
      customSubnetNote: 'Yazıcınız bu sunucudan farklı bir ağda ise özel bir alt ağ kullanın. FTP (990) ve MQTT (8883) bağlantı noktaları yönlendirme sınırı boyunca erişilebilir olmalıdır.',
    },
    // AMS Kurutma
    drying: {
      start: 'Kurutmayı Başlat',
      stop: 'Kurutmayı Durdur',
      temperature: 'Sıcaklık',
      duration: 'Süre',
      hours: 'saat',
      timeRemaining: '{{time}} kaldı',
      active: 'Kurutuluyor',
      targetSummary: '{{filament}} @ {{temp}}°C',
      notSupported: 'Kurutma desteklenmiyor',
      powerRequired: 'Kurutmayı etkinleştirmek için AMS güç adaptörünü bağlayın',
      startingDrying: 'Kurutma başlatılıyor...',
      toastCommandSent: 'Kurutma komutu gönderildi',
      toastStopped: 'Kurutma durduruldu',
      toastNotStarted: 'Yazıcı komutu kabul etti ancak AMS kurutmayı başlatmadı. AMS güç adaptörünün bağlı olduğundan ve yazıcının boşta olduğundan emin olun.',
      screenOnly: 'Bu yazıcıda AMS kurutma yalnızca yazıcının kendi ekranından kontrol edilebilir (Bambu kısıtlaması)',
      stoppingDrying: 'Kurutma durduruluyor...',
      rotateTray: 'Kurutma sırasında makarayı döndür',
      rotateUnavailableReason: 'Kullanılamaz — bu AMS\'nin bir yuvası kafaya doğru yüklenmiş durumda. Makara besleme borusu tarafından kilitlendiği için döndürülemez. Önce filamenti geri çekin.',
    },
    amsBackup: {
      titleOn: 'AMS Filament Backup AÇIK. Devre dışı bırakmak için tıklayın.',
      titleOff: 'AMS Filament Backup KAPALI. Etkinleştirmek için tıklayın.',
      titleUnknown: 'Bu yazıcıda AMS Filament Backup durumu kullanılamıyor.',
      toastEnabled: 'AMS Filament Backup etkinleştirildi',
      toastDisabled: 'AMS Filament Backup devre dışı bırakıldı',
      modalTitle: 'AMS Filament Backup',
      modalHelp: 'Aktif slot tükendiğinde, yazıcı aynı ön ayar ve renkteki slotları bu sırayla dolaşır.',
      modalNoSlots: 'Yüklenmiş filament yok.',
      modalNoPairs: 'Yedek çifti yok — hiçbir slot çifti aynı ön ayar ve rengi paylaşmıyor.',
      extruderRightShort: 'S',
      extruderLeftShort: 'L',
      stateOn: 'Etkin',
      stateOff: 'Devre dışı',
      stateUnknown: 'Bu yazıcıda desteklenmiyor',
    },
    activeJobSlot: {
      title: 'Bu slot, aktif baskıdaki {{n}} numaralı filament',
      ariaLabel: 'Aktif baskı slotu {{n}}',
    },
    expectedSlot: {
      title: 'Yazıcı bu slotta filament bekliyor',
      ariaLabel: 'Beklenen filament slotu {{n}}',
      label: '{{ams}} · Slot {{slot}}',
      external: 'Harici makara',
    },
    // Filamentler bölümü
    filaments: 'Filamentler',
    externalSpool: {
      hide: 'Harici makarayı gizle',
      show: 'Harici makarayı göster',
    },
    // Kamera
    openCameraOverlay: 'Kamera bindirmesini aç',
    openCameraWindow: 'Kamerayı yeni pencerede aç',
    // Firmware
    firmwareUpdateAvailable: 'Firmware güncellemesi mevcut: {{current}} → {{latest}}',
    firmwareUpToDate: 'Firmware {{version}} — Güncel',
    firmwareUpdateButton: 'Güncelle',
    // Plaka algılama
    plateDetection: {
      noPermission: 'Yazıcıları güncellemek için izniniz yok',
      enabledClick: 'Plaka kontrolü etkin - Devre dışı bırakmak için tıklayın',
      disabledClick: 'Plaka kontrolü devre dışı - Etkinleştirmek için tıklayın',
      manageCalibration: 'Plaka algılama kalibrasyonunu yönet',
      calibrationRequired: 'Kalibrasyon Gerekli',
      calibrationInstructions: 'Lütfen baskı plakasının <strong>tamamen boş</strong> olduğundan emin olun, ardından Kalibre Et\'e tıklayın.',
      calibrationDescription: 'Kalibrasyon, boş plakanın referans görüntüsünü yakalar. Gelecekteki kontroller, nesneleri algılamak için bu referansa karşı karşılaştırılır.',
      calibrationTip: '<strong>İpucu:</strong> Farklı plakalar için 5 kalibrasyona kadar saklayabilirsiniz. Sistem, kontrol sırasında en iyi eşleşmeyi otomatik olarak kullanır.',
      plateEmpty: 'Plaka boş görünüyor',
      objectsDetected: 'Plakada nesneler algılandı',
      confidence: 'Güven',
      difference: 'Fark',
      analysisPreview: 'Analiz önizlemesi:',
      analysisLegend: 'Yeşil kutu = algılama alanı, Kırmızı kaplama = kalibrasyondan farklar',
      savedReferences: 'Kaydedilen Referanslar ({{count}}/{{max}})',
      deleteReference: 'Referansı sil',
      labelPlaceholder: 'Etiket...',
      clickToEdit: '{{label}} - Düzenlemek için tıklayın',
      clickToAddLabel: 'Etiket eklemek için tıklayın',
    },
    // Hız
    speed: {
      title: 'Baskı Hızı',
      silent: 'Sessiz (%50)',
      standard: 'Standart (%100)',
      sport: 'Spor (%124)',
      ludicrous: 'Çılgın (%166)',
    },
    airduct: {
      title: 'Hava Kanalı Modu',
      cooling: 'Soğutma',
      heating: 'Isıtma',
    },
    noSdCard: 'SD Yok',
    door: {
      open: 'Açık',
      closed: 'Kapalı',
    },
    // Fanlar
    fans: {
      partCooling: 'Parça Soğutma Fanı',
      auxiliary: 'Yardımcı Fan',
      leftAuxiliary: 'Sol Yardımcı Fan',
      exhaust: 'Egzoz',
      chamber: 'Hazne Fanı',
    },
    // HMS hataları
    clickToViewHmsErrors: 'HMS hatalarını görüntülemek için tıklayın',
    aiDetection: {
      safe: 'Güvenli',
      warning: 'Uyarı',
      failure: 'Başarısızlık',
      idle: 'Boşta',
      tooltip: 'AI Başarısızlık Algılama: {{status}} (puan {{score}}) - ayrıntılar için tıklayın',
      tooltipIdle: 'AI Başarısızlık Algılama etkin - izleme bir sonraki baskıyla başlar - ayrıntılar için tıklayın',
      modalTitle: 'AI Başarısızlık Algılama - {{name}}',
      currentStatus: 'Durum',
      score: 'Puan',
      framesAnalyzed: 'Analiz edilen kareler',
      idleHint: 'Şu anda izlenen bir baskı yok. İzleme bir sonraki baskıyla otomatik olarak başlar.',
      lastError: 'Son hata',
      openSettings: 'Ayarları aç',
    },
    estimatedCompletion: 'Tahmini tamamlanma süresi',
    plateNumber: 'Plaka {{number}}',
    slotOptions: 'Yuva seçenekleri',
    // AMS hover popup
    amsPopup: {
      friendlyName: 'AMS Adı',
      friendlyNamePlaceholder: 'örn. AMS Kolay Adı',
      serialNumber: 'Seri Numarası',
      firmwareVersion: 'Firmware',
      save: 'Kaydet',
      clear: 'Temizle',
      noEditPermission: "AMS birimlerini yeniden adlandırma izniniz yok",
    },
    // Firmware modali
    firmwareModal: {
      title: 'Firmware Güncellemesi',
      titleUpToDate: 'Firmware Bilgisi',
      currentVersion: 'Mevcut:',
      latestVersion: 'En son:',
      releaseNotes: 'Sürüm Notları',
      checkingPrereqs: 'Önkoşullar kontrol ediliyor...',
      sdCardReady: "SD kart hazır. Firmware yüklemek için aşağıya tıklayın.",
      uploadedSuccess: "Firmware SD karta yüklendi!",
      applyInstructions: 'Güncellemeyi yazıcınıza uygulamak için:',
      step1: 'Yazıcının dokunmatik ekranında <strong>Ayarlar</strong>\'a gidin',
      step2: '<strong>Firmware</strong>\'e gidin',
      step3: '<strong>SD karttan güncelle</strong>\'yi seçin',
      step4: 'Güncelleme 10-20 dakika sürer',
      done: 'Tamam',
      starting: 'Başlatılıyor...',
      uploadFirmware: 'Firmware Yükle',
      uploadFailed: 'Yükleme başlatılamadı: {{error}}',
      uploadedToast: 'Firmware yüklendi! Güncellemeyi yazıcı ekranından tetikleyin.',
      availableVersions: 'Kullanılabilir sürümler',
      usable: 'Kullanılabilir',
      unavailable: 'Kullanılamaz',
      installed: 'Yüklü',
      newerBadge: 'daha yeni',
      olderBadge: 'daha eski',
      currentBadge: 'mevcut',
    },
    accessCodePlaceholder: 'Mevcut olanı korumak için boş bırakın',
    // ROI editörü
    roi: {
      title: 'Algılama Alanı (ROI)',
      xStart: 'X Başlangıç',
      yStart: 'Y Başlangıç',
      width: 'Genişlik',
      height: 'Yükseklik',
      instruction: 'Baskı plakasına odaklanmak için algılama alanını ayarlayın. Önizlemedeki yeşil kutu mevcut alanı gösterir.',
    },
    developerModeWarning: 'Geliştirici LAN modu şunlarda etkin değil: {{names}}. Bazı özellikler çalışmayabilir.',
    howToEnable: 'Nasıl etkinleştirilir',
    incompatibleFile: 'Bu dosya {{slicedFor}} için dilimlendi, ancak bu yazıcı bir {{printerModel}}',
    dropNotPrintable: 'Yalnızca .gcode ve .gcode.3mf dosyaları yazdırılabilir',
    dropToPrint: 'Yazdırmak için bırakın',
    cannotPrint: 'Yazıcı meşgul',
  },

  // Arşivler sayfası
  archives: {
    title: 'Baskı Arşivleri',
    no3mfBanner: {
      title: 'Bazı son baskılar küçük resimlerle birlikte arşivlenemedi',
      body: 'Dilimleyici yazıcının SD kartına .gcode.3mf dosyasını bırakmadı, bu nedenle Bambuddy küçük resmi veya dilimleyici meta verilerini alamadı. Bu genellikle dilimleyicide (Bambu Studio / OrcaSlicer\'in Cihaz sekmesi) "Gönderilen dosyaları harici depolamada sakla" seçeneğinin kapalı olmasından kaynaklanır.',
      docsLink: 'Kurulum adımı 4\'ü görüntüle',
      docsLinkInternalStorage: 'Bu neden oluyor',
      titleInternalStorage: 'Bazı son baskılar yazıcının dahili depolamasında kaldı',
      bodyInternalStorage: 'Yazıcı dilimlenmiş dosyayı karta değil kendi dahili depolamasına yazdı, bu yüzden Bambuddy\'nin FTP üzerinden okuyacağı bir şey yoktu. H2 serisi ve P2S donanım yazılımı bunu yapar ve «Gönderilen dosyaları harici depolamada sakla» bunu değiştirmez. Bu baskılar adları ve süreleriyle yine arşivlenir, yalnızca küçük resim ve dilimleyici meta verileri olmadan.',
      titleNoExternalStorage: 'Bazı son baskılar arşivlenemedi — yazıcıda depolama yok',
      bodyNoExternalStorage: 'Yazıcı yuvasında kart veya bellek bildirmiyor, bu yüzden dilimlenmiş dosyanın ineceği bir yer ve Bambuddy\'nin okuyacağı bir şey yoktu. Bir tane takın, sonraki baskı eksiksiz arşivlenecek.',
      dismissLabel: 'Bu bildirimi kapat',
    },
    searchPlaceholder: 'Arşivlerde ara...',
    filterByPrinter: 'Yazıcıya göre filtrele',
    filterByStatus: 'Duruma göre filtrele',
    sortBy: 'Sıralama',
    sortNewest: 'Önce en yeni',
    sortOldest: 'Önce en eski',
    sortName: 'Ad',
    sortDuration: 'Süre',
    sortLargest: 'Önce en büyük',
    sortSmallest: 'Önce en küçük',
    sortSize: 'Boyut',
    noArchives: 'Arşiv bulunamadı',
    noArchivesSearch: 'Aramanızla eşleşen arşiv yok',
    originalPrintNotVisible: 'Orijinal baskı görünmüyor - filtreleri temizlemeyi deneyin',
    noArchivesYet: 'Henüz arşiv yok',
    prints: 'baskı',
    pagination: {
      showing: 'Gösterilen',
      to: '-',
      of: '/',
      show: 'Göster',
      page: 'Sayfa',
      all: 'Tümü',
    },
    loadingArchives: 'Arşivler yükleniyor...',
    releaseToUpload: 'Yüklemek için bırakın',
    showAll: 'Tümünü göster',
    showFavoritesOnly: 'Yalnızca favorileri göster',
    gridView: 'Izgara görünümü',
    listView: 'Liste görünümü',
    calendarView: 'Takvim görünümü',
    logView: 'Baskı Günlüğü',
    manageTags: 'Etiketleri Yönet',
    showFailedPrints: 'Başarısız baskıları göster',
    hideFailedPrints: 'Başarısız baskıları gizle',
    hideDuplicates: 'Tekrarları Gizle',
    viewOriginalPrint: 'Orijinal baskıyı görüntülemek için tıklayın (#{{id}})',
    printTime: 'Baskı Süresi',
    filamentUsed: 'Kullanılan Filament',
    cost: 'Maliyet',
    preview: 'Önizleme',
    deleteArchive: 'Arşivi Sil',
    deleteConfirm: 'Bu arşivi silmek istediğinizden emin misiniz?',
    favorite: 'Favori',
    unfavorite: 'Favorilerden kaldır',
    viewDetails: 'Detayları Görüntüle',
    status: {
      completed: 'Tamamlandı',
      failed: 'Başarısız',
      stopped: 'Durduruldu',
    },
    toast: {
      source3mfAttached: 'Kaynak 3MF eklendi: {{filename}}',
      failedUploadSource3mf: 'Kaynak 3MF yüklenemedi',
      source3mfRemoved: 'Kaynak 3MF kaldırıldı',
      failedRemoveSource3mf: 'Kaynak 3MF kaldırılamadı',
      f3dAttached: 'F3D eklendi: {{filename}}',
      failedUploadF3d: 'F3D yüklenemedi',
      f3dRemoved: 'F3D kaldırıldı',
      failedRemoveF3d: 'F3D kaldırılamadı',
      timelapseAttached: 'Zaman atlamalı video eklendi: {{filename}}',
      timelapseAlreadyAttached: 'Zaman atlamalı video zaten eklendi',
      noMatchingTimelapse: 'Eşleşen zaman atlamalı video bulunamadı',
      failedScanTimelapse: 'Zaman atlamalı video taranamadı',
      failedAttachTimelapse: 'Zaman atlamalı video eklenemedi',
      timelapseRemoved: 'Zaman atlamalı video kaldırıldı',
      failedRemoveTimelapse: 'Zaman atlamalı video kaldırılamadı',
      timelapseUploaded: 'Zaman atlamalı video yüklendi: {{filename}}',
      failedUploadTimelapse: 'Zaman atlamalı video yüklenemedi',
      archiveDeleted: 'Arşiv silindi',
      failedDeleteArchive: 'Arşiv silinemedi',
      addedToFavorites: 'Favorilere eklendi',
      removedFromFavorites: 'Favorilerden kaldırıldı',
      projectUpdated: 'Proje güncellendi',
      failedUpdateProject: 'Proje güncellenemedi',
      linkCopied: 'Bağlantı panoya kopyalandı',
      failedCopyLink: 'Bağlantı kopyalanamadı',
      photoDeleted: 'Fotoğraf silindi',
      failedDeletePhoto: 'Fotoğraf silinemedi',
      failedDeleteArchives: 'Arşivler silinemedi',
      failedUpdateFavorites: 'Favoriler güncellenemedi',
      exportDownloaded: 'Dışa aktarma indirildi',
      exportFailed: 'Dışa aktarma başarısız',
    },
    menu: {
      print: 'Yazdır',
      openInBambuStudio: 'Dilimleyicide Aç',
      slice: 'Dilimle',
      externalLink: 'Harici Bağlantı',
      viewOnMakerWorld: "MakerWorld'de Görüntüle",
      preview3d: '3B Önizleme',
      viewTimelapse: 'Zaman Atlamalı Videoyu Görüntüle',
      scanForTimelapse: 'Zaman Atlamalı Video Tara',
      uploadTimelapse: 'Zaman Atlamalı Video Yükle',
      removeTimelapse: 'Zaman Atlamalı Videoyu Kaldır',
      downloadSource3mf: 'Kaynak 3MF İndir',
      uploadSource3mf: 'Kaynak 3MF Yükle',
      replaceSource3mf: 'Kaynak 3MF Değiştir',
      removeSource3mf: 'Kaynak 3MF Kaldır',
      uploadF3d: 'F3D Yükle',
      replaceF3d: 'F3D Değiştir',
      downloadF3d: 'F3D İndir',
      removeF3d: 'F3D Kaldır',
      download: 'İndir',
      copyDownloadLink: 'İndirme Bağlantısını Kopyala',
      qrCode: 'QR Kod',
      viewPhotos: 'Fotoğrafları Görüntüle',
      viewPhotosCount: 'Fotoğrafları Görüntüle ({{count}})',
      projectPage: 'Proje Sayfası',
      addToFavorites: 'Favorilere Ekle',
      removeFromFavorites: 'Favorilerden Kaldır',
      edit: 'Düzenle',
      printLog: 'Baskı Günlüğü',
      goToProject: 'Projeye Git: {{name}}',
      addToProject: 'Projeye Ekle',
      removeFromProject: 'Projeden Kaldır',
      loading: 'Yükleniyor...',
      noProjectsAvailable: 'Kullanılabilir proje yok',
      searchProjects: 'Projelerde ara…',
      select: 'Seç',
      deselect: 'Seçimi Kaldır',
      delete: 'Sil',
    },
    permission: {
      noReprint: 'Bu arşivi yeniden yazdırma izniniz yok',
      noAddToQueue: 'Kuyruğa ekleme izniniz yok',
      noUpdateArchives: 'Arşivleri güncelleme izniniz yok',
      noUploadFiles: 'Dosya yükleme izniniz yok',
      noDownload: 'Arşivleri indirme izniniz yok',
      noCopyLink: 'İndirme bağlantılarını kopyalama izniniz yok',
      noDelete: 'Bu arşivi silme izniniz yok',
      noEdit: 'Bu girişi düzenleme izniniz yok',
      noCreate: 'Arşiv oluşturma izniniz yok',
    },
    platePicker: {
      title: 'Önizleme için plaka seçin',
      hint: 'Bu arşivde birden fazla plaka var. GCode görüntüleyicide açmak için birini seçin.',
      plateLabel: 'Plaka {{index}}',
      objectCount: '{{count}} nesne',
      objectCount_plural: '{{count}} nesne',
      noGcode: "Bu arşivin önizleme için dilimlenmiş G-kodu yok. Önce dilimlemek için Bambu Studio'da açın.",
    },
    card: {
      previousPlate: 'Önceki plaka',
      nextPlate: 'Sonraki plaka',
      plateNumber: 'Plaka {{index}}',
      moreOptions: 'Daha fazla seçenek için sağ tıklayın',
      addToFavorites: 'Favorilere ekle',
      removeFromFavorites: 'Favorilerden kaldır',
      cancelled: 'iptal edildi',
      failed: 'başarısız',
      duplicate: 'tekrar',
      duplicateTitle: 'Bu model daha önce yazdırıldı',
      openSource3mf: "Kaynak 3MF'yi Bambu Studio'da aç (daha fazla seçenek için sağ tıklayın)",
      downloadF3d: 'Fusion 360 tasarım dosyasını indir',
      viewTimelapse: 'Zaman atlamalı videoyu görüntüle',
      viewPhoto: '1 fotoğrafı görüntüle',
      viewPhotos: '{{count}} fotoğrafı görüntüle',
      openFolder: 'Klasörü aç: {{name}}',
      slicedFile: 'Dilimlenmiş dosya - yazdırmaya hazır',
      sourceFile: 'Yalnızca kaynak dosya - AMS eşlemesi mevcut değil',
      gcode: 'GCODE',
      source: 'KAYNAK',
      project: 'Proje: {{name}}',
      runsBadge: '{{count}} baskı',
      runsBadgeTitle: 'Toplam {{count}} baskı — {{successful}} başarılı, {{failed}} başarısız. Tam baskı günlüğünü görmek için tıklayın.',
      estimated: 'Tahmini: {{time}}',
      actual: 'Gerçek: {{time}}',
      accuracy: 'Doğruluk: %{{percent}}',
      filament: '{{weight}}g',
      layer: '{{count}} katman',
      layers: '{{count}} katman',
      object: '{{count}} nesne',
      objects: '{{count}} nesne',
      slicedFor: '{{model}} için dilimlendi',
      uploadedBy: 'Yükleyen',
      noPermissionReprint: 'Yeniden yazdırma izniniz yok',
      noFileForReprint: 'Kullanılabilir 3MF dosyası yok — baskı kaydedildiğinde dosya yazıcıdan indirilemedi',
      slicerAmsMapping: 'AMS eşlemesi kaydedildi ({{printer}})',
      slicerAmsMappingTooltip: 'Dilimleyicinin AMS yuva seçimi {{printer}} için kaydedildi. Yuva numaraları yalnızca o yazıcıda anlamlıdır; bu nedenle yeniden yazdırma bunları yalnızca yine {{printer}} hedeflendiğinde kullanır.',
      noPermissionEdit: 'Arşivleri düzenleme izniniz yok',
      noPermissionDelete: 'Arşivleri silme izniniz yok',
      openInBambuStudio: 'Dilimleyicide Aç',
      openInBambuStudioToSlice: 'Dilimlemek için Dilimleyicide Aç',
      slice: 'Dilimle',
      externalLink: 'Harici Bağlantı',
      makerWorld: 'MakerWorld: {{designer}}',
      viewProject: 'Projeyi görüntüle',
      noExternalLink: 'Harici bağlantı yok',
      preview3d: '3B Önizleme',
      download: 'İndir',
      edit: 'Düzenle',
      delete: 'Sil',
    },
    runLog: {
      title: 'Baskı Günlüğü',
      modalTitle: 'Baskı Günlüğü — {{name}}',
      modalTitleFallback: 'bu arşiv',
      empty: 'Bu arşiv için henüz baskı olayı kaydedilmedi.',
      col: {
        date: 'Tarih',
        status: 'Durum',
        duration: 'Süre',
        filament: 'Filament',
        cost: 'Maliyet',
      },
      status: {
        completed: 'Tamamlandı',
        failed: 'Başarısız',
        cancelled: 'İptal edildi',
        stopped: 'Durduruldu',
        skipped: 'Atlandı',
        printing: 'Yazdırılıyor',
      },
    },
    modal: {
      deleteArchive: 'Arşivi Sil',
      deleteConfirm: '"{{name}}" silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.',
      deleteButton: 'Sil',
      deletePurgeStats: 'Ayrıca bu baskıyı Hızlı İstatistiklerden de kaldır (filament, süre, maliyet, enerji)',
      deleteQueueItemsWarning: 'Bu arşive bağlı {{count}} kuyruk öğesi de kaldırılacak.',
      deleteBlockedByPrinting: 'Silinemiyor — {{count}} kuyruk öğesi şu anda yazdırılıyor. Önce yazdırmayı durdurun, ardından tekrar deneyin.',
      removeSource3mf: 'Kaynak 3MF Kaldır',
      removeSource3mfConfirm: '"{{name}}" dosyasından kaynak 3MF dosyasını kaldırmak istediğinizden emin misiniz? Bu, orijinal dilimleyici proje dosyasını silecek.',
      removeButton: 'Kaldır',
      removeF3d: 'F3D Kaldır',
      removeF3dConfirm: '"{{name}}" dosyasından Fusion 360 tasarım dosyasını kaldırmak istediğinizden emin misiniz?',
      removeTimelapse: 'Zaman Atlamalı Videoyu Kaldır',
      removeTimelapseConfirm: '"{{name}}" dosyasından zaman atlamalı videoyu kaldırmak istediğinizden emin misiniz?',
      timelapse: '{{name}} - Zaman Atlamalı Video',
      selectTimelapse: 'Zaman Atlamalı Video Seç',
      selectTimelapseDesc: 'Otomatik eşleşme bulunamadı. Bu baskı için zaman atlamalı videoyu seçin:',
      deleteArchives: 'Arşivleri Sil',
      deleteArchivesConfirm: '{{count}} arşivi silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.',
      deleteCount: '{{count}} Sil',
    },
    page: {
      title: 'Arşivler',
      printsCount: '{{total}} baskıdan {{filtered}} tanesi',
      dropFilesHere: '.3mf dosyalarını buraya bırakın',
      releaseToUpload: 'Yüklemek için bırakın',
      only3mfSupported: 'Yalnızca .3mf dosyaları desteklenir',
      close: 'Kapat',
      selected: '{{count}} seçildi',
      selectAll: 'Tümünü Seç',
      tags: 'Etiketler',
      project: 'Proje',
      favorite: 'Favori',
      delete: 'Sil',
      toggledFavorites: '{{count}} arşiv için favoriler değiştirildi',
      failedUpdateFavorites: 'Favoriler güncellenemedi',
      archivesDeleted: '{{count}} arşiv silindi',
      failedDeleteArchives: 'Arşivler silinemedi',
      photoDeleted: 'Fotoğraf silindi',
      failedDeletePhoto: 'Fotoğraf silinemedi',
    },
    list: {
      name: 'Ad',
      printer: 'Yazıcı',
      date: 'Tarih',
      size: 'Boyut',
      actions: 'İşlemler',
      hasTimelapse: 'Zaman atlamalı videosu var',
    },
    log: {
      date: 'Tarih',
      printName: 'Baskı Adı',
      printer: 'Yazıcı',
      user: 'Kullanıcı',
      status: 'Durum',
      duration: 'Süre',
      filament: 'Filament',
      filamentUsed: 'Kullanılan filament',
      cost: 'Maliyet',
      energy: 'Enerji',
      energyCost: 'Enerji maliyeti',
      completedAt: 'Bitti',
      columns: 'Sütunlar',
      sortBy: '{{column}} ölçütüne göre sırala',
      allPrinters: 'Tüm Yazıcılar',
      allUsers: 'Tüm Kullanıcılar',
      allStatuses: 'Tüm Durumlar',
      cancelled: 'İptal edildi',
      skipped: 'Atlandı',
      dateFrom: 'Başlangıç',
      dateTo: 'Bitiş',
      noEntries: 'Baskı günlüğü kaydı bulunamadı',
      showing: '{{total}} kayıttan {{count}} tanesi gösteriliyor',
      rowsPerPage: 'Satır',
      page: 'Sayfa',
      prev: 'Önceki',
      next: 'Sonraki',
      clearLog: 'Günlüğü Temizle',
      clearLogTitle: 'Baskı Günlüğünü Temizle',
      clearLogConfirm: 'Tüm baskı günlüğü kayıtları kalıcı olarak silinecek. Arşivler ve kuyruk öğeleri etkilenmeyecek. Bu işlem geri alınamaz. Emin misiniz?',
      clearLogButton: 'Hepsini Temizle',
      cleared: '{{count}} günlük kaydı temizlendi',
      clearFailed: 'Baskı günlüğü temizlenemedi',
      deleteEntryTitle: 'Baskı günlüğü girişini sil',
      deleteEntryConfirm: 'Bu giriş günlükten kaldırılacak ve filament, süre ve maliyet katkıları Hızlı İstatistikler\'den çıkarılacak. İlgili arşiv (varsa) etkilenmez. Bu işlem geri alınamaz.',
      entryDeleted: 'Baskı günlüğü girişi silindi',
      entryDeleteFailed: 'Baskı günlüğü girişi silinemedi',
      editEntryTitle: 'Baskı günlüğü girişini düzenle',
      editEntryDescription: 'Bu baskıyı sınıflandırın. Hata Analizi widget\'ı bu değerlere göre gruplandırır, böylece güncellemeler istatistiklere anında yansır.',
      entryUpdated: 'Baskı günlüğü girişi güncellendi',
      entryUpdateFailed: 'Baskı günlüğü girişi güncellenemedi',
      statuses: {
        completed: 'Tamamlandı',
        failed: 'Başarısız',
        stopped: 'Durduruldu',
        cancelled: 'İptal edildi',
        skipped: 'Atlandı',
      },
    },
  },

  // Sticky upload-progress toast (#1625 follow-up)
  dispatchToast: {
    untitled: 'Yazdırma işi',
    startingPrints: 'Yazdırmalar başlatılıyor',
    progressSummary: '{{complete}}/{{total}} tamamlandı • İşleniyor: {{processing}}',
    expandDetails: 'Gönderim ayrıntılarını genişlet',
    collapseDetails: 'Gönderim ayrıntılarını daralt',
    awaitingPrinter: 'Yazıcı bekleniyor…',
    status: {
      processing: 'İşleniyor',
      completed: 'Tamamlandı',
      failed: 'Başarısız',
    },
    failed: {
      generic: 'Gönderim başarısız',
      upload_failed: 'Yazıcıya yükleme başarısız',
      start_command_failed: 'Yazıcı başlatma komutunu reddetti',
    },
    dismiss: 'Kapat',
  },

  // Kuyruk sayfası
  // Pipeline Runs dashboard (#1425 PR C).
  pipelineRuns: {
    title: 'Pipeline çalıştırmaları',
    loading: 'Yükleniyor…',
    empty: 'Henüz pipeline çalıştırması yok.',
    filter: {
      pipeline: 'Pipeline',
      status: 'Durum',
      target: 'Hedef',
      all: 'Tümü',
      allPipelines: 'Tüm pipeline\'lar',
      allStatus: 'Tüm durumlar',
      allTargets: 'Tüm hedefler',
      clear: 'Filtreleri temizle',
      noMatches: 'Mevcut filtrelere uyan çalıştırma yok.',
    },
    totalCount_one: '{{n}} çalıştırma',
    totalCount_other: '{{n}} çalıştırma',
    copies: '{{n}} kopya',
    failedCount: '{{n}} başarısız',
    copyN: 'Kopya {{n}}',
    retryFailed: 'Başarısızları tekrar dene',
    retryOf: '#{{n}} yeniden denemesi',
    pagination: '{{total}} içinden {{start}}–{{end}}',
    toast: {
      cancelled: 'Çalıştırma iptal edildi',
      cancelFailed: 'İptal başarısız',
      retryStarted: 'Yeniden deneme başlatıldı',
      retryFailed: 'Yeniden deneme başarısız',
      cleared: '{{n}} çalıştırma temizlendi',
      clearFailed: 'Temizleme başarısız',
    },
    clearLog: 'Geçmişi temizle',
    clearConfirmTitle: 'Geçmiş temizlensin mi?',
    clearConfirmBody: 'Tamamlanan, başarısız olan, iptal edilen ve kısmen başarısız tüm pipeline çalıştırmaları silinsin mi? Devam eden çalıştırmalar korunur. Bu geri alınamaz.',
    clearConfirmAction: 'Temizle',
    jobStatus: {
      pending: 'beklemede',
      awaiting_printer: 'yazıcı bekleniyor',
      queued: 'kuyrukta',
      printing: 'yazdırılıyor',
      completed: 'tamamlandı',
      failed: 'başarısız',
      cancelled: 'iptal edildi',
    },
    cancelledByUser: 'Kullanıcı tarafından iptal edildi',
  },

  queue: {
    title: 'Baskı Kuyruğu',
    subtitle: 'Baskı işlerinizi zamanlayın ve yönetin',
    filamentShort: {
      rowBadge: 'Atanan makara için yetersiz filament',
      rowTooltip: 'Sevk planlayıcı bu öğeyi işaretledi. Yuva başına eksikliği görmek ve yine de yazdırıp yazdırmayacağınıza karar vermek için Oynat\'a tıklayın.',
      confirmTitle: 'Yetersiz filament',
      confirmIntro: 'Atanan makara en az bir yuvayı karşılayamıyor. Yine de yazdırılsın mı?',
      lineItem: 'Yuva {{slot}}: {{required}} g gerekli, {{remaining}} g kaldı',
      unknown: 'bilinmiyor',
      printAnyway: 'Yine de Yazdır',
    },
    slicerAmsMapping: {
      rowBadge: 'Bu yazıcı için kaydedilen AMS yuvaları',
      rowTooltip: 'Bu arşiv, dilimleyicinin seçtiği tam AMS yuvalarını bu öğenin hedeflediği yazıcı için saklar. O yazıcıda yeniden yazdırma, tür ve renge göre yeniden eşleştirmek yerine bu makaraları yeniden kullanabilir.',
    },
    // Baskı modali
    editQueueItem: 'Kuyruk Öğesini Düzenle',
    selectAllPlates: 'Tüm {{count}} Plakayı Seç',
    deselectAll: 'Seçimi Kaldır',
    printQueued: 'Baskı kuyruğa eklendi',
    printQueuedWillStartWhenIdle: 'Yazıcı boştayken başlayacak',
    itemsQueued: '{{count}} öğe kuyruğa eklendi',
    sending: 'Gönderiliyor...',
    sendingProgress: 'Gönderiliyor {{current}}/{{total}}...',
    adding: 'Ekleniyor...',
    addingProgress: 'Ekleniyor {{current}}/{{total}}...',
    savingProgress: 'Kaydediliyor {{current}}/{{total}}...',
    clearQueue: 'Kuyruğu Temizle',
    clearHistory: 'Geçmişi Temizle',
    emptyQueue: 'Kuyruk boş',
    position: 'Konum',
    scheduledTime: 'Zamanlanmış Süre',
    moveUp: 'Yukarı Taşı',
    moveDown: 'Aşağı Taşı',
    startNow: 'Şimdi Başlat',
    printingInProgress: 'Baskı devam ediyor...',
    viewArchive: 'Arşivi görüntüle',
    viewInFileManager: 'Dosya Yöneticisinde görüntüle',
    itemCount: '{{count}} öğe',
    itemCount_plural: '{{count}} öğe',
    dragToReorder: 'Yeniden sıralamak için sürükleyin (yalnızca ASAP)',
    reorderHint: 'Konum yalnızca ASAP öğelerini etkiler. Zamanlanmış öğeler belirlenen zamanlarında çalışır.',
    sjf: {
      label: 'SJF',
      tooltip: 'En Kısa İş İlk — planlayıcı daha kısa baskılara öncelik verir',
    },
    addedBy: '{{name}} tarafından eklendi',
    nextInQueue: 'Kuyrukta sıradaki',
    clearPlateSuccess: 'Plaka temizlendi — sonraki baskıya hazır',
    plateNumber: 'Plaka {{index}}',
    // Toplu / miktar
    quantity: 'Miktar',
    quantityHint: '{{count}} kuyruk öğesi oluşturur',
    plateQuantityLabel: '{{plate}} baskı sayısı',
    plateQuantityTotal_one: 'toplam {{count}} baskı',
    plateQuantityTotal_other: 'toplam {{count}} baskı',
    batchOrders: {
      title: 'Toplu siparişler',
      emptyTitle: 'Toplu sipariş yok',
      emptyDescription: 'Çok tablalı bir dosyayı ya da bir tablanın birden fazla kopyasını kuyruğa alın; sipariş ilerlemesiyle birlikte burada görünür.',
      filter: {
        active: 'Etkin',
        completed: 'Tamamlanan',
        cancelled: 'İptal edilen',
        all: 'Tümü',
      },
      status: {
        active: 'Etkin',
        completed: 'Tamamlandı',
        cancelled: 'İptal edildi',
      },
      noTargets: 'Yalnızca gruplama',
      noTargetsHint: 'Tabla başına hedef adetler gelmeden önce oluşturuldu; hedef yerine kuyruğa alınan baskıları izler.',
      dispatchRemaining: 'Kalan {{count}} baskıyı kuyruğa al',
      dispatchPlate: 'Kalanları kuyruğa al',
      dispatched: '{{name}} için kalan baskılar kuyruğa alındı',
      plateProgress: '{{target}} baskıdan {{completed}} tamam',
      remaining: '{{count}} baskı bekliyor',
      failed: '{{count}} başarısız',
      printing: '{{count}} yazdırılıyor',
      wholeFile: 'Dosyanın tamamı',
      due: 'Son tarih {{date}}',
      costSoFar: 'şu ana kadar {{amount}}',
      costRemaining: '({{amount}} kaldı)',
    },
    activeBatches: 'Aktif Yığınlar',
    batchProgress: '{{total}} öğeden {{completed}} tanesi tamamlandı',
    cancelBatch: 'Kalanları İptal Et',
    batchCancelled: 'Kalan yığın öğeleri iptal edildi',
    cancelBatchConfirmTitle: 'Yığını İptal Et',
    cancelBatchConfirmMessage: 'Bu yığındaki tüm bekleyen öğeler iptal edilsin mi?',
    batch: {
      defaultName: 'Yığın',
      label: '{{count}} öğe',
      label_plural: '{{count}} öğe',
      pendingCount: '{{count}} bekleyen',
      pendingCount_plural: '{{count}} bekleyen',
      expand: 'Yığını genişlet',
      collapse: 'Yığını daralt',
      groupAsBatch: 'Yığın olarak grupla…',
      groupAsBatchDescription: 'Seçilen {{count}} öğeyi tek bir daraltılabilir yığında birleştirin.',
      nameLabel: 'Yığın adı',
      namePlaceholder: 'örn. Cuma hediyeleri',
      create: 'Yığın oluştur',
      ungroup: 'Gruptan çıkar',
      ungroupConfirmTitle: 'Yığını gruptan çıkar?',
      ungroupConfirmMessage: 'Öğeler kuyrukta kalacak ancak artık birlikte gruplanmayacak.',
      dragGroup: 'Grubu sürükle',
    },
    tabs: {
      batches: 'Gruplar',
      queue: 'Kuyruk',
      history: 'Geçmiş',
      timeline: 'Zaman çizelgesi',
      pipelines: 'Pipeline\'lar',
    },
    layout: {
      flatList: 'Liste',
      byPrinter: 'Yazıcıya göre',
      groupByPrinter: 'Yazıcıya göre grupla',
    },
    history: {
      emptyTitle: 'Henüz geçmiş yok',
      emptyDescription: 'Tamamlanan, iptal edilen ve başarısız baskılar burada görünür.',
      showMore: 'Daha fazla göster',
      showingCount: '{{total}} öğeden {{shown}} tanesi gösteriliyor',
    },
    dragGhost: {
      multiCount: '{{count}} öğe',
      batch: '{{name}} ({{count}} kopya)',
      batch_plural: '{{name}} ({{count}} kopya)',
    },
    // Bölümler
    sections: {
      currentlyPrinting: 'Şu Anda Yazdırılan',
      queued: 'Kuyruktaki',
      history: 'Geçmiş',
    },
    // Durum
    status: {
      pending: 'Beklemede',
      waiting: 'Bekliyor',
      printing: 'Yazdırılıyor',
      paused: 'Duraklatıldı',
      completed: 'Tamamlandı',
      failed: 'Başarısız',
      skipped: 'Atlandı',
      cancelled: 'İptal edildi',
    },
    // Özet kartları
    summary: {
      printing: 'Yazdırılıyor',
      queued: 'Kuyrukta',
      totalTime: 'Toplam Kuyruk Süresi',
      totalWeight: 'Toplam Kuyruk Ağırlığı',
      history: 'Geçmiş',
    },
    // Filtreler
    filter: {
      allPrinters: 'Tüm Yazıcılar',
      unassigned: 'Atanmamış',
      allStatus: 'Tüm Durumlar',
      allLocations: 'Tüm Konumlar',
      any: 'Herhangi',
    },
    // Sıralama
    sort: {
      byPosition: 'Konuma Göre Sırala',
      byName: 'Ada Göre Sırala',
      byPrinter: 'Yazıcıya Göre Sırala',
      bySchedule: 'Zamana Göre Sırala',
      byDate: 'Tarihe Göre Sırala',
      ascendingOldest: 'Artan (önce en eski)',
      descendingNewest: 'Azalan (önce en yeni)',
    },
    // Rozetler
    badges: {
      staged: 'Hazırlandı',
      requiresPrevious: 'Önceki başarı gerekli',
      autoPowerOff: 'Otomatik kapanma',
      gcodeInjection: 'G-kod',
    },
    // Boş durum
    empty: {
      title: 'Zamanlanmış baskı yok',
      description: 'Bağlam menüsündeki "Zamanla" seçeneğini kullanarak Arşivler sayfasından bir baskı zamanlayın veya başlamak için dosyaları sürükleyip bırakın.',
    },
    // Zaman
    time: {
      etaIfStartedNow: 'Bu iş şimdi başlatılırsa tamamlanma saati',
      asap: 'ASAP',
      overdue: 'Gecikmiş',
      now: 'Şimdi',
      lessThanMinute: 'Bir dakikadan az',
      inMinutes: '{{count}} dk içinde',
      inHours: '{{count}} saat içinde',
    },
    // İşlemler
    actions: {
      startPrint: 'Baskıyı Başlat',
      stopPrint: 'Baskıyı Durdur',
      requeue: 'Yeniden Kuyrukla',
    },
    // Toplu düzenleme
    bulkEdit: {
      title: '{{count}} Öğeyi Düzenle',
      title_plural: '{{count}} Öğeyi Düzenle',
      description: 'Yalnızca değiştirilen ayarlar seçili öğelere uygulanacak.',
      printer: 'Yazıcı',
      noChange: '— Değişiklik yok —',
      queueOptions: 'Kuyruk Seçenekleri',
      staged: 'Hazırlandı (manuel başlatma)',
      autoPowerOff: 'Baskı sonrası otomatik kapanma',
      requirePrevious: 'Önceki başarı gerekli',
      printOptions: 'Baskı Seçenekleri',
      bedLevelling: 'Tabla seviyelendirme',
      flowCalibration: 'Akış kalibrasyonu',
      vibrationCalibration: 'Titreşim kalibrasyonu',
      layerInspection: 'İlk katman denetimi',
      timelapse: 'Zaman atlamalı video',
      useAms: "AMS Kullan",
      nozzleOffsetCali: 'Nozül ofset kalibrasyonu',
      applyChanges: 'Değişiklikleri Uygula',
      selectAll: 'Tümünü Seç',
      deselectAll: 'Seçimi Kaldır',
      selected: '{{count}} seçildi',
      editSelected: 'Seçilenleri Düzenle',
      cancelSelected: 'Seçilenleri İptal Et',
    },
    // Onaylar
    confirm: {
      cancelTitle: 'Zamanlanmış Baskıyı İptal Et',
      cancelMessage: '"{{name}}" iptal etmek istediğinizden emin misiniz?',
      stopTitle: 'Baskıyı Durdur',
      stopMessage: '"{{name}}" mevcut baskıyı durdurmak istediğinizden emin misiniz? Bu, yazıcıdaki baskı işini iptal edecek.',
      removeTitle: 'Geçmişten Kaldır',
      removeMessage: '"{{name}}" kuyruk geçmişinden kaldırmak istediğinizden emin misiniz?',
      clearHistoryTitle: 'Geçmişi Temizle',
      clearHistoryMessage: 'Geçmişten {{count}} öğenin tümünü kaldırmak istediğinizden emin misiniz?',
      cancelButton: 'Baskıyı İptal Et',
      stopButton: 'Baskıyı Durdur',
      thisPrint: 'bu baskı',
      thisItem: 'bu öğe',
    },
    // Toast mesajları
    toast: {
      cancelled: 'Kuyruk öğesi iptal edildi',
      cancelFailed: 'Öğe iptal edilemedi',
      removed: 'Kuyruk öğesi kaldırıldı',
      removeFailed: 'Öğe kaldırılamadı',
      stopped: 'Baskı durduruldu',
      stopFailed: 'Baskı durdurulamadı',
      released: 'Baskı kuyruğa bırakıldı',
      startFailed: 'Baskı başlatılamadı',
      reorderFailed: 'Kuyruk yeniden sıralanamadı',
      historyCleared: '{{count}} geçmiş öğesi temizlendi',
      clearHistoryFailed: 'Geçmiş temizlenemedi',
      updateFailed: 'Öğeler güncellenemedi',
      bulkCancelled: '{{count}} öğe iptal edildi',
      bulkCancelFailed: 'Öğeler iptal edilemedi',
      batchCreated: '"{{name}}" yığını oluşturuldu',
      batchCreateFailed: 'Yığın oluşturma başarısız',
      batchUngrouped: '{{count}} öğe gruptan çıkarıldı',
      batchUngroupFailed: 'Yığını gruptan çıkarma başarısız',
      resumedAfterFailure: 'Kuyruk devam ettirildi — {{restored}} iş bekleyene geri alındı',
      resumeAfterFailureFailed: 'Kuyruk devam ettirilemedi',
    },
    resumeAfterFailure: {
      banner: '{{printer}} önceki bir baskı hatası nedeniyle engellendi — {{count}} iş atlandı',
      bannerHint: 'Yazıcı sorununu çözün, ardından atlanan işleri geri yüklemek ve engellemeyi kaldırmak için devam ettirin.',
      button: 'Hatadan sonra devam et',
      confirmTitle: 'Hatadan sonra kuyruğa devam edilsin mi?',
      confirmMessage: '{{printer}} üzerindeki {{count}} atlanan işi bekleyene geri yükleyin ve önceki baskı engelini kaldırın. Devam etmeden önce yazıcının hazır olduğundan emin olun.',
    },
    // Zaman çizelgesi görünümü
    timeline: {
      listView: 'Liste',
      timelineView: 'Zaman Çizelgesi',
      unassigned: 'Atanmamış',
      noData: 'Bu gün için zamanlanmış baskı yok',
      nothingCommitted: 'Bu pencerede onaylanmış programlar yok. Hazırlanmış öğeler, beklemedeki öğeler ve boştaki yazıcılardaki ASAP işleri gösterilmez — burada görmek için zamanlanmış bir saat belirleyin veya hazırlanmış bir öğeyi serbest bırakın.',
      allDoneBy: 'Tüm baskıların {{time}}\'e kadar bitmesi tahmin ediliyor',
      staged: 'Hazırlandı',
      filterAll: 'Tümünü Göster',
      filterPrinting: 'Yazdırılıyor',
      filterQueued: 'Kuyrukta',
      time: {
        anyMoment: 'her an',
        minutesLeft: '{{minutes}}dk kaldı',
        hoursLeft: '{{hours}}sa kaldı',
        hoursMinutesLeft: '{{hours}}sa {{minutes}}dk kaldı',
      },
      day: {
        previous: 'Önceki gün',
        next: 'Sonraki gün',
        today: 'Bugün',
      },
      window: {
        back12h: '12 saat geri',
        forward12h: '12 saat ileri',
        now: 'Şimdi',
      },
      printerColumnHeader: 'Yazıcı',
    },
    // İzinler
    permissions: {
      noStopPrint: 'Baskıları durdurma izniniz yok',
      noStartPrint: 'Baskıları başlatma izniniz yok',
      noEdit: 'Bu kuyruk öğesini düzenleme izniniz yok',
      noCancel: 'Bu kuyruk öğesini iptal etme izniniz yok',
      noRequeue: 'Öğeleri yeniden kuyruklama izniniz yok',
      noRemove: 'Bu kuyruk öğesini kaldırma izniniz yok',
      noClearHistory: 'Tüm geçmişi temizleme izniniz yok',
      noEditItems: 'Kuyruk öğelerini düzenleme izniniz yok',
      noCancelItems: 'Kuyruk öğelerini iptal etme izniniz yok',
    },
  },


  // İstatistikler sayfası
  stats: {
    title: 'İstatistikler',
    subtitle: 'Yeniden düzenlemek için widget\'ları sürükleyin. Gizlemek için göz simgesine tıklayın.',
    overview: 'Genel Bakış',
    totalPrints: 'Toplam Baskı',
    successRate: 'Başarı Oranı',
    totalPrintTime: 'Toplam Baskı Süresi',
    printTime: 'Baskı Süresi',
    totalFilament: 'Toplam Kullanılan Filament',
    filamentUsed: 'Kullanılan Filament',
    filamentCost: 'Filament Maliyeti',
    totalCost: 'Toplam Maliyet',
    energyUsed: 'Kullanılan Enerji',
    energyCost: 'Enerji Maliyeti',
    energyWarmingUpTooltip: 'Enerji takibi hâlâ saatlik anlık görüntüler topluyor. Tarih aralığı toplamları, seçilen aralıktan önce en az bir anlık görüntü olduğunda doğru hâle gelir. Erken değerler eksik sayabilir.',
    averagePrintTime: 'Ortalama Baskı Süresi',
    printsPerDay: 'Günlük Baskı',
    byPrinter: 'Yazıcıya Göre',
    printsByPrinter: 'Yazıcıya Göre Baskılar',
    byMaterial: 'Malzemeye Göre',
    byMonth: 'Aya Göre',
    last7Days: 'Son 7 Gün',
    last30Days: 'Son 30 Gün',
    last90Days: 'Son 90 Gün',
    allTime: 'Tüm Zamanlar',
    // Widget'lar
    quickStats: 'Hızlı İstatistikler',
    printActivity: 'Baskı Etkinliği',
    filamentTypes: 'Filament Türleri',
    filamentTrends: 'Filament Trendleri',
    failureAnalysis: 'Başarısızlık Analizi',
    timeAccuracy: 'Süre Doğruluğu',
    successful: 'Başarılı:',
    failed: 'Başarısız:',
    cancelled: 'İptal edildi:',
    perfectEstimate: '%100 = mükemmel tahmin',
    noTimeAccuracyData: 'Henüz süre doğruluğu verisi yok',
    noFilamentData: 'Filament verisi mevcut değil',
    noPrinterData: 'Yazıcı verisi mevcut değil',
    noPrintData: 'Baskı verisi mevcut değil',
    noPrintDataLast30Days: 'Son 30 günde baskı verisi yok',
    failureReasons: 'Başarısızlık Nedenleri',
    topFailureReasons: 'En Sık Başarısızlık Nedenleri',
    failedPrintsCount: '{{total}} baskının {{failed}} tanesi başarısız',
    lastWeekRate: 'Geçen hafta: %{{rate}}',
    // İşlemler
    resetLayout: 'Düzeni Sıfırla',
    recalculateCosts: 'Maliyetleri Yeniden Hesapla',
    recalculateCostsHint: 'Mevcut filament fiyatlarını kullanarak tüm arşiv maliyetlerini yeniden hesapla',
    exportStats: 'İstatistikleri Dışa Aktar',
    exportAsCsv: 'CSV Olarak Dışa Aktar',
    exportAsExcel: 'Excel Olarak Dışa Aktar',
    hiddenCount: '{{count}} Gizli',
    // Toast
    exportDownloaded: 'Dışa aktarma indirildi',
    exportFailed: 'Dışa aktarma başarısız',
    layoutReset: 'Düzen sıfırlandı',
    recalculatedCosts: '{{count}} arşiv için maliyetler yeniden hesaplandı',
    recalculateFailed: 'Maliyetler yeniden hesaplanamadı',
    // Yükleniyor
    loadingStats: 'İstatistikler yükleniyor...',
    // İzinler
    noPermissionResetLayout: 'Düzeni sıfırlama izniniz yok',
    noPermissionRecalculate: 'Maliyetleri yeniden hesaplama izniniz yok',
    noPrintDataInRange: 'Seçili aralıkta baskı verisi yok',
    periodFilament: 'Dönem Filamenti',
    periodCost: 'Dönem Maliyeti',
    avgPerPrint: 'Baskı Başına Ort.',
    usageOverTime: 'Zaman İçinde Kullanım',
    energyOverTime: 'Zaman İçinde Enerji',
    filamentByWeight: 'Ağırlık',
    printDuration: 'Baskı Süresi',
    printerUtilization: 'Yazıcı Kullanımı',
    filamentSuccess: 'Malzemeye Göre Başarı',
    printHabits: 'Baskı Alışkanlıkları',
    printTimeOfDay: 'Günün Baskı Saati',
    colorDistribution: 'Renk Dağılımı',
    noColorData: 'Renk verisi mevcut değil',
    records: 'Kayıtlar',
    longestPrint: 'En Uzun Baskı',
    heaviestPrint: 'En Ağır Baskı',
    mostExpensivePrint: 'En Pahalı',
    busiestDay: 'En Yoğun Gün',
    successStreak: 'Başarı Serisi',
    streakPrint: 'ardışık baskı',
    streakPrints: '{{count}} ardışık baskı',
    printerStats: 'Yazıcı İstatistikleri',
    hours: 'saat',
    avgPrints: 'Ort. baskı',
    noArchiveData: 'Baskı verisi mevcut değil',
    filamentByTime: 'Süre',
    avgWeight: 'Ort. ağırlık',
    avgTime: 'Ort. süre',
    filamentByPrints: 'Baskılar',
    timeframe: {
      'today': 'Bugün',
      'this-week': 'Bu Hafta',
      'this-month': 'Bu Ay',
      'last-7': 'Son 7 Gün',
      'last-30': 'Son 30 Gün',
      'last-90': 'Son 90 Gün',
      'this-year': 'Bu Yıl',
      'all-time': 'Tüm Zamanlar',
      'custom': 'Özel Aralık',
      from: 'Başlangıç',
      to: 'Bitiş',
    },
    // Kullanıcı filtresi
    allUsers: 'Tüm Kullanıcılar',
    noUser: 'Kullanıcı Yok (Sistem)',
    filterByUser: 'Kullanıcıya Göre Filtrele',
  },

  // Bakım sayfası
  maintenance: {
    title: 'Bakım',
    overview: 'Genel Bakış',
    allOk: 'Tüm bakım güncel',
    dueCount: '{{count}} öğe bekliyor',
    dueCount_plural: '{{count}} öğe bekliyor',
    warningCount: '{{count}} uyarı',
    warningCount_plural: '{{count}} uyarı',
    totalPrintTime: 'Toplam Baskı Süresi',
    nextMaintenance: 'Sonraki Bakım',
    nothingDue: 'Bekleyen yok',
    tasks: 'Görevler',
    lastPerformed: 'Son yapılan',
    interval: 'Aralık',
    hoursRemaining: '{{hours}}sa kaldı',
    hoursOverdue: '{{hours}}sa gecikmiş',
    markDone: 'Tamamlandı Olarak İşaretle',
    performMaintenance: 'Bakım Gerçekleştir',
    history: 'Geçmiş',
    noHistory: 'Bakım geçmişi yok',
    editPrintHours: 'Baskı Saatlerini Düzenle',
    currentHours: 'Mevcut Saat',
    // Sekmeler
    statusTab: 'Durum',
    settingsTab: 'Ayarlar',
    // Durum
    overdueCount: '{{count}} gecikmiş',
    dueSoonCount: '{{count}} yakında',
    dueSoon: 'Yakında',
    allGood: 'Her şey iyi',
    overdueBy: '{{duration}} gecikmiş',
    dueIn: '{{duration}} içinde',
    timeLeft: '{{duration}} kaldı',
    // Süre formatları
    day: '1 gün',
    days: '{{count}} gün',
    week: '1 hafta',
    weeks: '{{count}} hafta',
    month: '1 ay',
    months: '{{count}} ay',
    year: '1 yıl',
    // Ayarlar
    maintenanceTypes: 'Bakım Türleri',
    maintenanceTypesDescription: 'Sistem türleri ve özel bakım görevleriniz',
    addCustomType: 'Özel Tür Ekle',
    restoreDefaults: 'Varsayılan Görevleri Geri Yükle',
    intervalType: 'Aralık Türü',
    intervalValue: 'Aralık ({{type}})',
    icon: 'Simge',
    documentationLink: 'Dokümantasyon Bağlantısı (isteğe bağlı)',
    assignToPrinters: 'Yazıcılara Ata',
    selectAtLeastOnePrinter: 'En az bir yazıcı seçin',
    addType: 'Tür Ekle',
    custom: 'Özel',
    printHours: 'Baskı Saatleri',
    calendarDays: 'Takvim Günleri',
    exampleName: 'örn., HEPA Filtresini Değiştir',
    viewDocumentation: 'Dokümantasyonu görüntüle',
    timeBasedInterval: 'Zaman tabanlı aralık',
    // Aralık geçersiz kılma
    intervalOverrides: 'Aralık Geçersiz Kılmaları',
    intervalOverridesDescription: 'Belirli yazıcılar için aralıkları özelleştir',
    // Yazıcı ataması
    assignedToPrinters: 'Atanan yazıcılar:',
    noPrintersAssigned: 'Atanan yazıcı yok',
    addPrinterShort: 'Ekle:',
    printersAssignedClick: '{{count}} yazıcı atandı - yönetmek için tıklayın',
    removeFromPrinter: 'Bu yazıcıdan kaldır',
    // Türler
    types: {
      lubricateCarbonRods: 'Karbon Çubukları Yağla',
      lubricateRails: 'Lineer Rayları Yağla',
      cleanNozzle: 'Nozulu/Hotend Temizle',
      checkBelts: 'Kayış Gerginliğini Kontrol Et',
      cleanBuildPlate: 'Baskı Plakasını Temizle',
      checkExtruder: 'Ekstrüder Dişlilerini Kontrol Et',
      checkCooling: 'Soğutma Fanlarını Kontrol Et',
      generalInspection: 'Genel Denetim',
      cleanCarbonRods: 'Karbon Çubukları Temizle',
      lubricateSteelRods: 'Çelik Çubukları Yağla',
      cleanSteelRods: 'Çelik Çubukları Temizle',
      cleanLinearRails: 'Lineer Rayları Temizle',
      checkPtfeTube: 'PTFE Tüpünü Kontrol Et',
      replaceHepaFilter: 'HEPA Filtresini Değiştir',
      replaceCarbonFilter: 'Karbon Filtresini Değiştir',
      lubricateLeftNozzleRail: 'Sol Nozul Rayını Yağla',
    },
    // Toast
    maintenanceComplete: 'Bakım tamamlandı olarak işaretlendi',
    typeUpdated: 'Bakım türü güncellendi',
    typeDeleted: 'Bakım türü silindi',
    defaultsRestored: '{{count}} varsayılan görev geri yüklendi',
    printHoursUpdated: 'Baskı saatleri güncellendi',
    printerAssigned: 'Yazıcı atandı',
    printerRemoved: 'Yazıcı kaldırıldı',
    // Onay
    deleteTypeConfirm: '"{{name}}" silinsin mi?',
    deleteSystemTypeTitle: 'Varsayılan bakım görevi silinsin mi?',
    deleteSystemTypeMessage: '"{{name}}" varsayılan bakım görevini silmek istediğinizden emin misiniz?',
    // İzinler
    noPermissionUpdate: 'Bakım öğelerini güncelleme izniniz yok',
    noPermissionPerform: 'Bakım gerçekleştirme izniniz yok',
    noPermissionEditTypes: 'Bakım türlerini düzenleme izniniz yok',
    noPermissionDeleteTypes: 'Bakım türlerini silme izniniz yok',
    noPermissionEditHours: 'Baskı saatlerini düzenleme izniniz yok',
    noPermissionRemovePrinter: 'Yazıcı atamalarını kaldırma izniniz yok',
    noPermissionAssignPrinter: 'Yazıcı atama izniniz yok',
    noPermissionEditIntervals: 'Aralıkları düzenleme izniniz yok',
    // Yapılandırma bağlantısı
    configureSettings: 'Bakım türlerini ve aralıklarını yapılandır',
  },

  // Ayarlar sayfası
  settings: {
    sliceEngine: 'Dilimleme motoru',
    sliceEngineSidecar: 'Sunucu sidecar',
    sliceEngineSidecarHint: 'Dilimleme sunucuda, dilimleyici sidecar konteynerinde çalışır.',
    sliceEngineBrowser: 'Tarayıcıda',
    sliceEngineBrowserHint: 'Dilimleme sunucu olmadan bu cihazda çalışır.',
    title: 'Ayarlar',
    general: 'Genel',
    // Sekme adları
    tabs: {
      general: 'Genel',
      smartPlugs: 'Akıllı Prizler',
      notifications: 'Bildirimler',
      queue: 'İş Akışı',
      queueDispatch: 'Kuyruk ve Sevkıyat',
      queuePipelines: 'Pipeline\'lar',
      filament: 'Filament',
      network: 'Ağ',
      apiKeys: 'API Anahtarları',
      virtualPrinter: 'Sanal Yazıcı',
      spoolbuddy: 'SpoolBuddy',
      failureDetection: 'Başarısızlık Algılama',
      users: 'Kimlik Doğrulama',
      backup: 'Yedekleme',
      emailAuth: 'E-posta Kimlik Doğrulama',
      ldap: 'LDAP',
      twoFa: 'İki Faktörlü Kimlik Doğrulama',
      oidc: 'SSO / OIDC',
      security: 'Güvenlik',
    },
    spoolbuddy: {
      infoTitle: 'SpoolBuddy cihazları',
      infoBody: 'SpoolBuddy kioskları heartbeat üzerinden otomatik olarak kayıt olur. Artık kullanılmıyorsa veya bir daemon çökmesi nedeniyle eski bir kopya kaldıysa bir cihazı buradan kayıttan çıkarın.',
      duplicatesTitle: '{{count}} cihaz kayıtlı',
      duplicatesBody: 'Yalnızca ilk kayıtlı cihaz kiosk arayüzü tarafından kullanılır. Bunlardan biri çökme sonucu kalmış eski bir kopya ise kayıttan çıkarın — çevrimiçi bir cihaz sonraki heartbeat\'inde kendini yeniden kaydedecek.',
      empty: 'Henüz kayıtlı SpoolBuddy cihazı yok.',
      online: 'Çevrimiçi',
      offline: 'Çevrimdışı',
      unregister: 'Kayıttan Çıkar',
      unregisterSuccess: 'Cihaz kayıttan çıkarıldı',
      unregisterError: 'Cihaz kayıttan çıkarılamadı',
      confirmTitle: 'SpoolBuddy cihazı kayıttan çıkarılsın mı?',
      confirmBody: 'Bu, "{{hostname}}" ({{deviceId}}) cihazını veritabanından kaldıracak. Cihaz çevrimiçiyse, sonraki heartbeat\'inde kendini yeniden kaydedecek.',
      ipAddress: 'IP adresi',
      firmware: 'Firmware',
      lastSeen: 'Son görülme',
      daemonUptime: 'Daemon çalışma süresi',
      systemUptime: 'Sistem çalışma süresi',
      never: 'asla',
      nfc: 'NFC',
      scale: 'Tartı',
      cpuTemp: 'CPU sıcaklığı',
      cpuLoad: 'CPU yükü',
      memory: 'Bellek',
      disk: 'Disk',
      // Cihaz işlemleri
      update: 'Güncelle',
      updateConfirmTitle: 'Spoolbuddy daemon güncellensin mi?',
      updateConfirmBody: '"{{hostname}}" cihazında yazılım güncellemesi tetiklensin mi? Güncelleme uygulandığında daemon yeniden başlayacak.',
      restartBrowser: 'Tarayıcıyı Yeniden Başlat',
      restartBrowserConfirmTitle: 'Kiosk tarayıcısı yeniden başlatılsın mı?',
      restartBrowserConfirmBody: '"{{hostname}}" cihazındaki kiosk tarayıcısı yeniden başlatılsın mı? Ekran kısa bir süre kararacak.',
      restartDaemon: 'Daemon\'u Yeniden Başlat',
      restartDaemonConfirmTitle: 'Spoolbuddy daemon yeniden başlatılsın mı?',
      restartDaemonConfirmBody: '"{{hostname}}" üzerindeki Spoolbuddy daemon yeniden başlatılsın mı? Cihaz birkaç saniye çevrimdışı olacak.',
      reboot: 'Yeniden Başlat',
      rebootConfirmTitle: 'Cihaz yeniden başlatılsın mı?',
      rebootConfirmBody: '"{{hostname}}" yeniden başlatılsın mı? Cihaz yaklaşık bir dakika çevrimdışı olacak.',
      shutdown: 'Kapat',
      shutdownConfirmTitle: 'Cihaz kapatılsın mı?',
      shutdownConfirmBody: '"{{hostname}}" kapatılsın mı? Tekrar açmak için fiziksel erişime ihtiyacınız olacak.',
      commandConfirm: 'Onayla',
      commandQueued: 'Komut kuyruğa alındı',
      commandError: 'Komut gönderilemedi',
    },
    // LDAP ayarları
    ldap: {
      title: 'LDAP Kimlik Doğrulama',
      enabledDesc: 'LDAP kimlik doğrulama etkin',
      disabledDesc: 'LDAP kimlik doğrulama devre dışı',
      disabledHint: 'Aşağıdaki LDAP ayarlarını yapılandırın ve kaydedin, ardından etkinleştirin.',
      enabled: 'LDAP kimlik doğrulama etkinleştirildi',
      disabled: 'LDAP kimlik doğrulama devre dışı bırakıldı',
      feature1: 'Kullanıcılar LDAP kimlik bilgileriyle giriş yapabilir',
      feature2: 'Yerel yönetici hesabı yedek olarak kalır',
      feature3: 'LDAP grupları giriş sırasında BamBuddy gruplarına eşlenir',
      serverConfig: 'LDAP Sunucu Yapılandırması',
      serverUrl: 'Sunucu URL',
      serverUrlHint: 'SSL için ldaps:// veya StartTLS ile ldap:// kullanın',
      security: 'Güvenlik',
      securityHint: 'StartTLS düz bir bağlantıyı TLS\'ye yükseltir. LDAPS başlangıçtan itibaren TLS kullanır.',
      bindDn: 'Bind DN (Servis Hesabı)',
      bindPassword: 'Bind Parolası',
      searchBase: 'Arama Tabanı DN',
      userFilter: 'Kullanıcı Arama Filtresi',
      userFilterHint: '{username} giriş kullanıcı adıyla değiştirilir. OpenLDAP için (uid={username}) kullanın.',
      advanced: 'Gelişmiş',
      autoProvision: 'Kullanıcıları otomatik tedarik et',
      autoProvisionHint: 'İlk LDAP girişinde otomatik olarak BamBuddy hesabı oluştur',
      defaultGroup: 'Varsayılan grup',
      defaultGroupNone: '— Hiçbiri (yedek yok) —',
      defaultGroupHint: 'Bir LDAP kullanıcısı kimlik doğruladığında ancak eşlenmiş herhangi bir LDAP grubunda listelenmediğinde atanan yedek grup. Eşlenmemiş kullanıcıları izinsiz bırakmak için boş bırakın.',
      groupMapping: 'Grup Eşleme (JSON)',
      groupMappingHint: 'LDAP grup DN\'lerini BamBuddy gruplarına eşle. Kullanılabilir gruplar: ',
      testConnection: 'Bağlantıyı Test Et',
      settingsSaved: 'LDAP ayarları kaydedildi',
      errors: {
        serverRequired: 'LDAP sunucu URL gerekli',
        searchBaseRequired: 'Arama tabanı DN gerekli',
        enableAuthFirst: 'Önce kimlik doğrulamayı etkinleştirin',
        configureLdapFirst: 'Önce LDAP ayarlarını kaydedin',
      },
    },
    // E-posta ayarları
    email: {
      smtpSettings: 'SMTP Yapılandırması',
      smtpHost: 'SMTP Sunucusu',
      smtpPort: 'SMTP Portu',
      security: 'Güvenlik',
      authentication: 'Kimlik Doğrulama',
      username: 'Kullanıcı Adı',
      password: 'Parola',
      fromEmail: 'Gönderen E-posta',
      fromName: 'Gönderen Adı',
      testConnection: 'SMTP Bağlantısını Test Et',
      testRecipient: 'Test Alıcı E-postası',
      sendTest: 'Test E-postası Gönder',
      sending: 'Gönderiliyor...',
      save: 'Ayarları Kaydet',
      saving: 'Kaydediliyor...',
      advancedAuth: 'Gelişmiş Kimlik Doğrulama',
      advancedAuthEnabled: 'Gelişmiş Kimlik Doğrulama etkin',
      advancedAuthEnabledDesc: 'E-posta tabanlı kullanıcı yönetimi özellikleri aktif. Yeni kullanıcılar e-posta ile otomatik oluşturulan parolalar alacak ve kullanıcılar parola sıfırlama özelliğiyle parolalarını sıfırlayabilecek.',
      advancedAuthDisabled: 'Gelişmiş Kimlik Doğrulama devre dışı',
      advancedAuthDisabledDesc: 'Kullanıcı yönetimi için e-posta tabanlı özellikleri etkinleştirmek için gelişmiş kimlik doğrulamayı etkinleştirin.',
      enable: 'Etkinleştir',
      disable: 'Devre dışı bırak',
      feature1: 'Parolalar otomatik oluşturulur ve yeni kullanıcılara e-posta ile gönderilir',
      feature2: 'Kullanıcılar kullanıcı adı veya e-posta ile giriş yapabilir',
      feature3: 'Parola unuttum özelliği kullanılabilir',
      feature4: 'Yöneticiler kullanıcı parolalarını e-posta ile sıfırlayabilir',
      // Hata mesajları
      errors: {
        requiredFields: 'Lütfen tüm zorunlu alanları doldurun',
        usernameRequired: 'Kimlik doğrulama etkinken kullanıcı adı zorunludur',
        enterTestEmail: 'Lütfen test e-posta adresi girin',
        smtpServerAndEmail: 'Test etmeden önce lütfen SMTP Sunucusu ve Gönderen E-posta alanlarını doldurun',
        usernamePasswordRequired: 'Kimlik doğrulama etkinken Kullanıcı Adı ve Parola zorunludur',
        configureSmtpFirst: 'Lütfen önce SMTP ayarlarını yapılandırın ve test edin',
        enableAuthFirst: 'E-posta tabanlı özellikleri kullanmak için lütfen önce kimlik doğrulamayı etkinleştirin.',
      },
      // Başarı mesajları
      success: {
        settingsSaved: 'SMTP ayarları başarıyla kaydedildi',
      },
      // Güvenlik seçenekleri
      securityOptions: {
        starttls: 'STARTTLS (Port 587)',
        ssl: 'SSL/TLS (Port 465)',
        none: 'Hiçbiri (Port 25)',
      },
      // Kimlik doğrulama seçenekleri
      authOptions: {
        enabled: 'Etkin',
        disabled: 'Devre dışı',
      },
    },
    appearance: 'Görünüm',
    notifications: 'Bildirimler',
    smartPlugs: 'Akıllı Prizler',
    spoolman: 'Spoolman',
    updates: 'Güncellemeler',
    language: 'Dil',
    languageDescription: 'Tercih ettiğiniz dili seçin',
    theme: 'Tema',
    themeLight: 'Açık',
    themeDark: 'Koyu',
    themeSystem: 'Sistem',
    defaultView: 'Varsayılan Görünüm',
    defaultViewDescription: 'Uygulamayı açarken gösterilecek sayfa',
    checkForUpdates: 'Güncellemeleri Kontrol Et',
    autoUpdate: 'Otomatik Güncelleme',
    currentVersion: 'Mevcut Sürüm',
    latestVersion: 'En Son Sürüm',
    upToDate: 'Güncelsiniz',
    updateAvailable: 'Güncelleme mevcut',
    // Bildirimler
    notificationLanguage: 'Bildirim Dili',
    notificationLanguageDescription: 'Push bildirimleri için dil',
    bedCooledThreshold: 'Tabla Soğuma Eşiği',
    bedCooledThresholdDescription: 'Bir baskıdan sonra tablanın soğumuş kabul edildiği sıcaklık',
    userNotificationsEnabled: 'Kullanıcı Bildirimleri',
    userNotificationsEnabledDescription: 'Baskı işi olayları için kullanıcı bildirim menüsünü ve e-posta bildirimlerini etkinleştir. Gelişmiş Kimlik Doğrulama gerektirir.',
    userNotificationsDisabledHint: 'Kullanıcı bildirimlerini kullanmak için Gelişmiş Kimlik Doğrulamayı etkinleştirin.',
    notificationProviders: 'Bildirim Sağlayıcıları',
    addProvider: 'Sağlayıcı Ekle',
    editProvider: 'Sağlayıcıyı Düzenle',
    providerType: 'Sağlayıcı Türü',
    testNotification: 'Test Bildirimi',
    testSuccess: 'Test bildirimi başarıyla gönderildi',
    testFailed: 'Test bildirimi gönderilemedi',
    quietHours: 'Sessiz Saatler',
    quietHoursDescription: 'Bu saatler arasında rahatsız etme',
    quietHoursStart: 'Başlangıç',
    quietHoursEnd: 'Bitiş',
    events: {
      title: 'Bildirim Olayları',
      printStart: 'Baskı Başladı',
      printComplete: 'Baskı Tamamlandı',
      printFailed: 'Baskı Başarısız',
      printStopped: 'Baskı Durduruldu',
      printProgress: 'İlerleme Kilometre Taşları',
      printProgressDescription: '%25, %50, %75\'te bildir',
      printerOffline: 'Yazıcı Çevrimdışı',
      printerError: 'Yazıcı Hatası',
      filamentLow: 'Az Filament',
      maintenanceDue: 'Bakım Zamanı',
      maintenanceDueDescription: 'Bakım gerektiğinde bildir',
    },
    // Akıllı Prizler
    smartPlug: {
      title: 'Akıllı Prizler',
      add: 'Akıllı Priz Ekle',
      edit: 'Akıllı Prizi Düzenle',
      name: 'Ad',
      ipAddress: 'IP Adresi',
      linkedPrinter: 'Bağlı Yazıcı',
      autoOn: 'Otomatik Aç',
      autoOnDescription: 'Baskı başladığında aç',
      autoOff: 'Otomatik Kapat',
      autoOffDescription: 'Baskı tamamlandıktan sonra kapat',
      offDelay: 'Kapatma Gecikmesi',
      offDelayMinutes: 'Baskıdan sonra dakika',
      offDelayTemp: 'Nozul sıcaklığın altında olduğunda',
      currentState: 'Mevcut Durum',
      turnOn: 'Aç',
      turnOff: 'Kapat',
    },
    // Filament Takip Modu
    filamentTracking: 'Filament Takibi',
    filamentTrackingDesc: 'Filament makaralarınızı nasıl takip edeceğinizi seçin. Yerleşik envanteri kullanabilir veya harici bir Spoolman sunucusuna bağlanabilirsiniz.',
    autoAddUnknownRfid: 'Bilinmeyen RFID makaralarını otomatik ekle',
    autoAddUnknownRfidDesc: 'Bilinmeyen RFID etiketli bir makara algılandığında otomatik olarak envantere bir kayıt oluşturur. Çoğaltmaları önlemek için yeni makaraları manuel olarak önceden kaydediyorsanız kapatın.',
    filamentChecks: 'Filament kontrolleri',
    disableFilamentWarnings: 'Filament uyarılarını devre dışı bırak',
    disableFilamentWarningsDesc: 'Yazdırırken veya kuyruğa eklerken yetersiz filamentle ilgili uyarıları gösterme',
    preferLowestFilament: 'En az kalan filamenti tercih et',
    preferLowestFilamentDesc: 'Birden fazla makara eşleştiğinde, kalan filamenti en az olanı kullan',
    preferLowestFilamentBackupNote: 'Yalnızca yazıcıda AMS Filament Backup etkinleştirildiğinde uygulanır — aksi takdirde seçilen makara bittiğinde yazıcı ikinci bir makaraya geçemez.',
    trackingModeBuiltIn: 'Yerleşik Envanter',
    trackingModeBuiltInDesc: 'RFID otomatik eşleştirme ve kullanım takibi dahil',
    trackingModeSpoolmanDesc: 'Harici filament yönetim sunucusu',
    builtInFeatureRfid: "AMS'deki Bambu Lab RFID makaralarını otomatik olarak algılar",
    builtInFeatureUsage: 'Baskı başına filament tüketimini takip eder',
    builtInFeatureCatalog: 'Makaraları, renkleri ve K faktör profillerini yönetin',
    builtInFeatureThirdParty: 'Üçüncü taraf makaralar envanter makaralarına atanabilir',
    amsSyncButton: "AMS'den Ağırlıkları Senkronize Et",
    amsSyncTitle: "AMS'den Makara Ağırlıklarını Senkronize Et",
    amsSyncMessage: 'Bu, bağlı yazıcılardan gelen mevcut AMS kalan% değerleriyle tüm envanter makara ağırlıklarının üzerine yazar. Bozuk ağırlık verilerinden kurtarmak için bunu kullanın. Yazıcılar çevrimiçi olmalıdır.',
    amsSyncing: 'Senkronize ediliyor...',
    amsSyncSuccess: '{{synced}} makara senkronize edildi, {{skipped}} atlandı',
    amsSyncError: "AMS'den ağırlıklar senkronize edilemedi",
    spoolmanAmsSyncButton: "AMS'den Spoolman Ağırlıklarını Senkronize Et",
    spoolmanAmsSyncTitle: "AMS'den Spoolman Makara Ağırlıklarını Senkronize Et",
    spoolmanAmsSyncMessage: 'Bu, bağlı yazıcılardan gelen mevcut AMS kalan% değerlerine göre tüm Spoolman makara ağırlıklarını güncelleyecek. Yazıcılar çevrimiçi olmalıdır.',
    spoolmanAmsSyncing: 'Senkronize ediliyor...',
    spoolmanAmsSyncSuccess: '{{synced}} makara senkronize edildi, {{skipped}} atlandı',
    spoolmanAmsSyncError: 'Spoolman ağırlıkları AMS\'den senkronize edilemedi',
    spoolmanAmsSyncErrorUnreachable: 'Spoolman ağırlıkları senkronize edilemedi (Spoolman erişilemez)',
    spoolmanAmsSyncErrorNotConfigured: 'Spoolman ağırlıkları senkronize edilemedi (Spoolman yapılandırılmamış)',
    spoolmanNotConfigured: 'Spoolman yapılandırılmamış',
    // Makara kataloğu ayarlarında Spoolman filament kataloğu bölümü
    spoolmanFilamentCatalogTitle: 'Spoolman Filament Kataloğu',
    spoolmanFilamentCatalogDesc: "Spoolman örneğinizden filament adları ve boş ağırlıkları. Ad ve makara ağırlığı burada düzenlenebilir; diğer tüm özellikler doğrudan Spoolman'da yönetilir.",
    // Spoolman ayarları
    spoolmanUrl: 'Spoolman URL',
    spoolmanUrlHint: 'Spoolman sunucunuzun URL\'si (örn., http://localhost:7912)',
    spoolmanConnected: 'Bağlı',
    spoolmanDisconnected: 'Bağlı değil',
    status: 'Durum',
    connect: 'Bağlan',
    disconnect: 'Bağlantıyı Kes',
    howSyncWorks: 'Senkronizasyon Nasıl Çalışır',
    syncInfoRfidOnly: "Yalnızca RFID'li resmi Bambu Lab makaraları senkronize edilir",
    syncInfoAutoCreate: "Yeni makaralar ilk senkronizasyonda Spoolman'da otomatik olarak oluşturulur",
    syncInfoThirdPartySkipped: 'Bambu Lab dışı makaralar (üçüncü taraf, yeniden doldurulmuş) atlanır',
    linkingExistingSpools: 'Mevcut Makaraları Bağlama',
    linkingExistingSpoolsDesc: "Mevcut Spoolman makaralarını AMS'inize bağlamak için, bir AMS yuvasının üzerine gelin ve \"Spoolman'a Bağla\"ya tıklayın.",
    syncMode: 'Senkronizasyon Modu',
    syncModeAuto: 'Otomatik',
    syncModeManual: 'Yalnızca Manuel',
    syncModeAutoDesc: 'Değişiklikler algılandığında AMS verisi otomatik olarak senkronize edilir',
    syncModeManualDesc: 'Yalnızca manuel olarak tetiklendiğinde senkronize et',
    syncAmsData: 'AMS Verisini Senkronize Et',
    syncAmsDataDesc: "Yazıcı AMS verisini manuel olarak Spoolman'a senkronize et",
    allPrinters: 'Tüm Yazıcılar',
    // Varsayılan yazıcı
    noDefaultPrinter: 'Varsayılan yok (her seferinde sor)',
    // Kenar çubuğu
    sidebarOrder: 'Kenar çubuğu sırası',
    // Kamera
    saveThumbnails: 'Küçük resimleri kaydet',
    captureFinishPhoto: 'Bitiş fotoğrafı çek',
    noPrintersConfigured: 'Yapılandırılmış yazıcı yok',
    // Arşiv ayarları
    archiveMode: {
      always: 'Her zaman arşiv girişi oluştur',
      never: 'Asla arşiv girişi oluşturma',
      ask: 'Her seferinde sor',
    },
    // Güncellemeler
    checkForUpdatesLabel: 'Güncellemeleri kontrol et',
    checkPrinterFirmware: 'Yazıcı firmware\'ini kontrol et',
    includeBetaUpdates: 'Beta sürümleri dahil et',
    includeBetaUpdatesDesc: 'Güncellemeleri kontrol ederken beta ve önyayım sürümleri hakkında bildir',
    localLogin: {
      disable: 'Yerel kullanıcı adı/şifre ile oturum açmayı devre dışı bırak',
      disableHint: 'Etkinleştirildiğinde yalnızca SSO sağlayıcıları ile oturum açılabilir. LDAP etkilenmez. Bir kurtarma yolu açık tutmak için sunucuda BAMBUDDY_LOCAL_LOGIN=true ayarlayın.',
    },
    // Kuyruk
    enableRetry: 'Yeniden denemeyi etkinleştir',
    // Home Assistant
    homeAssistantDescription: 'Akıllı prizleri Home Assistant üzerinden kontrol et',
    environmentManagedLabel: '(Ortam Yönetiliyor)',
    autoEnabledViaEnv: 'Ortam değişkenleriyle otomatik etkinleştirildi',
    urlFromEnvReadOnly: 'Değer HA_URL ortam değişkeniyle ayarlandı (salt okunur)',
    tokenFromEnvReadOnly: 'Değer HA_TOKEN ortam değişkeniyle ayarlandı (salt okunur)',
    // MQTT
    mqttConnectedTo: 'Bağlı',
    // Prometheus
    prometheusDescription: 'Yazıcı verisini Prometheus formatında sun',
    // Akıllı priz boş durumu
    noSmartPlugsTitle: 'Yapılandırılmış akıllı priz yok',
    noSmartPlugsDescription: 'Enerji kullanımını takip etmek ve güç kontrolünü otomatikleştirmek için Tasmota tabanlı bir akıllı priz ekleyin.',
    // Bildirim boş durumu
    noProvidersTitle: 'Yapılandırılmış sağlayıcı yok',
    noProvidersDescription: 'Uyarı almak için bir sağlayıcı ekleyin.',
    noTemplatesAvailable: 'Şablon mevcut değil. Varsayılan şablonları yüklemek için arka ucu yeniden başlatın.',
    // API izinleri
    apiPermissionView: 'Yazıcı durumunu ve kuyruğu görüntüle',
    apiPermissionEdit: 'Baskı kuyruğundan öğe ekle ve kaldır',
    // API anahtarları
    apiKeysEmptyTitle: 'API anahtarı yok',
    apiKeysEmptyDescription: 'Harici servislerle entegre olmak için bir API anahtarı oluşturun.',
    // Kullanıcılar
    noUsersFound: 'Kullanıcı bulunamadı',
    noGroupsFound: 'Grup bulunamadı',
    noGroupsAvailable: 'Kullanılabilir grup yok',
    passwordsDoNotMatch: 'Parolalar eşleşmiyor',
    systemGroupWarning: 'Sistem grubu adları değiştirilemez',
    // Kimlik doğrulama devre dışı
    authDisabledTitle: 'Kimlik Doğrulama Devre Dışı',
    authDisabledFeature1: 'Sisteme erişmek için giriş gerektir',
    authDisabledFeature2: 'Grup tabanlı izinlerle birden fazla kullanıcı oluştur',
    authDisabledFeature3: '50\'den fazla ayrıntılı izinle erişimi kontrol et',
    // Kullanıcı silme
    userHasCreated: 'Bu kullanıcı şunları oluşturdu:',
    userItemsQuestion: 'Bu öğelerle ne yapmak istersiniz?',
    deleteUserConfirm: 'Bu kullanıcıyı silmek istediğinizden emin misiniz?',
    actionCannotBeUndone: 'Bu işlem geri alınamaz.',
    // Akıllı prizler
    addFirstSmartPlug: 'İlk Akıllı Prizinizi Ekleyin',
    // Bildirimler
    providers: 'Sağlayıcılar',
    log: 'Günlük',
    testAll: 'Hepsini Test Et',
    testResults: 'Test Sonuçları',
    testPassedCount: '{{count}} başarılı',
    testFailedCount: '{{count}} başarısız',
    messageTemplates: 'Mesaj Şablonları',
    messageTemplatesDescription: 'Her olay için bildirim mesajlarını özelleştirin.',
    // API Anahtarları bölümü
    apiKeys: 'API Anahtarları',
    apiKeysDescription: 'Harici entegrasyonlar ve webhook\'lar için API anahtarları oluşturun.',
    createKey: 'Anahtar Oluştur',
    apiKeyCreated: 'API Anahtarı Başarıyla Oluşturuldu',
    apiKeyCopyWarning: 'Bu anahtarı şimdi kopyalayın - bir daha gösterilmeyecek!',
    useInApiBrowser: 'API Tarayıcısında Kullan',
    apiKeyQrButton: 'QR kodu',
    apiKeyQrTitle: 'Yapılandırmak için tarayın',
    apiKeyQrCaption: 'Bu sunucuyu ve API anahtarını eklemek için mobil uygulamanızla tarayın.',
    apiKeyQrWarning: 'Gizli API anahtarınızı içerir — başkalarının görebileceği yerlerde paylaşmayın veya ekran görüntüsü almayın.',
    createNewApiKey: 'Yeni API Anahtarı Oluştur',
    keyName: 'Anahtar Adı',
    keyNamePlaceholder: 'örn., Home Assistant, OctoPrint',
    readStatus: 'Durumu Oku',
    readStatusDescription: 'Yazıcı durumunu, kuyruğu, kütüphaneyi, arşivleri ve dilimleyici pipeline\'larını görüntüle',
    manageQueue: 'Kuyruğu Yönet',
    manageQueueDescription: 'Baskı kuyruğundan öğe ekle ve kaldır. "Kütüphaneyi Yönet" ile birlikte dilimleyici pipeline\'ları çalıştır',
    controlPrinter: 'Yazıcıyı Kontrol Et',
    controlPrinterDescription: 'Baskıları duraklat, devam ettir ve durdur',
    manageLibrary: 'Kütüphaneyi Yönet',
    manageLibraryDescription: "Kütüphane dosyalarını yükle, yeniden adlandır, sil ve dilimle; MakerWorld'den model içe aktar. 'Kuyruğu Yönet' ile birlikte dilimleyici pipeline'ları çalıştır",
    manageInventory: 'Envanteri Yönet',
    manageInventoryDescription: 'Makaraları ve envanter kayıtlarını oluştur, güncelle ve sil. SpoolBuddy kiosklar (NFC tarama, tartı okumaları, kiosk sistem komutları) için gereklidir.',
    manageMaintenance: 'Bakımı yönet',
    manageMaintenanceDescription: 'Tamamlanan bakımları kaydet, sayaçları sıfırla, aralıkları düzenle ve bakım türü kataloğunu yönet. Daha geniş yazıcı kontrolü vermeden "nozulu temizledim"i kaydeden Home Assistant otomasyonlarına uygundur.',
    manageArchives: 'Arşivleri yönet',
    manageArchivesDescription: 'Eski baskıların ve istatistik katkılarının kaldırılması dahil olmak üzere baskı arşivlerini düzenleyin ve silin. Baskı geçmişini budayan otomasyonlar için uygundur.',
    manageProjects: 'Projeleri yönet',
    manageProjectsDescription: 'Projeleri oluşturun, güncelleyin ve silin, ayrıca bunlara arşiv ekleyin. Baskıları projeler halinde düzenleyen otomasyonlar için uygundur.',
    maintenanceBadge: 'Bakım',
    archivesBadge: 'Arşivler',
    projectsBadge: 'Projeler',
    libraryBadge: 'Kütüphane',
    inventoryBadge: 'Envanter',
    cloudAccess: 'Bulut erişimine izin ver',
    cloudAccessDescription: "Adınıza Bambu Bulut ön ayarlarını ve filamentleri okuyun. Bambu Bulut'a giriş yapmış olmanız gerekir.",
    cloudBadge: 'Bulut',
    updateEnergyCost: 'Elektrik fiyatını güncelle',
    updateEnergyCostDescription: "Bu anahtarın /settings/electricity-price üzerine yeni bir kWh başına elektrik fiyatı POST etmesine izin ver. Home Assistant dinamik tarife otomasyonları (Tibber, Octopus, vb.) için kullanışlıdır. Bu, API anahtarıyla yazılabilen tek ayar alanıdır.",
    energyCostBadge: 'Enerji',
    legacyKey: 'Eski',
    legacyKeyTooltip: 'Kullanıcı başına sahiplikten önce oluşturuldu; bulut erişimini kullanmak için yeniden oluşturun',
    unnamedKey: 'Adsız Anahtar',
    lastUsed: 'Son kullanım',
    read: 'Oku',
    control: 'Kontrol',
    createFirstKey: 'İlk Anahtarınızı Oluşturun',
    webhookEndpoints: 'Webhook Uç Noktaları',
    webhookApiKeyHint: 'API anahtarınızı X-API-Key başlığında kullanın.',
    webhook: {
      getAllStatus: 'Tüm yazıcı durumlarını al',
      getSpecificStatus: 'Belirli yazıcı durumunu al',
      addToQueue: 'Baskı kuyruğuna ekle',
      pausePrint: 'Baskıyı duraklat',
      resumePrint: 'Baskıya devam et',
      stopPrint: 'Baskıyı durdur',
    },
    apiBrowser: 'API Tarayıcısı',
    apiBrowserDescription: 'Mevcut tüm API uç noktalarını keşfedin ve test edin.',
    apiKeyForTesting: 'Test için API Anahtarı',
    apiKeyPlaceholder: 'Kimlik doğrulamalı uç noktaları test etmek için API anahtarınızı buraya yapıştırın...',
    apiKeyHint: 'Bu anahtar isteklerle birlikte X-API-Key başlığı olarak gönderilecek.',
    deleteApiKeyTitle: 'API Anahtarını Sil',
    deleteApiKeyMessage: 'Bu API anahtarını silmek istediğinizden emin misiniz? Bu anahtarı kullanan tüm entegrasyonlar çalışmayı durduracak.',
    deleteKey: 'Anahtarı Sil',
    // Filament sekmesi
    amsDisplayThresholds: 'AMS Görüntü Eşikleri',
    amsThresholdsDescription: 'AMS nem ve sıcaklık göstergeleri için renk eşiklerini yapılandırın.',
    humidity: 'Nem',
    goodGreen: 'İyi (yeşil)',
    fairOrange: 'Orta (turuncu)',
    aboveFairBad: 'Orta eşiğin üstü kırmızı olarak gösterilir (kötü)',
    fairAlsoDryingThreshold: 'Bu eşik aynı zamanda etkinleştirildiğinde otomatik kurutmayı tetiklemek için de kullanılır',
    fairBelowDryingFloor: 'Otomatik kurutma bu değere ulaşamaz: bir AMS, ısıtıcısı çalışırken %{{floor}} veya daha fazlasını bildirir, bu yüzden her döngü biter ve hemen yeniden başlar. Otomatik kurutma kullanıyorsanız %{{floor}} üzerine çıkarın.',
    temperature: 'Sıcaklık',
    goodBlue: 'İyi (mavi)',
    aboveFairHot: 'Orta eşiğin üstü kırmızı olarak gösterilir (sıcak)',
    historyRetention: 'Geçmiş Saklama',
    keepSensorHistory: 'Sensör geçmişini sakla',
    historyRetentionDescription: 'Daha eski nem ve sıcaklık verileri otomatik olarak silinecek',
    defaultPrintOptions: 'Varsayılan Baskı Seçenekleri',
    defaultPrintOptionsDescription: 'Yeni baskılar başlatılırken baskı seçenekleri için varsayılan değerleri ayarlayın. Bunlar baskı iletişim kutusunda baskı başına geçersiz kılınabilir.',
    defaultBedLevelling: 'Tabla Seviyelendirme',
    defaultBedLevellingDesc: 'Baskıdan önce tablayı otomatik seviyelendir',
    defaultFlowCali: 'Akış Kalibrasyonu',
    defaultFlowCaliDesc: 'Ekstrüzyon akışını kalibre et',
    defaultVibrationCali: 'Titreşim Kalibrasyonu',
    defaultVibrationCaliDesc: 'Çınlama artefaktlarını azalt',
    defaultLayerInspect: 'İlk Katman Denetimi',
    defaultLayerInspectDesc: 'İlk katmanın AI denetimi',
    defaultTimelapse: 'Zaman Atlamalı Video',
    defaultTimelapseDesc: 'Zaman atlamalı video kaydet',
    defaultNozzleOffsetCali: 'Nozül Ofset Kalibrasyonu',
    defaultNozzleOffsetCaliDesc: 'Ekstrüderler arasındaki nozül ofsetlerini kalibre et',
    tempFanPresetsTitle: 'Sıcaklık ve Fan Ön Ayarları',
    tempFanPresetsDescription: 'Yazıcı kartı sıcaklık ve fan hızı pencerelerinde gösterilen hızlı seçim değerlerini özelleştirin. Kapalı düğmesi her zaman gösterilir.',
    tempFanPresetsNozzle: 'Nozül sıcaklığı',
    tempFanPresetsBed: 'Tabla sıcaklığı',
    tempFanPresetsChamber: 'Hazne sıcaklığı',
    tempFanPresetsFan: 'Fan hızı',
    tempFanPresetsReset: 'Varsayılanlara sıfırla',
    concurrentUploadsTitle: 'Eşzamanlı Yüklemeler',
    concurrentUploadsDescription: 'Kuyruğun aynı anda kaç yazıcıya dosya gönderebileceği. Yazıcılar dosyaları yavaş alır (büyük bir baskı birkaç dakika sürebilir) ve her biri sırasını bekler; bu nedenle büyük bir filoda bu değeri artırmak, bir gruptaki son yazıcının kendisinden önceki tüm aktarımları beklemesini önler. Ağınız veya Bambuddy sunucunuz paralel aktarımlarda zorlanıyorsa değeri düşürün.',
    concurrentUploadsLabel: 'Aynı anda dosya gönderilen yazıcı sayısı',
    concurrentUploadsHelp: "1, aynı anda tek yazıcıya gönderir (eski davranış). Varsayılan 4'tür.",
    staggeredStart: 'Kademeli Başlatma',
    staggeredStartDescription: 'Çoklu yazıcı toplu başlatmaları kademelendirilirken varsayılan grup boyutu ve aralığı. Baskı modalinde yığın başına geçersiz kılınabilir.',
    preheatTitle: 'Ön Isıtma & Heat Soak',
    preheatDescription: 'Kuyruktaki her baskı başlamadan önce tablayı (ve destekleniyorsa odayı) ısıtır ve sıcaklığı korur. Aktif oda ısıtıcısı olmayan yazıcılarda mühendislik filamentleri (PA, ABS) için yararlıdır — soak zamanlayıcısı çalışırken tabla, odayı radyasyonla ısıtır. Tabla hedef sıcaklığı baskı dosyasından okunur; oda davranışı yazıcı modeline bağlıdır.',
    preheatEnabled: 'Ön ısıtma & soak\'u etkinleştir',
    preheatEnabledDesc: 'Kapalıyken kuyruktaki baskılar hemen başlar. Her kuyruk öğesi baskı bazında geçersiz kılabilir.',
    preheatFilamentTargetsLabel: 'Filament başına oda hedefi (°C)',
    preheatFilamentTargetsHint: 'Bambuddy yüklü AMS yuvaları arasındaki en yüksek hedefi seçer; yalnız PLA baskıları 0 türeterek oda aşamasını otomatik atlar.',
    preheatFilamentTargetsReset: 'Varsayılanlara sıfırla',
    preheatFilamentTargetsDefaultRow: 'Diğer / eşlenmemiş',
    preheatMaxWait: 'Maks. bekleme (saniye)',
    preheatMaxWaitHelp: 'Soak\'a geçilmeden önce oda ısıtma aşaması için üst sınır.',
    preheatSoak: 'Soak (saniye)',
    preheatSoakHelp: 'Hedefe ulaşıldıktan veya maks. bekleme dolduktan sonra tutma süresi.',
    preheatHardwareTitle: 'Yazıcıya göre davranış:',
    preheatHardwareDetail: 'H2C/H2D/H2D Pro/H2S/X2D/X1E odayı M141 ile aktif ısıtır. X1C/P2S oda sıcaklığını okur ancak yalnızca tabla radyasyonu ile ısınır. P1S/P1P/A1/A1 Mini\'de oda sensörü yoktur — yalnızca soak zamanlayıcısı geçerlidir.',
    preheatPerItemDesc: 'Bu baskı başlamadan önce tablayı ve odayı ısıtın. Varsayılan olarak Ayarlar → İş Akışı genel anahtarını kullanır.',
    preheatOverride_inherit: 'Devral',
    preheatOverride_on: 'Açık',
    preheatOverride_off: 'Kapalı',
    calibrationMode_off: 'Kapalı',
    calibrationMode_on: 'Açık',
    calibrationMode_auto: 'Otomatik',
    preheatTargetOverride: 'Oda hedefini geçersiz kıl (°C, boş = filament varsayılanı)',
    plateClear: 'Plaka Temizleme Onayı',
    requirePlateClear: 'Plaka temizleme onayı gerektir',
    requirePlateClearDescription: 'Etkinleştirildiğinde, planlayıcı bitmiş işleri olan yazıcılarda kuyruktaki baskıları başlatmadan önce yazıcı başına plaka temizleme onayını bekler. Bunu devre dışı bırakmak ayrıca plaka durum rozetini ve yazıcı kartlarındaki "Plakayı temizlendi olarak işaretle" düğmesini gizler.',
    keepBedWarm: 'Baskılar arasında yatak sıcaklığını koru',
    keepBedWarmDesc: 'Plaka temizleme onayı beklenirken, yatağı aşağıdaki sıcak tutma sıcaklığında tutarak hazneyi sıcak tutar — veya bir sonraki baskının yatak sıcaklığı daha yüksekse onu kullanır. Yalnızca bir sonraki baskının hazne ısıtması gerektirmesi durumunda uygulanır (ASA, ABS, PA, PC vb.). Plaka temizleme onayının etkinleştirilmiş olması gerekir.',
    keepWarmBedTemp: 'Sıcak tutma yatak sıcaklığı (°C)',
    keepWarmBedTempHelp: 'Yatağın görevi hazneyi ısıtmak olduğunda kullanılır: sıcak tutma sırasında ve baskı dosyasında yatak sıcaklığı bulunmadığında ön ısıtmada. Baskı dosyasındaki daha yüksek bir sıcaklık her zaman önceliklidir.',
    keepWarmMaxMinutes: 'Sıcak tutmayı şu süre sonunda durdur (dakika)',
    keepWarmMaxMinutesHelp: 'Plaka bu süre içinde boşaltılmazsa ısıtıcılar süresiz açık kalmak yerine kapatılır.',
    gcodeInjection: 'G-kod Enjeksiyonu',
    gcodeInjectionDescription: 'Farmloop, SwapMod, AutoClear ve Printflow 3D gibi otomatik baskı sistemleri için baskıların başlangıcında ve/veya sonunda enjekte edilecek özel G-kodu yapılandırın. Parçacıklar yazıcı modeli başına yapılandırılır ve bir kuyruk öğesinde "G-kod Enjekte Et" etkinleştirildiğinde uygulanır.',
    gcodeInjectionNoPrinters: 'Yazıcı bulunamadı. G-kod parçacıklarını yapılandırmak için yazıcı ekleyin.',
    gcodeStartLabel: 'Başlangıç G-kodu',
    gcodeEndLabel: 'Bitiş G-kodu',
    gcodeStartPlaceholder: 'Baskı başlamadan önce eklenecek G-kodu...',
    gcodeEndPlaceholder: 'Baskı bittikten sonra eklenecek G-kodu...',
    staggerGroupSize: 'Grup boyutu',
    staggerGroupSizeHelp: 'Grup başına eş zamanlı başlatılacak yazıcılar',
    staggerInterval: 'Aralık (dakika)',
    staggerIntervalHelp: 'Her grubun başlatılması arasındaki gecikme',
    queueDrying: 'Kuyruk Otomatik Kurutma',
    queueDryingDescription: 'Kuyruktaki baskılar arasında yazıcı boştayken AMS filamentini otomatik olarak kurut. Kurutmayı tetiklemek için yukarıdaki nem eşiğini kullanır.',
    queueDryingEnabled: 'Otomatik kurutmayı etkinleştir',
    queueDryingEnabledDescription: 'Yazıcı boştayken ve nem eşiğin üzerindeyken AMS kurutmasını otomatik olarak başlat',
    queueDryingBlock: 'Kurutmanın tamamlanmasını bekle',
    queueDryingBlockDescription: 'Kurutma bitene kadar baskı kuyruğunu engelle. Kapalıyken, baskılar kurutmadan önceliklidir.',
    ambientDryingEnabled: 'Ortam kurutma',
    ambientDryingEnabledDescription: 'Kuyrukta baskı olmasa bile, nem eşiği aştığında boşta yazıcılarda filamenti otomatik olarak kurut.',
    printDryingEnabled: 'Baskı sırasında kurutmaya devam et',
    printDryingEnabledDescription: 'Desteklenen donanımda (H2D, H2C, H2S, P2S, H2D Pro, X2D, X1C, A2L güncel firmware ile) baskı sırasında otomatik kurutmanın çalışmaya devam etmesine izin verir. Makara koruması için kurutma sıcaklığı otomatik olarak boştaki ön ayarın 5°C altına sınırlandırılır.',
    dryingPresets: 'Kurutma Ön Ayarları',
    dryingPresetsDescription: 'Filament türü başına sıcaklık ve süre. AMS 2 Pro daha düşük sıcaklıklar kullanır, AMS-HT daha yüksek sıcaklıkları destekler.',
    dryingFilament: 'Filament',
    humidityThresholds: 'Nem Eşikleri',
    humidityThresholdsDescription: 'Otomatik kurutma ve alarmlar için filament türüne göre nem tetikleyici. Tek AMS\'te karışık yükler en düşük eşiği kullanır.',
    humidityThresholdCol: 'Eşik',
    humidityThresholdDefault: 'Varsayılan (bilinmeyen türler)',
    printModal: 'Baskı Modali',
    expandCustomMapping: 'Özel eşlemeyi varsayılan olarak genişlet',
    expandCustomMappingDescription: 'Birden fazla yazıcıya yazdırırken, yazıcı başına AMS eşlemesini genişletilmiş olarak göster',
    // Kullanıcı yönetimi
    authentication: 'Kimlik Doğrulama',
    authEnabledDescription: 'Örneğiniz kullanıcı kimlik doğrulamayla güvende',
    authDisabledDescription: 'Girişi gerektirmek ve kullanıcı erişimini yönetmek için etkinleştir',
    authDisabledMessage: 'Kullanıcı hesapları oluşturmak, izinleri yönetmek ve Bambuddy örneğinizi güvende tutmak için kimlik doğrulamayı etkinleştirin.',
    enableAuthentication: 'Kimlik Doğrulamayı Etkinleştir',
    currentUser: 'Mevcut Kullanıcı',
    changePassword: 'Parolayı Değiştir',
    admin: 'Yönetici',
    users: 'Kullanıcılar',
    addUser: 'Kullanıcı Ekle',
    groups: 'Gruplar',
    addGroup: 'Grup Ekle',
    system: 'Sistem',
    noDescription: 'Açıklama yok',
    userCount: '{{count}} kullanıcı',
    permissionCount: '{{count}} izin',
    createUser: 'Kullanıcı Oluştur',
    username: 'Kullanıcı Adı',
    enterUsername: 'Kullanıcı adı girin',
    password: 'Parola',
    enterPassword: 'Parola girin',
    passwordRequirements: 'En az 8 karakter, bir büyük harf, bir küçük harf, bir rakam ve bir özel karakter ile.',
    confirmPassword: 'Parolayı Onayla',
    confirmPasswordPlaceholder: 'Parolayı onayla',
    // Başlık ipuçları
    viewReleaseOnGitHub: "Yayını GitHub'da görüntüle",
    turnAllPlugsOn: 'Tüm prizleri aç',
    turnAllPlugsOff: 'Tüm prizleri kapat',
    // Modal: Günlükleri temizle
    clearNotificationLogs: 'Bildirim Günlüklerini Temizle',
    clearLogsMessage: 'Bu, 30 günden eski tüm bildirim günlüklerini kalıcı olarak silecek. Bu işlem geri alınamaz.',
    clearLogs: 'Günlükleri Temizle',
    // Modal: Arayüzü sıfırla
    resetUiPreferences: 'Arayüz Tercihlerini Sıfırla',
    resetUiPreferencesMessage: 'Bu, tüm arayüz tercihlerini varsayılana sıfırlayacak: kenar çubuğu sırası, tema, gösterge paneli düzeni, görünüm modları ve sıralama tercihleri. Yazıcılarınız, arşivleriniz ve sunucu ayarlarınız ETKİLENMEYECEK. Sayfa temizleme sonrası yeniden yüklenecek.',
    resetPreferences: 'Tercihleri Sıfırla',
    // Modal: Grup sil
    deleteGroupTitle: 'Grubu Sil',
    deleteGroupMessage: 'Bu grubu silmek istediğinizden emin misiniz? Bu gruptaki kullanıcılar bu izinleri kaybedecek.',
    deleteGroup: 'Grubu Sil',
    // Modal: Kimlik doğrulamayı devre dışı bırak
    disableAuthenticationTitle: 'Kimlik Doğrulamayı Devre Dışı Bırak',
    disableAuthenticationMessage: 'Kimlik doğrulamayı devre dışı bırakmak istediğinizden emin misiniz? Bu, Bambuddy örneğinizi giriş yapmadan erişilebilir hale getirecek. Tüm kullanıcılar veritabanında kalacak ancak kimlik doğrulama devre dışı bırakılacak.',
    disableAuthentication: 'Kimlik Doğrulamayı Devre Dışı Bırak',
    // Ek ayarlar
    configureBambuddy: 'Bambuddy\'yi Yapılandır',
    systemDefault: 'Sistem Varsayılanı',
    archiveSettings: 'Arşiv Ayarları',
    newWindow: 'Yeni Pencere',
    embeddedOverlay: 'Gömülü Bindirme',
    preferredSlicer: 'Tercih Edilen Dilimleyici',
    preferredSlicerDescription: 'Uygulama içi dilimleme için API yardımcı kabıyla kullanılan dilimleyici',
    openInSlicerLabel: 'Dilimleyicide Aç',
    openInSlicerInherit: 'API dilimleyicisiyle aynı',
    openInSlicerDescription: "'Dilimleyicide Aç' düğmesinin kullandığı masaüstü dilimleyici. Devralmak için 'API dilimleyicisiyle aynı' bırakın veya yerel olarak kullanmak için farklı bir dilimleyici seçin.",
    orcaslicerKnownIssuesWarning: "OrcaSlicer 2.3.2 / 2.4.0-dev, birçok Bambu yazılı 3MF'nin dilimlenmesini engelleyen bilinen CLI hatalarına sahiptir — yukarı yöndeki #12426 (boyalı çok ekstrüderli dosyalarda segfault) ve #13386 (parametre aralığı katı doğrulama reddi) sorunlarına bakın. Yukarı yön düzeltmeler gelene kadar Bambu Studio önerilir.",
    useSlicerApi: 'Dilimleyici API kullan',
    useSlicerApiDescription: 'Açıkken, "Dilimle" eylemleri uygulama içi dilimleyici modalini açar ve dilimleyici-API yardımcı bileşenini çağırır. Kapalıyken (varsayılan), URI şeması üzerinden masaüstü dilimleyiciye devredilirler.',
    slicerCard: 'Dilimleyici',
    orcaslicerApiUrl: 'OrcaSlicer yardımcı bileşen URL',
    bambuStudioApiUrl: 'Bambu Studio yardımcı bileşen URL',
    slicerStallTimeout: 'Dilimleyici duraklama zaman asimi (dakika)',
    slicerStallTimeoutDescription: 'Sidecar bu sure boyunca ilerleme bildirmezse dilimleme iptal edilir. Ilerleme bildirmeye devam eden agir modeller ne kadar surerse sursun kesilmez. Ilerleme bildirmeyen sidecar surumleri bu degeri toplam sure siniri olarak kullanir.',
    slicerApiUrlDescription: 'Dilimleyici-API yardımcı bileşen konteynerinin URL\'si. SLICER_API_URL / BAMBU_STUDIO_API_URL ortam değişkeni varsayılanlarını kullanmak için boş bırakın.',
    externalCameras: 'Harici Kameralar',
    costTracking: 'Maliyet Takibi',
    billingEnabled: 'Faturalandırmayı etkinleştir',
    billingEnabledDescription: 'Kullanıcılardan baskı ücreti alın ve finans özelliklerini etkinleştirin',
    printerKillSwitch: 'Yetkisiz baskıyı otomatik durdurma',
    printerKillSwitchDescription: 'Yetkilendirme olmadan başlayan baskıları hemen durdurur.',
    financeBudgetReset: 'Aylık finans bütçesi sıfırlama',
    financeBudgetResetDay: 'Sıfırlama günü',
    financeBudgetResetDayHelp: 'Kısa aylarda sıfırlama ayın son gününde yapılır.',
    financeBudgetResetTimezone: 'Sıfırlama saat dilimi',
    financeBudgetResetTimezoneHelp: 'Bütçe döneminin başlangıcı bu saat dilimine göre hesaplanır.',
    rebuildLedger: 'Cüzdan hesap defterini yeniden oluştur',
    rebuildLedgerStarted: 'Hesap defteri yeniden oluşturulmaya başlandı',
    rebuildLedgerConfirmTitle: 'Cüzdan hesap defteri yeniden oluşturulsun mu?',
    rebuildLedgerConfirmMessage: 'Geçmiş bakiye değerlerini onarmak için cüzdan hesap defteri yeniden oluşturulacaktır. Bunu yalnızca ne yaptığınızı biliyorsanız çalıştırın.',
    rebuildLedgerInProgress: 'Yeniden oluşturma başlatılıyor...',
    printsOnly: 'Yalnızca Baskılar',
    totalConsumption: 'Toplam Tüketim',
    dataManagement: 'Veri Yönetimi',
    storageUsage: 'Depolama Kullanımı',
    storageUsageDescription: 'Kategoriye göre veri kullanımı dökümü',
    storageUsageTotal: 'Toplam',
    storageUsageErrors: 'Hatalar',
    storageUsageOtherBreakdown: 'Diğer (statik varlıklar, betikler ve yapılandırma dosyaları dahil)',
    storageUsageSystem: 'Sistem',
    storageUsageData: 'Veri',
    storageUsageUnavailable: 'Depolama kullanım bilgisi mevcut değil',
    clearNotificationLogsDescription: '30 günden eski bildirim günlüklerini sil',
    resetUiPreferencesDescription: 'Kenar çubuğu sırası, tema, görünüm modları ve düzen tercihlerini sıfırla. Yazıcılar, arşivler ve ayarlar etkilenmez.',
    enableHomeAssistant: "Home Assistant'ı Etkinleştir",
    enableMqtt: "MQTT'yi Etkinleştir",
    useTls: 'TLS Kullan',
    enableMetricsEndpoint: 'Metrikler Uç Noktasını Etkinleştir',
    availableMetrics: 'Kullanılabilir Metrikler',
    editUser: 'Kullanıcıyı Düzenle',
    deleteUserTitle: 'Kullanıcıyı Sil',
    groupName: 'Grup Adı',
    // Yer tutucular
    leaveEmptyForAnonymous: 'Anonim için boş bırakın',
    leaveEmptyForNoAuth: 'Kimlik doğrulama olmaması için boş bırakın',
    enterNewPassword: 'Yeni parola girin',
    confirmNewPassword: 'Yeni parolayı onayla',
    enterGroupName: 'Grup adını girin',
    enterDescriptionOptional: 'Açıklama girin (isteğe bağlı)',
    enterCurrentPassword: 'Mevcut parolayı girin',
    enterNewPasswordMin6: 'Yeni parolayı girin (en az 6 karakter)',
    toast: {
      keyCopied: 'Anahtar panoya kopyalandı',
      copyFailed: 'Anahtar kopyalanamadı',
      keyAddedToBrowser: 'Anahtar API Tarayıcısına eklendi',
      clearLogsFailed: 'Günlükler temizlenemedi',
      uiPreferencesReset: 'Arayüz tercihleri sıfırlandı. Yenileniyor...',
      authDisabled: 'Kimlik doğrulama başarıyla devre dışı bırakıldı',
      authDisableFailed: 'Kimlik doğrulama devre dışı bırakılamadı',
      apiKeyCreated: 'API anahtarı oluşturuldu',
      apiKeyDeleted: 'API anahtarı silindi',
      userCreated: 'Kullanıcı başarıyla oluşturuldu',
      userUpdated: 'Kullanıcı başarıyla güncellendi',
      userDeleted: 'Kullanıcı başarıyla silindi',
      groupCreated: 'Grup başarıyla oluşturuldu',
      groupUpdated: 'Grup başarıyla güncellendi',
      groupDeleted: 'Grup başarıyla silindi',
      fillRequiredFields: 'Lütfen tüm zorunlu alanları doldurun',
      passwordsDoNotMatch: 'Parolalar eşleşmiyor',
      passwordTooShort: 'Parola en az 8 karakter olmalı',
      passwordNeedsUppercase: 'Parola en az bir büyük harf içermeli',
      passwordNeedsLowercase: 'Parola en az bir küçük harf içermeli',
      passwordNeedsDigit: 'Parola en az bir rakam içermeli',
      passwordNeedsSpecial: 'Parola en az bir özel karakter içermeli',
      enterGroupName: 'Lütfen bir grup adı girin',
      settingsSaved: 'Ayarlar kaydedildi',
      noPermissionUpdate: 'Ayarları değiştirme izniniz yok',
      cameraSettingsSaved: 'Kamera ayarları kaydedildi',
      enterCameraUrl: 'Lütfen bir kamera URL\'si girin',
      passwordChanged: 'Parola başarıyla değiştirildi',
      connectionFailed: 'Bağlantı başarısız',
      testFailed: 'Test başarısız',
      cameraConnected: 'Kamera bağlandı{{resolution}}',
      cameraConnectedCoalesced: 'Kamera bağlandı{{resolution}} (hâlihazırda süren bir yakalamayla paylaşıldı)',
    },
    testConnection: 'Bağlantıyı Test Et',
    catalog: {
      spoolCatalog: 'Makara Kataloğu',
      spoolCatalogDescription: 'Marka/türe göre boş makara ağırlıkları. Makara eklerken otomatik ağırlık araması için kullanılır.',
      searchCatalog: 'Katalogda ara...',
      addNewEntry: 'Yeni Giriş Ekle',
      namePlaceholder: 'Ad (örn., Bambu Lab - Plastik)',
      weight: 'Ağırlık',
      type: 'Tür',
      default: 'Varsayılan',
      custom: 'Özel',
      noMatch: 'Aramanızla eşleşen giriş yok',
      empty: 'Katalogda giriş yok',
      deleteEntry: 'Girişi Sil',
      deleteConfirm: '"{{name}}" silmek istediğinizden emin misiniz?',
      resetCatalog: 'Kataloğu Sıfırla',
      resetConfirm: 'Katalog varsayılana sıfırlansın mı? Bu, tüm özel girişleri kaldıracak.',
      loadFailed: 'Makara kataloğu yüklenemedi',
      nameWeightRequired: 'Ad ve ağırlık gereklidir',
      entryAdded: 'Giriş eklendi',
      addFailed: 'Giriş eklenemedi',
      entryUpdated: 'Giriş güncellendi',
      updateFailed: 'Giriş güncellenemedi',
      entryDeleted: 'Giriş silindi',
      deleteFailed: 'Giriş silinemedi',
      resetSuccess: 'Katalog varsayılana sıfırlandı',
      resetFailed: 'Katalog sıfırlanamadı',
      exported: '{{count}} giriş dışa aktarıldı',
      imported: '{{added}} giriş içe aktarıldı ({{skipped}} atlandı)',
      importFailed: 'İçe aktarma başarısız: geçersiz JSON formatı',
      exportTooltip: "Kataloğu JSON'a dışa aktar",
      importTooltip: "Kataloğu JSON'dan içe aktar",
      resetTooltip: 'Varsayılana sıfırla',
      selectedCount: '{{count}} seçildi',
      deleteSelected: 'Seçilenleri Sil',
      bulkDeleteConfirm: '{{count}} girişi silmek istediğinizden emin misiniz?',
      bulkDeleted: '{{count}} giriş silindi',
      bulkDeleteFailed: 'Girişler silinemedi',
      material: 'Malzeme',
      spoolWeight: 'Makara Ağırlığı',
      color: 'Renk',
      updateSpoolWeight: 'Makara Ağırlığını Güncelle',
      filamentUpdated: 'Filament güncellendi',
      filamentUpdateFailed: 'Filament güncellenemedi',
      filamentUpdateInvalid: 'Geçersiz filament verisi',
      keepExistingSpoolWeight: 'Mevcut makaralar için eski ağırlığı koru',
      keepExistingSpoolWeightDesc: 'Bu filament türüyle önceden oluşturulmuş makaralar eski boş ağırlığı korur. Yeni makaralar güncellenmiş değeri kullanır.',
      applyToAllSpools: 'Tüm makaralara uygula',
      applyToAllSpoolsDesc: 'Bu filament türü için tüm ağırlık hesaplamaları hemen yeni boş ağırlığı kullanır.',
    },
    colorCatalog: {
      title: 'Renk Kataloğu',
      description: 'Üreticiye/malzemeye göre filament renkleri. Makara eklerken otomatik renk araması için kullanılır.',
      searchColors: 'Renklerde ara...',
      allManufacturers: 'Tüm üreticiler',
      addNewColor: 'Yeni Renk Ekle',
      manufacturer: 'Üretici',
      colorName: 'Renk Adı',
      hex: 'Hex',
      materialOptional: 'Malzeme (isteğe bağlı)',
      showing: '{{total}} renkten {{filtered}} tanesi gösteriliyor',
      noMatch: 'Aramanızla eşleşen renk yok',
      empty: 'Katalogda renk yok',
      deleteColor: 'Rengi Sil',
      deleteConfirm: '"{{name}}" silmek istediğinizden emin misiniz?',
      resetCatalog: 'Renk Kataloğunu Sıfırla',
      resetConfirm: 'Katalog varsayılana sıfırlansın mı? Bu, tüm özel renkleri kaldıracak.',
      sync: 'Senkronize Et',
      starting: 'Başlatılıyor...',
      syncTooltip: 'FilamentColors.xyz\'den senkronize et (2000+ renk, bir dakika sürebilir)',
      loadFailed: 'Renk kataloğu yüklenemedi',
      fieldsRequired: 'Üretici, renk adı ve hex renk gereklidir',
      colorAdded: 'Renk eklendi',
      addFailed: 'Renk eklenemedi',
      colorUpdated: 'Renk güncellendi',
      updateFailed: 'Renk güncellenemedi',
      colorDeleted: 'Renk silindi',
      deleteFailed: 'Renk silinemedi',
      resetSuccess: 'Renk kataloğu varsayılana sıfırlandı',
      resetFailed: 'Katalog sıfırlanamadı',
      syncUpToDate: 'Zaten güncel ({{count}} renk kontrol edildi)',
      syncComplete: '{{added}} yeni renk eklendi ({{skipped}} zaten mevcuttu)',
      syncError: 'Senkronizasyon hatası',
      syncFailed: 'FilamentColors.xyz\'den senkronize edilemedi',
      exported: '{{count}} renk dışa aktarıldı',
      imported: '{{added}} renk içe aktarıldı ({{skipped}} atlandı)',
      importFailed: 'İçe aktarma başarısız: geçersiz JSON formatı',
      selectedCount: '{{count}} seçildi',
      deleteSelected: 'Seçilenleri Sil',
      bulkDeleteConfirm: '{{count}} rengi silmek istediğinizden emin misiniz?',
      bulkDeleted: '{{count}} renk silindi',
      bulkDeleteFailed: 'Renkler silinemedi',
    },
    // Genel sekmesi
    dateFormat: 'Tarih Formatı',
    dateFormatUs: 'ABD (AA/GG/YYYY)',
    dateFormatEu: 'AB (GG/AA/YYYY)',
    dateFormatIso: 'ISO (YYYY-AA-GG)',
    timeFormat: 'Saat Formatı',
    timeFormat12: '12 saat (3:30 PM)',
    timeFormat24: '24 saat (15:30)',
    defaultPrinter: 'Varsayılan Yazıcı',
    defaultPrinterDescription: 'Yüklemeler, tekrar baskılar ve diğer işlemler için bu yazıcıyı önceden seç.',
    slicerBambuStudio: 'Bambu Studio',
    slicerOrcaSlicer: 'OrcaSlicer',
    sidebarOrderDescription: 'Öğeleri yeniden sıralamak, görünürlüğü sıfırlamak ve özel bağlantıları yönetmek için Kenar çubuğu düzenini kullanın.',
    setDefault: 'Varsayılan Yap',
    sidebarOrderSetDefaultHint: 'Varsayılan ayarla, mevcut menü sırasını henüz özelleştirmemiş kullanıcılara uygular.',
    sidebarDefaultSet: 'Varsayılan menü sırası ayarlandı.',
    sidebarDefaultCleared: 'Varsayılan menü sırası temizlendi.',
    sidebarDefaultFailed: 'Varsayılan menü sırası ayarlanamadı.',
    reset: 'Sıfırla',
    // Görünüm
    darkMode: 'Koyu Mod',
    lightMode: 'Açık Mod',
    active: '(aktif)',
    background: 'Arka Plan',
    accent: 'Vurgu',
    style: 'Stil',
    bgNeutral: 'Nötr',
    bgWarm: 'Sıcak',
    bgCool: 'Soğuk',
    bgOled: 'OLED Siyah',
    bgSlate: 'Arduvaz Mavisi',
    bgForest: 'Orman Yeşili',
    accentGreen: 'Yeşil',
    accentTeal: 'Camgöbeği',
    accentBlue: 'Mavi',
    accentOrange: 'Turuncu',
    accentPurple: 'Mor',
    accentRed: 'Kırmızı',
    styleClassic: 'Klasik',
    styleGlow: 'Parıltı',
    styleVibrant: 'Canlı',
    themeToggleHint: 'Kenar çubuğundaki güneş/ay simgesini kullanarak koyu ve açık mod arasında geçiş yapın.',
    progressInTitle: 'Sekmede baskı ilerlemesi',
    progressInTitleDescription: 'Tarayıcı sekmesinde etkin baskının yüzdesini ve bir ilerleme halkası gösterir.',
    // Arşiv
    autoArchivePrints: 'Baskıları otomatik arşivle',
    autoArchiveDescription: 'Baskılar tamamlandığında 3MF dosyalarını otomatik olarak kaydet',
    saveThumbnailsDescription: '3MF dosyalarından önizleme görüntülerini çıkar ve kaydet',
    captureFinishPhotoDescription: 'Baskı tamamlandığında yazıcı kamerasından bir fotoğraf çek. Bambuddy, baskı sırasında kısa bir zaman atlamalı kayıt yapar, böylece fotoğraf tabla inmeden önceki andan alınabilir. Bu baskı için zaman atlamalı kaydı etkinleştirdiyseniz dosya saklanır, aksi takdirde fotoğraf çekildikten sonra otomatik olarak silinir.',
    finishPhotoRestorePlate: 'Bitiş fotoğrafı için tablayı yükselt',
    finishPhotoRestorePlateDescription: 'Yazıcı, baskı bittiğinde tablayı yaklaşık 100 mm aşağı indirir ve tamamlanmış baskı kameranın çerçevesinin altında kalır. Bambuddy tablayı son basılan katmanın hemen üzerine geri kaldırır, fotoğrafı çeker ve ardından tekrar indirir. Baskı yüksekliği bilinmiyorsa veya kuyrukta başka bir iş varsa atlanır.',
    ffmpegNotInstalled: 'ffmpeg yüklü değil',
    ffmpegRequired: 'Kamera yakalama ffmpeg gerektirir. <brew>brew install ffmpeg</brew> (macOS) veya <apt>apt install ffmpeg</apt> (Linux) ile yükleyin.',
    // Kamera
    camera: 'Kamera',
    cameraViewMode: 'Kamera Görüntüleme Modu',
    cameraOverlayDescription: 'Kamera ana ekranda yeniden boyutlandırılabilir bir bindirmede açılır',
    cameraWindowDescription: 'Kamera ayrı bir tarayıcı penceresinde açılır',
    externalCamerasDescription: 'Yerleşik yazıcı kamerasını değiştirmek için harici kameraları yapılandırın. MJPEG akışlarını, RTSP, HTTP anlık görüntüleri ve USB kameralarını (V4L2) destekler. Etkinleştirildiğinde, harici kamera canlı görüntüleme ve bitiş fotoğrafları için kullanılır.',
    cameraPlaceholderUsb: 'Cihaz yolu (/dev/video0)',
    cameraPlaceholderUrl: 'Kamera URL\'si (rtsp://... veya http://...)',
    cameraTypeMjpeg: 'MJPEG Akışı',
    cameraTypeRtsp: 'RTSP Akışı',
    cameraTypeSnapshot: 'HTTP Anlık Görüntü',
    cameraTypeUsb: 'USB Kamera (V4L2)',
    cameraSnapshotUrl: 'Anlık Görüntü URL (isteğe bağlı)',
    cameraSnapshotUrlPlaceholder: 'http://192.168.1.61:1984/api/frame.jpeg?src=printer',
    cameraSnapshotUrlHelp: 'Bildirim küçük resimleri, bitiş fotoğrafları, katman zaman atlamalı kareler ve plaka algılama için kullanılan tek kare URL\'si. Zaman atlamalı video ve plaka algılama, her birinin kendi yazıcı başına anahtarı gerektirir — bu URL yalnızca aktif olduklarında çektikleri görüntü kaynağıdır. Yukarıdaki canlı akıştan yakalamak için boş bırakın. go2rtc (/api/frame.jpeg) ve özel anlık görüntü uç noktasına sahip IP kameraları için kullanışlıdır.',
    cameraRotation: 'Döndürme',
    test: 'Test',
    connected: 'Bağlı',
    disconnected: 'Bağlı değil',
    // Maliyet takibi
    currency: 'Para Birimi',
    defaultFilamentCost: 'Varsayılan filament maliyeti (kg başına)',
    electricityCost: 'kWh başına elektrik maliyeti',
    energyDisplayMode: 'Enerji görüntüleme modu',
    energyModePrintDescription: 'Gösterge paneli, baskılar sırasında kullanılan enerji toplamını gösterir',
    energyModeTotalDescription: 'Gösterge paneli, akıllı prizlerden ömür boyu enerjiyi gösterir',
    // Dosya Yöneticisi
    fileManager: 'Dosya Yöneticisi',
    createArchiveEntry: 'Yazdırırken Arşiv Girişi Oluştur',
    createArchiveEntryDescription: 'Dosya Yöneticisinden yazdırırken isteğe bağlı olarak bir arşiv girişi oluştur',
    lowDiskSpaceWarning: 'Düşük Disk Alanı Uyarısı',
    lowDiskSpaceDescription: 'Boş disk alanı bu eşiğin altına düştüğünde uyarı göster',
    // Güncellemeler
    printerFirmware: 'Yazıcı Firmware',
    checkFirmwareDescription: "Bambu Lab'dan yazıcı firmware güncellemelerini kontrol et",
    bambuddySoftware: 'Bambuddy Yazılımı',
    autoCheckDescription: 'Başlangıçta otomatik olarak yeni sürümleri kontrol et',
    checkNow: 'Şimdi kontrol et',
    updateAvailableVersion: 'Güncelleme mevcut: v{{version}}',
    releaseNotes: 'Sürüm Notları',
    updateViaDocker: 'Docker Compose ile güncelle:',
    composeDirectory: 'Compose dizini',
    composeDirectoryHint: 'docker-compose.yml dosyanızın bulunduğu dizin. cd eklenmemesi için boş bırakın.',
    copyUpdateCommand: 'Güncelleme komutunu kopyala',
    updateViaHomeAssistant: "Güncellemeler Home Assistant Supervisor tarafından yönetilir. Yeni sürümü yüklemek için Home Assistant'ta Ayarlar → Eklentiler → Bambuddy'ye gidin.",
    updateViaWindowsInstaller: 'Windows kurulumları, kurucu yeniden çalıştırılarak güncellenir. Yeni sürümü aşağıdan indirin — verileriniz, ayarlarınız ve yazıcılarınız korunur.',
    downloadWindowsInstaller: 'v{{version}} için kurucuyu indir',
    installUpdate: 'Güncellemeyi Yükle',
    latestVersionRunning: 'En son sürümü çalıştırıyorsunuz',
    failedToCheckUpdates: 'Güncellemeler kontrol edilemedi: {{error}}',
    // Veri Yönetimi
    backupRestore: 'Yedekleme ve Geri Yükleme',
    backupRestoreDescription: 'Ayarları dışa/içe aktar ve GitHub yedeklemesini yapılandır',
    goToBackup: 'Yedeklemeye Git',
    // Ağ sekmesi
    externalUrl: 'Harici URL',
    externalUrlDescription: 'Bambuddy\'nin erişilebildiği harici URL. Bildirim görüntüleri ve harici entegrasyonlar için kullanılır.',
    bambuddyUrl: 'Bambuddy URL',
    externalUrlHint: 'Protokol ve port dahil edin (örn., http://192.168.1.100:8000)',
    ftpRetry: 'FTP Yeniden Dene',
    ftpRetryDescription: 'Yazıcı WiFi güvenilmez olduğunda FTP işlemlerini yeniden dene. 3MF indirmelerine, baskı yüklemelerine, zaman atlamalı video indirmelerine ve firmware güncellemelerine uygulanır.',
    autoRetryDescription: 'Başarısız FTP işlemlerini otomatik olarak yeniden dene',
    retryAttempts: 'Yeniden deneme sayısı',
    retryDelay: 'Yeniden deneme gecikmesi',
    connectionTimeout: 'Bağlantı zaman aşımı',
    time_one: '{{count}} kez',
    time_other: '{{count}} kez',
    second_one: '{{count}} saniye',
    second_other: '{{count}} saniye',
    nSeconds: '{{count}} saniye',
    increaseForWeakWifi: 'Zayıf WiFi\'li yazıcılar için artırın',
    // Home Assistant
    homeAssistant: 'Home Assistant',
    homeAssistantFullDescription: 'HA\'nın REST API\'si üzerinden akıllı prizleri kontrol etmek için Home Assistant\'a bağlanın. switch, light, input_boolean ve script varlıklarını destekler.',
    homeAssistantUrl: 'Home Assistant URL',
    longLivedAccessToken: 'Uzun Ömürlü Erişim Belirteci',
    haTokenHint: "HA'da belirteç oluşturun: Profil → Uzun Ömürlü Erişim Belirteçleri → Belirteç Oluştur",
    connectionSuccessful: 'Bağlantı Başarılı',
    connectionFailed: 'Bağlantı Başarısız',
    haConnectionSuccess: "Home Assistant'a başarıyla bağlanıldı.",
    haConnectionFailed: "Home Assistant'a bağlanılamadı.",
    // MQTT
    mqttPublishing: 'MQTT Yayınlama',
    mqttDescription: 'Node-RED, Home Assistant ve diğer otomasyon sistemleriyle entegrasyon için BamBuddy olaylarını harici bir MQTT brokerına yayınla.',
    mqttEnableDescription: 'Olayları harici MQTT brokerına yayınla',
    brokerHostname: 'Broker ana bilgisayar adı',
    port: 'Port',
    usernameOptional: 'Kullanıcı adı (isteğe bağlı)',
    passwordOptional: 'Parola (isteğe bağlı)',
    topicPrefix: 'Konu öneki',
    topicPrefixHint: 'Konular: {{prefix}}/printers/<serial>/status, vb. olacak',
    // Prometheus
    prometheusMetrics: 'Prometheus Metrikleri',
    prometheusEndpointDescription: 'Prometheus/Grafana izleme için yazıcı metriklerini <code>/api/v1/metrics</code> adresinde sun.',
    bearerTokenOptional: 'Bearer Belirteci (isteğe bağlı)',
    bearerTokenHint: 'Ayarlandıysa, isteklerin <code>Authorization: Bearer <token></code> içermesi gerekir',
    metricsConnectionStatus: 'Bağlantı durumu',
    metricsPrinterState: 'Yazıcı durumu (boşta/yazdırılıyor/vb.)',
    metricsPrintProgress: 'Baskı ilerlemesi 0-100%',
    metricsBedTemp: 'Tabla sıcaklığı',
    metricsNozzleTemp: 'Nozul sıcaklığı',
    metricsPrintsTotal: 'Sonuca göre toplam baskılar',
    metricsMore: '...ve daha fazlası (katmanlar, fanlar, kuyruk, filament kullanımı)',
    // Akıllı Prizler
    smartPlugsDescription: 'Güç kontrolünü otomatikleştirmek ve yazıcılarınız için enerji kullanımını takip etmek üzere akıllı prizleri (Tasmota veya Home Assistant) bağlayın.',
    allOn: 'Tümü Açık',
    allOff: 'Tümü Kapalı',
    addSmartPlug: 'Akıllı Priz Ekle',
    energySummary: 'Enerji Özeti',
    currentPower: 'Mevcut Güç',
    plugsOnline: '{{reachable}}/{{total}} priz çevrimiçi',
    today: 'Bugün',
    yesterday: 'Dün',
    total: 'Toplam',
    enablePlugsForSummary: 'Enerji özetini görmek için prizleri etkinleştirin',
    addNotificationProvider: 'Ekle',
    // Kullanıcılar
    systemBadge: '(Sistem)',
    creating: 'Oluşturuluyor...',
    changing: 'Değiştiriliyor...',
    deleteUserAndItems: 'Kullanıcıyı VE öğelerini sil',
    deleteUserKeepItems: 'Kullanıcıyı sil, öğeleri tut (sahipsiz olur)',
    ok: 'Tamam',

    // 2FA ayarları
    twoFa: {
      totpTitle: 'Doğrulayıcı Uygulama (TOTP)',
      totpDesc: 'Google Authenticator, Aegis veya Authy gibi bir doğrulayıcı uygulama kullanın.',
      emailOtpTitle: 'E-posta OTP',
      emailOtpDesc: 'Giriş yaptığınızda {{email}} adresine tek seferlik bir kod gönder.',
      emailOtpNoEmail: 'Bu yöntemi etkinleştirmek için hesabınıza bir e-posta adresi ekleyin.',
      addEmailFirst: 'Hesabınızın e-posta adresi yok. E-posta OTP\'yi etkinleştirmeden önce bir yöneticiden eklemesini isteyin.',
      setupTotp: 'Doğrulayıcı Uygulamayı Ayarla',
      setupAuthApp: 'Doğrulayıcı Uygulamayı Ayarla',
      setupInstructions: 'Aşağıdaki QR kodunu doğrulayıcı uygulamanızla tarayın, ardından bir kodla onaylayın.',
      manualEntry: 'Tarayamıyor musunuz? Bu gizli anahtarı manuel olarak girin:',
      scannedContinue: 'Kodu taradım — devam et',
      enterCodeToConfirm: 'Kurulumu onaylamak için doğrulayıcı uygulamanızdan 6 haneli kodu girin.',
      activate: 'Etkinleştir',
      disableTotp: 'Doğrulayıcıyı Devre Dışı Bırak',
      disableConfirmHint: 'Doğrulayıcıyı devre dışı bırakmak için geçerli bir TOTP kodu veya yedek kod girin.',
      totpDisabled: 'Doğrulayıcı uygulama devre dışı bırakıldı.',
      emailOtpEnabled: 'E-posta OTP etkinleştirildi.',
      emailOtpDisabled: 'E-posta OTP devre dışı bırakıldı.',
      smtpRequired: 'Lütfen önce SMTP ayarlarını yapılandırın ve test edin.',
      invalidCode: 'Geçersiz kod. Lütfen tekrar deneyin.',
      enableEmailOtp: 'E-posta OTP\'yi Etkinleştir',
      disableEmailOtp: 'E-posta OTP\'yi Devre Dışı Bırak',
      emailSetupEnterCode: 'E-posta adresinize bir doğrulama kodu gönderildi. Bu kutunun sahibi olduğunuzu onaylamak için aşağıya girin.',
      verifyAndEnable: 'Doğrula ve Etkinleştir',
      emailDisablePasswordHint: 'E-posta OTP\'yi devre dışı bırakmayı onaylamak için hesap parolanızı girin.',
      passwordPlaceholder: 'Parolanızı girin',
      backupCodesTitle: 'Yedek kodlarınızı kaydedin',
      backupCodesWarning: 'Bu kodları güvenli bir yere kaydedin. Her kod yalnızca bir kez kullanılabilir ve tekrar gösterilmeyecektir.',
      backupCodesRemaining: '{{count}} yedek kod kaldı',
      savedCodes: 'Kodlarımı kaydettim',
      regenBackup: 'Yedek Kodları Yeniden Oluştur',
      regenBackupHint: '10 yeni yedek kod oluşturmak için mevcut TOTP kodunuzu girin. Mevcut tüm yedek kodlar geçersiz kılınacak.',
      newBackupCodes: 'Yeni yedek kodlar',
      linkedAccounts: 'Bağlı SSO Hesapları',
      linkedAccountsDesc: 'Bu harici kimlik sağlayıcıları hesabınıza bağlıdır.',
      oidcUnlinked: 'Hesap bağlantısı kaldırıldı.',
    },
    // Session Policy (#1706)
    sessionPolicy: {
      title: 'Oturum Politikası',
      description: 'Yeni kullanıcı girişleri için maksimum oturum süresi. Daha önce verilmiş belirteçler özgün son kullanma tarihlerini korur.',
      preset24h: '24 saat',
      preset7d: '7 gün',
      preset30d: '30 gün',
      customHoursLabel: 'Özel oturum süresi (saat)',
      hoursSuffix: 'saat',
      warning: 'Daha uzun oturumlar otomatik oturum kapatma korumasını azaltır. Yalnızca güvenilir tek kullanıcılı dağıtımlar için önerilir.',
    },

    // OIDC sağlayıcı ayarları
    oidc: {
      title: 'SSO / OIDC Sağlayıcıları',
      desc: 'Harici kimlik sağlayıcılar aracılığıyla tek oturum açmaya izin vermek için OpenID Connect sağlayıcılarını yapılandırın.',
      addProvider: 'Sağlayıcı Ekle',
      newProvider: 'Yeni Sağlayıcı',
      empty: 'Henüz yapılandırılmış OIDC sağlayıcısı yok.',
      created: 'Sağlayıcı oluşturuldu.',
      updated: 'Sağlayıcı güncellendi.',
      deleted: 'Sağlayıcı silindi.',
      refreshIcon: 'Simgeyi yenile',
      removeIcon: 'Simgeyi kaldır',
      iconRefreshed: 'Simge yenilendi.',
      iconRemoved: 'Simge kaldırıldı.',
      iconFetchFailed: 'Simge sağlayıcı URL\'sinden alınamadı.',
      deleteTitle: 'Sağlayıcıyı Sil',
      deleteMessage: '"{{name}}" silinsin mi? Tüm bağlı kullanıcı hesaplarının bağlantısı kaldırılacak.',
      form: {
        name: 'Görünen Ad',
        issuerUrl: 'Yayıncı URL',
        clientId: 'İstemci Kimliği',
        clientSecret: 'İstemci Gizli Anahtarı',
        scopes: 'Kapsamlar',
        iconUrl: 'Simge URL (isteğe bağlı)',
        enabled: 'Etkin',
        autoCreate: 'Kullanıcıları otomatik oluştur',
        autoCreateDesc: 'İlk girişte otomatik olarak yerel bir hesap oluştur.',
        autoLink: 'Mevcut hesapları otomatik bağla',
        autoLinkDesc: 'İlk girişte mevcut yerel hesapları e-posta eşleştirerek bağla.',
        secretHint: 'mevcut olanı korumak için boş bırakın',
        secretPlaceholder: 'yeni gizli anahtar',
        emailClaim: 'E-posta İddiası',
        emailClaimDesc: "E-posta kimliği olarak kullanılan JWT iddiası. Azure Entra ID için 'preferred_username' veya 'upn' kullanın (email_verified göndermez). Yalnızca güvenilir iddia adlarını kullanın.",
        emailClaimPlaceholder: 'email',
        emailClaimCustomClaimAutoLinkWarning: 'Özel iddialar yalnızca değer kiracı tarafından yönetildiğinde otomatik bağlantı için güvenlidir (örn. Azure Entra ID upn / preferred_username). Kimlik sağlayıcınız kullanıcıların bu iddiayı kendi kendine onaylamasına izin veriyorsa otomatik bağlantıyı etkinleştirmeyin.',
        requireEmailVerified: 'E-posta doğrulamasını gerektir',
        requireEmailVerifiedDesc: 'E-posta iddiasını yalnızca sağlayıcı doğrulanmış olarak işaretlediğinde kabul et.',
        requireEmailVerifiedWarning: 'Uyarı: e-posta doğrulama olmadan bile kabul edilecek. Yalnızca güvenilir sağlayıcılarla kullanın.',
        requireEmailVerifiedAutoLink: 'Bu ayarı değiştirmek için önce otomatik bağlantıyı devre dışı bırakın.',
        defaultGroup: 'Varsayılan Grup',
        defaultGroupDesc: 'Otomatik oluşturulan kullanıcılara atanan grup. Ayarlanmazsa Viewers\'a geri döner.',
        defaultGroupViewersFallback: 'Viewers (varsayılan)',
        autologin: 'Otomatik oturum açma',
        autologinDesc: 'Kimlik doğrulaması yapılmamış ziyaretçileri doğrudan bu sağlayıcıya yönlendir. Bu işareti yalnızca bir sağlayıcı taşıyabilir.',
      },
    },

    encryption: {
      title: 'MFA Şifreleme Durumu',
      enabledFromEnv: 'Sabit şifreleme etkin (anahtar MFA_ENCRYPTION_KEY ortam değişkeninden)',
      enabledFromFile: 'Sabit şifreleme etkin (anahtar veri dizininden yüklendi)',
      enabledGenerated: 'Sabit şifreleme otomatik oluşturulan anahtarla etkin',
      notConfigured: 'Sabit şifreleme yapılandırılmamış',
      notConfiguredDesc: 'TOTP gizli anahtarları ve OIDC client_secrets düz metin olarak saklanır. MFA_ENCRYPTION_KEY ayarlayın veya Bambuddy\'yi otomatik olarak oluşturmak için yazılabilir bir veri dizini ile yeniden başlatın.',
      allEncrypted: 'Tüm MFA gizli anahtarları sabit olarak şifrelenmiş durumda.',
      legacyRowsLabel: 'Eski düz metin satırlar',
      encryptedRowsLabel: 'Şifrelenmiş satırlar',
      legacyRowsWarning: '{{count}} eski düz metin satır algılandı. Şifrelenmiş depolamaya geçmek için OIDC sağlayıcısını yeniden kaydedin veya kullanıcının doğrulayıcı uygulamasını yeniden kaydedin.',
      backupHint: 'Otomatik oluşturulan anahtar DATA_DIR/.mfa_encryption_key konumunda saklanır ve yerel yedek ZIP\'lere dahil edilir. Yedeklerinizi güvende tutun veya MFA_ENCRYPTION_KEY\'i açıkça ayarlayın.',
      decryptionBrokenTitle: 'Şifreleme anahtarı eksik',
      decryptionBrokenError: 'Şifreleme anahtarı artık mevcut olmadığından {{count}} şifrelenmiş kayıt şifresi çözülemiyor. Kurtarmak için önceki MFA_ENCRYPTION_KEY veya DATA_DIR/.mfa_encryption_key\'i geri yükleyin.',
      migrationErrorWarning: 'Başlangıçta {{count}} eski satır yeniden şifrelenemedi. Sunucu günlüklerini kontrol edin ve yeniden denemek için Bambuddy\'yi yeniden başlatın.',
    },


    pipelineLimits: {
      title: 'Dilimleyici pipeline limitleri',
      maxCopiesLabel: 'Çalıştırma başına maksimum kopya',
      maxCopiesDesc: 'Bir pipeline çalıştırıldığında operatörlerin isteyebileceği kopya sayısı üst sınırı. Sunucu tarafı sert sınır 1000\'dir.',
    },

    // Slicer Pipelines (#1425): list/edit/delete preset bundles users saved
    // from the Slice dialog. Lives in Settings → Workflow → Pipelines sub-tab.
    pipelines: {
      title: 'Dilimleyici Pipeline\'ları',
      subtitle: 'Yeniden kullanılabilir ön ayar paketleri (yazıcı + işlem + filamentler + tabla türü). Dilimleme diyalogundan bir tane kaydedin ve bir sonraki dosyaya tek tıkla uygulayın.',
      loading: 'Pipeline\'lar yükleniyor…',
      loadError: 'Pipeline\'lar yüklenemedi.',
      confirmDelete: 'Bu pipeline silinsin mi? Bu işlem geri alınamaz.',
      staleWarning: 'Atıfta bulunulan bir veya daha fazla ön ayar artık mevcut değil. Dilimleme diyalogundan bu pipeline\'ı yeniden kaydederek düzeltin.',
      empty: {
        title: 'Henüz pipeline yok.',
        howto: 'Herhangi bir dosya için Dilimleme diyalogunu açın, yazıcı / işlem / filamentler / tablayı seçin, sonra "Pipeline olarak kaydet"e tıklayın. Kaydedilen pipeline\'larınız burada görünecek.',
      },
      field: {
        name: 'Pipeline adı',
        description: 'Açıklama',
        targetPrinter: 'Hedef yazıcı',
        noTarget: '— Hedef yok —',
        targetKind: 'Hedef türü',
        targetKindSpecific: 'Belirli yazıcı',
        targetKindClass: 'Yazıcı sınıfı',
        targetModelClass: 'Yazıcı modeli',
        fanoutStrategy: 'Dağıtım stratejisi',
        fanout: {
          max_parallel: 'Maksimum paralel — eşleşen boş yazıcılara dağıt',
          round_robin: 'Sırayla — uygun yazıcılar arasında döndür',
          fill_one_first: 'Önce birini doldur — tüm kopyaları tek yazıcıya sabitle',
        },
        fanoutShort: {
          max_parallel: 'paralel',
          round_robin: 'sırayla',
          fill_one_first: 'önce bir',
        },
      },
      action: {
        save: 'Kaydet',
        cancel: 'İptal',
        rename: 'Yeniden adlandır',
        delete: 'Sil',
      },
      slot: {
        printer: 'Yazıcı',
        process: 'İşlem',
        filament: 'Filament',
        filamentN: 'Filament {{n}}',
        filamentAll: 'Tüm {{n}} yuva',
        bed: 'Tabla',
      },
      group: {
        profiles: 'Profiller',
        filaments: 'Filamentler',
      },
      searchPlaceholder: 'Pipeline\'larda ara…',
      filterTargetType: 'Hedef türüne göre filtrele',
      filterTarget: 'Hedefe göre filtrele',
      filter: {
        all: 'Tüm hedefler',
        noTarget: 'Hedef belirlenmemiş',
        count: '{{shown}} / {{total}}',
        noMatches: 'Mevcut filtrelere uyan pipeline yok.',
      },
      toast: {
        saved: 'Pipeline kaydedildi',
        saveFailed: 'Kaydetme başarısız',
        deleted: 'Pipeline silindi',
        deleteFailed: 'Silme başarısız',
      },
      noTargetHint: 'Çalıştırmak için bir hedef yazıcı belirleyin',
      noTargetWarning: 'Bu pipeline\'ı çalıştırmadan önce bir hedef yazıcı belirleyin.',
      runs: {
        lastRun: 'Son çalıştırma',
        status: {
          queued: 'kuyrukta',
          slicing: 'dilimleniyor',
          dispatching: 'gönderiliyor',
          in_progress: 'yazdırılıyor',
          completed: 'tamamlandı',
          failed: 'başarısız',
          partial_failure: 'kısmi başarısızlık',
          cancelled: 'iptal edildi',
        },
      },
    },
  },

  // Bildirimler (push bildirimleri için)
  notification: {
    printStarted: {
      title: 'Baskı Başladı',
      body: '{{printer}}: {{filename}} yazdırmaya başladı',
    },
    printCompleted: {
      title: 'Baskı Tamamlandı',
      body: '{{printer}}: {{filename}} başarıyla tamamlandı',
    },
    printFailed: {
      title: 'Baskı Başarısız',
      body: '{{printer}}: {{filename}} başarısız oldu',
    },
    printStopped: {
      title: 'Baskı Durduruldu',
      body: '{{printer}}: {{filename}} durduruldu',
    },
    printProgress: {
      title: 'Baskı İlerlemesi',
      body: '{{printer}}: {{filename}} %{{percent}} tamamlandı',
    },
    printerOffline: {
      title: 'Yazıcı Çevrimdışı',
      body: '{{printer}} çevrimdışı',
    },
    printerError: {
      title: 'Yazıcı Hatası',
      body: '{{printer}}: {{error}}',
    },
    filamentLow: {
      title: 'Az Filament',
      body: '{{printer}}: Filament azalıyor',
    },
    maintenanceDue: {
      title: 'Bakım Zamanı',
      body: '{{printer}}: {{items}} dikkat gerektiriyor',
    },
  },

  // Hatalar
  errors: {
    generic: 'Bir şeyler ters gitti',
    networkError: 'Ağ hatası. Lütfen bağlantınızı kontrol edin.',
    notFound: 'Bulunamadı',
    unauthorized: 'Yetkisiz',
    serverError: 'Sunucu hatası',
    validationError: 'Lütfen girdinizi kontrol edin',
    printerConnectionFailed: 'Yazıcıya bağlanılamadı',
    saveFailed: 'Değişiklikler kaydedilemedi',
    deleteFailed: 'Silme başarısız',
    loadFailed: 'Veri yüklenemedi',
  },

  // HMS Hataları modali
  hmsErrors: {
    title: 'Hatalar - {{name}}',
    noErrors: 'Hata yok',
    viewOnWiki: 'Bambu Lab Wiki\'de görüntüle',
    mqttVerifyFailedRemedy: 'Yazicida Gelistirici Modunu etkinlestirin, yaziciyi yeniden baslatin ve isi tekrar baslatin.',
    unknownCode: 'Bilinmeyen HMS kodu — ayrıntılar için Bambu Lab wiki sayfasına bakın.',
    clearInstructions: 'Buradan kapatmak için yazıcıdaki hataları temizleyin.',
    clearErrors: 'Hataları Temizle',
    clearSuccess: 'HMS hataları temizlendi',
    clearFailed: 'HMS hataları temizlenemedi',
    actionSuccess: 'Eylem yazıcıya gönderildi',
    actionFailed: 'Eylem gönderilemedi',
    runoutExpectedSlot: '{{ranOut}} slotundaki filament bitti. Yazıcı şimdi {{expected}} slotunda uyumlu filament bekliyor. {{expected}} slotuna bir makara takın ve ardından Yeniden Dene\'yi seçin.',
    runoutExpectedSlotOnly: 'Yazıcı {{expected}} slotunda uyumlu filament bekliyor. Oraya bir makara takın ve ardından Yeniden Dene\'yi seçin.',
    runoutSlotUnknown: 'Filament bitti ve baskı duraklatıldı. Bambuddy yazıcının şu anda hangi slotu beklediğini belirleyemedi — istenen slot için yazıcının ekranını kontrol edin.',
    actions: {
      RESUME_PRINTING: 'Baskıyı sürdür',
      RESUME_PRINTING_DEFECTS: 'Sürdür (kusurlar kabul edilebilir)',
      RESUME_PRINTING_PROBELM_SOLVED: 'Sürdür (sorun çözüldü)',
      STOP_PRINTING: 'Baskıyı durdur',
      CHECK_ASSISTANT: 'Asistanı aç',
      FILAMENT_EXTRUDED: 'Filament ekstrude edildi, devam et',
      RETRY_FILAMENT_EXTRUDED: 'Henüz ekstrude edilmedi, tekrar dene',
      CONTINUE: 'Tamamlandı, devam et',
      LOAD_VIRTUAL_TRAY: 'Filament yükle',
      OK_BUTTON: 'Tamam',
      FILAMENT_LOAD_RESUME: 'Filament yüklendi, sürdür',
      JUMP_TO_LIVEVIEW: 'Canlı görünümü aç',
      NO_REMINDER_NEXT_TIME: 'Bir daha hatırlatma',
      REFRESH_NOZZLE: 'Tekrar kontrol et',
      IGNORE_NO_REMINDER_NEXT_TIME: 'Yok say ve bir daha hatırlatma',
      IGNORE_RESUME: 'Yok say ve sürdür',
      PROBLEM_SOLVED_RESUME: 'Sorun çözüldü, sürdür',
      TURN_OFF_FIRE_ALARM: 'Anlaşıldı, yangın alarmını kapat',
      RETRY_PROBLEM_SOLVED: 'Tekrar dene (sorun çözüldü)',
      CANCLE: 'İptal',
      STOP_DRYING: 'Kurutmayı durdur',
      PROCEED: 'Devam et',
      OK_JUMP_RACK: 'Tamam',
      ABORT: 'İptal',
      DISABLE_PURIFICATION: 'Bu baskı için arıtmayı devre dışı bırak',
      DONT_REMIND_NEXT_TIME: 'Beni hatırlatma',
      DBL_CHECK_CANCEL: 'İptal',
      DBL_CHECK_DONE: 'Tamam',
      DBL_CHECK_RETRY: 'Tekrar dene',
      DBL_CHECK_RESUME: 'Sürdür',
      DBL_CHECK_OK: 'Onayla',
      REMOVE_CLOSE_BTN: 'Kapat',
    },
  },

  // MQTT Hata Ayıklama modali
  mqttDebug: {
    title: 'MQTT Hata Ayıklama Günlüğü',
    searchPlaceholder: 'Konu veya yük ara...',
    noMessages: 'Henüz mesaj kaydedilmedi',
    startLoggingHint: 'MQTT mesajlarını yakalamaya başlamak için "Kaydetmeye Başla"ya tıklayın',
    noMessagesMatch: 'Filtrenizle eşleşen mesaj yok',
    adjustFilterHint: 'Arama veya filtre kriterlerinizi ayarlamayı deneyin',
    incoming: 'Gelen',
    outgoing: 'Giden',
    loggingStopped: 'Kaydetme durduruldu',
    loggingActive: 'Kaydetme aktif - mesajlar otomatik olarak yenilenecek',
    startLogging: 'Kaydetmeye Başla',
    stopLogging: 'Kaydetmeyi Durdur',
    clearLog: 'Günlüğü Temizle',
    topic: 'Konu',
    timestamp: 'Zaman damgası',
    direction: 'Yön',
    all: 'Tümü',
  },

  // Yazıcı Dosya Yöneticisi modali (yazıcı dahili deposu)
  printerFiles: {
    title: 'Dosya Yöneticisi',
    storageUsed: 'Kullanılan:',
    storageFree: 'Boş:',
    filterPlaceholder: 'Dosyaları filtrele...',
    deleteButton: 'Sil',
    deleteFiles: '{{count}} Dosya Sil',
    deleteFileConfirm: '"{{name}}" silinsin mi? Bu geri alınamaz.',
    deleteFilesConfirm: 'Seçilen {{count}} dosya silinsin mi? Bu geri alınamaz.',
    noFiles: 'Yazıcıda dosya yok',
    loadingFiles: 'Dosyalar yükleniyor...',
    failedToLoad: 'Dosyalar yüklenemedi',
    toast: {
      filesDeleted: '{{count}} dosya silindi',
      deleteFailed: 'Silme başarısız: {{error}}',
    },
  },

  // Onaylar
  confirm: {
    delete: 'Bunu silmek istediğinizden emin misiniz?',
    unsavedChanges: 'Kaydedilmemiş değişiklikleriniz var. Çıkmak istediğinizden emin misiniz?',
    clearQueue: 'Kuyruğu temizlemek istediğinizden emin misiniz?',
  },

  // Giriş sayfası
  login: {
    title: 'Bambuddy Giriş',
    subtitle: 'Hesabınıza giriş yapın',
    username: 'Kullanıcı Adı',
    usernamePlaceholder: 'Kullanıcı adınızı girin',
    usernameOrEmail: 'Kullanıcı Adı veya E-posta',
    usernameOrEmailPlaceholder: 'Kullanıcı adı veya @ E-posta',
    password: 'Parola',
    passwordPlaceholder: 'Parolanızı girin',
    signIn: 'Giriş yap',
    signingIn: 'Giriş yapılıyor...',
    rememberMe: 'Beni Hatırla',
    forgotPassword: 'Parolanızı mı unuttunuz?',
    autologinFailed: 'Otomatik SSO girişi başarısız oldu. Devam etmek için aşağıdan bir sağlayıcı seçin.',
    localDisabledNotice: 'Yerel oturum açma devre dışı. Aşağıdaki SSO sağlayıcılarından birini kullanın.',
    loginSuccess: 'Başarıyla giriş yapıldı',
    loginFailed: 'Giriş başarısız',
    enterCredentials: 'Lütfen kullanıcı adı ve parola girin',
    enterEmail: 'Lütfen e-posta adresinizi girin',
    oidcLoginFailed: 'OIDC girişi başarısız',
    oidcErrors: {
      providerError: 'Kimlik sağlayıcısı bir hata döndürdü',
      missingParameters: 'OIDC geri arama gerekli parametreleri eksik',
      invalidState: 'OIDC durumu geçersiz veya zaten kullanılmış',
      stateExpired: 'OIDC giriş oturumu süresi doldu — lütfen tekrar deneyin',
      providerNotFound: 'OIDC sağlayıcısı bulunamadı',
      discoveryFailed: 'OIDC keşif belgesi alınamadı',
      invalidDiscovery: 'OIDC keşif belgesi geçersiz',
      networkError: 'OIDC belirteç değişimi sırasında ağ hatası',
      badResponse: 'OIDC belirteç değişimi sırasında beklenmeyen yanıt',
      noIdToken: 'OIDC sağlayıcısı bir ID belirteci döndürmedi',
      validationFailed: 'OIDC belirteç doğrulaması başarısız',
      nonceMismatch: 'OIDC nonce uyuşmazlığı — olası tekrar saldırısı',
      missingSubClaim: 'OIDC belirteci sub iddiasını içermiyor',
      noLinkedAccount: 'Bu OIDC kimliğine bağlı yerel hesap yok',
      accountInactive: 'Hesabınız aktif değil',
      userResolutionFailed: 'Hesabınız çözümlenemedi',
      internalError: 'OIDC girişi sırasında dahili bir hata oluştu',
      tokenExchangeFailed: 'OIDC belirteç değişimi başarısız',
    },
    forgotPasswordTitle: 'Parolayı Unuttum',
    forgotPasswordMessage: 'Parolanızı unuttuysanız, sıfırlamak için lütfen sistem yöneticinizle iletişime geçin.',
    forgotPasswordEmailMessage: 'E-posta adresinizi girin, size yeni bir parola göndereceğiz.',
    emailAddress: 'E-posta Adresi',
    emailPlaceholder: 'eposta.adresi@example.com',
    cancel: 'İptal',
    sending: 'Gönderiliyor...',
    sendResetEmail: 'Sıfırlama E-postası Gönder',
    howToReset: 'Parolanızı nasıl sıfırlarsınız:',
    resetStep1: 'Bambuddy yöneticinizle iletişime geçin',
    resetStep2: 'Kullanıcı Yönetiminde parolanızı sıfırlamasını isteyin',
    resetStep3: 'Sizin için yeni bir geçici parola belirleyebilirler',
    resetStep4: 'Yeni parolayla giriş yapın ve Ayarlarda değiştirin',
    gotIt: 'Anladım',
    resetPassword: {
      title: 'Yeni Parola Belirle',
      subtitle: 'Aşağıya yeni parolanızı girin ve onaylayın.',
      newPassword: 'Yeni Parola',
      newPasswordPlaceholder: 'En az 8 karakter',
      confirmPassword: 'Parolayı Onayla',
      confirmPasswordPlaceholder: 'Yeni parolayı tekrarlayın',
      saving: 'Kaydediliyor…',
      submit: 'Yeni Parola Belirle',
      backToLogin: 'Girişe dön',
      passwordsDoNotMatch: 'Parolalar eşleşmiyor',
      passwordTooShort: 'Parola en az 8 karakter olmalı',
      resetFailed: 'Parola sıfırlama başarısız. Bağlantının süresi dolmuş olabilir.',
    },
    twoFA: {
      title: 'İki Faktörlü Kimlik Doğrulama',
      subtitle: 'Hesabınız 2FA ile korunuyor. Aşağıya doğrulama kodunu girin.',
      methodAuthenticator: 'Doğrulayıcı Uygulama',
      methodEmail: 'E-posta Kodu',
      methodBackup: 'Yedek Kod',
      instructionsTotp: 'Doğrulayıcı uygulamanızı açın ve Bambuddy için 6 haneli kodu girin.',
      instructionsEmail: 'E-posta adresinize 6 haneli bir kod gönderildi. 10 dakika içinde sona erer.',
      instructionsEmailNotSent: 'E-posta yoluyla bir doğrulama kodu almak için aşağıdaki düğmeye tıklayın.',
      instructionsBackup: '8 karakterlik yedek kurtarma kodlarınızdan birini girin. Her kod yalnızca bir kez kullanılabilir.',
      sendCodeButton: 'E-posta ile Kod Gönder',
      sendingCode: 'Gönderiliyor...',
      resendCode: 'Kodu yeniden gönder',
      codeLabel: 'Doğrulama Kodu',
      backupCodeLabel: 'Yedek Kod',
      codePlaceholder: '000000',
      backupCodePlaceholder: 'XXXXXXXX',
      verifyButton: 'Doğrula',
      verifyingButton: 'Doğrulanıyor...',
      backToLogin: '← Girişe dön',
      orContinueWith: 'veya şununla devam edin',
      signInWith: '{{provider}} ile giriş yap',
      enterCode: 'Lütfen doğrulama kodunu girin',
      sendCodeFailed: 'Doğrulama kodu gönderilemedi',
      invalidCode: 'Geçersiz kod. Lütfen tekrar deneyin.',
    },

  },

  // Kurulum sayfası
  setup: {
    title: 'Bambuddy Kurulumu',
    subtitle: 'Bambuddy örneğiniz için kimlik doğrulamayı yapılandırın',
    enableAuth: 'Kimlik Doğrulamayı Etkinleştir',
    adminAccount: 'Yönetici Hesabı',
    adminAccountDesc: 'Yönetici kullanıcılar zaten varsa, kimlik doğrulama mevcut yönetici hesapları kullanılarak etkinleştirilecek. Mevcut yöneticileri kullanmak için aşağıdaki alanları boş bırakın veya yeni bir yönetici kullanıcı oluşturmak için yeni kimlik bilgileri girin.',
    adminUsername: 'Yönetici Kullanıcı Adı',
    adminPassword: 'Yönetici Parolası',
    optionalIfAdminExists: '(yönetici kullanıcılar varsa isteğe bağlı)',
    adminUsernamePlaceholder: 'Yönetici kullanıcı adı girin (isteğe bağlı)',
    adminPasswordPlaceholder: 'Yönetici parolası girin (isteğe bağlı)',
    confirmPassword: 'Parolayı Onayla',
    confirmPasswordPlaceholder: 'Yönetici parolasını onayla',
    settingUp: 'Kuruluyor...',
    completeSetup: 'Kurulumu Tamamla',
    toast: {
      authEnabledAdminCreated: 'Kimlik doğrulama etkinleştirildi ve yönetici kullanıcı oluşturuldu',
      authEnabledExistingAdmins: 'Mevcut yönetici kullanıcılar kullanılarak kimlik doğrulama etkinleştirildi',
      setupCompleted: 'Kurulum tamamlandı',
      enterBothCredentials: 'Lütfen hem yönetici kullanıcı adı hem de parola girin veya mevcut yönetici kullanıcıları kullanmak için her ikisini de boş bırakın',
      passwordsDoNotMatch: 'Parolalar eşleşmiyor',
      passwordTooShort: 'Parola en az 6 karakter olmalı',
    },
  },

  // Parola değiştirme
  changePassword: {
    title: 'Parolayı Değiştir',
    currentPassword: 'Mevcut Parola',
    currentPasswordPlaceholder: 'Mevcut parolayı girin',
    newPassword: 'Yeni Parola',
    newPasswordPlaceholder: 'Yeni parolayı girin (en az 6 karakter)',
    confirmPassword: 'Yeni Parolayı Onayla',
    confirmPasswordPlaceholder: 'Yeni parolayı onayla',
    passwordsDoNotMatch: 'Parolalar eşleşmiyor',
    passwordTooShort: 'Parola en az 6 karakter olmalı',
    changing: 'Değiştiriliyor...',
    success: 'Parola başarıyla değiştirildi',
    failed: 'Parola değiştirilemedi',
  },

  // Plaka algılama uyarısı
  plateAlert: {
    title: 'Baskı Duraklatıldı!',
    message: 'Baskı plakasında nesneler algılandı. Baskı otomatik olarak duraklatıldı. Lütfen plakayı temizleyin ve baskıya devam edin.',
    understand: 'Anladım',
  },

  // Kamera sayfası
  camera: {
    title: 'Kamera Görünümü',
    invalidPrinterId: 'Geçersiz yazıcı ID\'si',
    live: 'Canlı',
    snapshot: 'Anlık Görüntü',
    restartStream: 'Akışı yeniden başlat',
    refreshSnapshot: 'Anlık görüntüyü yenile',
    fullscreen: 'Tam ekran',
    exitFullscreen: 'Tam ekrandan çık',
    connectingToCamera: 'Kameraya bağlanılıyor...',
    capturingSnapshot: 'Anlık görüntü yakalanıyor...',
    connectionLost: 'Bağlantı kesildi',
    connectionFailed: 'Kamera bağlantısı başarısız',
    reconnecting: '{{countdown}}sn içinde yeniden bağlanılıyor... (deneme {{attempt}}/{{max}})',
    reconnectNow: 'Şimdi yeniden bağlan',
    cameraUnavailable: 'Kamera kullanılamıyor',
    cameraUnavailableDesc: 'Yazıcının açık ve bağlı olduğundan emin olun.',
    noCamera: 'Kamera yok',
    retry: 'Yeniden dene',
    cameraStream: 'Kamera akışı',
    zoomOut: 'Uzaklaştır',
    zoomIn: 'Yakınlaştır',
    resetZoom: 'Yakınlaştırmayı sıfırla',
    recording: 'Kaydediyor',
    startRecording: 'Kaydı Başlat',
    stopRecording: 'Kaydı Durdur',
    chamberLight: 'Hazne ışığını aç/kapat',
    unavailable: 'Kamera kullanılamıyor',
    diagnose: {
      button: 'Tanıla',
      modalTitle: 'Kamera tanılaması',
      running: 'Tanılama çalışıyor...',
      runFailed: 'Tanılama çalıştırılamadı: {{error}}',
      retry: 'Tekrar çalıştır',
      stage: {
        tcp_reachable: 'Ağ erişilebilirliği',
        first_frame: 'Kare yakalama',
        live_stream_active: 'Canlı akış aktif',
      },
      summary: {
        all_ok: 'Kamera çalışıyor. Tanılama tüm aşamaları başarıyla tamamladı.',
        live_stream_active_healthy: 'Kamera şu anda son karelerle akış yapıyor — teste gerek yok.',
        printer_unreachable: 'Yazıcıya erişilemiyor. IP adresini, ağ bağlantısını ve yazıcının açık olduğunu kontrol edin.',
        camera_port_closed: 'Yazıcıya erişilebilir ancak kamera portu kapalı. Yazıcı ayarlarında yalnızca LAN modunun ve Geliştirici Modunun etkin olduğundan emin olun.',
        no_frame: 'Kameraya bağlanıldı ancak hiç kare alınmadı. Tekrar deneyin veya yazıcı ayarlarında kameranın etkin olduğunu kontrol edin.',
        unknown_failure: 'Kamera tanılaması bilinmeyen bir nedenle başarısız oldu. Ayrıntılar için destek günlüğüne bakın.',
      },
      meta: {
        protocol: 'Protokol',
        port: 'Port',
        profile: 'Profil',
      },
    },
  },

  // Grup yönetimi
  groups: {
    title: 'Grup Yönetimi',
    subtitle: 'Erişim kontrolü için izin gruplarını yönetin',
    backToSettings: 'Ayarlara Dön',
    createGroup: 'Grup Oluştur',
    noPermission: 'Bu sayfaya erişim izniniz yok.',
    system: 'Sistem',
    noDescription: 'Açıklama yok',
    usersCount: '{{count}} kullanıcı',
    permissionsCount: '{{count}} izin',
    edit: 'Düzenle',
    delete: 'Sil',
    toast: {
      created: 'Grup başarıyla oluşturuldu',
      updated: 'Grup başarıyla güncellendi',
      deleted: 'Grup başarıyla silindi',
      enterGroupName: 'Lütfen bir grup adı girin',
    },
    modal: {
      editGroup: 'Grubu Düzenle',
      createGroup: 'Grup Oluştur',
      cancel: 'İptal',
      saving: 'Kaydediliyor...',
      creating: 'Oluşturuluyor...',
      saveChanges: 'Değişiklikleri Kaydet',
    },
    form: {
      groupName: 'Grup Adı',
      groupNamePlaceholder: 'Grup adını girin',
      systemGroupWarning: 'Sistem grubu adları değiştirilemez',
      description: 'Açıklama',
      descriptionPlaceholder: 'Açıklama girin (isteğe bağlı)',
      permissions: 'İzinler ({{count}} seçildi)',
    },
    deleteModal: {
      title: 'Grubu Sil',
      message: 'Bu grubu silmek istediğinizden emin misiniz? Bu gruptaki kullanıcılar bu izinleri kaybedecek.',
      confirm: 'Grubu Sil',
    },
    editor: {
      title: 'Grubu Düzenle',
      createTitle: 'Grup Oluştur',
      search: 'İzinlerde ara...',
      selectAll: 'Tümünü Seç',
      clearAll: 'Tümünü Temizle',
      permissionsSelected: '{{count}} seçildi',
      noResults: 'Aramanızla eşleşen izin yok',
      websocketHint: 'Canlı güncellemeler için gereklidir. Bu izin olmadan arayüz düzenli yoklamaya geri döner.',
    },
  },

  // Kullanıcı yönetimi
  users: {
    title: 'Kullanıcı Yönetimi',
    subtitle: 'Kullanıcıları ve Bambuddy örneğinize erişimlerini yönetin',
    backToSettings: 'Ayarlara Dön',
    createUser: 'Kullanıcı Oluştur',
    noPermission: 'Bu sayfaya erişim izniniz yok.',
    admin: 'Yönetici',
    noGroups: 'Grup yok',
    active: 'Aktif',
    inactive: 'Pasif',
    edit: 'Düzenle',
    delete: 'Sil',
    system: 'Sistem',
    noGroupsAvailable: 'Kullanılabilir grup yok',
    table: {
      username: 'Kullanıcı Adı',
      groups: 'Gruplar',
      status: 'Durum',
      actions: 'İşlemler',
    },
    toast: {
      created: 'Kullanıcı başarıyla oluşturuldu',
      updated: 'Kullanıcı başarıyla güncellendi',
      deleted: 'Kullanıcı başarıyla silindi',
      fillRequired: 'Lütfen tüm zorunlu alanları doldurun',
      passwordsDoNotMatch: 'Parolalar eşleşmiyor',
      passwordTooShort: 'Parola en az 6 karakter olmalı',
      ldapProvisioned: '"{{username}}" LDAP kullanıcısı tedarik edildi',
    },
    modal: {
      createUser: 'Kullanıcı Oluştur',
      editUser: 'Kullanıcıyı Düzenle',
      cancel: 'İptal',
      creating: 'Oluşturuluyor...',
      saving: 'Kaydediliyor...',
      saveChanges: 'Değişiklikleri Kaydet',
      advancedAuthSubtitle: 'Gelişmiş Kimlik Doğrulama ile',
      // LDAP manuel tedarik (#1298)
      tabsAriaLabel: 'Kullanıcı kaynağı',
      localTab: 'Yerel',
      ldapTab: 'LDAP',
      ldapSearchLabel: 'Dizinde ara',
      ldapSearchPlaceholder: 'Bir kullanıcı adı, isim veya e-posta yazın...',
      ldapMinChars: 'Aramak için en az 2 karakter yazın',
      ldapTypeToSearch: 'LDAP dizininde aramak için yazmaya başlayın',
      ldapSearching: 'Dizinde aranıyor...',
      ldapNoResults: 'Dizinde eşleşen kullanıcı yok',
      ldapSearchError: 'Dizin araması başarısız. LDAP sunucu durumunu kontrol edin.',
      ldapAlreadyProvisioned: 'Zaten tedarik edildi',
      ldapSelectedLabel: 'Seçildi',
      ldapProvision: 'Kullanıcıyı tedarik et',
      ldapProvisioning: 'Tedarik ediliyor...',
      ldapErrorProvision: 'Tedarik başarısız. LDAP sunucu durumunu kontrol edin ve tekrar deneyin.',
    },
    form: {
      username: 'Kullanıcı Adı',
      usernamePlaceholder: 'Kullanıcı adını girin',
      email: 'E-posta',
      emailPlaceholder: 'kullanici@example.com',
      password: 'Parola',
      passwordPlaceholder: 'Parolayı girin',
      confirmPassword: 'Parolayı Onayla',
      confirmPasswordPlaceholder: 'Parolayı onayla',
      newPasswordPlaceholder: 'Yeni parolayı girin',
      confirmNewPasswordPlaceholder: 'Yeni parolayı onayla',
      leaveBlankToKeep: 'mevcut olanı korumak için boş bırakın',
      groups: 'Gruplar',
      optional: 'isteğe bağlı',
      autoGeneratedPassword: 'Güvenli bir parola otomatik olarak oluşturulacak ve kullanıcıya e-posta ile gönderilecek.',
      passwordManagedByAdvancedAuth: 'Parola Gelişmiş Kimlik Doğrulama tarafından yönetilir. Kullanıcıya e-posta yoluyla yeni bir parola göndermek için "Parolayı Sıfırla"yı kullanın.',
      resetPassword: 'Parolayı Sıfırla',
      resettingPassword: 'Parola Sıfırlanıyor...',
    },
    deleteModal: {
      title: 'Kullanıcıyı Sil',
      message: 'Bu kullanıcıyı silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.',
      confirm: 'Kullanıcıyı Sil',
    },
  },

  // Akış bindirmesi
  streamOverlay: {
    title: 'Akış Bindirmesi',
    invalidPrinterId: 'Geçersiz yazıcı ID\'si',
    cameraStream: 'Kamera akışı',
    progress: 'İlerleme',
    eta: 'ETA',
    printerIdle: 'Yazıcı boşta',
    printerOffline: 'Yazıcı çevrimdışı',
    builder: {
      title: 'Yayın Kaplaması',
      description: 'Yayın kaplaması için URL oluşturur: tam ekran kamera görüntüsünün üzerine canlı baskı bilgileri bindirilir; OBS, duvar ekranı veya herhangi bir tarayıcı kaynağı için. İstediğiniz alanları seçip URL\'yi kopyalayın.',
      printer: 'Yazıcı',
      size: 'Yazı boyutu',
      sizeSmall: 'Küçük',
      sizeMedium: 'Orta',
      sizeLarge: 'Büyük',
      fps: 'Kare hızı',
      fpsHint: 'A1 ve P1 kameraları, hangi değeri isterseniz isteyin saniyede yaklaşık 5 karede kalır.',
      token: 'Yayın Kaplaması belirteci (isteğe bağlı)',
      tokenHint: 'Yalnızca oturum açma etkinken gerekir: OBS\'nin kendi oturumu yoktur. Yukarıdan Yayın Kaplaması kapsamıyla bir tane oluşturun.',
      tokenWarning: 'Bu URL bir belirteç içerir: okuyabilen herkes yayını izleyebilir ve dosya adını görebilir. Erişimi kesmek için belirteci iptal edin.',
      fields: 'Gösterilecek alanlar',
      fieldPrinter: 'Yazıcı adı',
      fieldFilename: 'Dosya adı',
      fieldStatus: 'Durum',
      fieldProgress: 'İlerleme çubuğu',
      fieldLayers: 'Katman sayısı',
      fieldEta: 'Kalan süre ve tahmini bitiş',
      fieldCamera: 'Kamera görüntüsü',
      chamberHint: 'Hazne sıcaklığı yalnızca gerçek hazne sensörü olan modellerde görünür: P1 ve A1 anlamsız bir değer bildirdiği için orada gösterilmez.',
      urlTitle: 'Kaplama URL\'si',
      open: 'Aç',
      showPreview: 'Önizlemeyi göster',
      hidePreview: 'Önizlemeyi gizle',
      previewTitle: 'Kaplama önizlemesi',
    },
    status: {
      printing: 'Yazdırılıyor',
      paused: 'Duraklatıldı',
      finished: 'Tamamlandı',
      failed: 'Başarısız',
      idle: 'Boşta',
      unknown: 'Bilinmiyor',
    },
  },

  // Profiller
  profiles: {
    title: 'Profiller',
    subtitle: 'Dilimleyici ön ayarlarını ve basınç ilerleme kalibrasyonlarını yönetin',
    tabs: {
      bambuCloud: 'Bambu Cloud',
      orcaCloud: 'Orca Cloud',
      local: 'Yerel Profiller',
      kprofiles: 'K-Profilleri',
    },
    orcaCloud: {
      connectedAs: 'Bağlı kullanıcı',
      connectedShort: 'Orca Cloud\'a bağlanıldı',
      logout: 'Bağlantıyı kes',
      noLogoutPermission: 'Bağlantıyı kesme izniniz yok',
      noConnectPermission: 'Orca Cloud\'a bağlanma izniniz yok',
      retry: 'Yeniden dene',
      connectButton: 'Orca Cloud\'a bağlan',
      connect: {
        title: 'Orca Cloud\'a bağlan',
        description: 'Dilimleyici profillerinizi Bambuddy ile senkronize etmek için Orca Cloud hesabınıza giriş yapın.',
      },
      device: {
        title: 'Orca Cloud\'da Bambuddy\'yi onayla',
        instruction: 'Orca Cloud\'u açın ve bu kodu onaylayın. Onayladığınızda Bambuddy otomatik olarak bağlanır.',
        codeLabel: 'Eşleştirme kodunuz',
        openButton: 'Orca Cloud onay sayfasını aç',
        manualHint: 'Ya da {{url}} adresine gidin ve yukarıdaki kodu girin.',
        waiting: 'Onayınız bekleniyor…',
        cancel: 'İptal',
      },
      profiles: {
        title: 'Orca Cloud profilleriniz ({{count}})',
        refresh: 'Yenile',
        empty: 'Orca Cloud hesabınızda henüz profil bulunamadı.',
      },
      toast: {
        disconnected: 'Orca Cloud bağlantısı kesildi',
      },
      errors: {
        startFailed: 'Orca Cloud giriş akışı başlatılamadı.',
        denied: 'Eşleştirme Orca Cloud\'da reddedildi.',
        expired: 'Eşleştirme kodunun süresi doldu. Tekrar denemek için Bağlan\'a tıklayın.',
        pollFailed: 'Onay beklenirken bağlantı kesildi. Lütfen tekrar deneyin.',
      },
    },
    localProfiles: {
      title: 'Yerel Profiller',
      subtitle: 'OrcaSlicer\'dan dilimleyici ön ayarlarını içe aktar ve yönet',
      import: 'Profilleri İçe Aktar',
      importDesc: '.bbscfg, .bbsflmt, .orca_filament, .zip veya .json dosyalarını buraya bırakın',
      importing: 'İçe aktarılıyor...',
      search: 'Yerel ön ayarlarda ara...',
      noPresets: 'Henüz yerel ön ayar yok',
      noSearchResults: 'Aramanızla eşleşen ön ayar yok',
      badge: 'Yerel',
      edit: 'Düzenle',
      delete: 'Sil',
      cancel: 'İptal',
      deleteConfirmTitle: 'Ön Ayarı Sil',
      deleteConfirm: 'Bu ön ayarı silmek istediğinizden emin misiniz? Bu geri alınamaz.',
      source: 'Kaynak',
      inheritsFrom: 'Miras alır',
      filamentType: 'Tür',
      vendor: 'Satıcı',
      compatiblePrinters: 'Yazıcılar',
      nozzleTemp: 'Nozul Sıcaklığı',
      cost: 'Maliyet',
      density: 'Yoğunluk',
      pressureAdvance: 'Basınç İlerlemesi',
      filament: 'Filament',
      process: 'İşlem',
      printer: 'Yazıcı',
      toast: {
        importSuccess: '{{count}} ön ayar içe aktarıldı',
        importSkipped: '{{count}} ön ayar atlandı (yinelenenler)',
        importError: 'İçe aktarma sırasında {{count}} hata',
        deleted: 'Ön ayar silindi',
        updated: 'Ön ayar güncellendi',
      },
    },
    connectedAs: 'Bağlı kullanıcı',
    signInExpiredTitle: 'Bambu Cloud oturumu sona erdi',
    signInExpiredBody: 'Bambu Lab kayıtlı belirteci artık kabul etmiyor. Bulut profillerini, MakerWorld içe aktarmalarını ve donanım yazılımı denetimlerini geri yüklemek için yeniden oturum açın.',
    logout: 'Çıkış',
    noLogoutPermission: 'Çıkış yapma izniniz yok',
    failedToLoad: 'Profiller yüklenemedi',
    retry: 'Yeniden dene',
    time: {
      justNow: 'Az önce',
      minsAgo: '{{count}}dk önce',
      hoursAgo: '{{count}}sa önce',
      daysAgo: '{{count}}g önce',
    },
    toast: {
      loggedOut: 'Çıkış yapıldı',
    },
    login: {
      title: "Bambu Cloud'a Bağlan",
      subtitle: 'Dilimleyici ön ayarlarınızı cihazlar arasında senkronize edin',
      email: 'E-posta',
      password: 'Parola',
      region: 'Bölge',
      regionGlobal: 'Global',
      regionChina: 'Çin',
      verificationCode: 'Doğrulama Kodu',
      totpCode: 'Doğrulayıcı Kodu',
      checkEmail: 'E-postanızı ({{email}}) 6 haneli kod için kontrol edin',
      enterTotpHint: 'Doğrulayıcı uygulamanızdan 6 haneli kodu girin',
      accessToken: 'Erişim Belirteci',
      accessTokenHint: "Bambu Cloud erişim belirtecinizi yapıştırın. Çin bölgesi hesapları bu yolu kullanmalıdır (telefon bağımlı — e-posta girişi kullanılamaz). MakerWorld çerezlerinden belirteci nasıl alacağınız için wiki'ye bakın.",
      back: 'Geri',
      loginButton: 'Giriş',
      verifyButton: 'Doğrula',
      setTokenButton: 'Belirteç Ayarla',
      useToken: 'Erişim belirteci kullan',
      captchaTitle: 'Bambu Cloud CAPTCHA istiyor',
      captchaBody: 'Bambu, oturum açmayı kabul etmeden önce ağınızdan CAPTCHA doğrulaması istiyor ve bu doğrulama Bambuddy üzerinden yanıtlanamaz. Sorun e-postanız veya parolanız değil. Engel genel IP adresinize bağlıdır ve genellikle birkaç saat içinde kendiliğinden kalkar; sürekli yeniden denemek süreyi uzatır. Şimdi oturum açmak için tarayıcı oturumundan alınan bir erişim belirteci kullanın.',
      useEmail: 'E-posta ile giriş yap',
      toast: {
        loggedIn: 'Başarıyla giriş yapıldı',
        codeSent: 'Doğrulama kodu e-postanıza gönderildi',
        enterTotp: 'Doğrulayıcı uygulamanızdan kod girin',
        tokenSet: 'Belirteç başarıyla ayarlandı',
      },
    },
    presets: {
      myPreset: 'Ön ayarım (düzenlenebilir)',
      duplicate: 'Çoğalt',
      editable: 'Düzenlenebilir',
      failedToLoadDetails: 'Ön ayar ayrıntıları yüklenemedi',
      deleteConfirm: 'Bu ön ayar silinsin mi?',
      deleteWarning: "Bu, \"{{name}}\" ön ayarını Bambu Cloud'dan kalıcı olarak silecek. Bu geri alınamaz.",
      noDuplicatePermission: 'Ön ayarları çoğaltma izniniz yok',
      noEditPermission: 'Ön ayarları düzenleme izniniz yok',
      noDeletePermission: 'Ön ayarları silme izniniz yok',
      types: {
        filament: 'Filament ön ayarı',
        printer: 'Yazıcı ön ayarı',
        process: 'İşlem ön ayarı',
      },
      toast: {
        deleted: 'Ön ayar silindi',
        created: 'Ön ayar oluşturuldu',
        updated: 'Ön ayar güncellendi',
        duplicated: 'Ön ayar çoğaltıldı',
        fieldAdded: '"{{key}}" alanı eklendi',
        exported: 'Ön ayar dışa aktarıldı',
      },
      baseLabel: 'Taban: {{name}}',
      currentLabel: 'Mevcut: {{name}}',
      newPreset: 'Yeni Ön Ayar',
      editPreset: 'Ön Ayarı Düzenle',
      duplicatePreset: 'Ön Ayarı Çoğalt',
      createNewPreset: 'Yeni Ön Ayar Oluştur',
      customizeSettings: 'Yeni ön ayarınız için ayarları özelleştirin',
      compareWithBase: 'Taban ön ayarla karşılaştır',
      compare: 'Karşılaştır',
      basePreset: 'Taban Ön Ayar',
      selectBasePreset: 'Taban ön ayar seç...',
      presetName: 'Ön Ayar Adı',
      myCustomPreset: 'Özel ön ayarım',
      inheritsFrom: 'Miras alır',
      dropJsonToImport: 'İçe aktarmak için JSON bırakın',
      tabs: {
        common: 'Ortak',
        allFields: 'Tüm Alanlar',
      },
      availableFields: 'Kullanılabilir Alanlar',
      searchFieldsPlaceholder: 'Alanlarda ara...',
      noMatchingFields: 'Eşleşen alan yok',
      allFieldsAdded: 'Tüm alanlar eklendi',
      addCustomField: 'Özel alan ekle',
      yourOverrides: 'Geçersiz Kılmalarınız',
      noOverridesYet: 'Henüz geçersiz kılma yok',
      clickFieldsToAdd: 'Eklemek için soldaki alanlara tıklayın',
      saveAsTemplate: 'Şablon olarak kaydet',
      jsonTip: 'İpucu: Ayarları içe aktarmak için bu modalin herhangi bir yerine .json dosyasını sürükleyip bırakın',
    },
    cloudView: {
      searchPlaceholder: 'Ön ayarlarda ara...',
      templates: 'Şablonlar',
      refresh: 'Yenile',
      newPreset: 'Yeni Ön Ayar',
      clearFilters: 'Filtreleri temizle',
      compareMode: 'Karşılaştırma Modu',
      selectAnotherPreset: 'Başka bir {{type}} ön ayarı seç',
      clickTwoPresets: 'Karşılaştırmak için aynı türden iki ön ayara tıklayın',
      selectFirst: '1. İlkini seç',
      selectSecond: '2. İkincisini seç',
      compareNow: 'Şimdi Karşılaştır',
      lastSynced: 'Son senkronizasyon:',
      showingCount: '{{total}} ön ayardan {{showing}} tanesi gösteriliyor',
      noPresetsFound: 'Ön ayar bulunamadı',
      columns: {
        filament: 'Filament',
        process: 'İşlem',
        printer: 'Yazıcı',
      },
      noFilamentPresets: 'Filament ön ayarı yok',
      noProcessPresets: 'İşlem ön ayarı yok',
      noPrinterPresets: 'Yazıcı ön ayarı yok',
      filters: {
        type: 'Tür',
        owner: 'Sahip',
        printer: 'Yazıcı',
        nozzle: 'Nozul',
        filament: 'Filament',
        layer: 'Katman',
        all: 'Tümü',
        myPresets: 'Ön Ayarlarım',
        builtIn: 'Yerleşik',
        process: 'İşlem',
      },
      noTemplatesPermission: 'Şablonları yönetme izniniz yok',
      noRefreshPermission: 'Profilleri yenileme izniniz yok',
      noCreatePermission: 'Ön ayar oluşturma izniniz yok',
    },
    templates: {
      title: 'Hızlı Şablonlar',
      noTemplates: 'Henüz şablon yok',
      createFirst: 'Ön ayar düzenleyicisinden şablonlar oluşturun',
      typeFilter: 'Tür:',
      deleteTitle: 'Şablonu Sil',
      deleteWarning: 'Bu işlem geri alınamaz',
      deleteConfirm: '"{{name}}" silmek istediğinizden emin misiniz?',
      namePlaceholder: 'Şablon adı',
      descriptionPlaceholder: 'Açıklama',
      settingsJson: 'Ayarlar (JSON)',
      fieldsCount: '{{count}} alan',
      shownInModals: 'Modallerde gösterilir',
      hiddenInModals: 'Modallerde gizli',
      apply: 'Uygula',
      toast: {
        deleted: 'Şablon silindi',
        updated: 'Şablon güncellendi',
        created: 'Şablon oluşturuldu',
        applied: 'Şablon uygulandı',
      },
    },
  },

  // Destek/Hata Ayıklama
  support: {
    debugLoggingActive: 'Hata ayıklama kaydı aktif',
    manageLogs: 'Yönet',
    collectItem7: 'Yazıcı bağlantısı ve firmware sürümleri',
    collectItem8: 'Entegrasyon durumu (Spoolman, MQTT, HA)',
    collectItem9: 'Ağ arayüzleri (yalnızca alt ağlar)',
    collectItem10: 'Python paket sürümleri',
    collectItem11: 'Veritabanı sağlık kontrolleri',
    collectItem12: 'Docker ortam ayrıntıları',
    bundleGenerating: 'Paket oluşturuluyor...',
    bundleStepConnection: 'Yazıcı bağlantı kontrolleri çalıştırılıyor',
    bundleStepVirtualPrinters: 'Sanal yazıcı kurulum kontrolleri çalıştırılıyor',
    bundleStepLogScan: 'Son günlüklerde bilinen sorunlar taranıyor',
    bundleStepBuild: 'Destek paketi ZIP oluşturuluyor',
  },

  // Dosya yöneticisi
  fileManager: {
    variants: {
      badge: '{{count}} sürüm',
      groupAction: 'Sürüm olarak grupla',
      groupTooltip: 'Bu dosyaları farklı yazıcılar için dilimlenmiş aynı iş olarak işaretle',
      grouped: '{{count}} dosya sürüm olarak gruplandı',
      printAlternatives: 'Yazdır ({{count}} alternatif)',
    },
    title: 'Dosya Yöneticisi',
    subtitle: 'Baskı dosyalarınızı organize edin ve yönetin',
    uploadFiles: 'Dosya Yükle',
    newFolder: 'Yeni Klasör',
    folderName: 'Klasör Adı',
    folderNamePlaceholder: 'örn., Fonksiyonel Parçalar',
    renameFile: 'Dosyayı Yeniden Adlandır',
    renameFolder: 'Klasörü Yeniden Adlandır',
    invalidFilenameChar: 'Baskı dosya adlarında "{{char}}" karakterine izin verilmiyor. Yazıcının SD kartı şu karakterleri reddeder: < > : " / \\ | ? *',
    moveFiles: '{{count}} Dosyayı Taşı',
    rootNoFolder: 'Kök (Klasör Yok)',
    current: 'mevcut',
    linkFolder: 'Klasörü Bağla',
    linkFolderDescription: 'Hızlı erişim için "{{name}}" klasörünü bir projeye veya arşive bağla.',
    project: 'Proje',
    archive: 'Arşiv',
    noProjectsFound: 'Proje bulunamadı',
    noArchivesFound: 'Arşiv bulunamadı',
    unlink: 'Bağlantıyı Kaldır',
    link: 'Bağla',
    dragDropFiles: 'Dosyaları buraya sürükleyip bırakın',
    dropFilesHere: 'Dosyaları buraya bırakın',
    releaseToUpload: 'Yüklemek için bırakın',
    orClickToBrowse: 'veya göz atmak için tıklayın',
    allFileTypesSupported: 'Tüm dosya türleri desteklenir. ZIP dosyaları çıkarılacak.',
    zipFilesDetected: 'ZIP dosyaları algılandı',
    zipExtractOptions: 'ZIP dosyaları çıkarılacak. Klasör yapısını nasıl yöneteceğinizi seçin:',
    preserveZipStructure: "ZIP'ten klasör yapısını koru",
    createFolderFromZip: 'ZIP dosya adından klasör oluştur',
    stlThumbnailGeneration: 'STL küçük resim oluşturma',
    zipMayContainStl: 'ZIP dosyaları STL dosyaları içerebilir. Küçük resimler çıkarma sırasında oluşturulabilir.',
    thumbnailsCanBeGenerated: 'STL dosyaları için küçük resimler oluşturulabilir. Büyük modellerin işlenmesi daha uzun sürebilir.',
    generateThumbnailsForStl: 'STL dosyaları için küçük resim oluştur',
    threemfDetected: '3MF dosyaları algılandı',
    threemfExtractionInfo: 'Yazıcı modeli, malzeme, renk ve baskı ayarları 3MF dosyalarından otomatik olarak çıkarılacak.',
    willBeExtracted: 'Çıkarılacak',
    filesExtracted: '{{count}} dosya çıkarıldı',
    uploadComplete: 'Yükleme tamamlandı: {{succeeded}} başarılı',
    uploadFailed: 'Yükleme başarısız',
    zipFilesFailed: '{{count}} dosya başarısız',
    uploading: 'Yükleniyor...',
    changeLink: 'Bağlantıyı Değiştir...',
    linkTo: 'Şuna bağla...',
    linkToProjectOrArchive: 'Projeye veya arşive bağla',
    generateThumbnail: 'Küçük Resim Oluştur',
    generateThumbnails: 'Küçük Resimler Oluştur',
    generateThumbnailsForMissing: 'Eksik olan STL dosyaları için küçük resimler oluştur',
    gridView: 'Izgara görünümü',
    listView: 'Liste görünümü',
    lowDiskSpaceWarning: 'Düşük disk alanı uyarısı',
    lowDiskSpaceDetails: 'Toplam {{total}} alandan yalnızca {{free}} boş. Eşik ayarlarda {{threshold}} GB olarak ayarlanmış.',
    files: 'Dosyalar',
    folders: 'Klasörler',
    size: 'Boyut',
    free: 'Boş',
    allFiles: 'Tüm Dosyalar',
    allExternal: 'Harici',
    externalIsEmpty: 'Harici dosya yok',
    externalEmptyDescription: 'Bağlı harici klasörlerinizdeki dosyalar burada görünecek.',
    wrap: 'Sar',
    enableTextWrapping: 'Metin sarmayı etkinleştir',
    disableTextWrapping: 'Metin sarmayı devre dışı bırak',
    collapse: 'Daralt',
    collapseFoldersByDefault: 'Klasörleri varsayılan olarak daralt',
    expandFoldersByDefault: 'Klasörleri varsayılan olarak genişlet',
    folderSort: 'Klasörleri sırala',
    folderSortByName: 'Ada göre',
    folderSortByActivity: 'Son etkinliğe göre',
    dragToResizeTooltip: 'Yeniden boyutlandırmak için sürükleyin, sıfırlamak için çift tıklayın',
    searchFiles: 'Dosyalarda ara...',
    searchSubfoldersHint: 'Alt klasörler dahil',
    readme: {
      truncated: 'Kısaltıldı',
      show: 'README’yi göster',
      hide: 'README’yi gizle',
      label: 'README',
    },
    tags: {
      title: 'Etiketler',
      subtitle: 'Çapraz filtreleme için dosyaları etiketleyin — oyuncak, çocuklar için güvenli, sadece PETG, ne isterseniz.',
      manage: 'Etiketler',
      manageTitle: 'Etiket kataloğunu yönet',
      add: 'Yeni etiket',
      edit: 'Etiketi yeniden adlandır',
      name: 'Ad',
      fileCount: 'Dosya',
      empty: 'Henüz etiket yok. Bir tane oluşturup dosyaları etiketlemeye başlayın.',
      noMatches: 'Eşleşen etiket yok.',
      createPlaceholder: 'örn. oyuncak, çocuk-güvenli, petg',
      createButton: 'Oluştur',
      nameRequired: 'Ad gerekli.',
      searchPlaceholder: 'Etiketleri filtrele...',
      created: 'Etiket oluşturuldu.',
      updated: 'Etiket yeniden adlandırıldı.',
      deleted: 'Etiket kaldırıldı.',
      saveFailed: 'Etiket kaydedilemedi.',
      deleteFailed: 'Etiket kaldırılamadı.',
      applyFailed: 'Etiketler uygulanamadı.',
      applyAdd: 'Etiket ekle',
      applyRemove: 'Etiket kaldır',
      applyAddSuccess: '{{files}} dosyaya {{count}} etiket eklendi.',
      applyRemoveSuccess: '{{files}} dosyadan {{count}} etiket kaldırıldı.',
      actionAdd: 'Seçili dosyalara ekle',
      actionRemove: 'Seçili dosyalardan kaldır',
      tagAction: 'Etiketle',
      bulkTitle: 'Seçili {{count}} dosyayı etiketle',
      bulkTooltip: 'Seçili her dosyaya etiket ekleyin veya kaldırın.',
      noPermission: 'Dosyaları etiketleme izniniz yok.',
      filterLabel: 'Filtre:',
      clearAll: 'Tümünü temizle',
      confirmDelete: '"{{name}}" etiketi silinsin mi?',
      confirmDeleteMessage: 'Bu, etiketi katalogdan kaldırır. Dosyalar diğer etiketlerini korur.',
      confirmDeleteInUseMessage: 'Bu etiket {{count}} dosyada bulunuyor. Silmek hepsinden çıkarır; dosyaların kendisine dokunulmaz.',
      editAria: '{{name}} düzenle',
      deleteAria: '{{name}} sil',
    },
    allTypes: 'Tüm türler',
    prints: 'Baskılar',
    ascending: 'Artan',
    descending: 'Azalan',
    showModified: 'Değiştirme tarihlerini göster',
    hideModified: 'Değiştirme tarihlerini gizle',
    lastModified: 'Son değiştirme',
    lastActivity: 'Son etkinlik',
    resultsCount: '{{total}} dosyadan {{showing}} tanesi',
    selectAll: 'Tümünü Seç',
    deselectAll: 'Seçimi Kaldır',
    selected: '{{count}} seçildi',
    adding: 'Ekleniyor...',
    loadingFiles: 'Dosyalar yükleniyor...',
    folderIsEmpty: 'Klasör boş',
    noFilesYet: 'Henüz dosya yok',
    folderEmptyDescription: 'Başlamak için bu klasöre dosya yükleyin veya dosyaları taşıyın.',
    noFilesDescription: 'Baskıyla ilgili dosyalarınızı organize etmeye başlamak için dosya yükleyin.',
    noMatchingFiles: 'Eşleşen dosya yok',
    noMatchingFilesDescription: 'Mevcut arama veya filtre kriterlerinizle eşleşen dosya yok.',
    clearFilters: 'Filtreleri temizle',
    printedCount: '{{count}}x yazdırıldı',
    uploadedBy: 'Yükleyen',
    deleteFolder: 'Klasörü Sil',
    deleteFile: 'Dosyayı Sil',
    deleteFilesCount: '{{count}} Dosya Sil',
    deleteFolderConfirm: 'Bu klasörü silmek istediğinizden emin misiniz? İçindeki tüm dosyalar da silinecek.',
    deleteFileConfirm: 'Bu dosyayı silmek istediğinizden emin misiniz?',
    deleteFilesConfirm: '{{count}} seçili dosyayı silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.',
    deleting: 'Siliniyor...',
    noPermissionRenameFolder: 'Klasörleri yeniden adlandırma izniniz yok',
    noPermissionLinkFolder: 'Klasörleri bağlama izniniz yok',
    noPermissionDeleteFolder: 'Klasörleri silme izniniz yok',
    onlyEmptyFoldersDeletable: 'Yalnızca boş klasörleri silebilirsiniz',
    noPermissionPrint: 'Yazdırma izniniz yok',
    noPermissionAddToQueue: 'Kuyruğa ekleme izniniz yok',
    noPermissionSlice: 'Dosyaları dilimleme izniniz yok',
    noPermissionDownload: 'Dosyaları indirme izniniz yok',
    noPermissionRenameFile: 'Bu dosyayı yeniden adlandırma izniniz yok',
    noPermissionGenerateThumbnail: 'Küçük resim oluşturma izniniz yok',
    noPermissionDeleteFile: 'Bu dosyayı silme izniniz yok',
    noPermissionCreateFolder: 'Klasör oluşturma izniniz yok',
    noPermissionUpload: 'Dosya yükleme izniniz yok',
    noPermissionMoveFiles: 'Dosyaları taşıma izniniz yok',
    noPermissionDeleteFiles: 'Dosyaları silme izniniz yok',
    // Harici klasör
    linkExternal: 'Harici Bağla',
    linkExternalFolder: 'Harici Klasör Bağla',
    linkExternalFolderDescription: 'Bir ana bilgisayar dizinini (NAS, USB, ağ paylaşımı) Dosya Yöneticisine bağla. Dosyalar kopyalanmaz — orijinal yoldan doğrudan erişilir.',
    externalFolderNamePlaceholder: 'örn., NAS Baskıları',
    externalPath: 'Ana Bilgisayar Yolu',
    externalPathHelp: 'Docker ana bilgisayarındaki dizinin mutlak yolu. Konteynere bind-mount edilmiş olmalıdır.',
    readOnly: 'Salt Okunur',
    readOnlyHelp: 'yüklemeleri ve silmeleri engeller',
    showHiddenFiles: 'Gizli dosyaları göster (nokta dosyaları)',
    externalFolder: 'Harici Klasör',
    scanFolder: 'Tara',
    toast: {
      folderCreated: 'Klasör oluşturuldu',
      openInSlicerFailed: 'Dilimleyicide açılamadı',
      folderDeleted: 'Klasör silindi',
      fileDeleted: 'Dosya silindi',
      filesDeleted: '{{count}} dosya silindi',
      filesMoved: 'Dosyalar taşındı',
      folderLinked: 'Klasör bağlandı',
      folderUnlinked: 'Klasör bağlantısı kaldırıldı',
      externalFolderLinked: 'Harici klasör bağlandı ve tarandı',
      folderScanned: 'Tarama tamamlandı: {{added}} eklendi, {{removed}} kaldırıldı',
      addedToQueue: 'Kuyruğa {{count}} dosya eklendi',
      addedToQueuePartial: '{{added}} dosya eklendi, {{failed}} başarısız',
      failedToAddToQueue: 'Dosyalar eklenemedi: {{error}}',
      fileRenamed: 'Dosya yeniden adlandırıldı',
      folderRenamed: 'Klasör yeniden adlandırıldı',
      thumbnailsGenerated: '{{count}} küçük resim oluşturuldu',
      thumbnailsGeneratedPartial: '{{succeeded}} küçük resim oluşturuldu, {{failed}} başarısız',
      noStlMissingThumbnails: 'Küçük resmi eksik STL dosyası yok',
      failedToGenerateThumbnails: 'Küçük resimler oluşturulamadı: {{error}}',
      thumbnailGenerated: 'Küçük resim oluşturuldu',
      failedToGenerateThumbnail: 'Küçük resim oluşturulamadı: {{error}}',
    },
  },

  // Projeler
  projects: {
    parentLabel: 'Üst proje',
    parentNone: 'Yok (üst düzey proje)',
    parentHint: 'Bu projeyi başka bir projenin altına yerleştirin, böylece rakamları ana projede toplanır',
    partOf: '{{name}} projesinin parçası',
    subProjectCount: '{{count}} alt proje',
    subProjectsOf: '{{name}} alt projeleri',
    title: 'Projeler',
    subtitle: '3D baskı projelerinizi organize edin ve takip edin',
    newProject: 'Yeni Proje',
    editProject: 'Projeyi Düzenle',
    deleteProject: 'Projeyi Sil',
    projectName: 'Proje Adı',
    description: 'Açıklama',
    noProjects: 'Henüz proje yok',
    noProjectsFiltered: '{{status}} proje yok',
    noProjectsFilteredHelp: 'Hiç {{status}} projeniz yok. Projeler durumları değiştiğinde burada görünecek.',
    createFirst: 'İlgili baskıları organize etmeye, ilerlemeyi takip etmeye ve yapımlarınızı yönetmeye başlamak için ilk projenizi oluşturun.',
    createFirstButton: 'İlk Projenizi Oluşturun',
    create: 'Oluştur',
    files: 'Dosyalar',
    prints: 'Baskılar',
    plates: 'plaka',
    parts: 'parça',
    lastModified: 'Son Değiştirme',
    deleteConfirm: 'Bu projeyi silmek istediğinizden emin misiniz? Arşivler ve kuyruk öğelerinin bağlantısı kaldırılacak ancak silinmeyecek.',
    addFiles: 'Dosya Ekle',
    removeFile: 'Dosyayı Kaldır',
    viewDetails: 'Detayları Görüntüle',
    namePlaceholder: 'örn., Voron 2.4 Yapımı',
    descriptionPlaceholder: 'İsteğe bağlı açıklama...',
    urlLabel: 'URL',
    urlPlaceholder: 'https://makerworld.com/...',
    urlInvalid: 'URL http:// veya https:// ile başlamalı',
    openExternalUrl: 'Proje URL\'sini aç',
    coverImageLabel: 'Kapak fotoğrafı',
    coverImageAlt: 'Proje kapak fotoğrafı',
    coverImageUpload: 'Yükle',
    coverImageReplace: 'Değiştir',
    coverImageRemove: 'Kaldır',
    color: 'Renk',
    targetPlates: 'Hedef Plakalar',
    targetPlatesPlaceholder: 'örn., 25',
    targetPlatesHelp: 'Baskı işi sayısı',
    targetParts: 'Hedef Parçalar',
    targetPartsPlaceholder: 'örn., 150',
    targetPartsHelp: 'Gereken toplam nesne',
    targetSets: 'Dosya başına kopya',
    targetSetsPlaceholder: 'örn. 10',
    targetSetsHelp: 'Her yazdırılabilir dosyanın kaç kez yazdırılacağı',
    tagsLabel: 'Etiketler (virgülle ayrılmış)',
    tagsPlaceholder: 'örn., voron, fonksiyonel, hediye',
    dueDate: 'Son Tarih',
    priority: 'Öncelik',
    priorityLow: 'Düşük',
    priorityNormal: 'Normal',
    priorityHigh: 'Yüksek',
    priorityUrgent: 'Acil',
    statusActive: 'Aktif',
    statusCompleted: 'Tamamlandı',
    statusArchived: 'Arşivlendi',
    done: 'Tamamlandı',
    completed: 'tamamlandı',
    failed: 'başarısız',
    inQueue: 'kuyrukta',
    noPrintsYet: 'Henüz baskı yok',
    printJobs: 'Baskı işleri (plakalar)',
    partsPrinted: 'Yazdırılan parçalar',
    failedParts: 'Başarısız parçalar',
    import: 'İçe Aktar',
    export: 'Dışa Aktar',
    importProject: 'Projeyi içe aktar',
    exportAll: 'Tüm projeleri dışa aktar',
    loading: 'Projeler yükleniyor...',
    noEditPermission: 'Projeleri düzenleme izniniz yok',
    noDeletePermission: 'Projeleri silme izniniz yok',
    noCreatePermission: 'Proje oluşturma izniniz yok',
    noImportPermission: 'Projeleri içe aktarma izniniz yok',
    noExportPermission: 'Projeleri dışa aktarma izniniz yok',
    toast: {
      created: 'Proje oluşturuldu',
      updated: 'Proje güncellendi',
      deleted: 'Proje silindi',
      imported: 'Proje içe aktarıldı',
      multipleImported: '{{count}} proje içe aktarıldı',
      importFailed: 'İçe aktarma başarısız',
      exported: 'Projeler dışa aktarıldı (yalnızca meta veriler)',
    },
  },

  // Proje detay sayfası
  projectDetail: {
    notFound: 'Proje bulunamadı',
    backToProjects: 'Projelere Dön',
    export: 'Dışa Aktar',
    exportProject: 'Projeyi dışa aktar',
    noExportPermission: 'Projeleri dışa aktarma izniniz yok',
    noEditPermission: 'Projeleri düzenleme izniniz yok',
    partOf: 'Şunun parçası:',
    priorityLabel: 'Öncelik:',
    noPrints: 'Bu projede henüz baskı yok',
    status: {
      active: 'Aktif',
      completed: 'Tamamlandı',
      archived: 'Arşivlendi',
    },
    priority: {
      low: 'Düşük',
      normal: 'Normal',
      high: 'Yüksek',
      urgent: 'Acil',
    },
    dueDate: {
      overdue: 'Gecikmiş',
      today: 'Bugün teslim',
      daysLeft: '{{count}} gün kaldı',
    },
    progress: {
      platesProgress: 'Plaka İlerlemesi',
      partsProgress: 'Parça İlerlemesi',
      setsProgress: 'Tamamlanan setler',
      sets: 'set',
      setsHint: 'Her yazdırılabilir dosya bu sayıya ulaştığında bir set tamamlanır',
      printJobs: 'baskı işi',
      parts: 'parça',
      percentComplete: '%{{percent}} tamamlandı',
      remaining: '{{count}} kaldı',
    },
    stats: {
      printJobs: 'Baskı İşleri',
      total: 'toplam',
      failed: '{{count}} başarısız',
      partsPrinted: '{{count}} parça yazdırıldı',
      printTime: 'Baskı Süresi',
      filamentUsed: 'Kullanılan Filament',
    },
    cost: {
      title: 'Maliyet Takibi',
      filamentCost: 'Filament Maliyeti',
      energy: 'Enerji',
      totalCost: 'Toplam Maliyet',
      total: 'Toplam',
      includesBom: 'BOM dahil',
      budget: 'Bütçe',
      remaining: 'Kalan',
    },
    subProjects: {
      title: 'Alt projeler ({{count}})',
      jobs: '{{count}} iş',
    },
    rollup: {
      title: '{{count}} alt proje dahil',
      progress: 'Genel ilerleme',
      percentComplete: '%{{percent}} tamamlandı',
    },
    notes: {
      title: 'Notlar',
      noEditPermission: 'Notları düzenleme izniniz yok',
      placeholder: 'Bu proje hakkında notlar ekleyin...',
      empty: 'Henüz not yok. Not eklemek için Düzenle\'ye tıklayın.',
    },
    files: {
      title: 'Dosyalar',
      linkFolders: 'Dosya Yöneticisinden klasörleri bağla',
      forQuickAccess: 'hızlı erişim için bu projeye.',
      fileCount: '{{count}} dosya',
      empty: 'Bağlı klasör yok. Dosya Yöneticisine gidin ve bu projeye bir klasör bağlayın.',
      printedCount: '{{count}} kez yazdırıldı',
      progressTooltip: '{{target}} yazdırmadan {{done}} tanesi tamamlandı',
      noFiles: 'Bu klasörde dosya yok.',
    },
    bom: {
      title: 'Malzeme Listesi',
      acquired: '{{completed}}/{{total}} edinildi',
      showAll: 'Tümünü göster',
      hideDone: 'Tamamlananları gizle',
      addPart: 'Parça Ekle',
      noAddPermission: 'Parça ekleme izniniz yok',
      partNamePlaceholder: 'Parça adı (örn., M3x8 vidalar)',
      partName: 'Parça adı',
      qty: 'Adet',
      price: 'Fiyat ({{currency}})',
      sourcingUrlPlaceholder: 'Kaynak URL\'si (isteğe bağlı)',
      remarksPlaceholder: 'Notlar (isteğe bağlı)',
      deletePart: 'Parçayı Sil',
      deleteConfirm: '"{{name}}" silmek istediğinizden emin misiniz?',
      noUpdatePermission: 'Parçaları güncelleme izniniz yok',
      noEditPermission: 'Parçaları düzenleme izniniz yok',
      noDeletePermission: 'Parçaları silme izniniz yok',
      totalCost: 'Toplam maliyet:',
      empty: 'Malzeme listesinde parça yok. Nelerin tedarik edilmesi gerektiğini takip etmek için donanım, elektronik veya diğer bileşenler ekleyin.',
    },
    timeline: {
      title: 'Etkinlik Zaman Çizelgesi',
      empty: 'Henüz etkinlik yok.',
    },
    template: {
      saveAsTemplate: 'Şablon Olarak Kaydet',
      noCreatePermission: 'Şablon oluşturma izniniz yok',
    },
    queue: {
      title: 'Kuyruk',
      viewAll: 'Tümünü görüntüle',
      printing: '{{count}} yazdırılıyor',
      queued: '{{count}} kuyrukta',
    },
    prints: {
      title: 'Baskılar ({{count}})',
    },
    toast: {
      projectUpdated: 'Proje güncellendi',
      partAdded: 'Parça eklendi',
      partRemoved: 'Parça kaldırıldı',
      exportFailed: 'Dışa aktarma başarısız',
      projectExported: 'Proje dışa aktarıldı',
      templateCreated: 'Şablon oluşturuldu',
    },
  },

  // Sistem bilgisi
  system: {
    title: 'Sistem Bilgisi',
    version: 'Sürüm',
    uptime: 'Çalışma Süresi',
    cpuUsage: 'CPU Kullanımı',
    memoryUsage: 'Bellek Kullanımı',
    diskUsage: 'Disk Kullanımı',
    networkInfo: 'Ağ Bilgisi',
    logs: 'Günlükler',
    debugMode: 'Hata Ayıklama Modu',
    enableDebug: 'Hata Ayıklama Kaydını Etkinleştir',
    disableDebug: 'Hata Ayıklama Kaydını Devre Dışı Bırak',
    downloadLogs: 'Günlükleri İndir',
    clearLogs: 'Günlükleri Temizle',
    dockerInfo: 'Docker Bilgisi',
    containerName: 'Konteyner Adı',
    imageName: 'İmaj Adı',
    platform: 'Platform',
    architecture: 'Mimari',
  },

  // Sponsor yüzeyi (Sistem sayfası)
  sponsors: {
    sectionTitle: 'Bağımsız ve topluluk destekli',
    tagline: 'Bambuddy ücretsizdir ve böyle kalır çünkü insanlar onu desteklemeyi seçer. VC yok, bulut bağımlılığı yok.',
    viewSupporters: 'Destekçileri görüntüle',
    toastPrints: 'Bambuddy ile {{count}} baskı tamamladın. Bambuddy, destekçileri sayesinde ücretsiz kalıyor.',
    toastCost: 'Bambuddy ile {{total}} kadar filament takip ettin. Projeyi bağımsız tutanları gör.',
    toastArchives: '{{count}} baskı Bambuddy ile arşivlendi. Bağımsız kalmasını sağlayanları gör.',
    toastAnniversary: 'Bambuddy ile bir yılı doldurdun! Projeyi bağımsız tutanları gör.',
    toastVersionUpdate: 'v{{version}} sürümüne güncellendi. Bambuddy, destekçileri sayesinde ücretsiz kalıyor.',
    toastBusiness: "Bambuddy'yi {{count}} yazıcıda mı çalıştırıyorsunuz? Ekipler için bir destek planı var: öncelikli düzeltmeler, faturalandırma ve geliştiriciye doğrudan erişim.",
    businessCta: 'Kurumsal Bambuddy',
    businessTitle: 'Kurumsal Bambuddy',
    businessTagline: '{{count}} yazıcı çalıştırıyorsunuz. Ekipler ve baskı çiftlikleri için öncelikli destek, ticari lisanslama ve faturalandırma mevcut.',
  },

  // Kütüphane (K Profilleri)
  library: {
    title: 'Filament Kütüphanesi',
    addFilament: 'Filament Ekle',
    editFilament: 'Filamenti Düzenle',
    deleteFilament: 'Filamenti Sil',
    vendor: 'Satıcı',
    material: 'Malzeme',
    color: 'Renk',
    kFactor: 'K Faktörü',
    temperature: 'Sıcaklık',
    noFilaments: 'Kütüphanede filament yok',
    deleteConfirm: 'Bu filamenti silmek istediğinizden emin misiniz?',
    importFromPrinter: 'Yazıcıdan İçe Aktar',
    exportToFile: 'Dosyaya Dışa Aktar',
    runWithPipeline: {
      actionLabel: 'Pipeline ile çalıştır',
      noPermission: 'Pipeline çalıştırma izniniz yok',
      modalTitle: 'Pipeline ile çalıştır',
      confirmTitle: 'Çalıştırmayı onayla',
      confirmIntro: 'Ön kontrol bu çalıştırmayla ilgili sorunlar buldu',
      sourceHint: 'Kaynak',
      pipelineHint: 'Pipeline',
      targetHint: 'Hedef',
      pipelineListAria: 'Kullanılabilir pipeline\'lar',
      runAnyway: 'Yine de çalıştır',
      loading: 'Yükleniyor…',
      empty: 'Henüz kayıtlı pipeline yok. Dilimleme diyalogunu açın ve oluşturmak için "Pipeline olarak kaydet"e tıklayın.',
      noTarget: 'Hedef yazıcı belirlenmemiş',
      noTargetMessage: 'Bu pipeline\'ın hedef yazıcısı yok. Birini seçmek için Ayarlar\'da açın.',
      copies: 'Kopyalar',
      copiesHint: 'maks {{n}}',
      classTarget: 'Herhangi {{model}}',
      toast: {
        started: 'Pipeline çalıştırması başladı',
        failed: 'Çalıştırma başlatılamadı',
      },
      issue: {
        printerNotSet: 'Bu pipeline\'da hedef yazıcı belirlenmemiş.',
        printerNotFound: 'Hedef yazıcı artık mevcut değil.',
        printerDisabled: 'Hedef yazıcı devre dışı.',
        printerOffline: 'Hedef yazıcı çevrimdışı.',
        filamentType: 'Filament yuvası {{slot}}: beklenen {{expected}}, AMS\'de {{actual}}',
        filamentColor: 'Filament yuvası {{slot}}: renk farklı (beklenen {{expected}}, AMS\'de {{actual}})',
        amsSlotMissing: 'AMS yuvası {{slot}} bu yazıcıda yok',
        filamentUnverified: 'Filament yuvası {{slot}} bulut / standart ön ayardan geldiği için statik olarak doğrulanamadı.',
        noClassMatches: 'Bu kurulumda pipeline\'ın hedef model sınıfıyla ({{expected}}) eşleşen yazıcı yok.',
        classNotSet: 'Pipeline hedefi yazıcı sınıfı olarak ayarlanmış ancak model seçilmemiş.',
      },
    },
  },

  // Dilimle (SliceModal ile slicer-API entegrasyonu)
  slicerSettings: {
    presetValuesOutdatedSidecar: 'Dilimleyici varsayılanları gösteriliyor: dilimleyici sidecar bu özellikten eski olduğu için bir ön ayarın değerlerini bildiremiyor. Görmek için sidecar imajını güncelleyin. Değiştirmediğiniz her şey yine ön ayarı kullanır.',
    presetValuesNotConfigured: 'Dilimleyici varsayılanları gösteriliyor: yapılandırılmış bir sidecar olmadığı için ön ayarın değerleri okunamıyor. Değiştirmediğiniz her şey yine ön ayarı kullanır.',
    presetValuesSidecarUnavailable: 'Dilimleyici varsayılanları gösteriliyor: sidecar yanıt vermediği için ön ayarın değerleri okunamıyor. Değiştirmediğiniz her şey yine ön ayarı kullanır.',
    presetValuesUnavailable: 'Dilimleyici varsayılanları gösteriliyor: seçilen ön ayarın kendi değerleri okunamadı. Değiştirmediğiniz her şey yine ön ayarı kullanır.',
    filamentDefault: 'Varsayılan',
    fromFile: 'dosyadan',
    fromFileHint: 'Tasarımcı bunu kaynak dosyada değiştirdi. Değeri {{value}}.',
    fromFilePrinterCoupled: 'tasarımcının yazıcısı',
    fromFilePrinterCoupledHint: 'Bu dosyanın tasarlandığı yazıcıya göre ayarlanmıştır; sizinkinde yanlış veya aralık dışı olabilir.',
    useFromFile: '{{option}} için kaynak dosyadaki değeri kullan',
    otherFromFile: 'Bu dosyadaki diğer ayarlar',
    loading: 'Dilimleyici ayarları yükleniyor…',
    mode: {
      simple: 'Basit',
      advanced: 'Gelişmiş',
      expert: 'Uzman',
    },
    searchPlaceholder: 'Ayarlarda ara',
    resetAll: '{{count}} ayarı sıfırla',
    resetOption: 'Varsayılana sıfırla',
    noMatches: 'Bu aramayla eşleşen ayar yok.',
  },
  slice: {
    filamentSlotUnset: 'ayarlanmadı',
    processSettingsEmbedded: '“Dosyanın yerleşik ayarlarını kullan” açıkken kullanılmaz — bu dilimlemeyi dosyanın kendi ayarları yönetir.',
    processSettingsInactive: 'Etkin değil',
    presetsHidden: '{{count}} gizli',
    showAllPresets: 'Tümünü göster',
    showFewerPresets: 'Daha az göster',
    processSettings: 'İşlem ayarları',
    processSettingsHint: 'Seçilen ön ayarı bu dilimleme için düzenleyin. Dokunmadığınız her şey ön ayardaki gibi kalır.',
    processSettingsChanged: '{{count}} değişti',
    processSettingsUnchanged: 'Ön ayar varsayılanları',
    title: 'Modeli dilimle',
    action: 'Dilimle',
    actionAll: 'Tüm {{count}} plakayı dilimle',
    actionAllTitle: 'Her plakayı tek bir çok plakalı çıktıya dilimle (tek arşiv). Filament seçimi projenin tanımladığı her yuvayı kapsar.',
    allPlatesToggle: 'Tüm {{count}} plakayı dilimle',
    slicing: 'Dilimleniyor…',
    printer: 'Yazıcı profili',
    process: 'İşlem profili',
    filament: 'Filament profili',
    filamentSlot: 'Filament {{index}} ({{type}})',
    selectPreset: '— Bir ön ayar seçin —',
    loadingPresets: 'Ön ayarlar yükleniyor…',
    analyzingPlateFilaments: 'Plaka filamentleri analiz ediliyor…',
    analyzingPlateFilamentsHint: 'Bu plakanın hangi AMS yuvalarını kullandığını keşfetmek için bir önizleme dilimleme çalıştırılıyor. Sonradan önbelleğe alınır — yeniden açma anlıktır.',
    previewToast: '{{name}} analiz ediliyor — {{elapsed}}',
    previewWithProgress: '{{name}} analiz ediliyor — {{stage}} (%{{percent}}) — {{elapsed}}',
    notUsedByPlate: '— bu plaka tarafından kullanılmıyor',
    noPresetsForSlot: 'Kullanılabilir ön ayar yok',
    otherPrinters: 'Diğer yazıcılar',
    presetsLoadFailed: 'Ön ayarlar yüklenemedi. Önce içe aktarmak için Ayarlar → Profiller\'i açın.',
    refreshPresets: 'Yenile',
    refreshPresetsTitle: "Ön ayarları yenile — en güncel bulut ve paketli listeleri getir (Bambu Studio veya Bambu Handy'de bir ön ayar sildikten sonra kullanın)",
    allPresetsRequired: 'Tüm ön ayarlar seçilmelidir',
    useEmbedded: 'Dosyanın yerleşik ayarlarını kullan',
    useEmbeddedHint: 'Yukarıdaki profiller yerine tasarımcının ayarladığı gibi (duvarlar, dolgu, filament) dilimle. Yazıcınız dosyayla eşleştiği için sunuluyor.',
    autoOrient: 'Nesneleri otomatik yönlendir',
    autoOrientHint: 'Dilimleyici, dilimlemeden önce her nesneyi en iyi basılan yüzüne çevirir. Dosyada kayıtlı yönlendirmenin yerini alır.',
    autoArrange: 'Tablaya otomatik yerleştir',
    autoArrangeHint: 'Dilimleyici nesneleri üst üste binmeyecek şekilde yerleştirir. Dosyadaki yerleşimin yerini alır.',
    enqueuing: 'Dilimleme işi gönderiliyor…',
    queued: 'Kuyrukta…',
    failed: 'Dilimleme başarısız. Dilimleyici yardımcı bileşen günlüklerini kontrol edin.',
    startedToast: '{{name}} arka planda dilimleniyor…',
    queuedToast: 'Kuyrukta: {{name}} — {{elapsed}}',
    runningToast: '{{name}} dilimleniyor — {{elapsed}}',
    runningWithProgress: '{{name}} — {{stage}} (%{{percent}}) — {{elapsed}}',
    runningWithProgressMultiPlate: '{{plateCount}}/{{plateIndex}} plaka • {{name}} — {{stage}} (%{{percent}}) — {{elapsed}}',
    completedToast: '{{name}} dilimlendi',
    externalWriteFallbackToast: 'Dahili kitaplığa kaydedildi: harici klasöre yazılamadı',
    failedTitle: 'Dilimleme başarısız',
    failedToast: '{{name}} dilimleme başarısız: {{detail}}',
    tier: {
      local: 'İçe aktarılmış',
      cloud: 'Bambu Cloud',
      orcaCloud: 'Orca Cloud',
      standard: 'Standart',
    },
    cloud: {
      notAuthenticated: 'Bulut ön ayarlarınızı görmek için Bambu Cloud\'a giriş yapın (Ayarlar → Profiller → Bambu Cloud).',
      expired: 'Bambu Cloud oturumu süresi doldu — bulut ön ayarlarınızı yenilemek için tekrar giriş yapın.',
      unreachable: 'Bambu Cloud şu anda erişilemez. Yerel ve standart ön ayarlar hâlâ çalışıyor.',
    },
    orcaCloud: {
      notAuthenticated: 'Orca ön ayarlarınızı görmek için Orca Cloud\'a giriş yapın (Profiller → Orca Cloud).',
      expired: 'Orca Cloud oturumu sona erdi — Orca ön ayarlarınızı yenilemek için tekrar giriş yapın.',
      unreachable: 'Orca Cloud şu anda erişilemez. Diğer ön ayarlar çalışmaya devam ediyor.',
    },
    bedType: {
      label: 'Baskı plakası',
      auto: 'Otomatik (işlem ön ayarı kullan)',
      coolPlate: 'Soğuk Plaka',
      coolPlateSuperTack: 'Soğuk Plaka SuperTack',
      engineering: 'Mühendislik Plakası',
      highTemp: 'Yüksek Sıcaklık Plakası',
      texturedPEI: 'Dokulu PEI Plakası',
      smoothPEI: 'Düz PEI Plakası',
    },
    // Slicer Pipelines (#1425) — apply a saved bundle or save the current pick.
    pipelines: {
      label: 'Pipeline',
      applyAria: 'Pipeline uygula',
      applyPrompt: 'Pipeline uygula…',
      empty: 'Kayıtlı pipeline yok',
      saveButton: 'Pipeline olarak kaydet',
      saveTitle: 'Dört slotluk mevcut seçimi yeniden kullanılabilir pipeline olarak kaydet',
      namePlaceholder: 'Pipeline adı',
      nameAria: 'Yeni pipeline adı',
      toast: {
        applied: '"{{name}}" uygulandı',
        saved: 'Pipeline kaydedildi',
        saveFailed: 'Kaydetme başarısız',
      },
    },
  },

  // Spoolman
  spoolman: {
    title: 'Spoolman Entegrasyonu',
    enabled: 'Spoolman Etkin',
    url: 'Spoolman URL',
    connected: 'Bağlı',
    disconnected: 'Bağlı Değil',
    testConnection: 'Bağlantıyı Test Et',
    sync: 'Senkronize Et',
    syncing: 'Senkronize ediliyor...',
    lastSync: 'Son Senkronizasyon',
    linkToSpoolman: "Spoolman'a Bağla",
    openInSpoolman: "Spoolman'da Aç",
    unlinkSpool: 'Makara Bağlantısını Kaldır',
    unlinkConfirmTitle: 'Makara Atamasını Kaldır?',
    unlinkConfirmMessage: 'Bu, makarayı bu yuvadan kaldıracak. Makara verisinin kendisi değişmeyecek.',
    selectSpool: 'Makara Seç',
    noUnlinkedSpools: 'Atanmamış makara yok',
    linkSuccess: 'Makara başarıyla atandı',
    linkFailed: 'Makara atanamadı',
    unlinkSuccess: 'Makara ataması başarıyla kaldırıldı',
    unlinkFailed: 'Makara ataması kaldırılamadı',
    linkedSpool: 'Atanan makara',
    spoolId: 'Makara ID',
    fillSourceLabel: '(Spoolman)',
    weight: 'Ağırlık',
    remaining: 'Kalan',
    disableWeightSync: 'AMS Tahmini Ağırlık Senkronizasyonunu Devre Dışı Bırak',
    disableWeightSyncDesc: "AMS tahminlerinden kalan kapasiteyi güncelleme. AMS yüzde tabanlı tahminler yerine Spoolman'ın kullanım takibini tercih ediyorsanız bunu kullanın. Yeni makaralar yine de başlangıç ağırlığı olarak AMS tahminini kullanacak.",
    reportPartialUsage: 'Başarısız Baskılar için Kısmi Kullanımı Bildir',
    reportPartialUsageDesc: 'Bir baskı başarısız olduğunda veya iptal edildiğinde, katman ilerlemesine göre o noktaya kadar kullanılan tahmini filamenti bildir.',
  },

  locations: {
    title: 'Depolama Konumları',
    subtitle: 'Makaralarınız için raf, çekmece ve diğer fiziksel depolama yerlerini yönetin',
    add: 'Konum Ekle',
    addShort: 'Ekle',
    edit: 'Konumu Düzenle',
    name: 'Ad',
    spools: 'Makaralar',
    empty: 'Henüz depolama konumu yok. İlk rafınızı veya çekmecenizi oluşturun.',
    manage: 'Konumlar',
    createPlaceholder: 'örn. Raf A, Çekmece 1',
    nameRequired: 'Konum adı zorunludur',
    created: 'Konum oluşturuldu',
    updated: 'Konum güncellendi',
    deleted: 'Konum silindi',
    saveFailed: 'Konum kaydedilemedi',
    deleteFailed: 'Konum silinemedi',
    deleteBlocked: 'Silmeden önce bu konumdaki tüm makaraları taşıyın',
    confirmDelete: '"{{name}}" silinsin mi?',
    confirmDeleteMessage: 'Bu konum kataloğdan kaldırılacak. Önce makaralar taşınmalıdır.',
  },

  // Envanter
  inventory: {
    title: 'Makara Envanteri',
    subtitle: 'Makaralarınızı yönetin',
    addToInventory: 'Envantere Ekle',
    addToInventoryPending: 'Ekleniyor...',
    addToInventorySuccess: 'Makara envantere eklendi',
    addToInventoryFailed: 'Makara envantere eklenemedi',
    unknownSpoolTitle: 'Yeni filament algılandı',
    unknownSpoolMessage: '{{location}} konumunda bilinmeyen RFID etiketli bir makara algılandı. Şimdi envantere eklensin mi?',
    unknownSpoolSlot: 'Yuva',
    bulk: {
      selectAllVisible: 'Görünenleri seç',
      selectRow: 'Satırı seç',
      selectGroup: 'Grubu seç',
      selectionCount: '{{count}} seçildi',
      edit: 'Düzenle',
      printLabels: 'Etiket yazdır',
      resetUsage: 'Kullanımı sıfırla',
      restore: 'Geri yükle',
      archive: 'Arşivle',
      delete: 'Sil',
      clearSelection: 'Seçimi temizle',
      editTitle: 'Makaraları toplu düzenle',
      editSubtitle: 'Seçilen {{count}} makaraya uygulanır. Yalnızca işaretlediğiniz alanlar güncellenir.',
      editHint: 'Bir alana yazmak onu güncelleme için işaretler — yalnızca işaretli satırlar gönderilir. Boş bırakılan alanlar makaraları değiştirmez (alanları boşaltmak yalnızca makara bazında yapılabilir).',
      useCustom: '"{{value}}" kullan',
      toggleField: 'Bu alanın güncellenmesini değiştir',
      changeCount: '{{count}} alan güncellenecek.',
      applyPending: 'Uygulanıyor...',
      applyButton: '{{count}} makaraya uygula',
      deleteTitle: 'Seçili makaraları sil',
      archiveTitle: 'Seçili makaraları arşivle',
      restoreTitle: 'Seçili makaraları geri yükle',
      resetUsageTitle: 'Seçili makaraların kullanımını sıfırla',
      deleteMessage: '{{count}} makara kalıcı olarak silinsin mi? Bu işlem geri alınamaz.',
      archiveMessage: '{{count}} makara arşivlensin mi? Daha sonra geri yüklenebilir.',
      restoreMessage: '{{count}} arşivlenmiş makara geri yüklensin mi?',
      resetUsageMessage: '{{count}} makaranın "Toplam Tüketim" sayacı sıfırlansın mı? Kalan ağırlık korunur.',
      updateSuccess: '{{count}} makara güncellendi',
      updateFailed: 'Toplu güncelleme başarısız',
      updatePartial: '{{ok}} makara güncellendi, {{failed}} başarısız',
      updateAllFailed: '{{count}} güncellemenin tümü başarısız oldu — yeniden denemek için seçim korundu',
      deleteSuccess: '{{count}} makara silindi',
      deleteFailed: 'Toplu silme başarısız',
      deletePartial: '{{ok}} makara silindi, {{failed}} başarısız',
      deleteAllFailed: '{{count}} silmenin tümü başarısız oldu — yeniden denemek için seçim korundu',
      archiveSuccess: '{{count}} makara arşivlendi',
      archiveFailed: 'Toplu arşivleme başarısız',
      archivePartial: '{{ok}} makara arşivlendi, {{failed}} başarısız',
      archiveAllFailed: '{{count}} arşivlemenin tümü başarısız oldu — yeniden denemek için seçim korundu',
      restoreSuccess: '{{count}} makara geri yüklendi',
      restoreFailed: 'Toplu geri yükleme başarısız',
      restorePartial: '{{ok}} makara geri yüklendi, {{failed}} başarısız',
      restoreAllFailed: '{{count}} geri yüklemenin tümü başarısız oldu — yeniden denemek için seçim korundu',
      invalidHex: '6 hex karakter (RRGGBB) veya 8 (RRGGBBAA) girin. Aksi takdirde alan uygulanmaz.',
    },
    spoolmanMixedContentTitle: 'Spoolman HTTPS üzerinden yüklenemiyor — tarayıcınız tarafından karışık içerik engellendi',
    spoolmanMixedContentBody: 'Bambuddy HTTPS üzerinden sunuluyor (ters proxy\'niz aracılığıyla), ancak Spoolman URL\'niz hâlâ düz HTTP. Tarayıcılar güvenlik için karışık içeriği engeller, bu nedenle gömülü Spoolman arayüzü oluşturulamaz. Bunun çalışması için Spoolman\'in HTTPS üzerinden erişilebilir olması gerekiyor.',
    spoolmanMixedContentFixReverseProxy: "Spoolman'i Bambuddy ile aynı ters proxy'nin (Traefik / Nginx / Caddy) arkasına HTTPS ile koyun, ardından Ayarlardaki Spoolman URL'sini yeni HTTPS adresine güncelleyin.",
    spoolmanMixedContentFixOpenNewTab: 'Geçici bir çözüm olarak, Spoolman\'i HTTP üzerinden yeni bir tarayıcı sekmesinde açın — karışık içerik kuralları yalnızca gömülü çerçevelere uygulanır, bu nedenle bağımsız bir sekme yine çalışır.',
    spoolmanOpenInNewTab: 'Spoolman\'i yeni sekmede aç',
    labels: {
      title: 'Makara etiketleri yazdır',
      selectedCount: '{{count}} seçildi',
      pickSpools: 'Hangi makaralar için etiket yazdırılacağını seçin:',
      monochrome: 'Tek renk (siyah beyaz yazıcı)',
      monochromeHint: 'Renk örneğini kaldırır ve metni genişletir',
      searchPlaceholder: 'Ad, marka veya #ID ara',
      filterByMaterial: 'Malzeme:',
      allMaterials: 'Tümü',
      selectVisible: 'Görünen tümünü seç ({{count}})',
      deselectVisible: 'Görünenleri seçimden kaldır',
      clearAll: 'Tümünü temizle',
      noSpoolsToShow: 'Gösterilecek makara yok. Filtrenizi ayarlayın ve tekrar deneyin.',
      noMatches: 'Mevcut arama veya filtreyle eşleşen makara yok.',
      printOne: 'Bu makara için etiket yazdır',
      printLabels: 'Etiketleri yazdır…',
      bulkTitle: 'Şu anda gösterilen {{count}} makaradan etiket yazdırılacak olanları seçin',
      noSpoolsTitle: 'Etiketlenecek makara yok',
      error: 'Etiketler oluşturulamadı: {{msg}}',
      sortBy: {
        label: 'Sırala:',
        id: 'ID\'ye göre',
        color: 'Renge göre',
      },
      templates: {
        amsHolderSmall: {
          label: 'AMS tutucu — küçük (74 × 33 mm)',
          hint: 'Sayfa başına tek etiket; MakerWorld model 752566 (AMS Filament Etiket Tutucu) yazdırılabilir etiketle eşleşir.',
        },
        amsHolderLarge: {
          label: 'AMS tutucu — büyük (75 × 55 mm)',
          hint: 'Sayfa başına tek etiket; AMS Filament Etiket Tutucu\'nun karton uçlu varyantına uyar. Numune, marka, malzeme, ID ve QR kod için yeterli yer.',
        },
        box40x30: {
          label: 'Kutu etiketi (40 × 30 mm)',
          hint: 'Sayfa başına tek etiket; yaygın DK/Brother rulo boyutu, filament torbası ve depolama kutusu etiketleri için iyi.',
        },
        box: {
          label: 'Kutu etiketi (62 × 29 mm)',
          hint: 'Sayfa başına tek etiket; Brother PT/QL ve Dymo küçük etiketleri için boyutlandırılmış.',
        },
        averyL7160: {
          label: 'Avery L7160 — A4 sayfa (38.1 × 63.5 mm × 21)',
          hint: 'AB sayfa stoğu; A4 sayfa başına 21 etiket.',
        },
        avery5160: {
          label: 'Avery 5160 — US Letter sayfa (25.4 × 66.7 mm × 30)',
          hint: 'ABD sayfa stoğu; Letter sayfası başına 30 etiket.',
        },
      },
    },
    csv: {
      importButton: 'CSV İçe Aktar',
      exportButton: 'CSV Dışa Aktar',
      modalTitle: 'CSV\'den makara içe aktar',
      selectFile: 'Bir CSV dosyası seçin veya buraya sürükleyin',
      dragHint: 'Başlık: material (zorunlu), brand, subtype, color_name, rgba, …',
      parsing: 'Dosya okunuyor…',
      previewError: 'CSV dosyası okunamadı',
      validCount: '{{count}} geçerli',
      errorCount: '{{count}} hatalı',
      skippedCount: '{{count}} atlandı',
      colRow: 'Satır',
      colStatus: 'Durum',
      colColor: 'Renk',
      colorResolved: 'Renk katalogdan dolduruldu',
      colorCrossMaterial: 'Renk farklı bir malzemeden alındı — katalogda tam eşleşme yok',
      duplicateExisting: 'Bu malzeme, marka ve renkte bir makara zaten var — yine de yeni makara olarak içe aktarılacak',
      spoolmanHint: 'Spoolman modunda Spoolman\'ın yerleşik CSV içe/dışa aktarımını kullanın.',
      importValidRows: '{{count}} geçerli satırı içe aktar',
      noValidRows: 'Geçerli satır yok',
      importing: 'İçe aktarılıyor…',
      importSuccess: '{{count}} makara içe aktarıldı',
      importError: 'İçe aktarma başarısız',
      exportError: 'Dışa aktarma başarısız',
    },
    addSpool: 'Makara Ekle',
    editSpool: 'Makarayı Düzenle',
    copySpool: 'Makarayı Kopyala',
    material: 'Malzeme',
    selectMaterial: 'Malzeme seç...',
    subtype: 'Alt tür',
    brand: 'Marka',
    searchBrand: 'Marka ara...',
    useCustomBrand: '"{{brand}}" kullan',
    useCustomMaterial: 'Özel malzeme kullan: {{material}}',
    suggestedOptions: 'Önerilen',
    allOptions: 'Tümü',
    colorName: 'Renk Adı',
    colorNamePlaceholder: 'Yeşim Beyazı, Ateş Kırmızısı...',
    color: 'Renk',
    hexColor: 'Hex Renk',
    pickColor: 'Özel renk seç',
    labelWeight: 'Etiket Ağırlığı',
    coreWeight: 'Boş Makara Ağırlığı',
    searchSpoolWeight: 'Makara ağırlığı ara...',
    weightUsed: 'Kullanılan',
    currentWeight: 'Kalan Ağırlık',
    measuredWeight: 'Ölçülen Ağırlık',
    spoolName: 'Makara',
    costPerKg: 'kg başına maliyet',
    storageLocation: 'Depolama Konumu',
    storageLocationPlaceholder: 'örn. Raf A, Çekmece 1',
    openInInventory: 'Envanterde Aç',
    measuredWeightError: 'Ölçülen ağırlık {{min}}g ile {{max}}g arasında olmalı.',
    slicerFilament: 'Dilimleyici Filamenti',
    slicerFilamentName: 'Dilimleyici Ön Ayar Adı',
    slicerPreset: 'Dilimleyici Ön Ayarı',
    searchPresets: 'Filament ön ayarlarında ara...',
    selectedPreset: 'Seçildi',
    noPresetsFound: 'Ön ayar bulunamadı',
    tempOverrides: 'Sıcaklık Geçersiz Kılmaları',
    note: 'Not',
    notePlaceholder: 'Bu makara hakkında ek notlar...',
    category: 'Kategori',
    categoryPlaceholder: 'örn. Üretim, Prototip, Müşteri A',
    categoryNone: 'Kategorisiz',
    storageLocationNone: 'Konum ayarlanmamış',
    lowStockThresholdOverride: 'Düşük stok eşiği (bu makara)',
    lowStockThresholdOverrideHelp: 'Global eşiği kullanmak için boş bırakın (%{{global}}).',
    clearRfid: 'RFID Etiketini Temizle',
    rfidCleared: 'RFID etiketi temizlendi',
    archive: 'Arşivle',
    restore: 'Geri Yükle',
    noSpools: 'Henüz makara yok. Başlamak için ilk makaranızı ekleyin.',
    noAvailableSpools: 'Kullanılabilir makara yok. Envanterinize bir makara ekleyin veya önce başka bir yuvadan atamayı kaldırın.',
    kProfiles: 'K-Profilleri',
    addKProfile: 'K-Profili Ekle',
    assignSpool: 'Makara Ata',
    unassignSpool: 'Atamayı Kaldır',
    assignSuccess: 'Makara atandı ve AMS yuvası yapılandırıldı',
    assignPendingInsert: 'Atandı. Makarayı yerleştirdiğinizde yuva yapılandırılacak.',
    assignFailed: 'Makara atanamadı',
    selectSpool: 'Bu yuvaya atamak için bir makara seçin',
    assigned: 'Atandı',
    assigning: 'Atanıyor...',
    searchSpools: 'Makaralarda ara...',
    showAllSpools: 'Tüm makaraları göster',
    spoolmanSpools: 'Spoolman Makaraları',
    allMaterials: 'Tüm Malzemeler',
    filterByBrand: 'Markaya göre filtrele...',
    showArchived: 'Arşivlenmişleri göster',
    quickAdd: 'Hızlı Ekle (Stok)',
    quantity: 'Miktar',
    stock: 'Stok',
    configured: 'Yapılandırıldı',
    spoolsCreated: '{{count}} makara oluşturuldu',
    spoolsPartiallyCreated: '{{total}} makaradan {{created}} tanesi oluşturuldu (bazıları başarısız)',
    spoolCreated: 'Makara oluşturuldu',
    spoolUpdated: 'Makara güncellendi',
    spoolDeleted: 'Makara silindi',
    deepLinkSpoolNotFound: 'Makara bulunamadı',
    deepLinkFetchFailed: 'Makara yüklenemedi — tekrar deneyin',
    spoolArchived: 'Makara arşivlendi',
    spoolRestored: 'Makara geri yüklendi',
    kProfileSaveFailed: 'K-profili ayarları kaydedilemedi',
    syncWeightSpoolNotFound: 'Makara bulunamadı — silinmiş olabilir',
    syncWeightSpoolmanUnreachable: 'Spoolman\'a erişilemiyor — daha sonra tekrar deneyin',
    syncWeightFailed: 'Ağırlık senkronize edilemedi',
    spoolmanUnreachable: 'Spoolman erişilebilir değil — lütfen daha sonra tekrar deneyin',
    deleteSpoolNotFound: 'Makara bulunamadı — zaten silinmiş olabilir',
    deleteFailed: 'Makara silinemedi',
    archiveSpoolNotFound: 'Makara bulunamadı — zaten silinmiş olabilir',
    archiveFailed: 'Makara arşivlenemedi',
    restoreSpoolNotFound: 'Makara bulunamadı — zaten silinmiş olabilir',
    restoreFailed: 'Makara geri yüklenemedi',
    saveFailed: 'Değişiklikler kaydedilemedi',
    tagClearFailed: 'Etiket temizlenemedi',
    deleteConfirm: 'Bu makarayı silmek istediğinizden emin misiniz? Bu geri alınamaz.',
    archiveConfirm: 'Bu makarayı arşivlemek istediğinizden emin misiniz?',
    advancedSettings: 'Gelişmiş Ayarlar',
    filamentInfoTab: 'Filament Bilgisi',
    paProfileTab: 'PA Profili',
    filamentInfo: 'Filament',
    additional: 'Ek',
    loadingPresets: 'Bulut ön ayarları yükleniyor...',
    cloudConnected: 'Bulut bağlı',
    cloudNotConnected: 'Bulut bağlı değil (varsayılanlar kullanılıyor)',
    recentColors: 'Son Kullanılan',
    searchColors: 'Renklerde ara...',
    searchResults: 'Arama sonuçları',
    allColors: 'Tüm renkler',
    commonColors: 'Yaygın renkler',
    showLess: 'Daha az göster',
    showAll: 'Tümünü göster',
    noColorsFound: 'Aramanızla eşleşen renk yok',
    noResults: 'Eşleşme bulunamadı',
    extraColorsLabel: 'Ekstra renkler',
    extraColorsPlaceholder: 'EC984C,#6CD4BC,A66EB9,D87694',
    extraColorsHint: 'Virgülle ayrılmış 2 ile 8 arası hex durağı yapıştırın. Bir gradyan olarak görüntülenir.',
    extraColorsInvalid: 'Geçersiz hex yok sayıldı: {{tokens}}',
    colorEffectLabel: 'Efekt',
    colorEffect: {
      none: 'Yok',
      sparkle: 'Parıltı',
      wood: 'Ahşap',
      marble: 'Mermer',
      glow: 'Parlama',
      matte: 'Mat',
      silk: 'İpek',
      galaxy: 'Galaksi',
      rainbow: 'Gökkuşağı',
      metal: 'Metal',
      translucent: 'Yarı saydam',
      gradient: 'Gradyan',
      dualColor: 'Çift Renk',
      triColor: 'Üç Renk',
      multicolor: 'Çok Renkli',
    },
    selectMaterialFirst: 'Lütfen önce Filament Bilgisi sekmesinde bir malzeme seçin.',
    noPrintersConfigured: 'Yapılandırılmış yazıcı yok. PA profillerini kullanmak için yazıcı ekleyin.',
    matchingFilter: 'Eşleşen',
    anyBrand: 'Herhangi marka',
    anyVariant: 'Herhangi varyant',
    autoSelect: 'Otomatik seç',
    matches: 'eşleşme',
    match: 'eşleşme',
    noMatches: 'Eşleşme yok',
    connected: 'Bağlı',
    offline: 'Çevrimdışı',
    printerOffline: 'Yazıcı çevrimdışı. Kalibrasyon profillerini görüntülemek için bağlanın.',
    noKProfilesMatch: 'Seçilen filamentle eşleşen K-profili yok.',
    leftNozzle: 'Sol Nozul',
    rightNozzle: 'Sağ Nozul',
    profilesSelected: 'kalibrasyon profili seçildi',
    totalInventory: 'Toplam Envanter',
    totalConsumed: 'Toplam Tüketim',
    byMaterial: 'Malzemeye Göre',
    inPrinter: 'Yazıcıda',
    lowStock: 'Düşük Stok',
    sinceTracking: 'Takip başladığından beri',
    resetConsumedCounter: 'Sayacı sıfırla',
    resetConsumedCounterTooltip: 'Bu makara için tüketilen gram sayacını sıfırla. Kalan ağırlık değişmez.',
    resetConsumedCounterConfirm: 'Bu makaranın tüketilen gram sayacı 0\'a sıfırlansın mı? Gelecekteki baskılar sıfırdan tekrar takip edilecek. Makaranın kendisi, kalan ağırlık hesaplaması ve ayarlarınız değiştirilmez.',
    resetAllConsumedCounters: 'Tüm sayaçları sıfırla',
    resetAllConsumedCountersTooltip: 'Her makarada tüketilen gram sayacını sıfırla. Kalan ağırlıklar değişmez.',
    resetAllConsumedCountersConfirm: 'Tüm {{count}} makaradaki (arşivlenmişler dahil) tüketilen gram sayacı 0\'a sıfırlansın mı? Bu, "Toplam Tüketim" istatistiğini temizler, böylece gelecekteki baskılar sıfırdan takip edilir. Makaralar ve kalan ağırlıklar değiştirilmez.',
    consumedCounterReset: 'Sayaç sıfırlandı',
    allConsumedCountersReset: '{{count}} makaranın sayacı sıfırlandı',
    resetConsumedCounterFailed: 'Sayaç sıfırlanamadı',
    loadedInAms: 'AMS/Ext\'te Yüklü',
    remaining: 'Kalan',
    weightCheck: 'Ağırlık Kontrolü',
    lastWeighed: 'Son tartım',
    neverWeighed: 'Hiç tartılmadı',
    search: 'Makaralarda ara...',
    showing: 'Gösterilen',
    to: '-',
    of: '/',
    show: 'Göster',
    spools: 'makara',
    spool: 'makara',
    page: 'Sayfa',
    noSpoolsMatch: 'Sonuç bulunamadı',
    noSpoolsMatchDesc: 'Aradığınızı bulmak için aramanızı veya filtrelerinizi ayarlamayı deneyin.',
    active: 'Aktif',
    archived: 'Arşivlendi',
    all: 'Tümü',
    used: 'Kullanılmış',
    new: 'Yeni',
    clearFilters: 'Filtreleri temizle',
    table: 'Tablo',
    cards: 'Kartlar',
    net: 'Net',
    groupSimilar: 'Grupla',
    groupedSpools: '{{count}} aynı makara',
    groupedRows: 'satır',
    columns: 'Sütunlar',
    configureColumns: 'Sütunları Yapılandır',
    configureColumnsDesc: 'Sütunları yeniden sıralamak için sürükleyin veya okları kullanın. Göz simgesiyle görünürlüğü değiştirin.',
    visible: 'görünür',
    reset: 'Sıfırla',
    cancel: 'İptal',
    applyChanges: 'Değişiklikleri Uygula',
    moveUp: 'Yukarı taşı',
    moveDown: 'Aşağı taşı',
    hideColumn: 'Sütunu gizle',
    showColumn: 'Sütunu göster',
    linkToSpool: 'Makaraya Bağla',
    tagLinked: 'Etiket makaraya bağlandı',
    tagLinkFailed: 'Etiket bağlanamadı',
    tagAlreadyLinked: 'Etiket zaten başka bir makaraya bağlı',
    unknownTag: 'Bilinmeyen RFID etiketi algılandı',
    usageHistory: 'Kullanım Geçmişi',
    noUsageHistory: 'Henüz kullanım kaydedilmedi',
    printName: 'Baskı Adı',
    weightConsumed: 'Tüketilen Ağırlık',
    clearHistory: 'Temizle',
    historyCleared: 'Kullanım geçmişi temizlendi',
    fillSourceLabel: '(Env)',
    lowStockThresholdError: 'Eşik 0.1 ile 99.9 arasında olmalı',
    assignMismatchTitle: 'Malzeme uyumsuzluğu',
    assignMismatchMessage: 'Seçilen makara malzemesi "{{spoolMaterial}}", {{location}} için tepsi malzemesi "{{trayMaterial}}" ile eşleşmiyor. Yine de atansın mı?',
    assignMismatchConfirm: 'Yine de Ata',
    assignPartialMismatchMessage: 'Makara malzemesi "{{spoolMaterial}}", {{location}} konumundaki "{{trayMaterial}}" ile benzer ancak tam olarak eşleşmiyor. Devam etmek istiyor musunuz?',
    assignProfileMismatchMessage: 'Makara profili "{{spoolProfile}}", {{location}} konumundaki tepsi profili "{{trayProfile}}" ile eşleşmiyor. Devam etmek istiyor musunuz?',
    assignReconfigureNote: "AMS yuvası, makaranın profilini kullanacak şekilde yeniden yapılandırılacak.",
    spoolmanFilamentCatalog: 'Spoolman Filament Kataloğu',
    pickFromSpoolmanCatalog: 'Spoolman kataloğundan seç…',
    spoolmanFilamentSelected: 'Filament Spoolman kataloğundan seçildi',
    spoolmanFilamentUnlinked: 'Filament katalog bağlantısı temizlendi',
    noSpoolmanFilaments: 'Spoolman kataloğunda filament bulunamadı',
    spoolmanFilamentColorSwatch: 'Filament rengi',
    spoolWeightManagedBySpoolman: 'Boş makara ağırlığı Spoolman\'de filament türü başına yönetilir',
    spoolmanCatalogLoadFailed: 'Spoolman filament kataloğu yüklenemedi',
  },

  // Zaman Atlamalı Video
  timelapse: {
    title: 'Zaman Atlamalı Video',
    create: 'Zaman Atlamalı Video Oluştur',
    download: 'İndir',
    delete: 'Sil',
    preview: 'Önizleme',
    frameRate: 'Kare Hızı',
    quality: 'Kalite',
    processing: 'İşleniyor...',
    noTimelapses: 'Kullanılabilir zaman atlamalı video yok',
  },

  // AMS
  ams: {
    title: 'AMS',
    slot: 'Yuva',
    empty: 'Boş',
    emptySlot: 'Boş yuva',
    slotEmpty: 'Boş',
    slotUnconfigured: '?',
    emptySlotReset: 'Atanmış filament yok',
    unknown: 'Bilinmiyor',
    humidity: 'Nem',
    temperature: 'Sıcaklık',
    filamentType: 'Filament Türü',
    filamentColor: 'Renk',
    remaining: 'Kalan',
    history: 'AMS Geçmişi',
    noHistory: 'Geçmiş mevcut değil',
    configureSlot: 'Yuvayı Yapılandır',
    externalSpool: 'Harici Makara',
    profile: 'Profil',
    kFactor: 'K Faktörü',
    fill: 'Doldur',
    configure: 'Yapılandır',
    used: 'kullanılan',
    remainingUnit: 'kalan',
  },

  // Baskı modali
  printModal: {
    variants: {
      editNote: 'Bu alternatifler iş kuyruğa alınırken belirlendi. Değiştirmek için iptal edip yeniden kuyruğa alın.',
      title: 'Yazıcı alternatifleri',
      help: 'Tek iş, tek kuyruk yeri. Uygun olan ilk boşalan yazıcı kendi dosyasını yazdırır.',
      unknownModel: 'Bilinmeyen model',
      plateFor: '{{filename}} için tabla',
      moveUp: 'Yukarı taşı',
      moveDown: 'Aşağı taşı',
      queued: '{{count}} alternatifle kuyruğa alındı',
    },
    selectPrinter: 'Yazıcı Seç',
    selectPlate: 'Plaka Seç',
    filamentMapping: 'Filament Eşlemesi',
    useArchiveMapping: 'Eşleme',
    useArchiveMappingTooltip: 'Tür/renge göre eşleştirmek yerine, bu arşivle kaydedilen AMS eşlemesindeki (dilimleyiciden) her yuvayı seç.',
    clickToChangeSlot: 'Yuva atamasını değiştirmek için tıklayın',
    reRead: 'Yeniden oku',
    plateN: 'Plaka {{n}}',
    plateFilamentsUnreadable: 'Seçili bir plakanın filamentleri okunamadı, bu yüzden eşleştirilemiyor. Diğerlerini kuyruğa almak için o plakanın seçimini kaldırın.',
    totalCost: 'Toplam maliyet:',
    slotRemainingShort: ' - {{grams}}g kaldı',
    printSettings: 'Baskı Ayarları',
    bedLeveling: 'Tabla Seviyelendirme',
    flowCalibration: 'Akış Kalibrasyonu',
    vibrationCalibration: 'Titreşim Kalibrasyonu',
    layerInspection: 'İlk Katman Denetimi',
    timelapse: 'Zaman Atlamalı Video',
    cancel: 'İptal',
    noPrintersAvailable: 'Kullanılabilir yazıcı yok',
    printerBusy: 'Yazıcı meşgul',
    printerOffline: 'Yazıcı çevrimdışı',
    sameTypeDifferentColor: 'Aynı tür, farklı renk',
    filamentTypeNotLoaded: 'Filament türü yüklenmedi',
    whenToPrint: 'Ne zaman yazdırılsın',
    asap: 'En kısa sürede',
    queue: 'Kuyruk',
    schedule: 'Zamanla',
    dateTime: 'Tarih ve saat',
    invalidDateTime: 'Lütfen geçerli bir tarih ve saat girin',
    openCalendar: 'Takvimi aç',
    requireManualStart: 'Manuel başlatma gerektir',
    requirePreviousSuccess: 'Yalnızca önceki baskı başarılıysa başlat',
    autoOffAfter: 'Bittiğinde yazıcıyı kapat',
    helpAsap: 'Baskı kuyruğun en üstüne eklenir ve uygun bir yazıcı boştaysa başlar.',
    helpSchedule: 'Yazıcı boşta ise baskı zamanlanan saatte başlar. Meşgulse yazıcı uygun olana kadar bekler.',
    helpQueue: 'Baskı kuyruğun sonuna eklenir.',
    leftNozzle: 'S',
    rightNozzle: 'R',
    leftNozzleTooltip: 'Sol nozul',
    rightNozzleTooltip: 'Sağ nozul',
    rackPosition: 'Rack konumu',
    rackPositionTooltip: 'Bu filamenti rack üzerindeki hangi nozulun basacağı. Konumlar yazıcıdaki gibi numaralandırılmıştır.',
    rackEmptyPosition: 'Bu rack konumu boş',
    rackWrongNozzle: '{{has}} nozul takılı; bu filament {{needs}} gerektiriyor',
    filamentOverride: 'Filament Geçersiz Kılma',
    filamentOverrideHint: 'Model tabanlı atama için isteğe bağlı olarak filamentleri geçersiz kıl. Planlayıcı, orijinal 3MF değerleri yerine seçtiğiniz filamentlere göre eşleşecek.',
    originalFilament: 'Orijinal',
    overrideWith: 'Şununla geçersiz kıl',
    resetToOriginal: 'Orijinale sıfırla',
    insufficientFilamentTitle: 'Yeterli filament yok',
    waitingForAmsStatus: '{{printer}} için AMS durumu bekleniyor…',
    insufficientFilamentMessage: 'Bazı atanmış makaralarda bu baskının ihtiyaç duyduğundan daha az filament kaldı:',
    insufficientFilamentLine: '{{printer}} - {{slot}}: {{required}}g gerekli, {{remaining}}g kaldı',
    insufficientFilamentLinePooled: '{{printer}} - {{slot}}: {{required}}g gerekli, eşleşen makaralarda toplam {{remaining}}g (AMS Filament Backup)',
    printAnyway: 'Yine de yazdır',
    forceColorMatch: 'Renk eşleşmesini zorla',
    staggerPrinterStarts: 'Yazıcı başlangıçlarını kademelendir',
    staggerGroupSize: 'Grup boyutu',
    staggerInterval: 'Aralık (dk)',
    staggerPreview: '{{printers}} yazıcı → {{size}} kişilik {{groups}} grup, her {{interval}} dk\'da bir başlatılıyor',
    staggerLastGroup: 'son grup: {{count}}',
    staggerTotal: 'toplam: {{minutes}} dk',
    staggerToPrinters: '{{count}} yazıcıya kademelendir',
    gcodeInjection: 'Otomatik baskı G-kodu enjekte et',
    insufficientBudget: 'Yetersiz bütçe',
    unlimitedNoBudget: 'Sınırsız – bütçe limiti belirlenmemiş.',
    noPrintableCostCenters: 'Yazdırma için kullanılabilir etkin bir masraf merkezi yok. Bir yöneticiden yazdırma erişimi vermesini isteyin.',
  },

  // Yedekleme
  backup: {
    includesEncryptionKey: 'Yerel yedekler, yedek ZIP\'nin kendi içinde tamamlanmış olması için MFA şifreleme anahtarı dosyasını (DATA_DIR/.mfa_encryption_key) içerir. ZIP\'yi hassas olarak değerlendirin — dosyaya sahip olan herkes içinde saklanan OIDC istemci gizli anahtarlarını ve TOTP gizli anahtarlarını çözebilir.',
    title: 'Yedekleme ve Geri Yükleme',
    createBackup: 'Yedek Oluştur',
    restoreBackup: 'Yedeği Geri Yükle',
    restoreDescription: 'Tüm verileri bir yedek dosyasından değiştir',
    downloadBackup: 'Yedeği İndir',
    uploadBackup: 'Yedek Yükle',
    lastBackup: 'Son Yedek',
    autoBackup: 'Otomatik Yedekleme',
    backupNow: 'Şimdi Yedekle',
    restoreWarning: 'Uyarı: Bir yedeği geri yüklemek tüm mevcut verilerin üzerine yazacak.',
    includeArchives: 'Arşivleri Dahil Et',
    includeSettings: 'Ayarları Dahil Et',
    includeProfiles: 'Profilleri Dahil Et',
    backupSuccess: 'Yedek başarıyla oluşturuldu',
    restoreSuccess: 'Yedek başarıyla geri yüklendi',
    backupFailed: 'Yedekleme başarısız',
    restoreFailed: 'Geri yükleme başarısız',
    restoreNote: 'Geri yükleme sırasında Sanal Yazıcı durdurulacak',

    // GitHub Yedekleme
    githubBackup: 'Git Yedekleme',
    enabled: 'Etkin',
    cloudLoginRequired: 'Bambu Cloud girişi gerekli. GitHub yedeklemesini etkinleştirmek için Profiller → Bulut Profilleri altında giriş yapın.',
    cloudLoginRequiredShort: 'Bulut girişi gerekli',
    githubDescription: 'Yedekleme ve sürüm geçmişi için profillerinizi otomatik olarak özel bir GitHub deposuna senkronize et.',
    repoIsPrivate: 'Depo özel — yedeklemek için güvenli.',
    repoIsPublicWarning: "Depo HERKESE AÇIK. Bambuddy yedekleri MQTT kimlik bilgilerini, Home Assistant belirteçlerini, Prometheus belirteçlerini, Bambu Cloud e-postanızı ve K-profilleri aracılığıyla yazıcı erişim kodlarını içerir. Sağlayıcınızın ayarlarında depoyu özel hale getirene kadar kaydetme engellenir.",
    repoVisibilityUnknown: 'Depo görünürlüğü belirlenemedi. Bambuddy, özel olarak onaylanmamış hiçbir şeye yedekleme yapmayı reddeder; kaydetme engellenecek.',
    repositoryUrl: 'Depo URL\'si',
    repoUrlPlaceholderGitHub: 'https://github.com/username/repo-name',
    repoUrlPlaceholderGitea: 'https://gitea.example.com/username/repo-name',
    repoUrlPlaceholderForgejo: 'https://forgejo.example.com/username/repo-name',
    repoUrlPlaceholderGitLab: 'https://gitlab.com/username/repo-name',
    allowInsecureHttp: 'Güvensiz HTTP\'ye izin ver',
    allowInsecureHttpHint: 'TLS olmadan özel ağlarda kendi barındırılan örnekler için etkinleştir',
    personalAccessToken: 'Kişisel Erişim Belirteci',
    tokenSaved: '(kaydedildi)',
    enterNewToken: 'Güncellemek için yeni belirteç girin',
    tokenHintGitHub: 'Contents okuma ve yazma erişimi olan ayrıntılı belirteç ya da repo kapsamlı klasik belirteç.',
    tokenHintGitLab: 'api kapsamlı belirteç ya da read_repository ile write_repository birlikte.',
    tokenHintGitea: 'write:repository kapsamlı belirteç.',
    tokenHintForgejo: 'write:repository kapsamlı belirteç. Yalnızca bu depoyla sınırlı bir belirteç yeterlidir.',
    branch: 'Dal',
    provider: 'Git Sağlayıcısı',
    providerGitHub: 'GitHub',
    providerGitLab: 'GitLab',
    providerGitea: 'Gitea',
    providerForgejo: 'Forgejo',
    manualOnly: 'Yalnızca manuel',
    hourly: 'Saatlik',
    daily: 'Günlük',
    weekly: 'Haftalık',
    includeInBackup: 'Yedeğe dahil et',
    kProfiles: 'K-Profilleri',
    kProfilesDescription: 'Bağlı yazıcılardan basınç ilerleme kalibrasyonu',
    noPrintersConnected: 'Bağlı yazıcı yok',
    printersConnected: '{{connected}}/{{total}} bağlı',
    cloudProfiles: 'Bulut Profilleri',
    cloudProfilesDescription: 'Bambu Cloud ve Orca Cloud\'dan filament, yazıcı ve işlem ön ayarları',
    cloudProfilesAccounts: 'Bağlı hesaplar — Bambu Cloud: {{bambu}}, Orca Cloud: {{orca}}',
    appSettings: 'Uygulama Ayarları',
    appSettingsDescription: 'Bambuddy yapılandırması (tam veritabanı)',
    spoolInventory: 'Makara Envanteri',
    spoolInventoryDescription: 'Filament makaraları, kullanım geçmişi ve maliyet takibi',
    printArchives: 'Baskı Arşivleri',
    printArchivesDescription: 'Baskı geçmişi meta verileri (gcode/3MF dosyaları yok)',
    lastBackupAt: 'Son yedek:',
    noBackupsYet: 'Henüz yedek yok',
    next: 'Sonraki:',
    startingBackup: 'Yedekleme başlatılıyor...',
    test: 'Test',
    enableBackup: 'Yedeklemeyi Etkinleştir',
    testConnection: 'Bağlantıyı Test Et',
    enterRepoUrl: 'Depo URL\'sini girin',
    enterRepoAndToken: 'Depo URL\'si ve erişim belirteci girin',
    repoRequired: 'Depo URL\'si gerekli',
    tokenRequired: 'Erişim belirteci gerekli',
    githubBackupEnabled: 'GitHub yedeklemesi etkinleştirildi',
    tokenUpdated: 'Belirteç güncellendi',
    settingsSaved: 'Ayarlar kaydedildi',
    failedToSave: 'Kaydedilemedi: {{message}}',
    backupCompleteFiles: 'Yedekleme tamamlandı - {{count}} dosya güncellendi',
    backupSkippedNoChanges: 'Yedekleme atlandı - değişiklik yok',
    backupFailed2: 'Yedekleme başarısız: {{message}}',
    clearedLogs: '{{count}} günlük temizlendi',
    failedToClearLogs: 'Günlükler temizlenemedi: {{message}}',

    // Restore from Git backup (#2656)
    restoreFromGit: {
      button: 'Git\'ten Geri Yükle',
      title: 'Git yedeğinden geri yükle',
      subtitle: 'Bir commit ve geri yüklenecek verileri seçin',
      commitLabel: 'Yedek commit\'i',
      latestCommit: 'En son yedek (dal ucu)',
      categoriesLabel: 'Neler geri yüklenecek',
      inspecting: 'Yedek içeriği okunuyor...',
      itemCount: 'yedekte {{count}} kayıt',
      overwriteLabel: 'Mevcut kayıtların üzerine yaz',
      overwriteOn: 'Mevcut kayıtlar yedekten güncellenecek.',
      overwriteOff: 'Yalnızca eksik kayıtlar eklenir; mevcut olanlara dokunulmaz.',
      selectedCount: '{{count}} seçildi',
      restoring: 'Geri yükleniyor...',
      confirmTitle: 'Yedekten geri yüklensin mi?',
      confirmMessage: 'Seçilen kategoriler bu commit\'ten geri yüklenecek. Eksik kayıtlar eklenir, mevcut kayıtlar olduğu gibi kalır.',
      confirmMessageOverwrite: 'Seçilen kategoriler bu commit\'ten geri yüklenecek ve yerelde bulunan kayıtların üzerine yazılacak. Bu işlem geri alınamaz.',
      kprofilesOverwriteCaveat: 'K profilleri istisnadır: bir yuvaya yazmak yazıcıdaki kalibrasyonu her zaman değiştirir.',
      tally: '{{restored}} geri yüklendi, {{skipped}} atlandı, {{failed}} başarısız',
      reloadHint: 'Geri yüklenen verilerin her yerde görünmesi için Bambuddy\'yi yeniden yükleyin.',
      partialHint: 'Yukarıda listelenen kategoriler tamamlandı ve kaydedildi. Eksik olanlar hiç çalıştırılmadı.',
      failed: 'Geri yükleme başarısız oldu.',
      loadFailed: 'Yedek deposu okunamadı.',
      details: {
        notPresent: 'Bu yedek commit\'inde yok',
        unreadableJson: 'Okunamayan JSON: {{paths}}',
        settingsNoPayload: 'Veride ayar yok',
        settingsCredentialsWillSkip: 'Kimlik bilgisi benzeri {{count}} anahtar atlanacak',
        settingsCompanionWillSkip: 'Kimlik bilgisi benzeri {{count}} anahtar atlanacak ve bunlara bağlı {{companion}} anahtar kapalı bırakılacak',
        settingsCompanionOnlyWillSkip: '{{companion}} anahtar kapalı bırakılacak - her birinin ihtiyaç duyduğu kimlik bilgisi bir yedekten geri yüklenemez',
        spoolsUsageCount: '{{count}} kullanım kaydı dahil',
        archivesMetadataOnly: 'Yalnızca üst veri - 3MF dosyaları ve küçük resimler Git yedeğinde yer almaz',
        kprofilesPrinterCount: '{{count}} yazıcı genelinde',
      },
      notes: {
        noData: 'Bu yedekte bu türde veri yok',
        archivesPrinterMissing: 'Bazı arşivler artık var olmayan yazıcılara işaret ediyordu - bağlantı temizlendi',
        archivesProjectMissing: 'Bazı arşivler artık var olmayan projelere işaret ediyordu - bağlantı temizlendi',
        archivesOwnerCleared: 'Bazı arşivler artık var olmayan kullanıcılara işaret ediyordu - sahip temizlendi, bu yüzden bir yönetici yeniden atayana kadar yalnızca archives:read_all iznine sahip kullanıcılara görünürler',
        archivesOwnerUnmatched: 'Bazı arşivler bu örnekte bulunmayan bir sahibi belirtiyor - sahip, yedekteki kullanıcı kimliğinden tahmin edilmek yerine temizlendi, bu yüzden bir yönetici yeniden atayana kadar yalnızca archives:read_all iznine sahip kullanıcılara görünürler',
        archivesOwnerUnknown: 'Bazı arşivler sahipsiz geri yüklendi - bu yedek sahip bilgisi içermiyor, bu yüzden bir yönetici atama yapana kadar yalnızca archives:read_all iznine sahip kullanıcılara görünürler',
        archivesUndeleted: 'Yedekten sonra silinen arşivler yeniden görünür oldu - üzerine yazma açıktı',
        archivesMetadataOnly: 'Geri yüklenen arşivler yalnızca üst veri içerir - 3MF dosyaları ve küçük resimler Git yedeğinde yer almaz',
        spoolUsageUnresolved: '{{count}} kullanım kaydı atlandı - makaraları bu yedeğin makara listesinde olmadığı için bağlanacak bir şey yok.',
        spoolUsageUnlinked: '{{count}} kullanım kaydı baskı geçmişi bağlantısı olmadan geri yüklendi - bağlantıyı korumak için Baskı arşivlerini Makara envanteriyle birlikte seçin.',
        spoolTagKept: '{{count}} makara etiketi olduğu gibi bırakıldı - yedek, o zamandan beri okutulmuş bir etiketi silecek ya da ikinci bir makaraya taşıyacaktı.',
        settingsCredentialsSkipped: 'Kimlik bilgisi benzeri {{count}} anahtar atlandı - gizli değerleri elle yeniden girin',
        settingsAuthSkipped: '{{count}} kimlik doğrulama ayarı atlandı - kilitlenme kontrolleri çalışmaya devam etsin diye bunları Ayarlar > Kimlik Doğrulama bölümünden değiştirin',
        settingsCompanionSkipped: '{{keys}} kapalı bırakıldı - her birinin ihtiyaç duyduğu kimlik bilgisi bir yedekten geri yüklenemez ve bu örnekte kayıtlı değil, dolayısıyla açmak entegrasyonu kimlik doğrulamasız bırakırdı',
        settingsMqttRelayFailed: 'MQTT ayarları geri yüklendi ancak röle yeniden bağlanamadı - Bambuddy\'yi yeniden başlatın',
        kprofilesAlwaysOverwrite: 'K profilleri yazıcıdaki eşleşen yuvanın her zaman üzerine yazar',
        kprofilesAckUnreliable: 'Yanıt vermeyen bir yazıcı yine de geri yüklendi sayılır - profilleri yazıcıda doğrulayın',
        kprofilesPrinterMissing: '{{serial}} seri numaralı yazıcı yok - atlandı',
        kprofilesPrinterOffline: '{{printer}} ({{serial}}) bağlı değil - atlandı',
        kprofilesUnknownNozzle: '{{serial}} için beklenmeyen nozul çapı {{nozzle}} - olduğu gibi gönderildi',
        kprofilesUnmatched: '{{nozzle}} için {{count}} profilin {{printer}} üzerinde karşılığı yoktu - yeni profil olarak eklendi',
        kprofilesSendFailed: '{{nozzle}} profilleri {{printer}} ({{serial}}) yazıcısına gönderilemedi',
        kprofilesRefused: '{{printer}} ({{serial}}) {{nozzle}} profillerini reddetti: {{reason}}',
        kprofilesStepFailed: 'K profili adımı tamamlanamadı - {{reason}}. Bundan önce geri yüklenenler yine de kaydedildi.',
      },
    },

    history: 'Geçmiş',
    clear: 'Temizle',
    date: 'Tarih',
    status: 'Durum',
    trigger: 'Tür',
    triggers: {
      manual: 'Yedek (manuel)',
      scheduled: 'Yedek (zamanlanmış)',
      restore: 'Geri yükleme',
    },
    commit: 'Commit',

    // Yerel Yedekleme
    localBackup: 'Yerel Yedekleme',
    localBackupDescription: 'Veritabanı, arşivler, yüklemeler ve tüm dosyalar dahil Bambuddy verilerinizin tam bir yedeğini oluşturun.',
    downloadBackupLabel: 'Yedeği İndir',
    completeBackupZip: 'Tam yedek: veritabanı + tüm dosyalar (ZIP)',
    download: 'İndir',
    preparingBackup: 'Yedek hazırlanıyor...',
    creatingArchive: 'Yedek arşivi oluşturuluyor... Büyük arşivler için bu biraz zaman alabilir.',
    downloadingFile: 'Yedek dosyası indiriliyor...',
    backupDownloaded: 'Yedek başarıyla indirildi',
    failedToCreateBackup: 'Yedek oluşturulamadı: {{message}}',
    restore: 'Geri Yükle',
    restoreReplacesAll: 'Geri yükleme tüm verilerin yerine geçer.',
    restoreReplacesAllDetail: 'Mevcut veritabanınız ve dosyalarınız tamamen değiştirilecek. Geri yüklemeden sonra yeniden başlatma gerekli.',
    restoreConfirmTitle: 'Yedeği Geri Yükle',
    restoreConfirmMessage: '"{{filename}}" dosyasından geri yüklemek istediğinizden emin misiniz? Bu, mevcut veritabanınızı ve tüm dosyaları tamamen değiştirecek. Geri yüklemeden sonra uygulamanın yeniden başlatılması gerekecek.',
    restoreConfirmButton: 'Yedeği Geri Yükle',
    uploadingFile: 'Yedek dosyası yükleniyor...',
    backupRestoredRestart: 'Yedek geri yüklendi. Lütfen Bambuddy\'yi yeniden başlatın.',
    failedToRestore: 'Yedek geri yüklenemedi. Lütfen dosya formatını kontrol edin.',
    reloadNow: 'Şimdi Yeniden Yükle',
    creatingBackup: 'Yedek Oluşturuluyor',
    restoringBackup: 'Yedek Geri Yükleniyor',
    preparing: 'Hazırlanıyor...',
    processing: 'İşleniyor...',
    doNotClosePage: 'Lütfen bu sayfayı kapatmayın veya başka bir yere gitmeyin. Büyük yedekler için bu işlem birkaç dakika sürebilir.',

    restoring: 'Geri yükleniyor...',
    restoreComplete: 'Geri Yükleme Tamamlandı',
    restoreFailed2: 'Geri Yükleme Başarısız',
    importSettings: 'Ayarları bir yedek dosyasından içe aktar',
    pleaseWaitRestoring: 'Verileriniz geri yüklenirken lütfen bekleyin',
    selectBackupFile: 'Yedek dosyası seçmek için tıklayın (.json veya .zip)',
    duplicateHandling: 'Yinelenen yönetiminin nasıl çalıştığı:',
    matchPrinters: 'Yazıcılar',
    matchPrintersBy: 'seri numarasına göre eşleşti',
    matchSmartPlugs: 'Akıllı Prizler',
    matchSmartPlugsBy: 'IP adresine göre eşleşti',
    matchNotificationProviders: 'Bildirim Sağlayıcıları',
    matchNotificationProvidersBy: 'ada göre eşleşti',
    matchFilaments: 'Filamentler',
    matchFilamentsBy: 'ad + tür + markaya göre eşleşti',
    matchArchives: 'Arşivler',
    matchArchivesBy: 'içerik hash\'ine göre eşleşti (her zaman atlanır)',
    matchPendingUploads: 'Bekleyen Yüklemeler',
    matchPendingUploadsBy: 'dosya adına göre eşleşti',
    matchSettingsTemplates: 'Ayarlar ve Şablonlar',
    matchSettingsTemplatesBy: 'her zaman üzerine yazılır',
    replaceExisting: 'Mevcut veriyi değiştir',
    keepExisting: 'Mevcut veriyi koru',
    overwriteDescription: 'Zaten mevcut olan öğeleri yedek verisiyle üzerine yaz',
    keepDescription: 'Yalnızca zaten mevcut olmayan öğeleri geri yükle',
    overwriteCaution: 'Dikkat:',
    overwriteWarning: 'Üzerine yazma, mevcut yapılandırmalarınızı yedekten gelen verilerle değiştirecek. Güvenlik için yazıcı erişim kodları asla üzerine yazılmaz.',
    cancel: 'İptal',
    processingBackup: 'Yedek dosyası işleniyor...',
    itemsRestored: 'Geri Yüklenen Öğeler',
    itemsSkipped: 'Atlanan Öğeler',
    restored: 'Geri yüklendi',
    skippedAlreadyExist: 'Atlandı (zaten mevcut)',
    filesCategory: 'Dosyalar (3MF, küçük resimler, vb.)',
    andMore: '...ve {{count}} daha',
    newApiKeysGenerated: 'Yeni API Anahtarları Oluşturuldu',
    keysShownOnce: 'Bu anahtarlar yalnızca bir kez gösterilir. Şimdi kopyalayın!',
    copy: 'Kopyala',
    noDataFound: 'Yedek dosyasında geri yüklenecek veri bulunamadı.',
    close: 'Kapat',

    // Zamanlanmış yerel yedekler (#884)
    scheduledBackup: 'Zamanlanmış Yedekler',
    scheduledBackupDescription: 'Zamanlamaya göre otomatik olarak yedek anlık görüntüleri oluşturun. Çıktı dizini bir NAS veya harici depolama alanına bağlanabilir.',
    frequency: 'Sıklık',
    backupTime: 'Saat',
    retention: 'Saklama',
    retentionDescription: 'Saklanacak yedek sayısı',
    outputPath: 'Çıktı Yolu',
    outputPathPlaceholder: 'Varsayılan: {{path}}',
    outputPathDescription: 'Varsayılan konum için boş bırakın',
    runNow: 'Şimdi Çalıştır',
    backupFiles: 'Yedek Dosyaları',
    noScheduledBackups: 'Henüz yedek yok',
    deleteBackup: 'Sil',
    deleteBackupConfirm: 'Bu yedek dosyası silinsin mi?',
    backupRunning: 'Yedekleme devam ediyor...',
    scheduledBackupComplete: 'Yedekleme başarıyla tamamlandı',
    scheduledBackupFailed: 'Yedekleme başarısız',
    nextBackup: 'Sonraki yedek',
    backupSize: 'Boyut',
    localTimeHint: 'Yerel saat ({{tz}})',
    defaultPathLabel: 'Varsayılan:',
    // Backup output-path probe (#2544)
    pathCheck: {
      title: 'Bambuddy bu dizine yazamıyor',
      howToFix: 'Nasıl düzeltilir:',
      sandboxed: 'Bambuddy servisi {{path}} dizinine yazamıyor. systemd birimi ProtectSystem=strict ile çalıştığı için kurulum, veri ve günlük dizinleri dışındaki her dizin servis açısından salt okunurdur - kendi kabuğunuzdan yazabildiğiniz bir dizin olsa bile.',
      read_only: '{{path}} salt okunur bir dosya sisteminde.',
      permission_denied: 'Bambuddy\'nin {{path}} dizinine yazma izni yok. Dizinin sahibini ve izinlerini kontrol edin.',
      no_space: '{{path}} dizinini barındıran dosya sistemi dolu.',
      not_a_directory: '{{path}} var ancak bir dizin değil.',
      missing: '{{path}} yok ve oluşturulamadı.',
      error: 'Bambuddy {{path}} dizinine yazamıyor.',
      ephemeralTitle: 'Bu yedekler kapsayıcı yeniden oluşturulduğunda kaybolur',
      container_ephemeral: '{{path}} ana makinede değil, Bambuddy kapsayıcısının içinde. Oraya yazılan yedekler kapsayıcı yeniden oluşturulduğunda kaybolur. Dizini ana makineden bağlayın:',
    },

    categories: {
      settings: 'Ayarlar',
      notification_providers: 'Bildirim Sağlayıcıları',
      notification_templates: 'Bildirim Şablonları',
      smart_plugs: 'Akıllı Prizler',
      printers: 'Yazıcılar',
      filaments: 'Filamentler',
      maintenance_types: 'Bakım Türleri',
      archives: 'Arşivler',
      projects: 'Projeler',
      pending_uploads: 'Bekleyen Yüklemeler',
      external_links: 'Harici Bağlantılar',
      api_keys: 'API Anahtarları',
    },
  },

  // Etiketler
  tags: {
    title: 'Etiketler',
    addTag: 'Etiket Ekle',
    editTag: 'Etiketi Düzenle',
    deleteTag: 'Etiketi Sil',
    tagName: 'Etiket Adı',
    tagColor: 'Etiket Rengi',
    noTags: 'Etiket yok',
    deleteConfirm: 'Bu etiketi silmek istediğinizden emin misiniz?',
    manageTags: 'Etiketleri Yönet',
  },

  // Yükleme modali (arşivler)
  uploadModal: {
    title: '3MF Dosyalarını Yükle',
    dragDrop: '.3mf dosyalarını buraya sürükleyip bırakın',
    or: 'veya',
    browseFiles: 'Dosyalara Göz At',
    extractionInfo: 'Yazıcı modeli, 3MF dosya meta verilerinden otomatik olarak çıkarılacak.',
    uploaded: 'yüklendi',
    failed: 'başarısız',
    uploading: 'Yükleniyor...',
    upload: 'Yükle',
    uploadFailed: 'Yükleme başarısız',
  },

  // Arşiv düzenleme modali
  editArchive: {
    title: 'Arşivi Düzenle',
    name: 'Ad',
    namePlaceholder: 'Baskı adı',
    printer: 'Yazıcı',
    noPrinter: 'Yazıcı yok',
    project: 'Proje',
    noProject: 'Proje yok',
    itemsPrinted: 'Yazdırılan Öğeler',
    itemsPrintedHelp: 'Bu baskı işinde üretilen öğe sayısı',
    notes: 'Notlar',
    notesPlaceholder: 'Bu baskı hakkında notlar ekleyin...',
    externalLink: 'Harici Bağlantı',
    externalLinkPlaceholder: 'https://printables.com/model/...',
    externalLinkHelp: 'Printables, Thingiverse veya başka bir kaynağa bağlantı',
    tags: 'Etiketler',
    tagsPlaceholder: 'Etiketler ekle...',
    addMoreTags: 'Daha fazla etiket ekle...',
    matchingTags: '"{{query}}" ile eşleşen',
    existingTags: 'Mevcut etiketler',
    clickToAdd: '(eklemek için tıklayın)',
    status: 'Durum',
    failureReason: 'Başarısızlık Nedeni',
    selectReason: 'Neden seç...',
    photos: 'Yazdırılan Sonuç Fotoğrafları',
    photosHelp: 'Yazdırılan sonuçunuzun fotoğraflarını eklemek için + tıklayın',
    printResult: 'Baskı sonucu',
    saving: 'Kaydediliyor...',
    failureReasons: {
      adhesionFailure: 'Yapışma başarısız',
      spaghettiDetached: 'Spagetti / Ayrılmış',
      layerShift: 'Katman kayması',
      cloggedNozzle: 'Tıkalı nozul',
      filamentRunout: 'Filament bitti',
      warping: 'Bükülme',
      stringing: 'İplik oluşumu',
      underExtrusion: 'Az ekstrüzyon',
      powerFailure: 'Güç kesintisi',
      userCancelled: 'Kullanıcı iptal etti',
      other: 'Diğer',
    },
    statuses: {
      completed: 'Tamamlandı',
      failed: 'Başarısız',
      aborted: 'İptal edildi',
      printing: 'Yazdırılıyor',
    },
  },

  // K-Profilleri
  kProfiles: {
    title: 'K-Profilleri',
    noPrintersConfigured: 'Yapılandırılmış Yazıcı Yok',
    addPrinterInSettings: 'K-profillerini yönetmek için Ayarlarda bir yazıcı ekleyin',
    noActivePrinters: 'Aktif Yazıcı Yok',
    enablePrinterConnection: 'K-profillerini görüntülemek için bir yazıcı bağlantısını etkinleştirin',
    loadingProfiles: 'K-Profilleri yükleniyor...',
    printerOffline: 'Yazıcı Çevrimdışı',
    printerOfflineDesc: 'Seçilen yazıcı bağlı değil. K-profillerini görüntülemek için açın.',
    noMatchingProfiles: 'Eşleşen Profil Yok',
    noMatchingProfilesDesc: 'Arama kriterlerinizle eşleşen profil yok',
    noKProfiles: 'K-Profili Yok',
    noKProfilesDesc: '{{diameter}}mm nozul için basınç ilerleme profili bulunamadı',
    createFirstProfile: 'İlk Profili Oluştur',
    printer: 'Yazıcı',
    nozzle: 'Nozul',
    refresh: 'Yenile',
    addProfile: 'Profil Ekle',
    export: 'Dışa Aktar',
    import: 'İçe Aktar',
    select: 'Seç',
    selectAll: 'Tümünü Seç',
    delete: 'Sil',
    searchPlaceholder: 'Ad veya filamente göre ara...',
    allExtruders: 'Tüm Ekstrüderler',
    leftOnly: 'Yalnızca Sol',
    rightOnly: 'Yalnızca Sağ',
    allFlow: 'Tüm Akış',
    hfOnly: 'Yalnızca HF',
    sOnly: 'Yalnızca S',
    sortName: 'Sırala: Ad',
    sortKValue: 'Sırala: K-Değeri',
    sortFilament: 'Sırala: Filament',
    leftExtruder: 'Sol Ekstrüder',
    rightExtruder: 'Sağ Ekstrüder',
    modal: {
      addTitle: 'K-Profili Ekle',
      editTitle: 'K-Profilini Düzenle',
      profileName: 'Profil Adı',
      profileNamePlaceholder: 'PLA Profilim',
      kValue: 'K-Değeri',
      kValuePlaceholder: '0.020',
      kValueHelp: 'Tipik aralık: PLA için 0.01 - 0.06, PETG için 0.02 - 0.10',
      filament: 'Filament',
      selectFilament: 'Filament seç...',
      source: {
        local: 'İçe aktarılmış',
        orcaCloud: 'Orca Cloud',
        bambuCloud: 'Bambu Cloud',
        builtin: 'Yerleşik',
      },
      noFilamentsHelp: 'Kullanılabilir filament yok. Bambu Cloud’a giriş yapın veya Profiller → Yerel Profiller altından hızır ayarları içe aktarın.',
      searchFilaments: 'Filament ara...',
      noFilamentMatches: 'Bu aramayla eşleşen filament yok',
      flowType: 'Akış Türü',
      highFlow: 'Yüksek Akış',
      standard: 'Standart',
      nozzleSize: 'Nozul Boyutu',
      extruder: 'Ekstrüder',
      extruders: 'Ekstrüderler',
      left: 'Sol',
      right: 'Sağ',
      notes: 'Notlar (yerel olarak saklanır)',
      notesPlaceholder: 'Bu profil hakkında notlar ekleyin...',
      notesHelp: 'Notlar yazıcıda değil, Bambuddy\'de kaydedilir',
      syncing: 'Yazıcıyla senkronize ediliyor...',
      savingExtruder: 'Ekstrüdere kaydediliyor {{current}}/{{total}}...',
      pleaseWait: 'Lütfen bekleyin',
    },
    deleteConfirm: {
      title: 'Profili Sil',
      cannotUndo: 'Bu geri alınamaz',
      message: '"{{name}}" yazıcıdan silmek istediğinizden emin misiniz?',
    },
    bulkDelete: {
      title: 'Profilleri Sil',
      cannotUndo: 'Bu geri alınamaz',
      message: 'Yazıcıdan seçili {{count}} profili silmek istediğinizden emin misiniz?',
    },
    toast: {
      profileSaved: 'K-profili kaydedildi',
      profilesSaved: '{{count}} ekstrüdere K-profili kaydedildi',
      selectAtLeastOneExtruder: 'Lütfen en az bir ekstrüder seçin',
      selectFilament: 'Önce bir filament seçin',
      filamentNotResolvable: '{{name}} için Bambu filament kimliği yok — yazıcı bunun için profil saklayamaz',
      profileDeleted: 'K-profili silindi',
      profilesDeleted: '{{count}} profil silindi',
      exportedProfiles: '{{count}} profil dışa aktarıldı',
      importedProfiles: '{{total}} profilden {{count}} tanesi içe aktarıldı',
      noProfilesToExport: 'Dışa aktarılacak profil yok',
      invalidFileFormat: 'Geçersiz dosya formatı',
      failedToParseImport: 'İçe aktarma dosyası ayrıştırılamadı',
      failedToSaveBatch: 'K-profilleri kaydedilemedi',
      noteSaved: 'Not kaydedildi',
      failedToSaveNote: 'Not kaydedilemedi',
    },
    permission: {
      noRead: 'Profilleri yenileme izniniz yok',
      noCreate: 'Profil ekleme izniniz yok',
      noUpdate: 'K-profillerini güncelleme izniniz yok',
      noDelete: 'K-profillerini silme izniniz yok',
      noExport: 'Profilleri dışa aktarma izniniz yok',
      noImport: 'Profilleri içe aktarma izniniz yok',
    },
  },

  // Sanal Yazıcı
  virtualPrinter: {
    title: 'Sanal Yazıcı',
    running: 'Çalışıyor',
    stopped: 'Durduruldu',
    description: {
      default: 'Bambu Studio ve OrcaSlicer\'da görünen bir sanal yazıcı etkinleştirin. Bu yazıcıya gönderilen dosyalar yazdırılmadan doğrudan arşivlenecek.',
      proxy: 'Dilimleyici trafiğini gerçek bir yazıcıya ileten bir proxy etkinleştirin, böylece herhangi bir ağ üzerinden uzaktan baskı yapabilirsiniz.',
    },
    enable: {
      title: 'Sanal Yazıcıyı Etkinleştir',
      visibleInSlicer: 'Dilimleyici keşfinde "Bambuddy" olarak görünür',
      proxyingTo: '{{name}} cihazına proxy yapılıyor',
      notActive: 'Aktif değil',
    },
    model: {
      title: 'Yazıcı Modeli',
      description: 'Öykünülecek yazıcı modelini seçin.',
      restartWarning: 'Modeli değiştirmek sanal yazıcıyı yeniden başlatacak',
    },
    accessCode: {
      title: 'Erişim Kodu',
      isSet: 'Erişim kodu ayarlandı',
      notSet: 'Erişim kodu ayarlanmadı - etkinleştirmek için gerekli',
      placeholder: '8 karakterli kodu girin',
      placeholderChange: 'Değiştirmek için yeni kodu girin',
      hint: 'Tam olarak 8 karakter olmalı. Dilimleyiciler tarafından kimlik doğrulama için kullanılır.',
      charCount: '({{count}}/8)',
      inheritedFromTarget: 'Hedef yazıcıdan devralındı',
      derivedFromTargetHint: 'Hedef yazıcının erişim kodunu kullanır. Köprü, dilimleyicinin kimlik doğrulamasını gerçek yazıcıya iletir, bu nedenle kodlar eşleşmelidir — değiştirmek için yazıcının ayarlarında erişim kodunu düzenleyin.',
      reveal: 'Erişim kodunu göster',
      hide: 'Erişim kodunu gizle',
    },
    targetPrinter: {
      title: 'Hedef Yazıcı',
      configured: 'Proxy hedefi yapılandırıldı',
      notConfigured: 'Hedef yazıcı seçilmedi - proxy modu için gerekli',
      placeholder: 'Bir yazıcı seçin...',
      hint: 'Dilimleyici trafiğine proxy yapmak için yazıcıyı seçin. Yazıcı LAN modunda olmalıdır.',
      noPrinters: 'Yapılandırılmış yazıcı yok. Proxy modunu kullanmak için önce bir yazıcı ekleyin.',
    },
    remoteInterface: {
      title: 'Ağ Arayüzü Geçersiz Kılma',
      configured: 'Arayüz geçersiz kılma aktif',
      optional: 'İsteğe bağlı - otomatik algılanan IP yanlışsa kullanın (örn. birden fazla NIC, Docker, VPN)',
      placeholder: 'Otomatik algıla (varsayılan)...',
      hint: 'SSDP üzerinden tanıtılan ve TLS sertifikasında kullanılan IP adresini geçersiz kıl. Bambuddy birden fazla ağ arayüzüne sahip olduğunda kullanışlıdır.',
    },
    mode: {
      title: 'Mod',
      archive: 'Arşiv',
      archiveDesc: 'Dosyaları hemen arşivle',
      review: 'İnceleme',
      reviewDesc: 'Arşivlemeden önce incele',
      queue: 'Kuyruk',
      queueDesc: 'Arşivle ve kuyruğa ekle',
      proxy: 'Proxy',
      proxyDesc: 'Gerçek yazıcıya ilet',
    },
    autoDispatch: {
      title: 'Otomatik sevk',
      description: 'Kuyruğa eklendiğinde baskıları otomatik olarak başlat. Kapalıyken, baskılar manuel sevki bekler.',
    },
    queueForceColorMatch: {
      title: 'Renk eşleşmesini zorla',
      description: 'Tam olarak doğru filament türü ve rengi yüklü olmayan bir yazıcıya sevk etmeyi reddet. Varsayılan olarak kapalı — bu olmadan kuyruk yalnızca model eşleşmesi kullanır ve yanlış renk yüklü bir yazıcı seçebilir.',
    },
    saveAmsMapping: {
      title: 'AMS eşlemesini kaydet',
      description: 'Dilimleyicinin kendi seçtiği AMS yuvasını (project_file MQTT komutundan) arşive kalıcı olarak kaydeder, böylece daha sonraki bir yeniden yazdırma dosyanın türünden/renginden yeniden türetmek yerine tam olarak aynı fiziksel makarayı yeniden kullanır. Varsayılan olarak kapalı.',
    },
    gcodeInjection: {
      title: 'G-code enjeksiyonu',
      description: "Ayarlar'da model bazında yapılandırılan G-code parçacıklarını bu VP'nin işlerine uygular. Varsayılan olarak kapalı.",
    },
    tailscaleDisabled: {
      title: 'Tailscale entegrasyonu',
      description: "Bu VP'yi Tailscale üzerinden açıkta olarak işaretlemek için etkinleştirin. Dilimleyiciye hangi IP'yi yapıştıracağınızı bilmeniz için ana bilgisayarın Tailscale adresini gösterir. CA içe aktarma adımı değişmedi — bu anahtarın sertifikalar üzerinde etkisi yoktur.",
    },
    setupRequired: {
      title: 'Kurulum Gerekli',
      description: 'Sanal yazıcı özelliği çalışmadan önce ek sistem yapılandırması gerektirir. Bu, port yönlendirme, güvenlik duvarı kuralları ve platforma özgü ayarları içerir.',
      readGuide: 'Etkinleştirmeden önce kurulum kılavuzunu okuyun',
    },
    archiveNameSource: {
      title: 'Arşiv ad kaynağı',
      description: 'Dosyalar sanal yazıcı aracılığıyla geldiğinde yeni arşivlerin nasıl adlandırılacağını seçin. "Meta veri" 3MF\'den dilimleyici-gömülü başlığı kullanır (varsayılan). "Dosya adı" Bambu Studio\'nun FTP üzerinden gönderdiği dosya adını kullanır. Not: Bambu Studio, 3MF\'de bir Başlık alanı varsa "yazıcıya gönder" iletişim kutusunda yazdığınız adı bu alanla geçersiz kılar, bu nedenle her iki mod da genellikle aynı dizeyi üretir.',
      metadata: 'Meta veri',
      filename: 'Dosya adı',
    },
    caCert: {
      title: 'Dilimleyici sertifikası',
      description: "Sanal yazıcılar Bambuddy CA tarafından imzalanmış bir TLS sertifikası kullanır. Bağlantıyı kabul etmesi için bu CA sertifikasını dilimleyicinizin güven deposuna bir kez içe aktarın — komut satırından kopyalamaya gerek yok.",
      copy: 'Kopyala',
      copied: 'Kopyalandı',
      download: 'İndir',
      fingerprint: 'SHA-256',
    },
    howItWorks: {
      title: 'Nasıl çalışır',
      step1: "Aynı LAN'da, sanal yazıcılar dilimleyicinizde (Bambu Studio / OrcaSlicer) keşif yoluyla otomatik olarak görünür. Diğer ağlardan, IP adresi ve erişim koduyla manuel olarak ekleyin.",
      step2: '3MF dosyalarını Bambuddy\'ye yüklemek için Arşiv, İnceleme ve Kuyruk modlarında dilimleyicinizdeki "Gönder" düğmesini kullanın. Dilimleyici "Baskı başarılı" gösterecek — dosya saklanır, yazdırılmaz.',
      step3: 'Proxy modunda, sanal yazıcı tüm trafiği gerçek bir yazıcıya iletir — baskılar doğrudan bağlıymış gibi hemen başlar.',
    },
    status: {
      title: 'Durum Ayrıntıları',
      printerName: 'Yazıcı Adı',
      model: 'Model',
      serialNumber: 'Seri Numarası',
      mode: 'Mod',
      pendingFiles: 'Bekleyen Dosyalar',
      targetPrinter: 'Hedef Yazıcı',
      ftpPort: 'FTP Portu',
      mqttPort: 'MQTT Portu',
      ftpConnections: 'FTP Bağlantıları',
      mqttConnections: 'MQTT Bağlantıları',
    },
    toast: {
      updated: 'Sanal yazıcı ayarları güncellendi',
      failedToUpdate: 'Ayarlar güncellenemedi',
      copyFailed: 'Kopyalama başarısız — metni manuel olarak seçmeyi deneyin',
      accessCodeRequired: 'Lütfen önce bir erişim kodu ayarlayın',
      targetPrinterRequired: 'Lütfen önce bir hedef yazıcı seçin',
      bindIpRequired: 'Lütfen önce bir bind IP\'si ayarlayın',
      accessCodeEmpty: 'Erişim kodu boş olamaz',
      accessCodeLength: 'Erişim kodu tam olarak 8 karakter olmalı',
      targetCodeChangedRebind: 'Erişim kodu artık yeni hedef yazıcıyla eşleşiyor. Yeni kodu almak için bu cihazı dilimleyicinizde yeniden ekleyin.',
      created: 'Sanal yazıcı oluşturuldu',
      failedToCreate: 'Sanal yazıcı oluşturulamadı',
      deleted: 'Sanal yazıcı silindi',
      failedToDelete: 'Sanal yazıcı silinemedi',
    },
    list: {
      title: 'Sanal Yazıcılar',
      add: 'Ekle',
      addFirst: 'Sanal Yazıcı Ekle',
      empty: 'Yapılandırılmış sanal yazıcı yok. Başlamak için bir tane ekleyin.',
    },
    bindIp: {
      title: 'Bind Arayüzü',
      placeholder: 'Arayüz seç...',
      hint: 'Bu sanal yazıcının bağlanacağı ağ arayüzü. Yazıcı başına benzersiz olmalıdır.',
    },
    proxy: {
      accessCodeHint: 'Proxy modunda, dilimleyicide hedef yazıcınızın erişim kodunu kullanın. Bağlantı şeffaf olarak gerçek yazıcıya iletilir.',
    },
    addDialog: {
      title: 'Sanal Yazıcı Ekle',
      name: 'Ad',
      hint: 'Oluşturduktan sonra erişim kodunu, hedef yazıcıyı ve diğer ayarları yapılandırabilirsiniz.',
      create: 'Oluştur',
    },
    deleteConfirm: {
      title: 'Sanal Yazıcıyı Sil',
      message: '"{{name}}" silmek istediğinizden emin misiniz? Bu, bu yazıcı için tüm servisleri durduracak.',
    },
  },

  // Model Görüntüleyici
  modelViewer: {
    openInSlicer: 'Dilimleyicide Aç',
    openInSlicerWith: '{{slicer}} ile aç',
    moreSlicerOptions: 'Diğer dilimleyici seçenekleri',
    openInSlicerFailed: 'Dilimleyicide açılamadı',
    tabs: {
      model: '3B Model',
    },
    notAvailable: 'mevcut değil',
    plates: 'Plakalar',
    allPlates: 'Tüm Plakalar',
    plateNumber: 'Plaka {{number}}',
    plateCount: '{{count}} plaka',
    plateCount_other: '{{count}} plaka',
    objectCount: '{{count}} nesne',
    objectCount_other: '{{count}} nesne',
    filamentCount: '{{count}} filament',
    filamentCount_other: '{{count}} filament',
    eta: 'ETA {{minutes}} dk',
    noPreview: 'Bu dosya için önizleme yok',
    pagination: {
      pageOf: '{{total}} sayfadan {{current}} tanesi',
      prev: 'Önceki',
      next: 'Sonraki',
    },
    errors: {
      failedToLoad: 'Dosya yüklenemedi',
      noMeshes: '3MF dosyasında ağ bulunamadı',
      unsupportedFormat: 'Desteklenmeyen dosya formatı',
    },
  },

  // Bakım türü açıklamaları (yerleşik)
  maintenanceDescriptions: {
    lubricateCarbonRods: 'Düzgün hareket için karbon çubuklara yağ uygula',
    lubricateRails: 'Düzgün hareket için lineer raylara yağ uygula',
    cleanNozzle: 'Tıkanmaları önlemek için hotend ve nozulu temizle',
    checkBelts: 'Doğru baskılar için kayış gerginliğini kontrol et',
    cleanBuildPlate: 'Daha iyi yapışma için baskı plakasını temizle',
    checkExtruder: 'Aşınma için ekstrüder dişlilerini inceleyin',
    checkCooling: 'Soğutma fanlarının düzgün çalıştığından emin ol',
    generalInspection: 'Genel yazıcı denetimi',
    cleanCarbonRods: 'Sürtünmeyi azaltmak için karbon çubukları temizle',
    lubricateSteelRods: 'Düzgün hareket için çelik çubuklara yağ uygula',
    cleanSteelRods: 'Sürtünmeyi azaltmak için çelik çubukları temizle',
    cleanLinearRails: 'Toz ve kalıntıları temizlemek için lineer rayları sil',
    checkPtfeTube: 'Aşınma veya hasar için PTFE tüpünü incele',
    replaceHepaFilter: 'Hava kalitesi için HEPA filtresini değiştir',
    replaceCarbonFilter: 'Aktif karbon filtresini değiştir',
    lubricateLeftNozzleRail: 'Sol nozul rayını yağla (H2 serisi)',
  },

  // Akıllı Prizler
  haSensors: {
    label: 'Sensörler',
    unavailable: 'Kullanılamıyor',
    blocksPrints: '{{entity}} — uyarı sürerken baskıları bekletir',
    states: {
      open: 'Açık',
      closed: 'Kapalı',
      unlocked: 'Kilit açık',
      locked: 'Kilitli',
      detected: 'Algılandı',
      clear: 'Temiz',
      wet: 'Islak',
      dry: 'Kuru',
      problem: 'Sorun',
      ok: 'Normal',
      running: 'Çalışıyor',
      stopped: 'Durdu',
      on: 'Açık',
      off: 'Kapalı',
    },
    sectionTitle: 'Home Assistant Sensörleri',
    add: 'Sensör ekle',
    addTitle: 'Home Assistant sensörü ekle',
    editTitle: 'Home Assistant sensörünü düzenle',
    empty: 'Henüz sensör yok. Yazıcı kartında göstermek için Home Assistant\'tan bir kapı kontağı veya termometre bağlayın.',
    unknownPrinter: 'Bilinmeyen yazıcı',
    badgeBlocks: 'Baskıları bekletir',
    badgeNotifies: 'Bildirir',
    badgeHidden: 'Kartta gizli',
    printer: 'Yazıcı',
    entity: 'Varlık',
    searchPlaceholder: 'Varlık ara...',
    noEntities: 'Eşleşen varlık yok',
    name: 'Görünen ad',
    alertWhen: 'Şu durumda uyar',
    alertNever: 'Asla — yalnızca göster',
    alertAbove: 'Şunun üstünde',
    alertBelow: 'Şunun altında',
    alertHint: 'Uyarı durumu sensörü yazıcı kartında vurgular ve aşağıdaki seçenekleri etkinleştirir.',
    showOnCard: 'Yazıcı kartında göster',
    notifyOnAlert: 'Uyarı başladığında bildirim gönder',
    blockPrint: 'Uyarı sürerken kuyruktaki baskıları beklet',
    blockPrintHint: 'İşler kuyrukta kalır ve sensör normale döndüğünde kendiliğinden başlar. Home Assistant\'a ulaşılamadığı sürece yok sayılır.',
    toast: {
      created: 'Sensör eklendi',
      updated: 'Sensör kaydedildi',
      deleted: 'Sensör kaldırıldı',
    },
    error: {
      pickEntity: 'Bir Home Assistant varlığı seçin',
      nameRequired: 'Bir görünen ad girin',
      printerRequired: 'Bir yazıcı seçin',
      alertRequired: 'Önce bir uyarı koşulu belirleyin',
    },
  },
  smartPlugs: {
    offline: 'Çevrimdışı',
    admin: 'Yönetici',
    openPlugAdminPage: 'Priz yönetici sayfasını aç',
    deleteSmartPlug: 'Akıllı Prizi Sil',
    turnOnSmartPlug: 'Akıllı Prizi Aç',
    turnOffSmartPlug: 'Akıllı Prizi Kapat',
    turnOn: 'Aç',
    turnOff: 'Kapat',
    addSmartPlug: {
      scanningNetwork: 'Ağ taranıyor...',
      chooseEntity: 'Bir varlık seçin...',
      connectionFailed: 'Bağlantı başarısız',
      searchEntities: 'Varlıklarda ara...',
      searchPowerSensors: 'Güç sensörlerinde ara...',
      searchEnergySensors: 'Enerji sensörlerinde ara...',
      placeholders: {
        plugName: 'Oturma Odası Prizi',
        mqttStateOnValue: 'ON, true, 1',
        mqttSameAsPower: 'Güç konusuyla aynı veya farklı',
      },
    },
    linkedTo: 'Bağlı:',
    monitorOnly: 'Yalnızca İzle',
    alerts: 'Uyarılar',
    scheduleOn: '{{time}} Açık',
    scheduleOff: '{{time}} Kapalı',
    on: 'Açık',
    off: 'Kapalı',
    power: 'Güç',
    kwhToday: 'Bugün kWh',
    settings: 'Ayarlar',
    automationSettings: 'Otomasyon Ayarları',
    showInSwitchbar: 'Anahtar Çubuğunda Göster',
    quickAccessSidebar: 'Kenar çubuğundan hızlı erişim',
    enabled: 'Etkin',
    enableAutomation: 'Bu priz için otomasyonu etkinleştir',
    autoOn: 'Otomatik Aç',
    autoOnDescription: 'Baskı başladığında aç',
    autoOff: 'Otomatik Kapat',
    autoOffDescription: 'Baskı tamamlandığında kapat (tek seferlik)',
    autoOffPersistent: 'Etkin Tut',
    autoOffPersistentDescription: 'Tek seferlik yerine baskılar arasında etkin kal',
    controlsPrinterPower: 'Yazıcıya güç veriyor',
    controlsPrinterPowerDescription: 'Bu priz yalnızca bir aksesuara (filtre fanı, aydınlatma) güç veriyorsa kapatın. Aksi halde prizi kapatmak yazıcıyı çevrimdışı olarak işaretler.',
    autoOffAfterDrying: 'Kurutmadan Sonra Otomatik Kapat',
    autoOffAfterDryingDescription: 'AMS kurutması tamamlandığında kapat',
    delayAfterDryingMinutes: 'Kurutma gecikmesi (dakika)',
    turnOffDelayMode: 'Kapatma Gecikme Modu',
    time: 'Süre',
    temp: 'Sıcaklık',
    delayMinutes: 'Gecikme (dakika)',
    tempThreshold: 'Sıcaklık eşiği (°C)',
    tempThresholdDescription: 'Nozul bu sıcaklığın altına soğuduğunda kapanır',
    edit: 'Düzenle',
    deleteConfirm: '"{{name}}" silmek istediğinizden emin misiniz? Bu geri alınamaz.',
    turnOnConfirm: '"{{name}}" açmak istediğinizden emin misiniz?',
    turnOffConfirm: '"{{name}}" kapatmak istediğinizden emin misiniz? Bu, bağlı cihazın gücünü kesecek.',
    failedToTurn: '"{{name}}" {{action}} başarısız',
    unknown: 'Bilinmiyor',
    addTitle: 'Akıllı Priz Ekle',
    editTitle: 'Akıllı Prizi Düzenle',
    stopScanning: 'Taramayı Durdur',
    discoverTasmota: 'Tasmota Cihazlarını Keşfet',
    foundDevices: '{{count}} cihaz bulundu - seçmek için tıklayın:',
    noDevicesFound: 'Ağınızda Tasmota cihazı bulunamadı',
    haNotConfigured: 'Home Assistant yapılandırılmamış. Şuradan ayarlayın:',
    haSettingsPath: 'Ayarlar → Ağ → Home Assistant',
    selectEntity: 'Varlık Seç *',
    ipAddress: 'IP Adresi *',
    nameLabel: 'Ad *',
    username: 'Kullanıcı Adı',
    password: 'Parola',
    authHint: 'Tasmota cihazınız kimlik doğrulama gerektirmiyorsa boş bırakın',
    linkToPrinter: 'Yazıcıya Bağla',
    noPrinter: 'Yazıcı yok (yalnızca manuel kontrol)',
    linkingDescription: 'Bağlama, baskılar başladığında/tamamlandığında otomatik açma/kapamayı etkinleştirir',
    powerAlerts: 'Güç Uyarıları',
    alertAbove: 'Üstündeyse uyar (W)',
    alertBelow: 'Altındaysa uyar (W)',
    alertDescription: 'Güç tüketimi bu eşikleri geçtiğinde bildirim alın. O yönü devre dışı bırakmak için boş bırakın.',
    dailySchedule: 'Günlük Zamanlama',
    turnOnAt: 'Şu saatte aç',
    turnOffAt: 'Şu saatte kapat',
    scheduleDescription: 'Prizi günlük olarak bu saatlerde otomatik aç/kapat. O eylemi atlamak için boş bırakın.',
    showOnPrinterCard: 'Yazıcı Kartında Göster',
    displayOnPrinterCard: 'Yazıcı kartında düğme göster',
    connectedResult: 'Bağlandı!',
    deviceLabel: 'Cihaz: {{name}} - ',
    stateLabel: 'Durum: {{state}}',
    test: 'Test',
    delete: 'Sil',
    save: 'Kaydet',
    add: 'Ekle',
    cancel: 'İptal',
    failedToStartScan: 'Tarama başlatılamadı',
    nameRequired: 'Ad gerekli',
    entityRequired: 'Home Assistant prizleri için varlık gerekli',
    mqttTopicRequired: 'Güç, enerji veya durum izleme için en az bir MQTT konusu yapılandırılmalı',
    loadingEntities: 'Varlıklar yükleniyor...',
    loading: 'Yükleniyor...',
    failedToLoadEntities: 'Varlıklar yüklenemedi: {{error}}',
    noEntitiesMatching: '"{{search}}" ile eşleşen varlık bulunamadı',
    noEntitiesAvailable: 'Kullanılabilir varlık yok',
    searchingEntities: 'Tüm varlıklar aranıyor ({{count}} bulundu)',
    showingEntities: 'switch, light, input_boolean gösteriliyor ({{count}} mevcut)',
    energyMonitoringOptional: 'Enerji İzleme (İsteğe Bağlı)',
    energyMonitoringHint: 'Güç/enerji verisi sağlayan sensörleri arayın ve seçin.',
    powerSensorW: 'Güç Sensörü (W)',
    energyTodayKwh: 'Bugünkü Enerji (kWh)',
    totalEnergyKwh: 'Toplam Enerji (kWh)',
    noMatchingSensors: 'Eşleşen sensör yok',
    none: 'Hiçbiri',
    mqttNotConfigured: 'MQTT brokerı yapılandırılmamış. Şurada broker adresini ayarlayın:',
    mqttSettingsPath: 'Ayarlar → Ağ → MQTT Yayınlama',
    mqttNotConfiguredSuffix: '(yayınlamayı etkinleştirmenize gerek yok, yalnızca broker ayrıntılarını doldurun).',
    mqttMonitorOnlyDescription: 'MQTT prizleri MQTT aboneliği aracılığıyla güç/enerji verisi alır. Açma/kapama kontrolü kullanılamaz - MQTT brokerınızı veya ev otomasyon sisteminizi kullanın.',
    powerMonitoring: 'Güç İzleme',
    energyMonitoring: 'Enerji İzleme',
    stateMonitoring: 'Durum İzleme',
    optional: 'isteğe bağlı',
    topic: 'Konu',
    jsonPath: 'JSON Yolu',
    multiplier: 'Çarpan',
    onValue: 'ON Değeri',
    mqttPowerHint: 'JSON yolu JSON yükten değer çıkarır (örn., "power_l1"). Konu ham sayısal değerler yayınlıyorsa boş bırakın.\nmW→W için 0.001, kW→W için 1000 çarpanı kullanın.',
    mqttEnergyHint: 'JSON yolu JSON yükten değer çıkarır. Ham değerler için boş bırakın.\nWh→kWh için 0.001, MWh→kWh için 1000 çarpanı kullanın.',
    mqttStateHint: 'JSON yolu JSON yükten değer çıkarır. Ham değerler için boş bırakın.\nON değeri: "ON" anlamına gelen tam string. Otomatik algılama için boş bırakın (ON, true, 1).',
    // REST akıllı priz
    restControl: 'Kontrol',
    restOnUrl: 'AÇ URL\'si',
    restOffUrl: 'KAPAT URL\'si',
    restOnBody: 'AÇ İstek Gövdesi',
    restOffBody: 'KAPAT İstek Gövdesi',
    restMethod: 'HTTP Yöntemi',
    restHeaders: 'Özel Başlıklar (JSON)',
    restStatusUrl: 'Durum URL\'si',
    restStatusPath: 'Durum JSON Yolu',
    restStatusOnValue: 'ON Değeri',
    restPowerUrl: 'Güç URL\'si',
    restPowerPath: 'Güç JSON Yolu',
    restPowerMultiplier: 'Güç Çarpanı',
    restEnergyUrl: 'Enerji URL\'si',
    restEnergyPath: 'Enerji JSON yolu (bugün)',
    restEnergyTotalPath: 'Enerji JSON yolu (toplam sayaç)',
    restEnergyTotalMultiplier: 'Toplam sayaç çarpanı',
    restEnergyTotalPathHint: 'örn. aenergy.total',
    restEnergyTotalHint:
      "Birçok priz — tüm Shelly'ler dahil — yalnızca hiç sıfırlanmayan bir toplam sayaç bildirir. Bu değer yukarıdaki alana değil, buraya girilmelidir: bugünün tüketimi olarak okunursa gece yarısı sıfırlanmaz, Dün ve Toplam da boş kalır. Bambuddy Bugün ve Dün değerlerini bundan hesaplar; bunun için bir iki günlük ölçüm gerekir. Shelly watt-saat bildirdiğinden çarpan olarak 0.001 kullanın.",
    restEnergyMultiplier: 'Enerji Çarpanı',
    restUrlRequired: 'REST prizleri için en az bir URL (ON veya OFF) gerekli',
    restHeadersHint: 'örn. {"Authorization": "Bearer your-token"}',
    restBodyHint: 'örn. ON, {"state": "on"}',
    restStatusHint: 'Mevcut durumu sorgulamak için URL',
    restPathHint: 'örn. state veya data.power.status',
    restPowerUrlHint: 'Güç verisi için ayrı URL (boşsa Durum URL\'sini kullanır)',
    restEnergyUrlHint: 'Enerji verisi için ayrı URL (boşsa Durum URL\'sini kullanır)',
    restEnergyHint: 'Her değer kendi URL\'sini kullanabilir veya Durum URL\'sine geri dönebilir. Birim dönüşümü için çarpanları kullanın (örn. Wh\'yi kWh\'ye dönüştürmek için 0.001).',
    testConnection: 'Bağlantıyı Test Et',
    connectionSuccess: 'Bağlantı başarılı',
    noSwitchesInSwitchbar: 'Anahtar çubuğunda anahtar yok',
    enableSwitchbarHint: 'Ayarlar > Akıllı Prizler\'de "Anahtar Çubuğunda Göster"i etkinleştirin',
  },

  // Bildirimler
  notifications: {
    providerTypes: {
      callmebot: 'CallMeBot/WhatsApp',
      ntfy: 'ntfy',
      pushover: 'Pushover',
      telegram: 'Telegram',
      email: 'E-posta',
      discord: 'Discord',
      webhook: 'Webhook',
      homeassistant: 'Home Assistant',
      bark: 'Bark',
    },
    providerDescriptions: {
      email: 'SMTP e-posta bildirimleri',
      telegram: 'Telegram botu üzerinden bildirimler',
      discord: 'Webhook üzerinden Discord kanalına gönder',
      ntfy: 'Ücretsiz, kendi barındırılabilir push bildirimleri',
      pushover: 'Basit, güvenilir push bildirimleri',
      callmebot: "CallMeBot üzerinden ücretsiz WhatsApp bildirimleri",
      webhook: 'Herhangi bir URL\'ye genel HTTP POST',
      homeassistant: 'Home Assistant gösterge panelinde kalıcı bildirimler',
      bark: 'Bark ile iOS anlık bildirimleri (kendi sunucunuzda barındırılabilir)',
    },
    lastSuccess: 'Son: {{date}}',
    error: 'Hata',
    printer: 'Yazıcı:',
    allPrinters: 'Tüm yazıcılar',
    sendTestNotification: 'Test Bildirimi Gönder',
    eventSettings: 'Olay Ayarları',
    enabled: 'Etkin',
    sendFromProvider: 'Bu sağlayıcıdan bildirim gönder',
    printEvents: 'Baskı Olayları',
    printerStatus: 'Yazıcı Durumu',
    amsAlarms: 'AMS Alarmları',
    amsHtAlarms: 'AMS-HT Alarmları',
    printQueue: 'Baskı Kuyruğu',
    start: 'Başlangıç',
    plateCheck: 'Plaka Kontrolü',
    complete: 'Tamamlandı',
    failed: 'Başarısız',
    stopped: 'Durduruldu',
    progress: 'İlerleme',
    offline: 'Çevrimdışı',
    lowFilament: 'Az Filament',
    maintenance: 'Bakım',
    amsHumidity: 'AMS Nemi',
    amsTemp: 'AMS Sıcaklığı',
    amsDryingSuspended: 'Kurutma askıya alındı',
    amsHtHumidity: 'AMS-HT Nemi',
    amsHtTemp: 'AMS-HT Sıcaklığı',
    bedCooled: 'Tabla Soğudu',
    firstLayer: 'İlk Katman',
    quiet: 'Sessiz',
    digest: 'Özet {{time}}',
    printStarted: 'Baskı Başladı',
    plateNotEmpty: 'Plaka Boş Değil',
    plateNotEmptyDescription: 'Baskıdan önce nesneler algılandı',
    plateClearRequired: 'Tabla onayı gerekli',
    plateClearRequiredDescription: 'Baskı bitti, kuyruk tabla onayını bekliyor',
    plateClear: 'Tabla onayı',
    printCompleted: 'Baskı Tamamlandı',
    bedCooledLabel: 'Tabla Soğudu',
    bedCooledDescription: 'Baskıdan sonra tabla eşiğin altına soğudu',
    firstLayerCompleteLabel: 'İlk Katman Tamamlandı',
    firstLayerCompleteDescription: 'İlk katman bittiğinde anlık görüntüyle bildir',
    missingSpoolAssignmentLabel: 'Eksik Makara Ataması',
    billingChargeFailedLabel: 'Ücretlendirme hatası',
    billingChargeFailedDescription: 'Baskı maliyetleri kaydedilemediğinde bildirim gönder',
    missingSpoolAssignmentDescription: 'Baskı başladığında ve gerekli tepsilerin atanmış makarası olmadığında bildir',
    printFailed: 'Baskı Başarısız',
    printStopped: 'Baskı Durduruldu',
    progressMilestones: 'İlerleme Kilometre Taşları',
    progressMilestonesDescription: '%25, %50, %75\'te bildir',
    printerOffline: 'Yazıcı Çevrimdışı',
    printerError: 'Yazıcı Hatası',
    aiFailureDetection: 'AI Hata Tespiti',
    aiFailureDetectionDescription: 'Obico AI olası bir baskı hatası tespit ettiğinde bildir',
    lowFilamentLabel: 'Az Filament',
    maintenanceDue: 'Bakım Zamanı',
    maintenanceDueDescription: 'Bakım gerektiğinde bildir',
    amsHumidityHigh: 'AMS Nemi Yüksek',
    amsHumidityHighDescription: 'Normal AMS nemi eşiği aşıyor',
    amsTemperatureHigh: 'AMS Sıcaklığı Yüksek',
    amsTemperatureHighDescription: 'Normal AMS sıcaklığı eşiği aşıyor',
    amsDryingSuspendedTitle: 'Otomatik kurutma askıya alındı',
    amsDryingSuspendedDescription: 'Nem hiçbir zaman eşiğin altına inmediği için bir AMS ünitesinde otomatik kurutmadan vazgeçildi',
    amsHtHumidityHigh: 'AMS-HT Nemi Yüksek',
    amsHtHumidityHighDescription: 'AMS-HT nemi eşiği aşıyor',
    amsHtTemperatureHigh: 'AMS-HT Sıcaklığı Yüksek',
    amsHtTemperatureHighDescription: 'AMS-HT sıcaklığı eşiği aşıyor',
    inventoryAlerts: 'Envanter Uyarıları',
    stockReorderAlert: 'Yeniden Sipariş Uyarısı',
    stockReorderAlertDescription: 'SKU yeniden sipariş noktasına ulaştı',
    stockBreakAlert: 'Stok Tükenme Uyarısı',
    stockBreakAlertDescription: 'Yenileme gelmeden stok tükenecek',
    jobAdded: 'İş Eklendi',
    jobAddedDescription: 'İş kuyruğa eklendi',
    jobAssigned: 'İş Atandı',
    jobAssignedDescription: 'Model tabanlı iş yazıcıya atandı',
    jobStarted: 'İş Başladı',
    jobStartedDescription: 'Kuyruk işi yazdırmaya başladı',
    jobWaiting: 'İş Bekliyor',
    jobWaitingDescription: 'İş filament veya yazıcı için bekliyor',
    jobSkipped: 'İş Atlandı',
    jobSkippedDescription: 'İş atlandı (önceki başarısız oldu)',
    jobFailed: 'İş Başarısız',
    jobFailedDescription: 'İş başlatılamadı',
    queueComplete: 'Kuyruk Tamamlandı',
    queueCompleteDescription: 'Tüm kuyruk işleri bitti',
    quietHours: 'Sessiz Saatler',
    noNotificationsDuring: 'Bu saatler arasında bildirim yok',
    editProviderToChangeQuietHours: 'Sessiz saatleri değiştirmek için sağlayıcıyı düzenleyin',
    dailyDigest: 'Günlük Özet',
    batchNotifications: 'Bildirimleri tek bir günlük özette topla',
    sendAt: '{{time}}\'de gönder',
    editProviderToChangeDigestTime: 'Özet saatini değiştirmek için sağlayıcıyı düzenleyin',
    edit: 'Düzenle',
    deleteProvider: 'Bildirim Sağlayıcısını Sil',
    deleteConfirm: '"{{name}}" silmek istediğinizden emin misiniz? Bu geri alınamaz.',
    delete: 'Sil',
    addTitle: 'Bildirim Sağlayıcısı Ekle',
    editTitle: 'Bildirim Sağlayıcısını Düzenle',
    nameLabel: 'Ad *',
    namePlaceholder: 'Bildirimlerim',
    providerTypeLabel: 'Sağlayıcı Türü *',
    configuration: 'Yapılandırma',
    testConfiguration: 'Yapılandırmayı Test Et',
    printerFilter: 'Yazıcı Filtresi',
    onlyFromPrinter: 'Yalnızca bu yazıcının olayları için bildirim gönder',
    quietHoursDnd: 'Sessiz Saatler (Rahatsız Etme)',
    quietStart: 'Başlangıç',
    quietEnd: 'Bitiş',
    dailyDigestLabel: 'Günlük Özet',
    sendDigestAt: 'Özeti şu saatte gönder',
    digestCollected: 'Olaylar toplanacak ve bu saatte tek bir özet olarak gönderilecek',
    notificationEvents: 'Bildirim Olayları',
    progressPercent: '(%25, %50, %75)',
    bedCooledAfterPrint: '(baskı tamamlandıktan sonra)',
    haSensorAlert: 'Sensör Uyarısı',
    haSensorAlertDescription: '(bağlı bir Home Assistant sensörü dikkat gerektiriyor)',
    eventPriority: {
      sectionTitle: 'ntfy Önceliği',
      helpNtfy: 'Her etkin olay için bir öncelik seçin. ntfy uyarıları kademelendirmek için bunları kullanır (ses, görünürlük, push davranışı). Burada ayarlanmamış seviyeler ntfy sunucu varsayılanını kullanır.',
      min: 'Min',
      low: 'Düşük',
      default: 'Varsayılan',
      high: 'Yüksek',
      urgent: 'Acil',
    },
    cancel: 'İptal',
    save: 'Kaydet',
    add: 'Ekle',
    nameRequired: 'Ad gerekli',
    fieldRequired: '{{field}} gerekli',
    haDataInvalid: 'Data alanı geçerli bir JSON nesnesi olmalıdır, örn. {"priority": "high", "ttl": 0}',
    phoneNumber: 'Telefon Numarası',
    apiKey: 'API Anahtarı',
    serverUrl: 'Sunucu URL',
    topic: 'Konu',
    authToken: 'Yetkilendirme Belirteci',
    userKey: 'Kullanıcı Anahtarı',
    appToken: 'Uygulama Belirteci',
    priority: 'Öncelik',
    pushoverRetry: 'Acil yeniden deneme (sn)',
    pushoverExpire: 'Acil sona erme (sn)',
    botToken: 'Bot Belirteci',
    chatId: 'Sohbet ID',
    telegramThreadId: 'Forum Konu Kimliği',
    telegramThreadIdHelp: 'İsteğe bağlı. Forum grubundaki tek bir konuya gönderir: konu bağlantısındaki son sayı (t.me/c/.../25). Genel konu için boş bırakın.',
    telegramThreadIdInvalid: 'Forum konu kimliği bir sayı olmalıdır.',
    smtpServer: 'SMTP Sunucusu',
    smtpPort: 'SMTP Portu',
    security: 'Güvenlik',
    authentication: 'Kimlik Doğrulama',
    username: 'Kullanıcı Adı',
    password: 'Parola',
    fromEmail: 'Gönderen E-posta',
    toEmail: 'Alıcı E-posta',
    webhookUrl: 'Webhook URL',
    payloadFormat: 'Yük Formatı',
    authorization: 'Yetkilendirme',
    titleFieldName: 'Başlık Alanı Adı',
    messageFieldName: 'Mesaj Alanı Adı',
    editTemplate: 'Şablonu Düzenle: {{name}}',
    titleLabel: 'Başlık',
    bodyLabel: 'Gövde',
    titlePlaceholder: 'Bildirim başlığı...',
    bodyPlaceholder: 'Bildirim gövdesi...',
    availableVariables: 'Kullanılabilir Değişkenler',
    clickToInsert: 'Gövdede imleç konumuna eklemek için tıklayın',
    livePreview: 'Canlı Önizleme',
    hide: 'Gizle',
    show: 'Göster',
    loadingPreview: 'Önizleme yükleniyor...',
    enterTemplateContent: 'Önizlemeyi görmek için şablon içeriğini girin',
    titlePreview: 'Başlık:',
    bodyPreview: 'Gövde:',
    resetToDefault: 'Varsayılana Sıfırla',
    titleRequired: 'Başlık gerekli',
    bodyRequired: 'Gövde gerekli',
    notificationLog: 'Bildirim Günlüğü',
    showFailedOnly: 'Yalnızca başarısız',
    last24Hours: 'Son 24 saat',
    last7Days: 'Son 7 gün',
    last30Days: 'Son 30 gün',
    last90Days: 'Son 90 gün',
    justNow: 'Az önce',
    noFailedNotifications: 'Başarısız bildirim yok',
    noNotificationsLogged: 'Kaydedilen bildirim yok',
    unknownProvider: 'Bilinmeyen Sağlayıcı',
    logTitle: 'Başlık',
    logMessage: 'Mesaj',
    logError: 'Hata',
    logProvider: 'Sağlayıcı: {{type}}',
    logTime: 'Saat: {{time}}',
    refresh: 'Yenile',
    clearOld: 'Eskileri Temizle',
    statsSummary: 'Son {{days}} gün:',
    statsNotifications: 'bildirim',
    statsSent: '{{count}} gönderildi',
    statsFailed: '{{count}} başarısız',
    eventTypes: {
      print_start: 'Baskı Başladı',
      print_complete: 'Baskı Tamamlandı',
      print_failed: 'Baskı Başarısız',
      print_stopped: 'Baskı Durduruldu',
      print_progress: 'İlerleme',
      printer_offline: 'Yazıcı Çevrimdışı',
      printer_error: 'Yazıcı Hatası',
      filament_low: 'Az Filament',
      maintenance_due: 'Bakım Zamanı',
      test: 'Test',
    },
    userEmail: {
      title: 'Bildirimler',
      emailNotifications: 'E-posta Bildirimleri',
      emailNotificationsDesc: 'Kendi baskı işleriniz için e-posta bildirimleri alın. E-postalar Gelişmiş Kimlik Doğrulamada yapılandırılan sistem SMTP ayarları kullanılarak gönderilir.',
      sendingTo: 'Bildirimler şuraya gönderilecek',
      noEmailWarning: 'Hesabınızın e-posta adresi yok. Eklemek için bir yöneticiyle iletişime geçin.',
      printJobNotifications: 'Baskı İşi Bildirimleri',
      printJobNotificationsDesc: 'Gönderdiğiniz baskı işleri için hangi olayların e-posta bildirimlerini tetikleyeceğini seçin.',
      printJobStarts: 'Baskı İşi Başlar',
      printJobStartsDesc: 'Baskı işiniz başladığında bildirim alın.',
      printJobFinishes: 'Baskı İşi Biter',
      printJobFinishesDesc: 'Baskı işiniz başarıyla tamamlandığında bildirim alın.',
      printErrors: 'Baskı Hataları',
      printErrorsDesc: 'Baskı işiniz başarısız olduğunda veya bir hatayla karşılaştığında bildirim alın.',
      printJobStops: 'Baskı İşi Durur',
      printJobStopsDesc: 'Baskı işiniz iptal edildiğinde veya durdurulduğunda bildirim alın.',
      saveSuccess: 'Bildirim tercihleri kaydedildi.',
      saveError: 'Bildirim tercihleri kaydedilemedi.',
    },
  },

  // Zengin Metin Düzenleyici
  richTextEditor: {
    bold: 'Kalın',
    italic: 'İtalik',
    underline: 'Altı Çizili',
    bulletList: 'Madde İşaretli Liste',
    numberedList: 'Numaralı Liste',
    alignLeft: 'Sola Hizala',
    alignCenter: 'Ortaya Hizala',
    alignRight: 'Sağa Hizala',
    addLink: 'Bağlantı Ekle',
    removeLink: 'Bağlantıyı Kaldır',
  },

  // Harici Bağlantılar
  externalLinks: {
    title: 'Kenar çubuğu bağlantıları',
    sidebarLayout: 'Kenar çubuğu',
    sidebarLayoutDescription: 'Yerleşik sayfaları gösterin veya gizleyin, harici bağlantılar ekleyin ve kenar çubuğu gezinmesini yeniden sıralamak için öğeleri sürükleyin.',
    systemPages: 'Bambuddy sayfaları',
    externalLinks: 'Harici bağlantılar',
    visibleInSidebar: 'Kenar çubuğunda görünür',
    hiddenFromSidebar: 'Kenar çubuğunda gizli',
    requiredInSidebar: 'Kenar çubuğunda gerekli',
    hidePage: 'Sayfayı gizle',
    showPage: 'Sayfayı göster',
    settingsCannotBeHidden: 'Ayarlar gizlenemez',
    noLinksConfigured: 'Yapılandırılmış harici bağlantı yok',
    deleteLink: 'Bağlantıyı Sil',
    removeCustomIcon: 'Özel simgeyi kaldır',
    openInNewTab: 'Yeni sekmede aç',
    placeholders: {
      linkName: 'Bağlantım',
    },
  },

  // Klavye Kısayolları Modali
  keyboardShortcuts: {
    title: 'Klavye Kısayolları',
    navigation: 'Navigasyon',
    archivesSection: 'Arşivler',
    kProfilesSection: 'K-Profilleri',
    generalSection: 'Genel',
    shortcuts: {
      goToPrinters: 'Yazıcılara Git',
      goToArchives: 'Arşivlere Git',
      goToQueue: 'Kuyruğa Git',
      goToStats: 'İstatistiklere Git',
      goToProfiles: 'Bulut Profillerine Git',
      goToSettings: 'Ayarlara Git',
      focusSearch: 'Aramaya odaklan',
      openUploadModal: 'Yükleme modalini aç',
      clearSelection: 'Seçimi temizle / odağı kaldır',
      contextMenu: 'Kartlarda bağlam menüsü',
      refreshProfiles: 'Profilleri yenile',
      newProfile: 'Yeni profil',
      exitSelectionMode: 'Seçim modundan çık',
      showHelp: 'Bu yardımı göster',
    },
    footer: 'Kapatmak için Esc\'ye basın veya dışarı tıklayın',
  },

  // Bildirim Günlüğü
  notificationLog: {
    title: 'Bildirim Günlüğü',
    events: {
      printStarted: 'Baskı Başladı',
      printComplete: 'Baskı Tamamlandı',
      printFailed: 'Baskı Başarısız',
      printStopped: 'Baskı Durduruldu',
      progress: 'İlerleme',
      printerOffline: 'Yazıcı Çevrimdışı',
      printerError: 'Yazıcı Hatası',
      lowFilament: 'Az Filament',
      maintenanceDue: 'Bakım Zamanı',
      test: 'Test',
    },
    timeAgo: {
      justNow: 'Az önce',
      minutesAgo: '{{minutes}}dk önce',
      hoursAgo: '{{hours}}sa önce',
    },
  },

  // Yedeği Geri Yükle/Yedekleme Modali
  restoreBackup: {
    title: 'Yedeği Geri Yükle',
    restoring: 'Geri yükleniyor...',
    restoreComplete: 'Geri Yükleme Tamamlandı',
    restoreFailed: 'Geri Yükleme Başarısız',
    importSettings: 'Ayarları bir yedek dosyasından içe aktar',
    pleaseWait: 'Verileriniz geri yüklenirken lütfen bekleyin',
    clickToSelect: 'Yedek dosyası seçmek için tıklayın (.json veya .zip)',
    howDuplicateHandling: 'Yinelenen yönetiminin nasıl çalıştığı:',
    categories: {
      printers: 'Yazıcılar',
      smartPlugs: 'Akıllı Prizler',
      notificationProviders: 'Bildirim Sağlayıcıları',
      filaments: 'Filamentler',
      archives: 'Arşivler',
      pendingUploads: 'Bekleyen Yüklemeler',
      settingsTemplates: 'Ayarlar ve Şablonlar',
    },
    matchingInfo: {
      printers: 'seri numarasına göre eşleşti',
      smartPlugs: 'IP adresine göre eşleşti',
      notificationProviders: 'ada göre eşleşti',
      filaments: 'ad + tür + markaya göre eşleşti',
      archives: 'içerik hash\'ine göre eşleşti',
      pendingUploads: 'dosya adına göre eşleşti',
      settingsTemplates: 'her zaman üzerine yazılır',
    },
    replaceExisting: 'Mevcut veriyi değiştir',
    keepExisting: 'Mevcut veriyi koru',
    replaceDescription: 'Zaten mevcut olan öğeleri yedek verisiyle üzerine yaz',
    keepDescription: 'Yalnızca zaten mevcut olmayan öğeleri geri yükle',
    caution: 'Dikkat:',
    cautionText: 'Üzerine yazma, mevcut yapılandırmalarınızı yedek verisiyle değiştirecek. Güvenlik için yazıcı erişim kodları asla üzerine yazılmaz.',
    itemsRestored: 'Geri Yüklenen Öğeler',
    itemsSkipped: 'Atlanan Öğeler',
    restored: 'Geri yüklendi',
    skipped: 'Atlandı (zaten mevcut)',
    filesLabel: 'Dosyalar (3MF, küçük resimler, vb.)',
    newApiKeysGenerated: 'Yeni API Anahtarları Oluşturuldu',
    newApiKeysWarning: 'Bu anahtarlar yalnızca bir kez gösterilir. Şimdi kopyalayın!',
    processingBackup: 'Yedek dosyası işleniyor...',
    noDataFound: 'Yedek dosyasında geri yüklenecek veri bulunamadı.',
    failedToRestore: 'Yedek geri yüklenemedi. Lütfen dosya formatını kontrol edin.',
  },

  // Yedek Dışa Aktarma Modali
  backupExport: {
    title: 'Yedeği Dışa Aktar',
    selectData: 'Dahil edilecek veriyi seçin',
    selectAll: 'Tümünü Seç',
    selectNone: 'Hiçbirini Seçme',
    categoryDescriptions: {
      settings: 'Dil, tema, güncelleme tercihleri',
      notifications: 'ntfy, Pushover, Discord, vb.',
      templates: 'Özel mesaj şablonları',
      smartPlugs: 'Tasmota priz yapılandırmaları',
      externalLinks: 'Harici servislere kenar çubuğu bağlantıları',
      printers: 'Yazıcı bilgisi (erişim kodları hariç)',
      plateDetection: 'Boş plaka referans görüntüleri',
      filaments: 'Filament türleri ve maliyetleri',
      maintenance: 'Özel bakım programları',
      archives: 'Tüm baskı verileri + dosyalar (3MF, küçük resimler, fotoğraflar)',
      projects: 'Projeler, BOM öğeleri ve ekler',
      pendingUploads: 'İnceleme bekleyen sanal yazıcı yüklemeleri',
      apiKeys: 'Webhook API anahtarları (içe aktarımda yeni anahtarlar oluşturulur)',
    },
    requiresPrinters: 'Yazıcıların seçili olması gerekir',
    zipFileWarning: 'ZIP dosyası oluşturulacak.',
    zipFileDescription: 'Tüm 3MF dosyalarını, küçük resimleri, zaman atlamalı videoları ve fotoğrafları içerir. Bu biraz zaman alabilir ve büyük bir dosya oluşturabilir.',
    includeAccessCodes: 'Erişim Kodlarını Dahil Et',
    includeAccessCodesDescription: 'Başka bir makineye aktarmak için',
    includeAccessCodesWarning: 'Erişim kodları düz metin olarak dahil edilecek. Bu yedek dosyasını güvende tutun!',
    categoriesSelected: '{{selectedCount}} kategori seçildi',
  },

  // Bekleyen Yüklemeler Paneli
  pendingUploads: {
    placeholders: {
      notes: 'Bu baskı hakkında notlar ekleyin...',
    },
    discardUpload: 'Yüklemeyi At',
    archiveAllUploads: 'Tüm Yüklemeleri Arşivle',
    discardAllUploads: 'Tüm Yüklemeleri At',
    archive: 'Arşivle',
    timeAgo: {
      justNow: 'Az önce',
      minutesAgo: '{{minutes}}dk önce',
      hoursAgo: '{{hours}}sa önce',
      daysAgo: '{{days}}g önce',
    },
  },

  // API Tarayıcısı
  apiBrowser: {
    placeholders: {
      requestBody: 'JSON istek gövdesi...',
      searchEndpoints: 'Uç noktalarda ara...',
    },
  },

  // AMS Yuva Yapılandırma Modali
  configureAmsSlot: {
    title: 'AMS Yuvasını Yapılandır',
    slotConfigured: 'Yuva Yapılandırıldı!',
    configuringSlot: 'Yuva yapılandırılıyor:',
    slotLabel: '{{ams}} Yuva {{slot}}',
    searchPresets: 'Ön ayarlarda ara...',
    colorPlaceholder: 'Renk adı veya hex (örn., kahverengi, FF8800)',
    clearCustomColor: 'Özel rengi temizle',
    noCloudPresets: 'Bulut ön ayarı yok. Senkronize etmek için Bambu Cloud\'a giriş yapın.',
    noPresetsAvailable: 'Kullanılabilir ön ayar yok. Bambu Cloud\'a giriş yapın veya yerel profilleri içe aktarın.',
    noMatchingPresets: 'Eşleşen ön ayar bulunamadı.',
    custom: 'Özel',
    builtin: 'Yerleşik',
    orcaCloud: 'Orca Cloud',
    bambuCloud: 'Bambu Cloud',
    settingsSentToPrinter: 'Ayarlar yazıcıya gönderildi',
    filamentProfile: 'Filament Profili',
    kProfileLabel: 'K Profili (Basınç İlerlemesi)',
    filteringFor: 'Şu için filtreleniyor: {{material}}',
    noKProfile: 'K profili yok (varsayılan 0.020 kullan)',
    noMatchingKProfiles: 'Eşleşen K profili bulunamadı. Varsayılan K=0.020 kullanılacak.',
    otherKProfiles: 'Bu yazıcıdaki diğer K profilleri',
    selectFilamentFirst: 'Önce bir filament profili seçin',
    kFromCalibration: 'Yazıcı kalibrasyonundan K={{value}}',
    customColorLabel: 'Özel Renk (isteğe bağlı)',
    presetColors: '{{name}} renkleri:',
    showLessColors: 'Daha az renk göster',
    showMoreColors: 'Daha fazla renk göster',
    clear: 'Temizle',
    hexLabel: 'Hex: #{{hex}}',
    resetting: 'Sıfırlanıyor...',
    resetSlot: 'Yuvayı Sıfırla',
    cancel: 'İptal',
    configuring: 'Yapılandırılıyor...',
    configureSlot: 'Yuvayı Yapılandır',
  },

  // Git Yedekleme Ayarları
  githubBackup: {
    title: 'Git Yedekleme',
    history: 'Geçmiş',
    downloadBackup: 'Yedeği İndir',
    restoreBackup: 'Yedeği Geri Yükle',
    noBackupsYet: 'Henüz yedek yok',
  },

  // E-posta Ayarları
  emailSettings: {
    placeholders: {
      fromName: 'BamBuddy',
    },
  },

  // Etiket Yönetimi Modali
  tagManagement: {
    searchTags: 'Etiketlerde ara...',
    renameTag: 'Etiketi yeniden adlandır',
    deleteTag: 'Etiketi sil',
  },

  // Bildirim Şablon Düzenleyici
  notificationTemplates: {
    placeholders: {
      title: 'Bildirim başlığı...',
      body: 'Bildirim gövdesi...',
    },
  },

  // Toplu Etiket Modali
  batchTag: {
    placeholders: {
      newTag: 'Yeni etiket girin...',
    },
  },

  // Fotoğraf Galerisi Modali
  photoGallery: {
    deletePhoto: 'Fotoğrafı Sil',
  },

  // Filament Hover Kartı
  filamentHoverCard: {
    copySpoolUuid: 'Makara UUID\'sini kopyala',
  },

  // K Profilleri Görünümü
  kProfilesView: {
    hasNote: 'Notu var',
    copyProfile: 'Profili kopyala',
  },

  // Düzen/Navigasyon
  layout: {
    openMenu: 'Menüyü aç',
    noPermissionSystemInfo: 'Sistem bilgisini görüntüleme izniniz yok',
  },

  // Gösterge Paneli
  dashboard: {
    dragToReorder: 'Yeniden sıralamak için sürükleyin',
    hideWidget: 'Widget\'ı gizle',
  },

  // Bildirim Sağlayıcısı Kartı
  notificationProviderCard: {
    deleteNotificationProvider: 'Bildirim Sağlayıcısını Sil',
  },

  // Dosya Yöneticisi Modali
  fileManagerModal: {
    closeFileManager: 'Dosya yöneticisini kapat',
    sortFiles: 'Dosyaları sırala',
    goToParentFolder: 'Üst klasöre git',
    threeView: '3B Görünüm',
  },

  // Gömülü Kamera Görüntüleyici
  embeddedCameraViewer: {
    refreshStream: 'Akışı yenile',
    close: 'Kapat',
    zoomOut: 'Uzaklaştır',
    resetZoom: 'Yakınlaştırmayı sıfırla',
    zoomIn: 'Yakınlaştır',
    dragToResize: 'Yeniden boyutlandırmak için sürükleyin',
  },

  // Zaman Atlamalı Video Görüntüleyici
  timelapseViewer: {
    skipBack5s: '5 sn geri al',
    skipForward5s: '5 sn ileri al',
  },

  // Bildirim Sağlayıcıları
  notificationProviders: {
    descriptions: {
      email: 'SMTP e-posta bildirimleri',
      telegram: 'Telegram botu üzerinden bildirimler',
      discord: 'Webhook üzerinden Discord kanalına gönder',
      ntfy: 'Ücretsiz, kendi barındırılabilir push bildirimleri',
      pushover: 'Basit, güvenilir push bildirimleri',
      callmebot: 'CallMeBot üzerinden ücretsiz WhatsApp bildirimleri',
      webhook: 'Herhangi bir URL\'ye genel HTTP POST',
    },
  },

  // Günlük Görüntüleyici
  logViewer: {
    searchPlaceholder: 'Mesaj veya günlükçü adı ara...',
    noLogEntries: 'Günlük kaydı bulunamadı',
  },

  // Anahtar Çubuğu Popover
  switchbarPopover: {
    noSwitchesInSwitchbar: 'Anahtar çubuğunda anahtar yok',
  },

  // Proje Sayfası Modali
  projectPageModal: {
    placeholders: {
      title: 'Başlık',
      designer: 'Tasarımcı',
      license: 'Lisans',
      description: 'Açıklama girin...',
      profileTitle: 'Profil Başlığı',
      profileDescription: 'Profil açıklaması...',
    },
  },

  // Spoolman Ayarları
  spoolmanSettings: {},

  // Zaman
  time: {
    unknown: '-',
    waiting: 'Bekliyor',
    justNow: 'Az önce',
    now: 'Şimdi',
    minsAgo: '{{count}}dk önce',
    inMins: '{{count}}dk sonra',
    hoursAgo: '{{count}}sa önce',
    inHours: '{{count}}sa sonra',
    daysAgo: '{{count}}g önce',
    inDays: '{{count}}g sonra',
  },

  // SpoolBuddy Kiosk
  spoolbuddy: {
    nav: {
      dashboard: 'Gösterge Paneli',
      ams: 'AMS',
      inventory: 'Envanter',
      writeTag: 'Yaz',
      settings: 'Ayarlar',
    },
    status: {
      nfcReady: 'NFC Hazır',
      nfcOff: 'NFC Kapalı',
      offline: 'Çevrimdışı',
      online: 'Çevrimiçi',
      noPrinters: 'Yazıcı yok',
      deviceOffline: 'Cihaz Çevrimdışı',
      waitingConnection: 'Cihaz bağlantısı bekleniyor...',
      systemReady: 'Sistem Hazır',
      status: 'Durum',
    },
    dashboard: {
      readyToScan: 'Taramaya hazır',
      idleMessage: 'Tanımlamak için bir makarayı tartıya yerleştirin',
      nfcHint: 'NFC etiketi otomatik olarak okunacak',
      device: 'Cihaz',
      syncWeight: 'Ağırlığı Senkronize Et',
      weightSynced: 'Senkronize edildi!',
      unknownTag: 'Bilinmeyen Etiket',
      newTag: 'Yeni Etiket Algılandı',
      onScale: 'tartıda',
      linkSpool: 'Makaraya Bağla',
      linkTagTitle: 'Etiketi Makaraya Bağla',
      linkTag: 'Etiketi Bağla',
      selectSpool: 'Bu etiketi bağlamak için bir makara seçin:',
      noUntagged: 'Etiketsiz makara bulunamadı',
      tagDetected: 'Etiket algılandı',
      noTag: 'Etiket yok',
      tagId: 'Etiket',
      grossWeight: 'Brüt ağırlık',
      spoolSize: 'Makara boyutu',
      close: 'Kapat',
      currentSpool: 'Mevcut Makara',
      plateReady: 'Plaka hazır: {{name}}',
      plateReadyLabel: 'Temizlenmeye hazır plakalar',
      plateClearAction: 'Temizle',
      plateClearedToast: 'Plaka temizlendi olarak işaretlendi',
      plateClearFailed: 'Plaka temizlendi olarak işaretlenemedi',
    },
    modal: {
      spoolDetected: 'Makara Algılandı',
      assignToAms: "AMS'e Ata",
      syncWeight: 'Ağırlığı Senkronize Et',
      weightSynced: 'Senkronize edildi!',
      syncing: 'Senkronize ediliyor...',
      newTagDetected: 'Yeni Etiket Algılandı',
      addToInventory: 'Envantere Ekle',
      assignToAmsTitle: "AMS'e Ata",
      selectSlot: 'Bir yuva seçin',
      assign: 'Ata',
      assigning: 'Atanıyor...',
      assignSuccess: 'Atandı!',
      assignPendingInsert: 'Atandı. Makarayı yerleştirdiğinizde yuva yapılandırılacak.',
      assignError: 'Makara atanamadı. Lütfen tekrar deneyin.',
      noPrinterSelected: 'Bir yazıcı seçin...',
      noAmsDetected: 'Bu yazıcıda AMS algılanmadı',
      slot: 'Yuva',
    },
    weight: {
      noReading: 'Okuma yok',
      stable: 'Kararlı',
      measuring: 'Ölçülüyor...',
      tare: 'Dara',
      calibrate: 'Kalibre Et',
    },
    spool: {
      remaining: 'Kalan',
      material: 'Malzeme',
      brand: 'Marka',
      color: 'Renk',
      coreWeight: 'Çekirdek',
      labelWeight: 'Etiket',
      scaleWeight: 'Tartı',
      netWeight: 'Net',
      lastUsed: 'Son kullanım',
    },
    ams: {
      noData: 'AMS algılanmadı',
      connectAms: 'Filament yuvalarını görmek için bir AMS bağlayın',
      noPrinter: 'Yazıcı seçilmedi',
      selectPrinter: 'Üst çubuktan bir yazıcı seçin',
      printerDisconnected: 'Yazıcı bağlantısı kesildi',
      humidity: 'Nem',
      level: 'Seviye',
      active: 'Aktif',
      slot: 'Yuva',
      empty: 'Boş',
    },
    inventory: {
      search: 'Makaralarda ara...',
      empty: 'Envanterde makara yok',
      noResults: 'Eşleşen makara yok',
      spools: 'makara',
      addSpool: 'Makara Ekle',
    },
    settings: {
      tabDevice: 'Cihaz',
      tabDisplay: 'Görüntü',
      tabScale: 'Tartı',
      tabUpdates: 'Güncellemeler',
      nfcReader: 'NFC Okuyucu',
      type: 'Tür',
      connection: 'Bağlantı',
      notConnected: 'N/A',
      deviceInfo: 'Cihaz Bilgisi',
      hostname: 'Ana Bilgisayar',
      uptime: 'Çalışma Süresi',
      systemConfig: 'Arka Uç ve Kimlik Doğrulama',
      backendUrl: 'Bambuddy Arka Uç URL\'si',
      apiToken: 'API Belirteci',
      apiTokenPlaceholder: 'API belirtecini girin',
      saveConfig: 'Yapılandırmayı Kaydet',
      systemQueued: 'Yapılandırma kuyruğa alındı.',
      nfcDiagnostic: 'NFC Tanılaması',
      scaleDiagnostic: 'Tartı Tanılaması',
      readTagDiagnostic: 'Etiket Okuma Tanılaması',
      testNfc: 'Okuyucuyu test et',
      testScale: 'Doğruluğu test et',
      testReadTag: 'Etiket oku',
      systemFieldsRequired: 'Arka uç URL\'si gerekli.',
      brightness: 'Parlaklık',
      saved: 'Kaydedildi',
      noBacklight: 'DSI arka ışık algılanmadı. Parlaklık kontrolü DSI ekran gerektirir.',
      screenBlank: 'Ekran Kapanma Zaman Aşımı',
      screenBlankDesc: 'Hareketsizlik sonrası ekran kapanır. Uyandırmak için dokunun.',
      displayNote: 'Parlaklık bir yazılım filtresi olarak uygulanır.',
      scaleCalibration: 'Tartı Kalibrasyonu',
      currentWeight: 'Mevcut ağırlık',
      tareOffset: 'Dara',
      calFactor: 'Faktör',
      knownWeight: 'Bilinen ağırlık',
      calStep1: 'Tartıdan tüm öğeleri kaldırın ve Sıfır Ayarla\'ya basın.',
      calStep2: 'Bilinen ağırlığı tartıya yerleştirin.',
      setZero: 'Sıfır Ayarla',
      calibrateNow: 'Kalibre Et',
      calibrated: 'Kalibre edildi',
      tareSet: 'Dara komutu gönderildi. Cihaz bekleniyor...',
      tareComplete: 'Dara tamam!',
      tareTimedOut: 'Dara zaman aşımına uğradı — SpoolBuddy daemon çalışıyor mu?',
      tareFailed: 'Dara komutu gönderilemedi',
      zeroSet: 'Sıfır noktası ayarlandı. Bilinen ağırlığı tartıya yerleştirin.',
      calibrationDone: 'Kalibrasyon tamamlandı!',
      calibrationFailed: 'Kalibrasyon başarısız',
      lastCalibrated: 'Son kalibrasyon',
      stable: 'Kararlı',
      settling: 'Sabitleniyor...',
      firmware: 'Firmware',
      scale: 'Tartı',
      noDevice: 'SpoolBuddy cihazı bulunamadı',
      daemonVersion: 'Daemon Sürümü',
      currentVersion: 'Mevcut',
      versionPending: 'Daemon bekleniyor...',
      checking: 'Kontrol ediliyor...',
      checkUpdates: 'Güncellemeleri Kontrol Et',
      updateAvailable: 'Güncelleme mevcut',
      updateInstructions: 'SSH üzerinden güncelle: yükseltmek için SpoolBuddy yükleme betiğini çalıştırın.',
      upToDate: 'Güncel',
      includeBeta: 'Beta sürümleri dahil et',
    },
    writeTag: {
      tabExisting: 'Mevcut Makara',
      tabNew: 'Yeni Makara',
      tabReplace: 'Etiketi Değiştir',
      searchPlaceholder: 'Malzeme, renk, marka ile ara...',
      noUntaggedSpools: 'Etiketsiz makara yok',
      noTaggedSpools: 'Etiketli makara yok',
      selectSpool: 'Bir makara seçin, ardından okuyucuya boş bir NTAG yerleştirin',
      placeTag: 'Okuyucuya bir NTAG yerleştirin',
      tagReady: 'Etiket algılandı — yazmaya hazır',
      writeTag: 'Etiketi Yaz',
      replaceTag: 'Etiketi Değiştir',
      writing: 'Etiket yazılıyor...',
      waiting: 'SpoolBuddy bekleniyor...',
      writeSuccess: 'Etiket başarıyla yazıldı!',
      writeFailed: 'Yazma başarısız',
      queueFailed: 'Yazma komutu kuyruğa alınamadı',
      tryAgain: 'Tekrar Dene',
      cancel: 'İptal',
      replaceWarning: 'Eski etiket bağlantısı kaldırılacak. Yeni etiket yerini alacak.',
      deviceOffline: 'SpoolBuddy çevrimdışı',
      material: 'Malzeme',
      colorName: 'Renk Adı',
      color: 'Renk',
      brand: 'Marka',
      weight: 'Ağırlık (g)',
      createSpool: 'Makara Oluştur',
      creating: 'Oluşturuluyor...',
      spoolCreated: 'Makara oluşturuldu! Yazmaya hazır.',
      createFailed: 'Makara oluşturulamadı',
      incompleteDataWarning: 'Etiket eksik Spoolman verisiyle yazıldı',
    },
    quickMenu: {
      printerPower: 'Yazıcı Gücü',
      systemControls: 'Sistem',
      restartDaemon: 'Daemon\'u Yeniden Başlat',
      restartBrowser: 'Tarayıcıyı Yeniden Başlat',
      reboot: 'Yeniden Başlat',
      shutdown: 'Kapat',
      swipeToClose: 'Kapatmak için aşağı kaydır',
      confirmTitle: 'Onayla',
      confirmShutdown: 'SpoolBuddy\'yi kapatmak istediğinizden emin misiniz? Tekrar açmak için fiziksel erişime ihtiyacınız olacak.',
      confirmReboot: 'SpoolBuddy\'yi yeniden başlatmak istediğinizden emin misiniz?',
      confirmRestartDaemon: 'SpoolBuddy daemon yeniden başlatılsın mı? NFC ve tartı geçici olarak kullanılamayacak.',
      confirmRestartBrowser: 'Kiosk tarayıcısı yeniden başlatılsın mı? Ekran kısa bir süre kararacak.',
      confirm: 'Onayla',
      confirmPlugOn: '{{name}} açılsın mı?',
      confirmPlugOff: '{{name}} kapatılsın mı?',
      turnOn: 'Aç',
      turnOff: 'Kapat',
    },
  },

  diagnostic: {
    modalTitle: 'Bağlantı tanılaması — {{name}}',
    running: 'Tanılama çalışıyor...',
    runningElapsed: 'Tanılama çalışıyor... ({{elapsed}}s)',
    waitingForReportHint: 'Yazıcının durum raporu yayınlamasını bekliyor — bu işlem en fazla {{max}} saniye sürebilir.',
    runFailed: 'Tanılama çalıştırılamadı: {{error}}',
    retry: 'Tekrar çalıştır',
    runButton: 'Tanılamayı çalıştır',
    sectionTitle: 'Bağlantı Tanılaması',
    sectionDescription: 'Bir yazıcının neden bağlanmadığını veya yazdırmadığını kontrol edin — port erişilebilirliği, LAN geliştirici modu, Docker ağ modu ve kimlik bilgileri.',
    noPrinters: 'Yapılandırılmış yazıcı yok.',
    overall: {
      ok: 'Sorun bulunamadı — yazıcı bağlantısı sağlıklı görünüyor.',
      warnings: 'Yazıcı çalışmalı, ancak bazı şeyler dikkat gerektiriyor.',
      problems: 'Yazıcının neden bağlanmadığını veya yazdırmadığını açıklayan sorunlar bulundu.',
    },
    check: {
      port_mqtt: {
        title: 'Kontrol portu (MQTT 8883)',
        pass: 'Erişilebilir — yazıcı kontrol bağlantılarını kabul ediyor.',
        fail: 'Port 8883 erişilemez. Yazıcı kapalı, farklı bir IP adresinde veya bir güvenlik duvarı engelliyor. Yazıcı IP\'sini ve hiçbir şeyin port 8883\'ü engellemediğini doğrulayın.',
      },
      port_ftps: {
        title: 'Dosya aktarım portu (FTPS 990)',
        pass: 'Erişilebilir — baskı dosyaları gönderme çalışacak.',
        warn: 'Port 990 erişilemez. İzleme yine çalışabilir, ancak yazıcıya baskı gönderme başarısız olacak. Port 990\'ın engellenmediğinden emin olun.',
        warn_no_tls: 'Port 990 açık, ancak yazıcının dosya hizmeti TLS el sıkışmasını tamamlamıyor. Baskı dosyaları, kapak görselleri ve timelapse videoları alınamadığı için arşivler boş kalır. Yazıcıyı yeniden başlatın — portun engelini kaldırmak işe yaramaz.',
      },
      external_storage: {
        title: 'Gönderilen dosyaları harici depolamada sakla (kurulum adımı 4)',
        pass: 'Yazıcı bu seçeneğin açık olduğunu bildiriyor — gönderilen dosyalar SD kartta saklanacak ve arşivler küçük resim ve dilimleyici meta verileri içerecek.',
        fail: 'Yazıcı bu seçeneğin kapalı olduğunu bildiriyor. "Gönderilen dosyaları harici depolamada sakla" seçeneğini etkinleştirin — yeni donanım yazılımlarında (P2S 01.02 / Bambu Studio 2.6+) düğme yazıcının Baskı Ayarları\'nda; eski sürümlerde Bambu Studio / OrcaSlicer\'in Cihaz sekmesindedir. Bu seçenek olmadan, arşivlenen her baskıda küçük resim ve dilimleyici meta verisi olmayacak.',
        skip: 'Kontrol edilmedi — etkin bir MQTT bağlantısı gerekli. Bu ayarın yalnızca dilimleyicide bulunduğu eski dilimleyicilerde yazıcı bunu bildirmez, bu nedenle seçenek kapalı olsa bile bu kontrol geçer — kurulum adımı 4\'ü manuel olarak doğrulayın.',
        skip_unsupported_model: 'Bu modelde SD yuvası var ancak seçeneği açmanın bir yolu yok — mevcut P1 serisi bellenim, Bambu Studio\'da bu anahtarı göstermiyor ve yazıcının ekranı yok. Burada düzeltilecek bir şey yok; Bambu Lab bellenim desteği ekleyene kadar arşivlenen baskılarda küçük resimler ve dilimleyici meta verileri eksik olabilir.',
        fail_no_media: 'Seçenek açık, ancak yazıcı yuvasında kart veya bellek bildirmiyor, dolayısıyla gönderilen dosyaların gideceği bir yer yok. Bir tane takıp yeniden yazdırın — o zamana kadar arşivlenen her baskıda küçük resim ve dilimleyici meta verileri eksik olacak.',
        warn_internal_storage: 'Seçenek açık ve depolama takılı, ancak bu yazıcı yine de son baskıyı Bambuddy\'nin okuyamadığı dahili depolamasında tuttu. H2 serisi ve P2S donanım yazılımı bunu yapar ve hiçbir ayar bunu değiştirmez. Baskılar adları ve süreleriyle arşivlenir, ancak küçük resim ve dilimleyici meta verileri olmadan.',
      },
      port_rtsps: {
        title: 'Kamera portu ({{protocol}} {{port}})',
        pass: 'Erişilebilir — kamera akışı çalışacak.',
        warn: 'Port {{port}} erişilemez. Canlı kamera görünümü çalışmayacak. Bu, baskıyı etkilemez.',
      },
      network_mode: {
        title: 'Docker ağ modu',
        pass: 'Ana bilgisayar ağ modunda çalışıyor.',
        warn: 'Bambuddy, Docker köprü ağı kullanılarak çalışıyor. Yazıcı keşfi ve Sanal Yazıcı, ana bilgisayar ağ modu gerektirir — konteyneri "network_mode: host" ile yeniden oluşturun.',
        skip: 'Docker\'da çalışmıyor — uygulanamaz.',
      },
      subnet: {
        title: 'Ağ alt ağı',
        pass: 'Yazıcı ve Bambuddy aynı alt ağda.',
        warn: 'Yazıcı ({{printer_ip}}) ve Bambuddy ({{host_ip}}) farklı alt ağlarda. Alt ağlar arasında yönlendirme yapılandırılmazsa birbirlerine erişemeyebilirler.',
        skip: 'Alt ağ belirlenemedi — atlandı.',
      },
      mqtt_auth: {
        title: 'Yazıcı kimlik bilgileri',
        pass: 'Yazıcı bağlantıyı kabul etti.',
        fail: 'Yazıcıya erişilebiliyor ancak Bambuddy ona bağlı değil. Büyük olasılıkla erişim kodu veya seri numarası yanlış — erişim kodu, Yalnızca LAN veya Geliştirici Modu her açılıp kapatıldığında değişir, bu yüzden yazıcı ekranından yeniden kopyalayın. Yeniden başlamakta olan veya eşzamanlı bağlantı sınırına ulaşmış bir yazıcı da aynı görünür.',
        fail_auth_rejected: 'Yazıcı, Bambuddy\'nin kimlik bilgilerini reddetti. Erişim kodu veya seri numarası yanlış — erişim kodu, Yalnızca LAN veya Geliştirici Modu her açılıp kapatıldığında değişir. Yazıcı ekranından yeniden kopyalayın ve yazıcı ayarlarına kaydedin.',
        skip: 'Kontrol edilmedi — yazıcıya erişilemedi.',
      },
      developer_mode: {
        title: 'LAN Geliştirici Modu',
        pass: 'Geliştirici Modu etkin.',
        fail: 'Yazıcıda Geliştirici Modu KAPALI. Yazıcının LAN ayarlarında etkinleştirin — ve OK ile onaylayın. Bu olmadan baskılar başlamayacak.',
        skip: 'Kontrol edilemedi — yazıcıya canlı bir bağlantı gerektirir.',
      },
      printer_publishing: {
        title: 'Yazıcı durum yayını yapıyor',
        pass: 'Yazıcı durum güncellemelerini yayınlıyor — AMS, filamentler ve K profilleri dilimleyiciye doğru şekilde yansıtılacak.',
        fail: 'MQTT aracısı bağlantıyı kabul etti, ancak yazıcı hiç durum raporu yayınlamadı. Bu neredeyse her zaman yanlış ya da büyük/küçük harf hatalı bir seri numarasından kaynaklanır — device/<serial>/report konusu büyük/küçük harfe duyarlıdır. Yazıcı ayarlarındaki seri numarasını cihazın ekranındaki ile karşılaştırarak doğrulayın.',
        skip: 'Kontrol edilemedi — yazıcıya canlı bir bağlantı gerektirir.',
      },
    },
  },

  systemHealth: {
    sectionTitle: 'Sistem Sağlığı',
    sectionDescription: 'Bir destek talebine dönüşmeden önce genellikle kendi başınıza düzeltebileceğiniz bilinen sorunlar için son günlükleri tarar.',
    rescan: 'Yeniden tara',
    clean: 'Son {{times}} günlük kaydında bilinen sorun bulunamadı.',
    logUnavailable: 'Dosya günlüğü devre dışı, bu nedenle günlükler taranamıyor. Bu kontrolü kullanmak için dosya günlüğünü etkinleştirin.',
    learnMore: 'Nasıl düzeltilir',
    fixLabel: 'Düzeltme:',
    occurrences: '{{times}}× görüldü — son {{lastSeen}}\'de',
    category: {
      layer8: 'Bunu düzeltebilirsiniz',
      environment: 'Ortam',
      bug: 'Lütfen bunu bildirin',
    },
    signature: {
      'ftp-auth-rejected': {
        name: 'Yazıcı erişim kodunu reddetti',
        cause: 'Yazıcı dosya aktarım girişini reddetti. Erişim kodu yanlış veya Geliştirici Modu açılıp kapatıldıktan sonra değişti.',
        fix: 'Erişim kodunu yazıcı ekranından (LAN ayarları) yeniden kopyalayın ve Bambuddy\'deki yazıcının ayarlarında güncelleyin.',
      },
      'ftp-connection-timeout': {
        name: 'Dosya aktarım bağlantısı zaman aşımına uğradı',
        cause: 'Bambuddy yazıcının dosya aktarım portuna (FTPS 990) erişemedi. Port engellendi veya yazıcı kapalı ya da başka bir alt ağda.',
        fix: 'Bambuddy ile yazıcı arasında hiçbir şeyin port 990\'ı engellemediğinden ve her ikisinin de aynı ağda olduğundan emin olun.',
      },
      'ftp-ssl-error': {
        name: 'Güvenli dosya aktarım el sıkışması başarısız',
        cause: 'Yazıcının dosya hizmeti 990 numaralı bağlantı noktasında TLS olmadan yanıt verdi. Dosya sunucusu takılmış durumda: bu, güvenlik duvarı veya firmware sorunu değil, yazıcı kaynaklı bir arızadır.',
        fix: 'Yazıcıyı yeniden başlatın. O zamana kadar baskı dosyaları, kapak görselleri ve timelapse videoları alınamaz; baskının kendisi etkilenmez.',
      },
      'bambu-cloud-captcha': {
        name: 'Bambu Cloud CAPTCHA istiyor',
        cause: 'Bambu\'nun kötüye kullanım koruması bu ağı denetliyor, bu yüzden hiçbir Bambu Cloud oturum açma işlemi tamamlanamıyor. Bu, hesabınıza veya bu kuruluma değil, genel IP adresine bağlıdır.',
        fix: 'Bekleyin: genellikle birkaç saat içinde kalkar ve tekrarlanan denemeler süreyi uzatır. Bu sırada tarayıcı oturumundan alınan bir erişim belirteciyle bağlanın.',
      },
      'mqtt-connection-flapping': {
        name: 'Yazıcı bağlantısı sürekli düşüyor',
        cause: 'Kontrol bağlantısı (MQTT 8883) tekrar tekrar bağlantısı kesiliyor ve yeniden bağlanıyor — genellikle zayıf bir ağ yolu veya kısmen engellenmiş bir port.',
        fix: 'Yazıcıdaki Wi-Fi sinyalini kontrol edin, kablolu bağlantı tercih edin ve port 8883\'ün güvenilir bir şekilde erişilebilir olduğundan emin olun.',
      },
      'camera-connection-refused': {
        name: 'Kamera akışına erişilemez',
        cause: 'Canlı kameraya RTSPS 322 portunda erişilemedi. Port engellendi veya yazıcıda kamera veya LAN canlı görünümü kapalı.',
        fix: 'Yazıcıda kamerayı ve LAN canlı görünümünü etkinleştirin ve port 322\'nin engellenmediğinden emin olun. Bu, baskıyı etkilemez.',
      },
      'database-locked': {
        name: 'Veritabanı yazma çekişmesi',
        cause: 'SQLite veritabanı yük altında "veritabanı kilitli" hatalarıyla karşılaşıyor — aynı anda birkaç yazıcı çalıştırırken yaygındır.',
        fix: 'Bambuddy\'yi harici bir PostgreSQL veritabanına geçirin. Dokümantasyondaki PostgreSQL kılavuzuna bakın.',
      },
    },
  },

  vpDiagnostic: {
    title: 'Kurulum kontrolü — {{name}}',
    runButton: 'Kurulum kontrolünü çalıştır',
    running: 'Kurulum kontrolü çalışıyor...',
    runFailed: 'Kurulum kontrolü çalıştırılamadı: {{error}}',
    retry: 'Tekrar çalıştır',
    overall: {
      ok: 'Tüm kontroller geçti — bu sanal yazıcı doğru şekilde kurulmuş.',
      warnings: 'Sanal yazıcı çalışmalı, ancak bazı şeyler dikkat gerektiriyor.',
      problems: 'Dilimleyicinin bu sanal yazıcıyı neden göremediğini veya kullanamadığını açıklayan sorunlar bulundu.',
    },
    check: {
      enabled: {
        title: 'Sanal yazıcı etkin',
        fail: 'Bu sanal yazıcı kapatılmış. Keşfedilebilir hale getirmek için açın.',
      },
      running: {
        title: 'Servisler çalışıyor',
        fail: 'Sanal yazıcı etkin ancak servisleri çalışmıyor. Bambuddy günlüğünü kontrol edin — bir bind IP çakışması veya bir izin hatası genellikle onları durdurur.',
      },
      bind_interface: {
        title: 'Bind ağ arayüzü',
        fail: 'Bind arayüzü ayarlanmamış veya artık bu ana bilgisayarda mevcut değil. Bind Arayüzü açılır menüsünde mevcut bir arayüz seçin.',
      },
      access_code: {
        title: 'Erişim kodu ayarlandı',
        fail: 'Erişim kodu ayarlanmamış. Dilimleyiciye burada ayarladığınız aynı 8 karakterli erişim kodunun verilmesi gerekir.',
      },
      target_printer: {
        title: 'Hedef yazıcı',
        fail: 'Hedef yazıcı seçilmemiş. Proxy modu iletmek için gerçek bir yazıcıya ihtiyaç duyar.',
        warn: 'Hedef yazıcı şu anda çevrimdışı — yeniden bağlandığında proxy devam edecek.',
      },
      port_ftps: {
        title: 'Dosya yükleme servisi (port {{port}})',
        fail: 'Bind IP\'sinin {{port}} portunda hiçbir şey dinlemiyor, bu nedenle dilimleyici dosya yükleyemez. Bu arayüzde bir port çakışması genellikle nedendir.',
      },
      port_mqtt: {
        title: 'Kontrol servisi (port {{port}})',
        fail: 'Bind IP\'sinin {{port}} portunda hiçbir şey dinlemiyor, bu nedenle dilimleyici bağlanamaz veya durum gösteremez.',
      },
      port_bind: {
        title: 'Keşif servisi (port {{port}})',
        fail: 'Bind IP\'sinin {{port}} portunda hiçbir şey dinlemiyor, bu nedenle dilimleyicinin keşif el sıkışması başarısız oluyor.',
      },
      privileged_ports: {
        title: 'Ayrıcalıklı bağlantı noktası bağlama',
        fail: '{{port}} numaralı bağlantı noktası 1024 altındadır ve bu hizmetin onu bağlama izni yoktur; yukarıda hiçbir şeyin dinlememesinin nedeni budur. /etc/systemd/system/bambuddy.service dosyasına AmbientCapabilities=CAP_NET_BIND_SERVICE ekleyip yeniden başlatın veya "sudo setcap cap_net_bind_service=+ep $(readlink -f $(which python3))" komutunu çalıştırın. Docker kullanıyorsanız cap_add: [NET_BIND_SERVICE] ekleyin.',
      },
      certificate: {
        title: 'TLS sertifikası',
        pass: 'Sertifika hazır. Bambuddy CA sertifikasının (yukarıda) dilimleyicinizin güven deposuna içe aktarıldığından emin olun.',
        fail: 'Bu sanal yazıcı için TLS sertifikası eksik. Bambuddy veri dizininin yazılabilir olduğunu kontrol edin.',
      },
    },
  },

  bugReport: {
    title: 'Hata Bildir',
    description: 'Açıklama',
    descriptionPlaceholder: 'Ne ters gitti? Lütfen sorunu tanımlayın...',
    email: 'E-posta (isteğe bağlı)',
    emailPlaceholder: 'sizin@email.com',
    emailPrivacy: 'Sağlanırsa, e-postanız GitHub sorunundaki daraltılmış bir bölümde dahil edilecek, böylece bakımcı takip edebilir.',
    screenshot: 'Ekran Görüntüsü',
    uploadOrPaste: 'Bir görüntü yükleyin, yapıştırın veya sürükleyin',
    dataCollectedSummary: 'Rapora hangi veriler dahil edilir?',
    dataIncluded: 'Dahil:',
    dataIncludedList: 'Uygulama sürümü, OS, mimari, Python sürümü, veritabanı istatistikleri (yalnızca sayılar), yazıcı modelleri, nozul sayıları, firmware sürümleri, bağlantı durumu, entegrasyon durumu (Spoolman, MQTT, HA), hassas olmayan ayarlar, ağ arayüzü sayısı, Docker ayrıntıları, bağımlılık sürümleri.',
    dataNeverIncluded: 'Asla dahil edilmez:',
    dataNeverIncludedList: 'Yazıcı adları, seri numaraları, erişim kodları, parolalar, IP adresleri, e-posta adresleri, API anahtarları, belirteçler, webhook URL\'leri, ana bilgisayar adları veya kullanıcı adları.',
    submit: 'Gönder',
    startLogging: 'Hata Ayıklama Kaydını Başlat',
    stepEnableLogging: 'Hata ayıklama kaydı etkin',
    stepReproduce: 'Sorunu şimdi yeniden oluşturun',
    stepStopLogging: 'Durdur ve raporu gönder',
    stopAndSubmit: 'Durdur ve Gönder',
    maxDuration: '{{minutes}} dk sonra otomatik durur',
    stoppingLogs: 'Günlükler toplanıyor ve gönderiliyor...',
    submitting: 'Hata raporu gönderiliyor...',
    submittingStepConnection: 'Yazıcı bağlantı kontrolleri çalıştırılıyor',
    submittingStepVirtualPrinters: 'Sanal yazıcı kurulum kontrolleri çalıştırılıyor',
    submittingStepLogScan: 'Son günlüklerde bilinen sorunlar taranıyor',
    submittingStepSubmit: 'Rapor GitHub\'a gönderiliyor',
    submitSuccess: 'Hata raporu başarıyla gönderildi!',
    submitFailed: 'Hata raporu gönderilemedi',
    diagnosticChecking: 'Yazıcı bağlantıları kontrol ediliyor...',
    diagnosticHealthy: 'Bağlantı kontrolü başarılı — yazıcılarınızda sorun bulunamadı.',
    diagnosticSummary: '{{total}} yazıcıdan {{problems}} tanesinde bağlantı sorunu var',
    diagnosticIntro: 'Bir veya daha fazla yazıcının sorununuza neden olabilecek bir bağlantı sorunu var. Düzeltmeyi görmek için aşağıda bir yazıcıyı genişletin — bunu çözmek, hata raporu olmadan sorunu çözebilir. Yine de aşağıda bir rapor gönderebilirsiniz.',
    logHealthSummary: 'Günlüklerinizde bilinen sorunlar bulundu',
    logHealthIntro: 'Son günlükler bilinen sorunlarla eşleşiyor. Aşağıdaki düzeltmeleri kontrol edin — bunları çözmek, hata raporu olmadan sorununuzu çözebilir. Yine de aşağıda bir rapor gönderebilirsiniz.',
    thankYou: 'Teşekkürler!',
    submitted: 'Hata raporunuz gönderildi.',
    viewIssue: 'Sorunu Görüntüle',
    unexpectedError: 'Beklenmedik bir hata oluştu',
  },
  failureDetection: {
    title: 'AI Başarısızlık Algılama',
    description: 'Baskıları kendi barındırılan bir Obico ML API ile izle ve algılanan başarısızlıklara otomatik olarak yanıt ver.',
    mlUrl: 'Obico ML API URL\'si',
    mlUrlHint: 'Kendi barındırılan Obico ml_api konteynerinizin temel URL\'si (örn. http://192.168.1.10:3333).',
    mlToken: 'ML API Belirteci (isteğe bağlı)',
    mlTokenPlaceholder: 'Sunucu ML_API_TOKEN olmadan çalışıyorsa boş bırakın',
    mlTokenHint: 'Obico ml_api konteynerinizin ML_API_TOKEN ortam değişkeniyle eşleşmelidir. Konteyner belirteç olmadan çalışıyorsa boş bırakın.',
    test: 'Test',
    testSuccess: 'ML API erişilebilir ve sağlıklı.',
    testSuccessTokenUnknown: 'ML API erişilebilir ve sağlıklı. Belirteç doğrulanamadı.',
    testFailed: 'ML API\'ye erişilemedi.',
    sensitivity: 'Hassasiyet',
    sensitivityLow: 'Düşük (daha az yanlış pozitif)',
    sensitivityMedium: 'Orta (dengeli)',
    sensitivityHigh: 'Yüksek (erken algıla, daha fazla yanlış pozitif)',
    sensitivityHint: 'Uyarıları ve başarısızlıkları tetikleyen güven eşiklerini ayarlar.',
    action: 'Algılanan başarısızlıkta eylem',
    actionNotify: 'Yalnızca bildir',
    actionPause: 'Baskıyı duraklat',
    actionPauseOff: 'Duraklat ve gücü kes',
    pollInterval: 'Sorgulama aralığı (saniye)',
    pollIntervalHint: 'Baskı yaparken her yazıcının ne sıklıkta kontrol edileceği. Minimum 5sn, maksimum 120sn.',
    externalUrlMissing: 'Harici URL ayarlanmamış.',
    externalUrlHint: 'ML API, kamera anlık görüntüsünü URL üzerinden alır. ML API konteyneri Bambuddy\'ye erişebilsin diye Genel ayarlarda Harici URL\'yi ayarlayın.',
    perPrinterTitle: 'İzlenen Yazıcılar',
    perPrinterHint: 'Algılama servisinin hangi yazıcıları izleyeceğini seçin.',
    monitorAll: 'Tüm bağlı yazıcıları izle',
    statusTitle: 'Durum',
    serviceRunning: 'Servis çalışıyor',
    thresholds: 'Düşük / Yüksek eşikler',
    activePrinters: 'Aktif baskılar',
    noActivePrints: 'Şu anda çalışan baskı yok.',
    historyTitle: 'Son Algılamalar',
    noHistory: 'Henüz algılama yok.',
  },

  makerworld: {
    title: 'MakerWorld',
    description: 'Bambu Handy uygulamasına gitmeden — doğrudan Bambuddy\'den içe aktarmak ve yazdırmak için bir MakerWorld model URL\'si yapıştırın.',
    pasteUrlHeader: "MakerWorld'den İçe Aktar",
    pasteUrlPlaceholder: 'https://makerworld.com/en/models/… veya herhangi bir MakerWorld bağlantısını yapıştırın',
    resolveButton: 'Çöz',
    signInRequiredTitle: 'İndirme için Bambu Cloud girişi gerekli',
    signInRequiredBody: 'Model ayrıntılarına anonim olarak göz atabilirsiniz, ancak MakerWorld 3MF dosyalarını indirmek için bir Bambu Cloud hesabı gerektirir.',
    signInExpiredTitle: 'Bambu Cloud oturumu sona erdi',
    signInExpiredBody: 'Bambuddy oturumunuz açık kalmaya devam ediyor, ancak Bambu Lab kayıtlı belirteci artık kabul etmediği için indirmeler başarısız olacak. Bambu Cloud oturumunu yeniden açın.',
    openCloudSettings: 'Bulut ayarlarını aç',
    untitledModel: 'Adsız model',
    byCreator: '{{name}} tarafından',
    downloadsCount: '{{count}} indirme',
    licensePrefix: 'Lisans',
    alreadyImported: 'Zaten kütüphanede',
    openOnMakerworld: "MakerWorld'de aç",
    alreadyInLibrary: 'Bu model zaten kütüphanenizde — Dosya Yöneticisi → MakerWorld\'de bulun',
    importSuccess: '{{filename}} içe aktarıldı — Dosya Yöneticisi → MakerWorld\'e kaydedildi',
    platesHeader: 'Plakalar ({{count}})',
    plateDefaultName: 'Plaka {{n}}',
    materialCount: '{{count}} filament',
    amsRequired: 'AMS gerekli',
    slicedFor: '{{printer}} için dilimlendi',
    alsoCompatible: 'Ayrıca uyumlu olarak işaretlendi: {{printers}}',
    importToLibrary: 'Kaydet',
    sliceIn: 'Kaydet ve {{slicer}}\'de Dilimle',
    disclaimer: 'MakerWorld entegrasyonu topluluk tarafından belgelenen API uç noktalarını kullanır. Bambuddy, MakerWorld veya Bambu Lab ile ilişkili veya onaylı değildir.',
    lastImportSuccess: 'Kütüphanenize içe aktarıldı',
    lastImportAlreadyInLibrary: 'Zaten kütüphanenizde',
    viewInLibrary: 'Dosya Yöneticisinde Görüntüle',
    openInBambuStudio: "Bambu Studio'da Aç",
    openInOrcaSlicer: "OrcaSlicer'da Aç",
    importTo: 'Dosya yöneticisine içe aktar',
    recentImportsHeader: 'Son içe aktarımlar',
    phaseResolving: 'Çözülüyor',
    phaseDownloading: 'İndiriliyor',
    folderAuto: 'MakerWorld (varsayılan)',
    importAll: 'Tümünü içe aktar',
    importAllProgress: '{{current}}/{{total}} içe aktarılıyor',
    openGallery: 'Görüntü galerisini aç',
    galleryPrev: 'Önceki görüntü',
    galleryNext: 'Sonraki görüntü',
    deleteImport: 'Kütüphaneden kaldır',
    importDeleting: 'Kaldırılıyor…',
    importDeleted: 'Kütüphaneden kaldırıldı',
    confirmDelete: '{{filename}} kütüphaneden kaldırılsın mı? Bu, yerel dosyayı siler ancak plaka MakerWorld\'den yeniden içe aktarılabilir.',
    errors: {
      resolveFailed: 'O MakerWorld URL\'si çözülemedi.',
      downloadFailed: 'İndirme başarısız. Lütfen tekrar deneyin.',
      deleteFailed: 'Dosya kütüphaneden kaldırılamadı.',
    },
  },
  gcodeViewer: {
    filamentSlot: 'Filament {{n}}',
    loading: 'Takım yolu okunuyor…',
    loadFailed: 'Bu dosyanın G-code’u yüklenemedi.',
    showTravel: 'Boş hareketler',
    topLayer: 'Üst katman',
    bottomLayer: 'Alt katman',
    noSource: 'Önizlenecek dosya belirtilmedi.',
    view: {
      filament: 'Filament',
      feature: 'Öğe',
      height: 'Yükseklik',
      width: 'Genişlik',
    },
    feature: {
      wall: 'Duvarlar',
      sparseInfill: 'Seyrek dolgu',
      solidInfill: 'Katı dolgu',
      bridge: 'Köprü / çıkıntı',
      support: 'Destek',
      skirt: 'Etek / kenarlık',
      gapFill: 'Boşluk dolgusu',
      ironing: 'Ütüleme',
      primeTower: 'Temizleme kulesi',
    },
    back: 'Geri',
    backToArchives: 'Baskı Arşivlerine Dön',
    backToFiles: 'Dosya Yöneticisine Dön',
    plates: 'Plakalar',
    plateN: 'Plaka {{n}}',
  },
  libraryTrash: {
    title: 'Çöp Kutusu',
    headerButton: 'Çöp',
    headerTooltip: 'Çöpe taşınan dosyaları görüntüle',
    backToFiles: 'Dosya Yöneticisine Dön',
    subtitleAdmin: 'Silinen dosyalar burada {{days}} gün kalır, ardından otomatik silinir. Bu görünüm tüm kullanıcılar için çöpteki dosyaları gösterir.',
    subtitleUser: 'Silinen dosyalar burada {{days}} gün kalır, ardından otomatik silinir.',
    loading: 'Çöp yükleniyor…',
    loadError: 'Çöp yüklenemedi.',
    empty: 'Çöp boş.',
    summary: '{{count}} dosya · {{size}}',
    emptyTrash: 'Çöpü boşalt',
    restore: 'Geri Yükle',
    purgeNow: 'Şimdi sil',
    autoPurgeIn: '{{when}} içinde otomatik silinir',
    days: 'gün',
    retentionLabel: 'Otomatik sil',
    selectAll: 'Tümünü seç',
    selectOne: '{{filename}} seç',
    selectionCount: '{{count}} seçildi',
    bulkRestore: 'Seçilenleri geri yükle',
    bulkPurge: 'Seçilenleri sil',
    col: {
      filename: 'Dosya',
      folder: 'Klasör',
      size: 'Boyut',
      deleted: 'Çöpe taşındı',
      autoPurge: 'Otomatik silinir',
      owner: 'Sahip',
      actions: 'İşlemler',
    },
    confirm: {
      purgeTitle: 'Kalıcı olarak silinsin mi?',
      purgeBody: '{{filename}} diskten silinecek ve geri yüklenemeyecek.',
      emptyTitle: 'Çöp boşaltılsın mı?',
      emptyBody: 'Tüm {{count}} dosya diskten silinecek. Bu geri alınamaz.',
      bulkPurgeTitle: 'Seçili dosyalar kalıcı olarak silinsin mi?',
      bulkPurgeBody: 'Seçili {{count}} dosya diskten silinecek ve geri yüklenemeyecek.',
      cta: 'Kalıcı olarak sil',
    },
    toast: {
      restored: 'Dosya geri yüklendi.',
      restoreFailed: 'Dosya geri yüklenemedi.',
      purged: 'Dosya kalıcı olarak silindi.',
      purgeFailed: 'Dosya silinemedi.',
      emptied: '{{count}} dosya çöpten silindi.',
      emptyFailed: 'Çöp boşaltılamadı.',
      retentionSaved: 'Otomatik silme {{days}} gün olarak ayarlandı.',
      retentionFailed: 'Saklama ayarı kaydedilemedi.',
      bulkRestored: '{{count}} dosya geri yüklendi.',
      bulkPurged: '{{count}} dosya silindi.',
    },
  },
  libraryPurge: {
    title: 'Eski dosyaları temizle',
    headerButton: 'Eskileri temizle',
    headerTooltip: 'Eski dosyaları toplu olarak çöpe taşı',
    description: 'Kütüphanenizden eski dosyaları tek seferde temizleyin. Baskı geçmişi olan dosyalar son baskı tarihlerine göre, hiç yazdırılmamış dosyalar yükleme tarihlerine göre yaşlandırılır.',
    ageLabel: 'Şundan eski dosyaları taşı',
    days: 'gün',
    includeNeverPrinted: 'Hiç yazdırılmamış dosyaları dahil et',
    effectsTitle: 'Temizle\'ye tıkladığınızda ne olur',
    effect1: 'Eşleşen dosyalar Çöp\'e taşınır — henüz diskten silinmezler.',
    effect2: 'Saklama penceresi sona erene kadar Çöp\'ten herhangi bir zamanda geri yükleyebilirsiniz.',
    effect3: 'Saklama sonrası, çöp süpürücü onları kalıcı olarak diskten kaldırır.',
    effect4: 'Harici (bağlı) klasörlerdeki dosyalar atlanır — Bambuddy asla sahibi olmadığı bayt\'ları silmez.',
    previewLoading: 'Kaç dosyanın eşleştiği kontrol ediliyor…',
    previewFailed: 'Temizleme önizlenemedi.',
    previewSummary: '{{count}} dosya · {{size}} çöpe taşınacak',
    andMore: '…ve {{count}} daha',
    warning: 'Çöpe taşınan dosyalar saklama penceresi sona erene kadar depolama alanını kullanmaya devam eder. Diski hemen boşaltmak için sonradan Çöp\'ü boşaltın.',
    confirmCta: '{{count}} dosyayı çöpe taşı',
    purging: 'Çöpe taşınıyor…',
    toast: {
      success: '{{count}} dosya çöpe taşındı.',
      failed: 'Dosyalar temizlenemedi.',
    },
  },
  libraryAutoPurge: {
    enableLabel: 'Eski dosyaları otomatik temizle',
    enableDescription: 'Yönetici temizliğini günde bir kez çalıştırır. Dosyalar önce Çöp\'e gider — hemen silinmezler.',
    ageLabel: 'Şundan eski dosyaları otomatik temizle',
    ageDescription: 'Minimum 7 gün, maksimum 10 yıl. Manuel Temizle düğmesiyle aynı yaş kuralını kullanır.',
    days: 'gün',
    includeNeverPrinted: 'Hiç yazdırılmamış dosyaları dahil et',
    saveFailed: 'Otomatik temizleme ayarları kaydedilemedi.',
  },
  archivePurge: {
    headerButton: 'Eskileri temizle',
    headerTooltip: 'Eski arşivleri toplu olarak sil',
    title: 'Eski arşivleri temizle',
    description: 'Eski baskı geçmişini temizleyin. Her arşiv en son baskı tamamlamasına göre yaşlandırılır — bir arşivi yeniden yazdırmak yaşını yeniler, bu nedenle aktif çalışma asla temizlenmez.',
    ageLabel: 'Son şu kadar günde yazdırılmamış arşivleri sil',
    days: 'gün',
    effectsTitle: 'Temizle\'ye tıkladığınızda ne olur',
    effect1: 'Eşleşen her arşiv listelerden gizlenir ve dosyaları diskten kaldırılır (3MF, küçük resim, zaman atlamalı video, kaynak 3MF, F3D tasarım dosyası, fotoğraflar).',
    effect2: 'Arşiv satırı veritabanında kalır, böylece Hızlı İstatistikler filament, süre, maliyet ve enerji katkısını korur — tek arşiv silme varsayılanı ile aynı.',
    effect3: 'Hızlı İstatistik katkısını da kaldırmak için aşağıdaki "Ayrıca istatistiklerden kaldır"ı işaretleyin (tek arşiv silme seçeneğiyle eşleşir). O yol geri alınamaz.',
    effect4: 'Bir arşivi yeniden yazdırmak yaş saatini yeniler, bu nedenle hâlâ kullandığınız arşivler güvendedir.',
    purgeStatsLabel: 'Ayrıca istatistiklerden kaldır',
    purgeStatsHint: 'Eşleşen arşivleri Hızlı İstatistiklerden (filament, süre, maliyet, enerji) düşürür. Bu olmadan, Hızlı İstatistikler her katkıyı korur ve yalnızca dosyalar diskten ayrılır.',
    previewLoading: 'Kaç arşivin eşleştiği kontrol ediliyor…',
    previewFailed: 'Temizleme önizlenemedi.',
    previewSummary: '{{count}} arşiv · {{size}} kaldırılacak',
    andMore: '…ve {{count}} daha',
    warning: 'Dosyalar diskten kaldırılır ve geri yüklenemez. Devam etmeden önce saklamak istediğiniz her şeyi indirin veya favoriye ekleyin.',
    confirmCta: '{{count}} arşivi kaldır',
    purging: 'Kaldırılıyor…',
    toast: {
      success: '{{count}} arşiv kaldırıldı.',
      failed: 'Arşivler temizlenemedi.',
    },
  },
  archiveAutoPurge: {
    enableLabel: 'Eski arşivleri otomatik temizle',
    enableDescription: 'Günde bir kez, eşik içinde yazdırılmamışsa arşivleri listelerden gizler ve dosyalarını diskten kaldırır. Bir arşivi yeniden yazdırmak saati sıfırlar.',
    ageLabel: 'Son şu kadar günde yazdırılmamış arşivleri otomatik sil',
    ageDescription: 'Minimum 7 gün, maksimum 10 yıl. En son baskı tamamlamasına göre — bir arşivi yeniden yazdırmak yaşını yeniler. 3MF, küçük resim, zaman atlamalı video, kaynak 3MF, F3D ve fotoğrafları kaldırır.',
    days: 'gün',
    purgeStatsLabel: 'Ayrıca istatistiklerden kaldır',
    purgeStatsDescription: 'Etkinleştirildiğinde, günlük süpürücü her temizlenen arşivi de Hızlı İstatistiklerden (filament, süre, maliyet, enerji) düşürür. Varsayılan kapalı — Hızlı İstatistikler katkıyı korur, yalnızca dosyalar diskten ayrılır.',
    runNow: 'Arşivleri şimdi temizle',
    saveFailed: 'Otomatik temizleme ayarları kaydedilemedi.',
  },
  cameraTokens: {
    scope: {
      camera_stream: 'Kamera akışı',
      camwall: 'Kamera duvarı',
      overlay: 'Yayın bindirmesi',
    },
    title: 'Kamera API Belirteçleri',
    navTitle: 'Kamera API belirteçleri',
    description:
      'Kamera akışını Home Assistant, Frigate, kiosk ekranları veya sabit bir adres gerektiren başka araçlara gömmek için uzun ömürlü belirteçler. Kapsam oluşturma sırasında seçilir; belirteç istediğiniz zaman iptal edilebilir.',
    loading: 'Yükleniyor…',
    confirmRevoke: {
      title: 'Bu belirteç iptal edilsin mi?',
      body: '"{{name}}" kullanan herhangi bir cihaz hemen erişimini kaybedecek. Bu geri alınamaz.',
      cancel: 'İptal',
      confirm: 'İptal Et',
    },
    create: {
      scopeLabel: 'Kapsam',
      hintCameraStream:
        'Kamera akışı belirteci yalnızca kamera akışlarını ve anlık görüntüleri alabilir. Home Assistant, Frigate veya tek bir kamerayı gömen her şey için kullanın.',
      hintCamWall:
        'Kamera duvarı belirteci, oturum açmadan bir ekranda /camwall adresini açar. Her yazıcının adını ve durumunu, ayrıca kamera akışlarını görebilir. Dosya adlarını, adresleri veya erişim kodlarını göremez.',
      hintOverlay:
        'Yayın bindirmesi belirteci, oturum açmadan bir ekranda /overlay/{printerId} adresini açar — OBS veya herhangi bir canlı yayın için. Bir yazıcının kamera akışını ve ekranda gösterilen dosya adı dahil canlı yazdırma durumunu görebilir. Adresleri veya erişim kodlarını göremez.',
      title: 'Yeni belirteç oluştur',
      nameLabel: 'Belirteç adı',
      namePlaceholder: 'örn. Home Assistant',
      daysLabel: 'Sona erene kadar gün',
      submit: 'Oluştur',
      hint:
        'Maksimum ömür 365 gün. Belirteç değeri oluşturmada yalnızca bir kez gösterilir — şimdi kopyalayın.',
    },
    created: {
      camWallUrlTitle: 'Bu ekran için kamera duvarı adresi',
      camWallUrlHint:
        'Bu adresi ekranda açın. Adresi okuyabilen herkes duvarı izleyebilir, bu yüzden onu bir anahtar gibi görün; ekranın erişimini kesmek için belirteci iptal edin.',
      overlayUrlTitle: 'OBS için bindirme adresi',
      overlayUrlHint:
        'Bunu OBS\'ye Tarayıcı Kaynağı olarak ekleyin. /overlay/1 içindeki sayıyı yazıcınızın numarasıyla değiştirin (Yazıcılar sayfasındaki adresinden). Adresi okuyabilen herkes yayını izleyebilir, bu yüzden onu bir anahtar gibi görün — erişimi kesmek için belirteci iptal edin.',
      title: 'Belirteç oluşturuldu — şimdi kopyalayın',
      warning:
        'Bu, bu belirtecin görünür olacağı tek seferdir. Bu iletişim kutusunu kapattıktan sonra onu bir daha asla görüntüleyemezsiniz.',
      copy: 'Kopyala',
      dismiss: 'Kaydettim',
    },
    list: {
      scope: 'Kapsam',
      myTitle: 'Belirteçlerim',
      allTitle: 'Tüm kullanıcılar (yönetici görünümü)',
      empty: 'Henüz belirteç yok.',
      name: 'Ad',
      owner: 'Sahip',
      prefix: 'Önek',
      created: 'Oluşturuldu',
      expires: 'Sona Erer',
      lastUsed: 'Son kullanım',
      revoke: 'İptal Et',
      expired: 'Süresi Doldu',
    },
    toast: {
      created: 'Belirteç oluşturuldu',
      createFailed: 'Belirteç oluşturulamadı',
      revoked: 'Belirteç iptal edildi',
      revokeFailed: 'Belirteç iptal edilemedi',
      loadFailed: 'Belirteçler yüklenemedi',
      copied: 'Panoya kopyalandı',
      copyFailed: 'Kopyalama başarısız — manuel olarak seçip kopyalayın',
    },
  },
  // Tahmin ve Envanter Zekası
  forecast: {
    title: 'Tahmin',
    noSpools: 'Aktif makara bulunamadı. Tahmin verisini görmek için envanterinize makara ekleyin.',
    noUsageData: 'Kullanım verisi mevcut değil — stok zaman çizelgesi öngörülemiyor.',
    sku: 'SKU',
    material: 'Malzeme',
    stock: 'Stok',
    dailyRate: 'Oran',
    daysLeft: 'Kalan Gün',
    emptyBy: 'Şu Tarihte Boş',
    reorderBy: 'Şu Tarihte Sipariş',
    actions: 'İşlemler',
    trend: 'Trend',
    estimated: 'Tahmini',
    noData: 'Veri yok',
    timeframe: 'Zaman Aralığı',
    chartTitle: 'Öngörülen Stok — İlk 5 Malzeme',
    dashedLinesROP: 'Kesik çizgiler = yeniden sipariş noktaları',
    stockLevel: 'Stok Seviyesi',
    reorderPoint: 'Yeniden Sipariş Noktası',
    safetyMargin: 'Güvenlik Marjı',
    trendLegend: 'Trend (geçmiş tabanlı, %95 servis seviyesi)',
    estimatedLegend: 'Tahmini (ağırlık farkı)',
    noDataLegend: 'Veri yok',
    ropLabel: 'ROP',
    ssLabel: 'SS',
    safetyStockLegend: 'Güvenlik stoku',
    stockArrivalLegend: 'Stok varışı',
    stockoutLegend: 'Stok tükenmesi',
    alertCount_one: '{{count}} uyarı',
    alertCount_other: '{{count}} uyarı',
    order: 'Sipariş',
    save: 'Kaydet',
    cancel: 'İptal',
    settingsSaved: 'Ayarlar kaydedildi',
    failedSaveSettings: 'Ayarlar kaydedilemedi',
    globalLeadTimeSaved: 'Global teslim süresi kaydedildi',
    globalLeadTime: 'Global teslim süresi',
    globalLeadTimeHint: 'Global teslim süresi tabanı — tüm SKU\'lar için yeniden sipariş noktası hesaplamasında kullanılır',
    skuLeadTimeOverride: 'SKU Teslim Süresi Geçersiz Kılma',
    skuLeadTimeHint: '0 = global teslim süresini kullan. Bu SKU için geçersiz kılmak için >0 ayarlayın.',
    safetyMarginLabel: 'Güvenlik Marjı',
    effectiveLeadTime: 'Etkili Teslim Süresi',
    effectiveLeadTimeHint: 'max(global {{global}}g, SKU {{sku}}g)',
    reorderPointHint: 'd̄ × LT + güvenlik marjı — stok bu seviyeye geldiğinde sipariş ver',
    safetyMarginHint: 'İstatistiksel güvenlik stoku (z=1.65 × σ × √LT) + kullanıcı tanımlı tampon',
    safetyMarginHintDays: 'İstatistiksel güvenlik stokunun üzerine eklenen tampon.{{approx}}',
    safetyMarginHintDaysApprox: ' ≈ mevcut oranda {{g}}g.',
    safetyMarginHintG: 'İstatistiksel güvenlik stokunun üzerine eklenen sabit ağırlık tamponu.{{approx}}',
    safetyMarginHintGApprox: ' ≈ mevcut oranda {{days}}g.',
    individualSpools: 'Bireysel makaralar',
    labelWeight: 'Etiket',
    spoolCount_one: '{{count}} makara',
    spoolCount_other: '{{count}} makara',
    stockBreakRisk: 'Stok tükenme riski',
    stockBreakDetail: '{{days}}g kaldı, teslim süresi {{lt}}g.',
    stockBreakBefore: 'Yenileme öncesi stok tükenmesi',
    reorderNow: 'Şimdi sipariş ver',
    reorderTriggerPassed: 'Tetikleyici tarih {{date}} geçti.',
    shoppingList: 'Alışveriş Listesi',
    shoppingListItems_one: '({{count}} öğe)',
    shoppingListItems_other: '({{count}} öğe)',
    shoppingListEmpty: 'Alışveriş listesi boş. Öğe eklemek için herhangi bir satırdaki sepet simgesine tıklayın.',
    addToCart: 'Alışveriş listesine ekle',
    alertsSnoozed: 'Bu SKU için uyarıları sustur',
    alertsEnabled: 'Bu SKU için uyarıları aç',
    addedToCart: 'Alışveriş listesine eklendi',
    failedAddItem: 'Öğe eklenemedi',
    listView: 'Liste',
    logisticsView: 'Lojistik',
    qty: 'Adet',
    weight: 'Ağırlık',
    leadTime: 'Teslim Süresi',
    expectedRestock: 'Beklenen Yenileme',
    status: 'Durum',
    note: 'Not',
    pending: 'Beklemede',
    purchased: 'Satın Alındı',
    received: 'Teslim Alındı',
    markPurchased: 'Satın alındı olarak işaretle',
    markReceived: 'Teslim alındı olarak işaretle — makaraları Stok envanterine ekler',
    resetToPending: 'Beklemeye sıfırla',
    remove: 'Kaldır',
    clearAll: 'Tümünü temizle',
    downloadCsv: 'CSV',
    addToCartTitle: 'Alışveriş Listesine Ekle',
    byQuantity: 'Miktara Göre',
    byDuration: 'Süreye Göre',
    numberOfSpools: 'Makara sayısı',
    lastHowManyDays: 'Kaç gün dayanmalı?',
    noUsageQty: 'Kullanım verisi yok — miktar 1 olarak ayarlandı.',
    noteOptional: 'Not (isteğe bağlı)',
    notePlaceholder: 'örn. X projesi için, acil…',
    addNSpools_one: '{{count}} makara ekle',
    addNSpools_other: '{{count}} makara ekle',
    onArrival: 'Varışta',
    stockBreakIn: '{{days}}g içinde stok tükenmesi.',
    stockRunsOutBefore: '{{lt}}g teslim süresi dolmadan önce stok tükenir.',
    atRate: '{{rate}}g/gün oranında size gerekli',
    moreSpools_one: '{{count}} daha makara',
    moreSpools_other: '{{count}} daha makara',
    bridgeGap: 'boşluğu kapatmak için.',
    noReadAccess: 'Envanter tahminlerini görüntüleme izniniz yok.',
    noWriteAccess: 'Tahmin ayarlarını değiştirme izniniz yok.',
  },
};
