diff --git a/Sources/MacOptimizer/Resources/en.lproj/cleanup.strings b/Sources/MacOptimizer/Resources/en.lproj/cleanup.strings
index e6e2ae0..11f7e1b 100644
--- a/Sources/MacOptimizer/Resources/en.lproj/cleanup.strings
+++ b/Sources/MacOptimizer/Resources/en.lproj/cleanup.strings
@@ -40,3 +40,43 @@
"System" = "System";
"Startup Services Not Scanned" = "Startup Services Not Scanned";
"Start a scan to see the services and startup apps running in the background." = "Start a scan to see the services and startup apps running in the background.";
+"Junk File & Disk Cleaner" = "Junk File & Disk Cleaner";
+"Total Found: %@ • Selected: %@" = "Total Found: %@ • Selected: %@";
+"Scan system caches, Xcode leftovers, logs, and browser data." = "Scan system caches, Xcode leftovers, logs, and browser data.";
+"Cancel Scan" = "Cancel Scan";
+"Scan" = "Scan";
+"Cleaning..." = "Cleaning...";
+"Clean (%@)" = "Clean (%@)";
+"Junk Files Not Scanned Yet" = "Junk Files Not Scanned Yet";
+"Scan system caches, build leftovers, and logs to reclaim disk space." = "Scan system caches, build leftovers, and logs to reclaim disk space.";
+"Start Scan" = "Start Scan";
+"(%lld items)" = "(%lld items)";
+"Selected: %@" = "Selected: %@";
+"Show in Finder" = "Show in Finder";
+"Cleaning Plan & Risk Preview (Dry-Run)" = "Cleaning Plan & Risk Preview (Dry-Run)";
+"A safety plan created before any changes are made on disk." = "A safety plan created before any changes are made on disk.";
+"Space to be Reclaimed:" = "Space to be Reclaimed:";
+"Items to Clean:" = "Items to Clean:";
+"%lld Items" = "%lld Items";
+"Maximum Risk:" = "Maximum Risk:";
+"Zero-Harm Protection Shield Active" = "Zero-Harm Protection Shield Active";
+"Root system files, your personal documents, and critical macOS services are strictly protected. Files outside the cache are moved to the Trash safely." = "Root system files, your personal documents, and critical macOS services are strictly protected. Files outside the cache are moved to the Trash safely.";
+"Plan Warnings" = "Plan Warnings";
+"• %@" = "• %@";
+"Files and Folders to Clean:" = "Files and Folders to Clean:";
+"Approve Plan and Clean (%@)" = "Approve Plan and Clean (%@)";
+"Delete Duplicate Files" = "Delete Duplicate Files";
+"%lld selected duplicate files will be moved to the Trash. Original files will be kept. Do you confirm?" = "%lld selected duplicate files will be moved to the Trash. Original files will be kept. Do you confirm?";
+"Move to Trash" = "Move to Trash";
+"Duplicate File Finder" = "Duplicate File Finder";
+"Find copy files with the same content (SHA-256) and free up gigabytes on your disk." = "Find copy files with the same content (SHA-256) and free up gigabytes on your disk.";
+"Scan for Duplicates" = "Scan for Duplicates";
+"Folders to Scan:" = "Folders to Scan:";
+"Cancel the Scan" = "Cancel the Scan";
+"Total Space to be Reclaimed:" = "Total Space to be Reclaimed:";
+"Move Selected Copies to Trash (%lld Files)" = "Move Selected Copies to Trash (%lld Files)";
+"%lld Duplicate Files" = "%lld Duplicate Files";
+"Original (Kept)" = "Original (Kept)";
+"Copy" = "Copy";
+"Duplicate File Scan Not Run" = "Duplicate File Scan Not Run";
+"Start a scan to detect files with identical content in your Downloads, Documents, and Pictures folders." = "Start a scan to detect files with identical content in your Downloads, Documents, and Pictures folders.";
diff --git a/Sources/MacOptimizer/Resources/en.lproj/cleanup.stringsdict b/Sources/MacOptimizer/Resources/en.lproj/cleanup.stringsdict
index 3713a48..8f5e9b7 100644
--- a/Sources/MacOptimizer/Resources/en.lproj/cleanup.stringsdict
+++ b/Sources/MacOptimizer/Resources/en.lproj/cleanup.stringsdict
@@ -6,4 +6,29 @@
itemsNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
one%lld itemother%lld items
+(%lld items)
+NSStringLocalizedFormatKey(%#@count@)
+countNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
+one(%lld item)other(%lld items)
+
+%lld Items
+NSStringLocalizedFormatKey%#@count@
+countNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
+one%lld Itemother%lld Items
+
+%lld selected duplicate files will be moved to the Trash. Original files will be kept. Do you confirm?
+NSStringLocalizedFormatKey%#@count@ selected duplicate files will be moved to the Trash. Original files will be kept. Do you confirm?
+countNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
+one%lld selected duplicate file will be moved to the Trash. Original files will be kept. Do you confirm?other%lld selected duplicate files will be moved to the Trash. Original files will be kept. Do you confirm?
+
+Move Selected Copies to Trash (%lld Files)
+NSStringLocalizedFormatKeyMove Selected Copies to Trash (%#@count@)
+countNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
+oneMove Selected Copies to Trash (%lld File)otherMove Selected Copies to Trash (%lld Files)
+
+%lld Duplicate Files
+NSStringLocalizedFormatKey%#@count@
+countNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
+one%lld Duplicate Fileother%lld Duplicate Files
+
diff --git a/Sources/MacOptimizer/Resources/tr.lproj/cleanup.strings b/Sources/MacOptimizer/Resources/tr.lproj/cleanup.strings
index 78dfc4f..ad76bad 100644
--- a/Sources/MacOptimizer/Resources/tr.lproj/cleanup.strings
+++ b/Sources/MacOptimizer/Resources/tr.lproj/cleanup.strings
@@ -40,3 +40,43 @@
"System" = "Sistem";
"Startup Services Not Scanned" = "Başlangıç Servisleri Taranmadı";
"Start a scan to see the services and startup apps running in the background." = "Arka planda çalışan servisleri ve başlangıç uygulamalarını görmek için taramayı başlatın.";
+"Junk File & Disk Cleaner" = "Gereksiz Dosya & Disk Temizleyici";
+"Total Found: %@ • Selected: %@" = "Toplam Bulunan: %@ • Seçili: %@";
+"Scan system caches, Xcode leftovers, logs, and browser data." = "Sistem önbellekleri, Xcode kalıntıları, loglar ve tarayıcı verilerini tarayın.";
+"Cancel Scan" = "İptal";
+"Scan" = "Tara";
+"Cleaning..." = "Temizleniyor...";
+"Clean (%@)" = "Temizle (%@)";
+"Junk Files Not Scanned Yet" = "Gereksiz Dosyalar Henüz Taranmadı";
+"Scan system caches, build leftovers, and logs to reclaim disk space." = "Disk alanınızı geri kazanmak için sistem önbelleklerini, derleme kalıntılarını ve günlükleri tarayın.";
+"Start Scan" = "Taramayı Başlat";
+"(%lld items)" = "(%lld öğe)";
+"Selected: %@" = "Seçili: %@";
+"Show in Finder" = "Finder'da Göster";
+"Cleaning Plan & Risk Preview (Dry-Run)" = "Temizlik Planı & Risk Önizlemesi (Dry-Run)";
+"A safety plan created before any changes are made on disk." = "Disk üzerinde değişiklik yapılmadan önce oluşturulan güvenlik planı.";
+"Space to be Reclaimed:" = "Kazanılacak Alan:";
+"Items to Clean:" = "Temizlenecek Öğe:";
+"%lld Items" = "%lld Adet";
+"Maximum Risk:" = "Maksimum Risk:";
+"Zero-Harm Protection Shield Active" = "Zero-Harm Savunma Kalkanı Aktif";
+"Root system files, your personal documents, and critical macOS services are strictly protected. Files outside the cache are moved to the Trash safely." = "Kök sistem dosyaları, kişisel belgeleriniz ve kritik macOS servisleri kesinlikle korunmaktadır. Önbellek dışı dosyalar Çöp Sepeti korumalı olarak taşınır.";
+"Plan Warnings" = "Plan Uyarıları";
+"• %@" = "• %@";
+"Files and Folders to Clean:" = "Temizlenecek Dosya ve Klasörler:";
+"Approve Plan and Clean (%@)" = "Planı Onayla ve Temizle (%@)";
+"Delete Duplicate Files" = "Yinelenen Dosyaları Sil";
+"%lld selected duplicate files will be moved to the Trash. Original files will be kept. Do you confirm?" = "Seçili %lld adet kopya dosya Çöp Sepetine taşınacaktır. Orijinal dosyalar korunacaktır. Onaylıyor musunuz?";
+"Move to Trash" = "Çöp Kutusuna Taşı";
+"Duplicate File Finder" = "Yinelenen Dosya Bulucu";
+"Find copy files with the same content (SHA-256) and free up gigabytes on your disk." = "Aynı içeriğe (SHA-256) sahip kopya dosyaları bularak diskinizde gigabaytlarca yer açın.";
+"Scan for Duplicates" = "Yinelenenleri Tara";
+"Folders to Scan:" = "Taranacak Dizinler:";
+"Cancel the Scan" = "Taramayı İptal Et";
+"Total Space to be Reclaimed:" = "Kazanılacak Toplam Alan:";
+"Move Selected Copies to Trash (%lld Files)" = "Seçilen Kopyaları Çöpe Taşı (%lld Dosya)";
+"%lld Duplicate Files" = "%lld Kopya Dosya";
+"Original (Kept)" = "Orijinal (Korunuyor)";
+"Copy" = "Kopya";
+"Duplicate File Scan Not Run" = "Yinelenen Dosya Taraması Yapılmadı";
+"Start a scan to detect files with identical content in your Downloads, Documents, and Pictures folders." = "İndirilenler, Belgeler ve Resimler klasörlerindeki aynı içerikli dosyaları tespit etmek için taramayı başlatın.";
diff --git a/Sources/MacOptimizer/Resources/tr.lproj/cleanup.stringsdict b/Sources/MacOptimizer/Resources/tr.lproj/cleanup.stringsdict
index a894cd5..2b67dcb 100644
--- a/Sources/MacOptimizer/Resources/tr.lproj/cleanup.stringsdict
+++ b/Sources/MacOptimizer/Resources/tr.lproj/cleanup.stringsdict
@@ -6,4 +6,29 @@
itemsNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
one%lld öğeother%lld öğe
+(%lld items)
+NSStringLocalizedFormatKey(%#@count@)
+countNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
+one(%lld öğe)other(%lld öğe)
+
+%lld Items
+NSStringLocalizedFormatKey%#@count@
+countNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
+one%lld Adetother%lld Adet
+
+%lld selected duplicate files will be moved to the Trash. Original files will be kept. Do you confirm?
+NSStringLocalizedFormatKeySeçili %#@count@ adet kopya dosya Çöp Sepetine taşınacaktır. Orijinal dosyalar korunacaktır. Onaylıyor musunuz?
+countNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
+oneSeçili %lld adet kopya dosya Çöp Sepetine taşınacaktır. Orijinal dosyalar korunacaktır. Onaylıyor musunuz?otherSeçili %lld adet kopya dosya Çöp Sepetine taşınacaktır. Orijinal dosyalar korunacaktır. Onaylıyor musunuz?
+
+Move Selected Copies to Trash (%lld Files)
+NSStringLocalizedFormatKeySeçilen Kopyaları Çöpe Taşı (%#@count@ Dosya)
+countNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
+oneSeçilen Kopyaları Çöpe Taşı (%lld Dosya)otherSeçilen Kopyaları Çöpe Taşı (%lld Dosya)
+
+%lld Duplicate Files
+NSStringLocalizedFormatKey%#@count@
+countNSStringFormatSpecTypeKeyNSStringPluralRuleTypeNSStringFormatValueTypeKeylld
+one%lld Kopya Dosyaother%lld Kopya Dosya
+
diff --git a/Sources/MacOptimizer/Views/DuplicateFinder/DuplicateFinderView.swift b/Sources/MacOptimizer/Views/DuplicateFinder/DuplicateFinderView.swift
index 57f4891..f6f6359 100644
--- a/Sources/MacOptimizer/Views/DuplicateFinder/DuplicateFinderView.swift
+++ b/Sources/MacOptimizer/Views/DuplicateFinder/DuplicateFinderView.swift
@@ -33,12 +33,12 @@ public struct DuplicateFinderView: View {
.background(Color(NSColor.windowBackgroundColor).opacity(0.5))
.alert(isPresented: $showConfirmDelete) {
Alert(
- title: Text("Yinelenen Dosyaları Sil"),
- message: Text("Seçili \(selectedDuplicatesCount) adet kopya dosya Çöp Sepetine taşınacaktır. Orijinal dosyalar korunacaktır. Onaylıyor musunuz?"),
- primaryButton: .destructive(Text("Çöp Kutusuna Taşı")) {
+ title: Text(l10n: "Delete Duplicate Files", table: .cleanup),
+ message: Text(L10n.string("%lld selected duplicate files will be moved to the Trash. Original files will be kept. Do you confirm?", table: .cleanup, Int64(selectedDuplicatesCount))),
+ primaryButton: .destructive(Text(l10n: "Move to Trash", table: .cleanup)) {
appState.cleanDuplicates()
},
- secondaryButton: .cancel(Text("Vazgeç"))
+ secondaryButton: .cancel(Text(L10n.string("Cancel", table: .cleanup)))
)
}
}
@@ -59,11 +59,11 @@ public struct DuplicateFinderView: View {
}
VStack(alignment: .leading, spacing: 3) {
- Text("Yinelenen Dosya Bulucu")
+ Text(l10n: "Duplicate File Finder", table: .cleanup)
.font(.system(size: 16, weight: .bold))
.lineLimit(1)
- Text("Aynı içeriğe (SHA-256) sahip kopya dosyaları bularak diskinizde gigabaytlarca yer açın.")
+ Text(l10n: "Find copy files with the same content (SHA-256) and free up gigabytes on your disk.", table: .cleanup)
.font(.system(size: 12))
.foregroundColor(.secondary)
.lineLimit(2)
@@ -72,7 +72,7 @@ public struct DuplicateFinderView: View {
Spacer(minLength: 12)
ActionButton(
- title: appState.isScanningDuplicates ? "Taranıyor..." : "Yinelenenleri Tara",
+ title: appState.isScanningDuplicates ? L10n.string("Scanning...", table: .cleanup) : L10n.string("Scan for Duplicates", table: .cleanup),
iconName: "magnifyingglass",
gradient: SystemTheme.junkGradient,
isLoading: appState.isScanningDuplicates
@@ -83,7 +83,7 @@ public struct DuplicateFinderView: View {
// Target Folders Filter Chips
HStack(spacing: 8) {
- Text("Taranacak Dizinler:")
+ Text(l10n: "Folders to Scan:", table: .cleanup)
.font(.system(size: 11, weight: .semibold))
.foregroundColor(.secondary)
@@ -132,7 +132,7 @@ public struct DuplicateFinderView: View {
.lineLimit(1)
.truncationMode(.middle)
- Button("Taramayı İptal Et") {
+ Button(L10n.string("Cancel the Scan", table: .cleanup)) {
appState.cancelDuplicateScan()
}
.buttonStyle(.plain)
@@ -162,7 +162,7 @@ public struct DuplicateFinderView: View {
GlassCard(cornerRadius: 14, padding: 14) {
HStack {
VStack(alignment: .leading, spacing: 2) {
- Text("Kazanılacak Toplam Alan:")
+ Text(l10n: "Total Space to be Reclaimed:", table: .cleanup)
.font(.system(size: 11))
.foregroundColor(.secondary)
@@ -174,7 +174,7 @@ public struct DuplicateFinderView: View {
Spacer()
ActionButton(
- title: appState.isCleaningDuplicates ? "Temizleniyor..." : "Seçilen Kopyaları Çöpe Taşı (\(selectedDuplicatesCount) Dosya)",
+ title: appState.isCleaningDuplicates ? L10n.string("Cleaning...", table: .cleanup) : L10n.string("Move Selected Copies to Trash (%lld Files)", table: .cleanup, Int64(selectedDuplicatesCount)),
iconName: "trash.fill",
gradient: SystemTheme.dangerGradient,
isLoading: appState.isCleaningDuplicates
@@ -204,14 +204,14 @@ public struct DuplicateFinderView: View {
Spacer()
- Text("\(group.wrappedValue.duplicates.count) Kopya Dosya")
+ Text(L10n.string("%lld Duplicate Files", table: .cleanup, Int64(group.wrappedValue.duplicates.count)))
.font(.system(size: 11, weight: .medium))
.foregroundColor(.secondary)
}
// Original File (Preserved)
HStack(spacing: 8) {
- MetricBadge(text: "Orijinal (Korunuyor)", colorName: "green")
+ MetricBadge(text: L10n.string("Original (Kept)", table: .cleanup), colorName: "green")
Text(group.wrappedValue.original.path)
.font(.system(size: 10))
@@ -228,7 +228,7 @@ public struct DuplicateFinderView: View {
.foregroundColor(.secondary)
}
.buttonStyle(.plain)
- .help("Finder'da Göster")
+ .help(L10n.string("Show in Finder", table: .cleanup))
}
.padding(6)
.background(Color.green.opacity(0.06))
@@ -245,7 +245,7 @@ public struct DuplicateFinderView: View {
}
.buttonStyle(.plain)
- MetricBadge(text: "Kopya", colorName: "purple")
+ MetricBadge(text: L10n.string("Copy", table: .cleanup), colorName: "purple")
Text(dup.path)
.font(.system(size: 10))
@@ -281,17 +281,17 @@ public struct DuplicateFinderView: View {
.font(.system(size: 44))
.foregroundStyle(SystemTheme.junkGradient)
- Text(appState.duplicateStatusMessage.isEmpty ? "Yinelenen Dosya Taraması Yapılmadı" : appState.duplicateStatusMessage)
+ Text(appState.duplicateStatusMessage.isEmpty ? L10n.string("Duplicate File Scan Not Run", table: .cleanup) : appState.duplicateStatusMessage)
.font(.system(size: 16, weight: .bold))
- Text("İndirilenler, Belgeler ve Resimler klasörlerindeki aynı içerikli dosyaları tespit etmek için taramayı başlatın.")
+ Text(l10n: "Start a scan to detect files with identical content in your Downloads, Documents, and Pictures folders.", table: .cleanup)
.font(.system(size: 12))
.foregroundColor(.secondary)
.multilineTextAlignment(.center)
.frame(maxWidth: 420)
ActionButton(
- title: "Taramayı Başlat",
+ title: L10n.string("Start Scan", table: .cleanup),
iconName: "magnifyingglass",
gradient: SystemTheme.junkGradient
) {
diff --git a/Sources/MacOptimizer/Views/JunkCleaner/CleaningPlanPreviewModalView.swift b/Sources/MacOptimizer/Views/JunkCleaner/CleaningPlanPreviewModalView.swift
index 43fc987..59b3e13 100644
--- a/Sources/MacOptimizer/Views/JunkCleaner/CleaningPlanPreviewModalView.swift
+++ b/Sources/MacOptimizer/Views/JunkCleaner/CleaningPlanPreviewModalView.swift
@@ -51,9 +51,9 @@ public struct CleaningPlanPreviewModalView: View {
.foregroundColor(.blue)
VStack(alignment: .leading, spacing: 2) {
- Text("Temizlik Planı & Risk Önizlemesi (Dry-Run)")
+ Text(l10n: "Cleaning Plan & Risk Preview (Dry-Run)", table: .cleanup)
.font(.system(size: 15, weight: .bold))
- Text("Disk üzerinde değişiklik yapılmadan önce oluşturulan güvenlik planı.")
+ Text(l10n: "A safety plan created before any changes are made on disk.", table: .cleanup)
.font(.system(size: 11))
.foregroundColor(.secondary)
}
@@ -79,7 +79,7 @@ public struct CleaningPlanPreviewModalView: View {
GlassCard(cornerRadius: 12, padding: 14) {
HStack(spacing: 16) {
VStack(alignment: .leading, spacing: 4) {
- Text("Kazanılacak Alan:")
+ Text(l10n: "Space to be Reclaimed:", table: .cleanup)
.font(.system(size: 11))
.foregroundColor(.secondary)
Text(ByteFormatter.format(plan.selectedEstimatedBytes))
@@ -91,10 +91,10 @@ public struct CleaningPlanPreviewModalView: View {
.frame(height: 32)
VStack(alignment: .leading, spacing: 4) {
- Text("Temizlenecek Öğe:")
+ Text(l10n: "Items to Clean:", table: .cleanup)
.font(.system(size: 11))
.foregroundColor(.secondary)
- Text("\(plan.selectedCount) Adet")
+ Text(L10n.string("%lld Items", table: .cleanup, Int64(plan.selectedCount)))
.font(.system(size: 18, weight: .bold, design: .rounded))
.foregroundColor(.primary)
}
@@ -103,7 +103,7 @@ public struct CleaningPlanPreviewModalView: View {
.frame(height: 32)
VStack(alignment: .leading, spacing: 4) {
- Text("Maksimum Risk:")
+ Text(l10n: "Maximum Risk:", table: .cleanup)
.font(.system(size: 11))
.foregroundColor(.secondary)
@@ -130,10 +130,10 @@ public struct CleaningPlanPreviewModalView: View {
.foregroundColor(.green)
VStack(alignment: .leading, spacing: 2) {
- Text("Zero-Harm Savunma Kalkanı Aktif")
+ Text(l10n: "Zero-Harm Protection Shield Active", table: .cleanup)
.font(.system(size: 12, weight: .bold))
.foregroundColor(.primary)
- Text("Kök sistem dosyaları, kişisel belgeleriniz ve kritik macOS servisleri kesinlikle korunmaktadır. Önbellek dışı dosyalar Çöp Sepeti korumalı olarak taşınır.")
+ Text(l10n: "Root system files, your personal documents, and critical macOS services are strictly protected. Files outside the cache are moved to the Trash safely.", table: .cleanup)
.font(.system(size: 11))
.foregroundColor(.secondary)
}
@@ -146,12 +146,12 @@ public struct CleaningPlanPreviewModalView: View {
// MARK: - Warnings Box
private var warningsBox: some View {
VStack(alignment: .leading, spacing: 6) {
- Label("Plan Uyarıları", systemImage: "exclamationmark.triangle.fill")
+ Label(L10n.string("Plan Warnings", table: .cleanup), systemImage: "exclamationmark.triangle.fill")
.font(.system(size: 12, weight: .bold))
.foregroundColor(.orange)
ForEach(plan.warnings, id: \.self) { warning in
- Text("• \(warning)")
+ Text(L10n.string("• %@", table: .cleanup, warning))
.font(.system(size: 11))
.foregroundColor(.secondary)
}
@@ -165,7 +165,7 @@ public struct CleaningPlanPreviewModalView: View {
// MARK: - Planned Items Section
private var plannedItemsSection: some View {
VStack(alignment: .leading, spacing: 10) {
- Text("Temizlenecek Dosya ve Klasörler:")
+ Text(l10n: "Files and Folders to Clean:", table: .cleanup)
.font(.system(size: 13, weight: .bold))
VStack(spacing: 6) {
@@ -211,7 +211,7 @@ public struct CleaningPlanPreviewModalView: View {
// MARK: - Footer
private var footerBar: some View {
HStack {
- Button("Vazgeç") {
+ Button(L10n.string("Cancel", table: .cleanup)) {
onDismiss()
}
.keyboardShortcut(.cancelAction)
@@ -219,7 +219,7 @@ public struct CleaningPlanPreviewModalView: View {
Spacer()
ActionButton(
- title: "Planı Onayla ve Temizle (\(ByteFormatter.format(plan.selectedEstimatedBytes)))",
+ title: L10n.string("Approve Plan and Clean (%@)", table: .cleanup, ByteFormatter.format(plan.selectedEstimatedBytes)),
iconName: "trash.fill",
gradient: SystemTheme.junkGradient,
isLoading: appState.isCleaningJunk
diff --git a/Sources/MacOptimizer/Views/JunkCleaner/JunkCategoryCard.swift b/Sources/MacOptimizer/Views/JunkCleaner/JunkCategoryCard.swift
index 8dc122d..b7cb54d 100644
--- a/Sources/MacOptimizer/Views/JunkCleaner/JunkCategoryCard.swift
+++ b/Sources/MacOptimizer/Views/JunkCleaner/JunkCategoryCard.swift
@@ -34,7 +34,7 @@ public struct JunkCategoryCard: View {
Text(group.type.title)
.font(.system(size: 14, weight: .bold))
- Text("(\(group.items.count) öğe)")
+ Text(L10n.string("(%lld items)", table: .cleanup, Int64(group.items.count)))
.font(.system(size: 11))
.foregroundColor(.secondary)
}
@@ -54,7 +54,7 @@ public struct JunkCategoryCard: View {
.foregroundColor(.primary)
if group.selectedCount > 0 && group.selectedCount < group.items.count {
- Text("Seçili: \(group.selectedFormatted)")
+ Text(L10n.string("Selected: %@", table: .cleanup, group.selectedFormatted))
.font(.system(size: 10))
.foregroundColor(.blue)
}
@@ -117,7 +117,7 @@ public struct JunkCategoryCard: View {
.foregroundColor(.secondary)
}
.buttonStyle(.plain)
- .help("Finder'da Göster")
+ .help(L10n.string("Show in Finder", table: .cleanup))
}
.padding(.horizontal, 6)
.padding(.vertical, 4)
diff --git a/Sources/MacOptimizer/Views/JunkCleaner/JunkCleanerView.swift b/Sources/MacOptimizer/Views/JunkCleaner/JunkCleanerView.swift
index d188503..520ca18 100644
--- a/Sources/MacOptimizer/Views/JunkCleaner/JunkCleanerView.swift
+++ b/Sources/MacOptimizer/Views/JunkCleaner/JunkCleanerView.swift
@@ -64,17 +64,17 @@ public struct JunkCleanerView: View {
}
VStack(alignment: .leading, spacing: 3) {
- Text("Gereksiz Dosya & Disk Temizleyici")
+ Text(l10n: "Junk File & Disk Cleaner", table: .cleanup)
.font(.system(size: 16, weight: .bold))
.lineLimit(1)
if totalJunkBytes > 0 {
- Text("Toplam Bulunan: \(ByteFormatter.format(totalJunkBytes)) • Seçili: \(ByteFormatter.format(selectedJunkBytes))")
+ Text(L10n.string("Total Found: %@ • Selected: %@", table: .cleanup, ByteFormatter.format(totalJunkBytes), ByteFormatter.format(selectedJunkBytes)))
.font(.system(size: 12, weight: .semibold))
.foregroundColor(.purple)
.lineLimit(1)
} else {
- Text("Sistem önbellekleri, Xcode kalıntıları, loglar ve tarayıcı verilerini tarayın.")
+ Text(l10n: "Scan system caches, Xcode leftovers, logs, and browser data.", table: .cleanup)
.font(.system(size: 12))
.foregroundColor(.secondary)
.lineLimit(1)
@@ -90,7 +90,7 @@ public struct JunkCleanerView: View {
AnimatedProgressBar(progress: appState.junkScanProgress, gradient: SystemTheme.junkGradient, height: 5)
if appState.isScanningJunk {
- Button("İptal") {
+ Button(L10n.string("Cancel Scan", table: .cleanup)) {
appState.cancelJunkScan()
}
.buttonStyle(.plain)
@@ -110,7 +110,7 @@ public struct JunkCleanerView: View {
} label: {
HStack(spacing: 6) {
Image(systemName: "magnifyingglass")
- Text("Tara")
+ Text(l10n: "Scan", table: .cleanup)
}
.font(.system(size: 12, weight: .semibold))
.padding(.horizontal, 14)
@@ -123,7 +123,7 @@ public struct JunkCleanerView: View {
if selectedJunkBytes > 0 {
ActionButton(
- title: appState.isCleaningJunk ? "Temizleniyor..." : "Temizle (\(ByteFormatter.format(selectedJunkBytes)))",
+ title: appState.isCleaningJunk ? L10n.string("Cleaning...", table: .cleanup) : L10n.string("Clean (%@)", table: .cleanup, ByteFormatter.format(selectedJunkBytes)),
iconName: "trash.fill",
gradient: SystemTheme.junkGradient,
isLoading: appState.isCleaningJunk
@@ -161,17 +161,17 @@ public struct JunkCleanerView: View {
.font(.system(size: 48))
.foregroundStyle(SystemTheme.junkGradient)
- Text("Gereksiz Dosyalar Henüz Taranmadı")
+ Text(l10n: "Junk Files Not Scanned Yet", table: .cleanup)
.font(.system(size: 16, weight: .bold))
- Text("Disk alanınızı geri kazanmak için sistem önbelleklerini, derleme kalıntılarını ve günlükleri tarayın.")
+ Text(l10n: "Scan system caches, build leftovers, and logs to reclaim disk space.", table: .cleanup)
.font(.system(size: 13))
.foregroundColor(.secondary)
.multilineTextAlignment(.center)
.frame(maxWidth: 400)
ActionButton(
- title: "Taramayı Başlat",
+ title: L10n.string("Start Scan", table: .cleanup),
iconName: "magnifyingglass",
gradient: SystemTheme.junkGradient
) {