@jjlmoya/utils-converters 1.25.0 → 1.26.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 (133) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/en.ts +1 -1
  4. package/src/category/i18n/fr.ts +1 -1
  5. package/src/category/i18n/id.ts +1 -1
  6. package/src/category/i18n/it.ts +1 -1
  7. package/src/category/i18n/nl.ts +1 -1
  8. package/src/category/i18n/pl.ts +1 -1
  9. package/src/category/i18n/pt.ts +1 -1
  10. package/src/category/i18n/sv.ts +1 -1
  11. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  12. package/src/tests/category_seo_quality.test.ts +74 -0
  13. package/src/tests/faq_count.test.ts +1 -1
  14. package/src/tests/no_h1_in_components.test.ts +1 -1
  15. package/src/tests/seo_parity.test.ts +2 -2
  16. package/src/tests/seo_wellformed_export.test.ts +65 -0
  17. package/src/tests/tool_validation.test.ts +15 -15
  18. package/src/tool/avifAJpg/i18n/en.ts +164 -164
  19. package/src/tool/avifAJpg/i18n/es.ts +164 -164
  20. package/src/tool/avifAJpg/i18n/fr.ts +164 -164
  21. package/src/tool/avifAJpg/i18n/ja.ts +166 -166
  22. package/src/tool/avifAJpg/i18n/ko.ts +166 -166
  23. package/src/tool/avifAJpg/i18n/zh.ts +166 -166
  24. package/src/tool/avifAJpg/seo.astro +15 -15
  25. package/src/tool/avifAPng/i18n/en.ts +164 -164
  26. package/src/tool/avifAPng/i18n/es.ts +164 -164
  27. package/src/tool/avifAPng/i18n/fr.ts +164 -164
  28. package/src/tool/avifAPng/i18n/ja.ts +166 -166
  29. package/src/tool/avifAPng/i18n/ko.ts +166 -166
  30. package/src/tool/avifAPng/i18n/zh.ts +166 -166
  31. package/src/tool/avifAPng/seo.astro +15 -15
  32. package/src/tool/avifAWebp/i18n/en.ts +164 -164
  33. package/src/tool/avifAWebp/i18n/es.ts +164 -164
  34. package/src/tool/avifAWebp/i18n/fr.ts +164 -164
  35. package/src/tool/avifAWebp/i18n/ja.ts +166 -166
  36. package/src/tool/avifAWebp/i18n/ko.ts +166 -166
  37. package/src/tool/avifAWebp/i18n/zh.ts +166 -166
  38. package/src/tool/avifAWebp/seo.astro +15 -15
  39. package/src/tool/bmpAJpg/i18n/en.ts +164 -164
  40. package/src/tool/bmpAJpg/i18n/es.ts +164 -164
  41. package/src/tool/bmpAJpg/i18n/fr.ts +164 -164
  42. package/src/tool/bmpAJpg/i18n/ja.ts +166 -166
  43. package/src/tool/bmpAJpg/i18n/ko.ts +166 -166
  44. package/src/tool/bmpAJpg/i18n/zh.ts +166 -166
  45. package/src/tool/bmpAJpg/seo.astro +15 -15
  46. package/src/tool/bmpAPng/i18n/en.ts +164 -164
  47. package/src/tool/bmpAPng/i18n/es.ts +164 -164
  48. package/src/tool/bmpAPng/i18n/fr.ts +164 -164
  49. package/src/tool/bmpAPng/i18n/ja.ts +165 -165
  50. package/src/tool/bmpAPng/i18n/ko.ts +165 -165
  51. package/src/tool/bmpAPng/i18n/zh.ts +165 -165
  52. package/src/tool/bmpAPng/seo.astro +15 -15
  53. package/src/tool/bmpAWebp/i18n/en.ts +164 -164
  54. package/src/tool/bmpAWebp/i18n/es.ts +164 -164
  55. package/src/tool/bmpAWebp/i18n/fr.ts +164 -164
  56. package/src/tool/bmpAWebp/i18n/ja.ts +166 -166
  57. package/src/tool/bmpAWebp/i18n/ko.ts +166 -166
  58. package/src/tool/bmpAWebp/i18n/zh.ts +166 -166
  59. package/src/tool/bmpAWebp/seo.astro +15 -15
  60. package/src/tool/gifAJpg/i18n/en.ts +164 -164
  61. package/src/tool/gifAJpg/i18n/es.ts +164 -164
  62. package/src/tool/gifAJpg/i18n/fr.ts +164 -164
  63. package/src/tool/gifAJpg/i18n/ja.ts +166 -166
  64. package/src/tool/gifAJpg/i18n/ko.ts +166 -166
  65. package/src/tool/gifAJpg/i18n/zh.ts +166 -166
  66. package/src/tool/gifAJpg/seo.astro +15 -15
  67. package/src/tool/gifAPng/i18n/en.ts +164 -164
  68. package/src/tool/gifAPng/i18n/es.ts +164 -164
  69. package/src/tool/gifAPng/i18n/fr.ts +164 -164
  70. package/src/tool/gifAPng/i18n/ja.ts +166 -166
  71. package/src/tool/gifAPng/i18n/ko.ts +166 -166
  72. package/src/tool/gifAPng/i18n/zh.ts +166 -166
  73. package/src/tool/gifAPng/seo.astro +15 -15
  74. package/src/tool/gifAWebp/i18n/en.ts +164 -164
  75. package/src/tool/gifAWebp/i18n/es.ts +164 -164
  76. package/src/tool/gifAWebp/i18n/fr.ts +164 -164
  77. package/src/tool/gifAWebp/i18n/ja.ts +166 -166
  78. package/src/tool/gifAWebp/i18n/ko.ts +166 -166
  79. package/src/tool/gifAWebp/i18n/zh.ts +166 -166
  80. package/src/tool/gifAWebp/seo.astro +15 -15
  81. package/src/tool/imagenBase64/i18n/en.ts +154 -154
  82. package/src/tool/imagenBase64/i18n/es.ts +154 -154
  83. package/src/tool/imagenBase64/i18n/fr.ts +154 -154
  84. package/src/tool/imagenBase64/seo.astro +15 -15
  85. package/src/tool/jpgAIco/seo.astro +15 -15
  86. package/src/tool/jpgAPng/i18n/en.ts +164 -164
  87. package/src/tool/jpgAPng/i18n/es.ts +164 -164
  88. package/src/tool/jpgAPng/i18n/fr.ts +164 -164
  89. package/src/tool/jpgAPng/i18n/ja.ts +166 -166
  90. package/src/tool/jpgAPng/i18n/ko.ts +166 -166
  91. package/src/tool/jpgAPng/i18n/zh.ts +166 -166
  92. package/src/tool/jpgAPng/seo.astro +15 -15
  93. package/src/tool/jpgAWebp/i18n/en.ts +164 -164
  94. package/src/tool/jpgAWebp/i18n/es.ts +164 -164
  95. package/src/tool/jpgAWebp/i18n/fr.ts +164 -164
  96. package/src/tool/jpgAWebp/seo.astro +15 -15
  97. package/src/tool/pngAIco/seo.astro +15 -15
  98. package/src/tool/pngAJpg/i18n/de.ts +21 -21
  99. package/src/tool/pngAJpg/i18n/es.ts +177 -177
  100. package/src/tool/pngAJpg/i18n/fr.ts +137 -137
  101. package/src/tool/pngAJpg/i18n/id.ts +89 -89
  102. package/src/tool/pngAJpg/i18n/it.ts +89 -89
  103. package/src/tool/pngAJpg/i18n/ko.ts +177 -177
  104. package/src/tool/pngAJpg/i18n/nl.ts +20 -20
  105. package/src/tool/pngAJpg/i18n/pl.ts +89 -89
  106. package/src/tool/pngAJpg/i18n/pt.ts +89 -89
  107. package/src/tool/pngAJpg/i18n/ru.ts +177 -177
  108. package/src/tool/pngAJpg/i18n/sv.ts +89 -89
  109. package/src/tool/pngAJpg/i18n/tr.ts +89 -89
  110. package/src/tool/pngAJpg/seo.astro +15 -15
  111. package/src/tool/pngAWebp/i18n/en.ts +164 -164
  112. package/src/tool/pngAWebp/i18n/es.ts +164 -164
  113. package/src/tool/pngAWebp/i18n/fr.ts +164 -164
  114. package/src/tool/pngAWebp/seo.astro +15 -15
  115. package/src/tool/svgAJpg/i18n/fr.ts +164 -164
  116. package/src/tool/svgAJpg/seo.astro +15 -15
  117. package/src/tool/svgAPng/i18n/fr.ts +164 -164
  118. package/src/tool/svgAPng/seo.astro +15 -15
  119. package/src/tool/webpAIco/seo.astro +15 -15
  120. package/src/tool/webpAJpg/seo.astro +15 -15
  121. package/src/tool/webpAPng/bibliography.ts +13 -13
  122. package/src/tool/webpAPng/i18n/de.ts +166 -166
  123. package/src/tool/webpAPng/i18n/es.ts +171 -171
  124. package/src/tool/webpAPng/i18n/fr.ts +166 -166
  125. package/src/tool/webpAPng/i18n/id.ts +166 -166
  126. package/src/tool/webpAPng/i18n/it.ts +166 -166
  127. package/src/tool/webpAPng/i18n/nl.ts +166 -166
  128. package/src/tool/webpAPng/i18n/pl.ts +166 -166
  129. package/src/tool/webpAPng/i18n/pt.ts +166 -166
  130. package/src/tool/webpAPng/i18n/ru.ts +166 -166
  131. package/src/tool/webpAPng/i18n/sv.ts +166 -166
  132. package/src/tool/webpAPng/i18n/tr.ts +167 -167
  133. package/src/tool/webpAPng/seo.astro +15 -15
@@ -1,168 +1,168 @@
1
1
  import { bibliography } from '../bibliography';
2
- import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
3
3
  import { generateSchemas } from '../../../shared/logic/schemas';
4
- import type { PngAWebpLocaleContent } from '../index';
5
-
6
- const slug = 'convertisseur-png-en-webp';
7
- const title = 'Convertir PNG en WebP en Ligne et Gratuitement';
8
- const description =
9
- 'Convertissez des images PNG en WebP dans votre navigateur. Jusqu\'à 40% de taille en moins. Préserve la transparence. Sans téléchargement. Gratuit et privé.';
10
-
11
- const ui: ImageConverterUI = {
12
- dragText: 'Faites glisser des fichiers PNG...',
13
- convertText: 'Pour les convertir en WebP instantanément',
14
- selectFiles: 'Sélectionner des fichiers',
15
- processedFiles: 'Fichiers traités',
16
- downloadAll: 'Tout télécharger (.zip)',
4
+ import type { PngAWebpLocaleContent } from '../index';
5
+
6
+ const slug = 'convertisseur-png-en-webp';
7
+ const title = 'Convertir PNG en WebP en Ligne et Gratuitement';
8
+ const description =
9
+ 'Convertissez des images PNG en WebP dans votre navigateur. Jusqu\'à 40% de taille en moins. Préserve la transparence. Sans téléchargement. Gratuit et privé.';
10
+
11
+ const ui: ImageConverterUI = {
12
+ dragText: 'Faites glisser des fichiers PNG...',
13
+ convertText: 'Pour les convertir en WebP instantanément',
14
+ selectFiles: 'Sélectionner des fichiers',
15
+ processedFiles: 'Fichiers traités',
16
+ downloadAll: 'Tout télécharger (.zip)',
17
17
  pending: 'En attente',
18
- bibliographyTitle: 'Références Bibliographiques',
19
- faqTitle: 'Questions Fréquentes',
20
- };
21
-
22
- const faq: PngAWebpLocaleContent['faq'] = [
23
- {
24
- question: 'Pourquoi convertir PNG en WebP ?',
25
- answer:
26
- 'WebP offre une compression jusqu\'à 40% supérieure au PNG à qualité égale, tout en supportant également la transparence Alpha. C\'est le format recommandé par Google PageSpeed Insights.',
27
- },
28
- {
29
- question: 'La transparence est-elle perdue dans le processus ?',
30
- answer:
31
- 'Non. L\'implémentation technique de WebP supporte le canal alpha. Les transparences du PNG original seront préservées dans le nouveau fichier WebP.',
32
- },
33
- {
34
- question: 'Mes images vont-elles sur un serveur ?',
35
- answer:
36
- 'Non. Le code s\'exécute uniquement dans votre navigateur (côté client). Nous ne voyons, n\'enregistrons ni ne sauvegardons jamais les images que vous convertissez.',
37
- },
38
- ];
39
-
40
- const howTo: PngAWebpLocaleContent['howTo'] = [
41
- {
42
- name: 'Insérez vos PNG',
43
- text: 'Déposez vos gros fichiers PNG dans la zone de téléchargement ou utilisez le sélecteur interactif traditionnel.',
44
- },
45
- {
46
- name: 'Détection des canaux',
47
- text: 'Le moteur de rendu local détectera et exportera la composition de pixels au format WebP optimisé.',
48
- },
49
- {
50
- name: 'Téléchargement direct',
51
- text: 'Téléchargez vos fichiers WebP hautement compressés individuellement ou regroupez-les dans un package ZIP.',
52
- },
53
- ];
54
-
55
- const seo: PngAWebpLocaleContent['seo'] = [
56
- {
57
- type: 'title',
58
- text: 'Convertisseur PNG vers WebP: Transparence et Compression Moderne pour le Web',
59
- level: 2,
60
- },
61
- {
62
- type: 'paragraph',
63
- html: 'Le <strong>PNG</strong> est le format de référence pour les images web avec transparence depuis des décennies - logos, icônes, éléments d\'interface, images de produits sur fond découpé. Son problème est le poids: la compression sans perte qui garantit sa qualité génère également des fichiers notablement volumineux. Le <strong>WebP</strong> de Google résout cette contradiction: il supporte le canal alpha (transparence) <em>et</em> compresse bien mieux que le PNG, faisant du passage de PNG à WebP l\'optimisation parfaite qui ne sacrifie rien.',
64
- },
65
- {
66
- type: 'title',
67
- text: 'PNG ou WebP ? Quand utiliser chaque format',
68
- level: 3,
69
- },
70
- {
71
- type: 'paragraph',
72
- html: 'Le <strong>PNG</strong> reste le bon format lorsque la compatibilité est critique: outils de design comme Photoshop ou Figma, flux d\'impression, applications de bureau ancienne ou tout contexte où le support WebP n\'est pas garanti. C\'est aussi le format idéal pour sauvegarder les calques de travail dans les pipelines d\'édition, car sa compression sans perte préserve chaque pixel. Le coût: des fichiers qui peuvent peser 3 à 8 fois plus que leur équivalent WebP.',
73
- },
74
- {
75
- type: 'paragraph',
76
- html: 'Le <strong>WebP</strong> est le remplacement naturel du PNG pour tout le contenu web moderne. Chrome, Firefox, Safari et Edge le supportent nativement. Une image WebP sans perte est 26 % plus petite que le PNG équivalent ; en mode avec perte, elle peut être jusqu\'à 40 % plus petite avec une qualité visuelle pratiquement indistinguible. Et, point crucial pour le design web: <strong>WebP préserve la transparence alpha</strong> exactement comme le PNG, sans aucun compromis visuel.',
77
- },
78
- {
79
- type: 'title',
80
- text: 'Comparatif: Conversion locale vs Cloud',
81
- level: 3,
82
- },
83
- {
84
- type: 'comparative',
85
- items: [
86
- {
87
- title: 'Convertisseurs Cloud',
88
- description: 'Outils qui envoient vos fichiers vers un serveur distant.',
89
- icon: 'mdi:cloud-upload',
90
- pointIcon: 'mdi:close-circle-outline',
91
- points: [
92
- 'Latence réseau à l\'envoi et au téléchargement',
93
- 'Vos logos et images stockés sur des serveurs tiers',
94
- 'Limites de taille et quota quotidien de conversions',
95
- 'Publicités intrusives et traceurs tiers',
96
- ],
97
- },
98
- {
99
- title: 'Notre Architecture Locale',
100
- description: 'Traitement direct sur votre matériel via la technologie Vanilla JS.',
101
- icon: 'mdi:laptop-mac',
102
- highlight: true,
103
- points: [
104
- 'Vitesse instantanée - zéro latence réseau',
105
- 'Confidentialité totale - 0 octet envoyé à l\'extérieur',
106
- 'Aucune limite de taille ni de nombre de fichiers',
107
- 'Interface épurée, sans publicités ni traçage',
108
- ],
109
- },
110
- ],
111
- },
112
- {
113
- type: 'title',
114
- text: 'Comment ça fonctionne techniquement',
115
- level: 3,
116
- },
117
- {
118
- type: 'paragraph',
119
- html: 'Le PNG est chargé localement et décodé dans un <strong>Canvas HTML5</strong> en mémoire. L\'API Canvas préserve le canal alpha du PNG original - tous les pixels transparents et semi-transparents sont maintenus intacts dans le tampon de pixels RGBA. Le canvas est ensuite exporté en appelant <code>toDataURL(\'image/webp\')</code>, qui applique le codec WebP du navigateur (basé sur libwebp de Google) pour générer un fichier plus compact sans altérer les données de transparence.',
120
- },
121
- {
122
- type: 'paragraph',
123
- html: 'WebP utilise deux modes de compression: le mode sans perte (<em>lossless</em>) pour les images où chaque pixel doit être exactement fidèle à l\'original, et le mode avec perte (<em>lossy</em>) pour les photos et éléments où de petites différences sont imperceptibles. Le mode sans perte produit des fichiers 26 % plus petits que le PNG ; le mode avec perte peut atteindre des réductions jusqu\'à 40 % par rapport au PNG tout en maintenant une excellente qualité visuelle.',
124
- },
125
- {
126
- type: 'tip',
127
- title: 'Conseil: WebP surpasse à la fois PNG et JPG sur le web',
128
- html: 'WebP en mode sans perte est plus petit que le PNG. WebP en mode avec perte est plus petit que le JPG. Cela fait de WebP le <strong>seul format qui remplace les deux</strong> dans le contexte web. Convertissez vos PNG transparents en WebP avant de les mettre en ligne: Google PageSpeed Insights le détecte et le valorise positivement dans les audits "Servir les images dans des formats modernes".',
129
- },
130
- {
131
- type: 'title',
132
- text: 'Cas d\'usage et compatibilité',
133
- level: 3,
134
- },
135
- {
136
- type: 'list',
137
- icon: 'mdi:check-circle',
138
- items: [
139
- 'Logos et icônes avec fond transparent pour sites web et applications.',
140
- 'Images de produits avec fond découpé dans les boutiques e-commerce.',
141
- 'Sprites CSS et éléments d\'interface avec transparence alpha.',
142
- 'Illustrations rasterisées et graphiques vectoriels pour landing pages.',
143
- 'Miniatures d\'articles avec fond transparent dans les blogs et portails d\'actualité.',
144
- ],
145
- },
146
- {
147
- type: 'title',
148
- text: 'Conclusion',
149
- level: 3,
150
- },
151
- {
152
- type: 'paragraph',
153
- html: 'Le passage de PNG à WebP est l\'optimisation d\'images web la plus complète disponible: vous obtenez des fichiers plus légers, vous préservez la transparence et vous améliorez les métriques Core Web Vitals sans rien changer à votre design visuel. Cet outil le fait instantanément, gratuitement et de manière totalement privée - vos images sont traitées dans votre navigateur et ne voyagent jamais vers aucun serveur externe.',
154
- },
155
- ];
156
-
18
+ bibliographyTitle: 'Références Bibliographiques',
19
+ faqTitle: 'Questions Fréquentes',
20
+ };
21
+
22
+ const faq: PngAWebpLocaleContent['faq'] = [
23
+ {
24
+ question: 'Pourquoi convertir PNG en WebP ?',
25
+ answer:
26
+ 'WebP offre une compression jusqu\'à 40% supérieure au PNG à qualité égale, tout en supportant également la transparence Alpha. C\'est le format recommandé par Google PageSpeed Insights.',
27
+ },
28
+ {
29
+ question: 'La transparence est-elle perdue dans le processus ?',
30
+ answer:
31
+ 'Non. L\'implémentation technique de WebP supporte le canal alpha. Les transparences du PNG original seront préservées dans le nouveau fichier WebP.',
32
+ },
33
+ {
34
+ question: 'Mes images vont-elles sur un serveur ?',
35
+ answer:
36
+ 'Non. Le code s\'exécute uniquement dans votre navigateur (côté client). Nous ne voyons, n\'enregistrons ni ne sauvegardons jamais les images que vous convertissez.',
37
+ },
38
+ ];
39
+
40
+ const howTo: PngAWebpLocaleContent['howTo'] = [
41
+ {
42
+ name: 'Insérez vos PNG',
43
+ text: 'Déposez vos gros fichiers PNG dans la zone de téléchargement ou utilisez le sélecteur interactif traditionnel.',
44
+ },
45
+ {
46
+ name: 'Détection des canaux',
47
+ text: 'Le moteur de rendu local détectera et exportera la composition de pixels au format WebP optimisé.',
48
+ },
49
+ {
50
+ name: 'Téléchargement direct',
51
+ text: 'Téléchargez vos fichiers WebP hautement compressés individuellement ou regroupez-les dans un package ZIP.',
52
+ },
53
+ ];
54
+
55
+ const seo: PngAWebpLocaleContent['seo'] = [
56
+ {
57
+ type: 'title',
58
+ text: 'Convertisseur PNG vers WebP: Transparence et Compression Moderne pour le Web',
59
+ level: 2,
60
+ },
61
+ {
62
+ type: 'paragraph',
63
+ html: 'Le <strong>PNG</strong> est le format de référence pour les images web avec transparence depuis des décennies - logos, icônes, éléments d\'interface, images de produits sur fond découpé. Son problème est le poids: la compression sans perte qui garantit sa qualité génère également des fichiers notablement volumineux. Le <strong>WebP</strong> de Google résout cette contradiction: il supporte le canal alpha (transparence) <em>et</em> compresse bien mieux que le PNG, faisant du passage de PNG à WebP l\'optimisation parfaite qui ne sacrifie rien.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: 'PNG ou WebP ? Quand utiliser chaque format',
68
+ level: 3,
69
+ },
70
+ {
71
+ type: 'paragraph',
72
+ html: 'Le <strong>PNG</strong> reste le bon format lorsque la compatibilité est critique: outils de design comme Photoshop ou Figma, flux d\'impression, applications de bureau ancienne ou tout contexte où le support WebP n\'est pas garanti. C\'est aussi le format idéal pour sauvegarder les calques de travail dans les pipelines d\'édition, car sa compression sans perte préserve chaque pixel. Le coût: des fichiers qui peuvent peser 3 à 8 fois plus que leur équivalent WebP.',
73
+ },
74
+ {
75
+ type: 'paragraph',
76
+ html: 'Le <strong>WebP</strong> est le remplacement naturel du PNG pour tout le contenu web moderne. Chrome, Firefox, Safari et Edge le supportent nativement. Une image WebP sans perte est 26 % plus petite que le PNG équivalent ; en mode avec perte, elle peut être jusqu\'à 40 % plus petite avec une qualité visuelle pratiquement indistinguible. Et, point crucial pour le design web: <strong>WebP préserve la transparence alpha</strong> exactement comme le PNG, sans aucun compromis visuel.',
77
+ },
78
+ {
79
+ type: 'title',
80
+ text: 'Comparatif: Conversion locale vs Cloud',
81
+ level: 3,
82
+ },
83
+ {
84
+ type: 'comparative',
85
+ items: [
86
+ {
87
+ title: 'Convertisseurs Cloud',
88
+ description: 'Outils qui envoient vos fichiers vers un serveur distant.',
89
+ icon: 'mdi:cloud-upload',
90
+ pointIcon: 'mdi:close-circle-outline',
91
+ points: [
92
+ 'Latence réseau à l\'envoi et au téléchargement',
93
+ 'Vos logos et images stockés sur des serveurs tiers',
94
+ 'Limites de taille et quota quotidien de conversions',
95
+ 'Publicités intrusives et traceurs tiers',
96
+ ],
97
+ },
98
+ {
99
+ title: 'Notre Architecture Locale',
100
+ description: 'Traitement direct sur votre matériel via la technologie Vanilla JS.',
101
+ icon: 'mdi:laptop-mac',
102
+ highlight: true,
103
+ points: [
104
+ 'Vitesse instantanée - zéro latence réseau',
105
+ 'Confidentialité totale - 0 octet envoyé à l\'extérieur',
106
+ 'Aucune limite de taille ni de nombre de fichiers',
107
+ 'Interface épurée, sans publicités ni traçage',
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ type: 'title',
114
+ text: 'Comment ça fonctionne techniquement',
115
+ level: 3,
116
+ },
117
+ {
118
+ type: 'paragraph',
119
+ html: 'Le PNG est chargé localement et décodé dans un <strong>Canvas HTML5</strong> en mémoire. L\'API Canvas préserve le canal alpha du PNG original - tous les pixels transparents et semi-transparents sont maintenus intacts dans le tampon de pixels RGBA. Le canvas est ensuite exporté en appelant <code>toDataURL(\'image/webp\')</code>, qui applique le codec WebP du navigateur (basé sur libwebp de Google) pour générer un fichier plus compact sans altérer les données de transparence.',
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'WebP utilise deux modes de compression: le mode sans perte (<em>lossless</em>) pour les images où chaque pixel doit être exactement fidèle à l\'original, et le mode avec perte (<em>lossy</em>) pour les photos et éléments où de petites différences sont imperceptibles. Le mode sans perte produit des fichiers 26 % plus petits que le PNG ; le mode avec perte peut atteindre des réductions jusqu\'à 40 % par rapport au PNG tout en maintenant une excellente qualité visuelle.',
124
+ },
125
+ {
126
+ type: 'tip',
127
+ title: 'Conseil: WebP surpasse à la fois PNG et JPG sur le web',
128
+ html: 'WebP en mode sans perte est plus petit que le PNG. WebP en mode avec perte est plus petit que le JPG. Cela fait de WebP le <strong>seul format qui remplace les deux</strong> dans le contexte web. Convertissez vos PNG transparents en WebP avant de les mettre en ligne: Google PageSpeed Insights le détecte et le valorise positivement dans les audits "Servir les images dans des formats modernes".',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Cas d\'usage et compatibilité',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ icon: 'mdi:check-circle',
138
+ items: [
139
+ 'Logos et icônes avec fond transparent pour sites web et applications.',
140
+ 'Images de produits avec fond découpé dans les boutiques e-commerce.',
141
+ 'Sprites CSS et éléments d\'interface avec transparence alpha.',
142
+ 'Illustrations rasterisées et graphiques vectoriels pour landing pages.',
143
+ 'Miniatures d\'articles avec fond transparent dans les blogs et portails d\'actualité.',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Conclusion',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'Le passage de PNG à WebP est l\'optimisation d\'images web la plus complète disponible: vous obtenez des fichiers plus légers, vous préservez la transparence et vous améliorez les métriques Core Web Vitals sans rien changer à votre design visuel. Cet outil le fait instantanément, gratuitement et de manière totalement privée - vos images sont traitées dans votre navigateur et ne voyagent jamais vers aucun serveur externe.',
154
+ },
155
+ ];
157
156
 
158
- export const content: PngAWebpLocaleContent = {
159
- slug,
160
- title,
161
- description,
162
- ui,
163
- seo,
164
- faq,
165
- bibliography,
166
- howTo,
167
- schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
168
- };
157
+
158
+ export const content: PngAWebpLocaleContent = {
159
+ slug,
160
+ title,
161
+ description,
162
+ ui,
163
+ seo,
164
+ faq,
165
+ bibliography,
166
+ howTo,
167
+ schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
168
+ };
@@ -1,15 +1,15 @@
1
- ---
2
- import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import { pngAWebp } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await pngAWebp.i18n[locale]?.();
12
- if (!content) return null;
13
- ---
14
-
15
- {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { pngAWebp } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await pngAWebp.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}