Просмотр исходного кода

feat(i18n): add Turkish (tr) translation (#1571)

Samed Yüksel 1 день назад
Родитель
Сommit
d736611ded
3 измененных файлов с 6044 добавлено и 1 удалено
  1. 14 0
      frontend/scripts/check-i18n-parity.mjs
  2. 4 1
      frontend/src/i18n/index.ts
  3. 6026 0
      frontend/src/i18n/locales/tr.ts

+ 14 - 0
frontend/scripts/check-i18n-parity.mjs

@@ -319,6 +319,19 @@ const ES_COGNATES = [
   'Avery 5160 — US Letter sheet (25.4 × 66.7 mm × 30)',
 ];
 
+// Turkish cognates — technical UI labels that Turkish speakers use verbatim
+// from English (loanwords + acronyms + format strings). Curated, not a shortcut.
+const TR_COGNATES = [
+  'Filament', 'Firmware', 'Disk', 'Hex', 'Test', 'Port', 'Model', 'Metal',
+  'Min', 'Normal', 'Platform', 'Net', 'Trend', 'Commit', 'Global', 'Proxy',
+  'N/A', 'email',
+  'STARTTLS (Port 587)', 'SSL/TLS (Port 465)',
+  '({{count}}/8)', 'Hex: #{{hex}}', 'MakerWorld: {{designer}}',
+  '{{count}} filament', '{{printer}}: {{error}}', '{{weight}}g',
+  'Filament {{index}} ({{type}})',
+  'EC984C,#6CD4BC,A66EB9,D87694',
+];
+
 const IDENTICAL_TO_EN_ALLOWED = {
   de: new Set(DE_COGNATES),
   fr: new Set(FR_COGNATES),
@@ -329,6 +342,7 @@ const IDENTICAL_TO_EN_ALLOWED = {
   'pt-BR': new Set(PT_BR_COGNATES),
   'zh-CN': new Set(ZH_CN_COGNATES),
   'zh-TW': new Set(ZH_TW_COGNATES),
+  tr: new Set(TR_COGNATES),
 };
 
 // Pure comparison logic, exported so tests can verify each failure mode

+ 4 - 1
frontend/src/i18n/index.ts

@@ -13,6 +13,7 @@ import ko from './locales/ko';
 import ptBR from './locales/pt-BR';
 import zhCN from './locales/zh-CN';
 import zhTW from './locales/zh-TW';
+import tr from './locales/tr';
 
 const resources = {
   en: { translation: en },
@@ -25,6 +26,7 @@ const resources = {
   'pt-BR': { translation: ptBR },
   'zh-CN': { translation: zhCN },
   'zh-TW': { translation: zhTW },
+  tr: { translation: tr },
 };
 
 i18n
@@ -33,7 +35,7 @@ i18n
   .init({
     resources,
     fallbackLng: 'en',
-    supportedLngs: ['en', 'de', 'es', 'fr', 'ja', 'it', 'ko', 'pt-BR', 'zh-CN', 'zh-TW'],
+    supportedLngs: ['en', 'de', 'es', 'fr', 'ja', 'it', 'ko', 'pt-BR', 'tr', 'zh-CN', 'zh-TW'],
 
     detection: {
       // Order of detection methods
@@ -67,4 +69,5 @@ export const availableLanguages = [
   { code: 'pt-BR', name: 'Portuguese (Brazil)', nativeName: 'Português (Brasil)' },
   { code: 'zh-CN', name: 'Chinese (Simplified)', nativeName: '简体中文' },
   { code: 'zh-TW', name: 'Chinese (Traditional)', nativeName: '繁體中文' },
+  { code: 'tr', name: 'Turkish', nativeName: 'Türkçe' },
 ];

+ 6026 - 0
frontend/src/i18n/locales/tr.ts

@@ -0,0 +1,6026 @@
+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',
+    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: {
+    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',
+    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ğ',
+  },
+
+  // 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',
+    },
+    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',
+      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',
+    },
+    // 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',
+    // 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}}',
+      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: {
+      title: 'Baskı plakasını hareket ettir',
+      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.',
+    },
+    // 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ı',
+    },
+    // AMS Kurutma
+    drying: {
+      start: 'Kurutmayı Başlat',
+      stop: 'Kurutmayı Durdur',
+      temperature: 'Sıcaklık',
+      duration: 'Süre',
+      hours: 'saat',
+      timeRemaining: '{{time}} kaldı',
+      active: 'Kurutuluyor',
+      notSupported: 'Kurutma desteklenmiyor',
+      powerRequired: 'Kurutmayı etkinleştirmek için AMS güç adaptörünü bağlayın',
+      startingDrying: 'Kurutma başlatılıyor...',
+      stoppingDrying: 'Kurutma durduruluyor...',
+      rotateTray: 'Kurutma sırasında makarayı döndür',
+    },
+    // Filamentler bölümü
+    filaments: 'Filamentler',
+    // 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',
+      chamber: 'Hazne Fanı',
+    },
+    // HMS hataları
+    clickToViewHmsErrors: 'HMS hatalarını görüntülemek için tıklayın',
+    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',
+    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',
+    reprint: 'Tekrar Yazdır',
+    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',
+      schedule: 'Zamanla',
+      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',
+      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',
+      noPermissionEdit: 'Arşivleri düzenleme izniniz yok',
+      noPermissionDelete: 'Arşivleri silme izniniz yok',
+      reprint: 'Tekrar Yazdır',
+      schedulePrint: 'Baskıyı Zamanla',
+      schedule: 'Zamanla',
+      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)',
+      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',
+      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',
+    },
+  },
+
+  // Kuyruk sayfası
+  queue: {
+    title: 'Baskı Kuyruğu',
+    subtitle: 'Baskı işlerinizi zamanlayın ve yönetin',
+    addToQueue: 'Kuyruğa Ekle',
+    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',
+    },
+    // Baskı modali
+    print: 'Yazdır',
+    reprint: 'Tekrar Yazdır',
+    schedulePrint: 'Baskıyı Zamanla',
+    editQueueItem: 'Kuyruk Öğesini Düzenle',
+    printToPrinters: '{{count}} Yazıcıya Yazdır',
+    queueToPrinters: '{{count}} Yazıcıya Kuyrukla',
+    queueSelectedPlates: '{{count}} Plakayı Kuyrukla',
+    selectAllPlates: 'Tüm {{count}} Plakayı Seç',
+    deselectAll: 'Seçimi Kaldır',
+    printQueued: 'Baskı kuyruğa eklendi',
+    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',
+    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: 'Yığın',
+    // 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: {
+      asap: 'ASAP',
+      overdue: 'Gecikmiş',
+      now: 'Şimdi',
+      lessThanMinute: 'Bir dakikadan az',
+      inMinutes: '{{count}} dk içinde',
+      inHours: '{{count}} saat içinde',
+    },
+    // İşlemler
+    actions: {
+      stopPrint: 'Baskıyı Durdur',
+      startPrint: 'Baskıyı Başlat',
+      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",
+      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',
+    },
+    // Zaman çizelgesi görünümü
+    timeline: {
+      listView: 'Liste',
+      timelineView: 'Zaman Çizelgesi',
+      unassigned: 'Atanmamış',
+      noData: 'Bu gün için zamanlanmış baskı yok',
+      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',
+      },
+    },
+    // İ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',
+    },
+  },
+
+  backgroundDispatch: {
+    unknownFile: 'Bilinmeyen dosya',
+    unknownPrinter: 'Bilinmeyen yazıcı',
+    startingPrints: 'Baskılar başlatılıyor',
+    progressSummary: '{{complete}}/{{total}} tamamlandı • Sevk edildi: {{dispatched}} • İşleniyor: {{processing}}',
+    expandDetails: 'Sevk ayrıntılarını genişlet',
+    collapseDetails: 'Sevk ayrıntılarını daralt',
+    dismissToast: 'Sevk bildirimini kapat',
+    cancelDispatchJob: 'Sevk işini iptal et',
+    cancel: 'İptal',
+    cancelling: 'İptal ediliyor…',
+    awaitingPrinter: 'Yazıcı bekleniyor…',
+    status: {
+      dispatched: 'Sevk Edildi',
+      processing: 'İşleniyor',
+      completed: 'Tamamlandı',
+      failed: 'Başarısız',
+      cancelled: 'İptal edildi',
+    },
+    toast: {
+      cancellingUpload: 'Yükleme iptal ediliyor...',
+      cancelled: 'Sevk iptal edildi',
+      cancelFailed: 'Sevk iptal edilemedi',
+      completeWithFailures: 'Arka plan sevki tamamlandı: {{completed}} başarılı, {{failed}} başarısız',
+      completeSuccess: 'Arka plan sevki tamamlandı: {{completed}} başarılı',
+      printStartedRemaining: '{{completed}} baskı başlatıldı, {{remaining}} tane daha gönderiliyor...',
+    },
+  },
+
+  // İ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',
+    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: {
+    title: 'Ayarlar',
+    general: 'Genel',
+    // Sekme adları
+    tabs: {
+      general: 'Genel',
+      smartPlugs: 'Akıllı Prizler',
+      notifications: 'Bildirimler',
+      queue: 'İş Akışı',
+      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.',
+    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',
+    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',
+    // 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',
+    createNewApiKey: 'Yeni API Anahtarı Oluştur',
+    keyName: 'Anahtar Adı',
+    keyNamePlaceholder: 'örn., Home Assistant, OctoPrint',
+    readStatus: 'Durumu Oku',
+    readStatusDescription: 'Yazıcı durumunu ve kuyruğu görüntüle',
+    manageQueue: 'Kuyruğu Yönet',
+    manageQueueDescription: 'Baskı kuyruğundan öğe ekle ve kaldı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 ve sil; MakerWorld'den model içe aktar",
+    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.',
+    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',
+    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',
+    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.',
+    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.',
+    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.',
+    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',
+    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: 'Dosyaları açmak için hangi dilimleyici uygulamasının kullanılacağını 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',
+    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.',
+    slicerBundles: {
+      title: 'Dilimleyici Paketleri',
+      description: 'BambuStudio\'dan dışa aktarılmış (Dosya → Dışa Aktar → Ön Ayar Paketini Dışa Aktar → "Yazıcı ön ayar paketi") bir Yazıcı Ön Ayar Paketi (.bbscfg) içe aktarın. İçe aktarıldıktan sonra dilimleme istekleri, JSON profil üçlüsünü yeniden yüklemeden paketten ön ayarları ada göre seçebilir.',
+      uploadButton: 'Paket yükle',
+      uploading: 'Yükleniyor…',
+      loading: 'Paketler yükleniyor…',
+      empty: 'Henüz içe aktarılmış paket yok.',
+      summary: '{{processCount}} işlem · {{filamentCount}} filament ön ayarı',
+      delete: 'Sil',
+      uploadSuccess: '{{name}} içe aktarıldı',
+      uploadError: 'Paket yüklemesi başarısız: {{message}}',
+      deleteSuccess: 'Paket kaldırıldı',
+      deleteError: 'Paket silme başarısız: {{message}}',
+      confirmDeleteTitle: 'Bu paket kaldırılsın mı?',
+      confirmDeleteMessage: 'Paket yeniden içe aktarılana kadar "{{name}}" referans alan dilimleme istekleri başarısız olacak.',
+    },
+    externalCameras: 'Harici Kameralar',
+    costTracking: 'Maliyet Takibi',
+    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}}',
+    },
+    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: 'Yeniden sıralamak için kenar çubuğundaki öğeleri sürükleyin. Varsayılan sıraya buradan sıfırlayı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.',
+    // 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',
+    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:',
+    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.",
+    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ı.',
+    },
+
+    // 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)',
+      },
+    },
+
+    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.',
+    },
+
+  },
+
+  // 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',
+    clearInstructions: 'Buradan kapatmak için yazıcıdaki hataları temizleyin.',
+    clearErrors: 'Hataları Temizle',
+    clearSuccess: 'HMS hataları temizlendi',
+    clearFailed: 'HMS hataları temizlenemedi',
+  },
+
+  // 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?',
+    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',
+    },
+  },
+
+  // 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ışı',
+    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: {
+      cloud: 'Bulut Profilleri',
+      local: 'Yerel Profiller',
+      kprofiles: 'K-Profilleri',
+    },
+    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ı',
+    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',
+      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: {
+    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',
+    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',
+    addToQueue: 'Kuyruğa Ekle',
+    schedulePrint: 'Zamanla',
+    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',
+    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',
+    dragToResizeTooltip: 'Yeniden boyutlandırmak için sürükleyin, sıfırlamak için çift tıklayın',
+    searchFiles: 'Dosyalarda ara...',
+    allTypes: 'Tüm türler',
+    prints: 'Baskılar',
+    ascending: 'Artan',
+    descending: 'Azalan',
+    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',
+    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',
+      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: {
+    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',
+    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',
+      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}})',
+    },
+    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.',
+      noFiles: 'Bu klasörde dosya yok.',
+      print: 'Şimdi Yazdır',
+      addToQueue: 'Kuyruğa Ekle',
+    },
+    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',
+  },
+
+  // 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',
+  },
+
+  // Dilimle (SliceModal ile slicer-API entegrasyonu)
+  slice: {
+    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',
+    bundle: 'Dilimleyici paketi',
+    bundleNone: '— Hiçbiri (ön ayarları ayrı ayrı seçin) —',
+    bundleAllRequired: 'Paket işlemi ve her filament yuvası seçilmelidir',
+    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',
+    failedTitle: 'Dilimleme başarısız',
+    failedToast: '{{name}} dilimleme başarısız: {{detail}}',
+    tier: {
+      local: 'İçe aktarılmış',
+      cloud: 'Bulut',
+      standard: 'Standart',
+    },
+    cloud: {
+      notAuthenticated: 'Bulut ön ayarlarınızı görmek için Bambu Cloud\'a giriş yapın (Ayarlar → Profiller → Bulut).',
+      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.',
+    },
+    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ı',
+    },
+  },
+
+  // 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.',
+  },
+
+  // Envanter
+  inventory: {
+    title: 'Makara Envanteri',
+    subtitle: 'Makaralarınızı yönetin',
+    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:',
+      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.',
+        },
+      },
+    },
+    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}}',
+    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ı',
+    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',
+    resetUsage: 'Kullanımı 0\'a sıfırla',
+    resetUsageTooltip: 'Bu makara için tüketilen gram sayacını sıfırla',
+    resetUsageConfirm: '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.',
+    resetAllUsage: 'Tüm makara kullanımını sıfırla',
+    resetAllUsageTooltip: 'Her makarada tüketilen gram sayacını sıfırla',
+    resetAllUsageConfirm: '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.',
+    usageReset: 'Makara kullanımı 0\'a sıfırlandı',
+    allUsageReset: '{{count}} makara sıfırlandı',
+    resetUsageFailed: 'Makara kullanımı 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ş',
+    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: {
+    title: 'Baskıyı Başlat',
+    selectPrinter: 'Yazıcı Seç',
+    selectPlate: 'Plaka Seç',
+    filamentMapping: 'Filament Eşlemesi',
+    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',
+    startPrint: 'Baskıyı Başlat',
+    addToQueue: 'Kuyruğa Ekle',
+    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',
+    openCalendar: 'Takvimi aç',
+    leftNozzle: 'S',
+    rightNozzle: 'R',
+    leftNozzleTooltip: 'Sol nozul',
+    rightNozzleTooltip: 'Sağ nozul',
+    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',
+    insufficientFilamentMessage: 'Bazı atanmış makaralarda bu baskının ihtiyaç duyduğundan daha az filament kaldı:',
+    insufficientFilamentLine: '{{printer}} - {{slot}}: {{required}}g gerekli, {{remaining}}g kaldı',
+    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',
+  },
+
+  // 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',
+    tokenHint: 'Contents okuma/yazma izni olan ayrıntılı belirteç',
+    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\'dan filament, yazıcı ve işlem ön ayarları',
+    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}}',
+
+    history: 'Geçmiş',
+    clear: 'Temizle',
+    date: 'Tarih',
+    status: 'Durum',
+    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',
+    utc: 'UTC',
+    defaultPathLabel: 'Varsayılan:',
+
+    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ç...',
+      noFilamentsHelp: 'Filament bulunamadı. Önce Bambu Studio\'da bir K-profili oluşturun.',
+      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',
+      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)',
+    },
+    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.',
+    },
+    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 — "yazıcıya gönder" iletişim kutusunda işi yeniden adlandırdıysanız kullanışlıdır.',
+      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ı',
+      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ç',
+    tabs: {
+      model: '3B Model',
+      gcode: 'G-kod Önizleme',
+    },
+    notAvailable: 'mevcut değil',
+    notSliced: 'dilimlenmemiş',
+    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
+  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',
+    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',
+    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',
+    },
+    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',
+    },
+    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ığı',
+    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ı',
+    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ı',
+    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ı',
+    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',
+    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)',
+    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',
+    phoneNumber: 'Telefon Numarası',
+    apiKey: 'API Anahtarı',
+    serverUrl: 'Sunucu URL',
+    topic: 'Konu',
+    authToken: 'Yetkilendirme Belirteci',
+    userKey: 'Kullanıcı Anahtarı',
+    appToken: 'Uygulama Belirteci',
+    priority: 'Öncelik',
+    botToken: 'Bot Belirteci',
+    chatId: 'Sohbet ID',
+    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: {
+    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',
+    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.',
+    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...',
+    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.',
+      },
+      port_rtsps: {
+        title: 'Kamera portu (RTSPS 322)',
+        pass: 'Erişilebilir — kamera akışı çalışacak.',
+        warn: 'Port 322 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ı erişilebilir ancak bağlantıyı reddetti. Büyük olasılıkla erişim kodu veya seri numarası yanlış. Erişim kodu, Geliştirici Modu her açılıp kapatıldığında değişir — yazıcı ekranından yeniden kopyalayın.',
+        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.',
+      },
+    },
+  },
+
+  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 aktarım sunucusuyla TLS el sıkışması başarısız oldu. Bu genellikle bir güvenlik duvarı veya eski yazıcı firmware\'idir.',
+        fix: 'Yazıcı firmware\'ini güncelleyin ve port 990\'daki bağlantıyı hiçbir güvenlik duvarı veya proxy\'nin engellemediğini kontrol edin.',
+      },
+      '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.',
+      },
+      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).',
+    test: 'Test',
+    testSuccess: 'ML API erişilebilir ve sağlıklı.',
+    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.',
+    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: {
+    back: 'Geri',
+    backToArchives: 'Baskı Arşivlerine Dön',
+    backToFiles: 'Dosya Yöneticisine Dö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: {
+    title: 'Kamera API Belirteçleri',
+    navTitle: 'Kamera API belirteçleri',
+    description:
+      'Kamera akışını Home Assistant, Frigate, kiosklar veya kararlı bir URL\'ye ihtiyaç duyan başka herhangi bir araca gömmek için uzun ömürlü belirteçler. Her belirteç yalnızca kamera akışı içindir ve herhangi bir zamanda 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: {
+      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: {
+      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: {
+      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.',
+  },
+};