@jjlmoya/utils-audiovisual 1.7.0 → 1.8.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 (151) 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/tool/chromaticLens/i18n/de.ts +246 -0
  17. package/src/tool/chromaticLens/i18n/id.ts +246 -0
  18. package/src/tool/chromaticLens/i18n/it.ts +246 -0
  19. package/src/tool/chromaticLens/i18n/ja.ts +246 -0
  20. package/src/tool/chromaticLens/i18n/ko.ts +246 -0
  21. package/src/tool/chromaticLens/i18n/nl.ts +246 -0
  22. package/src/tool/chromaticLens/i18n/pl.ts +246 -0
  23. package/src/tool/chromaticLens/i18n/pt.ts +246 -0
  24. package/src/tool/chromaticLens/i18n/ru.ts +246 -0
  25. package/src/tool/chromaticLens/i18n/sv.ts +246 -0
  26. package/src/tool/chromaticLens/i18n/tr.ts +246 -0
  27. package/src/tool/chromaticLens/i18n/zh.ts +246 -0
  28. package/src/tool/chromaticLens/index.ts +15 -7
  29. package/src/tool/collageMaker/i18n/de.ts +233 -0
  30. package/src/tool/collageMaker/i18n/id.ts +233 -0
  31. package/src/tool/collageMaker/i18n/it.ts +233 -0
  32. package/src/tool/collageMaker/i18n/ja.ts +233 -0
  33. package/src/tool/collageMaker/i18n/ko.ts +233 -0
  34. package/src/tool/collageMaker/i18n/nl.ts +233 -0
  35. package/src/tool/collageMaker/i18n/pl.ts +233 -0
  36. package/src/tool/collageMaker/i18n/pt.ts +233 -0
  37. package/src/tool/collageMaker/i18n/ru.ts +233 -0
  38. package/src/tool/collageMaker/i18n/sv.ts +233 -0
  39. package/src/tool/collageMaker/i18n/tr.ts +233 -0
  40. package/src/tool/collageMaker/i18n/zh.ts +233 -0
  41. package/src/tool/collageMaker/index.ts +15 -6
  42. package/src/tool/exifCleaner/i18n/de.ts +277 -0
  43. package/src/tool/exifCleaner/i18n/fr.ts +1 -1
  44. package/src/tool/exifCleaner/i18n/id.ts +277 -0
  45. package/src/tool/exifCleaner/i18n/it.ts +277 -0
  46. package/src/tool/exifCleaner/i18n/ja.ts +277 -0
  47. package/src/tool/exifCleaner/i18n/ko.ts +277 -0
  48. package/src/tool/exifCleaner/i18n/nl.ts +277 -0
  49. package/src/tool/exifCleaner/i18n/pl.ts +277 -0
  50. package/src/tool/exifCleaner/i18n/pt.ts +277 -0
  51. package/src/tool/exifCleaner/i18n/ru.ts +277 -0
  52. package/src/tool/exifCleaner/i18n/sv.ts +277 -0
  53. package/src/tool/exifCleaner/i18n/tr.ts +277 -0
  54. package/src/tool/exifCleaner/i18n/zh.ts +277 -0
  55. package/src/tool/exifCleaner/index.ts +16 -8
  56. package/src/tool/imageCompressor/i18n/de.ts +242 -0
  57. package/src/tool/imageCompressor/i18n/en.ts +1 -1
  58. package/src/tool/imageCompressor/i18n/es.ts +1 -1
  59. package/src/tool/imageCompressor/i18n/id.ts +242 -0
  60. package/src/tool/imageCompressor/i18n/it.ts +242 -0
  61. package/src/tool/imageCompressor/i18n/ja.ts +242 -0
  62. package/src/tool/imageCompressor/i18n/ko.ts +242 -0
  63. package/src/tool/imageCompressor/i18n/nl.ts +242 -0
  64. package/src/tool/imageCompressor/i18n/pl.ts +242 -0
  65. package/src/tool/imageCompressor/i18n/pt.ts +242 -0
  66. package/src/tool/imageCompressor/i18n/ru.ts +242 -0
  67. package/src/tool/imageCompressor/i18n/sv.ts +242 -0
  68. package/src/tool/imageCompressor/i18n/tr.ts +242 -0
  69. package/src/tool/imageCompressor/i18n/zh.ts +244 -0
  70. package/src/tool/imageCompressor/index.ts +15 -7
  71. package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
  72. package/src/tool/printQualityCalculator/i18n/fr.ts +1 -1
  73. package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
  74. package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
  75. package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
  76. package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
  77. package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
  78. package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
  79. package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
  80. package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
  81. package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
  82. package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
  83. package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
  84. package/src/tool/printQualityCalculator/index.ts +15 -7
  85. package/src/tool/privacyBlur/i18n/de.ts +238 -0
  86. package/src/tool/privacyBlur/i18n/id.ts +238 -0
  87. package/src/tool/privacyBlur/i18n/it.ts +238 -0
  88. package/src/tool/privacyBlur/i18n/ja.ts +238 -0
  89. package/src/tool/privacyBlur/i18n/ko.ts +238 -0
  90. package/src/tool/privacyBlur/i18n/nl.ts +238 -0
  91. package/src/tool/privacyBlur/i18n/pl.ts +238 -0
  92. package/src/tool/privacyBlur/i18n/pt.ts +238 -0
  93. package/src/tool/privacyBlur/i18n/ru.ts +238 -0
  94. package/src/tool/privacyBlur/i18n/sv.ts +238 -0
  95. package/src/tool/privacyBlur/i18n/tr.ts +238 -0
  96. package/src/tool/privacyBlur/i18n/zh.ts +238 -0
  97. package/src/tool/privacyBlur/index.ts +15 -7
  98. package/src/tool/subtitleSync/i18n/de.ts +241 -0
  99. package/src/tool/subtitleSync/i18n/fr.ts +5 -5
  100. package/src/tool/subtitleSync/i18n/id.ts +241 -0
  101. package/src/tool/subtitleSync/i18n/it.ts +241 -0
  102. package/src/tool/subtitleSync/i18n/ja.ts +241 -0
  103. package/src/tool/subtitleSync/i18n/ko.ts +241 -0
  104. package/src/tool/subtitleSync/i18n/nl.ts +241 -0
  105. package/src/tool/subtitleSync/i18n/pl.ts +241 -0
  106. package/src/tool/subtitleSync/i18n/pt.ts +241 -0
  107. package/src/tool/subtitleSync/i18n/ru.ts +241 -0
  108. package/src/tool/subtitleSync/i18n/sv.ts +241 -0
  109. package/src/tool/subtitleSync/i18n/tr.ts +241 -0
  110. package/src/tool/subtitleSync/i18n/zh.ts +241 -0
  111. package/src/tool/subtitleSync/index.ts +15 -7
  112. package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
  113. package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
  114. package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
  115. package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
  116. package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
  117. package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
  118. package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
  119. package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
  120. package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
  121. package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
  122. package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
  123. package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
  124. package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
  125. package/src/tool/timelapseCalculator/index.ts +16 -8
  126. package/src/tool/tvDistance/i18n/de.ts +223 -0
  127. package/src/tool/tvDistance/i18n/id.ts +223 -0
  128. package/src/tool/tvDistance/i18n/it.ts +223 -0
  129. package/src/tool/tvDistance/i18n/ja.ts +223 -0
  130. package/src/tool/tvDistance/i18n/ko.ts +223 -0
  131. package/src/tool/tvDistance/i18n/nl.ts +223 -0
  132. package/src/tool/tvDistance/i18n/pl.ts +223 -0
  133. package/src/tool/tvDistance/i18n/pt.ts +223 -0
  134. package/src/tool/tvDistance/i18n/ru.ts +223 -0
  135. package/src/tool/tvDistance/i18n/sv.ts +223 -0
  136. package/src/tool/tvDistance/i18n/tr.ts +223 -0
  137. package/src/tool/tvDistance/i18n/zh.ts +223 -0
  138. package/src/tool/tvDistance/index.ts +15 -7
  139. package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
  140. package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
  141. package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
  142. package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
  143. package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
  144. package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
  145. package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
  146. package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
  147. package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
  148. package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
  149. package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
  150. package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
  151. package/src/tool/videoFrameExtractor/index.ts +16 -8
@@ -0,0 +1,238 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { PrivacyBlurUI, PrivacyBlurLocaleContent } from '../index';
3
+
4
+ const slug = 'online-privatsphaere-editor-gesichter-verpixeln-unscharf-machen';
5
+ const title = 'Online Privatsphäre Editor: Gesichter in Fotos verpixeln und verbergen';
6
+ const description = 'Schützen Sie Ihre Identität, indem Sie sensible Bereiche Ihrer Fotos zensieren. Verpixeln Sie Gesichter, machen Sie Dokumente unscharf oder decken Sie vertrauliche Informationen zu – 100 % lokal.';
7
+
8
+ const ui: PrivacyBlurUI = {
9
+ toolPixel: "Verpixeln",
10
+ toolBlur: "Unschärfe",
11
+ toolSolid: "Füllung",
12
+ intensityLabel: "Intensität",
13
+ undoButton: "Rückgängig",
14
+ downloadButton: "Speichern",
15
+ dropTitle: "Privatsphäre-Editor",
16
+ dropSubtitle: "Ziehen Sie Ihr Bild hierher oder klicken Sie zum Starten",
17
+ privacySecureLabel: "100 % Lokal",
18
+ offlineLabel: "Offline",
19
+ autoDetectFaces: "Auto-Erkennung",
20
+ loadingModels: "Modelle werden geladen...",
21
+ noFacesDetected: "Keine Gesichter automatisch erkannt.",
22
+ faqTitle: "Häufig gestellte Fragen",
23
+ bibliographyTitle: "Referenzen"
24
+ };
25
+
26
+ const faq: PrivacyBlurLocaleContent['faq'] = [
27
+ {
28
+ question: "Werden meine Fotos auf einen Server hochgeladen?",
29
+ answer: "Nein. Der Privatsphäre-Editor arbeitet vollständig in Ihrem Browser. Die Pixel werden lokal geändert, und es wird nichts von Ihrem Gerät nach außen gesendet.",
30
+ },
31
+ {
32
+ question: "Wie funktioniert die automatische Gesichtserkennung?",
33
+ answer: "Wir verwenden ein leichtgewichtiges neuronales Netzwerk (TinyFaceDetector), das in Ihrem Browser läuft, um Gesichtsmerkmale zu identifizieren, ohne dass eine externe Verbindung erforderlich ist.",
34
+ },
35
+ ];
36
+
37
+ const howTo: PrivacyBlurLocaleContent['howTo'] = [
38
+ {
39
+ name: "Foto hochladen",
40
+ text: "Ziehen Sie das Bild, das sensible Informationen enthält, die Sie verbergen möchten, in den Editor oder wählen Sie es aus.",
41
+ },
42
+ {
43
+ name: "Werkzeug wählen",
44
+ text: "Wählen Sie zwischen Verpixeln, Unschärfe oder solider Füllung, je nachdem, welches Maß an Privatsphäre Sie benötigen.",
45
+ },
46
+ {
47
+ name: "Bereich markieren",
48
+ text: "Klicken und ziehen Sie über den Bereich, den Sie schützen möchten (Gesichter, Nummernschilder, Namen usw.).",
49
+ },
50
+ {
51
+ name: "Ergebnis speichern",
52
+ text: "Laden Sie das bearbeitete Bild herunter, in der Gewissheit, dass die ursprünglichen Daten unzugänglich sind.",
53
+ },
54
+ ];
55
+
56
+ const bibliography: PrivacyBlurLocaleContent['bibliography'] = [
57
+ {
58
+ name: "Privacy by Design (PbD) - AGPD",
59
+ url: "https://www.aepd.es/es/guias-y-herramientas/guias/guia-de-privacidad-desde-el-diseno",
60
+ },
61
+ ];
62
+
63
+ const seo: PrivacyBlurLocaleContent['seo'] = [
64
+ {
65
+ type: 'summary',
66
+ title: 'Privatsphäre Editor: Verpixeln, Unschärfe und Verbergen',
67
+ items: [
68
+ 'Drei Bearbeitungswerkzeuge: Verpixeln, Unschärfe, Solide Füllung',
69
+ 'Automatische Gesichtserkennung mit KI (TinyFaceDetector)',
70
+ '100 % lokale Verarbeitung – Ihre Fotos verlassen nie den Browser',
71
+ 'Keine Wasserzeichen, keine Limits, völlig kostenlos'
72
+ ]
73
+ },
74
+ { type: 'title', text: 'Digitale Privatsphäre: So schützen Sie Ihre visuellen Daten', level: 2 },
75
+ { type: 'paragraph', html: 'In der Ära der sozialen Medien kann das unkontrollierte Teilen von Fotos sensible persönliche Daten preisgeben. Unser Werkzeug ermöglicht es Ihnen, kritische Informationen (Gesichter, Nummernschilder, Namen, Adressen) zu verbergen, bevor Sie sie ins Internet hochladen, und sicherzustellen, dass Ihre Privatsphäre unter Ihrer vollen Kontrolle bleibt.' },
76
+
77
+ { type: 'stats', items: [
78
+ { value: '3', label: 'Verbergungsmethoden', icon: 'mdi:tools' },
79
+ { value: '100 %', label: 'Lokale Privatsphäre', icon: 'mdi:shield-check' },
80
+ { value: 'KI', label: 'Gesichtserkennung', icon: 'mdi:brain' }
81
+ ], columns: 3 },
82
+
83
+ { type: 'title', text: 'Drei Verbergungsmethoden erklärt', level: 3 },
84
+ { type: 'comparative', items: [
85
+ {
86
+ title: 'Verpixeln',
87
+ description: 'Unterteilt den Bereich in Quadrate, Unkenntlichmachung garantiert',
88
+ icon: 'mdi:blur',
89
+ points: [
90
+ 'Maximale, irreversible Verschleierung',
91
+ 'Sicherer gegen Gesichtserkennungssoftware',
92
+ 'Sichtbar, es ist klar, dass etwas verborgen wurde',
93
+ 'Ideal für Gesichter in öffentlichen Fotos'
94
+ ]
95
+ },
96
+ {
97
+ title: 'Unschärfe (Blur)',
98
+ description: 'Gaußscher Weichzeichner – natürlicheres Aussehen',
99
+ icon: 'mdi:blur-off',
100
+ points: [
101
+ 'Eleganteres visuelles Erscheinungsbild',
102
+ 'Erhält die farbliche Kohärenz',
103
+ 'Mathematisch theoretisch umkehrbar',
104
+ 'Ideal für weniger sensible Informationen'
105
+ ],
106
+ highlight: true
107
+ },
108
+ {
109
+ title: 'Solide Füllung',
110
+ description: 'Undurchsichtiger Farbblock – maximale Privatsphäre',
111
+ icon: 'mdi:rectangle',
112
+ points: [
113
+ 'Deutliches, offensichtliches Verbergen',
114
+ 'Maximale rechtliche Sicherheit/Privatsphäre',
115
+ 'Verändert die visuelle Komposition',
116
+ 'Ideal für Dokumente und hochsensible Daten'
117
+ ]
118
+ }
119
+ ], columns: 3 },
120
+
121
+ { type: 'title', text: 'Automatische Gesichtserkennung mit KI', level: 3 },
122
+ { type: 'paragraph', html: 'Unser Werkzeug verwendet TinyFaceDetector, ein kompaktes neuronales Netzwerk, das direkt in Ihrem Browser läuft, um Gesichter automatisch zu identifizieren:' },
123
+ { type: 'list', items: [
124
+ '<strong>100 % Lokal:</strong> Das KI-Modell läuft auf Ihrer Grafikkarte/Prozessor, nicht auf Remote-Servern.',
125
+ '<strong>Kein Internet nötig:</strong> Nach dem ersten Laden funktioniert es komplett offline.',
126
+ '<strong>Privatsphäre garantiert:</strong> Niemand sieht die Gesichter: weder Google noch OpenAI oder wir.',
127
+ '<strong>Automatischer Ein-Klick:</strong> Erkennt Gesichter und lässt Sie diese mit einem Klick verbergen.'
128
+ ], icon: 'mdi:check' },
129
+
130
+ { type: 'card', title: 'Privacy by Design', html: 'Durch die Verarbeitung der Bilder mit der lokalen Grafikkarte und dem Prozessor Ihres Browsers garantieren wir, dass die Originalfotos niemals Ihr Gerät verlassen. Selbst wenn Sie Ihre Meinung ändern, wurde nichts übertragen. Dies ist der höchste Standard für digitale Privatsphäre.' },
131
+
132
+ { type: 'title', text: 'Anwendungsfälle für Privatsphäre', level: 3 },
133
+ { type: 'table', headers: ['Sensible Informationen', 'Empfohlene Methode', 'Dringlichkeit'], rows: [
134
+ ['Gesichter von Personen', 'Verpixeln oder Unschärfe', 'Kritisch'],
135
+ ['Kfz-Kennzeichen', 'Verpixeln (irreversibel)', 'Kritisch'],
136
+ ['Ausweisdokumente', 'Solide Füllung oder Verpixeln', 'Kritisch'],
137
+ ['Namen/Adressen', 'Solide Füllung oder Verpixeln', 'Hoch'],
138
+ ['Telefonnummern', 'Verpixeln oder Füllung', 'Hoch'],
139
+ ['Medizinische Informationen', 'Solide Füllung', 'Kritisch'],
140
+ ['Sichtbare WLAN-Signale', 'Verpixeln', 'Mittel']
141
+ ] },
142
+
143
+ { type: 'proscons', items: [
144
+ {
145
+ pro: 'Vollständige Privatsphäre: 100 % lokale Verarbeitung, keine Server, keine Speicherung',
146
+ con: 'Erfordert modernen Browser mit Canvas- und WebGL-Unterstützung'
147
+ },
148
+ {
149
+ pro: 'Automatische Gesichtserkennung spart Zeit bei der manuellen Arbeit',
150
+ con: 'KI ist nicht perfekt – Profilansichten oder Teilgesichter werden evtl. nicht erkannt'
151
+ },
152
+ {
153
+ pro: 'Drei Methoden erlauben Wahl zwischen Sicherheit und Ästhetik',
154
+ con: 'Keine fortgeschrittenen Optionen (Smart Warp, inhaltsbasiertes Füllen)'
155
+ },
156
+ {
157
+ pro: 'Völlig kostenlos, keine Werbung, keine Limits',
158
+ con: 'Kein Ersatz für professionelle Software wie Photoshop'
159
+ }
160
+ ], proTitle: 'Vorteile', conTitle: 'Einschränkungen' },
161
+
162
+ { type: 'diagnostic', variant: 'warning', title: 'Warnung: Unschärfe ist NICHT 100 % sicher', icon: 'mdi:alert', badge: 'Sicherheit', html: 'Gaußsche Unschärfe ist durch hochentwickelte inverse Algorithmen mathematisch umkehrbar. Wenn Informationen KRITISCH sind (relevante Dokumente, Identität), verwenden Sie <strong>Verpixeln oder solide Füllung</strong>. Unschärfe sieht ästhetisch besser aus, ist aber weniger sicher.' },
163
+
164
+ { type: 'glossary', items: [
165
+ {
166
+ term: 'Verpixelung',
167
+ definition: 'Reduzierung der Auflösung durch Unterteilung des Bereichs in einfarbige Blöcke. Irreversibel. Maximaler Schutz gegen KI-Gesichtserkennung.'
168
+ },
169
+ {
170
+ term: 'Gaußsche Unschärfe',
171
+ definition: 'Mathematische Glättung basierend auf einer Normalverteilung. Theoretisch durch Dekonvolution umkehrbar, in der Praxis jedoch sehr schwierig.'
172
+ },
173
+ {
174
+ term: 'Solide Füllung',
175
+ definition: 'Undurchsichtiger Block einer einheitlichen Farbe. Maximale Sicherheit, maximaler rechtlicher Schutz, weniger elegant.'
176
+ },
177
+ {
178
+ term: 'TinyFaceDetector',
179
+ definition: 'Leichtgewichtiges Convolutional Neural Network (CNN) zur Gesichtserkennung. Läuft lokal im Browser ohne externen Server.'
180
+ },
181
+ {
182
+ term: 'Privacy by Design (PbD)',
183
+ definition: 'Ansatz, bei dem Privatsphäre von Beginn an in das Systemdesign integriert wird. Unser lokaler Ansatz ist Privacy by Design.'
184
+ }
185
+ ] },
186
+
187
+ { type: 'message', title: 'Privatsphäre unter Ihrer Kontrolle', ariaLabel: 'Informationen zum Schutz der Privatsphäre', html: 'Wir speichern oder verarbeiten Ihre Fotos nicht auf Remote-Servern. Es gibt keine Tracking-Cookies. Keine Bearbeitungshistorien. Wir wissen nicht, was Sie verbergen, weil wir Ihre Bilder nie sehen. Volle Kontrolle, volle Privatsphäre, volle Freiheit.' },
188
+
189
+ { type: 'title', text: 'Sicheres Teilen in sozialen Netzwerken', level: 3 },
190
+ { type: 'paragraph', html: 'Bevor Sie ein Foto im Internet posten, fragen Sie sich: Gibt es Informationen, die ich lieber nicht öffentlich hätte? Gesichter von Kindern, Kennzeichen, Adressen, Dokumentennummern. Eine 2-minütige Sitzung im Privatsphäre-Editor verhindert jahrelange Probleme.' }
191
+ ];
192
+
193
+ const faqSchema: WithContext<FAQPage> = {
194
+ '@context': 'https://schema.org',
195
+ '@type': 'FAQPage',
196
+ mainEntity: faq.map((item) => ({
197
+ '@type': 'Question',
198
+ name: item.question,
199
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
200
+ })),
201
+ };
202
+
203
+ const howToSchema: WithContext<HowTo> = {
204
+ '@context': 'https://schema.org',
205
+ '@type': 'HowTo',
206
+ name: title,
207
+ description,
208
+ step: howTo.map((step) => ({
209
+ '@type': 'HowToStep',
210
+ name: step.name,
211
+ text: step.text,
212
+ })),
213
+ };
214
+
215
+ const appSchema: WithContext<SoftwareApplication> = {
216
+ '@context': 'https://schema.org',
217
+ '@type': 'SoftwareApplication',
218
+ name: title,
219
+ description,
220
+ applicationCategory: 'UtilitiesApplication',
221
+ operatingSystem: 'Web',
222
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
223
+ inLanguage: 'de',
224
+ };
225
+
226
+ export const content: PrivacyBlurLocaleContent = {
227
+ slug,
228
+ title,
229
+ description,
230
+ ui,
231
+ seo,
232
+ faqTitle: "Häufig gestellte Fragen",
233
+ faq,
234
+ bibliographyTitle: "Referenzen",
235
+ bibliography,
236
+ howTo,
237
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
238
+ };
@@ -0,0 +1,238 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { PrivacyBlurUI, PrivacyBlurLocaleContent } from '../index';
3
+
4
+ const slug = 'editor-privasi-online-pikselkan-kaburkan-wajah-foto';
5
+ const title = 'Editor Privasi Online: Pikselkan dan sembunyikan wajah dalam foto';
6
+ const description = 'Lindungi identitas Anda dengan menyensor area sensitif pada foto Anda. Pikselkan wajah, kaburkan dokumen, atau tutup informasi pribadi 100% secara lokal.';
7
+
8
+ const ui: PrivacyBlurUI = {
9
+ toolPixel: "Pikselkan",
10
+ toolBlur: "Kaburkan",
11
+ toolSolid: "Solid",
12
+ intensityLabel: "Intensitas",
13
+ undoButton: "Urungkan",
14
+ downloadButton: "Simpan",
15
+ dropTitle: "Editor Privasi",
16
+ dropSubtitle: "Seret gambar Anda ke sini atau klik untuk memulai",
17
+ privacySecureLabel: "100% Lokal",
18
+ offlineLabel: "Offline",
19
+ autoDetectFaces: "Deteksi Otomatis",
20
+ loadingModels: "Memuat model...",
21
+ noFacesDetected: "Tidak ada wajah yang terdeteksi otomatis.",
22
+ faqTitle: "Pertanyaan yang Sering Diajukan",
23
+ bibliographyTitle: "Referensi"
24
+ };
25
+
26
+ const faq: PrivacyBlurLocaleContent['faq'] = [
27
+ {
28
+ question: "Apakah foto saya diunggah ke server mana pun?",
29
+ answer: "Tidak. Editor privasi bekerja sepenuhnya di browser Anda. Piksel dimodifikasi secara lokal dan tidak ada yang dikirim ke luar perangkat Anda.",
30
+ },
31
+ {
32
+ question: "Bagaimana cara kerja deteksi wajah otomatis?",
33
+ answer: "Kami menggunakan jaringan saraf ringan (TinyFaceDetector) yang berjalan di browser Anda untuk mengidentifikasi fitur wajah tanpa memerlukan koneksi eksternal.",
34
+ },
35
+ ];
36
+
37
+ const howTo: PrivacyBlurLocaleContent['howTo'] = [
38
+ {
39
+ name: "Unggah foto Anda",
40
+ text: "Seret atau pilih gambar yang berisi informasi sensitif yang ingin Anda sembunyikan.",
41
+ },
42
+ {
43
+ name: "Pilih alat",
44
+ text: "Pilih antara pikselkan, kaburkan, atau penutup solid tergantung pada tingkat privasi yang Anda butuhkan.",
45
+ },
46
+ {
47
+ name: "Tandai area",
48
+ text: "Klik dan seret di atas zona yang ingin Anda lindungi (wajah, plat nomor, nama, dll.).",
49
+ },
50
+ {
51
+ name: "Simpan hasilnya",
52
+ text: "Unduh gambar yang diproses dengan jaminan bahwa data asli tidak dapat diakses.",
53
+ },
54
+ ];
55
+
56
+ const bibliography: PrivacyBlurLocaleContent['bibliography'] = [
57
+ {
58
+ name: "Privacy by Design (PbD) - AGPD",
59
+ url: "https://www.aepd.es/es/guias-y-herramientas/guias/guia-de-privacidad-desde-el-diseno",
60
+ },
61
+ ];
62
+
63
+ const seo: PrivacyBlurLocaleContent['seo'] = [
64
+ {
65
+ type: 'summary',
66
+ title: 'Editor Privasi: Pikselkan, Kaburkan, dan Sembunyikan',
67
+ items: [
68
+ 'Tiga alat pengeditan: Pikselkan, Kaburkan, Penutup Solid',
69
+ 'Deteksi wajah otomatis dengan AI (TinyFaceDetector)',
70
+ 'Pemrosesan lokal 100% - foto Anda tidak pernah meninggalkan browser',
71
+ 'Tanpa tanda air, tanpa batas, sepenuhnya gratis'
72
+ ]
73
+ },
74
+ { type: 'title', text: 'Privasi Digital: Cara Melindungi Data Visual Anda', level: 2 },
75
+ { type: 'paragraph', html: 'Di era media sosial, berbagi foto tanpa kontrol dapat mengungkap data pribadi yang sensitif. Alat kami memungkinkan Anda menyembunyikan informasi penting (wajah, plat nomor, nama, alamat) sebelum mengunggahnya ke Internet, memastikan privasi Anda tetap di bawah kendali penuh Anda.' },
76
+
77
+ { type: 'stats', items: [
78
+ { value: '3', label: 'Metode Penyembunyian', icon: 'mdi:tools' },
79
+ { value: '100%', label: 'Privasi Lokal', icon: 'mdi:shield-check' },
80
+ { value: 'AI', label: 'Deteksi Wajah', icon: 'mdi:brain' }
81
+ ], columns: 3 },
82
+
83
+ { type: 'title', text: 'Penjelasan Tiga Metode Penyembunyian', level: 3 },
84
+ { type: 'comparative', items: [
85
+ {
86
+ title: 'Pikselkan',
87
+ description: 'Membagi area menjadi kotak-kotak, mustahil untuk dikenali',
88
+ icon: 'mdi:blur',
89
+ points: [
90
+ 'Obfuskasi ireversibel maksimum',
91
+ 'Lebih aman terhadap pengenalan wajah',
92
+ 'Terlihat, jelas bahwa sesuatu disembunyikan',
93
+ 'Ideal: wajah dalam foto publik'
94
+ ]
95
+ },
96
+ {
97
+ title: 'Kaburkan (Blur)',
98
+ description: 'Penghalusan Gaussian - tampilan lebih alami',
99
+ icon: 'mdi:blur-off',
100
+ points: [
101
+ 'Tampilan visual lebih elegan',
102
+ 'Mempertahankan beberapa koherensi nada',
103
+ 'Secara matematis dapat dibalik (secara teoritis)',
104
+ 'Ideal: informasi yang kurang sensitif'
105
+ ],
106
+ highlight: true
107
+ },
108
+ {
109
+ title: 'Penutup Solid',
110
+ description: 'Blok warna buram - privasi maksimum',
111
+ icon: 'mdi:rectangle',
112
+ points: [
113
+ 'Penyembunyian yang terlihat dan jelas',
114
+ 'Keamanan/privasi hukum maksimum',
115
+ 'Mengubah komposisi visual',
116
+ 'Ideal: dokumen, data sensitif'
117
+ ]
118
+ }
119
+ ], columns: 3 },
120
+
121
+ { type: 'title', text: 'Deteksi Wajah Otomatis dengan AI', level: 3 },
122
+ { type: 'paragraph', html: 'Alat kami menggunakan TinyFaceDetector, jaringan saraf kompak yang berjalan langsung di browser Anda untuk mengidentifikasi wajah secara otomatis:' },
123
+ { type: 'list', items: [
124
+ '<strong>100% Lokal:</strong> Model AI berjalan di GPU/CPU Anda, bukan di server jarak jauh.',
125
+ '<strong>Tanpa Internet:</strong> Setelah unduhan awal, alat ini bekerja sepenuhnya offline.',
126
+ '<strong>Privasi Terjamin:</strong> Tidak ada yang melihat wajah: baik Google, OpenAI, maupun kami.',
127
+ '<strong>Satu-Klik Otomatis:</strong> Mendeteksi wajah dan memungkinkan Anda memilih untuk menyembunyikannya dengan satu klik.'
128
+ ], icon: 'mdi:check' },
129
+
130
+ { type: 'card', title: 'Privacy by Design', html: 'Dengan memproses gambar menggunakan GPU dan CPU lokal browser Anda, kami menjamin bahwa foto asli tidak pernah meninggalkan perangkat Anda. Bahkan jika Anda berubah pikiran, tidak ada yang dikirimkan. Ini adalah standar maksimum privasi digital.' },
131
+
132
+ { type: 'title', text: 'Kasus Penggunaan Privasi', level: 3 },
133
+ { type: 'table', headers: ['Informasi Sensitif', 'Metode yang Direkomendasikan', 'Urgensi'], rows: [
134
+ ['Wajah orang', 'Pikselkan atau Kaburkan', 'Kritis'],
135
+ ['Plat nomor kendaraan', 'Pikselkan (ireversibel)', 'Kritis'],
136
+ ['Dokumen identitas', 'Penutup Solid atau Pikselkan', 'Kritis'],
137
+ ['Nama/Alamat tertulis', 'Penutup Solid atau Pikselkan', 'Tinggi'],
138
+ ['Nomor telepon', 'Pikselkan atau Tutup', 'Tinggi'],
139
+ ['Informasi medis', 'Penutup Solid', 'Kritis'],
140
+ ['Sinyal WiFi yang terlihat', 'Pikselkan', 'Menengah']
141
+ ] },
142
+
143
+ { type: 'proscons', items: [
144
+ {
145
+ pro: 'Privasi total: pemrosesan lokal 100%, tanpa server, tanpa penyimpanan',
146
+ con: 'Memerlukan browser modern dengan dukungan Canvas dan WebGL'
147
+ },
148
+ {
149
+ pro: 'Deteksi wajah otomatis menghemat waktu manual',
150
+ con: 'AI tidak sempurna - wajah profil atau parsial mungkin tidak terdeteksi'
151
+ },
152
+ {
153
+ pro: 'Tiga metode memungkinkan memilih keamanan vs estetika',
154
+ con: 'Tidak ada opsi lanjutan (smart warp, pengisian konteks)'
155
+ },
156
+ {
157
+ pro: 'Sepenuhnya gratis, tanpa iklan, tanpa batas',
158
+ con: 'Tidak setara dengan perangkat lunak profesional seperti Photoshop'
159
+ }
160
+ ], proTitle: 'Keuntungan', conTitle: 'Batasan' },
161
+
162
+ { type: 'diagnostic', variant: 'warning', title: 'Peringatan: Pengaburan TIDAK 100% Aman', icon: 'mdi:alert', badge: 'Keamanan', html: 'Gaussian blur secara matematis dapat dibalik melalui algoritma invers yang canggih. Jika informasi tersebut KRITIS (dokumen hukum, identitas), gunakan <strong>Pikselkan atau Penutup Solid</strong>. Pengaburan secara estetika lebih baik tetapi kurang aman.' },
163
+
164
+ { type: 'glossary', items: [
165
+ {
166
+ term: 'Pikselasi',
167
+ definition: 'Mengurangi resolusi dengan membagi area menjadi blok warna yang seragam. Ireversibel. Keamanan maksimum terhadap pengenalan wajah AI.'
168
+ },
169
+ {
170
+ term: 'Gaussian Blur',
171
+ definition: 'Penghalusan matematis berdasarkan distribusi normal. Secara teoritis dapat dibalik melalui dekonvolusi, tetapi secara praktis sangat sulit.'
172
+ },
173
+ {
174
+ term: 'Penutup Solid',
175
+ definition: 'Blok warna buram yang seragam. Keamanan maksimum, privasi hukum maksimum, kurang elegan secara visual.'
176
+ },
177
+ {
178
+ term: 'TinyFaceDetector',
179
+ definition: 'Jaringan saraf konvolusional ringan (CNN) untuk mendeteksi wajah. Berjalan secara lokal di browser tanpa memerlukan server eksternal.'
180
+ },
181
+ {
182
+ term: 'Privacy by Design (PbD)',
183
+ definition: 'Pendekatan di mana privasi diintegrasikan mulai dari desain sistem, bukan ditambahkan kemudian. Pendekatan lokal kami adalah Privacy by Design.'
184
+ }
185
+ ] },
186
+
187
+ { type: 'message', title: 'Privasi dalam Kontrol Anda', ariaLabel: 'Informasi tentang perlindungan privasi', html: 'Kami tidak menyimpan atau memproses foto Anda di server jarak jauh. Tidak ada cookie pelacakan. Tidak ada riwayat pengeditan. Kami tidak tahu apa yang Anda sembunyikan karena kami tidak pernah melihat gambar Anda. Kontrol penuh, privasi penuh, kebebasan penuh.' },
188
+
189
+ { type: 'title', text: 'Berbagi Secara Aman di Jejaring Sosial', level: 3 },
190
+ { type: 'paragraph', html: 'Sebelum memposting foto apa pun di Internet, tanyalah pada diri sendiri: apakah ada informasi yang saya lebih suka tidak dipublikasikan? Wajah anak-anak, plat nomor, alamat, nomor dokumen. Sesi privasi selama 2 menit sekarang menghindari masalah selama bertahun-tahun.' }
191
+ ];
192
+
193
+ const faqSchema: WithContext<FAQPage> = {
194
+ '@context': 'https://schema.org',
195
+ '@type': 'FAQPage',
196
+ mainEntity: faq.map((item) => ({
197
+ '@type': 'Question',
198
+ name: item.question,
199
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
200
+ })),
201
+ };
202
+
203
+ const howToSchema: WithContext<HowTo> = {
204
+ '@context': 'https://schema.org',
205
+ '@type': 'HowTo',
206
+ name: title,
207
+ description,
208
+ step: howTo.map((step) => ({
209
+ '@type': 'HowToStep',
210
+ name: step.name,
211
+ text: step.text,
212
+ })),
213
+ };
214
+
215
+ const appSchema: WithContext<SoftwareApplication> = {
216
+ '@context': 'https://schema.org',
217
+ '@type': 'SoftwareApplication',
218
+ name: title,
219
+ description,
220
+ applicationCategory: 'UtilitiesApplication',
221
+ operatingSystem: 'Web',
222
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
223
+ inLanguage: 'id',
224
+ };
225
+
226
+ export const content: PrivacyBlurLocaleContent = {
227
+ slug,
228
+ title,
229
+ description,
230
+ ui,
231
+ seo,
232
+ faqTitle: "Pertanyaan yang Sering Diajukan",
233
+ faq,
234
+ bibliographyTitle: "Referensi",
235
+ bibliography,
236
+ howTo,
237
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
238
+ };