@jjlmoya/utils-audiovisual 1.6.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 (175) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/de.ts +198 -0
  3. package/src/category/i18n/fr.ts +1 -1
  4. package/src/category/i18n/id.ts +198 -0
  5. package/src/category/i18n/it.ts +198 -0
  6. package/src/category/i18n/ja.ts +198 -0
  7. package/src/category/i18n/ko.ts +198 -0
  8. package/src/category/i18n/nl.ts +198 -0
  9. package/src/category/i18n/pl.ts +198 -0
  10. package/src/category/i18n/pt.ts +198 -0
  11. package/src/category/i18n/ru.ts +198 -0
  12. package/src/category/i18n/sv.ts +198 -0
  13. package/src/category/i18n/tr.ts +198 -0
  14. package/src/category/i18n/zh.ts +198 -0
  15. package/src/category/index.ts +31 -3
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/schemas_fulfillment.test.ts +23 -0
  18. package/src/tests/title_quality.test.ts +55 -0
  19. package/src/tool/chromaticLens/i18n/de.ts +246 -0
  20. package/src/tool/chromaticLens/i18n/en.ts +1 -1
  21. package/src/tool/chromaticLens/i18n/es.ts +1 -1
  22. package/src/tool/chromaticLens/i18n/fr.ts +1 -1
  23. package/src/tool/chromaticLens/i18n/id.ts +246 -0
  24. package/src/tool/chromaticLens/i18n/it.ts +246 -0
  25. package/src/tool/chromaticLens/i18n/ja.ts +246 -0
  26. package/src/tool/chromaticLens/i18n/ko.ts +246 -0
  27. package/src/tool/chromaticLens/i18n/nl.ts +246 -0
  28. package/src/tool/chromaticLens/i18n/pl.ts +246 -0
  29. package/src/tool/chromaticLens/i18n/pt.ts +246 -0
  30. package/src/tool/chromaticLens/i18n/ru.ts +246 -0
  31. package/src/tool/chromaticLens/i18n/sv.ts +246 -0
  32. package/src/tool/chromaticLens/i18n/tr.ts +246 -0
  33. package/src/tool/chromaticLens/i18n/zh.ts +246 -0
  34. package/src/tool/chromaticLens/index.ts +15 -7
  35. package/src/tool/collageMaker/i18n/de.ts +233 -0
  36. package/src/tool/collageMaker/i18n/en.ts +1 -1
  37. package/src/tool/collageMaker/i18n/es.ts +1 -1
  38. package/src/tool/collageMaker/i18n/fr.ts +1 -1
  39. package/src/tool/collageMaker/i18n/id.ts +233 -0
  40. package/src/tool/collageMaker/i18n/it.ts +233 -0
  41. package/src/tool/collageMaker/i18n/ja.ts +233 -0
  42. package/src/tool/collageMaker/i18n/ko.ts +233 -0
  43. package/src/tool/collageMaker/i18n/nl.ts +233 -0
  44. package/src/tool/collageMaker/i18n/pl.ts +233 -0
  45. package/src/tool/collageMaker/i18n/pt.ts +233 -0
  46. package/src/tool/collageMaker/i18n/ru.ts +233 -0
  47. package/src/tool/collageMaker/i18n/sv.ts +233 -0
  48. package/src/tool/collageMaker/i18n/tr.ts +233 -0
  49. package/src/tool/collageMaker/i18n/zh.ts +233 -0
  50. package/src/tool/collageMaker/index.ts +15 -6
  51. package/src/tool/exifCleaner/i18n/de.ts +277 -0
  52. package/src/tool/exifCleaner/i18n/en.ts +2 -2
  53. package/src/tool/exifCleaner/i18n/es.ts +2 -2
  54. package/src/tool/exifCleaner/i18n/fr.ts +4 -4
  55. package/src/tool/exifCleaner/i18n/id.ts +277 -0
  56. package/src/tool/exifCleaner/i18n/it.ts +277 -0
  57. package/src/tool/exifCleaner/i18n/ja.ts +277 -0
  58. package/src/tool/exifCleaner/i18n/ko.ts +277 -0
  59. package/src/tool/exifCleaner/i18n/nl.ts +277 -0
  60. package/src/tool/exifCleaner/i18n/pl.ts +277 -0
  61. package/src/tool/exifCleaner/i18n/pt.ts +277 -0
  62. package/src/tool/exifCleaner/i18n/ru.ts +277 -0
  63. package/src/tool/exifCleaner/i18n/sv.ts +277 -0
  64. package/src/tool/exifCleaner/i18n/tr.ts +277 -0
  65. package/src/tool/exifCleaner/i18n/zh.ts +277 -0
  66. package/src/tool/exifCleaner/index.ts +16 -8
  67. package/src/tool/imageCompressor/i18n/de.ts +242 -0
  68. package/src/tool/imageCompressor/i18n/en.ts +2 -2
  69. package/src/tool/imageCompressor/i18n/es.ts +2 -2
  70. package/src/tool/imageCompressor/i18n/id.ts +242 -0
  71. package/src/tool/imageCompressor/i18n/it.ts +242 -0
  72. package/src/tool/imageCompressor/i18n/ja.ts +242 -0
  73. package/src/tool/imageCompressor/i18n/ko.ts +242 -0
  74. package/src/tool/imageCompressor/i18n/nl.ts +242 -0
  75. package/src/tool/imageCompressor/i18n/pl.ts +242 -0
  76. package/src/tool/imageCompressor/i18n/pt.ts +242 -0
  77. package/src/tool/imageCompressor/i18n/ru.ts +242 -0
  78. package/src/tool/imageCompressor/i18n/sv.ts +242 -0
  79. package/src/tool/imageCompressor/i18n/tr.ts +242 -0
  80. package/src/tool/imageCompressor/i18n/zh.ts +244 -0
  81. package/src/tool/imageCompressor/index.ts +15 -7
  82. package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
  83. package/src/tool/printQualityCalculator/i18n/en.ts +2 -2
  84. package/src/tool/printQualityCalculator/i18n/es.ts +3 -3
  85. package/src/tool/printQualityCalculator/i18n/fr.ts +3 -3
  86. package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
  87. package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
  88. package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
  89. package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
  90. package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
  91. package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
  92. package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
  93. package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
  94. package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
  95. package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
  96. package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
  97. package/src/tool/printQualityCalculator/index.ts +15 -7
  98. package/src/tool/privacyBlur/i18n/de.ts +238 -0
  99. package/src/tool/privacyBlur/i18n/en.ts +1 -1
  100. package/src/tool/privacyBlur/i18n/es.ts +1 -1
  101. package/src/tool/privacyBlur/i18n/fr.ts +1 -1
  102. package/src/tool/privacyBlur/i18n/id.ts +238 -0
  103. package/src/tool/privacyBlur/i18n/it.ts +238 -0
  104. package/src/tool/privacyBlur/i18n/ja.ts +238 -0
  105. package/src/tool/privacyBlur/i18n/ko.ts +238 -0
  106. package/src/tool/privacyBlur/i18n/nl.ts +238 -0
  107. package/src/tool/privacyBlur/i18n/pl.ts +238 -0
  108. package/src/tool/privacyBlur/i18n/pt.ts +238 -0
  109. package/src/tool/privacyBlur/i18n/ru.ts +238 -0
  110. package/src/tool/privacyBlur/i18n/sv.ts +238 -0
  111. package/src/tool/privacyBlur/i18n/tr.ts +238 -0
  112. package/src/tool/privacyBlur/i18n/zh.ts +238 -0
  113. package/src/tool/privacyBlur/index.ts +15 -7
  114. package/src/tool/subtitleSync/i18n/de.ts +241 -0
  115. package/src/tool/subtitleSync/i18n/en.ts +1 -1
  116. package/src/tool/subtitleSync/i18n/es.ts +1 -1
  117. package/src/tool/subtitleSync/i18n/fr.ts +8 -8
  118. package/src/tool/subtitleSync/i18n/id.ts +241 -0
  119. package/src/tool/subtitleSync/i18n/it.ts +241 -0
  120. package/src/tool/subtitleSync/i18n/ja.ts +241 -0
  121. package/src/tool/subtitleSync/i18n/ko.ts +241 -0
  122. package/src/tool/subtitleSync/i18n/nl.ts +241 -0
  123. package/src/tool/subtitleSync/i18n/pl.ts +241 -0
  124. package/src/tool/subtitleSync/i18n/pt.ts +241 -0
  125. package/src/tool/subtitleSync/i18n/ru.ts +241 -0
  126. package/src/tool/subtitleSync/i18n/sv.ts +241 -0
  127. package/src/tool/subtitleSync/i18n/tr.ts +241 -0
  128. package/src/tool/subtitleSync/i18n/zh.ts +241 -0
  129. package/src/tool/subtitleSync/index.ts +15 -7
  130. package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
  131. package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
  132. package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
  133. package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
  134. package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
  135. package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
  136. package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
  137. package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
  138. package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
  139. package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
  140. package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
  141. package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
  142. package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
  143. package/src/tool/timelapseCalculator/index.ts +16 -8
  144. package/src/tool/tvDistance/i18n/de.ts +223 -0
  145. package/src/tool/tvDistance/i18n/en.ts +1 -1
  146. package/src/tool/tvDistance/i18n/es.ts +1 -1
  147. package/src/tool/tvDistance/i18n/fr.ts +1 -1
  148. package/src/tool/tvDistance/i18n/id.ts +223 -0
  149. package/src/tool/tvDistance/i18n/it.ts +223 -0
  150. package/src/tool/tvDistance/i18n/ja.ts +223 -0
  151. package/src/tool/tvDistance/i18n/ko.ts +223 -0
  152. package/src/tool/tvDistance/i18n/nl.ts +223 -0
  153. package/src/tool/tvDistance/i18n/pl.ts +223 -0
  154. package/src/tool/tvDistance/i18n/pt.ts +223 -0
  155. package/src/tool/tvDistance/i18n/ru.ts +223 -0
  156. package/src/tool/tvDistance/i18n/sv.ts +223 -0
  157. package/src/tool/tvDistance/i18n/tr.ts +223 -0
  158. package/src/tool/tvDistance/i18n/zh.ts +223 -0
  159. package/src/tool/tvDistance/index.ts +15 -7
  160. package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
  161. package/src/tool/videoFrameExtractor/i18n/en.ts +1 -1
  162. package/src/tool/videoFrameExtractor/i18n/es.ts +1 -1
  163. package/src/tool/videoFrameExtractor/i18n/fr.ts +1 -1
  164. package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
  165. package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
  166. package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
  167. package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
  168. package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
  169. package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
  170. package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
  171. package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
  172. package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
  173. package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
  174. package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
  175. 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 = '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
+ };
@@ -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-privacy-online-pixellare-sfocare-volti-foto';
5
+ const title = 'Privay Editor Online: Pixella e nascondi i volti nelle foto';
6
+ const description = 'Proteggi la tua identità censurando le aree sensibili delle tue foto. Pixella i volti, sfoca i documenti o copri le informazioni private al 100% localmente.';
7
+
8
+ const ui: PrivacyBlurUI = {
9
+ toolPixel: "Pixella",
10
+ toolBlur: "Sfoca",
11
+ toolSolid: "Solido",
12
+ intensityLabel: "Intensità",
13
+ undoButton: "Annulla",
14
+ downloadButton: "Salva",
15
+ dropTitle: "Privacy Editor",
16
+ dropSubtitle: "Trascina la tua immagine qui o clicca per iniziare",
17
+ privacySecureLabel: "100% Locale",
18
+ offlineLabel: "Offline",
19
+ autoDetectFaces: "Auto Rilevamento",
20
+ loadingModels: "Caricamento modelli...",
21
+ noFacesDetected: "Nessun volto rilevato automaticamente.",
22
+ faqTitle: "Domande Frequenti",
23
+ bibliographyTitle: "Riferimenti"
24
+ };
25
+
26
+ const faq: PrivacyBlurLocaleContent['faq'] = [
27
+ {
28
+ question: "Le mie foto vengono caricate su qualche server?",
29
+ answer: "No. L'editor della privacy funziona interamente nel tuo browser. I pixel vengono modificati localmente e nulla viene inviato all'esterno del tuo dispositivo.",
30
+ },
31
+ {
32
+ question: "Come funziona il rilevamento automatico dei volti?",
33
+ answer: "Utilizziamo una rete neurale leggera (TinyFaceDetector) che gira nel tuo browser per identificare i tratti del viso senza bisogno di una connessione esterna.",
34
+ },
35
+ ];
36
+
37
+ const howTo: PrivacyBlurLocaleContent['howTo'] = [
38
+ {
39
+ name: "Carica la tua foto",
40
+ text: "Trascina o seleziona l'immagine che contiene informazioni sensibili che desideri nascondere.",
41
+ },
42
+ {
43
+ name: "Scegli lo strumento",
44
+ text: "Seleziona tra pixellatura, sfocatura o copertura solida a seconda del livello di privacy di cui hai bisogno.",
45
+ },
46
+ {
47
+ name: "Segna l'area",
48
+ text: "Clicca e trascina sulla zona che vuoi proteggere (volti, targhe, nomi, ecc.).",
49
+ },
50
+ {
51
+ name: "Salva il risultato",
52
+ text: "Scarica l'immagine elaborata con la sicurezza che i dati originali siano inaccessibili.",
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: 'Privacy Editor: Pixella, Sfoca e Nascondi',
67
+ items: [
68
+ 'Tre strumenti di editing: Pixella, Sfoca, Copertura Solida',
69
+ 'Rilevamento automatico dei volti con IA (TinyFaceDetector)',
70
+ 'Elaborazione 100% locale - le tue foto non lasciano mai il browser',
71
+ 'Senza filigrana, senza limiti, completamente gratuito'
72
+ ]
73
+ },
74
+ { type: 'title', text: 'Privacy Digitale: Come Proteggere i Tuoi Dati Visuali', level: 2 },
75
+ { type: 'paragraph', html: 'Nell\'era dei social media, condividere foto senza controllo può esporre dati personali sensibili. Il nostro strumento ti consente di nascondere informazioni critiche (volti, targhe, nomi, indirizzi) prima di caricarle su Internet, garantendo che la tua privacy rimanga sotto il tuo pieno controllo.' },
76
+
77
+ { type: 'stats', items: [
78
+ { value: '3', label: 'Metodi di Oscuramento', icon: 'mdi:tools' },
79
+ { value: '100%', label: 'Privacy Locale', icon: 'mdi:shield-check' },
80
+ { value: 'IA', label: 'Rilevamento Volti', icon: 'mdi:brain' }
81
+ ], columns: 3 },
82
+
83
+ { type: 'title', text: 'I Tre Metodi di Oscuramento Spiegati', level: 3 },
84
+ { type: 'comparative', items: [
85
+ {
86
+ title: 'Pixella',
87
+ description: 'Divide l\'area in quadrati, impossibile da riconoscere',
88
+ icon: 'mdi:blur',
89
+ points: [
90
+ 'Massimo oscuramento irreversibile',
91
+ 'Più sicuro contro il riconoscimento facciale',
92
+ 'Visibile, chiaro che qualcosa è stato nascosto',
93
+ 'Ideale: volti in foto pubbliche'
94
+ ]
95
+ },
96
+ {
97
+ title: 'Sfoca',
98
+ description: 'Sfocatura Gaussiana - aspetto più naturale',
99
+ icon: 'mdi:blur-off',
100
+ points: [
101
+ 'Aspetto visivo più elegante',
102
+ 'Mantiene una certa coerenza cromatica',
103
+ 'Matematicamente reversibile (teoricamente)',
104
+ 'Ideale: informazioni meno sensibili'
105
+ ],
106
+ highlight: true
107
+ },
108
+ {
109
+ title: 'Copertura Solida',
110
+ description: 'Blocco di colore opaco - massima privacy',
111
+ icon: 'mdi:rectangle',
112
+ points: [
113
+ 'Oscuramento visibile ed evidente',
114
+ 'Massima sicurezza legale/privacy',
115
+ 'Cambia la composizione visiva',
116
+ 'Ideale: documenti, dati sensibili'
117
+ ]
118
+ }
119
+ ], columns: 3 },
120
+
121
+ { type: 'title', text: 'Rilevamento Automatico dei Volti con IA', level: 3 },
122
+ { type: 'paragraph', html: 'Il nostro strumento utilizza TinyFaceDetector, una rete neurale compatta che gira direttamente nel tuo browser per identificare i volti automaticamente:' },
123
+ { type: 'list', items: [
124
+ '<strong>100% Locale:</strong> Il modello IA gira sulla tua GPU/CPU, non su server remoti.',
125
+ '<strong>Senza Internet:</strong> Dopo il download iniziale, funziona completamente offline.',
126
+ '<strong>Privacy Garantita:</strong> Nessuno vede i volti: né Google, né OpenAI, né noi.',
127
+ '<strong>Automatico One-Click:</strong> Rileva i volti e ti permette di scegliere di nasconderli con un solo clic.'
128
+ ], icon: 'mdi:check' },
129
+
130
+ { type: 'card', title: 'Privacy by Design', html: 'Elaborando le immagini utilizzando la GPU e la CPU locali del tuo browser, garantiamo che le foto originali non lascino mai il tuo dispositivo. Anche se cambi idea, nulla è stato trasmesso. Questo è il massimo standard di privacy digitale.' },
131
+
132
+ { type: 'title', text: 'Casi d\'Uso della Privacy', level: 3 },
133
+ { type: 'table', headers: ['Informazioni Sensibili', 'Metodo Raccomandato', 'Urgenza'], rows: [
134
+ ['Volti di persone', 'Pixella o Sfoca', 'Critica'],
135
+ ['Targhe di veicoli', 'Pixella (irreversibile)', 'Critica'],
136
+ ['Documenti d\'identità', 'Copertura Solida o Pixella', 'Critica'],
137
+ ['Nomi/Indirizzi scritti', 'Copertura Solida o Pixella', 'Alta'],
138
+ ['Numeri di telefono', 'Pixella o Copertura', 'Alta'],
139
+ ['Informazioni mediche', 'Copertura Solida', 'Critica'],
140
+ ['Segnali WiFi visibili', 'Pixella', 'Media']
141
+ ] },
142
+
143
+ { type: 'proscons', items: [
144
+ {
145
+ pro: 'Privacy totale: elaborazione 100% locale, nessun server, nessuna archiviazione',
146
+ con: 'Richiede un browser moderno con supporto Canvas e WebGL'
147
+ },
148
+ {
149
+ pro: 'Il rilevamento automatico dei volti fa risparmiare tempo manuale',
150
+ con: 'L\'IA non è perfetta - i volti di profilo o parziali potrebbero non essere rilevati'
151
+ },
152
+ {
153
+ pro: 'Tre metodi permettono di scegliere tra sicurezza ed estetica',
154
+ con: 'Nessuna opzione avanzata (smart warp, riempimento contestuale)'
155
+ },
156
+ {
157
+ pro: 'Completamente gratuito, nessuna pubblicità, nessun limite',
158
+ con: 'Non equivalente a software professionali come Photoshop'
159
+ }
160
+ ], proTitle: 'Vantaggi', conTitle: 'Limitazioni' },
161
+
162
+ { type: 'diagnostic', variant: 'warning', title: 'Attenzione: Sfocare NON è sicuro al 100%', icon: 'mdi:alert', badge: 'Sicurezza', html: 'La sfocatura gaussiana è matematicamente reversibile attraverso sofisticati algoritmi inversi. Se l\'informazione è CRITICA (documenti legali, identità), usa <strong>Pixella o Copertura Solida</strong>. La sfocatura è esteticamente migliore ma meno sicura.' },
163
+
164
+ { type: 'glossary', items: [
165
+ {
166
+ term: 'Pixellatura',
167
+ definition: 'Riduzione della risoluzione dividendo l\'area in blocchi di colore uniforme. Irreversibile. Massima sicurezza contro il riconoscimento facciale IA.'
168
+ },
169
+ {
170
+ term: 'Sfocatura Gaussiana',
171
+ definition: 'Levigatura matematica basata sulla distribuzione normale. Teoricamente reversibile tramite deconvolution, ma praticamente molto difficile.'
172
+ },
173
+ {
174
+ term: 'Copertura Solida',
175
+ definition: 'Blocco opaco di colore uniforme. Massima sicurezza, massima privacy legale, meno elegante visivamente.'
176
+ },
177
+ {
178
+ term: 'TinyFaceDetector',
179
+ definition: 'Rete neurale convoluzionale leggera (CNN) per il rilevamento dei volti. Gira localmente nel browser senza bisogno di un server esterno.'
180
+ },
181
+ {
182
+ term: 'Privacy by Design (PbD)',
183
+ definition: 'Approccio in cui la privacy è integrata a partire dalla progettazione del sistema, non aggiunta successivamente. Il nostro approccio locale è Privacy by Design.'
184
+ }
185
+ ] },
186
+
187
+ { type: 'message', title: 'Privacy sotto il Tuo Controllo', ariaLabel: 'Informazioni sulla protezione della privacy', html: 'Non memorizziamo né elaboriamo le tue foto su server remoti. Non ci sono cookie di tracciamento. Nessuna cronologia di editing. Non sappiamo cosa nascondi perché non vediamo mai le tue immagini. Pieno controllo, piena privacy, piena libertà.' },
188
+
189
+ { type: 'title', text: 'Condividi in Sicurezza sui Social Network', level: 3 },
190
+ { type: 'paragraph', html: 'Prima di pubblicare qualsiasi foto su Internet, chiediti: ci sono informazioni che preferirei non fossero pubbliche? Volti di bambini, targhe, indirizzi, numeri di documenti. Una sessione di privacy di 2 minuti ora evita anni di problemi.' }
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: 'it',
224
+ };
225
+
226
+ export const content: PrivacyBlurLocaleContent = {
227
+ slug,
228
+ title,
229
+ description,
230
+ ui,
231
+ seo,
232
+ faqTitle: "Domande Frequenti",
233
+ faq,
234
+ bibliographyTitle: "Riferimenti",
235
+ bibliography,
236
+ howTo,
237
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
238
+ };