@jjlmoya/utils-converters 1.15.0 → 1.18.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 (397) hide show
  1. package/package.json +8 -4
  2. package/scripts/clean_titles.py +95 -0
  3. package/scripts/postinstall.mjs +27 -0
  4. package/src/category/i18n/de.ts +1 -1
  5. package/src/category/i18n/fr.ts +9 -9
  6. package/src/category/i18n/ru.ts +1 -1
  7. package/src/category/i18n/sv.ts +1 -1
  8. package/src/data.ts +0 -21
  9. package/src/layouts/PreviewLayout.astro +2 -1
  10. package/src/pages/[locale]/[slug].astro +28 -12
  11. package/src/tests/diacritics_density.test.ts +118 -0
  12. package/src/tests/inverted_punctuation.test.ts +84 -0
  13. package/src/tests/no_en_dash.test.ts +70 -0
  14. package/src/tests/pagespeed_best_practices.test.ts +198 -0
  15. package/src/tests/script_density.test.ts +94 -0
  16. package/src/tests/shared-test-helpers.ts +56 -0
  17. package/src/tests/tool_exports.test.ts +34 -0
  18. package/src/tool/avifAJpg/bibliography.ts +12 -0
  19. package/src/tool/avifAJpg/entry.ts +2 -0
  20. package/src/tool/avifAJpg/i18n/de.ts +2 -12
  21. package/src/tool/avifAJpg/i18n/en.ts +2 -12
  22. package/src/tool/avifAJpg/i18n/es.ts +2 -12
  23. package/src/tool/avifAJpg/i18n/fr.ts +11 -21
  24. package/src/tool/avifAJpg/i18n/id.ts +2 -12
  25. package/src/tool/avifAJpg/i18n/it.ts +2 -12
  26. package/src/tool/avifAJpg/i18n/ja.ts +1 -11
  27. package/src/tool/avifAJpg/i18n/ko.ts +1 -11
  28. package/src/tool/avifAJpg/i18n/nl.ts +2 -12
  29. package/src/tool/avifAJpg/i18n/pl.ts +2 -12
  30. package/src/tool/avifAJpg/i18n/pt.ts +2 -12
  31. package/src/tool/avifAJpg/i18n/ru.ts +7 -17
  32. package/src/tool/avifAJpg/i18n/sv.ts +2 -12
  33. package/src/tool/avifAJpg/i18n/tr.ts +1 -11
  34. package/src/tool/avifAJpg/i18n/zh.ts +4 -14
  35. package/src/tool/avifAJpg/seo.astro +2 -1
  36. package/src/tool/avifAPng/bibliography.ts +12 -0
  37. package/src/tool/avifAPng/entry.ts +2 -0
  38. package/src/tool/avifAPng/i18n/de.ts +4 -14
  39. package/src/tool/avifAPng/i18n/en.ts +4 -14
  40. package/src/tool/avifAPng/i18n/es.ts +4 -14
  41. package/src/tool/avifAPng/i18n/fr.ts +10 -20
  42. package/src/tool/avifAPng/i18n/id.ts +4 -14
  43. package/src/tool/avifAPng/i18n/it.ts +1 -11
  44. package/src/tool/avifAPng/i18n/ja.ts +1 -11
  45. package/src/tool/avifAPng/i18n/ko.ts +1 -11
  46. package/src/tool/avifAPng/i18n/nl.ts +4 -14
  47. package/src/tool/avifAPng/i18n/pl.ts +4 -14
  48. package/src/tool/avifAPng/i18n/pt.ts +4 -14
  49. package/src/tool/avifAPng/i18n/ru.ts +5 -15
  50. package/src/tool/avifAPng/i18n/sv.ts +4 -14
  51. package/src/tool/avifAPng/i18n/tr.ts +1 -11
  52. package/src/tool/avifAPng/i18n/zh.ts +3 -13
  53. package/src/tool/avifAPng/seo.astro +2 -1
  54. package/src/tool/avifAWebp/bibliography.ts +12 -0
  55. package/src/tool/avifAWebp/entry.ts +2 -0
  56. package/src/tool/avifAWebp/i18n/de.ts +6 -16
  57. package/src/tool/avifAWebp/i18n/en.ts +6 -16
  58. package/src/tool/avifAWebp/i18n/es.ts +6 -16
  59. package/src/tool/avifAWebp/i18n/fr.ts +13 -23
  60. package/src/tool/avifAWebp/i18n/id.ts +6 -16
  61. package/src/tool/avifAWebp/i18n/it.ts +1 -11
  62. package/src/tool/avifAWebp/i18n/ja.ts +1 -11
  63. package/src/tool/avifAWebp/i18n/ko.ts +2 -12
  64. package/src/tool/avifAWebp/i18n/nl.ts +6 -16
  65. package/src/tool/avifAWebp/i18n/pl.ts +6 -16
  66. package/src/tool/avifAWebp/i18n/pt.ts +6 -16
  67. package/src/tool/avifAWebp/i18n/ru.ts +7 -17
  68. package/src/tool/avifAWebp/i18n/sv.ts +6 -16
  69. package/src/tool/avifAWebp/i18n/tr.ts +2 -12
  70. package/src/tool/avifAWebp/i18n/zh.ts +6 -16
  71. package/src/tool/avifAWebp/seo.astro +2 -1
  72. package/src/tool/bmpAJpg/bibliography.ts +12 -0
  73. package/src/tool/bmpAJpg/entry.ts +2 -0
  74. package/src/tool/bmpAJpg/i18n/de.ts +1 -11
  75. package/src/tool/bmpAJpg/i18n/en.ts +1 -11
  76. package/src/tool/bmpAJpg/i18n/es.ts +1 -11
  77. package/src/tool/bmpAJpg/i18n/fr.ts +9 -19
  78. package/src/tool/bmpAJpg/i18n/id.ts +1 -11
  79. package/src/tool/bmpAJpg/i18n/it.ts +1 -11
  80. package/src/tool/bmpAJpg/i18n/ja.ts +1 -11
  81. package/src/tool/bmpAJpg/i18n/ko.ts +1 -11
  82. package/src/tool/bmpAJpg/i18n/nl.ts +1 -11
  83. package/src/tool/bmpAJpg/i18n/pl.ts +1 -11
  84. package/src/tool/bmpAJpg/i18n/pt.ts +1 -11
  85. package/src/tool/bmpAJpg/i18n/ru.ts +5 -15
  86. package/src/tool/bmpAJpg/i18n/sv.ts +1 -11
  87. package/src/tool/bmpAJpg/i18n/tr.ts +1 -11
  88. package/src/tool/bmpAJpg/i18n/zh.ts +1 -11
  89. package/src/tool/bmpAJpg/seo.astro +2 -1
  90. package/src/tool/bmpAPng/bibliography.ts +12 -0
  91. package/src/tool/bmpAPng/entry.ts +2 -0
  92. package/src/tool/bmpAPng/i18n/de.ts +2 -12
  93. package/src/tool/bmpAPng/i18n/en.ts +3 -13
  94. package/src/tool/bmpAPng/i18n/es.ts +2 -12
  95. package/src/tool/bmpAPng/i18n/fr.ts +12 -22
  96. package/src/tool/bmpAPng/i18n/id.ts +2 -12
  97. package/src/tool/bmpAPng/i18n/it.ts +2 -12
  98. package/src/tool/bmpAPng/i18n/ja.ts +1 -11
  99. package/src/tool/bmpAPng/i18n/ko.ts +1 -11
  100. package/src/tool/bmpAPng/i18n/nl.ts +2 -12
  101. package/src/tool/bmpAPng/i18n/pl.ts +2 -12
  102. package/src/tool/bmpAPng/i18n/pt.ts +2 -12
  103. package/src/tool/bmpAPng/i18n/ru.ts +9 -19
  104. package/src/tool/bmpAPng/i18n/sv.ts +2 -12
  105. package/src/tool/bmpAPng/i18n/tr.ts +1 -11
  106. package/src/tool/bmpAPng/i18n/zh.ts +1 -11
  107. package/src/tool/bmpAPng/seo.astro +2 -1
  108. package/src/tool/bmpAWebp/bibliography.ts +12 -0
  109. package/src/tool/bmpAWebp/entry.ts +2 -0
  110. package/src/tool/bmpAWebp/i18n/de.ts +8 -18
  111. package/src/tool/bmpAWebp/i18n/en.ts +8 -18
  112. package/src/tool/bmpAWebp/i18n/es.ts +8 -18
  113. package/src/tool/bmpAWebp/i18n/fr.ts +13 -23
  114. package/src/tool/bmpAWebp/i18n/id.ts +8 -18
  115. package/src/tool/bmpAWebp/i18n/it.ts +8 -18
  116. package/src/tool/bmpAWebp/i18n/ja.ts +7 -17
  117. package/src/tool/bmpAWebp/i18n/ko.ts +7 -17
  118. package/src/tool/bmpAWebp/i18n/nl.ts +8 -18
  119. package/src/tool/bmpAWebp/i18n/pl.ts +8 -18
  120. package/src/tool/bmpAWebp/i18n/pt.ts +8 -18
  121. package/src/tool/bmpAWebp/i18n/ru.ts +10 -20
  122. package/src/tool/bmpAWebp/i18n/sv.ts +8 -18
  123. package/src/tool/bmpAWebp/i18n/tr.ts +8 -18
  124. package/src/tool/bmpAWebp/i18n/zh.ts +8 -18
  125. package/src/tool/bmpAWebp/seo.astro +2 -1
  126. package/src/tool/gifAJpg/bibliography.ts +12 -0
  127. package/src/tool/gifAJpg/entry.ts +2 -0
  128. package/src/tool/gifAJpg/i18n/de.ts +1 -11
  129. package/src/tool/gifAJpg/i18n/en.ts +1 -11
  130. package/src/tool/gifAJpg/i18n/es.ts +1 -11
  131. package/src/tool/gifAJpg/i18n/fr.ts +9 -19
  132. package/src/tool/gifAJpg/i18n/id.ts +1 -11
  133. package/src/tool/gifAJpg/i18n/it.ts +1 -11
  134. package/src/tool/gifAJpg/i18n/ja.ts +1 -11
  135. package/src/tool/gifAJpg/i18n/ko.ts +1 -11
  136. package/src/tool/gifAJpg/i18n/nl.ts +1 -11
  137. package/src/tool/gifAJpg/i18n/pl.ts +1 -11
  138. package/src/tool/gifAJpg/i18n/pt.ts +1 -11
  139. package/src/tool/gifAJpg/i18n/ru.ts +2 -12
  140. package/src/tool/gifAJpg/i18n/sv.ts +1 -11
  141. package/src/tool/gifAJpg/i18n/tr.ts +1 -11
  142. package/src/tool/gifAJpg/i18n/zh.ts +1 -11
  143. package/src/tool/gifAJpg/seo.astro +2 -1
  144. package/src/tool/gifAPng/bibliography.ts +12 -0
  145. package/src/tool/gifAPng/entry.ts +2 -0
  146. package/src/tool/gifAPng/i18n/de.ts +2 -12
  147. package/src/tool/gifAPng/i18n/en.ts +3 -13
  148. package/src/tool/gifAPng/i18n/es.ts +2 -12
  149. package/src/tool/gifAPng/i18n/fr.ts +11 -21
  150. package/src/tool/gifAPng/i18n/id.ts +2 -12
  151. package/src/tool/gifAPng/i18n/it.ts +2 -12
  152. package/src/tool/gifAPng/i18n/ja.ts +1 -11
  153. package/src/tool/gifAPng/i18n/ko.ts +1 -11
  154. package/src/tool/gifAPng/i18n/nl.ts +2 -12
  155. package/src/tool/gifAPng/i18n/pl.ts +3 -13
  156. package/src/tool/gifAPng/i18n/pt.ts +2 -12
  157. package/src/tool/gifAPng/i18n/ru.ts +3 -13
  158. package/src/tool/gifAPng/i18n/sv.ts +3 -13
  159. package/src/tool/gifAPng/i18n/tr.ts +1 -11
  160. package/src/tool/gifAPng/i18n/zh.ts +2 -12
  161. package/src/tool/gifAPng/seo.astro +2 -1
  162. package/src/tool/gifAWebp/bibliography.ts +12 -0
  163. package/src/tool/gifAWebp/entry.ts +2 -0
  164. package/src/tool/gifAWebp/i18n/de.ts +3 -13
  165. package/src/tool/gifAWebp/i18n/en.ts +3 -13
  166. package/src/tool/gifAWebp/i18n/es.ts +1 -11
  167. package/src/tool/gifAWebp/i18n/fr.ts +11 -21
  168. package/src/tool/gifAWebp/i18n/id.ts +3 -13
  169. package/src/tool/gifAWebp/i18n/it.ts +1 -11
  170. package/src/tool/gifAWebp/i18n/ja.ts +1 -11
  171. package/src/tool/gifAWebp/i18n/ko.ts +1 -11
  172. package/src/tool/gifAWebp/i18n/nl.ts +3 -13
  173. package/src/tool/gifAWebp/i18n/pl.ts +3 -13
  174. package/src/tool/gifAWebp/i18n/pt.ts +3 -13
  175. package/src/tool/gifAWebp/i18n/ru.ts +7 -17
  176. package/src/tool/gifAWebp/i18n/sv.ts +3 -13
  177. package/src/tool/gifAWebp/i18n/tr.ts +1 -11
  178. package/src/tool/gifAWebp/i18n/zh.ts +4 -14
  179. package/src/tool/gifAWebp/seo.astro +2 -1
  180. package/src/tool/imagenBase64/bibliography.ts +12 -0
  181. package/src/tool/imagenBase64/component.astro +0 -301
  182. package/src/tool/imagenBase64/entry.ts +2 -0
  183. package/src/tool/imagenBase64/i18n/de.ts +7 -17
  184. package/src/tool/imagenBase64/i18n/en.ts +7 -17
  185. package/src/tool/imagenBase64/i18n/es.ts +7 -17
  186. package/src/tool/imagenBase64/i18n/fr.ts +17 -27
  187. package/src/tool/imagenBase64/i18n/id.ts +7 -17
  188. package/src/tool/imagenBase64/i18n/it.ts +6 -16
  189. package/src/tool/imagenBase64/i18n/ja.ts +1 -11
  190. package/src/tool/imagenBase64/i18n/ko.ts +1 -11
  191. package/src/tool/imagenBase64/i18n/nl.ts +7 -17
  192. package/src/tool/imagenBase64/i18n/pl.ts +7 -17
  193. package/src/tool/imagenBase64/i18n/pt.ts +7 -17
  194. package/src/tool/imagenBase64/i18n/ru.ts +9 -19
  195. package/src/tool/imagenBase64/i18n/sv.ts +7 -17
  196. package/src/tool/imagenBase64/i18n/tr.ts +2 -12
  197. package/src/tool/imagenBase64/i18n/zh.ts +7 -17
  198. package/src/tool/imagenBase64/image-to-base64-converter.css +299 -0
  199. package/src/tool/imagenBase64/seo.astro +2 -1
  200. package/src/tool/jpgAIco/bibliography.ts +12 -0
  201. package/src/tool/jpgAIco/entry.ts +2 -0
  202. package/src/tool/jpgAIco/i18n/de.ts +9 -19
  203. package/src/tool/jpgAIco/i18n/en.ts +9 -19
  204. package/src/tool/jpgAIco/i18n/es.ts +7 -17
  205. package/src/tool/jpgAIco/i18n/fr.ts +13 -23
  206. package/src/tool/jpgAIco/i18n/id.ts +9 -19
  207. package/src/tool/jpgAIco/i18n/it.ts +3 -13
  208. package/src/tool/jpgAIco/i18n/ja.ts +2 -12
  209. package/src/tool/jpgAIco/i18n/ko.ts +2 -12
  210. package/src/tool/jpgAIco/i18n/nl.ts +9 -19
  211. package/src/tool/jpgAIco/i18n/pl.ts +9 -19
  212. package/src/tool/jpgAIco/i18n/pt.ts +9 -19
  213. package/src/tool/jpgAIco/i18n/ru.ts +11 -21
  214. package/src/tool/jpgAIco/i18n/sv.ts +9 -19
  215. package/src/tool/jpgAIco/i18n/tr.ts +3 -13
  216. package/src/tool/jpgAIco/i18n/zh.ts +9 -19
  217. package/src/tool/jpgAIco/seo.astro +2 -1
  218. package/src/tool/jpgAPng/bibliography.ts +12 -0
  219. package/src/tool/jpgAPng/entry.ts +2 -0
  220. package/src/tool/jpgAPng/i18n/de.ts +7 -17
  221. package/src/tool/jpgAPng/i18n/en.ts +9 -19
  222. package/src/tool/jpgAPng/i18n/es.ts +7 -17
  223. package/src/tool/jpgAPng/i18n/fr.ts +13 -23
  224. package/src/tool/jpgAPng/i18n/id.ts +7 -17
  225. package/src/tool/jpgAPng/i18n/it.ts +5 -15
  226. package/src/tool/jpgAPng/i18n/ja.ts +3 -13
  227. package/src/tool/jpgAPng/i18n/ko.ts +3 -13
  228. package/src/tool/jpgAPng/i18n/nl.ts +7 -17
  229. package/src/tool/jpgAPng/i18n/pl.ts +7 -17
  230. package/src/tool/jpgAPng/i18n/pt.ts +7 -17
  231. package/src/tool/jpgAPng/i18n/ru.ts +10 -20
  232. package/src/tool/jpgAPng/i18n/sv.ts +7 -17
  233. package/src/tool/jpgAPng/i18n/tr.ts +6 -16
  234. package/src/tool/jpgAPng/i18n/zh.ts +8 -18
  235. package/src/tool/jpgAPng/seo.astro +2 -1
  236. package/src/tool/jpgAWebp/bibliography.ts +12 -0
  237. package/src/tool/jpgAWebp/entry.ts +2 -0
  238. package/src/tool/jpgAWebp/i18n/de.ts +10 -20
  239. package/src/tool/jpgAWebp/i18n/en.ts +10 -20
  240. package/src/tool/jpgAWebp/i18n/es.ts +4 -14
  241. package/src/tool/jpgAWebp/i18n/fr.ts +16 -26
  242. package/src/tool/jpgAWebp/i18n/id.ts +10 -20
  243. package/src/tool/jpgAWebp/i18n/it.ts +6 -16
  244. package/src/tool/jpgAWebp/i18n/ja.ts +2 -12
  245. package/src/tool/jpgAWebp/i18n/ko.ts +3 -13
  246. package/src/tool/jpgAWebp/i18n/nl.ts +10 -20
  247. package/src/tool/jpgAWebp/i18n/pl.ts +10 -20
  248. package/src/tool/jpgAWebp/i18n/pt.ts +10 -20
  249. package/src/tool/jpgAWebp/i18n/ru.ts +10 -20
  250. package/src/tool/jpgAWebp/i18n/sv.ts +10 -20
  251. package/src/tool/jpgAWebp/i18n/tr.ts +5 -15
  252. package/src/tool/jpgAWebp/i18n/zh.ts +9 -19
  253. package/src/tool/jpgAWebp/seo.astro +2 -1
  254. package/src/tool/pngAIco/bibliography.ts +12 -0
  255. package/src/tool/pngAIco/entry.ts +2 -0
  256. package/src/tool/pngAIco/i18n/de.ts +8 -18
  257. package/src/tool/pngAIco/i18n/en.ts +8 -18
  258. package/src/tool/pngAIco/i18n/es.ts +8 -18
  259. package/src/tool/pngAIco/i18n/fr.ts +14 -24
  260. package/src/tool/pngAIco/i18n/id.ts +8 -18
  261. package/src/tool/pngAIco/i18n/it.ts +4 -14
  262. package/src/tool/pngAIco/i18n/ja.ts +2 -12
  263. package/src/tool/pngAIco/i18n/ko.ts +2 -12
  264. package/src/tool/pngAIco/i18n/nl.ts +8 -18
  265. package/src/tool/pngAIco/i18n/pl.ts +8 -18
  266. package/src/tool/pngAIco/i18n/pt.ts +8 -18
  267. package/src/tool/pngAIco/i18n/ru.ts +11 -21
  268. package/src/tool/pngAIco/i18n/sv.ts +8 -18
  269. package/src/tool/pngAIco/i18n/tr.ts +7 -17
  270. package/src/tool/pngAIco/i18n/zh.ts +8 -18
  271. package/src/tool/pngAIco/seo.astro +2 -1
  272. package/src/tool/pngAJpg/bibliography.ts +12 -0
  273. package/src/tool/pngAJpg/entry.ts +2 -0
  274. package/src/tool/pngAJpg/i18n/de.ts +1 -11
  275. package/src/tool/pngAJpg/i18n/en.ts +1 -11
  276. package/src/tool/pngAJpg/i18n/es.ts +1 -11
  277. package/src/tool/pngAJpg/i18n/fr.ts +3 -13
  278. package/src/tool/pngAJpg/i18n/id.ts +1 -11
  279. package/src/tool/pngAJpg/i18n/it.ts +1 -11
  280. package/src/tool/pngAJpg/i18n/ja.ts +1 -11
  281. package/src/tool/pngAJpg/i18n/ko.ts +1 -11
  282. package/src/tool/pngAJpg/i18n/nl.ts +1 -11
  283. package/src/tool/pngAJpg/i18n/pl.ts +7 -17
  284. package/src/tool/pngAJpg/i18n/pt.ts +1 -11
  285. package/src/tool/pngAJpg/i18n/ru.ts +9 -19
  286. package/src/tool/pngAJpg/i18n/sv.ts +1 -11
  287. package/src/tool/pngAJpg/i18n/tr.ts +1 -11
  288. package/src/tool/pngAJpg/i18n/zh.ts +6 -16
  289. package/src/tool/pngAJpg/seo.astro +2 -1
  290. package/src/tool/pngAWebp/bibliography.ts +16 -0
  291. package/src/tool/pngAWebp/entry.ts +2 -0
  292. package/src/tool/pngAWebp/i18n/de.ts +7 -21
  293. package/src/tool/pngAWebp/i18n/en.ts +7 -21
  294. package/src/tool/pngAWebp/i18n/es.ts +6 -20
  295. package/src/tool/pngAWebp/i18n/fr.ts +13 -27
  296. package/src/tool/pngAWebp/i18n/id.ts +7 -21
  297. package/src/tool/pngAWebp/i18n/it.ts +3 -17
  298. package/src/tool/pngAWebp/i18n/ja.ts +2 -16
  299. package/src/tool/pngAWebp/i18n/ko.ts +2 -16
  300. package/src/tool/pngAWebp/i18n/nl.ts +7 -21
  301. package/src/tool/pngAWebp/i18n/pl.ts +7 -21
  302. package/src/tool/pngAWebp/i18n/pt.ts +6 -20
  303. package/src/tool/pngAWebp/i18n/ru.ts +8 -22
  304. package/src/tool/pngAWebp/i18n/sv.ts +7 -21
  305. package/src/tool/pngAWebp/i18n/tr.ts +6 -20
  306. package/src/tool/pngAWebp/i18n/zh.ts +6 -20
  307. package/src/tool/pngAWebp/seo.astro +2 -1
  308. package/src/tool/svgAJpg/bibliography.ts +12 -0
  309. package/src/tool/svgAJpg/entry.ts +2 -0
  310. package/src/tool/svgAJpg/i18n/de.ts +2 -12
  311. package/src/tool/svgAJpg/i18n/en.ts +1 -11
  312. package/src/tool/svgAJpg/i18n/es.ts +1 -11
  313. package/src/tool/svgAJpg/i18n/fr.ts +6 -16
  314. package/src/tool/svgAJpg/i18n/id.ts +1 -11
  315. package/src/tool/svgAJpg/i18n/it.ts +1 -11
  316. package/src/tool/svgAJpg/i18n/ja.ts +1 -11
  317. package/src/tool/svgAJpg/i18n/ko.ts +1 -11
  318. package/src/tool/svgAJpg/i18n/nl.ts +1 -11
  319. package/src/tool/svgAJpg/i18n/pl.ts +1 -11
  320. package/src/tool/svgAJpg/i18n/pt.ts +1 -11
  321. package/src/tool/svgAJpg/i18n/ru.ts +3 -13
  322. package/src/tool/svgAJpg/i18n/sv.ts +1 -11
  323. package/src/tool/svgAJpg/i18n/tr.ts +1 -11
  324. package/src/tool/svgAJpg/i18n/zh.ts +1 -11
  325. package/src/tool/svgAJpg/seo.astro +2 -1
  326. package/src/tool/svgAPng/bibliography.ts +12 -0
  327. package/src/tool/svgAPng/entry.ts +2 -0
  328. package/src/tool/svgAPng/i18n/de.ts +3 -13
  329. package/src/tool/svgAPng/i18n/en.ts +3 -13
  330. package/src/tool/svgAPng/i18n/es.ts +1 -11
  331. package/src/tool/svgAPng/i18n/fr.ts +9 -19
  332. package/src/tool/svgAPng/i18n/id.ts +3 -13
  333. package/src/tool/svgAPng/i18n/it.ts +3 -13
  334. package/src/tool/svgAPng/i18n/ja.ts +1 -11
  335. package/src/tool/svgAPng/i18n/ko.ts +1 -11
  336. package/src/tool/svgAPng/i18n/nl.ts +3 -13
  337. package/src/tool/svgAPng/i18n/pl.ts +3 -13
  338. package/src/tool/svgAPng/i18n/pt.ts +3 -13
  339. package/src/tool/svgAPng/i18n/ru.ts +5 -15
  340. package/src/tool/svgAPng/i18n/sv.ts +3 -13
  341. package/src/tool/svgAPng/i18n/tr.ts +3 -13
  342. package/src/tool/svgAPng/i18n/zh.ts +3 -13
  343. package/src/tool/svgAPng/seo.astro +2 -1
  344. package/src/tool/webpAIco/bibliography.ts +12 -0
  345. package/src/tool/webpAIco/entry.ts +2 -0
  346. package/src/tool/webpAIco/i18n/de.ts +1 -11
  347. package/src/tool/webpAIco/i18n/en.ts +1 -11
  348. package/src/tool/webpAIco/i18n/es.ts +1 -11
  349. package/src/tool/webpAIco/i18n/fr.ts +5 -15
  350. package/src/tool/webpAIco/i18n/id.ts +1 -11
  351. package/src/tool/webpAIco/i18n/it.ts +1 -11
  352. package/src/tool/webpAIco/i18n/ja.ts +1 -11
  353. package/src/tool/webpAIco/i18n/ko.ts +1 -11
  354. package/src/tool/webpAIco/i18n/nl.ts +1 -11
  355. package/src/tool/webpAIco/i18n/pl.ts +1 -11
  356. package/src/tool/webpAIco/i18n/pt.ts +1 -11
  357. package/src/tool/webpAIco/i18n/ru.ts +3 -13
  358. package/src/tool/webpAIco/i18n/sv.ts +1 -11
  359. package/src/tool/webpAIco/i18n/tr.ts +1 -11
  360. package/src/tool/webpAIco/i18n/zh.ts +1 -12
  361. package/src/tool/webpAIco/seo.astro +2 -1
  362. package/src/tool/webpAJpg/bibliography.ts +16 -0
  363. package/src/tool/webpAJpg/entry.ts +2 -0
  364. package/src/tool/webpAJpg/i18n/de.ts +3 -17
  365. package/src/tool/webpAJpg/i18n/en.ts +3 -17
  366. package/src/tool/webpAJpg/i18n/es.ts +1 -15
  367. package/src/tool/webpAJpg/i18n/fr.ts +10 -24
  368. package/src/tool/webpAJpg/i18n/id.ts +3 -17
  369. package/src/tool/webpAJpg/i18n/it.ts +2 -16
  370. package/src/tool/webpAJpg/i18n/ja.ts +1 -15
  371. package/src/tool/webpAJpg/i18n/ko.ts +1 -15
  372. package/src/tool/webpAJpg/i18n/nl.ts +2 -16
  373. package/src/tool/webpAJpg/i18n/pl.ts +3 -17
  374. package/src/tool/webpAJpg/i18n/pt.ts +3 -17
  375. package/src/tool/webpAJpg/i18n/ru.ts +7 -21
  376. package/src/tool/webpAJpg/i18n/sv.ts +3 -17
  377. package/src/tool/webpAJpg/i18n/tr.ts +2 -16
  378. package/src/tool/webpAJpg/i18n/zh.ts +2 -16
  379. package/src/tool/webpAJpg/seo.astro +2 -1
  380. package/src/tool/webpAPng/bibliography.ts +16 -0
  381. package/src/tool/webpAPng/entry.ts +2 -0
  382. package/src/tool/webpAPng/i18n/de.ts +3 -17
  383. package/src/tool/webpAPng/i18n/en.ts +3 -17
  384. package/src/tool/webpAPng/i18n/es.ts +1 -15
  385. package/src/tool/webpAPng/i18n/fr.ts +9 -23
  386. package/src/tool/webpAPng/i18n/id.ts +3 -17
  387. package/src/tool/webpAPng/i18n/it.ts +3 -17
  388. package/src/tool/webpAPng/i18n/ja.ts +1 -15
  389. package/src/tool/webpAPng/i18n/ko.ts +1 -15
  390. package/src/tool/webpAPng/i18n/nl.ts +3 -17
  391. package/src/tool/webpAPng/i18n/pl.ts +3 -17
  392. package/src/tool/webpAPng/i18n/pt.ts +3 -17
  393. package/src/tool/webpAPng/i18n/ru.ts +4 -18
  394. package/src/tool/webpAPng/i18n/sv.ts +3 -17
  395. package/src/tool/webpAPng/i18n/tr.ts +2 -17
  396. package/src/tool/webpAPng/i18n/zh.ts +3 -17
  397. 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 { JpgAIcoLocaleContent } from '../index';
@@ -25,7 +26,7 @@ const faq: JpgAIcoLocaleContent['faq'] = [
25
26
  'Да, мы создаем на 100% аутентичный файл формата Microsoft Icon, вставляя стандартизированный двоичный заголовок на низком уровне в матрицу изображения.',
26
27
  },
27
28
  {
28
- question: 'Что произойдет с пропорциями, если мой оригинальный JPG панорамное фото?',
29
+ question: 'Что произойдет с пропорциями, если мой оригинальный JPG - панорамное фото?',
29
30
  answer:
30
31
  'Строгий глобальный стандарт ICO требует идеально квадратного изображения. Наш движок HTML5 JS центрирует ваше фото и обрежет лишнее, гарантируя сбалансированный результат.',
31
32
  },
@@ -51,17 +52,6 @@ const howTo: JpgAIcoLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAIcoLocaleContent['bibliography'] = [
55
- {
56
- name: 'Структура и использование формата ICO',
57
- url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
58
- },
59
- {
60
- name: 'Стандарты JPEG.org',
61
- url: 'https://jpeg.org/',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAIcoLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: JpgAIcoLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: 'Формат <strong>ICO</strong> это стандарт Microsoft для иконок приложений Windows и фавиконов веб-сайтов. В отличие от простого переименования JPG в .ico, подлинный файл ICO требует специфической бинарной структуры с 22-байтными заголовками и встроенным каталогом изображений. <strong>JPG</strong> является наиболее распространенной отправной точкой для создания этих иконок логотипа компании, фотографии профиля или любого изображения, которое вы хотите превратить в визуальный символ вашего приложения или сайта.',
63
+ html: 'Формат <strong>ICO</strong> - это стандарт Microsoft для иконок приложений Windows и фавиконов веб-сайтов. В отличие от простого переименования JPG в .ico, подлинный файл ICO требует специфической бинарной структуры с 22-байтными заголовками и встроенным каталогом изображений. <strong>JPG</strong> является наиболее распространенной отправной точкой для создания этих иконок - логотипа компании, фотографии профиля или любого изображения, которое вы хотите превратить в визуальный символ вашего приложения или сайта.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -79,11 +69,11 @@ const seo: JpgAIcoLocaleContent['seo'] = [
79
69
  },
80
70
  {
81
71
  type: 'paragraph',
82
- html: '<strong>JPG</strong> это исходный формат, а не формат для иконок. Он идеален для фотографий и баннеров, но несовместим с системами, требующими иконки: проводником Windows, панелью закладок браузера, ярлыками на рабочем столе или манифестами PWA-приложений. Операционная система или браузер, ищущие иконку, ожидают формат ICO и если они его не найдут, отобразят стандартный значок или пустой квадрат.',
72
+ html: '<strong>JPG</strong> - это исходный формат, а не формат для иконок. Он идеален для фотографий и баннеров, но несовместим с системами, требующими иконки: проводником Windows, панелью закладок браузера, ярлыками на рабочем столе или манифестами PWA-приложений. Операционная система или браузер, ищущие иконку, ожидают формат ICO - и если они его не найдут, отобразят стандартный значок или пустой квадрат.',
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: 'Формат <strong>ICO</strong> был разработан для хранения нескольких разрешений в одном файле: <strong>16×16</strong> для панели закладок, <strong>32×32</strong> для ярлыков, <strong>48×48</strong> для проводника и <strong>256×256</strong> для экранов с высокой плотностью пикселей. Браузеры и операционные системы автоматически выбирают подходящее разрешение в зависимости от контекста отображения пользователю не нужно ничем управлять.',
76
+ html: 'Формат <strong>ICO</strong> был разработан для хранения нескольких разрешений в одном файле: <strong>16×16</strong> для панели закладок, <strong>32×32</strong> для ярлыков, <strong>48×48</strong> для проводника и <strong>256×256</strong> для экранов с высокой плотностью пикселей. Браузеры и операционные системы автоматически выбирают подходящее разрешение в зависимости от контекста отображения - пользователю не нужно ничем управлять.',
87
77
  },
88
78
  {
89
79
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAIcoLocaleContent['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
  ],
@@ -126,16 +116,16 @@ const seo: JpgAIcoLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'JPG декодируется и отрисовывается на <strong>HTML5 Canvas</strong> в памяти. Поскольку формат ICO требует квадратного изображения, движок автоматически определяет, является ли JPG прямоугольным, и обрезает его, центрируя наиболее важную часть. Затем он создает стандартный заголовок Microsoft ICO с правильным магическим числом (<code>00 00 01 00</code>), каталогом изображений и закодированными данными пикселей. Результат настоящий бинарный файл .ico, а не переименованный PNG.',
119
+ html: 'JPG декодируется и отрисовывается на <strong>HTML5 Canvas</strong> в памяти. Поскольку формат ICO требует квадратного изображения, движок автоматически определяет, является ли JPG прямоугольным, и обрезает его, центрируя наиболее важную часть. Затем он создает стандартный заголовок Microsoft ICO с правильным магическим числом (<code>00 00 01 00</code>), каталогом изображений и закодированными данными пикселей. Результат - настоящий бинарный файл .ico, а не переименованный PNG.',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: 'Поскольку у JPG нет альфа-канала, результирующий ICO также не будет иметь прозрачности у него будет сплошной фон, унаследованный от оригинальной фотографии. Если вам нужен фавикон с прозрачным фоном (например, для адаптации к темным или светлым панелям закладок), рекомендуемый процесс: удалите фон в редакторе, сохраните как PNG и используйте конвертер PNG в ICO.',
123
+ html: 'Поскольку у JPG нет альфа-канала, результирующий ICO также не будет иметь прозрачности - у него будет сплошной фон, унаследованный от оригинальной фотографии. Если вам нужен фавикон с прозрачным фоном (например, для адаптации к темным или светлым панелям закладок), рекомендуемый процесс: удалите фон в редакторе, сохраните как PNG и используйте конвертер PNG в ICO.',
134
124
  },
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Совет: несколько разрешений в одном ICO',
138
- html: 'Файлы ICO могут содержать <strong>несколько разрешений</strong> в одном файле браузер или ОС автоматически выбирают наиболее подходящее для каждого случая. Для достижения наилучшего результата используйте в качестве источника квадратный JPG размером не менее <strong>256×256 пикселей</strong>: это даст конвертеру достаточно информации для создания четких размеров 16×16, 32×32 и 48×48 без пикселизации.',
128
+ html: 'Файлы ICO могут содержать <strong>несколько разрешений</strong> в одном файле - браузер или ОС автоматически выбирают наиболее подходящее для каждого случая. Для достижения наилучшего результата используйте в качестве источника квадратный JPG размером не менее <strong>256×256 пикселей</strong>: это даст конвертеру достаточно информации для создания четких размеров 16×16, 32×32 и 48×48 без пикселизации.',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -160,7 +150,7 @@ const seo: JpgAIcoLocaleContent['seo'] = [
160
150
  },
161
151
  {
162
152
  type: 'paragraph',
163
- html: 'Конвертация JPG в ICO это технически необходимый шаг для любого веб- или десктоп-проекта, которому нужна узнаваемая визуальная идентичность. Этот инструмент создает подлинные ICO с правильной бинарной структурой за считанные секунды, не загружая ваш логотип на какой-либо внешний сервер. Результат работает во всех браузерах, в проводнике Windows и в любой системе, использующей стандарт ICO от Microsoft.',
153
+ html: 'Конвертация JPG в ICO - это технически необходимый шаг для любого веб- или десктоп-проекта, которому нужна узнаваемая визуальная идентичность. Этот инструмент создает подлинные ICO с правильной бинарной структурой за считанные секунды, не загружая ваш логотип на какой-либо внешний сервер. Результат работает во всех браузерах, в проводнике Windows и в любой системе, использующей стандарт ICO от Microsoft.',
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 { JpgAIcoLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAIcoLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAIcoLocaleContent['bibliography'] = [
55
- {
56
- name: 'ICO Ikonografisk Struktur och Systemanvändning',
57
- url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
58
- },
59
- {
60
- name: 'JPEG.org Standarder',
61
- url: 'https://jpeg.org/',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAIcoLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: JpgAIcoLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: '<strong>ICO</strong>-formatet är Microsofts standard for Windows-applikationsikoner och webbplatsers favicons. Till skillnad från att bara byta namn på en JPG till .ico, kräver en äkta ICO-fil en specifik binär struktur med 22-byte headers och en inbäddad bildkatalog. <strong>JPG</strong> är den vanligaste utgångspunkten for att skapa dessa ikoner en företagslogotyp, ett profilfoto eller vilken bild som helst som du vill forvandla till din applikations eller webbplats visuella ikon.',
63
+ html: '<strong>ICO</strong>-formatet är Microsofts standard for Windows-applikationsikoner och webbplatsers favicons. Till skillnad från att bara byta namn på en JPG till .ico, kräver en äkta ICO-fil en specifik binär struktur med 22-byte headers och en inbäddad bildkatalog. <strong>JPG</strong> är den vanligaste utgångspunkten for att skapa dessa ikoner - en företagslogotyp, ett profilfoto eller vilken bild som helst som du vill forvandla till din applikations eller webbplats visuella ikon.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -79,11 +69,11 @@ const seo: JpgAIcoLocaleContent['seo'] = [
79
69
  },
80
70
  {
81
71
  type: 'paragraph',
82
- html: '<strong>JPG</strong> är ett källformat, inte ett målformat for ikoner. Perfekt for fotografier och banners, men inkompatibelt med system som kräver ikoner: Windows Explorer, webbläsarens bokmärkesfält, skrivbordsgenvägar eller PWA-applikationsmanifest. Ett operativsystem eller en webbläsare som letar efter en ikon forväntar sig ICO-formatet och om den inte hittar det visas en generisk ikon eller en trasig kvadrat.',
72
+ html: '<strong>JPG</strong> är ett källformat, inte ett målformat for ikoner. Perfekt for fotografier och banners, men inkompatibelt med system som kräver ikoner: Windows Explorer, webbläsarens bokmärkesfält, skrivbordsgenvägar eller PWA-applikationsmanifest. Ett operativsystem eller en webbläsare som letar efter en ikon forväntar sig ICO-formatet - och om den inte hittar det visas en generisk ikon eller en trasig kvadrat.',
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: '<strong>ICO</strong>-formatet designades for att innehålla flera upplösningar i en enda fil: <strong>16×16</strong> for bokmärkesfältet, <strong>32×32</strong> for genvägar, <strong>48×48</strong> for filutforskaren och <strong>256×256</strong> for högupplösta skärmar. Webbläsare och operativsystem väljer automatiskt lämplig upplösning baserat på visningssammanhanget användaren behöver inte hantera någonting.',
76
+ html: '<strong>ICO</strong>-formatet designades for att innehålla flera upplösningar i en enda fil: <strong>16×16</strong> for bokmärkesfältet, <strong>32×32</strong> for genvägar, <strong>48×48</strong> for filutforskaren och <strong>256×256</strong> for högupplösta skärmar. Webbläsare och operativsystem väljer automatiskt lämplig upplösning baserat på visningssammanhanget - användaren behöver inte hantera någonting.',
87
77
  },
88
78
  {
89
79
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAIcoLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- 'Omedelbar hastighet noll nätverkslatens',
115
- 'Komplett integritet 0 byte skickas externt',
104
+ 'Omedelbar hastighet - noll nätverkslatens',
105
+ 'Komplett integritet - 0 byte skickas externt',
116
106
  'Inga MB-gränser eller begränsningar på antal filer',
117
107
  'Rent gränssnitt, inga annonser eller spårning',
118
108
  ],
@@ -126,16 +116,16 @@ const seo: JpgAIcoLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'JPG-filen avkodas och ritas på ett <strong>HTML5 Canvas</strong> i minnet. Eftersom ICO-formatet kräver en kvadratisk bild detekterar motorn automatiskt om JPG-filen är rektangulär och beskär den genom att centrera den mest relevanta delen. Sedan bygger den standarden for Microsoft ICO-header med korrekt magic number (<code>00 00 01 00</code>), bildkatalogen und den kodade pixeldatan. Resultatet är en äkta binär .ico-fil inte en omdöpt PNG.',
119
+ html: 'JPG-filen avkodas och ritas på ett <strong>HTML5 Canvas</strong> i minnet. Eftersom ICO-formatet kräver en kvadratisk bild detekterar motorn automatiskt om JPG-filen är rektangulär och beskär den genom att centrera den mest relevanta delen. Sedan bygger den standarden for Microsoft ICO-header med korrekt magic number (<code>00 00 01 00</code>), bildkatalogen und den kodade pixeldatan. Resultatet är en äkta binär .ico-fil - inte en omdöpt PNG.',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: 'Eftersom JPG saknar en alfakanal kommer den resulterande ICO-filen inte heller att ha någon transparens den kommer att ha en solid bakgrund som ärvts från det ursprungliga fotot. Om du behöver en favicon med transparent bakgrund (till exempel for att anpassa dig till mörka eller ljusa bokmärkesfält) är det rekommenderade arbetsflödet: ta bort bakgrunden i en redigerare, spara som PNG und använd PNG till ICO-konverteraren.',
123
+ html: 'Eftersom JPG saknar en alfakanal kommer den resulterande ICO-filen inte heller att ha någon transparens - den kommer att ha en solid bakgrund som ärvts från det ursprungliga fotot. Om du behöver en favicon med transparent bakgrund (till exempel for att anpassa dig till mörka eller ljusa bokmärkesfält) är det rekommenderade arbetsflödet: ta bort bakgrunden i en redigerare, spara som PNG und använd PNG till ICO-konverteraren.',
134
124
  },
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Tips: flera upplösningar i en enda ICO',
138
- html: 'ICO-filer kan packa <strong>flera upplösningar</strong> i en enda fil webbläsaren eller OS väljer automatiskt den lämpligaste for varje sammanhang. För bästa möjliga resultat, använd en kvadratisk JPG på minst <strong>256×256 pixlar</strong> som källa: detta ger konverteraren tillräckligt med information for att generera skarpa 16×16, 32×32 und 48×48 storlekar utan pixelering.',
128
+ html: 'ICO-filer kan packa <strong>flera upplösningar</strong> i en enda fil - webbläsaren eller OS väljer automatiskt den lämpligaste for varje sammanhang. För bästa möjliga resultat, använd en kvadratisk JPG på minst <strong>256×256 pixlar</strong> som källa: detta ger konverteraren tillräckligt med information for att generera skarpa 16×16, 32×32 und 48×48 storlekar utan pixelering.',
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 { JpgAIcoLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAIcoLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAIcoLocaleContent['bibliography'] = [
55
- {
56
- name: 'ICO İkonografik Yapısı ve Sistem Kullanımı',
57
- url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
58
- },
59
- {
60
- name: 'JPEG.org Standartları',
61
- url: 'https://jpeg.org/',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAIcoLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAIcoLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- 'Anında hız sıfır ağ gecikmesi',
115
- 'Tam gizlilik harici olarak gönderilen 0 bayt',
104
+ 'Anında hız - sıfır ağ gecikmesi',
105
+ 'Tam gizlilik - harici olarak gönderilen 0 bayt',
116
106
  'MB sınırı veya dosya sayısı kısıtlaması yok',
117
107
  'Temiz arayüz, reklam veya izleme yok',
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 { JpgAIcoLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: JpgAIcoLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: JpgAIcoLocaleContent['bibliography'] = [
55
- {
56
- name: 'ICO 图像结构和系统使用',
57
- url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
58
- },
59
- {
60
- name: 'JPEG.org 标准',
61
- url: 'https://jpeg.org/',
62
- },
63
- ];
64
-
65
55
  const seo: JpgAIcoLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: JpgAIcoLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: '<strong>ICO</strong> 格式是 Microsoft 针对 Windows 应用程序图标和网站 favicon 的标准。与简单地将 JPG 重命名为 .ico 不同, 真正的 ICO 文件需要特定的二进制结构, 其中包含 22 字节的标头和嵌入的图像目录。 <strong>JPG</strong> 是创建这些图标最常见的起点——公司徽标、个人资料图片或任何您想变成应用程序或网站视觉标志的图像。',
63
+ html: '<strong>ICO</strong> 格式是 Microsoft 针对 Windows 应用程序图标和网站 favicon 的标准。与简单地将 JPG 重命名为 .ico 不同, 真正的 ICO 文件需要特定的二进制结构, 其中包含 22 字节的标头和嵌入的图像目录。 <strong>JPG</strong> 是创建这些图标最常见的起点-公司徽标、个人资料图片或任何您想变成应用程序或网站视觉标志的图像。',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -79,11 +69,11 @@ const seo: JpgAIcoLocaleContent['seo'] = [
79
69
  },
80
70
  {
81
71
  type: 'paragraph',
82
- html: '<strong>JPG</strong> 是源格式, 而不是图标的目标格式。它非常适合照片和横幅, 但与需要图标的系统不兼容: Windows 资源管理器、浏览器的书签栏、桌面快捷方式或 PWA 应用程序清单。寻找图标的操作系统或浏览器期望的是 ICO 格式——如果找不到, 它将显示通用图标或破裂的正方形。',
72
+ html: '<strong>JPG</strong> 是源格式, 而不是图标的目标格式。它非常适合照片和横幅, 但与需要图标的系统不兼容: Windows 资源管理器、浏览器的书签栏、桌面快捷方式或 PWA 应用程序清单。寻找图标的操作系统或浏览器期望的是 ICO 格式-如果找不到, 它将显示通用图标或破裂的正方形。',
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: '<strong>ICO</strong> 格式设计用于在单个文件中包含多种分辨率: 书签栏使用 <strong>16×16</strong>, 快捷方式使用 <strong>32×32</strong>, 资源管理器使用 <strong>48×48</strong>, 高密度显示器使用 <strong>256×256</strong>。浏览器和操作系统会根据显示环境自动选择合适的分辨率——用户无需进行任何管理。',
76
+ html: '<strong>ICO</strong> 格式设计用于在单个文件中包含多种分辨率: 书签栏使用 <strong>16×16</strong>, 快捷方式使用 <strong>32×32</strong>, 资源管理器使用 <strong>48×48</strong>, 高密度显示器使用 <strong>256×256</strong>。浏览器和操作系统会根据显示环境自动选择合适的分辨率-用户无需进行任何管理。',
87
77
  },
88
78
  {
89
79
  type: 'title',
@@ -111,8 +101,8 @@ const seo: JpgAIcoLocaleContent['seo'] = [
111
101
  icon: 'mdi:laptop-mac',
112
102
  highlight: true,
113
103
  points: [
114
- '即时速度——零网络延迟',
115
- '完全私密——数据发送量为 0 字节',
104
+ '即时速度-零网络延迟',
105
+ '完全私密-数据发送量为 0 字节',
116
106
  '没有 MB 限制或文件数量限制',
117
107
  '界面简洁, 无广告或追踪',
118
108
  ],
@@ -126,16 +116,16 @@ const seo: JpgAIcoLocaleContent['seo'] = [
126
116
  },
127
117
  {
128
118
  type: 'paragraph',
129
- html: 'JPG 被解码并绘制到内存中的 <strong>HTML5 Canvas</strong> 上。由于 ICO 格式要求正方形图像, 引擎会自动检测 JPG 是否为长方形, 并通过使最相关的部分居中来进行裁剪。然后, 它使用正确的魔数 (<code>00 00 01 00</code>)、图像目录和编码后的像素数据构建标准的 Microsoft ICO 标头。结果是一个真正的二进制 .ico 文件——而不是重命名的 PNG。',
119
+ html: 'JPG 被解码并绘制到内存中的 <strong>HTML5 Canvas</strong> 上。由于 ICO 格式要求正方形图像, 引擎会自动检测 JPG 是否为长方形, 并通过使最相关的部分居中来进行裁剪。然后, 它使用正确的魔数 (<code>00 00 01 00</code>)、图像目录和编码后的像素数据构建标准的 Microsoft ICO 标头。结果是一个真正的二进制 .ico 文件-而不是重命名的 PNG。',
130
120
  },
131
121
  {
132
122
  type: 'paragraph',
133
- html: '由于 JPG 缺少 Alpha 通道, 生成的 ICO 也不会有透明度——它将具有从原始照片继承的实心背景。如果您需要具有透明背景的 favicon (例如, 为了适应深色或浅色书签栏), 建议的工作流程是: 在编辑器中删除背景, 保存为 PNG, 然后使用 PNG 转 ICO 转换器。',
123
+ html: '由于 JPG 缺少 Alpha 通道, 生成的 ICO 也不会有透明度-它将具有从原始照片继承的实心背景。如果您需要具有透明背景的 favicon (例如, 为了适应深色或浅色书签栏), 建议的工作流程是: 在编辑器中删除背景, 保存为 PNG, 然后使用 PNG 转 ICO 转换器。',
134
124
  },
135
125
  {
136
126
  type: 'tip',
137
127
  title: '提示: 单个 ICO 中的多种分辨率',
138
- html: 'ICO 文件夹可以在单个文件中打包 <strong>多种分辨率</strong> —— 浏览器或操作系统会自动为每个环境选择最合适的一个。为了获得最佳效果, 请使用至少 <strong>256×256 像素</strong> 的正方形 JPG 作为源文件: 这为转换器提供了足够的信息, 可以在不像素化的情况下生成清晰的 16×16、32×32 und 48×48 尺寸。',
128
+ html: 'ICO 文件夹可以在单个文件中打包 <strong>多种分辨率</strong> - 浏览器或操作系统会自动为每个环境选择最合适的一个。为了获得最佳效果, 请使用至少 <strong>256×256 像素</strong> 的正方形 JPG 作为源文件: 这为转换器提供了足够的信息, 可以在不像素化的情况下生成清晰的 16×16、32×32 und 48×48 尺寸。',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await jpgAIco.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: 'The W3C PNG Graphics',
6
+ url: 'https://www.w3.org/Graphics/PNG/',
7
+ },
8
+ {
9
+ name: 'Understanding Digital Image Compression',
10
+ url: 'https://en.wikipedia.org/wiki/Image_compression',
11
+ },
12
+ ];
@@ -27,3 +27,5 @@ export const jpgAPng: 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 { 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',