@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,242 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ImageCompressorUI, ImageCompressorLocaleContent } from '../index';
3
+
4
+ const slug = 'online-image-compressor-reduceer-bestandsgrootte-zonder-kwaliteitsverlies';
5
+ const title = 'Online Image Compressor: Verminder gewicht zonder kwaliteitsverlies';
6
+ const description = 'Optimaliseer en comprimeer je JPG-, PNG- och WebP-foto\'s gratis. Verklein de bestandsgrootte om de laadsnelheid van je webpagina lokaal te verbeteren.';
7
+
8
+ const ui: ImageCompressorUI = {
9
+ dropTitle: "Optimaliseer Afbeeldingen",
10
+ dropSubtitle: "Sleep je foto\'s hierheen om hun gewicht direct te verminderen.",
11
+ settingsTitle: "Compressie-instellingen",
12
+ qualityLabel: "Visuele Kwaliteit",
13
+ widthLabel: "Maximale Breedte (Pixels)",
14
+ convertToWebpLabel: "Converteer naar WebP",
15
+ compressionLabel: "Compressie",
16
+ compressBtn: "Comprimeer Afbeelding",
17
+ processingLabel: "Verwerken...",
18
+ resultsTitle: "Geoptimaliseerde Afbeeldingen",
19
+ originalSizeLabel: "Originele Grootte",
20
+ newSizeLabel: "Nieuwe Grootte",
21
+ reductionLabel: "Besparing",
22
+ downloadBtn: "Downloaden",
23
+ addMoreBtn: "Meer toevoegen",
24
+ browseFilesBtn: "Bestanden bladeren",
25
+ processedFilesTitle: "Verwerkte Bestanden",
26
+ downloadAllBtn: "Alles Downloaden",
27
+ adjustThisImage: "Pas deze afbeelding aan",
28
+ downloadTitle: "Download",
29
+ maxWidthLabel: "Max breedte (px)",
30
+ closeBtn: "Sluiten",
31
+ totalSavingsLabel: "Totale besparing",
32
+ noSavings: "Geen netto besparing",
33
+ faqTitle: "Veelgestelde Vragen",
34
+ bibliographyTitle: "Referenties"
35
+ };
36
+
37
+ const faq: ImageCompressorLocaleContent['faq'] = [
38
+ {
39
+ question: "Hoe werkt lossless compressie?",
40
+ answer: "We gebruiken algoritmen die onnodige metadata verwijderen en de pixelcodering optimaliseren. Bij het kiezen van WebP wordt een geavanceerdere compressietechnologie gebruikt dan bij traditionele formaten.",
41
+ },
42
+ {
43
+ question: "Worden mijn afbeeldingen geüpload naar een server?",
44
+ answer: "Nee. Alle verwerking vindt 100% plaats in je browser (Client-Side). Je foto's verlaten nooit je computer, wat absolute privacy garandeert.",
45
+ },
46
+ {
47
+ question: "Waarom zou ik converteren naar WebP?",
48
+ answer: "WebP is het moderne standaardformaat voor het web. Het biedt een superieure kwaliteit ten opzichte van JPG en PNG met een gewicht dat tot 30% lager ligt, wat de laadtijd van de pagina versnelt.",
49
+ },
50
+ ];
51
+
52
+ const howTo: ImageCompressorLocaleContent['howTo'] = [
53
+ {
54
+ name: "Upload de afbeelding",
55
+ text: "Upload het bestand dat je wilt comprimeren (JPG, PNG of WebP).",
56
+ },
57
+ {
58
+ name: "Pas de kwaliteit aan",
59
+ text: "Gebruik de schuifregelaar om de perfecte balans te vinden tussen bestandsgrootte en visuele kwaliteit (aanbevolen: 75 85%).",
60
+ },
61
+ {
62
+ name: "Wijzig grootte (optioneel)",
63
+ text: "Als de afbeelding erg groot is, kun je een maximale breedte specificeren om de resolutie te verlagen.",
64
+ },
65
+ {
66
+ name: "Download het resultaat",
67
+ text: "Druk op de downloadknop om je geoptimaliseerde afbeelding klaar voor gebruik te ontvangen.",
68
+ },
69
+ ];
70
+
71
+ const bibliography: ImageCompressorLocaleContent['bibliography'] = [
72
+ {
73
+ name: "WebP: Een afbeeldingsformaat voor het web",
74
+ url: "https://developers.google.com/speed/webp",
75
+ },
76
+ {
77
+ name: "Het belang van afbeeldingsoptimalisatie voor SEO",
78
+ url: "https://developers.google.com/search/docs/appearance/google-images",
79
+ },
80
+ ];
81
+
82
+ const seo: ImageCompressorLocaleContent['seo'] = [
83
+ {
84
+ type: 'summary',
85
+ title: 'Professionele Web Afbeeldingsoptimalisatie',
86
+ items: [
87
+ 'Intelligente JPG-, PNG- en WebP-compressie',
88
+ 'Verminder het gewicht met 50-80% met behoud van visuele kwaliteit',
89
+ '100% lokale verwerking - privacy gegarandeerd',
90
+ 'Verbeter Core Web Vitals en SEO-positionering'
91
+ ]
92
+ },
93
+ { type: 'title', text: 'Afbeeldingsoptimalisatie: Web Snelheid en Core Web Vitals', level: 2 },
94
+ { type: 'paragraph', html: 'In het tijdperk van digitale directheid verliest een trage website gebruikers. Niet-geoptimaliseerde afbeeldingen vertegenwoordigen 60-70% van het totale gewicht van een webpagina. Het optimaliseren ervan is de eerste stap om je Google-metrieken (LCP, CLS) en je positionering in de zoekresultaten te verbeteren.' },
95
+
96
+ { type: 'stats', items: [
97
+ { value: '50-80%', label: 'Typische Gewichtsreductie', icon: 'mdi:trending-down' },
98
+ { value: '100%', label: 'Lokale Privacy', icon: 'mdi:lock' },
99
+ { value: '+30%', label: 'Sneller dan JPG', icon: 'mdi:speedometer' }
100
+ ], columns: 3 },
101
+
102
+ { type: 'title', text: 'Uitleg over Compressieformaten', level: 3 },
103
+ { type: 'table', headers: ['Formaat', 'Compressie', 'Use Cases', 'Compatibiliteit'], rows: [
104
+ ['JPEG', 'Lossy 50-90%', 'Camerafoto\'s, redactionele inhoud', 'Universeel (100%)'],
105
+ ['PNG', 'Lossless 30-50%', 'Graphics, logo\'s, transparanties', 'Universeel (100%)'],
106
+ ['WebP', 'Lossy/Lossless 25-35% meer', 'Modern web, sociale netwerken', '95% moderne browsers'],
107
+ ['AVIF', 'Lossy/Lossless 20% verbetering', 'Volgende generatie web', 'Alleen nieuwe browsers']
108
+ ] },
109
+
110
+ { type: 'card', title: 'Waarom WebP de Toekomst is', html: 'Google heeft WebP specifiek voor het web ontwikkeld. Het biedt een superieure compressie ten opzichte van JPEG en PNG, met behoud of verbetering van visuele kwaliteit. Het is 25-35% kleiner dan JPEG-equivalenten. Moderne browsers ondersteunen het voor 95%.' },
111
+
112
+ { type: 'title', text: 'Lossy vs Lossless Compressie', level: 3 },
113
+ { type: 'comparative', items: [
114
+ {
115
+ title: 'Lossy Compressie',
116
+ description: 'JPG, WebP - Verwijdert onmerkbare visuele informatie',
117
+ icon: 'mdi:compress',
118
+ points: [
119
+ 'Reduceert 70-90% van het originele gewicht',
120
+ 'Onmerkbaar voor het menselijk oog als de kwaliteit >75% blijft',
121
+ 'Ideaal voor realistische fotografie',
122
+ 'Niet aanbevolen voor logo\'s of scherpe tekst'
123
+ ],
124
+ highlight: true
125
+ },
126
+ {
127
+ title: 'Lossless Compressie',
128
+ description: 'PNG, WebP lossless - Behoudt 100% visuele data',
129
+ icon: 'mdi:shield',
130
+ points: [
131
+ 'Reduceert 20-50% van het gewicht',
132
+ 'Perfecte kwaliteit, geen degradatie',
133
+ 'Ideaal voor graphics, logo\'s, transparanties',
134
+ 'Zwaardere bestanden dan bij Lossy'
135
+ ]
136
+ }
137
+ ], columns: 2 },
138
+
139
+ { type: 'title', text: 'Impact op SEO en Conversie', level: 3 },
140
+ { type: 'list', items: [
141
+ '<strong>Core Web Vitals:</strong> Google straft trage sites af. Geoptimaliseerde afbeeldingen verbeteren LCP (Largest Contentful Paint) direct.',
142
+ '<strong>Bouncepercentage:</strong> Elke seconde vertraging = 7% meer bounce. Snellere afbeeldingen = minder gebruikers die vertrekken.',
143
+ '<strong>Zoekranking:</strong> Snelheid is een rankingfactor. Het optimaliseren van afbeeldingen geeft een boost aan de positionering.',
144
+ '<strong>Conversie:</strong> Snellere laadtijden = meer conversies. Studies tonen +10% conversie aan met optimalisatie.'
145
+ ], icon: 'mdi:check' },
146
+
147
+ { type: 'proscons', items: [
148
+ {
149
+ pro: 'Totale privacy: 100% lokale verwerking, geen cloudservers',
150
+ con: 'Vereist browser met ondersteuning voor Canvas API (het is universeel)'
151
+ },
152
+ {
153
+ pro: 'WebP is 25-35% kleiner dan JPEG bij gelijke kwaliteit',
154
+ con: 'Oude Safari en IE ondersteunen geen WebP (fallback beschikbaar)'
155
+ },
156
+ {
157
+ pro: 'Directe verwerking van meerdere afbeeldingen',
158
+ con: 'Zeer grote afbeeldingen (>50MB) kunnen wachttijd vereisen'
159
+ },
160
+ {
161
+ pro: 'Optioneel herschalen: vermindert zowel de resolutie als de compressie',
162
+ con: 'Herschalen verliest informatie - beter om de resolutie bij de bron te optimaliseren'
163
+ }
164
+ ], proTitle: 'Voordelen', conTitle: 'Beperkingen' },
165
+
166
+ { type: 'diagnostic', variant: 'warning', title: 'Let op: Overmatige Compressie Verslechtert de Kwaliteit', icon: 'mdi:alert', badge: 'Kwaliteit', html: 'Houd de kwaliteit >75% voor fotografie en >85% voor redactionele inhoud. Daaronder worden compressie-artefacten (vlekken, banding) zichtbaar. Een afbeelding die er goed uitziet in miniatuur kan er slecht uitzien wanneer deze groot is.' },
167
+
168
+ { type: 'glossary', items: [
169
+ {
170
+ term: 'Lossy Compressie',
171
+ definition: 'Verwijdert visuele gegevens die het menselijk oog als \"ruis\" waarneemt. Ideaal voor fotografie. JPEG, lossy WebP, HEIC zijn lossy.'
172
+ },
173
+ {
174
+ term: 'Lossless Compressie',
175
+ definition: 'Vermindert de grootte zonder visuele informatie te verliezen. PNG en lossless WebP. Ideaal voor graphics, logo\'s, transparanties.'
176
+ },
177
+ {
178
+ term: 'Core Web Vitals (Google)',
179
+ definition: 'Metrieken voor gebruikerservaring: LCP (laadsnelheid), FID (interactielatentie), CLS (visuele stabiliteit). Beïnvloeden de SEO-ranking.'
180
+ },
181
+ {
182
+ term: 'WebP',
183
+ definition: 'Formaat ontwikkeld door Google. 25-35% kleiner dan JPEG. Ondersteund door 95% van de moderne browsers (alle behalve IE).'
184
+ },
185
+ {
186
+ term: 'Compressie-artefacten',
187
+ definition: 'Visuele defecten veroorzaakt door overmatige compressie: vlekken, kleurbanding, vage randen. Onmerkbaar bij >75% kwaliteit.'
188
+ }
189
+ ] },
190
+
191
+ { type: 'message', title: 'Professionele Web Optimalisatie', ariaLabel: 'Informatie over afbeeldingsoptimalisatie voor SEO', html: 'Het is geen technische ijdelheid: het comprimeren van afbeeldingen is een directe investering in de gebruikerservaring en ranking in Google. Elke kilobyte telt op mobiel. Onze tool verandert wat vroeger professionele software ($$$) vereiste in een gratis 3-klikproces.' },
192
+
193
+ { type: 'title', text: 'Klaar voor het Moderne Web', level: 3 },
194
+ { type: 'paragraph', html: 'Gebruik intelligente compressie en WebP-formaat zodat je online aanwezigheid snel, responsief en concurrerend is in de zoekresultaten. Professionele kwaliteit, minimaal gewicht, direct laden.' }
195
+ ];
196
+
197
+ const faqSchema: WithContext<FAQPage> = {
198
+ '@context': 'https://schema.org',
199
+ '@type': 'FAQPage',
200
+ mainEntity: faq.map((item) => ({
201
+ '@type': 'Question',
202
+ name: item.question,
203
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
204
+ })),
205
+ };
206
+
207
+ const howToSchema: WithContext<HowTo> = {
208
+ '@context': 'https://schema.org',
209
+ '@type': 'HowTo',
210
+ name: title,
211
+ description,
212
+ step: howTo.map((step) => ({
213
+ '@type': 'HowToStep',
214
+ name: step.name,
215
+ text: step.text,
216
+ })),
217
+ };
218
+
219
+ const appSchema: WithContext<SoftwareApplication> = {
220
+ '@context': 'https://schema.org',
221
+ '@type': 'SoftwareApplication',
222
+ name: title,
223
+ description,
224
+ applicationCategory: 'UtilitiesApplication',
225
+ operatingSystem: 'Web',
226
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
227
+ inLanguage: 'nl',
228
+ };
229
+
230
+ export const content: ImageCompressorLocaleContent = {
231
+ slug,
232
+ title,
233
+ description,
234
+ ui,
235
+ seo,
236
+ faqTitle: "Veelgestelde Vragen",
237
+ faq,
238
+ bibliographyTitle: "Referenties",
239
+ bibliography,
240
+ howTo,
241
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
242
+ };
@@ -0,0 +1,242 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ImageCompressorUI, ImageCompressorLocaleContent } from '../index';
3
+
4
+ const slug = 'kompresor-obrazow-online-zmniejsz-rozmiar-pliku-bez-utraty-jakosci';
5
+ const title = 'Kompresor Obrazów Online: Zmniejsz wagę bez utraty jakości';
6
+ const description = 'Optymalizuj i kompresuj swoje zdjęcia JPG, PNG i WebP za darmo. Zmniejsz rozmiar plików, aby lokalnie przyspieszyć ładowanie Twojej strony internetowej.';
7
+
8
+ const ui: ImageCompressorUI = {
9
+ dropTitle: "Optymalizuj Obrazy",
10
+ dropSubtitle: "Przeciągnij zdjęcia, aby natychmiast zmniejszyć ich wagę.",
11
+ settingsTitle: "Ustawienia Kompresji",
12
+ qualityLabel: "Jakość Wizualna",
13
+ widthLabel: "Maksymalna Szerokość (Piksele)",
14
+ convertToWebpLabel: "Konwertuj na WebP",
15
+ compressionLabel: "Kompresja",
16
+ compressBtn: "Kompresuj Obraz",
17
+ processingLabel: "Przetwarzanie...",
18
+ resultsTitle: "Zoptymalizowane Obrazy",
19
+ originalSizeLabel: "Oryginalny Rozmiar",
20
+ newSizeLabel: "Nowy Rozmiar",
21
+ reductionLabel: "Oszczędność",
22
+ downloadBtn: "Pobierz",
23
+ addMoreBtn: "Dodaj więcej",
24
+ browseFilesBtn: "Przeglądaj pliki",
25
+ processedFilesTitle: "Przetworzone Pliki",
26
+ downloadAllBtn: "Pobierz Wszystkie",
27
+ adjustThisImage: "Dostosuj ten obraz",
28
+ downloadTitle: "Pobierz",
29
+ maxWidthLabel: "Maks. szerokość (px)",
30
+ closeBtn: "Zamknij",
31
+ totalSavingsLabel: "Całkowita oszczędność",
32
+ noSavings: "Brak oszczędności netto",
33
+ faqTitle: "Często Zadawane Pytania",
34
+ bibliographyTitle: "Referencje"
35
+ };
36
+
37
+ const faq: ImageCompressorLocaleContent['faq'] = [
38
+ {
39
+ question: "Jak działa kompresja bezstratna?",
40
+ answer: "Używamy algorytmów, które usuwają niepotrzebne metadane i optymalizują kodowanie pikseli. Przy wyborze formatu WebP stosowana jest bardziej zaawansowana technologia kompresji niż w tradycyjnych formatach.",
41
+ },
42
+ {
43
+ question: "Czy moje obrazy są przesyłane na jakikolwiek serwer?",
44
+ answer: "Nie. Całe przetwarzanie odbywa się w 100% w Twojej przeglądarce (Client-Side). Twoje zdjęcia nigdy nie opuszczają Twojego komputera, co gwarantuje całkowitą prywatność.",
45
+ },
46
+ {
47
+ question: "Dlaczego warto konwertować na WebP?",
48
+ answer: "WebP to nowoczesny standardowy format dla internetu. Oferuje wyższą jakość niż JPG i PNG przy wadze mniejszej nawet o 30%, co przyspiesza czas ładowania strony.",
49
+ },
50
+ ];
51
+
52
+ const howTo: ImageCompressorLocaleContent['howTo'] = [
53
+ {
54
+ name: "Prześlij obraz",
55
+ text: "Prześlij plik, który chcesz skompresować (JPG, PNG lub WebP).",
56
+ },
57
+ {
58
+ name: "Dostosuj jakość",
59
+ text: "Użyj suwaka, aby znaleźć idealną równowagę między rozmiarem pliku a jakością wizualną (zalecane: 75 85%).",
60
+ },
61
+ {
62
+ name: "Zmień rozmiar (opcjonalnie)",
63
+ text: "Jeśli obraz jest bardzo duży, możesz określić maksymalną szerokość, aby zmniejszyć jego rozdzielczość.",
64
+ },
65
+ {
66
+ name: "Pobierz wynik",
67
+ text: "Naciśnij przycisk pobierania, aby otrzymać zoptymalizowany obraz gotowy do użycia.",
68
+ },
69
+ ];
70
+
71
+ const bibliography: ImageCompressorLocaleContent['bibliography'] = [
72
+ {
73
+ name: "WebP: Format obrazu dla sieci",
74
+ url: "https://developers.google.com/speed/webp",
75
+ },
76
+ {
77
+ name: "Znaczenie optymalizacji obrazów dla SEO",
78
+ url: "https://developers.google.com/search/docs/appearance/google-images",
79
+ },
80
+ ];
81
+
82
+ const seo: ImageCompressorLocaleContent['seo'] = [
83
+ {
84
+ type: 'summary',
85
+ title: 'Profesjonalna Optymalizacja Obrazów Web',
86
+ items: [
87
+ 'Inteligentna kompresja JPG, PNG i WebP',
88
+ 'Zmniejsz wagę o 50-80% zachowując jakość wizualną',
89
+ '100% lokalne przetwarzanie - gwarancja prywatności',
90
+ 'Popraw Core Web Vitals i pozycjonowanie SEO'
91
+ ]
92
+ },
93
+ { type: 'title', text: 'Optymalizacja Obrazów: Szybkość sieci i Core Web Vitals', level: 2 },
94
+ { type: 'paragraph', html: 'W erze cyfrowej natychmiastowości wolna strona internetowa traci użytkowników. Niezoptymalizowane obrazy stanowią 60-70% całkowitej wagi strony internetowej. Ich optymalizacja to pierwszy krok do poprawy metryk Google (LCP, CLS) i Twojego pozycjonowania w wynikach wyszukiwania.' },
95
+
96
+ { type: 'stats', items: [
97
+ { value: '50-80%', label: 'Typowa Redukcja Wagi', icon: 'mdi:trending-down' },
98
+ { value: '100%', label: 'Lokalna Prywatność', icon: 'mdi:lock' },
99
+ { value: '+30%', label: 'Szybciej niż JPG', icon: 'mdi:speedometer' }
100
+ ], columns: 3 },
101
+
102
+ { type: 'title', text: 'Objaśnienie Formatów Kompresji', level: 3 },
103
+ { type: 'table', headers: ['Format', 'Kompresja', 'Zastosowania', 'Kompatybilność'], rows: [
104
+ ['JPEG', 'Stratna 50-90%', 'Zdjęcia z aparatu, treści redakcyjne', 'Uniwersalna (100%)'],
105
+ ['PNG', 'Bezstratna 30-50%', 'Grafiki, logo, przezroczystości', 'Uniwersalna (100%)'],
106
+ ['WebP', 'Stratna/Bezstratna 25-35% więcej', 'Nowoczesna sieć, sieci społecznościowe', '95% nowoczesnych przeglądarek'],
107
+ ['AVIF', 'Stratna/Bezstratna 20% poprawy', 'Sieć nowej generacji', 'Tylko nowe przeglądarki']
108
+ ] },
109
+
110
+ { type: 'card', title: 'Dlaczego WebP to Przyszłość', html: 'Google opracowało format WebP specjalnie dla sieci. Oferuje on lepszą kompresję niż JPEG i PNG, zachowując lub poprawiając jakość wizualną. Jest o 25-35% mniejszy niż odpowiedniki JPEG. Nowoczesne przeglądarki wspierają go w 95%.' },
111
+
112
+ { type: 'title', text: 'Kompresja Stratna vs Bezstratna', level: 3 },
113
+ { type: 'comparative', items: [
114
+ {
115
+ title: 'Kompresja Stratna (Lossy)',
116
+ description: 'JPG, WebP - Usuwa niedostrzegalne informacje wizualne',
117
+ icon: 'mdi:compress',
118
+ points: [
119
+ 'Redukuje 70-90% oryginalnej wagi',
120
+ 'Niedostrzegalna dla ludzkiego oka, jeśli jakość jest utrzymana powyżej 75%',
121
+ 'Idealna dla realistycznej fotografii',
122
+ 'Niezalecana dla logo lub ostrego tekstu'
123
+ ],
124
+ highlight: true
125
+ },
126
+ {
127
+ title: 'Kompresja Bezstratna (Lossless)',
128
+ description: 'PNG, WebP lossless - Zachowuje 100% danych wizualnych',
129
+ icon: 'mdi:shield',
130
+ points: [
131
+ 'Redukuje 20-50% wagi',
132
+ 'Doskonała jakość, brak degradacji',
133
+ 'Idealna dla grafik, logo, przezroczystości',
134
+ 'Pliki cięższe niż w kompresji stratnej'
135
+ ]
136
+ }
137
+ ], columns: 2 },
138
+
139
+ { type: 'title', text: 'Wpływ na SEO i Konwersję', level: 3 },
140
+ { type: 'list', items: [
141
+ '<strong>Core Web Vitals:</strong> Google karze wolne strony. Zoptymalizowane obrazy bezpośrednio poprawiają wskaźnik LCP (Largest Contentful Paint).',
142
+ '<strong>Współczynnik Odrzuceń:</strong> Każda sekunda opóźnienia = 7% więcej odrzuceń. Szybsze obrazy = mniej użytkowników, którzy opuszczają stronę.',
143
+ '<strong>Ranking wyszukiwania:</strong> Szybkość jest czynnikiem rankingowym. Optymalizacja obrazów zwiększa pozycjonowanie.',
144
+ '<strong>Konwersja:</strong> Szybszy czas ładowania = więcej konwersji. Badania pokazują wzrost konwersji o 10% dzięki optymalizacji.'
145
+ ], icon: 'mdi:check' },
146
+
147
+ { type: 'proscons', items: [
148
+ {
149
+ pro: 'Całkowita prywatność: 100% lokalnego przetwarzania, brak serwerów w chmurze',
150
+ con: 'Wymaga przeglądarki z obsługą Canvas API (jest to standard)'
151
+ },
152
+ {
153
+ pro: 'WebP jest o 25-35% mniejszy niż JPEG przy tej samej jakości',
154
+ con: 'Stare wersje Safari i IE nie obsługują WebP (dostępny jest fallback)'
155
+ },
156
+ {
157
+ pro: 'Natychmiastowe przetwarzanie wielu obrazów',
158
+ con: 'Bardzo duże obrazy (>50MB) mogą wymagać oczekiwania'
159
+ },
160
+ {
161
+ pro: 'Opcjonalna zmiana rozmiaru: zmniejsza zarówno rozdzielczość, jak i kompresję',
162
+ con: 'Zmiana rozmiaru powoduje utratę informacji - lepiej optymalizować rozdzielczość u źródła'
163
+ }
164
+ ], proTitle: 'Zalety', conTitle: 'Ograniczenia' },
165
+
166
+ { type: 'diagnostic', variant: 'warning', title: 'Uwaga: Nadmierna Kompresja Pogarsza Jakość', icon: 'mdi:alert', badge: 'Jakość', html: 'Utrzymuj jakość powyżej 75% dla fotografii i powyżej 85% dla treści redakcyjnych. Poniżej tych wartości artefakty kompresji (plamy, bandowanie) stają się widoczne. Obraz, który wygląda dobrze jako miniatura, może wyglądać źle w powiększeniu.' },
167
+
168
+ { type: 'glossary', items: [
169
+ {
170
+ term: 'Kompresja Stratna (Lossy)',
171
+ definition: 'Usuwa dane wizualne, które ludzkie oko postrzega jako „szum”. Idealna dla fotografii. JPEG, stratny WebP, HEIC są kompresjami stratnymi.'
172
+ },
173
+ {
174
+ term: 'Kompresja Bezstratna (Lossless)',
175
+ definition: 'Zmniejsza rozmiar bez utraty informacji wizualnych. PNG i bezstratny WebP. Idealna dla grafik, logo, przezroczystości.'
176
+ },
177
+ {
178
+ term: 'Core Web Vitals (Google)',
179
+ definition: 'Wskaźniki doświadczenia użytkownika: LCP (szybkość ładowania), FID (opóźnienie interakcji), CLS (stabilność wizualna). Wpływają na pozycjonowanie SEO.'
180
+ },
181
+ {
182
+ term: 'WebP',
183
+ definition: 'Format opracowany przez Google. O 25-35% mniejszy niż JPEG. Obsługiwany przez 95% nowoczesnych przeglądarek (wszystkie poza IE).'
184
+ },
185
+ {
186
+ term: 'Artefakty Kompresji',
187
+ definition: 'Wady wizualne spowodowane nadmierną kompresją: plamy, bandowanie kolorów, rozmyte krawędzie. Niedostrzegalne przy jakości powyżej 75%.'
188
+ }
189
+ ] },
190
+
191
+ { type: 'message', title: 'Profesjonalna Optymalizacja Internetowa', ariaLabel: 'Informacja o optymalizacji obrazów dla SEO', html: 'To nie jest techniczna fanaberia: kompresja obrazów to bezpośrednia inwestycja w doświadczenie użytkownika i ranking Google. Każdy kilobajt liczy się na urządzeniach mobilnych. Nasze narzędzie zamienia to, co kiedyś wymagało profesjonalnego oprogramowania ($$$), w darmowy proces zajmujący 3 kliknięcia.' },
192
+
193
+ { type: 'title', text: 'Przygotowany na Nowoczesną Sieć', level: 3 },
194
+ { type: 'paragraph', html: 'Korzystaj z inteligentnej kompresji i formatu WebP, aby Twoja obecność online była szybka, responsywna i konkurencyjna w wyszukiwaniu. Profesjonalna jakość, minimalna waga, błyskawiczne ładowanie.' }
195
+ ];
196
+
197
+ const faqSchema: WithContext<FAQPage> = {
198
+ '@context': 'https://schema.org',
199
+ '@type': 'FAQPage',
200
+ mainEntity: faq.map((item) => ({
201
+ '@type': 'Question',
202
+ name: item.question,
203
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
204
+ })),
205
+ };
206
+
207
+ const howToSchema: WithContext<HowTo> = {
208
+ '@context': 'https://schema.org',
209
+ '@type': 'HowTo',
210
+ name: title,
211
+ description,
212
+ step: howTo.map((step) => ({
213
+ '@type': 'HowToStep',
214
+ name: step.name,
215
+ text: step.text,
216
+ })),
217
+ };
218
+
219
+ const appSchema: WithContext<SoftwareApplication> = {
220
+ '@context': 'https://schema.org',
221
+ '@type': 'SoftwareApplication',
222
+ name: title,
223
+ description,
224
+ applicationCategory: 'UtilitiesApplication',
225
+ operatingSystem: 'Web',
226
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
227
+ inLanguage: 'pl',
228
+ };
229
+
230
+ export const content: ImageCompressorLocaleContent = {
231
+ slug,
232
+ title,
233
+ description,
234
+ ui,
235
+ seo,
236
+ faqTitle: "Często Zadawane Pytania",
237
+ faq,
238
+ bibliographyTitle: "Referencje",
239
+ bibliography,
240
+ howTo,
241
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
242
+ };