@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.
Files changed (152) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +198 -0
  3. package/src/category/i18n/id.ts +198 -0
  4. package/src/category/i18n/it.ts +198 -0
  5. package/src/category/i18n/ja.ts +198 -0
  6. package/src/category/i18n/ko.ts +198 -0
  7. package/src/category/i18n/nl.ts +198 -0
  8. package/src/category/i18n/pl.ts +198 -0
  9. package/src/category/i18n/pt.ts +198 -0
  10. package/src/category/i18n/ru.ts +198 -0
  11. package/src/category/i18n/sv.ts +198 -0
  12. package/src/category/i18n/tr.ts +198 -0
  13. package/src/category/i18n/zh.ts +198 -0
  14. package/src/category/index.ts +31 -3
  15. package/src/tests/i18n_coverage.test.ts +36 -0
  16. package/src/tests/slug_uniqueness.test.ts +81 -0
  17. package/src/tool/chromaticLens/i18n/de.ts +246 -0
  18. package/src/tool/chromaticLens/i18n/id.ts +246 -0
  19. package/src/tool/chromaticLens/i18n/it.ts +246 -0
  20. package/src/tool/chromaticLens/i18n/ja.ts +246 -0
  21. package/src/tool/chromaticLens/i18n/ko.ts +246 -0
  22. package/src/tool/chromaticLens/i18n/nl.ts +246 -0
  23. package/src/tool/chromaticLens/i18n/pl.ts +246 -0
  24. package/src/tool/chromaticLens/i18n/pt.ts +246 -0
  25. package/src/tool/chromaticLens/i18n/ru.ts +246 -0
  26. package/src/tool/chromaticLens/i18n/sv.ts +246 -0
  27. package/src/tool/chromaticLens/i18n/tr.ts +246 -0
  28. package/src/tool/chromaticLens/i18n/zh.ts +246 -0
  29. package/src/tool/chromaticLens/index.ts +15 -7
  30. package/src/tool/collageMaker/i18n/de.ts +233 -0
  31. package/src/tool/collageMaker/i18n/id.ts +233 -0
  32. package/src/tool/collageMaker/i18n/it.ts +233 -0
  33. package/src/tool/collageMaker/i18n/ja.ts +233 -0
  34. package/src/tool/collageMaker/i18n/ko.ts +233 -0
  35. package/src/tool/collageMaker/i18n/nl.ts +233 -0
  36. package/src/tool/collageMaker/i18n/pl.ts +233 -0
  37. package/src/tool/collageMaker/i18n/pt.ts +233 -0
  38. package/src/tool/collageMaker/i18n/ru.ts +233 -0
  39. package/src/tool/collageMaker/i18n/sv.ts +233 -0
  40. package/src/tool/collageMaker/i18n/tr.ts +233 -0
  41. package/src/tool/collageMaker/i18n/zh.ts +233 -0
  42. package/src/tool/collageMaker/index.ts +15 -6
  43. package/src/tool/exifCleaner/i18n/de.ts +277 -0
  44. package/src/tool/exifCleaner/i18n/fr.ts +1 -1
  45. package/src/tool/exifCleaner/i18n/id.ts +277 -0
  46. package/src/tool/exifCleaner/i18n/it.ts +277 -0
  47. package/src/tool/exifCleaner/i18n/ja.ts +277 -0
  48. package/src/tool/exifCleaner/i18n/ko.ts +277 -0
  49. package/src/tool/exifCleaner/i18n/nl.ts +277 -0
  50. package/src/tool/exifCleaner/i18n/pl.ts +277 -0
  51. package/src/tool/exifCleaner/i18n/pt.ts +277 -0
  52. package/src/tool/exifCleaner/i18n/ru.ts +277 -0
  53. package/src/tool/exifCleaner/i18n/sv.ts +277 -0
  54. package/src/tool/exifCleaner/i18n/tr.ts +277 -0
  55. package/src/tool/exifCleaner/i18n/zh.ts +277 -0
  56. package/src/tool/exifCleaner/index.ts +16 -8
  57. package/src/tool/imageCompressor/i18n/de.ts +242 -0
  58. package/src/tool/imageCompressor/i18n/en.ts +1 -1
  59. package/src/tool/imageCompressor/i18n/es.ts +1 -1
  60. package/src/tool/imageCompressor/i18n/id.ts +242 -0
  61. package/src/tool/imageCompressor/i18n/it.ts +242 -0
  62. package/src/tool/imageCompressor/i18n/ja.ts +242 -0
  63. package/src/tool/imageCompressor/i18n/ko.ts +242 -0
  64. package/src/tool/imageCompressor/i18n/nl.ts +242 -0
  65. package/src/tool/imageCompressor/i18n/pl.ts +242 -0
  66. package/src/tool/imageCompressor/i18n/pt.ts +242 -0
  67. package/src/tool/imageCompressor/i18n/ru.ts +242 -0
  68. package/src/tool/imageCompressor/i18n/sv.ts +242 -0
  69. package/src/tool/imageCompressor/i18n/tr.ts +242 -0
  70. package/src/tool/imageCompressor/i18n/zh.ts +244 -0
  71. package/src/tool/imageCompressor/index.ts +15 -7
  72. package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
  73. package/src/tool/printQualityCalculator/i18n/fr.ts +1 -1
  74. package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
  75. package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
  76. package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
  77. package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
  78. package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
  79. package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
  80. package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
  81. package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
  82. package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
  83. package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
  84. package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
  85. package/src/tool/printQualityCalculator/index.ts +15 -7
  86. package/src/tool/privacyBlur/i18n/de.ts +238 -0
  87. package/src/tool/privacyBlur/i18n/id.ts +238 -0
  88. package/src/tool/privacyBlur/i18n/it.ts +238 -0
  89. package/src/tool/privacyBlur/i18n/ja.ts +238 -0
  90. package/src/tool/privacyBlur/i18n/ko.ts +238 -0
  91. package/src/tool/privacyBlur/i18n/nl.ts +238 -0
  92. package/src/tool/privacyBlur/i18n/pl.ts +238 -0
  93. package/src/tool/privacyBlur/i18n/pt.ts +238 -0
  94. package/src/tool/privacyBlur/i18n/ru.ts +238 -0
  95. package/src/tool/privacyBlur/i18n/sv.ts +238 -0
  96. package/src/tool/privacyBlur/i18n/tr.ts +238 -0
  97. package/src/tool/privacyBlur/i18n/zh.ts +238 -0
  98. package/src/tool/privacyBlur/index.ts +15 -7
  99. package/src/tool/subtitleSync/i18n/de.ts +241 -0
  100. package/src/tool/subtitleSync/i18n/fr.ts +5 -5
  101. package/src/tool/subtitleSync/i18n/id.ts +241 -0
  102. package/src/tool/subtitleSync/i18n/it.ts +241 -0
  103. package/src/tool/subtitleSync/i18n/ja.ts +241 -0
  104. package/src/tool/subtitleSync/i18n/ko.ts +241 -0
  105. package/src/tool/subtitleSync/i18n/nl.ts +241 -0
  106. package/src/tool/subtitleSync/i18n/pl.ts +241 -0
  107. package/src/tool/subtitleSync/i18n/pt.ts +241 -0
  108. package/src/tool/subtitleSync/i18n/ru.ts +241 -0
  109. package/src/tool/subtitleSync/i18n/sv.ts +241 -0
  110. package/src/tool/subtitleSync/i18n/tr.ts +241 -0
  111. package/src/tool/subtitleSync/i18n/zh.ts +241 -0
  112. package/src/tool/subtitleSync/index.ts +15 -7
  113. package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
  114. package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
  115. package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
  116. package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
  117. package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
  118. package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
  119. package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
  120. package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
  121. package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
  122. package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
  123. package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
  124. package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
  125. package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
  126. package/src/tool/timelapseCalculator/index.ts +16 -8
  127. package/src/tool/tvDistance/i18n/de.ts +223 -0
  128. package/src/tool/tvDistance/i18n/id.ts +223 -0
  129. package/src/tool/tvDistance/i18n/it.ts +223 -0
  130. package/src/tool/tvDistance/i18n/ja.ts +223 -0
  131. package/src/tool/tvDistance/i18n/ko.ts +223 -0
  132. package/src/tool/tvDistance/i18n/nl.ts +223 -0
  133. package/src/tool/tvDistance/i18n/pl.ts +223 -0
  134. package/src/tool/tvDistance/i18n/pt.ts +223 -0
  135. package/src/tool/tvDistance/i18n/ru.ts +223 -0
  136. package/src/tool/tvDistance/i18n/sv.ts +223 -0
  137. package/src/tool/tvDistance/i18n/tr.ts +223 -0
  138. package/src/tool/tvDistance/i18n/zh.ts +223 -0
  139. package/src/tool/tvDistance/index.ts +15 -7
  140. package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
  141. package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
  142. package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
  143. package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
  144. package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
  145. package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
  146. package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
  147. package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
  148. package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
  149. package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
  150. package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
  151. package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
  152. 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-metadaten-reinigungsgeraet-gps-foto-datenschutz-entfernen';
5
+ const title = 'EXIF Metadaten Reiniger: GPS und versteckte Daten aus Fotos entfernen';
6
+ const description = 'Kostenloses Online-Tool zum Löschen von EXIF-Metadaten, GPS-Koordinaten und Kameraspezifikationen aus Ihren Bildern vor dem Teilen. 100 % privat: funktioniert ohne das Hochladen von Fotos ins Internet.';
7
+
8
+ const ui: ExifCleanerUI = {
9
+ dropTitle: "Ziehen Sie Ihr Bild hierher",
10
+ dropSubtitle: "Entfernen Sie GPS Metadaten, Kameramodell und versteckte Einstellungen.",
11
+ dropLocalInfo: "100 % lokale Verarbeitung. Nichts wird in die Cloud hochgeladen.",
12
+ selectButton: "Bild auswählen",
13
+ processingText: "Metadaten werden bereinigt...",
14
+ analysisCompleted: "Analyse abgeschlossen",
15
+ downloadButton: "Gereinigtes Bild herunterladen",
16
+ resetButton: "Weiteres Bild reinigen",
17
+ privacyRiskTitle: "DATENSCHUTZRIsiken ENTDECKT:",
18
+ gpsLabel: "GPS:",
19
+ gpsDetected: "ERKANNT",
20
+ gpsNotFound: "NICHT GEFUNDEN",
21
+ cameraLabel: "KAMERA:",
22
+ softwareLabel: "SOFTWARE:",
23
+ dateLabel: "DATUM:",
24
+ otherTechnicalDetails: "WEITERE TECHNISCHE DETAILS",
25
+ noMetadataFound: "Keine lesbaren EXIF-Metadaten gefunden.",
26
+ alreadyCleanInfo: "Das Bild ist möglicherweise bereits bereinigt.",
27
+ previewLabel: "Vorschau",
28
+ faqTitle: "Häufig gestellte Fragen zum Foto Datenschutz",
29
+ bibliographyTitle: "Ressourcen und technische EXIF Dokumentation",
30
+ };
31
+
32
+ const faq: ExifCleanerLocaleContent['faq'] = [
33
+ {
34
+ question: "Was sind EXIF-Metadaten?",
35
+ answer: "EXIF (Exchangeable Image File Format) sind versteckte Informationen, die Ihre Kamera oder Ihr Telefon in jedem Foto speichert. Dazu gehören das genaue Datum, das Gerätemodell, die Aufnahmeeinstellungen (ISO, Blende) und ganz entscheidend die GPS-Koordinaten des Ortes, an dem das Foto aufgenommen wurde.",
36
+ },
37
+ {
38
+ question: "Ist es sicher, dieses Online-Tool zu verwenden?",
39
+ answer: "Ja, da die Verarbeitung zu 100 % lokal in Ihrem Browser erfolgt. Ihre Fotos werden niemals auf einen Server hochgeladen; die Reinigung findet direkt im Speicher Ihres Geräts statt, was absolute Privatsphäre garantiert.",
40
+ },
41
+ {
42
+ question: "Welche spezifischen Daten entfernt der Reiniger?",
43
+ answer: "Er löscht alle EXIF-Tags (GPS, Kameramarke, Seriennummer), IPTC (Urheberrecht, Autor) und XMP (Bearbeitungsverlauf). Ihr Bild wird 'rein' und behält nur die visuellen Pixel.",
44
+ },
45
+ {
46
+ question: "Verliert das Bild beim Reinigen der Metadaten an Qualität?",
47
+ answer: "Nein. Wir entfernen nur den technischen Daten-Header der Datei. Die Bilddaten (Pixel) bleiben identisch, sodass die visuelle Qualität überhaupt nicht beeinträchtigt wird.",
48
+ },
49
+ ];
50
+
51
+ const howTo: ExifCleanerLocaleContent['howTo'] = [
52
+ {
53
+ name: "Bilder auswählen",
54
+ text: "Ziehen Sie Ihre Fotos hierher oder wählen Sie sie aus Ihrem Dateiexplorer aus. Sie können mehrere gleichzeitig verarbeiten.",
55
+ },
56
+ {
57
+ name: "Aktuelle Daten analysieren",
58
+ text: "Das Tool zeigt Ihnen an, welche sensiblen Informationen es erkannt hat (z. B. 'GPS-Koordinaten erkannt').",
59
+ },
60
+ {
61
+ name: "Verarbeiten und reinigen",
62
+ text: "Klicken Sie auf den Reinigen Button, um sofort alle Metadaten Tags zu entfernen.",
63
+ },
64
+ {
65
+ name: "Sichere Fotos herunterladen",
66
+ text: "Speichern Sie die neuen Versionen Ihrer Bilder, die nun anonymisiert und bereit sind, sicher in sozialen Medien geteilt zu werden.",
67
+ },
68
+ ];
69
+
70
+ const bibliography: ExifCleanerLocaleContent['bibliography'] = [
71
+ {
72
+ name: "Exchangeable Image File Format (EXIF) - Wikipedia",
73
+ url: "https://de.wikipedia.org/wiki/Exchangeable_Image_File_Format",
74
+ },
75
+ {
76
+ name: "W3C - Metadaten in Bildern",
77
+ url: "https://www.w3.org/community/image-metadata/",
78
+ },
79
+ ];
80
+
81
+ const seo: ExifCleanerLocaleContent['seo'] = [
82
+ {
83
+ type: 'summary',
84
+ title: 'EXIF Metadaten Reiniger: Schützen Sie Ihre Privatsphäre',
85
+ items: [
86
+ 'GPS-Koordinaten und Standort sofort aus Ihren Fotos entfernen',
87
+ 'Kameramodell, Seriennummer und technische Informationen löschen',
88
+ '%100 % browserbasierte Verarbeitung – Ihre Bilder verlassen niemals Ihr Gerät',
89
+ 'Behält die visuelle Qualität bei – nur versteckte Daten werden entfernt'
90
+ ]
91
+ },
92
+ { type: 'title', text: 'Vollständiger Leitfaden zum Datenschutz und zu EXIF Metadaten in der digitalen Fotografie', level: 2 },
93
+ { type: 'paragraph', html: 'Haben Sie sich jemals gefragt, wie viele persönliche Informationen Sie teilen, wenn Sie ein Foto in soziale Medien hochladen? EXIF-Metadaten sind wie ein <strong>unsichtbarer Fingerabdruck</strong>, der alles verraten kann, von Ihrem genauen Wohnort bis hin zum Preis Ihrer Fotoausrüstung. Dieser Leitfaden erklärt, wie Sie Ihre Privatsphäre effektiv schützen.' },
94
+
95
+ { type: 'stats', items: [
96
+ { value: '100 %', label: 'Privatsphäre – Lokale Verarbeitung', icon: 'mdi:shield-check' },
97
+ { value: '0 %', label: 'Auf Servern gespeicherte Daten', icon: 'mdi:database' },
98
+ { value: 'Sofort', label: 'Metadaten-Entfernung', icon: 'mdi:lightning-bolt' }
99
+ ], columns: 3 },
100
+
101
+ { type: 'title', text: 'Welche Informationen sind in Ihren Fotos versteckt?', level: 3 },
102
+ { type: 'paragraph', html: 'Mehr als 90 % der digitalen Fotos enthalten sensible Informationen, die Ihre Sicherheit gefährden können. Hier sind alle Daten, die preisgegeben werden können:' },
103
+ { type: 'list', items: [
104
+ '<strong>GPS-Koordinaten:</strong> Der genaue Breitengrad und Längengrad der Aufnahme (Heimatadresse, Arbeitsplatz, häufig besuchte Orte).',
105
+ '<strong>Geräteidentifikation:</strong> Marke, Modell und Seriennummer der Kamera oder des Smartphones (wertvolle Informationen).',
106
+ '<strong>Technische Einstellungen:</strong> ISO, Blende (f/), Belichtungszeit und Brennweite (ermöglicht die Identifizierung Ihrer spezifischen Ausrüstung).',
107
+ '<strong>Genaues Datum und Uhrzeit:</strong> Ein vollständiger Zeitplan Ihrer täglichen Aktivitäten.',
108
+ '<strong>Bearbeitungsverlauf:</strong> Verwendete Software, Bearbeitungssoftware und Datum der letzten Änderung.',
109
+ '<strong>Urheberrechtsdaten:</strong> Fotograf, Urheberrecht und persönliche Notizen.'
110
+ ] },
111
+
112
+ { type: 'title', text: 'Reale Sicherheitsrisiken: Anwendungsfälle', level: 3 },
113
+ { type: 'comparative', items: [
114
+ {
115
+ title: 'Professionelle Fotografen',
116
+ description: 'Risiko des Diebstahls teurer Ausrüstung, die über die Seriennummer identifiziert wurde',
117
+ icon: 'mdi:camera',
118
+ points: [
119
+ 'Diebe suchen nach Fotografen mit wertvoller Ausrüstung',
120
+ 'GPS identifiziert die Heimatadresse des Besitzers',
121
+ 'Seriennummer erleichtert den Weiterverkauf im Dark Web'
122
+ ]
123
+ },
124
+ {
125
+ title: 'Eltern und Influencer',
126
+ description: 'Extreme Gefahr: Echtzeit-Standort von Kindern',
127
+ icon: 'mdi:alert',
128
+ points: [
129
+ 'Täter verfolgen Standorte mittels OSINT',
130
+ 'Täter können tägliche Routinen identifizieren',
131
+ 'Risiko von Stalking und physischer Verfolgung'
132
+ ],
133
+ highlight: true
134
+ },
135
+ {
136
+ title: 'Social Media Nutzer',
137
+ description: 'Preisgabe der persönlichen und beruflichen Privatsphäre',
138
+ icon: 'mdi:share-variant',
139
+ points: [
140
+ 'Posten aus dem Büro verrät den Arbeitsplatz',
141
+ 'Geolokalisierung ermöglicht Rückschlüsse auf das ungefähre Gehalt',
142
+ 'Öffentliche Daten ermöglichen gezieltes Profiling'
143
+ ]
144
+ },
145
+ {
146
+ title: 'Reisende und Nomaden',
147
+ description: 'Gefahr von Diebstahl in leerstehenden Häusern',
148
+ icon: 'mdi:map',
149
+ points: [
150
+ 'Veröffentlichtes GPS weist auf leeres Haus während der Reise hin',
151
+ 'Ausrüstungsdaten ziehen Kriminelle an',
152
+ 'Reiseverläufe verraten Zeitpläne und Muster'
153
+ ]
154
+ }
155
+ ], columns: 2 },
156
+
157
+ { type: 'title', text: 'Wie dieses Tool funktioniert', level: 3 },
158
+ { type: 'list', items: [
159
+ '<strong>1. Bilder auswählen:</strong> Fotos ziehen oder den Selektor verwenden. Mehrere gleichzeitig verarbeiten.',
160
+ '<strong>2. Automatische Analyse:</strong> Das Tool erkennt und zeigt alle vorhandenen Metadaten (GPS, Kameramodell, Datum usw.).',
161
+ '<strong>3. Sofortige Reinigung:</strong> Mit einem Klick werden 100 % der schädlichen Metadaten entfernt.',
162
+ '<strong>4. Sicherer Download:</strong> Erhalten Sie anonymisierte Bilder, die ohne Risiken in Netzwerken geteilt werden können.',
163
+ '<strong>5. Rückstandsfrei:</strong> Das gereinigte Bild behält seine volle ursprüngliche visuelle Qualität bei.'
164
+ ], icon: 'mdi:check' },
165
+
166
+ { type: 'card', title: 'Datenschutz Technologie', icon: 'mdi:shield-check', html: 'Dieses Tool verwendet die <strong>Canvas-API des Browsers</strong>, um eine saubere Kopie des Bildes Pixel für Pixel zu erstellen, was sicherstellt, dass:<br><br>- Keine Daten an Server gesendet werden<br>- Ihr Bild niemals Ihr Gerät verlässt<br>- Verarbeitung 100 % anonym und sicher ist<br>- Sie es nach dem ersten Laden sogar ohne Internetverbindung nutzen können' },
167
+
168
+ { type: 'title', text: 'Welche spezifischen Daten werden entfernt?', level: 3 },
169
+ { type: 'table', headers: ['Metadatentyp', 'Beispiele', 'Risiko'], rows: [
170
+ ['EXIF (Austauschbar)', 'GPS, ISO, Blende, Verschlusszeit, Kameramodell', 'KRITISCH'],
171
+ ['IPTC (Veröffentlichung)', 'Urheberrecht, Autor, Schlüsselwörter, Ort der Szene', 'HOCH'],
172
+ ['XMP (XML)', 'Bearbeitungsverlauf, verwendete Software, vorgenommene Änderungen', 'MITTEL'],
173
+ ['Basisdateidaten', 'Erstellungsdatum, genaue Uhrzeit, Gerät', 'HOCH']
174
+ ] },
175
+
176
+ { type: 'proscons', items: [
177
+ {
178
+ pro: 'Absoluter Datenschutz – 100 % browserbasierte Verarbeitung',
179
+ con: 'Erfordert einen modernen Browser mit JavaScript-Unterstützung'
180
+ },
181
+ {
182
+ pro: 'Sofort – Reinigung eines Fotos dauert weniger als 1 Sekunde',
183
+ con: 'Verarbeitung großer Fotos kann auf älteren Geräten langsam sein'
184
+ },
185
+ {
186
+ pro: 'Null Qualitätsverlust – entfernt nur technische Daten, keine Pixel',
187
+ con: 'Bearbeitet das Bild nicht (Zuschnitte, Rotationen usw.)'
188
+ },
189
+ {
190
+ pro: 'Völlig kostenlos ohne Limits – unbegrenzt Fotos verarbeiten',
191
+ con: 'Kein Premium-Support oder Cloud-Speicher'
192
+ }
193
+ ], proTitle: 'Hauptvorteile', conTitle: 'Einschränkungen' },
194
+
195
+ { type: 'tip', title: 'Tipp zur digitalen Sicherheit', html: '<strong>Reinigen Sie Ihre Fotos BEVOR sie</strong> in sozialen Netzwerken gepostet werden. Selbst wenn Sie einen Post löschen, könnten Metadaten bereits von Suchmaschinen oder Archiven indexiert worden sein. Vorsorge ist besser als Nachsorge. Machen Sie es sich zur Gewohnheit: <br><br><em>Foto → EXIF reinigen → Posten</em>' },
196
+
197
+ { type: 'diagnostic', variant: 'warning', title: 'Reale Risiken bei fehlender Reinigung', icon: 'mdi:alert-circle', badge: 'Kritische Sicherheit', html: '<strong>Dokumentierte Fälle:</strong><br>- Eltern posten Fotos von Kindern – Täter verfolgten GPS<br>- Reisende Fotografen – Häuser wurden während ihrer Abwesenheit ausgeraubt<br>- Influencer – Wohnorte wurden von obsessiven Fans identifiziert<br><br>Das ist keine Paranoia: Es ist grundlegende digitale Hygiene im Jahr 2026.' },
198
+
199
+ { type: 'glossary', items: [
200
+ {
201
+ term: 'EXIF',
202
+ definition: 'Exchangeable Image File Format. Ein Standard, der technische Metadaten in Bilddateien speichert: GPS, Kameradaten, Belichtungseinstellungen. In ~90 % der digitalen Fotos ohne Absicht des Nutzers vorhanden.'
203
+ },
204
+ {
205
+ term: 'GPS-Koordinaten',
206
+ definition: 'Präziser Breitengrad und Längengrad des exakten Ortes, an dem das Foto aufgenommen wurde. In Kombination mit sozialen Medien ermöglicht dies die physische Verfolgung von Personen.'
207
+ },
208
+ {
209
+ term: 'IPTC',
210
+ definition: 'International Press Telecommunications Council. Lesbare Veröffentlichungs-Metadaten: Urheberrecht, Autor, Schlüsselwörter, Beschreibung. Standard in der professionellen Fotografie.'
211
+ },
212
+ {
213
+ term: 'XMP',
214
+ definition: 'Extensible Metadata Platform. Ein XML-Format, das den Bearbeitungsverlauf in Software wie Lightroom oder Photoshop aufzeichnet. Es kann alle vorgenommenen Änderungen offenlegen.'
215
+ },
216
+ {
217
+ term: 'OSINT',
218
+ definition: 'Open Source Intelligence. Eine Technik zum Sammeln öffentlicher Informationen (Social Media, Metadaten, Register), um Profile von Personen ohne deren Wissen zu erstellen.'
219
+ },
220
+ {
221
+ term: 'Digitale Anonymisierung',
222
+ definition: 'Der Prozess des Entfernens oder Verschleierns identifizierbarer Informationen: Standort, Gerät, Verhaltensmuster. Essenziell für den Online-Datenschutz.'
223
+ }
224
+ ] },
225
+
226
+ { type: 'message', title: 'Ihre Privatsphäre liegt in Ihrer Verantwortung', ariaLabel: 'Informationen über Datenschutz und Datenrechte', html: 'Wir speichern, verarbeiten oder teilen Ihre Bilder nicht. <strong>Sie haben die volle Kontrolle.</strong> Alle Vorgänge finden ausschließlich in Ihrem Browser statt. Wenn Sie diesen Tab schließen, bleiben keine Aufzeichnungen Ihrer Aktivitäten zurück. So schützen Sie Ihre Privatsphäre im Internet: Tools, die Ihre Daten respektieren.' },
227
+
228
+ { type: 'title', text: 'Fazit: Teilen ohne Spuren', level: 3 },
229
+ { type: 'paragraph', html: 'Der Schutz Ihrer digitalen Identität beginnt bei kleinen Details. Das Reinigen Ihrer Fotos vor der Veröffentlichung ist ein <strong>essenzieller habit der digitalen Hygiene</strong> im Jahr 2026. Es schützt nicht nur Ihren Standort: Es schützt Ihre Familie, Ihr Vermögen und Ihre berufliche Privatsphäre. Ein scheinbar harmloses Foto kann mehr über Sie verraten, als Sie sich jemals vorstellen konnten.' }
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: 'de',
263
+ };
264
+
265
+ export const content: ExifCleanerLocaleContent = {
266
+ slug,
267
+ title,
268
+ description,
269
+ ui,
270
+ seo,
271
+ faqTitle: "Häufig gestellte Fragen",
272
+ faq,
273
+ bibliographyTitle: "Referenzen",
274
+ bibliography,
275
+ howTo,
276
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
277
+ };
@@ -51,7 +51,7 @@ const faq: ExifCleanerLocaleContent['faq'] = [
51
51
  const howTo: ExifCleanerLocaleContent['howTo'] = [
52
52
  {
53
53
  name: "Sélectionner les images",
54
- text: "Faites glisser vos photos ou sélectionnez-les depuis votre explorateur de fichiers. Vous pouvez en traiter plusieurs à la fois.",
54
+ text: "Faites glisser vos photos ou sélectionnez les depuis votre explorateur de fichiers. Vous pouvez en traiter plusieurs à la fois.",
55
55
  },
56
56
  {
57
57
  name: "Analyser les données actuelles",
@@ -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 = 'pembersih-metadata-exif-hapus-gps-privasi-foto';
5
+ const title = 'Pembersih Metadata EXIF: Hapus GPS dan Data Tersembunyi dari Foto';
6
+ const description = 'Alat online gratis untuk menghapus metadata EXIF, koordinat GPS, dan spesifikasi kamera dari gambar Anda sebelum dibagikan. 100% pribadi: bekerja tanpa mengunggah foto ke internet.';
7
+
8
+ const ui: ExifCleanerUI = {
9
+ dropTitle: "Seret gambar Anda ke sini",
10
+ dropSubtitle: "Hapus metadata GPS, model kamera, dan pengaturan tersembunyi.",
11
+ dropLocalInfo: "Pemrosesan lokal 100%. Tidak ada yang diunggah ke cloud.",
12
+ selectButton: "Pilih Gambar",
13
+ processingText: "Membersihkan metadata...",
14
+ analysisCompleted: "Analisis Selesai",
15
+ downloadButton: "Unduh Gambar Bersih",
16
+ resetButton: "Bersihkan gambar lain",
17
+ privacyRiskTitle: "RISIKO PRIVASI TERDETEKSI:",
18
+ gpsLabel: "GPS:",
19
+ gpsDetected: "TERDETEKSI",
20
+ gpsNotFound: "TIDAK DITEMUKAN",
21
+ cameraLabel: "KAMERA:",
22
+ softwareLabel: "PERANGKAT LUNAK:",
23
+ dateLabel: "TANGGAL:",
24
+ otherTechnicalDetails: "DETAIL TEKNIS LAINNYA",
25
+ noMetadataFound: "Tidak ditemukan metadata EXIF yang terbaca.",
26
+ alreadyCleanInfo: "Gambar mungkin sudah bersih.",
27
+ previewLabel: "Pratinjau",
28
+ faqTitle: "Pertanyaan yang sering diajukan tentang privasi foto",
29
+ bibliographyTitle: "Sumber daya dan dokumentasi teknis EXIF",
30
+ };
31
+
32
+ const faq: ExifCleanerLocaleContent['faq'] = [
33
+ {
34
+ question: "Apa itu metadata EXIF?",
35
+ answer: "EXIF (Exchangeable Image File Format) adalah informasi tersembunyi yang disimpan kamera atau ponsel Anda di dalam setiap foto. Ini mencakup tanggal yang tepat, model perangkat, pengaturan pengambilan gambar (ISO, aperture), dan yang paling kritis, koordinat GPS tempat foto diambil.",
36
+ },
37
+ {
38
+ question: "Apakah aman menggunakan alat online ini?",
39
+ answer: "Ya, karena pemrosesan dilakukan 100% secara lokal di browser Anda. Foto Anda tidak pernah diunggah ke server mana pun; pembersihan terjadi langsung di memori perangkat Anda, memastikan privasi absolut.",
40
+ },
41
+ {
42
+ question: "Data spesifik apa yang dihapus oleh pembersih ini?",
43
+ answer: "Alat ini menghapus semua tag EXIF (GPS, merek kamera, nomor seri), IPTC (hak cipta, penulis), dan XMP (riwayat pengeditan). Gambar Anda menjadi 'bersih', hanya menyisakan piksel visual.",
44
+ },
45
+ {
46
+ question: "Apakah gambar kehilangan kualitas saat metadata dibersihkan?",
47
+ answer: "Tidak. Kami hanya menghapus 'header' data teknis dari file. Data gambar (piksel) tetap identik, sehingga kualitas visual tidak terpengaruh sama sekali.",
48
+ },
49
+ ];
50
+
51
+ const howTo: ExifCleanerLocaleContent['howTo'] = [
52
+ {
53
+ name: "Pilih gambar",
54
+ text: "Seret foto Anda atau pilih dari file explorer Anda. Anda dapat memproses beberapa foto sekaligus.",
55
+ },
56
+ {
57
+ name: "Analisis data saat ini",
58
+ text: "Alat ini akan menunjukkan kepada Anda informasi sensitif apa yang telah dideteksi (misalnya, 'Koordinat GPS terdeteksi').",
59
+ },
60
+ {
61
+ name: "Proses dan bersihkan",
62
+ text: "Klik tombol bersihkan untuk langsung menghapus semua tag metadata.",
63
+ },
64
+ {
65
+ name: "Unduh foto yang aman",
66
+ text: "Simpan versi baru gambar Anda, sekarang sudah dianonimkan dan siap dibagikan dengan aman di media sosial.",
67
+ },
68
+ ];
69
+
70
+ const bibliography: ExifCleanerLocaleContent['bibliography'] = [
71
+ {
72
+ name: "Exchangeable image file format (EXIF) - Wikipedia",
73
+ url: "https://id.wikipedia.org/wiki/Exchangeable_image_file_format",
74
+ },
75
+ {
76
+ name: "W3C - Metadata dalam Gambar",
77
+ url: "https://www.w3.org/community/image-metadata/",
78
+ },
79
+ ];
80
+
81
+ const seo: ExifCleanerLocaleContent['seo'] = [
82
+ {
83
+ type: 'summary',
84
+ title: 'Pembersih Metadata EXIF: Lindungi Privasi Anda',
85
+ items: [
86
+ 'Hapus koordinat GPS dan lokasi dari foto Anda secara instan',
87
+ 'Hapus model kamera, nomor seri, dan informasi teknis',
88
+ 'Pemrosesan berbasis browser 100% - gambar Anda tidak pernah meninggalkan perangkat Anda',
89
+ 'Mempertahankan kualitas visual - hanya data tersembunyi yang dihapus'
90
+ ]
91
+ },
92
+ { type: 'title', text: 'Panduan Lengkap Privasi dan Metadata EXIF dalam Fotografi Digital', level: 2 },
93
+ { type: 'paragraph', html: 'Pernahkah Anda bertanya-tanya seberapa banyak informasi pribadi yang Anda bagikan saat mengunggah foto ke media sosial? Metadata EXIF seperti <strong>sidik jari yang tidak terlihat</strong> yang dapat mengungkapkan segalanya mulai dari lokasi rumah Anda yang tepat hingga harga peralatan fotografi Anda. Panduan ini menjelaskan cara melindungi privasi Anda secara efektif.' },
94
+
95
+ { type: 'stats', items: [
96
+ { value: '100%', label: 'Privasi - Pemrosesan Lokal', icon: 'mdi:shield-check' },
97
+ { value: '0%', label: 'Data Disimpan di Server', icon: 'mdi:database' },
98
+ { value: 'Instan', label: 'Penghapusan Metadata', icon: 'mdi:lightning-bolt' }
99
+ ], columns: 3 },
100
+
101
+ { type: 'title', text: 'Informasi Apa yang Tersembunyi di Foto Anda?', level: 3 },
102
+ { type: 'paragraph', html: 'Lebih dari 90% foto digital berisi informasi sensitif yang dapat membahayakan keamanan Anda. Berikut adalah semua data yang dapat terungkap:' },
103
+ { type: 'list', items: [
104
+ '<strong>Koordinat GPS:</strong> Garis lintang dan garis bujur yang tepat di mana pengambilan gambar dilakukan (alamat rumah, kantor, tempat yang sering dikunjungi).',
105
+ '<strong>Identifikasi Peralatan:</strong> Merek, model, dan nomor seri kamera atau ponsel cerdas (informasi berharga).',
106
+ '<strong>Pengaturan Teknis:</strong> ISO, aperture (f/), waktu pencahayaan, dan panjang fokus (memungkinkan identifikasi peralatan spesifik Anda).',
107
+ '<strong>Tanggal dan Waktu yang Tepat:</strong> Garis waktu lengkap dari aktivitas harian Anda.',
108
+ '<strong>Riwayat Pengeditan:</strong> Perangkat lunak yang digunakan, perangkat lunak pengeditan, dan tanggal modifikasi terakhir.',
109
+ '<strong>Data Hak Cipta:</strong> Fotografer, hak cipta, dan catatan pribadi.'
110
+ ] },
111
+
112
+ { type: 'title', text: 'Risiko Keamanan Nyata: Kasus Penggunaan', level: 3 },
113
+ { type: 'comparative', items: [
114
+ {
115
+ title: 'Fotografer Profesional',
116
+ description: 'Risiko pencurian peralatan mahal yang diidentifikasi berdasarkan nomor seri',
117
+ icon: 'mdi:camera',
118
+ points: [
119
+ 'Pencuri mencari fotografer dengan peralatan berharga',
120
+ 'GPS mengidentifikasi alamat rumah pemilik',
121
+ 'Nomor seri memudahkan penjualan kembali di dark web'
122
+ ]
123
+ },
124
+ {
125
+ title: 'Orang Tua dan Influencer',
126
+ description: 'Bahaya besar: lokasi real-time anak-anak',
127
+ icon: 'mdi:alert',
128
+ points: [
129
+ 'Predator melacak lokasi menggunakan OSINT',
130
+ 'Predator dapat mengidentifikasi rutinitas harian',
131
+ 'Risiko stalking dan pelacakan fisik'
132
+ ],
133
+ highlight: true
134
+ },
135
+ {
136
+ title: 'Pengguna Media Sosial',
137
+ description: 'Paparan privasi pribadi dan profesional',
138
+ icon: 'mdi:share-variant',
139
+ points: [
140
+ 'Posting dari kantor mengungkapkan lokasi tempat kerja',
141
+ 'Geolokasi memungkinkan menyimpulkan perkiraan gaji',
142
+ 'Data publik memungkinkan pemrofilan yang ditargetkan'
143
+ ]
144
+ },
145
+ {
146
+ title: 'Pelancong dan Nomad',
147
+ description: 'Bahaya pencurian di rumah yang kosong',
148
+ icon: 'mdi:map',
149
+ points: [
150
+ 'GPS yang dipublikasikan menunjukkan rumah kosong selama perjalanan',
151
+ 'Data peralatan menarik perhatian kriminal',
152
+ 'Riwayat perjalanan mengungkapkan jadwal dan pola'
153
+ ]
154
+ }
155
+ ], columns: 2 },
156
+
157
+ { type: 'title', text: 'Cara Kerja Alat Ini', level: 3 },
158
+ { type: 'list', items: [
159
+ '<strong>1. Pilih gambar Anda:</strong> Seret foto atau gunakan pemilih. Anda dapat memproses beberapa foto secara bersamaan.',
160
+ '<strong>2. Analisis otomatis:</strong> Alat ini mendeteksi dan menampilkan semua metadata yang ada (GPS, model kamera, tanggal, dll.).',
161
+ '<strong>3. Pembersihan instan:</strong> Dengan satu klik, alat ini menghapus 100% metadata berbahaya.',
162
+ '<strong>4. Unduhan aman:</strong> Terima gambar yang telah dianonimkan dan siap dibagikan di jejaring tanpa risiko.',
163
+ '<strong>5. Tanpa residu:</strong> Gambar bersih mempertahankan semua kualitas visual aslinya.'
164
+ ], icon: 'mdi:check' },
165
+
166
+ { type: 'card', title: 'Teknologi Privasi', icon: 'mdi:shield-check', html: 'Alat ini menggunakan <strong>API Canvas browser</strong> untuk membuat salinan gambar yang bersih piksel demi piksel, memastikan bahwa:<br><br>- Tidak ada data yang dikirim ke server<br>- Gambar Anda tidak pernah meninggalkan perangkat Anda<br>- Pemrosesan anonim dan aman 100%<br>- Anda dapat menggunakannya bahkan tanpa koneksi internet (setelah pemuatan awal)' },
167
+
168
+ { type: 'title', text: 'Data Spesifik Apa yang Dihapus?', level: 3 },
169
+ { type: 'table', headers: ['Jenis Metadata', 'Contoh', 'Risiko'], rows: [
170
+ ['EXIF (Exchangeable)', 'GPS, ISO, Aperture, Kecepatan Shutter, Model Kamera', 'KRITIS'],
171
+ ['IPTC (Publikasi)', 'Hak Cipta, Penulis, Kata Kunci, Lokasi Adegan', 'TINGGI'],
172
+ ['XMP (XML)', 'Riwayat Pengeditan, Perangkat Lunak yang Digunakan, Editan yang Dilakukan', 'SEDANG'],
173
+ ['Data File Dasar', 'Tanggal Pembuatan, Waktu yang Tepat, Perangkat', 'TINGGI']
174
+ ] },
175
+
176
+ { type: 'proscons', items: [
177
+ {
178
+ pro: 'Privasi Total - pemrosesan berbasis browser 100%',
179
+ con: 'Memerlukan browser modern dengan dukungan JavaScript'
180
+ },
181
+ {
182
+ pro: 'Instan - membersihkan foto membutuhkan waktu kurang dari 1 detik',
183
+ con: 'Pemrosesan foto besar mungkin lambat pada perangkat lama'
184
+ },
185
+ {
186
+ pro: 'Tanpa Kehilangan Kualitas - hanya menghapus data teknis, bukan piksel',
187
+ con: 'Tidak mengedit gambar (crop, rotasi, dll.)'
188
+ },
189
+ {
190
+ pro: 'Sepenuhnya Gratis tanpa Batasan - proses foto tanpa batas',
191
+ con: 'Tidak ada dukungan premium atau penyimpanan cloud'
192
+ }
193
+ ], proTitle: 'Keunggulan Utama', conTitle: 'Batasan' },
194
+
195
+ { type: 'tip', title: 'Tips Keamanan Digital', html: '<strong>Bersihkan foto Anda SEBELUM memposting</strong> di jejaring sosial mana pun. Meskipun Anda menghapus postingan, metadata mungkin telah diindeks oleh mesin pencarian atau arsip. Pencegahan lebih baik daripada mengobati. Jadikan ini kebiasaan: <br><br><em>Foto → Bersihkan EXIF → Posting</em>' },
196
+
197
+ { type: 'diagnostic', variant: 'warning', title: 'Risiko Nyata dari Tidak Membersihkan', icon: 'mdi:alert-circle', badge: 'Keamanan Kritis', html: '<strong>Kasus yang didokumentasikan:</strong><br>- Orang tua memposting foto anak - predator melacak GPS<br>- Fotografer yang sedang bepergian - rumah dirampok saat mereka pergi<br>- Influencer - lokasi tempat tinggal diidentifikasi oleh penggemar obsesif<br><br>Ini bukan paranoia: ini adalah kebersihan digital dasar di tahun 2026.' },
198
+
199
+ { type: 'glossary', items: [
200
+ {
201
+ term: 'EXIF',
202
+ definition: 'Exchangeable Image File Format. Standar yang menyimpan metadata teknis dalam file gambar: GPS, data kamera, pengaturan pencahayaan. Ada di ~90% foto digital tanpa niat pengguna.'
203
+ },
204
+ {
205
+ term: 'Koordinat GPS',
206
+ definition: 'Garis lintang dan garis bujur yang tepat dari lokasi persis di mana foto diambil. Dikombinasikan dengan media sosial, ini memungkinkan pelacakan fisik orang.'
207
+ },
208
+ {
209
+ term: 'IPTC',
210
+ definition: 'International Press Telecommunications Council. Metadata publikasi yang terbaca: hak cipta, penulis, kata kunci, deskripsi. Standar dalam fotografi profesional.'
211
+ },
212
+ {
213
+ term: 'XMP',
214
+ definition: 'Extensible Metadata Platform. Format XML yang merekam riwayat pengeditan dalam perangkat lunak seperti Lightroom atau Photoshop. Ini dapat mengungkapkan semua editan yang dilakukan.'
215
+ },
216
+ {
217
+ term: 'OSINT',
218
+ definition: 'Open Source Intelligence. Teknik mengumpulkan informasi publik (media sosial, metadata, catatan) untuk memprofilkan orang tanpa sepengetahuan mereka.'
219
+ },
220
+ {
221
+ term: 'Anonimisasi Digital',
222
+ definition: 'Proses menghapus atau mengaburkan informasi yang dapat diidentifikasi: lokasi, perangkat, pola perilaku. Penting untuk privasi online.'
223
+ }
224
+ ] },
225
+
226
+ { type: 'message', title: 'Privasi Anda Adalah Tanggung Jawab Anda', ariaLabel: 'Informasi tentang privasi dan hak data', html: 'Kami tidak menyimpan, memproses, atau membagikan gambar Anda. <strong>Anda memiliki kendali penuh.</strong> Semua operasi terjadi secara eksklusif di browser Anda. Saat Anda menutup tab ini, tidak ada catatan aktivitas Anda yang tersisa. Inilah cara melindungi privasi Anda di internet: alat yang menghargai data Anda.' },
227
+
228
+ { type: 'title', text: 'Kesimpulan: Berbagi Tanpa Jejak', level: 3 },
229
+ { type: 'paragraph', html: 'Melindungi identitas digital Anda dimulai dengan detail kecil. Membersihkan foto Anda sebelum mempublikasikannya adalah <strong>kebiasaan kebersihan digital yang penting</strong> di tahun 2026. Ini tidak hanya melindungi lokasi Anda: ini melindungi keluarga, aset, dan privasi profesional Anda. Foto yang tampak lugu dapat mengungkapkan lebih banyak tentang Anda daripada yang pernah Anda bayangkan.' }
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: 'id',
263
+ };
264
+
265
+ export const content: ExifCleanerLocaleContent = {
266
+ slug,
267
+ title,
268
+ description,
269
+ ui,
270
+ seo,
271
+ faqTitle: "Pertanyaan yang Sering Diajukan",
272
+ faq,
273
+ bibliographyTitle: "Referensi",
274
+ bibliography,
275
+ howTo,
276
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
277
+ };