@jjlmoya/utils-converters 1.16.0 → 1.19.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 (394) hide show
  1. package/package.json +5 -3
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/fr.ts +9 -9
  4. package/src/category/i18n/ru.ts +1 -1
  5. package/src/category/i18n/sv.ts +1 -1
  6. package/src/data.ts +0 -21
  7. package/src/layouts/PreviewLayout.astro +2 -1
  8. package/src/pages/[locale]/[slug].astro +28 -12
  9. package/src/tests/diacritics_density.test.ts +118 -0
  10. package/src/tests/inverted_punctuation.test.ts +84 -0
  11. package/src/tests/no_en_dash.test.ts +70 -0
  12. package/src/tests/pagespeed_best_practices.test.ts +198 -0
  13. package/src/tests/script_density.test.ts +94 -0
  14. package/src/tests/seo_parity.test.ts +60 -0
  15. package/src/tests/shared-test-helpers.ts +56 -0
  16. package/src/tests/tool_exports.test.ts +34 -0
  17. package/src/tool/avifAJpg/bibliography.ts +12 -0
  18. package/src/tool/avifAJpg/entry.ts +2 -0
  19. package/src/tool/avifAJpg/i18n/de.ts +2 -12
  20. package/src/tool/avifAJpg/i18n/en.ts +2 -12
  21. package/src/tool/avifAJpg/i18n/es.ts +2 -12
  22. package/src/tool/avifAJpg/i18n/fr.ts +11 -21
  23. package/src/tool/avifAJpg/i18n/id.ts +2 -12
  24. package/src/tool/avifAJpg/i18n/it.ts +2 -12
  25. package/src/tool/avifAJpg/i18n/ja.ts +1 -11
  26. package/src/tool/avifAJpg/i18n/ko.ts +1 -11
  27. package/src/tool/avifAJpg/i18n/nl.ts +2 -12
  28. package/src/tool/avifAJpg/i18n/pl.ts +2 -12
  29. package/src/tool/avifAJpg/i18n/pt.ts +2 -12
  30. package/src/tool/avifAJpg/i18n/ru.ts +7 -17
  31. package/src/tool/avifAJpg/i18n/sv.ts +2 -12
  32. package/src/tool/avifAJpg/i18n/tr.ts +1 -11
  33. package/src/tool/avifAJpg/i18n/zh.ts +4 -14
  34. package/src/tool/avifAJpg/seo.astro +2 -1
  35. package/src/tool/avifAPng/bibliography.ts +12 -0
  36. package/src/tool/avifAPng/entry.ts +2 -0
  37. package/src/tool/avifAPng/i18n/de.ts +4 -14
  38. package/src/tool/avifAPng/i18n/en.ts +4 -14
  39. package/src/tool/avifAPng/i18n/es.ts +4 -14
  40. package/src/tool/avifAPng/i18n/fr.ts +10 -20
  41. package/src/tool/avifAPng/i18n/id.ts +4 -14
  42. package/src/tool/avifAPng/i18n/it.ts +1 -11
  43. package/src/tool/avifAPng/i18n/ja.ts +1 -11
  44. package/src/tool/avifAPng/i18n/ko.ts +1 -11
  45. package/src/tool/avifAPng/i18n/nl.ts +4 -14
  46. package/src/tool/avifAPng/i18n/pl.ts +4 -14
  47. package/src/tool/avifAPng/i18n/pt.ts +4 -14
  48. package/src/tool/avifAPng/i18n/ru.ts +5 -15
  49. package/src/tool/avifAPng/i18n/sv.ts +4 -14
  50. package/src/tool/avifAPng/i18n/tr.ts +1 -11
  51. package/src/tool/avifAPng/i18n/zh.ts +3 -13
  52. package/src/tool/avifAPng/seo.astro +2 -1
  53. package/src/tool/avifAWebp/bibliography.ts +12 -0
  54. package/src/tool/avifAWebp/entry.ts +2 -0
  55. package/src/tool/avifAWebp/i18n/de.ts +6 -16
  56. package/src/tool/avifAWebp/i18n/en.ts +6 -16
  57. package/src/tool/avifAWebp/i18n/es.ts +6 -16
  58. package/src/tool/avifAWebp/i18n/fr.ts +13 -23
  59. package/src/tool/avifAWebp/i18n/id.ts +6 -16
  60. package/src/tool/avifAWebp/i18n/it.ts +1 -11
  61. package/src/tool/avifAWebp/i18n/ja.ts +1 -11
  62. package/src/tool/avifAWebp/i18n/ko.ts +2 -12
  63. package/src/tool/avifAWebp/i18n/nl.ts +6 -16
  64. package/src/tool/avifAWebp/i18n/pl.ts +6 -16
  65. package/src/tool/avifAWebp/i18n/pt.ts +6 -16
  66. package/src/tool/avifAWebp/i18n/ru.ts +7 -17
  67. package/src/tool/avifAWebp/i18n/sv.ts +6 -16
  68. package/src/tool/avifAWebp/i18n/tr.ts +2 -12
  69. package/src/tool/avifAWebp/i18n/zh.ts +6 -16
  70. package/src/tool/avifAWebp/seo.astro +2 -1
  71. package/src/tool/bmpAJpg/bibliography.ts +12 -0
  72. package/src/tool/bmpAJpg/entry.ts +2 -0
  73. package/src/tool/bmpAJpg/i18n/de.ts +1 -11
  74. package/src/tool/bmpAJpg/i18n/en.ts +1 -11
  75. package/src/tool/bmpAJpg/i18n/es.ts +1 -11
  76. package/src/tool/bmpAJpg/i18n/fr.ts +9 -19
  77. package/src/tool/bmpAJpg/i18n/id.ts +1 -11
  78. package/src/tool/bmpAJpg/i18n/it.ts +1 -11
  79. package/src/tool/bmpAJpg/i18n/ja.ts +1 -11
  80. package/src/tool/bmpAJpg/i18n/ko.ts +1 -11
  81. package/src/tool/bmpAJpg/i18n/nl.ts +1 -11
  82. package/src/tool/bmpAJpg/i18n/pl.ts +1 -11
  83. package/src/tool/bmpAJpg/i18n/pt.ts +1 -11
  84. package/src/tool/bmpAJpg/i18n/ru.ts +5 -15
  85. package/src/tool/bmpAJpg/i18n/sv.ts +1 -11
  86. package/src/tool/bmpAJpg/i18n/tr.ts +1 -11
  87. package/src/tool/bmpAJpg/i18n/zh.ts +1 -11
  88. package/src/tool/bmpAJpg/seo.astro +2 -1
  89. package/src/tool/bmpAPng/bibliography.ts +12 -0
  90. package/src/tool/bmpAPng/entry.ts +2 -0
  91. package/src/tool/bmpAPng/i18n/de.ts +2 -12
  92. package/src/tool/bmpAPng/i18n/en.ts +3 -13
  93. package/src/tool/bmpAPng/i18n/es.ts +2 -12
  94. package/src/tool/bmpAPng/i18n/fr.ts +12 -22
  95. package/src/tool/bmpAPng/i18n/id.ts +2 -12
  96. package/src/tool/bmpAPng/i18n/it.ts +2 -12
  97. package/src/tool/bmpAPng/i18n/ja.ts +1 -11
  98. package/src/tool/bmpAPng/i18n/ko.ts +1 -11
  99. package/src/tool/bmpAPng/i18n/nl.ts +2 -12
  100. package/src/tool/bmpAPng/i18n/pl.ts +2 -12
  101. package/src/tool/bmpAPng/i18n/pt.ts +2 -12
  102. package/src/tool/bmpAPng/i18n/ru.ts +9 -19
  103. package/src/tool/bmpAPng/i18n/sv.ts +2 -12
  104. package/src/tool/bmpAPng/i18n/tr.ts +1 -11
  105. package/src/tool/bmpAPng/i18n/zh.ts +1 -11
  106. package/src/tool/bmpAPng/seo.astro +2 -1
  107. package/src/tool/bmpAWebp/bibliography.ts +12 -0
  108. package/src/tool/bmpAWebp/entry.ts +2 -0
  109. package/src/tool/bmpAWebp/i18n/de.ts +8 -18
  110. package/src/tool/bmpAWebp/i18n/en.ts +8 -18
  111. package/src/tool/bmpAWebp/i18n/es.ts +8 -18
  112. package/src/tool/bmpAWebp/i18n/fr.ts +13 -23
  113. package/src/tool/bmpAWebp/i18n/id.ts +8 -18
  114. package/src/tool/bmpAWebp/i18n/it.ts +8 -18
  115. package/src/tool/bmpAWebp/i18n/ja.ts +7 -17
  116. package/src/tool/bmpAWebp/i18n/ko.ts +7 -17
  117. package/src/tool/bmpAWebp/i18n/nl.ts +8 -18
  118. package/src/tool/bmpAWebp/i18n/pl.ts +8 -18
  119. package/src/tool/bmpAWebp/i18n/pt.ts +8 -18
  120. package/src/tool/bmpAWebp/i18n/ru.ts +10 -20
  121. package/src/tool/bmpAWebp/i18n/sv.ts +8 -18
  122. package/src/tool/bmpAWebp/i18n/tr.ts +8 -18
  123. package/src/tool/bmpAWebp/i18n/zh.ts +8 -18
  124. package/src/tool/bmpAWebp/seo.astro +2 -1
  125. package/src/tool/gifAJpg/bibliography.ts +12 -0
  126. package/src/tool/gifAJpg/entry.ts +2 -0
  127. package/src/tool/gifAJpg/i18n/de.ts +1 -11
  128. package/src/tool/gifAJpg/i18n/en.ts +1 -11
  129. package/src/tool/gifAJpg/i18n/es.ts +1 -11
  130. package/src/tool/gifAJpg/i18n/fr.ts +9 -19
  131. package/src/tool/gifAJpg/i18n/id.ts +1 -11
  132. package/src/tool/gifAJpg/i18n/it.ts +1 -11
  133. package/src/tool/gifAJpg/i18n/ja.ts +1 -11
  134. package/src/tool/gifAJpg/i18n/ko.ts +1 -11
  135. package/src/tool/gifAJpg/i18n/nl.ts +1 -11
  136. package/src/tool/gifAJpg/i18n/pl.ts +1 -11
  137. package/src/tool/gifAJpg/i18n/pt.ts +1 -11
  138. package/src/tool/gifAJpg/i18n/ru.ts +2 -12
  139. package/src/tool/gifAJpg/i18n/sv.ts +1 -11
  140. package/src/tool/gifAJpg/i18n/tr.ts +1 -11
  141. package/src/tool/gifAJpg/i18n/zh.ts +1 -11
  142. package/src/tool/gifAJpg/seo.astro +2 -1
  143. package/src/tool/gifAPng/bibliography.ts +12 -0
  144. package/src/tool/gifAPng/entry.ts +2 -0
  145. package/src/tool/gifAPng/i18n/de.ts +2 -12
  146. package/src/tool/gifAPng/i18n/en.ts +3 -13
  147. package/src/tool/gifAPng/i18n/es.ts +2 -12
  148. package/src/tool/gifAPng/i18n/fr.ts +11 -21
  149. package/src/tool/gifAPng/i18n/id.ts +2 -12
  150. package/src/tool/gifAPng/i18n/it.ts +2 -12
  151. package/src/tool/gifAPng/i18n/ja.ts +1 -11
  152. package/src/tool/gifAPng/i18n/ko.ts +1 -11
  153. package/src/tool/gifAPng/i18n/nl.ts +2 -12
  154. package/src/tool/gifAPng/i18n/pl.ts +3 -13
  155. package/src/tool/gifAPng/i18n/pt.ts +2 -12
  156. package/src/tool/gifAPng/i18n/ru.ts +3 -13
  157. package/src/tool/gifAPng/i18n/sv.ts +3 -13
  158. package/src/tool/gifAPng/i18n/tr.ts +1 -11
  159. package/src/tool/gifAPng/i18n/zh.ts +2 -12
  160. package/src/tool/gifAPng/seo.astro +2 -1
  161. package/src/tool/gifAWebp/bibliography.ts +12 -0
  162. package/src/tool/gifAWebp/entry.ts +2 -0
  163. package/src/tool/gifAWebp/i18n/de.ts +3 -13
  164. package/src/tool/gifAWebp/i18n/en.ts +3 -13
  165. package/src/tool/gifAWebp/i18n/es.ts +1 -11
  166. package/src/tool/gifAWebp/i18n/fr.ts +11 -21
  167. package/src/tool/gifAWebp/i18n/id.ts +3 -13
  168. package/src/tool/gifAWebp/i18n/it.ts +1 -11
  169. package/src/tool/gifAWebp/i18n/ja.ts +1 -11
  170. package/src/tool/gifAWebp/i18n/ko.ts +1 -11
  171. package/src/tool/gifAWebp/i18n/nl.ts +3 -13
  172. package/src/tool/gifAWebp/i18n/pl.ts +3 -13
  173. package/src/tool/gifAWebp/i18n/pt.ts +3 -13
  174. package/src/tool/gifAWebp/i18n/ru.ts +7 -17
  175. package/src/tool/gifAWebp/i18n/sv.ts +3 -13
  176. package/src/tool/gifAWebp/i18n/tr.ts +1 -11
  177. package/src/tool/gifAWebp/i18n/zh.ts +4 -14
  178. package/src/tool/gifAWebp/seo.astro +2 -1
  179. package/src/tool/imagenBase64/bibliography.ts +12 -0
  180. package/src/tool/imagenBase64/entry.ts +2 -0
  181. package/src/tool/imagenBase64/i18n/de.ts +7 -17
  182. package/src/tool/imagenBase64/i18n/en.ts +7 -17
  183. package/src/tool/imagenBase64/i18n/es.ts +7 -17
  184. package/src/tool/imagenBase64/i18n/fr.ts +17 -27
  185. package/src/tool/imagenBase64/i18n/id.ts +7 -17
  186. package/src/tool/imagenBase64/i18n/it.ts +6 -16
  187. package/src/tool/imagenBase64/i18n/ja.ts +1 -11
  188. package/src/tool/imagenBase64/i18n/ko.ts +1 -11
  189. package/src/tool/imagenBase64/i18n/nl.ts +7 -17
  190. package/src/tool/imagenBase64/i18n/pl.ts +7 -17
  191. package/src/tool/imagenBase64/i18n/pt.ts +7 -17
  192. package/src/tool/imagenBase64/i18n/ru.ts +9 -19
  193. package/src/tool/imagenBase64/i18n/sv.ts +7 -17
  194. package/src/tool/imagenBase64/i18n/tr.ts +2 -12
  195. package/src/tool/imagenBase64/i18n/zh.ts +7 -17
  196. package/src/tool/imagenBase64/seo.astro +2 -1
  197. package/src/tool/jpgAIco/bibliography.ts +12 -0
  198. package/src/tool/jpgAIco/entry.ts +2 -0
  199. package/src/tool/jpgAIco/i18n/de.ts +9 -19
  200. package/src/tool/jpgAIco/i18n/en.ts +9 -19
  201. package/src/tool/jpgAIco/i18n/es.ts +7 -17
  202. package/src/tool/jpgAIco/i18n/fr.ts +13 -23
  203. package/src/tool/jpgAIco/i18n/id.ts +9 -19
  204. package/src/tool/jpgAIco/i18n/it.ts +3 -13
  205. package/src/tool/jpgAIco/i18n/ja.ts +2 -12
  206. package/src/tool/jpgAIco/i18n/ko.ts +2 -12
  207. package/src/tool/jpgAIco/i18n/nl.ts +9 -19
  208. package/src/tool/jpgAIco/i18n/pl.ts +9 -19
  209. package/src/tool/jpgAIco/i18n/pt.ts +9 -19
  210. package/src/tool/jpgAIco/i18n/ru.ts +11 -21
  211. package/src/tool/jpgAIco/i18n/sv.ts +9 -19
  212. package/src/tool/jpgAIco/i18n/tr.ts +3 -13
  213. package/src/tool/jpgAIco/i18n/zh.ts +9 -19
  214. package/src/tool/jpgAIco/seo.astro +2 -1
  215. package/src/tool/jpgAPng/bibliography.ts +12 -0
  216. package/src/tool/jpgAPng/entry.ts +2 -0
  217. package/src/tool/jpgAPng/i18n/de.ts +7 -17
  218. package/src/tool/jpgAPng/i18n/en.ts +9 -19
  219. package/src/tool/jpgAPng/i18n/es.ts +7 -17
  220. package/src/tool/jpgAPng/i18n/fr.ts +13 -23
  221. package/src/tool/jpgAPng/i18n/id.ts +7 -17
  222. package/src/tool/jpgAPng/i18n/it.ts +5 -15
  223. package/src/tool/jpgAPng/i18n/ja.ts +3 -13
  224. package/src/tool/jpgAPng/i18n/ko.ts +3 -13
  225. package/src/tool/jpgAPng/i18n/nl.ts +7 -17
  226. package/src/tool/jpgAPng/i18n/pl.ts +7 -17
  227. package/src/tool/jpgAPng/i18n/pt.ts +7 -17
  228. package/src/tool/jpgAPng/i18n/ru.ts +10 -20
  229. package/src/tool/jpgAPng/i18n/sv.ts +7 -17
  230. package/src/tool/jpgAPng/i18n/tr.ts +6 -16
  231. package/src/tool/jpgAPng/i18n/zh.ts +8 -18
  232. package/src/tool/jpgAPng/seo.astro +2 -1
  233. package/src/tool/jpgAWebp/bibliography.ts +12 -0
  234. package/src/tool/jpgAWebp/entry.ts +2 -0
  235. package/src/tool/jpgAWebp/i18n/de.ts +10 -20
  236. package/src/tool/jpgAWebp/i18n/en.ts +10 -20
  237. package/src/tool/jpgAWebp/i18n/es.ts +4 -14
  238. package/src/tool/jpgAWebp/i18n/fr.ts +16 -26
  239. package/src/tool/jpgAWebp/i18n/id.ts +10 -20
  240. package/src/tool/jpgAWebp/i18n/it.ts +6 -16
  241. package/src/tool/jpgAWebp/i18n/ja.ts +2 -12
  242. package/src/tool/jpgAWebp/i18n/ko.ts +3 -13
  243. package/src/tool/jpgAWebp/i18n/nl.ts +10 -20
  244. package/src/tool/jpgAWebp/i18n/pl.ts +10 -20
  245. package/src/tool/jpgAWebp/i18n/pt.ts +10 -20
  246. package/src/tool/jpgAWebp/i18n/ru.ts +10 -20
  247. package/src/tool/jpgAWebp/i18n/sv.ts +10 -20
  248. package/src/tool/jpgAWebp/i18n/tr.ts +5 -15
  249. package/src/tool/jpgAWebp/i18n/zh.ts +9 -19
  250. package/src/tool/jpgAWebp/seo.astro +2 -1
  251. package/src/tool/pngAIco/bibliography.ts +12 -0
  252. package/src/tool/pngAIco/entry.ts +2 -0
  253. package/src/tool/pngAIco/i18n/de.ts +8 -18
  254. package/src/tool/pngAIco/i18n/en.ts +8 -18
  255. package/src/tool/pngAIco/i18n/es.ts +8 -18
  256. package/src/tool/pngAIco/i18n/fr.ts +14 -24
  257. package/src/tool/pngAIco/i18n/id.ts +8 -18
  258. package/src/tool/pngAIco/i18n/it.ts +4 -14
  259. package/src/tool/pngAIco/i18n/ja.ts +2 -12
  260. package/src/tool/pngAIco/i18n/ko.ts +2 -12
  261. package/src/tool/pngAIco/i18n/nl.ts +8 -18
  262. package/src/tool/pngAIco/i18n/pl.ts +8 -18
  263. package/src/tool/pngAIco/i18n/pt.ts +8 -18
  264. package/src/tool/pngAIco/i18n/ru.ts +11 -21
  265. package/src/tool/pngAIco/i18n/sv.ts +8 -18
  266. package/src/tool/pngAIco/i18n/tr.ts +7 -17
  267. package/src/tool/pngAIco/i18n/zh.ts +8 -18
  268. package/src/tool/pngAIco/seo.astro +2 -1
  269. package/src/tool/pngAJpg/bibliography.ts +12 -0
  270. package/src/tool/pngAJpg/entry.ts +2 -0
  271. package/src/tool/pngAJpg/i18n/de.ts +41 -51
  272. package/src/tool/pngAJpg/i18n/en.ts +98 -41
  273. package/src/tool/pngAJpg/i18n/es.ts +1 -11
  274. package/src/tool/pngAJpg/i18n/fr.ts +93 -30
  275. package/src/tool/pngAJpg/i18n/id.ts +41 -51
  276. package/src/tool/pngAJpg/i18n/it.ts +41 -51
  277. package/src/tool/pngAJpg/i18n/ja.ts +81 -95
  278. package/src/tool/pngAJpg/i18n/ko.ts +81 -95
  279. package/src/tool/pngAJpg/i18n/nl.ts +41 -51
  280. package/src/tool/pngAJpg/i18n/pl.ts +43 -53
  281. package/src/tool/pngAJpg/i18n/pt.ts +41 -51
  282. package/src/tool/pngAJpg/i18n/ru.ts +83 -97
  283. package/src/tool/pngAJpg/i18n/sv.ts +41 -51
  284. package/src/tool/pngAJpg/i18n/tr.ts +41 -51
  285. package/src/tool/pngAJpg/i18n/zh.ts +83 -97
  286. package/src/tool/pngAJpg/seo.astro +2 -1
  287. package/src/tool/pngAWebp/bibliography.ts +16 -0
  288. package/src/tool/pngAWebp/entry.ts +2 -0
  289. package/src/tool/pngAWebp/i18n/de.ts +7 -21
  290. package/src/tool/pngAWebp/i18n/en.ts +7 -21
  291. package/src/tool/pngAWebp/i18n/es.ts +6 -20
  292. package/src/tool/pngAWebp/i18n/fr.ts +13 -27
  293. package/src/tool/pngAWebp/i18n/id.ts +7 -21
  294. package/src/tool/pngAWebp/i18n/it.ts +3 -17
  295. package/src/tool/pngAWebp/i18n/ja.ts +2 -16
  296. package/src/tool/pngAWebp/i18n/ko.ts +2 -16
  297. package/src/tool/pngAWebp/i18n/nl.ts +7 -21
  298. package/src/tool/pngAWebp/i18n/pl.ts +7 -21
  299. package/src/tool/pngAWebp/i18n/pt.ts +6 -20
  300. package/src/tool/pngAWebp/i18n/ru.ts +8 -22
  301. package/src/tool/pngAWebp/i18n/sv.ts +7 -21
  302. package/src/tool/pngAWebp/i18n/tr.ts +6 -20
  303. package/src/tool/pngAWebp/i18n/zh.ts +6 -20
  304. package/src/tool/pngAWebp/seo.astro +2 -1
  305. package/src/tool/svgAJpg/bibliography.ts +12 -0
  306. package/src/tool/svgAJpg/entry.ts +2 -0
  307. package/src/tool/svgAJpg/i18n/de.ts +2 -12
  308. package/src/tool/svgAJpg/i18n/en.ts +1 -11
  309. package/src/tool/svgAJpg/i18n/es.ts +1 -11
  310. package/src/tool/svgAJpg/i18n/fr.ts +6 -16
  311. package/src/tool/svgAJpg/i18n/id.ts +1 -11
  312. package/src/tool/svgAJpg/i18n/it.ts +1 -11
  313. package/src/tool/svgAJpg/i18n/ja.ts +1 -11
  314. package/src/tool/svgAJpg/i18n/ko.ts +1 -11
  315. package/src/tool/svgAJpg/i18n/nl.ts +1 -11
  316. package/src/tool/svgAJpg/i18n/pl.ts +1 -11
  317. package/src/tool/svgAJpg/i18n/pt.ts +1 -11
  318. package/src/tool/svgAJpg/i18n/ru.ts +3 -13
  319. package/src/tool/svgAJpg/i18n/sv.ts +1 -11
  320. package/src/tool/svgAJpg/i18n/tr.ts +1 -11
  321. package/src/tool/svgAJpg/i18n/zh.ts +1 -11
  322. package/src/tool/svgAJpg/seo.astro +2 -1
  323. package/src/tool/svgAPng/bibliography.ts +12 -0
  324. package/src/tool/svgAPng/entry.ts +2 -0
  325. package/src/tool/svgAPng/i18n/de.ts +3 -13
  326. package/src/tool/svgAPng/i18n/en.ts +3 -13
  327. package/src/tool/svgAPng/i18n/es.ts +1 -11
  328. package/src/tool/svgAPng/i18n/fr.ts +9 -19
  329. package/src/tool/svgAPng/i18n/id.ts +3 -13
  330. package/src/tool/svgAPng/i18n/it.ts +3 -13
  331. package/src/tool/svgAPng/i18n/ja.ts +1 -11
  332. package/src/tool/svgAPng/i18n/ko.ts +1 -11
  333. package/src/tool/svgAPng/i18n/nl.ts +3 -13
  334. package/src/tool/svgAPng/i18n/pl.ts +3 -13
  335. package/src/tool/svgAPng/i18n/pt.ts +3 -13
  336. package/src/tool/svgAPng/i18n/ru.ts +5 -15
  337. package/src/tool/svgAPng/i18n/sv.ts +3 -13
  338. package/src/tool/svgAPng/i18n/tr.ts +3 -13
  339. package/src/tool/svgAPng/i18n/zh.ts +3 -13
  340. package/src/tool/svgAPng/seo.astro +2 -1
  341. package/src/tool/webpAIco/bibliography.ts +12 -0
  342. package/src/tool/webpAIco/entry.ts +2 -0
  343. package/src/tool/webpAIco/i18n/de.ts +1 -11
  344. package/src/tool/webpAIco/i18n/en.ts +1 -11
  345. package/src/tool/webpAIco/i18n/es.ts +1 -11
  346. package/src/tool/webpAIco/i18n/fr.ts +5 -15
  347. package/src/tool/webpAIco/i18n/id.ts +1 -11
  348. package/src/tool/webpAIco/i18n/it.ts +1 -11
  349. package/src/tool/webpAIco/i18n/ja.ts +1 -11
  350. package/src/tool/webpAIco/i18n/ko.ts +1 -11
  351. package/src/tool/webpAIco/i18n/nl.ts +1 -11
  352. package/src/tool/webpAIco/i18n/pl.ts +1 -11
  353. package/src/tool/webpAIco/i18n/pt.ts +1 -11
  354. package/src/tool/webpAIco/i18n/ru.ts +3 -13
  355. package/src/tool/webpAIco/i18n/sv.ts +1 -11
  356. package/src/tool/webpAIco/i18n/tr.ts +1 -11
  357. package/src/tool/webpAIco/i18n/zh.ts +1 -12
  358. package/src/tool/webpAIco/seo.astro +2 -1
  359. package/src/tool/webpAJpg/bibliography.ts +16 -0
  360. package/src/tool/webpAJpg/entry.ts +2 -0
  361. package/src/tool/webpAJpg/i18n/de.ts +3 -17
  362. package/src/tool/webpAJpg/i18n/en.ts +3 -17
  363. package/src/tool/webpAJpg/i18n/es.ts +1 -15
  364. package/src/tool/webpAJpg/i18n/fr.ts +10 -24
  365. package/src/tool/webpAJpg/i18n/id.ts +3 -17
  366. package/src/tool/webpAJpg/i18n/it.ts +2 -16
  367. package/src/tool/webpAJpg/i18n/ja.ts +1 -15
  368. package/src/tool/webpAJpg/i18n/ko.ts +1 -15
  369. package/src/tool/webpAJpg/i18n/nl.ts +2 -16
  370. package/src/tool/webpAJpg/i18n/pl.ts +3 -17
  371. package/src/tool/webpAJpg/i18n/pt.ts +3 -17
  372. package/src/tool/webpAJpg/i18n/ru.ts +7 -21
  373. package/src/tool/webpAJpg/i18n/sv.ts +3 -17
  374. package/src/tool/webpAJpg/i18n/tr.ts +2 -16
  375. package/src/tool/webpAJpg/i18n/zh.ts +2 -16
  376. package/src/tool/webpAJpg/seo.astro +2 -1
  377. package/src/tool/webpAPng/bibliography.ts +16 -0
  378. package/src/tool/webpAPng/entry.ts +2 -0
  379. package/src/tool/webpAPng/i18n/de.ts +3 -17
  380. package/src/tool/webpAPng/i18n/en.ts +3 -17
  381. package/src/tool/webpAPng/i18n/es.ts +1 -15
  382. package/src/tool/webpAPng/i18n/fr.ts +9 -23
  383. package/src/tool/webpAPng/i18n/id.ts +3 -17
  384. package/src/tool/webpAPng/i18n/it.ts +3 -17
  385. package/src/tool/webpAPng/i18n/ja.ts +1 -15
  386. package/src/tool/webpAPng/i18n/ko.ts +1 -15
  387. package/src/tool/webpAPng/i18n/nl.ts +3 -17
  388. package/src/tool/webpAPng/i18n/pl.ts +3 -17
  389. package/src/tool/webpAPng/i18n/pt.ts +3 -17
  390. package/src/tool/webpAPng/i18n/ru.ts +4 -18
  391. package/src/tool/webpAPng/i18n/sv.ts +3 -17
  392. package/src/tool/webpAPng/i18n/tr.ts +2 -17
  393. package/src/tool/webpAPng/i18n/zh.ts +3 -17
  394. package/src/tool/webpAPng/seo.astro +2 -1
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,21 +52,10 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Spécification Technique Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'Information GIF CompuServe',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
68
- text: 'Convertisseur GIF vers JPG : Extrayez des Fotogrammes en Images Haute Qualité',
58
+ text: 'Convertisseur GIF vers JPG: Extrayez des Fotogrammes en Images Haute Qualité',
69
59
  level: 2,
70
60
  },
71
61
  {
@@ -74,20 +64,20 @@ const seo: GifAJpgLocaleContent['seo'] = [
74
64
  },
75
65
  {
76
66
  type: 'title',
77
- text: 'GIF vs JPG : deux formats aux objectifs opposés',
67
+ text: 'GIF vs JPG: deux formats aux objectifs opposés',
78
68
  level: 3,
79
69
  },
80
70
  {
81
71
  type: 'paragraph',
82
- html: 'Le GIF (Graphics Interchange Format) a été conçu en 1987 avec une limitation sévère qui persiste encore aujourd\'hui : il ne peut représenter que 256 couleurs par image. Cette contrainte technique n\'avait pas d\'importance pour les animations simples à palettes réduites, mais elle en fait un format visuellement pauvre pour la photographie réelle. Le JPG, en revanche, peut restituer des millions de couleurs grâce à des algorithmes de compression perceptuelle avancés.',
72
+ html: 'Le GIF (Graphics Interchange Format) a été conçu en 1987 avec une limitation sévère qui persiste encore aujourd\'hui: il ne peut représenter que 256 couleurs par image. Cette contrainte technique n\'avait pas d\'importance pour les animations simples à palettes réduites, mais elle en fait un format visuellement pauvre pour la photographie réelle. Le JPG, en revanche, peut restituer des millions de couleurs grâce à des algorithmes de compression perceptuelle avancés.',
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: 'Extraire une image d\'un GIF et la sauvegarder en JPG offre de nombreuses applications pratiques : générer des miniatures pour les lecteurs vidéo, créer des aperçus pour les systèmes de gestion de contenu, obtenir des images statiques pour des présentations, ou simplement archiver un moment visuel d\'une animation complexe. Le JPG résultant sera bien plus léger que le GIF original et universellement compatible.',
76
+ html: 'Extraire une image d\'un GIF et la sauvegarder en JPG offre de nombreuses applications pratiques: générer des miniatures pour les lecteurs vidéo, créer des aperçus pour les systèmes de gestion de contenu, obtenir des images statiques pour des présentations, ou simplement archiver un moment visuel d\'une animation complexe. Le JPG résultant sera bien plus léger que le GIF original et universellement compatible.',
87
77
  },
88
78
  {
89
79
  type: 'title',
90
- text: 'Comparaison d\'Architecture : Local vs Cloud',
80
+ text: 'Comparaison d\'Architecture: Local vs Cloud',
91
81
  level: 3,
92
82
  },
93
83
  {
@@ -114,7 +104,7 @@ const seo: GifAJpgLocaleContent['seo'] = [
114
104
  'Le GIF ne quitte jamais votre appareil',
115
105
  'Vitesse instantanée sans attente réseau',
116
106
  'Aucune limite de taille ni de quota de fichiers',
117
- 'Confidentialité totale : 0 octet envoyé à l\'extérieur',
107
+ 'Confidentialité totale: 0 octet envoyé à l\'extérieur',
118
108
  ],
119
109
  },
120
110
  ],
@@ -135,7 +125,7 @@ const seo: GifAJpgLocaleContent['seo'] = [
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Palette de couleurs limitée du GIF',
138
- html: 'Le GIF ne peut contenir que 256 couleurs par image. Le JPG extrait héritera de cette palette réduite du fichier original : si le GIF contenait des dégradés ou des photographies, il peut apparaître avec une certaine postérisation. Pour de meilleurs résultats, utilisez des GIF avec des couleurs simples ou des illustrations.',
128
+ html: 'Le GIF ne peut contenir que 256 couleurs par image. Le JPG extrait héritera de cette palette réduite du fichier original: si le GIF contenait des dégradés ou des photographies, il peut apparaître avec une certaine postérisation. Pour de meilleurs résultats, utilisez des GIF avec des couleurs simples ou des illustrations.',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -155,7 +145,7 @@ const seo: GifAJpgLocaleContent['seo'] = [
155
145
  },
156
146
  {
157
147
  type: 'title',
158
- text: 'Conclusion : l\'image qui vaut plus que l\'animation',
148
+ text: 'Conclusion: l\'image qui vaut plus que l\'animation',
159
149
  level: 3,
160
150
  },
161
151
  {
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Spesifikasi Teknis Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Specifica Tecnica Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Joint Photographic Experts Group 技術仕様',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Joint Photographic Experts Group 기술 사양',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Technische Specificatie Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Specyfikacja techniczna Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Especificação Técnica Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Техническая спецификация Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: GifAJpgLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: 'Файлы GIF десятилетиями доминировали в мире коротких анимаций в интернете. Однако их анимированная природа делает их совершенно бесполезными в качестве миниатюр, превью для социальных сетей или изображений для документов. Когда вам нужно извлечь конкретный кадр из GIF и превратить его в высококачественное статичное изображение, конвертация в JPG — самое практичное и совместимое решение.',
63
+ html: 'Файлы GIF десятилетиями доминировали в мире коротких анимаций в интернете. Однако их анимированная природа делает их совершенно бесполезными в качестве миниатюр, превью для социальных сетей или изображений для документов. Когда вам нужно извлечь конкретный кадр из GIF и превратить его в высококачественное статичное изображение, конвертация в JPG - самое практичное и совместимое решение.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Joint Photographic Experts Group teknisk specifikation',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Joint Photographic Experts Group Teknik Özellikleri',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Joint Photographic Experts Group 技术规范',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await gifAJpg.i18n[locale]?.();
12
+ if (!content) return null;
12
13
  ---
13
14
 
14
- {content && <SEORenderer content={{ locale, sections: content.seo }} />}
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,12 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'World Wide Web Consortium: PNG format',
6
+ url: 'https://www.w3.org/TR/png/',
7
+ },
8
+ {
9
+ name: 'CompuServe GIF Information',
10
+ url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
11
+ },
12
+ ];
@@ -27,3 +27,5 @@ export const gifAPng: ConvertersToolEntry<ImageConverterUI> = {
27
27
  zh: () => import('./i18n/zh').then((m) => m.content),
28
28
  },
29
29
  };
30
+
31
+ export { bibliography } from './bibliography';
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'World Wide Web Consortium: PNG format',
57
- url: 'https://www.w3.org/TR/png/',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -135,7 +125,7 @@ const seo: GifAPngLocaleContent['seo'] = [
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Binäre Transparenz von GIF vs. Alphakanal von PNG',
138
- html: 'GIF unterstützt nur binäre Transparenz (opak oder transparent). Bei der Konvertierung in PNG bleiben die halbtransparenten Pixel des GIFs so erhalten, wie der Browser sie interpretiert. Wenn Ihr GIF gezackte Kanten hat, behält das PNG diese bei — aber Sie können sie mit Kantenglättung in jedem Editor bearbeiten, was mit dem ursprünglichen GIF unmöglich ist.',
128
+ html: 'GIF unterstützt nur binäre Transparenz (opak oder transparent). Bei der Konvertierung in PNG bleiben die halbtransparenten Pixel des GIFs so erhalten, wie der Browser sie interpretiert. Wenn Ihr GIF gezackte Kanten hat, behält das PNG diese bei - aber Sie können sie mit Kantenglättung in jedem Editor bearbeiten, was mit dem ursprünglichen GIF unmöglich ist.',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'World Wide Web Consortium: PNG format',
57
- url: 'https://www.w3.org/TR/png/',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -83,7 +73,7 @@ const seo: GifAPngLocaleContent['seo'] = [
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: 'Beyond superior transparency, PNG removes GIF\'s 256-color limit. Screenshots, illustrations with gradients, logos with shadows — all look significantly better in PNG. And because it uses lossless compression, every pixel retains its exact original value, without the artifacts a JPG conversion would introduce.',
76
+ html: 'Beyond superior transparency, PNG removes GIF\'s 256-color limit. Screenshots, illustrations with gradients, logos with shadows - all look significantly better in PNG. And because it uses lossless compression, every pixel retains its exact original value, without the artifacts a JPG conversion would introduce.',
87
77
  },
88
78
  {
89
79
  type: 'title',
@@ -135,7 +125,7 @@ const seo: GifAPngLocaleContent['seo'] = [
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'GIF binary transparency vs PNG full alpha channel',
138
- html: 'GIF only supports binary transparency (opaque or transparent). When converting to PNG, the semi-transparent GIF pixels are preserved as the browser interprets them. If your GIF has jagged edges, the PNG will keep them — but you can then smooth them with edge anti-aliasing in any editor, something impossible with the original GIF.',
128
+ html: 'GIF only supports binary transparency (opaque or transparent). When converting to PNG, the semi-transparent GIF pixels are preserved as the browser interprets them. If your GIF has jagged edges, the PNG will keep them - but you can then smooth them with edge anti-aliasing in any editor, something impossible with the original GIF.',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'World Wide Web Consortium: PNG format',
57
- url: 'https://www.w3.org/TR/png/',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -135,7 +125,7 @@ const seo: GifAPngLocaleContent['seo'] = [
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Transparencia binaria del GIF vs canal alfa del PNG',
138
- html: 'El GIF solo soporta transparencia binaria (opaco o transparente). Al convertir a PNG, los píxeles semi-transparentes del GIF se mantienen tal como el navegador los interpreta. Si tu GIF tiene bordes dentados, el PNG los conservará — pero podrás editarlos con suavizado de bordes en cualquier editor, algo imposible con el GIF original.',
128
+ html: 'El GIF solo soporta transparencia binaria (opaco o transparente). Al convertir a PNG, los píxeles semi-transparentes del GIF se mantienen tal como el navegador los interpreta. Si tu GIF tiene bordes dentados, el PNG los conservará - pero podrás editarlos con suavizado de bordes en cualquier editor, algo imposible con el GIF original.',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAPngLocaleContent } from '../index';
@@ -51,43 +52,32 @@ const howTo: GifAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'World Wide Web Consortium: Format PNG',
57
- url: 'https://www.w3.org/TR/png/',
58
- },
59
- {
60
- name: 'Information GIF CompuServe',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
68
- text: 'Convertisseur GIF vers PNG : Dépassez les Limites de Couleurs et de Transparence du GIF',
58
+ text: 'Convertisseur GIF vers PNG: Dépassez les Limites de Couleurs et de Transparence du GIF',
69
59
  level: 2,
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: 'Le GIF a été conçu à une époque où les moniteurs pouvaient à peine afficher 256 couleurs. Des décennies plus tard, cette limitation reste sa plus grande faiblesse. Le PNG a été créé précisément pour remplacer le GIF dans tous les cas d\'usage où la qualité et la transparence importent : logos, icônes, graphiques d\'interface et toute image à fond transparent devant s\'afficher parfaitement sur n\'importe quelle couleur de fond.',
63
+ html: 'Le GIF a été conçu à une époque où les moniteurs pouvaient à peine afficher 256 couleurs. Des décennies plus tard, cette limitation reste sa plus grande faiblesse. Le PNG a été créé précisément pour remplacer le GIF dans tous les cas d\'usage où la qualité et la transparence importent: logos, icônes, graphiques d\'interface et toute image à fond transparent devant s\'afficher parfaitement sur n\'importe quelle couleur de fond.',
74
64
  },
75
65
  {
76
66
  type: 'title',
77
- text: 'GIF vs PNG : la révolution des 16 millions de couleurs',
67
+ text: 'GIF vs PNG: la révolution des 16 millions de couleurs',
78
68
  level: 3,
79
69
  },
80
70
  {
81
71
  type: 'paragraph',
82
- html: 'La différence la plus critique entre GIF et PNG n\'est pas seulement le nombre de couleurs. Le GIF supporte une transparence binaire : chaque pixel est soit opaque soit totalement transparent, sans gradation. Le PNG, en revanche, supporte un canal alpha complet avec 256 niveaux d\'opacité par pixel. Cela signifie que les bords d\'un logo en PNG peuvent être parfaitement lissés, tandis que ceux du GIF affichent un crénelage caractéristique sur les fonds colorés.',
72
+ html: 'La différence la plus critique entre GIF et PNG n\'est pas seulement le nombre de couleurs. Le GIF supporte une transparence binaire: chaque pixel est soit opaque soit totalement transparent, sans gradation. Le PNG, en revanche, supporte un canal alpha complet avec 256 niveaux d\'opacité par pixel. Cela signifie que les bords d\'un logo en PNG peuvent être parfaitement lissés, tandis que ceux du GIF affichent un crénelage caractéristique sur les fonds colorés.',
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: 'En plus d\'une transparence supérieure, le PNG supprime la limite de 256 couleurs du GIF. Captures d\'écran, illustrations avec dégradés, logos avec ombres — tout s\'affiche bien mieux en PNG. Et comme il utilise une compression sans perte, chaque pixel conserve sa valeur exacte d\'origine, sans les artefacts qu\'une conversion JPG introduirait.',
76
+ html: 'En plus d\'une transparence supérieure, le PNG supprime la limite de 256 couleurs du GIF. Captures d\'écran, illustrations avec dégradés, logos avec ombres - tout s\'affiche bien mieux en PNG. Et comme il utilise une compression sans perte, chaque pixel conserve sa valeur exacte d\'origine, sans les artefacts qu\'une conversion JPG introduirait.',
87
77
  },
88
78
  {
89
79
  type: 'title',
90
- text: 'Comparaison d\'Architecture : Local vs Cloud',
80
+ text: 'Comparaison d\'Architecture: Local vs Cloud',
91
81
  level: 3,
92
82
  },
93
83
  {
@@ -114,7 +104,7 @@ const seo: GifAPngLocaleContent['seo'] = [
114
104
  'Le GIF ne quitte jamais votre appareil',
115
105
  'Conversion instantanée sans réseau',
116
106
  'Aucune limite de fichiers ni de taille',
117
- 'Confidentialité absolue : 0 octet envoyé',
107
+ 'Confidentialité absolue: 0 octet envoyé',
118
108
  ],
119
109
  },
120
110
  ],
@@ -135,7 +125,7 @@ const seo: GifAPngLocaleContent['seo'] = [
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Transparence binaire du GIF vs canal alpha complet du PNG',
138
- html: 'Le GIF ne supporte que la transparence binaire (opaque ou transparent). Lors de la conversion en PNG, les pixels semi-transparents du GIF sont préservés tels que le navigateur les interprète. Si votre GIF a des bords crénelés, le PNG les conservera — mais vous pourrez ensuite les lisser avec un anti-aliasing dans n\'importe quel éditeur, chose impossible avec le GIF original.',
128
+ html: 'Le GIF ne supporte que la transparence binaire (opaque ou transparent). Lors de la conversion en PNG, les pixels semi-transparents du GIF sont préservés tels que le navigateur les interprète. Si votre GIF a des bords crénelés, le PNG les conservera - mais vous pourrez ensuite les lisser avec un anti-aliasing dans n\'importe quel éditeur, chose impossible avec le GIF original.',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -155,12 +145,12 @@ const seo: GifAPngLocaleContent['seo'] = [
155
145
  },
156
146
  {
157
147
  type: 'title',
158
- text: 'Conclusion : le PNG est ce que le GIF a toujours voulu être',
148
+ text: 'Conclusion: le PNG est ce que le GIF a toujours voulu être',
159
149
  level: 3,
160
150
  },
161
151
  {
162
152
  type: 'paragraph',
163
- html: 'Convertir un GIF en PNG n\'est pas seulement changer de format : c\'est mettre à jour une image vers le standard moderne que le GIF n\'a jamais pu atteindre. Plus de couleurs, meilleure transparence, moins de poids. Notre outil effectue cette conversion en quelques millisecondes, directement dans votre navigateur, sans envoyer aucune donnée à l\'extérieur.',
153
+ html: 'Convertir un GIF en PNG n\'est pas seulement changer de format: c\'est mettre à jour une image vers le standard moderne que le GIF n\'a jamais pu atteindre. Plus de couleurs, meilleure transparence, moins de poids. Notre outil effectue cette conversion en quelques millisecondes, directement dans votre navigateur, sans envoyer aucune donnée à l\'extérieur.',
164
154
  },
165
155
  ];
166
156
 
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'World Wide Web Consortium: PNG format',
57
- url: 'https://www.w3.org/TR/png/',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -135,7 +125,7 @@ const seo: GifAPngLocaleContent['seo'] = [
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Transparansi biner GIF vs saluran alfa PNG',
138
- html: 'GIF hanya mendukung transparansi biner (buram atau transparan). Saat dikonversi ke PNG, piksel semi-transparan dari GIF tetap dipertahankan seperti yang diinterpretasikan oleh browser. Jika GIF Anda memiliki tepi yang bergerigi, PNG akan tetap menjaganya — tetapi Anda dapat mengeditnya dengan penghalusan tepi di editor mana pun, sesuatu yang tidak mungkin dilakukan dengan GIF asli.',
128
+ html: 'GIF hanya mendukung transparansi biner (buram atau transparan). Saat dikonversi ke PNG, piksel semi-transparan dari GIF tetap dipertahankan seperti yang diinterpretasikan oleh browser. Jika GIF Anda memiliki tepi yang bergerigi, PNG akan tetap menjaganya - tetapi Anda dapat mengeditnya dengan penghalusan tepi di editor mana pun, sesuatu yang tidak mungkin dilakukan dengan GIF asli.',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'World Wide Web Consortium: PNG format',
57
- url: 'https://www.w3.org/TR/png/',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -135,7 +125,7 @@ const seo: GifAPngLocaleContent['seo'] = [
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Trasparenza binaria della GIF vs canale alfa del PNG',
138
- html: 'Il GIF supporta solo la trasparenza binaria (opaco o trasparente). Convertendo in PNG, i pixel semitrasparenti della GIF si mantengono così come interpretati dal browser. Se la tua GIF ha bordi seghettati, il PNG li conserverà — ma potrai editarli con ammorbidimento dei bordi in qualsiasi editor, cosa impossibile con la GIF originale.',
128
+ html: 'Il GIF supporta solo la trasparenza binaria (opaco o trasparente). Convertendo in PNG, i pixel semitrasparenti della GIF si mantengono così come interpretati dal browser. Se la tua GIF ha bordi seghettati, il PNG li conserverà - ma potrai editarli con ammorbidimento dei bordi in qualsiasi editor, cosa impossibile con la GIF originale.',
139
129
  },
140
130
  {
141
131
  type: 'title',