@jjlmoya/utils-audiovisual 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/category/i18n/de.ts +198 -0
- package/src/category/i18n/id.ts +198 -0
- package/src/category/i18n/it.ts +198 -0
- package/src/category/i18n/ja.ts +198 -0
- package/src/category/i18n/ko.ts +198 -0
- package/src/category/i18n/nl.ts +198 -0
- package/src/category/i18n/pl.ts +198 -0
- package/src/category/i18n/pt.ts +198 -0
- package/src/category/i18n/ru.ts +198 -0
- package/src/category/i18n/sv.ts +198 -0
- package/src/category/i18n/tr.ts +198 -0
- package/src/category/i18n/zh.ts +198 -0
- package/src/category/index.ts +31 -3
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tool/chromaticLens/i18n/de.ts +246 -0
- package/src/tool/chromaticLens/i18n/id.ts +246 -0
- package/src/tool/chromaticLens/i18n/it.ts +246 -0
- package/src/tool/chromaticLens/i18n/ja.ts +246 -0
- package/src/tool/chromaticLens/i18n/ko.ts +246 -0
- package/src/tool/chromaticLens/i18n/nl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pt.ts +246 -0
- package/src/tool/chromaticLens/i18n/ru.ts +246 -0
- package/src/tool/chromaticLens/i18n/sv.ts +246 -0
- package/src/tool/chromaticLens/i18n/tr.ts +246 -0
- package/src/tool/chromaticLens/i18n/zh.ts +246 -0
- package/src/tool/chromaticLens/index.ts +15 -7
- package/src/tool/collageMaker/i18n/de.ts +233 -0
- package/src/tool/collageMaker/i18n/id.ts +233 -0
- package/src/tool/collageMaker/i18n/it.ts +233 -0
- package/src/tool/collageMaker/i18n/ja.ts +233 -0
- package/src/tool/collageMaker/i18n/ko.ts +233 -0
- package/src/tool/collageMaker/i18n/nl.ts +233 -0
- package/src/tool/collageMaker/i18n/pl.ts +233 -0
- package/src/tool/collageMaker/i18n/pt.ts +233 -0
- package/src/tool/collageMaker/i18n/ru.ts +233 -0
- package/src/tool/collageMaker/i18n/sv.ts +233 -0
- package/src/tool/collageMaker/i18n/tr.ts +233 -0
- package/src/tool/collageMaker/i18n/zh.ts +233 -0
- package/src/tool/collageMaker/index.ts +15 -6
- package/src/tool/exifCleaner/i18n/de.ts +277 -0
- package/src/tool/exifCleaner/i18n/fr.ts +1 -1
- package/src/tool/exifCleaner/i18n/id.ts +277 -0
- package/src/tool/exifCleaner/i18n/it.ts +277 -0
- package/src/tool/exifCleaner/i18n/ja.ts +277 -0
- package/src/tool/exifCleaner/i18n/ko.ts +277 -0
- package/src/tool/exifCleaner/i18n/nl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pt.ts +277 -0
- package/src/tool/exifCleaner/i18n/ru.ts +277 -0
- package/src/tool/exifCleaner/i18n/sv.ts +277 -0
- package/src/tool/exifCleaner/i18n/tr.ts +277 -0
- package/src/tool/exifCleaner/i18n/zh.ts +277 -0
- package/src/tool/exifCleaner/index.ts +16 -8
- package/src/tool/imageCompressor/i18n/de.ts +242 -0
- package/src/tool/imageCompressor/i18n/en.ts +1 -1
- package/src/tool/imageCompressor/i18n/es.ts +1 -1
- package/src/tool/imageCompressor/i18n/id.ts +242 -0
- package/src/tool/imageCompressor/i18n/it.ts +242 -0
- package/src/tool/imageCompressor/i18n/ja.ts +242 -0
- package/src/tool/imageCompressor/i18n/ko.ts +242 -0
- package/src/tool/imageCompressor/i18n/nl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pt.ts +242 -0
- package/src/tool/imageCompressor/i18n/ru.ts +242 -0
- package/src/tool/imageCompressor/i18n/sv.ts +242 -0
- package/src/tool/imageCompressor/i18n/tr.ts +242 -0
- package/src/tool/imageCompressor/i18n/zh.ts +244 -0
- package/src/tool/imageCompressor/index.ts +15 -7
- package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/fr.ts +1 -1
- package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
- package/src/tool/printQualityCalculator/index.ts +15 -7
- package/src/tool/privacyBlur/i18n/de.ts +238 -0
- package/src/tool/privacyBlur/i18n/id.ts +238 -0
- package/src/tool/privacyBlur/i18n/it.ts +238 -0
- package/src/tool/privacyBlur/i18n/ja.ts +238 -0
- package/src/tool/privacyBlur/i18n/ko.ts +238 -0
- package/src/tool/privacyBlur/i18n/nl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pt.ts +238 -0
- package/src/tool/privacyBlur/i18n/ru.ts +238 -0
- package/src/tool/privacyBlur/i18n/sv.ts +238 -0
- package/src/tool/privacyBlur/i18n/tr.ts +238 -0
- package/src/tool/privacyBlur/i18n/zh.ts +238 -0
- package/src/tool/privacyBlur/index.ts +15 -7
- package/src/tool/subtitleSync/i18n/de.ts +241 -0
- package/src/tool/subtitleSync/i18n/fr.ts +5 -5
- package/src/tool/subtitleSync/i18n/id.ts +241 -0
- package/src/tool/subtitleSync/i18n/it.ts +241 -0
- package/src/tool/subtitleSync/i18n/ja.ts +241 -0
- package/src/tool/subtitleSync/i18n/ko.ts +241 -0
- package/src/tool/subtitleSync/i18n/nl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pt.ts +241 -0
- package/src/tool/subtitleSync/i18n/ru.ts +241 -0
- package/src/tool/subtitleSync/i18n/sv.ts +241 -0
- package/src/tool/subtitleSync/i18n/tr.ts +241 -0
- package/src/tool/subtitleSync/i18n/zh.ts +241 -0
- package/src/tool/subtitleSync/index.ts +15 -7
- package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
- package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
- package/src/tool/timelapseCalculator/index.ts +16 -8
- package/src/tool/tvDistance/i18n/de.ts +223 -0
- package/src/tool/tvDistance/i18n/id.ts +223 -0
- package/src/tool/tvDistance/i18n/it.ts +223 -0
- package/src/tool/tvDistance/i18n/ja.ts +223 -0
- package/src/tool/tvDistance/i18n/ko.ts +223 -0
- package/src/tool/tvDistance/i18n/nl.ts +223 -0
- package/src/tool/tvDistance/i18n/pl.ts +223 -0
- package/src/tool/tvDistance/i18n/pt.ts +223 -0
- package/src/tool/tvDistance/i18n/ru.ts +223 -0
- package/src/tool/tvDistance/i18n/sv.ts +223 -0
- package/src/tool/tvDistance/i18n/tr.ts +223 -0
- package/src/tool/tvDistance/i18n/zh.ts +223 -0
- package/src/tool/tvDistance/index.ts +15 -7
- package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
- package/src/tool/videoFrameExtractor/index.ts +16 -8
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ExifCleanerUI, ExifCleanerLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'exif-metadata-temizleyici-gps-sil-foto-gizliligi';
|
|
5
|
+
const title = 'EXIF Meta Veri Temizleyici: Fotoğraflardan GPS ve Gizli Verileri Kaldırın';
|
|
6
|
+
const description = 'Paylaşmadan önce görsellerinizden EXIF meta verilerini, GPS koordinatlarını ve kamera özelliklerini silmek için ücretsiz çevrimiçi araç. %100 özel: fotoğrafları internete yüklemeden çalışır.';
|
|
7
|
+
|
|
8
|
+
const ui: ExifCleanerUI = {
|
|
9
|
+
dropTitle: "Görselinizi buraya sürükleyin",
|
|
10
|
+
dropSubtitle: "GPS meta verilerini, kamera modelini ve gizli ayarları kaldırın.",
|
|
11
|
+
dropLocalInfo: "%100 yerel işleme. Buluta hiçbir şey yüklenmez.",
|
|
12
|
+
selectButton: "Görsel Seç",
|
|
13
|
+
processingText: "Meta veriler temizleniyor...",
|
|
14
|
+
analysisCompleted: "Analiz Tamamlandı",
|
|
15
|
+
downloadButton: "Temiz Görseli İndir",
|
|
16
|
+
resetButton: "Başka bir görseli temizle",
|
|
17
|
+
privacyRiskTitle: "GİZLİLİK RİSKLERİ TESPİT EDİLDİ:",
|
|
18
|
+
gpsLabel: "GPS:",
|
|
19
|
+
gpsDetected: "TESPİT EDİLDİ",
|
|
20
|
+
gpsNotFound: "BULUNAMADI",
|
|
21
|
+
cameraLabel: "KAMERA:",
|
|
22
|
+
softwareLabel: "YAZILIM:",
|
|
23
|
+
dateLabel: "TARİH:",
|
|
24
|
+
otherTechnicalDetails: "DİĞER TEKNİK DETAYLAR",
|
|
25
|
+
noMetadataFound: "Okunabilir EXIF meta verisi bulunamadı.",
|
|
26
|
+
alreadyCleanInfo: "Görsel zaten temiz olabilir.",
|
|
27
|
+
previewLabel: "Önizleme",
|
|
28
|
+
faqTitle: "Fotoğraf gizliliği hakkında sıkça sorulan sorular",
|
|
29
|
+
bibliographyTitle: "Kaynaklar ve teknik EXIF dokümantasyonu",
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const faq: ExifCleanerLocaleContent['faq'] = [
|
|
33
|
+
{
|
|
34
|
+
question: "EXIF meta verileri nedir?",
|
|
35
|
+
answer: "EXIF (Exchangeable Image File Format), kameranızın veya telefonunuzun her fotoğrafın içine kaydettiği gizli bilgilerdir. Tam tarih, cihaz modeli, çekim ayarları (ISO, diyafram) ve en kritiği, fotoğrafın çekildiği yerin GPS koordinatlarını içerir.",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: "Bu çevrimiçi aracı kullanmak güvenli mi?",
|
|
39
|
+
answer: "Evet, çünkü işleme tarayıcınızda %100 yerel olarak gerçekleşir. Fotoğraflarınız asla herhangi bir sunucuya yüklenmez; temizleme işlemi doğrudan cihazınızın belleğinde yapılır ve mutlak gizlilik sağlanır.",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
question: "Temizleyici hangi spesifik verileri kaldırır?",
|
|
43
|
+
answer: "Tüm EXIF etiketlerini (GPS, kamera markası, seri numarası), IPTC (telif hakkı, yazar) ve XMP (düzenleme geçmişi) verilerini siler. Görseliniz, yalnızca görsel pikselleri koruyarak 'temiz' hale gelir.",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
question: "Meta verileri temizlerken görsel kalite kaybeder mi?",
|
|
47
|
+
answer: "Hayır. Yalnızca dosyanın teknik veri 'başlığını' kaldırıyoruz. Görsel verileri (pikseller) aynı kalır, bu nedenle görsel kalite hiçbir şekilde etkilenmez.",
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const howTo: ExifCleanerLocaleContent['howTo'] = [
|
|
52
|
+
{
|
|
53
|
+
name: "Görselleri seçin",
|
|
54
|
+
text: "Fotoğraflarınızı buraya sürükleyin veya dosya gezgininizden seçin. Aynı anda birkaç fotoğrafı işleyebilirsiniz.",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "Mevcut verileri analiz edin",
|
|
58
|
+
text: "Araç, tespit ettiği hassas bilgileri size gösterecektir (örneğin, 'GPS koordinatları tespit edildi').",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: "İşleyin ve temizleyin",
|
|
62
|
+
text: "Tüm meta veri etiketlerini anında kaldırmak için temizle düğmesine tıklayın.",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "Güvenli fotoğrafları indirin",
|
|
66
|
+
text: "Görsellerinizin artık anonimleştirilmiş ve sosyal medyada güvenle paylaşılmaya hazır olan yeni sürümlerini kaydedin.",
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
const bibliography: ExifCleanerLocaleContent['bibliography'] = [
|
|
71
|
+
{
|
|
72
|
+
name: "Exchangeable image file format (EXIF) - Wikipedia",
|
|
73
|
+
url: "https://tr.wikipedia.org/wiki/Exif",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "W3C - Görsellerdeki Meta Veriler",
|
|
77
|
+
url: "https://www.w3.org/community/image-metadata/",
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
|
|
81
|
+
const seo: ExifCleanerLocaleContent['seo'] = [
|
|
82
|
+
{
|
|
83
|
+
type: 'summary',
|
|
84
|
+
title: 'EXIF Meta Veri Temizleyici: Gizliliğinizi Koruyun',
|
|
85
|
+
items: [
|
|
86
|
+
'Fotoğraflarınızdan GPS koordinatlarını ve konumu anında kaldırın',
|
|
87
|
+
'Kamera modelini, seri numarasını ve teknik bilgileri silin',
|
|
88
|
+
'%100 tarayıcı tabanlı işleme - görselleriniz asla cihazınızdan ayrılmaz',
|
|
89
|
+
'Görsel kaliteyi korur - yalnızca gizli veriler kaldırılır'
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{ type: 'title', text: 'Dijital Fotoğrafçılıkta Gizlilik ve EXIF Meta Verileri Hakkında Tam Kılavuz', level: 2 },
|
|
93
|
+
{ type: 'paragraph', html: 'Sosyal medyaya fotoğraf yüklerken ne kadar kişisel bilgi paylaştığınızı hiç merak ettiniz mi? EXIF meta verileri, tam ev konumunuzdan fotoğraf ekipmanınızın fiyatına kadar her şeyi ortaya çıkarabilen <strong>görünmez bir parmak izi</strong> gibidir. Bu kılavuz, gizliliğinizi nasıl etkili bir şekilde koruyacağınızı açıklar.' },
|
|
94
|
+
|
|
95
|
+
{ type: 'stats', items: [
|
|
96
|
+
{ value: '%100', label: 'Gizlilik - Yerel İşleme', icon: 'mdi:shield-check' },
|
|
97
|
+
{ value: '%0', label: 'Sunucularda Depolanan Veri', icon: 'mdi:database' },
|
|
98
|
+
{ value: 'Anında', label: 'Meta Veri Kaldırma', icon: 'mdi:lightning-bolt' }
|
|
99
|
+
], columns: 3 },
|
|
100
|
+
|
|
101
|
+
{ type: 'title', text: 'Fotoğraflarınızda Hangi Bilgiler Gizli?', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'Dijital fotoğrafların %90\'ından fazlası güvenliğinizi tehlikeye atabilecek hassas bilgiler içerir. İşte ortaya çıkabilecek tüm veriler:' },
|
|
103
|
+
{ type: 'list', items: [
|
|
104
|
+
'<strong>GPS Koordinatları:</strong> Çekimin yapıldığı tam enlem ve boylam (ev adresi, iş yeri, sık ziyaret edilen yerler).',
|
|
105
|
+
'<strong>Ekipman Tanımlama:</strong> Kameranın veya akıllı telefonun markası, modeli ve seri numarası (değerli bilgiler).',
|
|
106
|
+
'<strong>Teknik Ayarlar:</strong> ISO, diyafram (f/), pozlama süresi ve odak uzaklığı (spesifik ekipmanınızı tanımlamaya olanak tanır).',
|
|
107
|
+
'<strong>Tam Tarih ve Saat:</strong> Günlük aktivitelerinizin eksiksiz bir zaman çizelgesi.',
|
|
108
|
+
'<strong>Düzenleme Geçmişi:</strong> Kullanılan yazılım, düzenleme programı ve son değişiklik tarihi.',
|
|
109
|
+
'<strong>Telif Hakkı Verileri:</strong> Fotoğrafçı, telif hakkı ve kişisel notlar.'
|
|
110
|
+
] },
|
|
111
|
+
|
|
112
|
+
{ type: 'title', text: 'Gerçek Güvenlik Riskleri: Kullanım Örnekleri', level: 3 },
|
|
113
|
+
{ type: 'comparative', items: [
|
|
114
|
+
{
|
|
115
|
+
title: 'Profesyonel Fotoğrafçılar',
|
|
116
|
+
description: 'Seri numarasıyla tanımlanan pahalı ekipmanların çalınma riski',
|
|
117
|
+
icon: 'mdi:camera',
|
|
118
|
+
points: [
|
|
119
|
+
'Hırsızlar değerli ekipmanları olan fotoğrafçıları ararlar',
|
|
120
|
+
'GPS, sahibinin ev adresini tanımlar',
|
|
121
|
+
'Seri numarası dark web\'de yeniden satışı kolaylaştırır'
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
title: 'Ebeveynler ve Influencer\'lar',
|
|
126
|
+
description: 'Aşırı tehlike: çocukların gerçek zamanlı konumu',
|
|
127
|
+
icon: 'mdi:alert',
|
|
128
|
+
points: [
|
|
129
|
+
'Yırtıcılar OSINT kullanarak konumları takip eder',
|
|
130
|
+
'Yırtıcılar günlük rutinleri tanımlayabilir',
|
|
131
|
+
'Takip edilme ve fiziksel takip riski'
|
|
132
|
+
],
|
|
133
|
+
highlight: true
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
title: 'Sosyal Medya Kullanıcıları',
|
|
137
|
+
description: 'Kişisel ve profesyonel gizliliğin ifşası',
|
|
138
|
+
icon: 'mdi:share-variant',
|
|
139
|
+
points: [
|
|
140
|
+
'Ofisten paylaşım yapmak iş yeri konumunu ortaya çıkarır',
|
|
141
|
+
'Coğrafi konum, yaklaşık maaşın tahmin edilmesine olanak tanır',
|
|
142
|
+
'Kamuya açık veriler hedefli profillemeye olanak tanır'
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
title: 'Gezginler ve Nomads',
|
|
147
|
+
description: 'Boş evlerde hırsızlık tehlikesi',
|
|
148
|
+
icon: 'mdi:map',
|
|
149
|
+
points: [
|
|
150
|
+
'Yayınlanan GPS seyahat sırasında evin boş olduğunu gösterir',
|
|
151
|
+
'Ekipman verileri suçluları cezbeder',
|
|
152
|
+
'Seyahat geçmişleri programları ve kalıpları ortaya çıkarır'
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
], columns: 2 },
|
|
156
|
+
|
|
157
|
+
{ type: 'title', text: 'Bu Araç Nasıl Çalışır?', level: 3 },
|
|
158
|
+
{ type: 'list', items: [
|
|
159
|
+
'<strong>1. Görsellerinizi seçin:</strong> Fotoğrafları sürükleyin veya seçiciyi kullanın. Aynı anda birkaç tanesini işleyebilirsiniz.',
|
|
160
|
+
'<strong>2. Otomatik analiz:</strong> Araç, mevcut tüm meta verileri (GPS, kamera modeli, tarih vb.) tespit eder ve gösterir.',
|
|
161
|
+
'<strong>3. Anında temizleme:</strong> Tek bir tıklamayla zararlı meta verilerin %100\'ünü kaldırır.',
|
|
162
|
+
'<strong>4. Güvenli indirme:</strong> Risk almadan ağlarda paylaşılmaya hazır anonimleştirilmiş görselleri alın.',
|
|
163
|
+
'<strong>5. Kalıntı yok:</strong> Temiz görsel tüm orijinal görsel kalitesini korur.'
|
|
164
|
+
], icon: 'mdi:check' },
|
|
165
|
+
|
|
166
|
+
{ type: 'card', title: 'Gizlilik Teknolojisi', icon: 'mdi:shield-check', html: 'Bu araç, görselin piksel piksel temiz bir kopyasını oluşturmak için <strong>tarayıcının Canvas API\'sini</strong> kullanır ve şunları garanti eder:<br><br>- Hiçbir veri sunuculara gönderilmez<br>- Görseliniz asla cihazınızdan ayrılmaz<br>- %100 anonim ve güvenli işleme<br>- İlk yüklemeden sonra internet bağlantısı olmasa bile kullanabilirsiniz' },
|
|
167
|
+
|
|
168
|
+
{ type: 'title', text: 'Hangi Spesifik Veriler Kaldırılır?', level: 3 },
|
|
169
|
+
{ type: 'table', headers: ['Meta Veri Türü', 'Örnekler', 'Risk'], rows: [
|
|
170
|
+
['EXIF (Değiştirilebilir)', 'GPS, ISO, Diyafram, Perde Hızı, Kamera Modeli', 'KRİTİK'],
|
|
171
|
+
['IPTC (Yayın)', 'Telif Hakkı, Yazar, Anahtar Kelimeler, Sahne Konumu', 'YÜKSEK'],
|
|
172
|
+
['XMP (XML)', 'Düzenleme Geçmişi, Kullanılan Yazılım, Yapılan Düzenlemeler', 'ORTA'],
|
|
173
|
+
['Temel Dosya Verileri', 'Oluşturma Tarihi, Tam Saat, Cihaz', 'YÜKSEK']
|
|
174
|
+
] },
|
|
175
|
+
|
|
176
|
+
{ type: 'proscons', items: [
|
|
177
|
+
{
|
|
178
|
+
pro: 'Tam Gizlilik - %100 tarayıcı tabanlı işleme',
|
|
179
|
+
con: 'JavaScript destekli modern bir tarayıcı gerektirir'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
pro: 'Anında - bir fotoğrafı temizlemek 1 saniyeden az sürer',
|
|
183
|
+
con: 'Büyük fotoğrafların işlenmesi eski cihazlarda yavaş olabilir'
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
pro: 'Sıfır Kalite Kaybı - yalnızca teknik verileri kaldırır, pikselleri değil',
|
|
187
|
+
con: 'Görseli düzenlemez (kırpma, döndürme vb.)'
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
pro: 'Sınır Olmaksızın Tamamen Ücretsiz - sınırsız fotoğraf işleyin',
|
|
191
|
+
con: 'Premium destek veya bulut depolama yok'
|
|
192
|
+
}
|
|
193
|
+
], proTitle: 'Temel Avantajlar', conTitle: 'Sınırlamalar' },
|
|
194
|
+
|
|
195
|
+
{ type: 'tip', title: 'Dijital Güvenlik İpucu', html: 'Herhangi bir sosyal ağda <strong>paylaşmadan ÖNCE fotoğraflarınızı temizleyin</strong>. Bir gönderiyi silseniz bile, meta veriler arama motorları veya arşivler tarafından dizine eklenmiş olabilir. Önlemek tedaviden daha iyidir. Bunu bir alışkanlık haline getirin: <br><br><em>Fotoğraf → EXIF Temizle → Paylaş</em>' },
|
|
196
|
+
|
|
197
|
+
{ type: 'diagnostic', variant: 'warning', title: 'Temizlememenin Gerçek Riskleri', icon: 'mdi:alert-circle', badge: 'Kritik Güvenlik', html: '<strong>Belgelenmiş vakalar:</strong><br>- Çocuklarının fotoğraflarını paylaşan ebeveynler - yırtıcılar GPS\'i takip etti<br>- Seyahat eden fotoğrafçılar - onlar uzaktayken evleri soyuldu<br>- Influencer\'lar - ikamet yerleri takıntılı hayranlar tarafından tespit edildi<br><br>Bu paranoya değil: 2026\'da temel dijital hijyendir.' },
|
|
198
|
+
|
|
199
|
+
{ type: 'glossary', items: [
|
|
200
|
+
{
|
|
201
|
+
term: 'EXIF',
|
|
202
|
+
definition: 'Exchangeable Image File Format. Görüntü dosyalarında teknik meta verileri depolayan bir standart: GPS, kamera verileri, pozlama ayarları. Dijital fotoğrafların yaklaşık %90\'ında kullanıcının niyeti olmadan bulunur.'
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
term: 'GPS Koordinatları',
|
|
206
|
+
definition: 'Fotoğrafın çekildiği tam konumun kesin enlem ve boylamı. Sosyal medya ile birleştirildiğinde, kişilerin fiziksel takibine olanak tanır.'
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
term: 'IPTC',
|
|
210
|
+
definition: 'International Press Telecommunications Council. Okunabilir yayın meta verileri: telif hakkı, yazar, anahtar kelimeler, açıklama. Profesyonel fotoğrafçılıkta standarttır.'
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
term: 'XMP',
|
|
214
|
+
definition: 'Extensible Metadata Platform. Lightroom veya Photoshop gibi yazılımlardaki düzenleme geçmişini kaydeden bir XML formatı. Yapılan tüm düzenlemeleri ortaya çıkarabilir.'
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
term: 'OSINT',
|
|
218
|
+
definition: 'Open Source Intelligence. İnsanların bilgisi olmadan profillerini oluşturmak için kamuya açık bilgileri (sosyal medya, meta veriler, kayıtlar) toplama tekniği.'
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
term: 'Dijital Anonimleştirme',
|
|
222
|
+
definition: 'Tanımlanabilir bilgileri (konum, cihaz, davranış kalıpları) kaldırma veya karartma işlemi. Çevrimiçi gizlilik için gereklidir.'
|
|
223
|
+
}
|
|
224
|
+
] },
|
|
225
|
+
|
|
226
|
+
{ type: 'message', title: 'Gizliliğiniz Sizin Sorumluluğunuzdur', ariaLabel: 'Gizlilik ve veri hakları hakkında bilgiler', html: 'Görsellerinizi saklamayız, işlemeyiz veya paylaşmayız. <strong>Tam kontrole sahipsiniz.</strong> Tüm işlemler özel olarak tarayıcınızda gerçekleşir. Bu sekmeyi kapattığınızda, aktivitenize dair hiçbir kayıt kalmaz. İnternette gizliliğinizi böyle korursunuz: verilerinize saygı duyan araçlar.' },
|
|
227
|
+
|
|
228
|
+
{ type: 'title', text: 'Sonuç: İz Bırakmadan Paylaşın', level: 3 },
|
|
229
|
+
{ type: 'paragraph', html: 'Dijital kimliğinizi korumak küçük detaylarla başlar. Fotoğraflarınızı yayınlamadan önce temizlemek 2026\'da <strong>temel bir dijital hijyen alışkanlığıdır</strong>. Sadece konumunuzu korumakla kalmaz: ailenizi, varlıklarınızı ve profesyonel gizliliğinizi korur. Masum görünen bir fotoğraf hakkınızda hayal ettiğinizden daha fazlasını ortaya çıkarabilir.' }
|
|
230
|
+
];
|
|
231
|
+
|
|
232
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
233
|
+
'@context': 'https://schema.org',
|
|
234
|
+
'@type': 'FAQPage',
|
|
235
|
+
mainEntity: faq.map((item) => ({
|
|
236
|
+
'@type': 'Question',
|
|
237
|
+
name: item.question,
|
|
238
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
239
|
+
})),
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
const howToSchema: WithContext<HowTo> = {
|
|
243
|
+
'@context': 'https://schema.org',
|
|
244
|
+
'@type': 'HowTo',
|
|
245
|
+
name: title,
|
|
246
|
+
description,
|
|
247
|
+
step: howTo.map((step) => ({
|
|
248
|
+
'@type': 'HowToStep',
|
|
249
|
+
name: step.name,
|
|
250
|
+
text: step.text,
|
|
251
|
+
})),
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
255
|
+
'@context': 'https://schema.org',
|
|
256
|
+
'@type': 'SoftwareApplication',
|
|
257
|
+
name: title,
|
|
258
|
+
description,
|
|
259
|
+
applicationCategory: 'UtilitiesApplication',
|
|
260
|
+
operatingSystem: 'Web',
|
|
261
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
262
|
+
inLanguage: 'tr',
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
export const content: ExifCleanerLocaleContent = {
|
|
266
|
+
slug,
|
|
267
|
+
title,
|
|
268
|
+
description,
|
|
269
|
+
ui,
|
|
270
|
+
seo,
|
|
271
|
+
faqTitle: "Sıkça Sorulan Sorular",
|
|
272
|
+
faq,
|
|
273
|
+
bibliographyTitle: "Referanslar",
|
|
274
|
+
bibliography,
|
|
275
|
+
howTo,
|
|
276
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
277
|
+
};
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ExifCleanerUI, ExifCleanerLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'exif-metadata-cleaner-remove-gps-photo-privacy';
|
|
5
|
+
const title = 'EXIF 元数据清除工具:从照片中删除 GPS 和隐藏数据';
|
|
6
|
+
const description = '免费在线工具,在分享图像前擦除 EXIF 元数据、GPS 坐标和相机规格。100% 私密:无需将照片上传到互联网即可工作。';
|
|
7
|
+
|
|
8
|
+
const ui: ExifCleanerUI = {
|
|
9
|
+
dropTitle: "将图像拖到此处",
|
|
10
|
+
dropSubtitle: "删除 GPS 元数据、相机型号和隐藏设置。",
|
|
11
|
+
dropLocalInfo: "100% 本地处理。不会向云端上传任何内容。",
|
|
12
|
+
selectButton: "选择图像",
|
|
13
|
+
processingText: "正在清除元数据...",
|
|
14
|
+
analysisCompleted: "分析完成",
|
|
15
|
+
downloadButton: "下载干净的图像",
|
|
16
|
+
resetButton: "清除另一张图像",
|
|
17
|
+
privacyRiskTitle: "检测到隐私风险:",
|
|
18
|
+
gpsLabel: "GPS:",
|
|
19
|
+
gpsDetected: "已检测到",
|
|
20
|
+
gpsNotFound: "未找到",
|
|
21
|
+
cameraLabel: "相机:",
|
|
22
|
+
softwareLabel: "软件:",
|
|
23
|
+
dateLabel: "日期:",
|
|
24
|
+
otherTechnicalDetails: "其他技术细节",
|
|
25
|
+
noMetadataFound: "未找到可读的 EXIF 元数据。",
|
|
26
|
+
alreadyCleanInfo: "图像可能已经很干净了。",
|
|
27
|
+
previewLabel: "预览",
|
|
28
|
+
faqTitle: "关于照片隐私的常见问题",
|
|
29
|
+
bibliographyTitle: "资源和 EXIF 技术文档",
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const faq: ExifCleanerLocaleContent['faq'] = [
|
|
33
|
+
{
|
|
34
|
+
question: "什么是 EXIF 元数据?",
|
|
35
|
+
answer: "EXIF(可交换图像文件格式)是相机或手机在每张照片内部保存的隐藏信息。它包括确切日期、设备型号、拍摄设置(ISO、光圈),以及最重要的,拍照地点的 GPS 坐标。",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: "使用这个在线工具安全吗?",
|
|
39
|
+
answer: "是的,因为处理是在浏览器中 100% 本地进行的。您的照片绝不会上传到任何服务器;清除过程直接在您设备的内存中进行,确保绝对隐私。",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
question: "清除工具具体删除了哪些数据?",
|
|
43
|
+
answer: "它擦除所有 EXIF 标签(GPS、相机品牌、序列号)、IPTC(版权、作者)和 XMP(编辑历史)。您的图像变得“干净”,仅保留视觉像素。",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
question: "清除元数据会损失画质吗?",
|
|
47
|
+
answer: "不会。我们只删除文件的技术数据“页眉”。图像数据(像素)保持一致,因此视觉质量完全不受影响。",
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const howTo: ExifCleanerLocaleContent['howTo'] = [
|
|
52
|
+
{
|
|
53
|
+
name: "选择图像",
|
|
54
|
+
text: "拖动您的照片或从文件浏览器中选择它们。您可以同时处理多张照片。",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "分析当前数据",
|
|
58
|
+
text: "工具将向您显示它检测到的敏感信息(例如,“已检测到 GPS 坐标”)。",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: "处理并清除",
|
|
62
|
+
text: "点击清除按钮立即删除所有元数据标签。",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "下载安全照片",
|
|
66
|
+
text: "保存新版本的图像,现在已匿名化,可以安全地在社交媒体上分享。",
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
const bibliography: ExifCleanerLocaleContent['bibliography'] = [
|
|
71
|
+
{
|
|
72
|
+
name: "可交换图像文件格式 (EXIF) - 维基百科",
|
|
73
|
+
url: "https://zh.wikipedia.org/wiki/EXIF",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "W3C - 图像中的元数据",
|
|
77
|
+
url: "https://www.w3.org/community/image-metadata/",
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
|
|
81
|
+
const seo: ExifCleanerLocaleContent['seo'] = [
|
|
82
|
+
{
|
|
83
|
+
type: 'summary',
|
|
84
|
+
title: 'EXIF 元数据清除工具:保护您的隐私',
|
|
85
|
+
items: [
|
|
86
|
+
'立即从照片中删除 GPS 坐标和位置信息',
|
|
87
|
+
'擦除相机型号、序列号和技术信息',
|
|
88
|
+
'100% 基于浏览器的处理 - 您的图像绝不会离开您的设备',
|
|
89
|
+
'保持视觉质量 - 仅删除隐藏数据'
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{ type: 'title', text: '数字摄影中的隐私和 EXIF 元数据完整指南', level: 2 },
|
|
93
|
+
{ type: 'paragraph', html: '您是否想过在向社交媒体上传照片时分享了多少个人信息?EXIF 元数据就像一个<strong>无形的指纹</strong>,可以揭示从您的精确家庭住址到摄影器材价格的一切信息。本指南解释了如何有效保护您的隐私。' },
|
|
94
|
+
|
|
95
|
+
{ type: 'stats', items: [
|
|
96
|
+
{ value: '100%', label: '隐私 - 本地处理', icon: 'mdi:shield-check' },
|
|
97
|
+
{ value: '0%', label: '服务器上存储的数据', icon: 'mdi:database' },
|
|
98
|
+
{ value: '即时', label: '元数据删除', icon: 'mdi:lightning-bolt' }
|
|
99
|
+
], columns: 3 },
|
|
100
|
+
|
|
101
|
+
{ type: 'title', text: '照片中隐藏了哪些信息?', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: '超过 90% 的数字照片包含可能危及您安全的敏感信息。以下是可能泄露的所有数据:' },
|
|
103
|
+
{ type: 'list', items: [
|
|
104
|
+
'<strong>GPS 坐标:</strong> 拍摄的确切纬度和经度(家庭住址、工作单位、经常访问的地方)。',
|
|
105
|
+
'<strong>设备识别:</strong> 相机或智能手机的品牌、型号和序列号(有价值的信息)。',
|
|
106
|
+
'<strong>技术设置:</strong> ISO、光圈 (f/)、曝光时间和焦距(允许识别您的特定器材)。',
|
|
107
|
+
'<strong>确切日期和时间:</strong> 您日常活动的完整时间线。',
|
|
108
|
+
'<strong>编辑历史:</strong> 使用的软件、编辑软件和最后修改日期。',
|
|
109
|
+
'<strong>版权数据:</strong> 摄影师、版权和个人笔记。'
|
|
110
|
+
] },
|
|
111
|
+
|
|
112
|
+
{ type: 'title', text: '真实安全风险:使用案例', level: 3 },
|
|
113
|
+
{ type: 'comparative', items: [
|
|
114
|
+
{
|
|
115
|
+
title: '专业摄影师',
|
|
116
|
+
description: '通过序列号识别出的昂贵设备被盗的风险',
|
|
117
|
+
icon: 'mdi:camera',
|
|
118
|
+
points: [
|
|
119
|
+
'窃贼寻找拥有昂贵器材的摄影师',
|
|
120
|
+
'GPS 识别所有者的家庭住址',
|
|
121
|
+
'序列号方便在暗网转卖'
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
title: '父母和博主',
|
|
126
|
+
description: '极端危险:儿童的实时位置',
|
|
127
|
+
icon: 'mdi:alert',
|
|
128
|
+
points: [
|
|
129
|
+
'掠夺者使用 OSINT 追踪位置',
|
|
130
|
+
'掠夺者可以识别日常生活习惯',
|
|
131
|
+
'面临骚扰和身体追踪的风险'
|
|
132
|
+
],
|
|
133
|
+
highlight: true
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
title: '社交媒体用户',
|
|
137
|
+
description: '个人和职业隐私曝光',
|
|
138
|
+
icon: 'mdi:share-variant',
|
|
139
|
+
points: [
|
|
140
|
+
'从办公室发布内容会泄露工作场所位置',
|
|
141
|
+
'地理位置允许推断大致薪资',
|
|
142
|
+
'公开数据允许有针对性的画像'
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
title: '旅行者和游牧者',
|
|
147
|
+
description: '无人居住的房屋面临失窃危险',
|
|
148
|
+
icon: 'mdi:map',
|
|
149
|
+
points: [
|
|
150
|
+
'发布的 GPS 指明旅行期间家中无人',
|
|
151
|
+
'设备数据吸引犯罪分子',
|
|
152
|
+
'旅行历史揭示日程安排和模式'
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
], columns: 2 },
|
|
156
|
+
|
|
157
|
+
{ type: 'title', text: '此工具的工作原理', level: 3 },
|
|
158
|
+
{ type: 'list', items: [
|
|
159
|
+
'<strong>1. 选择您的图像:</strong> 拖动照片或使用选择器。您可以同时处理多张照片。',
|
|
160
|
+
'<strong>2. 自动分析:</strong> 工具检测并显示所有存在的元数据(GPS、相机型号、日期等)。',
|
|
161
|
+
'<strong>3. 即时清除:</strong> 一键删除 100% 的有害元数据。',
|
|
162
|
+
'<strong>4. 安全下载:</strong> 接收已匿名化的图像,随时可以在网络上安全分享。',
|
|
163
|
+
'<strong>5. 无残留:</strong> 干净的图像保留其所有的原始视觉质量。'
|
|
164
|
+
], icon: 'mdi:check' },
|
|
165
|
+
|
|
166
|
+
{ type: 'card', title: '隐私技术', icon: 'mdi:shield-check', html: '此工具使用<strong>浏览器的 Canvas API</strong> 逐像素创建图像的干净副本,确保:<br><br>- 不向服务器发送数据<br>- 您的图像绝不会离开您的设备<br>- 100% 匿名且安全处理<br>- 即使没有互联网连接也可以使用(初始加载后)' },
|
|
167
|
+
|
|
168
|
+
{ type: 'title', text: '删除了哪些具体数据?', level: 3 },
|
|
169
|
+
{ type: 'table', headers: ['元数据类型', '示例', '风险'], rows: [
|
|
170
|
+
['EXIF(可交换)', 'GPS、ISO、光圈、快门速度、相机型号', '至关重要'],
|
|
171
|
+
['IPTC(发布)', '版权、作者、关键词、场景位置', '高'],
|
|
172
|
+
['XMP (XML)', '编辑历史、使用的软件、进行的编辑', '中'],
|
|
173
|
+
['基本文件数据', '创建日期、确切时间、设备', '高']
|
|
174
|
+
] },
|
|
175
|
+
|
|
176
|
+
{ type: 'proscons', items: [
|
|
177
|
+
{
|
|
178
|
+
pro: '完全隐私 - 100% 基于浏览器的处理',
|
|
179
|
+
con: '需要支持 JavaScript 的现代浏览器'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
pro: '即时 - 清除一张照片不到 1 秒',
|
|
183
|
+
con: '在旧设备上处理大尺寸照片可能会慢'
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
pro: '零画质损失 - 仅删除技术数据,不删除像素',
|
|
187
|
+
con: '不编辑图像(裁剪、旋转等)'
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
pro: '完全免费且无限制 - 处理无限量照片',
|
|
191
|
+
con: '无高级支持或云存储'
|
|
192
|
+
}
|
|
193
|
+
], proTitle: '主要优势', conTitle: '局限性' },
|
|
194
|
+
|
|
195
|
+
{ type: 'tip', title: '数字安全提示', html: '在任何社交网络发布照片<strong>之前先进行清理</strong>。即使您删除了帖子,元数据也可能已被搜索引擎或存档编入索引。预防胜于治疗。养成习惯:<br><br><em>照片 → 清除 EXIF → 发布</em>' },
|
|
196
|
+
|
|
197
|
+
{ type: 'diagnostic', variant: 'warning', title: '不进行清理的真实风险', icon: 'mdi:alert-circle', badge: '关键安全', html: '<strong>已记录的案例:</strong><br>- 父母发布儿童照片 - 掠夺者追踪了 GPS<br>- 旅行摄影师 - 外出期间家被洗劫<br>- 博主 - 居住地点被偏执粉丝识别<br><br>这不是妄想症:这是 2026 年基本的数字卫生。' },
|
|
198
|
+
|
|
199
|
+
{ type: 'glossary', items: [
|
|
200
|
+
{
|
|
201
|
+
term: 'EXIF',
|
|
202
|
+
definition: '可交换图像文件格式。在图像文件中存储技术元数据的标准:GPS、相机数据、曝光设置。存在于约 90% 的数字照片中,通常并非用户本意。'
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
term: 'GPS 坐标',
|
|
206
|
+
definition: '照片拍摄位置的精确经纬度。结合社交媒体,可以对人进行物理追踪。'
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
term: 'IPTC',
|
|
210
|
+
definition: '国际新闻电信理事会。可读的发布元数据:版权、作者、关键词、描述。专业摄影的标准。'
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
term: 'XMP',
|
|
214
|
+
definition: '可扩展元数据平台。一种 XML 格式,记录 Lightroom 或 Photoshop 等软件中的编辑历史。它可以显示所有进行的修改。'
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
term: 'OSINT',
|
|
218
|
+
definition: '开源情报。一种收集公开信息(社交媒体、元数据、记录)以在本人不知情的情况下对人进行画像的技术。'
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
term: '数字匿名化',
|
|
222
|
+
definition: '删除或混淆可识别信息的过程:位置、设备、行为模式。对在线隐私至关重要。'
|
|
223
|
+
}
|
|
224
|
+
] },
|
|
225
|
+
|
|
226
|
+
{ type: 'message', title: '保护隐私是您的责任', ariaLabel: '关于隐私和数据权利的信息', html: '我们不存储、处理或分享您的图像。<strong>您拥有完全控制权。</strong> 所有操作仅在您的浏览器中完成。当您关闭此标签页时,不会保留您的活动记录。这就是在互联网上保护隐私的方式:尊重您的数据的工具。' },
|
|
227
|
+
|
|
228
|
+
{ type: 'title', text: '结论:分享不留痕迹', level: 3 },
|
|
229
|
+
{ type: 'paragraph', html: '保护数字身份从细节开始。发布前清理照片是 2026 年<strong>基本的数字卫生习惯</strong>。它不仅保护您的位置信息,还保护您的家人、资产和职业隐私。一张看似普通的照片泄露的信息可能比您想象的要多。' }
|
|
230
|
+
];
|
|
231
|
+
|
|
232
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
233
|
+
'@context': 'https://schema.org',
|
|
234
|
+
'@type': 'FAQPage',
|
|
235
|
+
mainEntity: faq.map((item) => ({
|
|
236
|
+
'@type': 'Question',
|
|
237
|
+
name: item.question,
|
|
238
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
239
|
+
})),
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
const howToSchema: WithContext<HowTo> = {
|
|
243
|
+
'@context': 'https://schema.org',
|
|
244
|
+
'@type': 'HowTo',
|
|
245
|
+
name: title,
|
|
246
|
+
description,
|
|
247
|
+
step: howTo.map((step) => ({
|
|
248
|
+
'@type': 'HowToStep',
|
|
249
|
+
name: step.name,
|
|
250
|
+
text: step.text,
|
|
251
|
+
})),
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
255
|
+
'@context': 'https://schema.org',
|
|
256
|
+
'@type': 'SoftwareApplication',
|
|
257
|
+
name: title,
|
|
258
|
+
description,
|
|
259
|
+
applicationCategory: 'UtilitiesApplication',
|
|
260
|
+
operatingSystem: 'Web',
|
|
261
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
262
|
+
inLanguage: 'zh',
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
export const content: ExifCleanerLocaleContent = {
|
|
266
|
+
slug,
|
|
267
|
+
title,
|
|
268
|
+
description,
|
|
269
|
+
ui,
|
|
270
|
+
seo,
|
|
271
|
+
faqTitle: "常见问题",
|
|
272
|
+
faq,
|
|
273
|
+
bibliographyTitle: "参考资料",
|
|
274
|
+
bibliography,
|
|
275
|
+
howTo,
|
|
276
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
277
|
+
};
|
|
@@ -30,20 +30,28 @@ export interface ExifCleanerUI {
|
|
|
30
30
|
|
|
31
31
|
export type ExifCleanerLocaleContent = ToolLocaleContent<ExifCleanerUI>;
|
|
32
32
|
|
|
33
|
-
import { content as es } from './i18n/es';
|
|
34
|
-
import { content as en } from './i18n/en';
|
|
35
|
-
import { content as fr } from './i18n/fr';
|
|
36
|
-
|
|
37
33
|
export const exifCleaner: AudiovisualToolEntry<ExifCleanerUI> = {
|
|
38
|
-
id: 'exif
|
|
34
|
+
id: 'limpiador-exif',
|
|
39
35
|
icons: {
|
|
40
36
|
bg: 'mdi:camera-off',
|
|
41
37
|
fg: 'mdi:shield-check',
|
|
42
38
|
},
|
|
43
39
|
i18n: {
|
|
44
|
-
es: async () => es as unknown as ExifCleanerLocaleContent,
|
|
45
|
-
en: async () => en as unknown as ExifCleanerLocaleContent,
|
|
46
|
-
fr: async () => fr as unknown as ExifCleanerLocaleContent,
|
|
40
|
+
es: async () => (await import('./i18n/es')).content as unknown as ExifCleanerLocaleContent,
|
|
41
|
+
en: async () => (await import('./i18n/en')).content as unknown as ExifCleanerLocaleContent,
|
|
42
|
+
fr: async () => (await import('./i18n/fr')).content as unknown as ExifCleanerLocaleContent,
|
|
43
|
+
de: async () => (await import('./i18n/de')).content as unknown as ExifCleanerLocaleContent,
|
|
44
|
+
it: async () => (await import('./i18n/it')).content as unknown as ExifCleanerLocaleContent,
|
|
45
|
+
pt: async () => (await import('./i18n/pt')).content as unknown as ExifCleanerLocaleContent,
|
|
46
|
+
id: async () => (await import('./i18n/id')).content as unknown as ExifCleanerLocaleContent,
|
|
47
|
+
ja: async () => (await import('./i18n/ja')).content as unknown as ExifCleanerLocaleContent,
|
|
48
|
+
ko: async () => (await import('./i18n/ko')).content as unknown as ExifCleanerLocaleContent,
|
|
49
|
+
nl: async () => (await import('./i18n/nl')).content as unknown as ExifCleanerLocaleContent,
|
|
50
|
+
pl: async () => (await import('./i18n/pl')).content as unknown as ExifCleanerLocaleContent,
|
|
51
|
+
ru: async () => (await import('./i18n/ru')).content as unknown as ExifCleanerLocaleContent,
|
|
52
|
+
sv: async () => (await import('./i18n/sv')).content as unknown as ExifCleanerLocaleContent,
|
|
53
|
+
tr: async () => (await import('./i18n/tr')).content as unknown as ExifCleanerLocaleContent,
|
|
54
|
+
zh: async () => (await import('./i18n/zh')).content as unknown as ExifCleanerLocaleContent,
|
|
47
55
|
},
|
|
48
56
|
};
|
|
49
57
|
|