@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 { JpgAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'The W3C PNG Graphics',
57
- url: 'https://www.w3.org/Graphics/PNG/',
58
- },
59
- {
60
- name: 'Understanding Digital Image Compression',
61
- url: 'https://en.wikipedia.org/wiki/Image_compression',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: JpgAPngLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: '<strong>JPG</strong> ist für Kamerafotos unschlagbar, hat aber eine Schwachstelle: Bei jedem Speichern der Datei wird die verlustbehaftete Kompression erneut angewendet, wodurch Kanten und Verläufe schrittweise verschlechtert werden. <strong>PNG</strong> verwendet verlustfreie Kompression – einmal gespeichert, sind die Pixel unveränderlich. Die Konvertierung von JPG in PNG ist der entscheidende Vorgang, wenn Sie ein Bild für eine intensive Bearbeitung vorbereiten, einen transparenten Hintergrund hinzufügen oder es in einen Designfluss integrieren müssen, der mehrfaches Speichern erfordert.',
63
+ html: '<strong>JPG</strong> ist für Kamerafotos unschlagbar, hat aber eine Schwachstelle: Bei jedem Speichern der Datei wird die verlustbehaftete Kompression erneut angewendet, wodurch Kanten und Verläufe schrittweise verschlechtert werden. <strong>PNG</strong> verwendet verlustfreie Kompression - einmal gespeichert, sind die Pixel unveränderlich. Die Konvertierung von JPG in PNG ist der entscheidende Vorgang, wenn Sie ein Bild für eine intensive Bearbeitung vorbereiten, einen transparenten Hintergrund hinzufügen oder es in einen Designfluss integrieren müssen, der mehrfaches Speichern erfordert.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAPngLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- 'Sofortige Geschwindigkeit – null Netzwerklatenz',
115
- 'Vollständige Privatsphäre – 0 Bytes nach außen gesendet',
104
+ 'Sofortige Geschwindigkeit - null Netzwerklatenz',
105
+ 'Vollständige Privatsphäre - 0 Bytes nach außen gesendet',
116
106
  'Keine MB-Limits oder Beschränkungen der Dateianzahl',
117
107
  'Saubere Schnittstelle, ohne Anzeigen oder Tracking',
118
108
  ],
@@ -126,16 +116,16 @@ const seo: JpgAPngLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'Der Prozess ist rein lokal: Der Browser erstellt einen <strong>Blob</strong> mit dem ausgewählten JPG und zeichnet ihn auf einen <strong>HTML5 Canvas</strong> im Speicher. Sobald er gerendert ist, wird <code>toDataURL(\'image/png\')</code> aufgerufen – der im Browser integrierte PNG-Codec rekodiert jedes Pixel, ohne eine neue verlustbehaftete Kompression anzuwenden. Das Ergebnis ist ein PNG, das den aktuellen Zustand des JPG originalgetreu bewahrt: nicht besser und nicht schlechter, einfach eingefroren.',
119
+ html: 'Der Prozess ist rein lokal: Der Browser erstellt einen <strong>Blob</strong> mit dem ausgewählten JPG und zeichnet ihn auf einen <strong>HTML5 Canvas</strong> im Speicher. Sobald er gerendert ist, wird <code>toDataURL(\'image/png\')</code> aufgerufen - der im Browser integrierte PNG-Codec rekodiert jedes Pixel, ohne eine neue verlustbehaftete Kompression anzuwenden. Das Ergebnis ist ein PNG, das den aktuellen Zustand des JPG originalgetreu bewahrt: nicht besser und nicht schlechter, einfach eingefroren.',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: 'Das resultierende PNG verwendet verlustfreie DEFLATE-Kompression, dieselbe, die von professionellen Tools wie Photoshop oder GIMP verwendet wird. Seine Größe wird größer sein als die des ursprünglichen JPG – normalerweise zwischen dem 2- und 5-fachen –, da es alle Pixel speichert, ohne Informationen zu verwerfen. Das ist der Preis für Treue und unendliche Editierbarkeit.',
123
+ html: 'Das resultierende PNG verwendet verlustfreie DEFLATE-Kompression, dieselbe, die von professionellen Tools wie Photoshop oder GIMP verwendet wird. Seine Größe wird größer sein als die des ursprünglichen JPG - normalerweise zwischen dem 2- und 5-fachen -, da es alle Pixel speichert, ohne Informationen zu verwerfen. Das ist der Preis für Treue und unendliche Editierbarkeit.',
134
124
  },
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Wichtig: Das PNG stellt keine JPEG Qualität wieder her',
138
- html: 'Das Konvertieren eines JPG in PNG <strong>stellt die verlorene Qualität nicht wieder her</strong>, die während der ursprünglichen JPEG-Kompression verloren gegangen ist. Wenn Ihr JPG bereits Blockartefakte oder Farbrauschen hatte, wird das PNG diese intakt bewahren – es verhindert lediglich, dass weitere hinzugefügt werden. Betrachten Sie die Konvertierung als ein "Einfrieren" des aktuellen Zustands des Bildes, damit zukünftige Bearbeitungen es nicht weiter verschlechtern.',
128
+ html: 'Das Konvertieren eines JPG in PNG <strong>stellt die verlorene Qualität nicht wieder her</strong>, die während der ursprünglichen JPEG-Kompression verloren gegangen ist. Wenn Ihr JPG bereits Blockartefakte oder Farbrauschen hatte, wird das PNG diese intakt bewahren - es verhindert lediglich, dass weitere hinzugefügt werden. Betrachten Sie die Konvertierung als ein "Einfrieren" des aktuellen Zustands des Bildes, damit zukünftige Bearbeitungen es nicht weiter verschlechtern.',
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 { JpgAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'The W3C PNG Graphics',
57
- url: 'https://www.w3.org/Graphics/PNG/',
58
- },
59
- {
60
- name: 'Understanding Digital Image Compression',
61
- url: 'https://en.wikipedia.org/wiki/Image_compression',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: JpgAPngLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: '<strong>JPG</strong> is unbeatable for camera photographs, but it has a critical weakness: every time you save the file, it applies its lossy compression again, progressively degrading edges and gradients. <strong>PNG</strong> uses lossless compression — once saved, pixels are immutable. Converting a JPG to PNG is the essential step when you need to prepare an image for intensive editing, add a transparent background, or integrate it into a design workflow that requires multiple saves.',
63
+ html: '<strong>JPG</strong> is unbeatable for camera photographs, but it has a critical weakness: every time you save the file, it applies its lossy compression again, progressively degrading edges and gradients. <strong>PNG</strong> uses lossless compression - once saved, pixels are immutable. Converting a JPG to PNG is the essential step when you need to prepare an image for intensive editing, add a transparent background, or integrate it into a design workflow that requires multiple saves.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -83,7 +73,7 @@ const seo: JpgAPngLocaleContent['seo'] = [
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: '<strong>PNG</strong> is the right choice for corporate logos, screenshots with sharp text, interface elements, product images with white backgrounds that you will later need to cut out, or any graphic asset that will be edited more than once. Lossless compression guarantees that text edges remain perfectly defined and flat colors stay pure — no JPEG noise.',
76
+ html: '<strong>PNG</strong> is the right choice for corporate logos, screenshots with sharp text, interface elements, product images with white backgrounds that you will later need to cut out, or any graphic asset that will be edited more than once. Lossless compression guarantees that text edges remain perfectly defined and flat colors stay pure - no JPEG noise.',
87
77
  },
88
78
  {
89
79
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAPngLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- 'Instant speed — zero network latency',
115
- 'Complete privacy — 0 bytes sent externally',
104
+ 'Instant speed - zero network latency',
105
+ 'Complete privacy - 0 bytes sent externally',
116
106
  'No MB limits or file count restrictions',
117
107
  'Clean interface, no ads or tracking',
118
108
  ],
@@ -126,16 +116,16 @@ const seo: JpgAPngLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'The process is entirely local: the browser creates a <strong>Blob</strong> from the selected JPG and draws it onto an in-memory <strong>HTML5 Canvas</strong>. Once rendered, it calls <code>toDataURL(\'image/png\')</code> — the browser\'s built-in PNG codec re-encodes every pixel without applying any new lossy compression. The result is a PNG that faithfully preserves the current state of the JPG: neither better nor worse, simply frozen.',
119
+ html: 'The process is entirely local: the browser creates a <strong>Blob</strong> from the selected JPG and draws it onto an in-memory <strong>HTML5 Canvas</strong>. Once rendered, it calls <code>toDataURL(\'image/png\')</code> - the browser\'s built-in PNG codec re-encodes every pixel without applying any new lossy compression. The result is a PNG that faithfully preserves the current state of the JPG: neither better nor worse, simply frozen.',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: 'The resulting PNG uses lossless DEFLATE compression, the same used by professional tools like Photoshop or GIMP. Its size will be larger than the original JPG — typically 2 to 5 times — because it stores all pixels without discarding any information. This is the price paid for fidelity and infinite editability.',
123
+ html: 'The resulting PNG uses lossless DEFLATE compression, the same used by professional tools like Photoshop or GIMP. Its size will be larger than the original JPG - typically 2 to 5 times - because it stores all pixels without discarding any information. This is the price paid for fidelity and infinite editability.',
134
124
  },
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Important: PNG does not recover JPEG quality',
138
- html: 'Converting a JPG to PNG <strong>does not recover quality lost</strong> during the original JPEG compression. If your JPG already had block artifacts or color noise, the PNG will preserve them intact — it simply prevents more from being added. Think of the conversion as "freezing" the current state of the image so that future edits do not degrade it further.',
128
+ html: 'Converting a JPG to PNG <strong>does not recover quality lost</strong> during the original JPEG compression. If your JPG already had block artifacts or color noise, the PNG will preserve them intact - it simply prevents more from being added. Think of the conversion as "freezing" the current state of the image so that future edits do not degrade it further.',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -160,7 +150,7 @@ const seo: JpgAPngLocaleContent['seo'] = [
160
150
  },
161
151
  {
162
152
  type: 'paragraph',
163
- html: 'Converting JPG to PNG is the first step in any serious design workflow. It does not transform the original quality, but it protects every pixel from future edits. With this tool, the process happens instantly and completely privately — your corporate or personal images never leave your device at any point.',
153
+ html: 'Converting JPG to PNG is the first step in any serious design workflow. It does not transform the original quality, but it protects every pixel from future edits. With this tool, the process happens instantly and completely privately - your corporate or personal images never leave your device at any point.',
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 { JpgAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'The W3C PNG Graphics',
57
- url: 'https://www.w3.org/Graphics/PNG/',
58
- },
59
- {
60
- name: 'Understanding Digital Image Compression',
61
- url: 'https://en.wikipedia.org/wiki/Image_compression',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: JpgAPngLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: 'El <strong>JPG</strong> es insuperable para fotografías de cámara, pero tiene un talón de Aquiles: cada vez que guardas el archivo aplica de nuevo su compresión con pérdida, degradando progresivamente los bordes y los degradados. El <strong>PNG</strong> usa compresión sin pérdida — una vez guardado, los píxeles son inmutables. Convertir un JPG a PNG es la operación clave cuando necesitas preparar una imagen para edición intensiva, añadir un fondo transparente o integrarla en un flujo de diseño que requiere múltiples guardados.',
63
+ html: 'El <strong>JPG</strong> es insuperable para fotografías de cámara, pero tiene un talón de Aquiles: cada vez que guardas el archivo aplica de nuevo su compresión con pérdida, degradando progresivamente los bordes y los degradados. El <strong>PNG</strong> usa compresión sin pérdida - una vez guardado, los píxeles son inmutables. Convertir un JPG a PNG es la operación clave cuando necesitas preparar una imagen para edición intensiva, añadir un fondo transparente o integrarla en un flujo de diseño que requiere múltiples guardados.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAPngLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- 'Velocidad instantánea — cero latencia de red',
115
- 'Privacidad total — 0 bytes enviados al exterior',
104
+ 'Velocidad instantánea - cero latencia de red',
105
+ 'Privacidad total - 0 bytes enviados al exterior',
116
106
  'Sin límites de MB ni de número de archivos',
117
107
  'Interfaz limpia, sin anuncios ni rastreos',
118
108
  ],
@@ -126,16 +116,16 @@ const seo: JpgAPngLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'El proceso es puramente local: el navegador crea un <strong>Blob</strong> con el JPG seleccionado y lo dibuja sobre un <strong>Canvas HTML5</strong> en memoria. Una vez renderizado, se llama a <code>toDataURL(\'image/png\')</code> — el codec PNG integrado en el navegador recodifica cada píxel sin aplicar ninguna nueva compresión con pérdida. El resultado es un PNG que preserva fielmente el estado actual del JPG: ni mejor ni peor, simplemente congelado.',
119
+ html: 'El proceso es puramente local: el navegador crea un <strong>Blob</strong> con el JPG seleccionado y lo dibuja sobre un <strong>Canvas HTML5</strong> en memoria. Una vez renderizado, se llama a <code>toDataURL(\'image/png\')</code> - el codec PNG integrado en el navegador recodifica cada píxel sin aplicar ninguna nueva compresión con pérdida. El resultado es un PNG que preserva fielmente el estado actual del JPG: ni mejor ni peor, simplemente congelado.',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: 'El PNG resultante utilizará compresión DEFLATE sin pérdida, la misma que emplean herramientas profesionales como Photoshop o GIMP. Su tamaño será mayor que el JPG original — normalmente entre 2 y 5 veces — porque almacena todos los píxeles sin descartar información. Es el precio que se paga por la fidelidad y la editabilidad infinita.',
123
+ html: 'El PNG resultante utilizará compresión DEFLATE sin pérdida, la misma que emplean herramientas profesionales como Photoshop o GIMP. Su tamaño será mayor que el JPG original - normalmente entre 2 y 5 veces - porque almacena todos los píxeles sin descartar información. Es el precio que se paga por la fidelidad y la editabilidad infinita.',
134
124
  },
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Importante: el PNG no recupera la calidad JPEG',
138
- html: 'Convertir un JPG a PNG <strong>no recupera la calidad perdida</strong> durante la compresión JPEG original. Si tu JPG ya tenía artefactos de bloque o ruido de color, el PNG los conservará intactos — simplemente evita que se añadan más. Piensa en la conversión como "congelar" el estado actual de la imagen para que ediciones futuras no la degraden más.',
128
+ html: 'Convertir un JPG a PNG <strong>no recupera la calidad perdida</strong> durante la compresión JPEG original. Si tu JPG ya tenía artefactos de bloque o ruido de color, el PNG los conservará intactos - simplemente evita que se añadan más. Piensa en la conversión como "congelar" el estado actual de la imagen para que ediciones futuras no la degraden más.',
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 { JpgAPngLocaleContent } from '../index';
@@ -51,26 +52,15 @@ const howTo: JpgAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'W3C PNG Graphics',
57
- url: 'https://www.w3.org/Graphics/PNG/',
58
- },
59
- {
60
- name: 'Comprendre la compression d\'image numérique',
61
- url: 'https://en.wikipedia.org/wiki/Image_compression',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
68
- text: 'Convertisseur JPG vers PNG : Éditez sans perte de qualité et ajoutez de la transparence',
58
+ text: 'Convertisseur JPG vers PNG: Éditez sans perte de qualité et ajoutez de la transparence',
69
59
  level: 2,
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: 'Le <strong>JPG</strong> est imbattable pour les photos de caméra, mais il a un talon d\'Achille : chaque fois que vous sauvegardez le fichier, il applique à nouveau sa compression avec perte, dégradant progressivement les bords et les dégradés. Le <strong>PNG</strong> utilise une compression sans perte — une fois sauvegardé, les pixels sont immuables. Convertir un JPG en PNG est l\'étape essentielle lorsque vous devez préparer une image pour une édition intensive, ajouter un fond transparent ou l\'intégrer dans un flux de travail de design nécessitant plusieurs sauvegardes.',
63
+ html: 'Le <strong>JPG</strong> est imbattable pour les photos de caméra, mais il a un talon d\'Achille: chaque fois que vous sauvegardez le fichier, il applique à nouveau sa compression avec perte, dégradant progressivement les bords et les dégradés. Le <strong>PNG</strong> utilise une compression sans perte - une fois sauvegardé, les pixels sont immuables. Convertir un JPG en PNG est l\'étape essentielle lorsque vous devez préparer une image pour une édition intensive, ajouter un fond transparent ou l\'intégrer dans un flux de travail de design nécessitant plusieurs sauvegardes.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -79,15 +69,15 @@ const seo: JpgAPngLocaleContent['seo'] = [
79
69
  },
80
70
  {
81
71
  type: 'paragraph',
82
- html: 'Le <strong>JPG</strong> est le roi de la photographie : fichiers légers, compatibles avec tout. Mais ses artefacts de compression s\'accumulent à chaque édition et re-sauvegarde. Si vous devez recadrer, retoucher ou ajouter du texte à une image à plusieurs reprises, partir d\'un JPG signifie introduire de la dégradation à chaque cycle. Le JPG est également dépourvu de canal alpha : il ne peut pas avoir de fonds transparents, ce qui l\'exclut pour les logos, icônes et éléments d\'interface.',
72
+ html: 'Le <strong>JPG</strong> est le roi de la photographie: fichiers légers, compatibles avec tout. Mais ses artefacts de compression s\'accumulent à chaque édition et re-sauvegarde. Si vous devez recadrer, retoucher ou ajouter du texte à une image à plusieurs reprises, partir d\'un JPG signifie introduire de la dégradation à chaque cycle. Le JPG est également dépourvu de canal alpha: il ne peut pas avoir de fonds transparents, ce qui l\'exclut pour les logos, icônes et éléments d\'interface.',
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: 'Le <strong>PNG</strong> est le bon choix pour les logos d\'entreprise, les captures d\'écran avec du texte net, les éléments d\'interface, les images de produits sur fond blanc à découper, ou tout actif graphique qui sera édité plus d\'une fois. La compression sans perte garantit que les bords du texte restent parfaitement définis et que les couleurs unies demeurent pures — sans bruit JPEG.',
76
+ html: 'Le <strong>PNG</strong> est le bon choix pour les logos d\'entreprise, les captures d\'écran avec du texte net, les éléments d\'interface, les images de produits sur fond blanc à découper, ou tout actif graphique qui sera édité plus d\'une fois. La compression sans perte garantit que les bords du texte restent parfaitement définis et que les couleurs unies demeurent pures - sans bruit JPEG.',
87
77
  },
88
78
  {
89
79
  type: 'title',
90
- text: 'Comparatif : Conversion locale vs Cloud',
80
+ text: 'Comparatif: Conversion locale vs Cloud',
91
81
  level: 3,
92
82
  },
93
83
  {
@@ -111,8 +101,8 @@ const seo: JpgAPngLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- 'Vitesse instantanée — zéro latence réseau',
115
- 'Confidentialité totale — 0 octet envoyé à l\'extérieur',
104
+ 'Vitesse instantanée - zéro latence réseau',
105
+ 'Confidentialité totale - 0 octet envoyé à l\'extérieur',
116
106
  'Aucune limite de taille ni de nombre de fichiers',
117
107
  'Interface épurée, sans publicités ni traçage',
118
108
  ],
@@ -126,16 +116,16 @@ const seo: JpgAPngLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'Le processus est entièrement local : le navigateur crée un <strong>Blob</strong> à partir du JPG sélectionné et le dessine sur un <strong>Canvas HTML5</strong> en mémoire. Une fois rendu, il appelle <code>toDataURL(\'image/png\')</code> — le codec PNG intégré au navigateur ré-encode chaque pixel sans appliquer aucune nouvelle compression avec perte. Le résultat est un PNG qui préserve fidèlement l\'état actuel du JPG : ni meilleur ni moins bon, simplement figé.',
119
+ html: 'Le processus est entièrement local: le navigateur crée un <strong>Blob</strong> à partir du JPG sélectionné et le dessine sur un <strong>Canvas HTML5</strong> en mémoire. Une fois rendu, il appelle <code>toDataURL(\'image/png\')</code> - le codec PNG intégré au navigateur ré-encode chaque pixel sans appliquer aucune nouvelle compression avec perte. Le résultat est un PNG qui préserve fidèlement l\'état actuel du JPG: ni meilleur ni moins bon, simplement figé.',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: 'Le PNG résultant utilise la compression sans perte DEFLATE, la même qu\'emploient des outils professionnels comme Photoshop ou GIMP. Sa taille sera plus grande que le JPG original — généralement 2 à 5 fois — car il stocke tous les pixels sans en éliminer. C\'est le prix à payer pour la fidélité et l\'éditabilité infinie.',
123
+ html: 'Le PNG résultant utilise la compression sans perte DEFLATE, la même qu\'emploient des outils professionnels comme Photoshop ou GIMP. Sa taille sera plus grande que le JPG original - généralement 2 à 5 fois - car il stocke tous les pixels sans en éliminer. C\'est le prix à payer pour la fidélité et l\'éditabilité infinie.',
134
124
  },
135
125
  {
136
126
  type: 'tip',
137
- title: 'Important : le PNG ne récupère pas la qualité JPEG',
138
- html: 'Convertir un JPG en PNG <strong>ne récupère pas la qualité perdue</strong> lors de la compression JPEG originale. Si votre JPG présentait déjà des artefacts de blocs ou du bruit de couleur, le PNG les conservera intacts — il empêche simplement d\'en ajouter davantage. Considérez la conversion comme le fait de "figer" l\'état actuel de l\'image pour que les éditions futures ne la dégradent pas davantage.',
127
+ title: 'Important: le PNG ne récupère pas la qualité JPEG',
128
+ html: 'Convertir un JPG en PNG <strong>ne récupère pas la qualité perdue</strong> lors de la compression JPEG originale. Si votre JPG présentait déjà des artefacts de blocs ou du bruit de couleur, le PNG les conservera intacts - il empêche simplement d\'en ajouter davantage. Considérez la conversion comme le fait de "figer" l\'état actuel de l\'image pour que les éditions futures ne la dégradent pas davantage.',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -160,7 +150,7 @@ const seo: JpgAPngLocaleContent['seo'] = [
160
150
  },
161
151
  {
162
152
  type: 'paragraph',
163
- html: 'La conversion de JPG en PNG est la première étape de tout flux de travail de design sérieux. Elle ne transforme pas la qualité originale, mais protège chaque pixel des éditions futures. Avec cet outil, le processus se déroule instantanément et de manière totalement privée — vos images professionnelles ou personnelles ne quittent à aucun moment votre appareil.',
153
+ html: 'La conversion de JPG en PNG est la première étape de tout flux de travail de design sérieux. Elle ne transforme pas la qualité originale, mais protège chaque pixel des éditions futures. Avec cet outil, le processus se déroule instantanément et de manière totalement privée - vos images professionnelles ou personnelles ne quittent à aucun moment votre appareil.',
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 { JpgAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'The W3C PNG Graphics',
57
- url: 'https://www.w3.org/Graphics/PNG/',
58
- },
59
- {
60
- name: 'Understanding Digital Image Compression',
61
- url: 'https://en.wikipedia.org/wiki/Image_compression',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: JpgAPngLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: '<strong>JPG</strong> tidak tertandingi untuk foto kamera, tetapi memiliki kelemahan: setiap kali Anda menyimpan file, kompresi dengan hilangnya kualitas (lossy) diterapkan kembali, yang secara bertahap merusak tepi dan gradien. <strong>PNG</strong> menggunakan kompresi tanpa kehilangan (lossless) — sekali disimpan, piksel tidak berubah. Mengubah JPG ke PNG adalah operasi kunci saat Anda perlu menyiapkan gambar untuk pengeditan intensif, menambahkan latar belakang transparan, atau mengintegrasikannya ke dalam alur desain yang memerlukan penyimpanan berulang kali.',
63
+ html: '<strong>JPG</strong> tidak tertandingi untuk foto kamera, tetapi memiliki kelemahan: setiap kali Anda menyimpan file, kompresi dengan hilangnya kualitas (lossy) diterapkan kembali, yang secara bertahap merusak tepi dan gradien. <strong>PNG</strong> menggunakan kompresi tanpa kehilangan (lossless) - sekali disimpan, piksel tidak berubah. Mengubah JPG ke PNG adalah operasi kunci saat Anda perlu menyiapkan gambar untuk pengeditan intensif, menambahkan latar belakang transparan, atau mengintegrasikannya ke dalam alur desain yang memerlukan penyimpanan berulang kali.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAPngLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- 'Kecepatan instan — nol latensi jaringan',
115
- 'Privasi total — 0 byte dikirim ke luar',
104
+ 'Kecepatan instan - nol latensi jaringan',
105
+ 'Privasi total - 0 byte dikirim ke luar',
116
106
  'Tanpa batasan MB atau jumlah file',
117
107
  'Antarmuka bersih, tanpa iklan atau pelacakan',
118
108
  ],
@@ -126,16 +116,16 @@ const seo: JpgAPngLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'Prosesnya murni lokal: browser membuat <strong>Blob</strong> dengan JPG yang dipilih dan menggambarnya di atas <strong>Canvas HTML5</strong> di memori. Setelah dirender, <code>toDataURL(\'image/png\')</code> dipanggil — codec PNG yang terintegrasi dalam browser mengode ulang setiap piksel tanpa menerapkan kompresi baru yang merusak kualitas. Hasilnya adalah PNG yang secara setia menjaga kondisi JPG saat ini: tidak lebih baik atau lebih buruk, hanya dibekukan.',
119
+ html: 'Prosesnya murni lokal: browser membuat <strong>Blob</strong> dengan JPG yang dipilih dan menggambarnya di atas <strong>Canvas HTML5</strong> di memori. Setelah dirender, <code>toDataURL(\'image/png\')</code> dipanggil - codec PNG yang terintegrasi dalam browser mengode ulang setiap piksel tanpa menerapkan kompresi baru yang merusak kualitas. Hasilnya adalah PNG yang secara setia menjaga kondisi JPG saat ini: tidak lebih baik atau lebih buruk, hanya dibekukan.',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: 'PNG yang dihasilkan akan menggunakan kompresi DEFLATE tanpa kehilangan, sama seperti yang digunakan oleh alat profesional seperti Photoshop atau GIMP. Ukurannya akan lebih besar dari JPG asli — biasanya antara 2 hingga 5 kali — karena menyimpan semua piksel tanpa membuang informasi. Ini adalah harga yang harus dibayar untuk kesetiaan dan kemampuan pengeditan yang tak terbatas.',
123
+ html: 'PNG yang dihasilkan akan menggunakan kompresi DEFLATE tanpa kehilangan, sama seperti yang digunakan oleh alat profesional seperti Photoshop atau GIMP. Ukurannya akan lebih besar dari JPG asli - biasanya antara 2 hingga 5 kali - karena menyimpan semua piksel tanpa membuang informasi. Ini adalah harga yang harus dibayar untuk kesetiaan dan kemampuan pengeditan yang tak terbatas.',
134
124
  },
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Penting: PNG tidak memulihkan kualitas JPEG',
138
- html: 'Mengubah JPG ke PNG <strong>tidak memulihkan kualitas yang hilang</strong> selama kompresi JPEG asli. Jika JPG Anda sudah memiliki artefak blok atau noise warna, PNG akan menyimpannya secara utuh — ia hanya mencegah penambahan artefak lainnya. Anggaplah konversi sebagai cara untuk "membekukan" kondisi gambar saat ini agar pengeditan di masa mendatang tidak semakin merusak kualitasnya.',
128
+ html: 'Mengubah JPG ke PNG <strong>tidak memulihkan kualitas yang hilang</strong> selama kompresi JPEG asli. Jika JPG Anda sudah memiliki artefak blok atau noise warna, PNG akan menyimpannya secara utuh - ia hanya mencegah penambahan artefak lainnya. Anggaplah konversi sebagai cara untuk "membekukan" kondisi gambar saat ini agar pengeditan di masa mendatang tidak semakin merusak kualitasnya.',
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 { JpgAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'The W3C PNG Graphics',
57
- url: 'https://www.w3.org/Graphics/PNG/',
58
- },
59
- {
60
- name: 'Understanding Digital Image Compression',
61
- url: 'https://en.wikipedia.org/wiki/Image_compression',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAPngLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- 'Velocità istantanea — zero latenza di rete',
115
- 'Privacy totale — 0 byte inviati all\'esterno',
104
+ 'Velocità istantanea - zero latenza di rete',
105
+ 'Privacy totale - 0 byte inviati all\'esterno',
116
106
  'Nessun limite di MB né di numero di file',
117
107
  'Interfaccia pulita, senza annunci o tracciamenti',
118
108
  ],
@@ -126,11 +116,11 @@ const seo: JpgAPngLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'Il processo è puramente locale: il browser crea un <strong>Blob</strong> con il JPG selezionato e lo disegna su un <strong>Canvas HTML5</strong> in memoria. Una volta renderizzato, viene chiamato <code>toDataURL(\'image/png\')</code> — il codec PNG integrato nel browser ricodifica ogni pixel senza applicare alcuna nuova compressione con perdita. Il risultato è un PNG che preserva fedelmente lo stato attuale del JPG: né meglio né peggio, semplicemente congelato.',
119
+ html: 'Il processo è puramente locale: il browser crea un <strong>Blob</strong> con il JPG selezionato e lo disegna su un <strong>Canvas HTML5</strong> in memoria. Una volta renderizzato, viene chiamato <code>toDataURL(\'image/png\')</code> - il codec PNG integrato nel browser ricodifica ogni pixel senza applicare alcuna nuova compressione con perdita. Il risultato è un PNG che preserva fedelmente lo stato attuale del JPG: né meglio né peggio, semplicemente congelato.',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: 'Il PNG risultante utilizzerà la compressione DEFLATE senza perdita, la stessa impiegata da strumenti professionali come Photoshop o GIMP. La sua dimensione sarà maggiore rispetto al JPG originale — normalmente tra 2 e 5 volte — perché memorizza tutti i pixel senza scartare informazioni. È il prezzo da pagare per la fedeltà e l\'editabilità infinita.',
123
+ html: 'Il PNG risultante utilizzerà la compressione DEFLATE senza perdita, la stessa impiegata da strumenti professionali come Photoshop o GIMP. La sua dimensione sarà maggiore rispetto al JPG originale - normalmente tra 2 e 5 volte - perché memorizza tutti i pixel senza scartare informazioni. È il prezzo da pagare per la fedeltà e l\'editabilità infinita.',
134
124
  },
135
125
  {
136
126
  type: 'tip',
@@ -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 { JpgAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'The W3C PNG Graphics',
57
- url: 'https://www.w3.org/Graphics/PNG/',
58
- },
59
- {
60
- name: 'Understanding Digital Image Compression',
61
- url: 'https://en.wikipedia.org/wiki/Image_compression',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAPngLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- '瞬時の速度 — ネットワーク遅延ゼロ',
115
- '完全なプライバシー — 0バイトが外部に送信される',
104
+ '瞬時の速度 - ネットワーク遅延ゼロ',
105
+ '完全なプライバシー - 0バイトが外部に送信される',
116
106
  'ファイルサイズやファイル数の制限なし',
117
107
  '広告やトラッキングのないクリーンなインターフェース',
118
108
  ],
@@ -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 { JpgAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'The W3C PNG Graphics',
57
- url: 'https://www.w3.org/Graphics/PNG/',
58
- },
59
- {
60
- name: 'Understanding Digital Image Compression',
61
- url: 'https://en.wikipedia.org/wiki/Image_compression',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAPngLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- '실시간 속도 — 네트워크 지연 제로',
115
- '철저한 프라이버시 — 외부로 0바이트 전송',
104
+ '실시간 속도 - 네트워크 지연 제로',
105
+ '철저한 프라이버시 - 외부로 0바이트 전송',
116
106
  '용량 및 파일 개수 제한 없음',
117
107
  '광고나 추적이 없는 깨끗한 인터페이스',
118
108
  ],
@@ -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 { JpgAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'The W3C PNG Graphics',
57
- url: 'https://www.w3.org/Graphics/PNG/',
58
- },
59
- {
60
- name: 'Understanding Digital Image Compression',
61
- url: 'https://en.wikipedia.org/wiki/Image_compression',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: JpgAPngLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: '<strong>JPG</strong> is onverslaanbaar voor camerafoto\'s, maar heeft een zwakke plek: elke keer dat je het bestand opslaat, wordt de compressie met verlies opnieuw toegepast, waardoor randen en gradiënten progressief verslechteren. <strong>PNG</strong> gebruikt verliesvrije compressie — eenmaal opgeslagen, zijn de pixels onveranderlijk. JPG naar PNG converteren is de sleuteloperatie wanneer je een afbeelding moet voorbereiden voor intensieve bewerking, een transparante achtergrond wilt toevoegen of deze wilt integreren in een ontwerpproces dat meerdere keren opslaan vereist.',
63
+ html: '<strong>JPG</strong> is onverslaanbaar voor camerafoto\'s, maar heeft een zwakke plek: elke keer dat je het bestand opslaat, wordt de compressie met verlies opnieuw toegepast, waardoor randen en gradiënten progressief verslechteren. <strong>PNG</strong> gebruikt verliesvrije compressie - eenmaal opgeslagen, zijn de pixels onveranderlijk. JPG naar PNG converteren is de sleuteloperatie wanneer je een afbeelding moet voorbereiden voor intensieve bewerking, een transparante achtergrond wilt toevoegen of deze wilt integreren in een ontwerpproces dat meerdere keren opslaan vereist.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAPngLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- 'Directe snelheid — nul netwerklatentie',
115
- 'Volledige privacy — 0 bytes naar buiten verzonden',
104
+ 'Directe snelheid - nul netwerklatentie',
105
+ 'Volledige privacy - 0 bytes naar buiten verzonden',
116
106
  'Geen MB-limieten of beperkingen op aantal bestanden',
117
107
  'Schone interface, zonder advertenties of tracking',
118
108
  ],
@@ -126,16 +116,16 @@ const seo: JpgAPngLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'Het proces is puur lokaal: de browser maakt een <strong>Blob</strong> met de geselecteerde JPG en tekent deze op een <strong>HTML5 Canvas</strong> in het geheugen. Eenmaal gerenderd, wordt <code>toDataURL(\'image/png\')</code> aangeroepen — de in de browser geïntegreerde PNG-codec hercodeert elke pixel zonder nieuwe compressie met verlies toe te passen. Het resultaat is een PNG die de huidige staat van de JPG natuurgetrouw bewaart: niet beter en niet slechter, gewoon bevroren.',
119
+ html: 'Het proces is puur lokaal: de browser maakt een <strong>Blob</strong> met de geselecteerde JPG en tekent deze op een <strong>HTML5 Canvas</strong> in het geheugen. Eenmaal gerenderd, wordt <code>toDataURL(\'image/png\')</code> aangeroepen - de in de browser geïntegreerde PNG-codec hercodeert elke pixel zonder nieuwe compressie met verlies toe te passen. Het resultaat is een PNG die de huidige staat van de JPG natuurgetrouw bewaart: niet beter en niet slechter, gewoon bevroren.',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: 'De resulterende PNG gebruikt verliesvrije DEFLATE-compressie, dezelfde die professionele tools zoals Photoshop of GIMP gebruiken. De grootte zal groter zijn dan de originele JPG — meestal tussen 2 en 5 keer — omdat het alle pixels opslaat zonder informatie weg te gooien. Dat is de prijs voor trouw en oneindige bewerkbaarheid.',
123
+ html: 'De resulterende PNG gebruikt verliesvrije DEFLATE-compressie, dezelfde die professionele tools zoals Photoshop of GIMP gebruiken. De grootte zal groter zijn dan de originele JPG - meestal tussen 2 en 5 keer - omdat het alle pixels opslaat zonder informatie weg te gooien. Dat is de prijs voor trouw en oneindige bewerkbaarheid.',
134
124
  },
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Belangrijk: PNG herstelt de JPEG kwaliteit niet',
138
- html: 'Een JPG naar PNG converteren <strong>herstelt de verloren kwaliteit niet</strong> die tijdens de originele JPEG-compressie is verloren gegaan. Als je JPG al blok-artefacten of kleurruis had, zal de PNG deze intact houden — het voorkomt simpelweg dat er meer wordt toegevoegd. Zie de conversie als het "bevriezen" van de huidige staat van de afbeelding zodat toekomstige bewerkingen deze niet verder verslechteren.',
128
+ html: 'Een JPG naar PNG converteren <strong>herstelt de verloren kwaliteit niet</strong> die tijdens de originele JPEG-compressie is verloren gegaan. Als je JPG al blok-artefacten of kleurruis had, zal de PNG deze intact houden - het voorkomt simpelweg dat er meer wordt toegevoegd. Zie de conversie als het "bevriezen" van de huidige staat van de afbeelding zodat toekomstige bewerkingen deze niet verder verslechteren.',
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 { JpgAPngLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAPngLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
- {
56
- name: 'The W3C PNG Graphics',
57
- url: 'https://www.w3.org/Graphics/PNG/',
58
- },
59
- {
60
- name: 'Understanding Digital Image Compression',
61
- url: 'https://en.wikipedia.org/wiki/Image_compression',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAPngLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: JpgAPngLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: 'Format <strong>JPG</strong> jest bezkonkurencyjny w przypadku zdjęć z aparatu, ale ma słaby punkt: za każdym razem, gdy zapisujesz plik, ponownie stosowana jest kompresja stratna, co stopniowo pogarsza krawędzie i gradienty. <strong>PNG</strong> wykorzystuje kompresję bezstratną — raz zapisane piksele są niezmienne. Konwersja JPG na PNG to kluczowa operacja, gdy musisz przygotować obraz do intensywnej edycji, dodać przezroczyste tło lub zintegrować go z procesem projektowania wymagającym wielokrotnego zapisywania.',
63
+ html: 'Format <strong>JPG</strong> jest bezkonkurencyjny w przypadku zdjęć z aparatu, ale ma słaby punkt: za każdym razem, gdy zapisujesz plik, ponownie stosowana jest kompresja stratna, co stopniowo pogarsza krawędzie i gradienty. <strong>PNG</strong> wykorzystuje kompresję bezstratną - raz zapisane piksele są niezmienne. Konwersja JPG na PNG to kluczowa operacja, gdy musisz przygotować obraz do intensywnej edycji, dodać przezroczyste tło lub zintegrować go z procesem projektowania wymagającym wielokrotnego zapisywania.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAPngLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- 'Natychmiastowa prędkość — zero opóźnień sieciowych',
115
- 'Całkowita prywatność — 0 bajtów wysłanych na zewnątrz',
104
+ 'Natychmiastowa prędkość - zero opóźnień sieciowych',
105
+ 'Całkowita prywatność - 0 bajtów wysłanych na zewnątrz',
116
106
  'Brak limitów MB i liczby plików',
117
107
  'Czysty interfejs, bez reklam i śledzenia',
118
108
  ],
@@ -126,16 +116,16 @@ const seo: JpgAPngLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'Proces jest czysto lokalny: przeglądarka tworzy <strong>Blob</strong> z wybranym JPG i rysuje go na <strong>HTML5 Canvas</strong> w pamięci. Po wyrenderowaniu wywoływana jest funkcja <code>toDataURL(\'image/png\')</code> — zintegrowany z przeglądarką kodek PNG ponownie koduje każdy piksel bez stosowania żadnej nowej kompresji stratnej. Wynikiem jest plik PNG, który wiernie zachowuje obecny stan JPG: ani lepszy, ani gorszy, po prostu zamrożony.',
119
+ html: 'Proces jest czysto lokalny: przeglądarka tworzy <strong>Blob</strong> z wybranym JPG i rysuje go na <strong>HTML5 Canvas</strong> w pamięci. Po wyrenderowaniu wywoływana jest funkcja <code>toDataURL(\'image/png\')</code> - zintegrowany z przeglądarką kodek PNG ponownie koduje każdy piksel bez stosowania żadnej nowej kompresji stratnej. Wynikiem jest plik PNG, który wiernie zachowuje obecny stan JPG: ani lepszy, ani gorszy, po prostu zamrożony.',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: 'Wynikowy plik PNG będzie wykorzystywał bezstratną kompresję DEFLATE, taką samą jak w profesjonalnych narzędziach takich jak Photoshop czy GIMP. Jego rozmiar będzie większy niż oryginalnego JPG — zazwyczaj od 2 do 5 razy — ponieważ przechowuje wszystkie piksele bez odrzucania informacji. To cena za wierność i nieskończone możliwości edycji.',
123
+ html: 'Wynikowy plik PNG będzie wykorzystywał bezstratną kompresję DEFLATE, taką samą jak w profesjonalnych narzędziach takich jak Photoshop czy GIMP. Jego rozmiar będzie większy niż oryginalnego JPG - zazwyczaj od 2 do 5 razy - ponieważ przechowuje wszystkie piksele bez odrzucania informacji. To cena za wierność i nieskończone możliwości edycji.',
134
124
  },
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Ważne: PNG nie przywraca jakości JPEG',
138
- html: 'Konwersja z JPG na PNG <strong>nie przywraca jakości utraconej</strong> podczas oryginalnej kompresji JPEG. Jeśli Twój JPG posiadał już artefakty blokowe lub szum kolorów, PNG zachowa je w stanie nienaruszonym — po prostu zapobiega dodawaniu kolejnych. Myśl o konwersji jako o "zamrożeniu" obecnego stanu obrazu, tak aby przyszłe edycje nie degradowały go bardziej.',
128
+ html: 'Konwersja z JPG na PNG <strong>nie przywraca jakości utraconej</strong> podczas oryginalnej kompresji JPEG. Jeśli Twój JPG posiadał już artefakty blokowe lub szum kolorów, PNG zachowa je w stanie nienaruszonym - po prostu zapobiega dodawaniu kolejnych. Myśl o konwersji jako o "zamrożeniu" obecnego stanu obrazu, tak aby przyszłe edycje nie degradowały go bardziej.',
139
129
  },
140
130
  {
141
131
  type: 'title',