@jjlmoya/utils-audiovisual 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +198 -0
  3. package/src/category/i18n/id.ts +198 -0
  4. package/src/category/i18n/it.ts +198 -0
  5. package/src/category/i18n/ja.ts +198 -0
  6. package/src/category/i18n/ko.ts +198 -0
  7. package/src/category/i18n/nl.ts +198 -0
  8. package/src/category/i18n/pl.ts +198 -0
  9. package/src/category/i18n/pt.ts +198 -0
  10. package/src/category/i18n/ru.ts +198 -0
  11. package/src/category/i18n/sv.ts +198 -0
  12. package/src/category/i18n/tr.ts +198 -0
  13. package/src/category/i18n/zh.ts +198 -0
  14. package/src/category/index.ts +31 -3
  15. package/src/tests/i18n_coverage.test.ts +36 -0
  16. package/src/tests/slug_uniqueness.test.ts +81 -0
  17. package/src/tool/chromaticLens/i18n/de.ts +246 -0
  18. package/src/tool/chromaticLens/i18n/id.ts +246 -0
  19. package/src/tool/chromaticLens/i18n/it.ts +246 -0
  20. package/src/tool/chromaticLens/i18n/ja.ts +246 -0
  21. package/src/tool/chromaticLens/i18n/ko.ts +246 -0
  22. package/src/tool/chromaticLens/i18n/nl.ts +246 -0
  23. package/src/tool/chromaticLens/i18n/pl.ts +246 -0
  24. package/src/tool/chromaticLens/i18n/pt.ts +246 -0
  25. package/src/tool/chromaticLens/i18n/ru.ts +246 -0
  26. package/src/tool/chromaticLens/i18n/sv.ts +246 -0
  27. package/src/tool/chromaticLens/i18n/tr.ts +246 -0
  28. package/src/tool/chromaticLens/i18n/zh.ts +246 -0
  29. package/src/tool/chromaticLens/index.ts +15 -7
  30. package/src/tool/collageMaker/i18n/de.ts +233 -0
  31. package/src/tool/collageMaker/i18n/id.ts +233 -0
  32. package/src/tool/collageMaker/i18n/it.ts +233 -0
  33. package/src/tool/collageMaker/i18n/ja.ts +233 -0
  34. package/src/tool/collageMaker/i18n/ko.ts +233 -0
  35. package/src/tool/collageMaker/i18n/nl.ts +233 -0
  36. package/src/tool/collageMaker/i18n/pl.ts +233 -0
  37. package/src/tool/collageMaker/i18n/pt.ts +233 -0
  38. package/src/tool/collageMaker/i18n/ru.ts +233 -0
  39. package/src/tool/collageMaker/i18n/sv.ts +233 -0
  40. package/src/tool/collageMaker/i18n/tr.ts +233 -0
  41. package/src/tool/collageMaker/i18n/zh.ts +233 -0
  42. package/src/tool/collageMaker/index.ts +15 -6
  43. package/src/tool/exifCleaner/i18n/de.ts +277 -0
  44. package/src/tool/exifCleaner/i18n/fr.ts +1 -1
  45. package/src/tool/exifCleaner/i18n/id.ts +277 -0
  46. package/src/tool/exifCleaner/i18n/it.ts +277 -0
  47. package/src/tool/exifCleaner/i18n/ja.ts +277 -0
  48. package/src/tool/exifCleaner/i18n/ko.ts +277 -0
  49. package/src/tool/exifCleaner/i18n/nl.ts +277 -0
  50. package/src/tool/exifCleaner/i18n/pl.ts +277 -0
  51. package/src/tool/exifCleaner/i18n/pt.ts +277 -0
  52. package/src/tool/exifCleaner/i18n/ru.ts +277 -0
  53. package/src/tool/exifCleaner/i18n/sv.ts +277 -0
  54. package/src/tool/exifCleaner/i18n/tr.ts +277 -0
  55. package/src/tool/exifCleaner/i18n/zh.ts +277 -0
  56. package/src/tool/exifCleaner/index.ts +16 -8
  57. package/src/tool/imageCompressor/i18n/de.ts +242 -0
  58. package/src/tool/imageCompressor/i18n/en.ts +1 -1
  59. package/src/tool/imageCompressor/i18n/es.ts +1 -1
  60. package/src/tool/imageCompressor/i18n/id.ts +242 -0
  61. package/src/tool/imageCompressor/i18n/it.ts +242 -0
  62. package/src/tool/imageCompressor/i18n/ja.ts +242 -0
  63. package/src/tool/imageCompressor/i18n/ko.ts +242 -0
  64. package/src/tool/imageCompressor/i18n/nl.ts +242 -0
  65. package/src/tool/imageCompressor/i18n/pl.ts +242 -0
  66. package/src/tool/imageCompressor/i18n/pt.ts +242 -0
  67. package/src/tool/imageCompressor/i18n/ru.ts +242 -0
  68. package/src/tool/imageCompressor/i18n/sv.ts +242 -0
  69. package/src/tool/imageCompressor/i18n/tr.ts +242 -0
  70. package/src/tool/imageCompressor/i18n/zh.ts +244 -0
  71. package/src/tool/imageCompressor/index.ts +15 -7
  72. package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
  73. package/src/tool/printQualityCalculator/i18n/fr.ts +1 -1
  74. package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
  75. package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
  76. package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
  77. package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
  78. package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
  79. package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
  80. package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
  81. package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
  82. package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
  83. package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
  84. package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
  85. package/src/tool/printQualityCalculator/index.ts +15 -7
  86. package/src/tool/privacyBlur/i18n/de.ts +238 -0
  87. package/src/tool/privacyBlur/i18n/id.ts +238 -0
  88. package/src/tool/privacyBlur/i18n/it.ts +238 -0
  89. package/src/tool/privacyBlur/i18n/ja.ts +238 -0
  90. package/src/tool/privacyBlur/i18n/ko.ts +238 -0
  91. package/src/tool/privacyBlur/i18n/nl.ts +238 -0
  92. package/src/tool/privacyBlur/i18n/pl.ts +238 -0
  93. package/src/tool/privacyBlur/i18n/pt.ts +238 -0
  94. package/src/tool/privacyBlur/i18n/ru.ts +238 -0
  95. package/src/tool/privacyBlur/i18n/sv.ts +238 -0
  96. package/src/tool/privacyBlur/i18n/tr.ts +238 -0
  97. package/src/tool/privacyBlur/i18n/zh.ts +238 -0
  98. package/src/tool/privacyBlur/index.ts +15 -7
  99. package/src/tool/subtitleSync/i18n/de.ts +241 -0
  100. package/src/tool/subtitleSync/i18n/fr.ts +5 -5
  101. package/src/tool/subtitleSync/i18n/id.ts +241 -0
  102. package/src/tool/subtitleSync/i18n/it.ts +241 -0
  103. package/src/tool/subtitleSync/i18n/ja.ts +241 -0
  104. package/src/tool/subtitleSync/i18n/ko.ts +241 -0
  105. package/src/tool/subtitleSync/i18n/nl.ts +241 -0
  106. package/src/tool/subtitleSync/i18n/pl.ts +241 -0
  107. package/src/tool/subtitleSync/i18n/pt.ts +241 -0
  108. package/src/tool/subtitleSync/i18n/ru.ts +241 -0
  109. package/src/tool/subtitleSync/i18n/sv.ts +241 -0
  110. package/src/tool/subtitleSync/i18n/tr.ts +241 -0
  111. package/src/tool/subtitleSync/i18n/zh.ts +241 -0
  112. package/src/tool/subtitleSync/index.ts +15 -7
  113. package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
  114. package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
  115. package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
  116. package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
  117. package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
  118. package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
  119. package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
  120. package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
  121. package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
  122. package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
  123. package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
  124. package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
  125. package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
  126. package/src/tool/timelapseCalculator/index.ts +16 -8
  127. package/src/tool/tvDistance/i18n/de.ts +223 -0
  128. package/src/tool/tvDistance/i18n/id.ts +223 -0
  129. package/src/tool/tvDistance/i18n/it.ts +223 -0
  130. package/src/tool/tvDistance/i18n/ja.ts +223 -0
  131. package/src/tool/tvDistance/i18n/ko.ts +223 -0
  132. package/src/tool/tvDistance/i18n/nl.ts +223 -0
  133. package/src/tool/tvDistance/i18n/pl.ts +223 -0
  134. package/src/tool/tvDistance/i18n/pt.ts +223 -0
  135. package/src/tool/tvDistance/i18n/ru.ts +223 -0
  136. package/src/tool/tvDistance/i18n/sv.ts +223 -0
  137. package/src/tool/tvDistance/i18n/tr.ts +223 -0
  138. package/src/tool/tvDistance/i18n/zh.ts +223 -0
  139. package/src/tool/tvDistance/index.ts +15 -7
  140. package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
  141. package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
  142. package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
  143. package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
  144. package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
  145. package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
  146. package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
  147. package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
  148. package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
  149. package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
  150. package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
  151. package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
  152. package/src/tool/videoFrameExtractor/index.ts +16 -8
@@ -0,0 +1,242 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ImageCompressorUI, ImageCompressorLocaleContent } from '../index';
3
+
4
+ const slug = 'online-bildkomprimierer-dateigroesse-ohne-qualitaetsverlust-reduzieren';
5
+ const title = 'Online Bildkomprimierer: Gewicht reduzieren ohne Qualitätsverlust';
6
+ const description = 'Optimieren und komprimieren Sie Ihre JPG-, PNG- und WebP-Fotos kostenlos. Reduzieren Sie die Dateigröße, um die Ladegeschwindigkeit Ihrer Website lokal zu verbessern.';
7
+
8
+ const ui: ImageCompressorUI = {
9
+ dropTitle: "Bilder optimieren",
10
+ dropSubtitle: "Ziehen Sie Ihre Fotos hierher, um ihr Gewicht sofort zu reduzieren.",
11
+ settingsTitle: "Komprimierungseinstellungen",
12
+ qualityLabel: "Visuelle Qualität",
13
+ widthLabel: "Maximale Breite (Pixel)",
14
+ convertToWebpLabel: "In WebP umwandeln",
15
+ compressionLabel: "Komprimierung",
16
+ compressBtn: "Bild komprimieren",
17
+ processingLabel: "Wird verarbeitet...",
18
+ resultsTitle: "Optimierte Bilder",
19
+ originalSizeLabel: "Ursprüngliche Größe",
20
+ newSizeLabel: "Neue Größe",
21
+ reductionLabel: "Ersparnis",
22
+ downloadBtn: "Herunterladen",
23
+ addMoreBtn: "Weitere hinzufügen",
24
+ browseFilesBtn: "Dateien durchsuchen",
25
+ processedFilesTitle: "Verarbeitete Dateien",
26
+ downloadAllBtn: "Alle herunterladen",
27
+ adjustThisImage: "Dieses Bild anpassen",
28
+ downloadTitle: "Download",
29
+ maxWidthLabel: "Max. Breite (px)",
30
+ closeBtn: "Schließen",
31
+ totalSavingsLabel: "Gesamtersparnis",
32
+ noSavings: "Keine Nettoersparnis",
33
+ faqTitle: "Häufig gestellte Fragen",
34
+ bibliographyTitle: "Referenzen"
35
+ };
36
+
37
+ const faq: ImageCompressorLocaleContent['faq'] = [
38
+ {
39
+ question: "Wie funktioniert die verlustfreie Komprimierung?",
40
+ answer: "Wir verwenden Algorithmen, die unnötige Metadaten entfernen und die Pixelkodierung optimieren. Bei der Wahl von WebP wird eine fortschrittlichere Komprimierungstechnologie als bei herkömmlichen Formaten verwendet.",
41
+ },
42
+ {
43
+ question: "Werden meine Bilder auf einen Server hochgeladen?",
44
+ answer: "Nein. Die gesamte Verarbeitung findet zu 100 % in Ihrem Browser statt (Client-Side). Ihre Fotos verlassen niemals Ihren Computer, was absolute Privatsphäre garantiert.",
45
+ },
46
+ {
47
+ question: "Warum sollte ich in WebP konvertieren?",
48
+ answer: "WebP ist der moderne Standard für das Web. Es bietet eine höhere Qualität als JPG und PNG bei einem bis zu 30 % geringeren Gewicht, was die Ladezeit der Seite beschleunigt.",
49
+ },
50
+ ];
51
+
52
+ const howTo: ImageCompressorLocaleContent['howTo'] = [
53
+ {
54
+ name: "Bild hochladen",
55
+ text: "Laden Sie die Datei hoch, die Sie komprimieren möchten (JPG, PNG oder WebP).",
56
+ },
57
+ {
58
+ name: "Qualität anpassen",
59
+ text: "Verwenden Sie den Schieberegler, um das perfekte Gleichgewicht zwischen Dateigröße und visueller Qualität zu finden (empfohlen: 75–85 %).",
60
+ },
61
+ {
62
+ name: "Größe ändern (optional)",
63
+ text: "Wenn das Bild sehr groß ist, können Sie eine maximale Breite angeben, um die Auflösung zu reduzieren.",
64
+ },
65
+ {
66
+ name: "Ergebnis herunterladen",
67
+ text: "Drücken Sie die Download Taste, um Ihr optimiertes Bild zur Verwendung zu erhalten.",
68
+ },
69
+ ];
70
+
71
+ const bibliography: ImageCompressorLocaleContent['bibliography'] = [
72
+ {
73
+ name: "WebP: Ein Bildformat für das Web",
74
+ url: "https://developers.google.com/speed/webp",
75
+ },
76
+ {
77
+ name: "Die Bedeutung der Bildoptimierung für 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: 'Professionelle Web Bildoptimierung',
86
+ items: [
87
+ 'Intelligente JPG-, PNG- und WebP-Komprimierung',
88
+ 'Gewicht um 50–80 % reduzieren bei Beibehaltung der visuellen Qualität',
89
+ '100 % lokale Verarbeitung – Privatsphäre garantiert',
90
+ 'Core Web Vitals und SEO-Positionierung verbessern'
91
+ ]
92
+ },
93
+ { type: 'title', text: 'Bildoptimierung: Web Geschwindigkeit und Core Web Vitals', level: 2 },
94
+ { type: 'paragraph', html: 'In der Ära der digitalen Unmittelbarkeit verliert eine langsame Website Nutzer. Nicht optimierte Bilder machen 60–70 % des Gesamtgewichts einer Webseite aus. Sie zu optimieren ist der erste Schritt, um Ihre Google-Metriken (LCP, CLS) und Ihre Positionierung in den Suchergebnissen zu verbessern.' },
95
+
96
+ { type: 'stats', items: [
97
+ { value: '50-80%', label: 'Typische Gewichtsreduktion', icon: 'mdi:trending-down' },
98
+ { value: '100%', label: 'Lokale Privatsphäre', icon: 'mdi:lock' },
99
+ { value: '+30%', label: 'Schneller als JPG', icon: 'mdi:speedometer' }
100
+ ], columns: 3 },
101
+
102
+ { type: 'title', text: 'Erklärung der Komprimierungsformate', level: 3 },
103
+ { type: 'table', headers: ['Format', 'Komprimierung', 'Anwendungsfälle', 'Kompatibilität'], rows: [
104
+ ['JPEG', 'Verlustbehaftet 50–90 %', 'Kamerafotos, redaktionelle Inhalte', 'Universal (100 %)'],
105
+ ['PNG', 'Verlustfrei 30–50 %', 'Grafiken, Logos, Transparenzen', 'Universal (100 %)'],
106
+ ['WebP', 'Verlustbehaftet/Verlustfrei 25–35 % mehr', 'Modernes Web, soziale Netzwerke', '95 % moderne Browser'],
107
+ ['AVIF', 'Verlustbehaftet/Verlustfrei 20 % Verbesserung', 'Next-Generation-Web', 'Nur neue Browser']
108
+ ] },
109
+
110
+ { type: 'card', title: 'Warum WebP die Zukunft ist', html: 'Google hat WebP speziell für das Web entwickelt. Es bietet eine überlegene Komprimierung gegenüber JPEG und PNG bei gleichbleibender oder verbesserter visueller Qualität. Es ist 25–35 % kleiner als äquivalente JPEGs. Moderne Browser unterstützen es zu 95 %.' },
111
+
112
+ { type: 'title', text: 'Verlustbehaftete vs. verlustfreie Komprimierung', level: 3 },
113
+ { type: 'comparative', items: [
114
+ {
115
+ title: 'Verlustbehaftete Komprimierung',
116
+ description: 'JPG, WebP – Entfernt unmerkliche visuelle Informationen',
117
+ icon: 'mdi:compress',
118
+ points: [
119
+ 'Reduziert 70–90 % des ursprünglichen Gewichts',
120
+ 'Für das menschliche Auge unmerklich, wenn die Qualität >75 % bleibt',
121
+ 'Ideal für realistische Fotografie',
122
+ 'Nicht empfohlen für Logos oder scharfen Text'
123
+ ],
124
+ highlight: true
125
+ },
126
+ {
127
+ title: 'Verlustfreie Komprimierung',
128
+ description: 'PNG, WebP verlustfrei – Behält 100 % der visuellen Daten bei',
129
+ icon: 'mdi:shield',
130
+ points: [
131
+ 'Reduziert 20–50 % des Gewichts',
132
+ 'Perfekte Qualität, keine Verschlechterung',
133
+ 'Ideal für Grafiken, Logos, Transparenzen',
134
+ 'Schwerere Dateien als bei verlustbehafteter Komprimierung'
135
+ ]
136
+ }
137
+ ], columns: 2 },
138
+
139
+ { type: 'title', text: 'Auswirkungen auf SEO und Conversion', level: 3 },
140
+ { type: 'list', items: [
141
+ '<strong>Core Web Vitals:</strong> Google straft langsame Seiten ab. Optimierte Bilder verbessern LCP (Largest Contentful Paint) direkt.',
142
+ '<strong>Absprungrate:</strong> Jede Sekunde Verzögerung = 7 % mehr Absprünge. Schnellere Bilder = weniger Nutzer, die die Seite verlassen.',
143
+ '<strong>Suchmaschinen-Ranking:</strong> Geschwindigkeit ist ein Ranking-Faktor. Die Optimierung von Bildern steigert die Positionierung.',
144
+ '<strong>Conversion:</strong> Schnellere Ladezeiten = mehr Conversions. Studien zeigen +10 % Conversion durch Optimierung.'
145
+ ], icon: 'mdi:check' },
146
+
147
+ { type: 'proscons', items: [
148
+ {
149
+ pro: 'Vollständige Privatsphäre: 100 % lokale Verarbeitung, keine Cloud-Server',
150
+ con: 'Erfordert Browser mit Canvas-API-Unterstützung (universell verfügbar)'
151
+ },
152
+ {
153
+ pro: 'WebP ist 25–35 % kleiner als JPEG bei gleicher Qualität',
154
+ con: 'Alte Versionen von Safari und IE unterstützen WebP nicht (Fallback verfügbar)'
155
+ },
156
+ {
157
+ pro: 'Sofortige Verarbeitung mehrerer Bilder',
158
+ con: 'Sehr große Bilder (>50 MB) erfordern möglicherweise Wartezeit'
159
+ },
160
+ {
161
+ pro: 'Optionales Resizing: Reduziert Auflösung zusätzlich zur Komprimierung',
162
+ con: 'Resizing führt zu Informationsverlust – besser die Auflösung an der Quelle optimieren'
163
+ }
164
+ ], proTitle: 'Vorteile', conTitle: 'Einschränkungen' },
165
+
166
+ { type: 'diagnostic', variant: 'warning', title: 'Vorsicht: Übermäßige Komprimierung verschlechtert das Bild', icon: 'mdi:alert', badge: 'Qualität', html: 'Halten Sie die Qualität >75 % für Fotografie und >85 % für redaktionelle Inhalte. Darunter werden Komprimierungsartefakte (Flecken, Streifenbildung) sichtbar. Ein Bild, das als Thumbnail gut aussieht, kann in groß schlecht wirken.' },
167
+
168
+ { type: 'glossary', items: [
169
+ {
170
+ term: 'Verlustbehaftete Komprimierung',
171
+ definition: 'Entfernt visuelle Daten, die das menschliche Auge als „Rauschen“ wahrnimmt. Ideal für Fotografie. JPEG, verlustbehaftetes WebP, HEIC sind verlustbehaftet.'
172
+ },
173
+ {
174
+ term: 'Verlustfreie Komprimierung',
175
+ definition: 'Reduziert die Größe ohne Verlust visueller Informationen. PNG und verlustfreies WebP. Ideal für Grafiken, Logos, Transparenzen.'
176
+ },
177
+ {
178
+ term: 'Core Web Vitals (Google)',
179
+ definition: 'Metriken für die Benutzererfahrung: LCP (Ladegeschwindigkeit), FID (Interaktionslatenz), CLS (visuelle Stabilität). Beeinflussen das SEO-Ranking.'
180
+ },
181
+ {
182
+ term: 'WebP',
183
+ definition: 'Von Google entwickeltes Format. 25–35 % kleiner als JPEG. Wird von 95 % der modernen Browser unterstützt (alle außer IE).'
184
+ },
185
+ {
186
+ term: 'Komprimierungsartefakte',
187
+ definition: 'Visuelle Defekte durch übermäßige Komprimierung: Flecken, Farbabstufungen, unscharfe Kanten. Unmerklich bei >75 % Qualität.'
188
+ }
189
+ ] },
190
+
191
+ { type: 'message', title: 'Professionelle Web Optimierung', ariaLabel: 'Informationen zur Bildoptimierung für SEO', html: 'Es ist keine technische Spielerei: Das Komprimieren von Bildern ist eine direkte Investition in die Benutzererfahrung und das Google-Ranking. Auf Mobilgeräten zählt jedes Kilobyte. Unser Tool macht das, was früher teure Profi-Software ($$$) erforderte, zu einem kostenlosen 3-Klick-Prozess.' },
192
+
193
+ { type: 'title', text: 'Bereit für das moderne Web', level: 3 },
194
+ { type: 'paragraph', html: 'Nutzen Sie intelligente Komprimierung und das WebP-Format, damit Ihre Onlinevisibilität schnell, responsiv und wettbewerbsfähig in der Suche ist. Professionelle Qualität, minimales Gewicht, sofortiges 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: 'de',
228
+ };
229
+
230
+ export const content: ImageCompressorLocaleContent = {
231
+ slug,
232
+ title,
233
+ description,
234
+ ui,
235
+ seo,
236
+ faqTitle: "Häufig gestellte Fragen",
237
+ faq,
238
+ bibliographyTitle: "Referenzen",
239
+ bibliography,
240
+ howTo,
241
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
242
+ };
@@ -56,7 +56,7 @@ const howTo: ImageCompressorLocaleContent['howTo'] = [
56
56
  },
57
57
  {
58
58
  name: "Adjust quality",
59
- text: "Use the slider to find the perfect balance between file size and visual quality (recommended: 75-85%).",
59
+ text: "Use the slider to find the perfect balance between file size and visual quality (recommended: 75 85%).",
60
60
  },
61
61
  {
62
62
  name: "Resize (optional)",
@@ -54,7 +54,7 @@ const howTo: ImageCompressorLocaleContent['howTo'] = [
54
54
  },
55
55
  {
56
56
  name: "Ajusta la calidad",
57
- text: "Usa el deslizador para encontrar el equilibrio perfecto entre peso de archivo y calidad visual (recomendado: 75-85%).",
57
+ text: "Usa el deslizador para encontrar el equilibrio perfecto entre peso de archivo y calidad visual (recomendado: 75 85%).",
58
58
  },
59
59
  {
60
60
  name: "Redimensiona (opcional)",
@@ -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-gambar-online-kurangi-ukuran-file-tanpa-kehilangan-kualitas';
5
+ const title = 'Kompresor Gambar Online: Kurangi berat tanpa kehilangan kualitas';
6
+ const description = 'Optimalkan dan kompres foto JPG, PNG, dan WebP Anda secara gratis. Kurangi ukuran file untuk meningkatkan kecepatan pemuatan web Anda secara lokal.';
7
+
8
+ const ui: ImageCompressorUI = {
9
+ dropTitle: "Optimalkan Gambar",
10
+ dropSubtitle: "Seret foto Anda untuk mengurangi beratnya secara instan.",
11
+ settingsTitle: "Pengaturan Kompresi",
12
+ qualityLabel: "Kualitas Visual",
13
+ widthLabel: "Lebar Maksimum (Piksel)",
14
+ convertToWebpLabel: "Konversi ke WebP",
15
+ compressionLabel: "Kompresi",
16
+ compressBtn: "Kompres Gambar",
17
+ processingText: "Memproses...",
18
+ resultsTitle: "Gambar yang Dioptimalkan",
19
+ originalSizeLabel: "Ukuran Asli",
20
+ newSizeLabel: "Ukuran Baru",
21
+ reductionLabel: "Penghematan",
22
+ downloadBtn: "Unduh",
23
+ addMoreBtn: "Tambah lagi",
24
+ browseFilesBtn: "Telusuri file",
25
+ processedFilesTitle: "File yang Diperoses",
26
+ downloadAllBtn: "Unduh Semua",
27
+ adjustThisImage: "Sesuaikan gambar ini",
28
+ downloadTitle: "Unduh",
29
+ maxWidthLabel: "Lebar maks (px)",
30
+ closeBtn: "Tutup",
31
+ totalSavingsLabel: "Total penghematan",
32
+ noSavings: "Tidak ada penghematan bersih",
33
+ faqTitle: "Pertanyaan yang Sering Diajukan",
34
+ bibliographyTitle: "Referensi"
35
+ };
36
+
37
+ const faq: ImageCompressorLocaleContent['faq'] = [
38
+ {
39
+ question: "Bagaimana cara kerja kompresi lossless?",
40
+ answer: "Kami menggunakan algoritma yang menghapus metadata yang tidak perlu dan mengoptimalkan pengkodean piksel. Saat memilih WebP, teknologi kompresi yang lebih canggih daripada format tradisional digunakan.",
41
+ },
42
+ {
43
+ question: "Apakah gambar saya diunggah ke server mana pun?",
44
+ answer: "Tidak. Semua pemrosesan terjadi 100% di browser Anda (Client-Side). Foto Anda tidak pernah meninggalkan komputer Anda, menjamin privasi absolut.",
45
+ },
46
+ {
47
+ question: "Mengapa saya harus mengonversi ke WebP?",
48
+ answer: "WebP adalah format standar modern untuk web. Ini menawarkan kualitas yang lebih unggul daripada JPG dan PNG dengan berat hingga 30% lebih sedikit, yang mempercepat waktu pemuatan halaman.",
49
+ },
50
+ ];
51
+
52
+ const howTo: ImageCompressorLocaleContent['howTo'] = [
53
+ {
54
+ name: "Unggah gambar",
55
+ text: "Unggah file yang ingin Anda kompres (JPG, PNG, atau WebP).",
56
+ },
57
+ {
58
+ name: "Sesuaikan kualitas",
59
+ text: "Gunakan penggeser untuk menemukan keseimbangan sempurna antara ukuran file dan kualitas visual (disarankan: 75 85%).",
60
+ },
61
+ {
62
+ name: "Ubah ukuran (opsional)",
63
+ text: "Jika gambar sangat besar, Anda dapat menentukan lebar maksimum untuk mengurangi resolusinya.",
64
+ },
65
+ {
66
+ name: "Unduh hasilnya",
67
+ text: "Tekan tombol unduh untuk mendapatkan gambar yang dioptimalkan yang siap digunakan.",
68
+ },
69
+ ];
70
+
71
+ const bibliography: ImageCompressorLocaleContent['bibliography'] = [
72
+ {
73
+ name: "WebP: Format Gambar untuk Web",
74
+ url: "https://developers.google.com/speed/webp",
75
+ },
76
+ {
77
+ name: "Pentingnya optimalisasi gambar untuk 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: 'Optimalisasi Gambar Web Profesional',
86
+ items: [
87
+ 'Kompresi JPG, PNG, dan WebP yang cerdas',
88
+ 'Kurangi berat 50-80% dengan menjaga kualitas visual',
89
+ 'Pemrosesan lokal 100% - privasi terjamin',
90
+ 'Tingkatkan Core Web Vitals dan posisi SEO'
91
+ ]
92
+ },
93
+ { type: 'title', text: 'Optimalisasi Gambar: Kecepatan Web dan Core Web Vitals', level: 2 },
94
+ { type: 'paragraph', html: 'Di era kesegeraan digital, web yang lambat akan kehilangan pengguna. Gambar yang tidak dioptimalkan mewakili 60-70% dari total berat halaman web. Mengoptimalkannya adalah langkah pertama untuk meningkatkan metrik Google Anda (LCP, CLS) dan posisi Anda dalam hasil pencarian.' },
95
+
96
+ { type: 'stats', items: [
97
+ { value: '50-80%', label: 'Pengurangan Berat Tipikal', icon: 'mdi:trending-down' },
98
+ { value: '100%', label: 'Privasi Lokal', icon: 'mdi:lock' },
99
+ { value: '+30%', label: 'Lebih Cepat dari JPG', icon: 'mdi:speedometer' }
100
+ ], columns: 3 },
101
+
102
+ { type: 'title', text: 'Format Kompresi Dijelaskan', level: 3 },
103
+ { type: 'table', headers: ['Format', 'Kompresi', 'Kasus Penggunaan', 'Kompatibilitas'], rows: [
104
+ ['JPEG', 'Lossy 50-90%', 'Foto kamera, konten editorial', 'Universal (100%)'],
105
+ ['PNG', 'Lossless 30-50%', 'Grafis, logo, transparansi', 'Universal (100%)'],
106
+ ['WebP', 'Lossy/Lossless 25-35% lebih banyak', 'Web modern, jejaring sosial', '95% browser modern'],
107
+ ['AVIF', 'Lossy/Lossless peningkatan 20%', 'Web generasi berikutnya', 'Hanya browser baru']
108
+ ] },
109
+
110
+ { type: 'card', title: 'Mengapa WebP adalah Masa Depan', html: 'Google mengembangkan WebP khusus untuk web. Format ini menawarkan kompresi yang lebih baik daripada JPEG dan PNG, dengan menjaga atau meningkatkan kualitas visual. Ukurannya 25-35% lebih kecil daripada JPEG yang setara. Browser modern mendukungnya hingga 95%.' },
111
+
112
+ { type: 'title', text: 'Kompresi Lossy vs Lossless', level: 3 },
113
+ { type: 'comparative', items: [
114
+ {
115
+ title: 'Kompresi Lossy',
116
+ description: 'JPG, WebP - Menghapus informasi visual yang tidak terlihat',
117
+ icon: 'mdi:compress',
118
+ points: [
119
+ 'Mengurangi 70-90% dari berat asli',
120
+ 'Tidak terlihat oleh mata manusia jika kualitas dijaga >75%',
121
+ 'Ideal untuk fotografi realistis',
122
+ 'Tidak disarankan untuk logo atau teks yang tajam'
123
+ ],
124
+ highlight: true
125
+ },
126
+ {
127
+ title: 'Kompresi Lossless',
128
+ description: 'PNG, WebP lossless - Menjaga 100% data visual',
129
+ icon: 'mdi:shield',
130
+ points: [
131
+ 'Mengurangi 20-50% berat',
132
+ 'Kualitas sempurna, tidak ada degradasi',
133
+ 'Ideal untuk grafis, logo, transparansi',
134
+ 'File lebih berat daripada Lossy'
135
+ ]
136
+ }
137
+ ], columns: 2 },
138
+
139
+ { type: 'title', text: 'Dampak pada SEO dan Konversi', level: 3 },
140
+ { type: 'list', items: [
141
+ '<strong>Core Web Vitals:</strong> Google menghukum situs yang lambat. Gambar yang dioptimalkan meningkatkan LCP (Largest Contentful Paint) secara langsung.',
142
+ '<strong>Rasio Pentalan:</strong> Setiap detik penundaan = 7% lebih banyak pentalan. Gambar yang lebih cepat = lebih sedikit pengguna yang pergi.',
143
+ '<strong>Peringkat Pencarian:</strong> Kecepatan adalah faktor peringkat. Mengoptimalkan gambar meningkatkan posisi.',
144
+ '<strong>Konversi:</strong> Waktu pemuatan yang lebih cepat = lebih banyak konversi. Studi menunjukkan peningkatan konversi +10% dengan optimalisasi.'
145
+ ], icon: 'mdi:check' },
146
+
147
+ { type: 'proscons', items: [
148
+ {
149
+ pro: 'Privasi total: pemrosesan lokal 100%, tidak ada server cloud',
150
+ con: 'Memerlukan browser dengan dukungan Canvas API (ini universal)'
151
+ },
152
+ {
153
+ pro: 'WebP 25-35% lebih kecil daripada JPEG dengan kualitas yang sama',
154
+ con: 'Safari versi lama dan IE tidak mendukung WebP (fallback tersedia)'
155
+ },
156
+ {
157
+ pro: 'Pemrosesan instan beberapa gambar',
158
+ con: 'Gambar yang sangat besar (>50MB) mungkin memerlukan waktu tunggu'
159
+ },
160
+ {
161
+ pro: 'Ubah ukuran opsional: mengurangi resolusi serta kompresi',
162
+ con: 'Mengubah ukuran menghilangkan informasi - lebih baik mengoptimalkan resolusi di sumbernya'
163
+ }
164
+ ], proTitle: 'Keuntungan', conTitle: 'Batasan' },
165
+
166
+ { type: 'diagnostic', variant: 'warning', title: 'Perhatian: Kompresi Berlebih Menurunkan Kualitas', icon: 'mdi:alert', badge: 'Kualitas', html: 'Jaga kualitas >75% untuk fotografi dan >85% untuk konten editorial. Di bawah itu, artefak kompresi (noda, pita warna) menjadi terlihat. Gambar yang terlihat bagus di thumbnail mungkin terlihat buruk saat besar.' },
167
+
168
+ { type: 'glossary', items: [
169
+ {
170
+ term: 'Kompresi Lossy',
171
+ definition: 'Menghapus data visual yang oleh mata manusia dianggap sebagai \"noise\". Ideal untuk fotografi. JPEG, WebP lossy, HEIC bersifat lossy.'
172
+ },
173
+ {
174
+ term: 'Kompresi Lossless',
175
+ definition: 'Mengurangi ukuran tanpa kehilangan informasi visual. PNG dan WebP lossless. Ideal untuk grafis, logo, transparansi.'
176
+ },
177
+ {
178
+ term: 'Core Web Vitals (Google)',
179
+ definition: 'Metrik pengalaman pengguna: LCP (kecepatan pemuatan), FID (latensi interaksi), CLS (stabilitas visual). Mempengaruhi peringkat SEO.'
180
+ },
181
+ {
182
+ term: 'WebP',
183
+ definition: 'Format yang dikembangkan oleh Google. 25-35% lebih kecil dari JPEG. Didukung oleh 95% browser modern (semua kecuali IE).'
184
+ },
185
+ {
186
+ term: 'Artefak Kompresi',
187
+ definition: 'Cacat visual yang disebabkan oleh kompresi berlebih: noda, pita warna, tepian kabur. Tidak terlihat jika kualitas >75%.'
188
+ }
189
+ ] },
190
+
191
+ { type: 'message', title: 'Optimalisasi Web Profesional', ariaLabel: 'Informasi tentang optimalisasi gambar untuk SEO', html: 'Ini bukan sekadar kesombongan teknis: mengompres gambar adalah investasi langsung dalam pengalaman pengguna dan peringkat di Google. Setiap kilobyte sangat berarti di perangkat seluler. Alat kami mengubah apa yang dulu memerlukan perangkat lunak profesional ($$$) menjadi proses gratis dengan 3 klik.' },
192
+
193
+ { type: 'title', text: 'Bersiaplah untuk Web Modern', level: 3 },
194
+ { type: 'paragraph', html: 'Gunakan kompresi cerdas dan format WebP agar kehadiran online Anda cepat, responsif, dan kompetitif dalam pencarian. Kualitas profesional, berat minimum, pemuatan instan.' }
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: 'id',
228
+ };
229
+
230
+ export const content: ImageCompressorLocaleContent = {
231
+ slug,
232
+ title,
233
+ description,
234
+ ui,
235
+ seo,
236
+ faqTitle: "Pertanyaan yang Sering Diajukan",
237
+ faq,
238
+ bibliographyTitle: "Referensi",
239
+ bibliography,
240
+ howTo,
241
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
242
+ };