@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 { PngAWebpLocaleContent } from '../index';
@@ -51,21 +52,6 @@ const howTo: PngAWebpLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
- {
56
- name: 'Google: Detalhes de Implementação WebP',
57
- url: 'https://developers.google.com/speed/webp/',
58
- },
59
- {
60
- name: 'W3C: Orientação sobre Core Web Vitals',
61
- url: 'https://web.dev/vitals/',
62
- },
63
- {
64
- name: 'Mozilla Docs: Formatos de Imagem',
65
- url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
- },
67
- ];
68
-
69
55
  const seo: PngAWebpLocaleContent['seo'] = [
70
56
  {
71
57
  type: 'title',
@@ -74,7 +60,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
74
60
  },
75
61
  {
76
62
  type: 'paragraph',
77
- html: 'O <strong>PNG</strong> tem sido o formato de referência para imagens web com transparência durante décadas — logótipos, ícones, elementos de UI, imagens de produtos em fundos recortados. O seu problema é o tamanho do arquivo: a compressão sem perdas que garante a qualidade também gera arquivos visivelmente grandes. O <strong>WebP</strong> da Google resolve esta contradição: suporta o canal alfa (transparência) <em>e</em> comprime muito melhor do que o PNG, tornando a mudança de PNG para WebP no seu website uma otimização perfeita que não sacrifica nada.',
63
+ html: 'O <strong>PNG</strong> tem sido o formato de referência para imagens web com transparência durante décadas - logótipos, ícones, elementos de UI, imagens de produtos em fundos recortados. O seu problema é o tamanho do arquivo: a compressão sem perdas que garante a qualidade também gera arquivos visivelmente grandes. O <strong>WebP</strong> da Google resolve esta contradição: suporta o canal alfa (transparência) <em>e</em> comprime muito melhor do que o PNG, tornando a mudança de PNG para WebP no seu website uma otimização perfeita que não sacrifica nada.',
78
64
  },
79
65
  {
80
66
  type: 'title',
@@ -115,8 +101,8 @@ const seo: PngAWebpLocaleContent['seo'] = [
115
101
  icon: 'mdi:laptop-mac',
116
102
  highlight: true,
117
103
  points: [
118
- 'Velocidade instantânea — latência de rede zero',
119
- 'Privacidade total — 0 bytes enviados externamente',
104
+ 'Velocidade instantânea - latência de rede zero',
105
+ 'Privacidade total - 0 bytes enviados externamente',
120
106
  'Sem limites de MB ou restrições no número de arquivos',
121
107
  'Interface limpa, sem anúncios ou rastreamento',
122
108
  ],
@@ -130,7 +116,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
130
116
  },
131
117
  {
132
118
  type: 'paragraph',
133
- html: 'O PNG é carregado localmente e descodificado num <strong>HTML5 Canvas</strong> em memória. A API Canvas preserva o canal alfa do PNG original — todos os píxeis transparentes e semitransparentes são mantidos intactos no buffer de píxeis RGBA. O canvas é então exportado chamando <code>toDataURL(\'image/webp\')</code>, que aplica o codec WebP do navegador (baseado no libwebp da Google) para gerar um arquivo mais compacto sem alterar os dados de transparência.',
119
+ html: 'O PNG é carregado localmente e descodificado num <strong>HTML5 Canvas</strong> em memória. A API Canvas preserva o canal alfa do PNG original - todos os píxeis transparentes e semitransparentes são mantidos intactos no buffer de píxeis RGBA. O canvas é então exportado chamando <code>toDataURL(\'image/webp\')</code>, que aplica o codec WebP do navegador (baseado no libwebp da Google) para gerar um arquivo mais compacto sem alterar os dados de transparência.',
134
120
  },
135
121
  {
136
122
  type: 'paragraph',
@@ -164,7 +150,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
164
150
  },
165
151
  {
166
152
  type: 'paragraph',
167
- html: 'A mudança de PNG para WebP é a otimização de imagem web mais completa disponível: obtém arquivos mais leves, preserva a transparência e melhora as métricas de Core Web Vitals sem alterar nada no seu design visual. Esta ferramenta faz isso instantaneamente, gratuitamente e de forma completamente privada — as suas imagens são processadas no seu navegador e nunca viajam para qualquer servidor externo.',
153
+ html: 'A mudança de PNG para WebP é a otimização de imagem web mais completa disponível: obtém arquivos mais leves, preserva a transparência e melhora as métricas de Core Web Vitals sem alterar nada no seu design visual. Esta ferramenta faz isso instantaneamente, gratuitamente e de forma completamente privada - as suas imagens são processadas no seu navegador e nunca viajam para qualquer servidor externo.',
168
154
  },
169
155
  ];
170
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 { PngAWebpLocaleContent } from '../index';
@@ -51,21 +52,6 @@ const howTo: PngAWebpLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
- {
56
- name: 'Google: Детали реализации WebP',
57
- url: 'https://developers.google.com/speed/webp/',
58
- },
59
- {
60
- name: 'W3C: Руководство по Core Web Vitals',
61
- url: 'https://web.dev/vitals/',
62
- },
63
- {
64
- name: 'Mozilla Docs: Форматы изображений',
65
- url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
- },
67
- ];
68
-
69
55
  const seo: PngAWebpLocaleContent['seo'] = [
70
56
  {
71
57
  type: 'title',
@@ -74,7 +60,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
74
60
  },
75
61
  {
76
62
  type: 'paragraph',
77
- html: '<strong>PNG</strong> десятилетиями был эталонным форматом для веб-изображений с прозрачностью — логотипов, иконок, элементов пользовательского интерфейса, изображений товаров на вырезанных фонах. Его проблема — размер файла: сжатие без потерь, гарантирующее качество, также порождает файлы заметно большого размера. <strong>WebP</strong> от Google решает это противоречие: он поддерживает альфа-канал (прозрачность) <em>и</em> сжимает гораздо лучше, чем PNG, что делает переход с PNG на WebP на вашем сайте идеальной оптимизацией, не требующей жертв.',
63
+ html: '<strong>PNG</strong> десятилетиями был эталонным форматом для веб-изображений с прозрачностью - логотипов, иконок, элементов пользовательского интерфейса, изображений товаров на вырезанных фонах. Его проблема - размер файла: сжатие без потерь, гарантирующее качество, также порождает файлы заметно большого размера. <strong>WebP</strong> от Google решает это противоречие: он поддерживает альфа-канал (прозрачность) <em>и</em> сжимает гораздо лучше, чем PNG, что делает переход с PNG на WebP на вашем сайте идеальной оптимизацией, не требующей жертв.',
78
64
  },
79
65
  {
80
66
  type: 'title',
@@ -83,11 +69,11 @@ const seo: PngAWebpLocaleContent['seo'] = [
83
69
  },
84
70
  {
85
71
  type: 'paragraph',
86
- html: '<strong>PNG</strong> остается подходящим форматом, когда критически важна совместимость: инструменты дизайна, такие как Photoshop или Figma, рабочие процессы печати, устаревшие настольные приложения или любой контекст, где поддержка WebP не гарантирована. Это также идеальный формат для сохранения рабочих слоев в процессах редактирования, так как сжатие без потерь сохраняет каждый пиксель. Цена: файлы, которые могут весить в 3–8 раз больше, чем их эквивалент в WebP.',
72
+ html: '<strong>PNG</strong> остается подходящим форматом, когда критически важна совместимость: инструменты дизайна, такие как Photoshop или Figma, рабочие процессы печати, устаревшие настольные приложения или любой контекст, где поддержка WebP не гарантирована. Это также идеальный формат для сохранения рабочих слоев в процессах редактирования, так как сжатие без потерь сохраняет каждый пиксель. Цена: файлы, которые могут весить в 3-8 раз больше, чем их эквивалент в WebP.',
87
73
  },
88
74
  {
89
75
  type: 'paragraph',
90
- html: '<strong>WebP</strong> — естественная замена PNG для всего современного веб-контента. Chrome, Firefox, Safari и Edge поддерживают его нативно. Изображение WebP без потерь на 26% меньше соответствующего изображения PNG; в режиме с потерями оно может быть до 40% меньше при практически неразличимом визуальном качестве. И что крайне важно для веб-дизайна: <strong>WebP сохраняет альфа-прозрачность</strong> точно так же, как PNG, без визуальных компромиссов.',
76
+ html: '<strong>WebP</strong> - естественная замена PNG для всего современного веб-контента. Chrome, Firefox, Safari и Edge поддерживают его нативно. Изображение WebP без потерь на 26% меньше соответствующего изображения PNG; в режиме с потерями оно может быть до 40% меньше при практически неразличимом визуальном качестве. И что крайне важно для веб-дизайна: <strong>WebP сохраняет альфа-прозрачность</strong> точно так же, как PNG, без визуальных компромиссов.',
91
77
  },
92
78
  {
93
79
  type: 'title',
@@ -115,8 +101,8 @@ const seo: PngAWebpLocaleContent['seo'] = [
115
101
  icon: 'mdi:laptop-mac',
116
102
  highlight: true,
117
103
  points: [
118
- 'Мгновенная скорость — нулевая задержка сети',
119
- 'Полная конфиденциальность — 0 байт отправлено наружу',
104
+ 'Мгновенная скорость - нулевая задержка сети',
105
+ 'Полная конфиденциальность - 0 байт отправлено наружу',
120
106
  'Без лимитов по размеру или количеству файлов',
121
107
  'Чистый интерфейс, без рекламы и отслеживания',
122
108
  ],
@@ -130,7 +116,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
130
116
  },
131
117
  {
132
118
  type: 'paragraph',
133
- html: 'PNG загружается локально и декодируется в <strong>HTML5 Canvas</strong> в памяти. API Canvas сохраняет альфа-канал из оригинального PNG — все прозрачные и полупрозрачные пиксели сохраняются в нетронутом виде в буфере пикселей RGBA. Затем холст экспортируется путем вызова <code>toDataURL(\'image/webp\')</code>, что применяет кодек WebP браузера (на основе libwebp от Google) для создания более компактного файла без изменения данных о прозрачности.',
119
+ html: 'PNG загружается локально и декодируется в <strong>HTML5 Canvas</strong> в памяти. API Canvas сохраняет альфа-канал из оригинального PNG - все прозрачные и полупрозрачные пиксели сохраняются в нетронутом виде в буфере пикселей RGBA. Затем холст экспортируется путем вызова <code>toDataURL(\'image/webp\')</code>, что применяет кодек WebP браузера (на основе libwebp от Google) для создания более компактного файла без изменения данных о прозрачности.',
134
120
  },
135
121
  {
136
122
  type: 'paragraph',
@@ -164,7 +150,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
164
150
  },
165
151
  {
166
152
  type: 'paragraph',
167
- html: 'Переход с PNG на WebP — это самая полная доступная оптимизация веб-изображений: вы получаете более легкие файлы, сохраняете прозрачность и улучшаете показатели Core Web Vitals, ничего не меняя в визуальном дизайне. Этот инструмент делает это мгновенно, бесплатно и полностью приватно — ваши изображения обрабатываются в браузере и никогда не отправляются на внешний сервер.',
153
+ html: 'Переход с PNG на WebP - это самая полная доступная оптимизация веб-изображений: вы получаете более легкие файлы, сохраняете прозрачность и улучшаете показатели Core Web Vitals, ничего не меняя в визуальном дизайне. Этот инструмент делает это мгновенно, бесплатно и полностью приватно - ваши изображения обрабатываются в браузере и никогда не отправляются на внешний сервер.',
168
154
  },
169
155
  ];
170
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 { PngAWebpLocaleContent } from '../index';
@@ -51,21 +52,6 @@ const howTo: PngAWebpLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
- {
56
- name: 'Google: WebP-implementeringsdetaljer',
57
- url: 'https://developers.google.com/speed/webp/',
58
- },
59
- {
60
- name: 'W3C: Vägledning för Core Web Vitals',
61
- url: 'https://web.dev/vitals/',
62
- },
63
- {
64
- name: 'Mozilla Docs: Bildformat',
65
- url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
- },
67
- ];
68
-
69
55
  const seo: PngAWebpLocaleContent['seo'] = [
70
56
  {
71
57
  type: 'title',
@@ -74,7 +60,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
74
60
  },
75
61
  {
76
62
  type: 'paragraph',
77
- html: '<strong>PNG</strong> har varit referensformatet för webbbilder med transparens i årtionden — logotyper, ikoner, UI-element, produktbilder på utskurna bakgrunder. Problemet är filstorleken: den förlustfria komprimeringen som garanterar kvalitet genererar också märkbart stora filer. Googles <strong>WebP</strong> löser denna motsägelse: det stöder alfakanalen (transparens) <em>och</em> komprimerar mycket bättre än PNG, vilket gör bytet från PNG till WebP på din webbplats till en perfekt optimering som inte offrar något.',
63
+ html: '<strong>PNG</strong> har varit referensformatet för webbbilder med transparens i årtionden - logotyper, ikoner, UI-element, produktbilder på utskurna bakgrunder. Problemet är filstorleken: den förlustfria komprimeringen som garanterar kvalitet genererar också märkbart stora filer. Googles <strong>WebP</strong> löser denna motsägelse: det stöder alfakanalen (transparens) <em>och</em> komprimerar mycket bättre än PNG, vilket gör bytet från PNG till WebP på din webbplats till en perfekt optimering som inte offrar något.',
78
64
  },
79
65
  {
80
66
  type: 'title',
@@ -83,7 +69,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
83
69
  },
84
70
  {
85
71
  type: 'paragraph',
86
- html: '<strong>PNG</strong> förblir rätt format när kompatibilitet är avgörande: designverktyg som Photoshop eller Figma, arbetsflöden för utskrift, äldre skrivbordsapplikationer eller sammanhang där WebP-stöd inte kan garanteras. Det är också det ideala formatet för att spara arbetslager i redigeringsflöden, eftersom dess förlustfria komprimering bevarar varje pixel. Kostnaden: filer som kan väga 3–8 gånger mer än deras WebP-motsvarighet.',
72
+ html: '<strong>PNG</strong> förblir rätt format när kompatibilitet är avgörande: designverktyg som Photoshop eller Figma, arbetsflöden för utskrift, äldre skrivbordsapplikationer eller sammanhang där WebP-stöd inte kan garanteras. Det är också det ideala formatet för att spara arbetslager i redigeringsflöden, eftersom dess förlustfria komprimering bevarar varje pixel. Kostnaden: filer som kan väga 3-8 gånger mer än deras WebP-motsvarighet.',
87
73
  },
88
74
  {
89
75
  type: 'paragraph',
@@ -115,8 +101,8 @@ const seo: PngAWebpLocaleContent['seo'] = [
115
101
  icon: 'mdi:laptop-mac',
116
102
  highlight: true,
117
103
  points: [
118
- 'Omedelbar hastighet — noll nätverkslatens',
119
- 'Komplett integritet — 0 byte skickas externt',
104
+ 'Omedelbar hastighet - noll nätverkslatens',
105
+ 'Komplett integritet - 0 byte skickas externt',
120
106
  'Inga MB-gränser eller begränsningar på antal filer',
121
107
  'Rent gränssnitt, inga annonser eller spårning',
122
108
  ],
@@ -130,7 +116,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
130
116
  },
131
117
  {
132
118
  type: 'paragraph',
133
- html: 'PNG-filen laddas lokalt och avkodas till ett <strong>HTML5 Canvas</strong> i minnet. Canvas-API:et bevarar alfakanalen från den ursprungliga PNG-filen — alla transparenta och halvtransparenta pixlar hålls intakta i RGBA-pixelbufferten. Canvasen exporteras sedan genom att anropa <code>toDataURL(\'image/webp\')</code>, vilket tillämpar webbläsarens WebP-codec (baserat på Googles libwebp) för att generera en mer kompakt fil utan att ändra transparensdatan.',
119
+ html: 'PNG-filen laddas lokalt och avkodas till ett <strong>HTML5 Canvas</strong> i minnet. Canvas-API:et bevarar alfakanalen från den ursprungliga PNG-filen - alla transparenta och halvtransparenta pixlar hålls intakta i RGBA-pixelbufferten. Canvasen exporteras sedan genom att anropa <code>toDataURL(\'image/webp\')</code>, vilket tillämpar webbläsarens WebP-codec (baserat på Googles libwebp) för att generera en mer kompakt fil utan att ändra transparensdatan.',
134
120
  },
135
121
  {
136
122
  type: 'paragraph',
@@ -164,7 +150,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
164
150
  },
165
151
  {
166
152
  type: 'paragraph',
167
- html: 'Bytet från PNG till WebP är den mest kompletta optimeringen av webbbilder som finns tillgänglig: du får lättare filer, bevarar transparens och förbättrar Core Web Vitals-mått utan att ändra någonting i din visuella design. Detta verktyg gör det omedelbart, gratis och helt privat — dina bilder bearbetas i din webbläsare och skickas aldrig till någon extern server.',
153
+ html: 'Bytet från PNG till WebP är den mest kompletta optimeringen av webbbilder som finns tillgänglig: du får lättare filer, bevarar transparens och förbättrar Core Web Vitals-mått utan att ändra någonting i din visuella design. Detta verktyg gör det omedelbart, gratis och helt privat - dina bilder bearbetas i din webbläsare och skickas aldrig till någon extern server.',
168
154
  },
169
155
  ];
170
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 { PngAWebpLocaleContent } from '../index';
@@ -51,21 +52,6 @@ const howTo: PngAWebpLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
- {
56
- name: 'Google: WebP Uygulama Detayları',
57
- url: 'https://developers.google.com/speed/webp/',
58
- },
59
- {
60
- name: 'W3C: Core Web Vitals Rehberi',
61
- url: 'https://web.dev/vitals/',
62
- },
63
- {
64
- name: 'Mozilla Docs: Görüntü Formatları',
65
- url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
- },
67
- ];
68
-
69
55
  const seo: PngAWebpLocaleContent['seo'] = [
70
56
  {
71
57
  type: 'title',
@@ -74,7 +60,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
74
60
  },
75
61
  {
76
62
  type: 'paragraph',
77
- html: '<strong>PNG</strong>, onlarca yıldır şeffaflığa sahip web görüntüleri için referans format olmuştur — logolar, simgeler, kullanıcı arayüzü öğeleri, dekupe edilmiş arka planlara sahip ürün görüntüleri. Sorunu dosya boyutudur: kaliteyi garanti eden kayıpsız sıkıştırma aynı zamanda belirgin şekilde büyük dosyalar oluşturur. Google\'ın <strong>WebP</strong>\'si bu çelişkiyi çözer: alfa kanalını (şeffaflığı) destekler <em>ve</em> PNG\'den çok daha iyi sıkıştırır; bu da web sitenizde PNG\'den WebP\'ye geçişi hiçbir şeyden ödün vermeyen mükemmel bir optimizasyon haline getirir.',
63
+ html: '<strong>PNG</strong>, onlarca yıldır şeffaflığa sahip web görüntüleri için referans format olmuştur - logolar, simgeler, kullanıcı arayüzü öğeleri, dekupe edilmiş arka planlara sahip ürün görüntüleri. Sorunu dosya boyutudur: kaliteyi garanti eden kayıpsız sıkıştırma aynı zamanda belirgin şekilde büyük dosyalar oluşturur. Google\'ın <strong>WebP</strong>\'si bu çelişkiyi çözer: alfa kanalını (şeffaflığı) destekler <em>ve</em> PNG\'den çok daha iyi sıkıştırır; bu da web sitenizde PNG\'den WebP\'ye geçişi hiçbir şeyden ödün vermeyen mükemmel bir optimizasyon haline getirir.',
78
64
  },
79
65
  {
80
66
  type: 'title',
@@ -115,8 +101,8 @@ const seo: PngAWebpLocaleContent['seo'] = [
115
101
  icon: 'mdi:laptop-mac',
116
102
  highlight: true,
117
103
  points: [
118
- 'Anında hız — sıfır ağ gecikmesi',
119
- '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',
120
106
  'MB sınırı veya dosya sayısı kısıtlaması yok',
121
107
  'Temiz arayüz, reklam veya izleme yok',
122
108
  ],
@@ -130,7 +116,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
130
116
  },
131
117
  {
132
118
  type: 'paragraph',
133
- html: 'PNG yerel olarak yüklenir ve bellekteki bir <strong>HTML5 Canvas</strong>\'a çözülür. Canvas API\'si orijinal PNG\'deki alfa kanalını korur — tüm şeffaf ve yarı şeffaf pikseller RGBA piksel arabelleğinde sağlam tutulur. Ardından tuval, şeffaflık verilerini değiştirmeden daha kompakt bir dosya oluşturmak için tarayıcının (Google\'ın libwebp tabanlı) WebP codec bileşenini uygulayan <code>toDataURL(\'image/webp\')</code> çağrısı yapılarak dışa aktarılır.',
119
+ html: 'PNG yerel olarak yüklenir ve bellekteki bir <strong>HTML5 Canvas</strong>\'a çözülür. Canvas API\'si orijinal PNG\'deki alfa kanalını korur - tüm şeffaf ve yarı şeffaf pikseller RGBA piksel arabelleğinde sağlam tutulur. Ardından tuval, şeffaflık verilerini değiştirmeden daha kompakt bir dosya oluşturmak için tarayıcının (Google\'ın libwebp tabanlı) WebP codec bileşenini uygulayan <code>toDataURL(\'image/webp\')</code> çağrısı yapılarak dışa aktarılır.',
134
120
  },
135
121
  {
136
122
  type: 'paragraph',
@@ -164,7 +150,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
164
150
  },
165
151
  {
166
152
  type: 'paragraph',
167
- html: 'PNG\'den WebP\'ye geçiş, mevcut en eksiksiz web görüntüsü optimizasyonudur: görsel tasarımınız hakkında hiçbir şeyi değiştirmeden daha hafif dosyalar elde eder, şeffaflığı korur ve Core Web Vitals metriklerini iyileştirir. Bu araç bunu anında, ücretsiz ve tamamen gizli bir şekilde yapar — görüntüleriniz tarayıcınızda işlenir ve asla harici bir sunucuya gitmez.',
153
+ html: 'PNG\'den WebP\'ye geçiş, mevcut en eksiksiz web görüntüsü optimizasyonudur: görsel tasarımınız hakkında hiçbir şeyi değiştirmeden daha hafif dosyalar elde eder, şeffaflığı korur ve Core Web Vitals metriklerini iyileştirir. Bu araç bunu anında, ücretsiz ve tamamen gizli bir şekilde yapar - görüntüleriniz tarayıcınızda işlenir ve asla harici bir sunucuya gitmez.',
168
154
  },
169
155
  ];
170
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 { PngAWebpLocaleContent } from '../index';
@@ -51,21 +52,6 @@ const howTo: PngAWebpLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
- {
56
- name: 'Google: WebP 实现详情',
57
- url: 'https://developers.google.com/speed/webp/',
58
- },
59
- {
60
- name: 'W3C: Core Web Vitals 指南',
61
- url: 'https://web.dev/vitals/',
62
- },
63
- {
64
- name: 'Mozilla Docs: 图像格式',
65
- url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
- },
67
- ];
68
-
69
55
  const seo: PngAWebpLocaleContent['seo'] = [
70
56
  {
71
57
  type: 'title',
@@ -74,7 +60,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
74
60
  },
75
61
  {
76
62
  type: 'paragraph',
77
- html: '<strong>PNG</strong> 几十年来一直是带透明度的 Web 图像的标准格式——标志、图标、UI 元素、抠图背景的产品图。其问题在于文件体积: 保证质量的无损压缩也会产生显著的大文件。Google 的 <strong>WebP</strong> 解决了这一矛盾: 它支持 Alpha 通道(透明度) <em>且</em> 压缩率远高于 PNG, 这使得在您的网站上将 PNG 切换为 WebP 成为一种不牺牲任何质量的完美优化。',
63
+ html: '<strong>PNG</strong> 几十年来一直是带透明度的 Web 图像的标准格式-标志、图标、UI 元素、抠图背景的产品图。其问题在于文件体积: 保证质量的无损压缩也会产生显著的大文件。Google 的 <strong>WebP</strong> 解决了这一矛盾: 它支持 Alpha 通道(透明度) <em>且</em> 压缩率远高于 PNG, 这使得在您的网站上将 PNG 切换为 WebP 成为一种不牺牲任何质量的完美优化。',
78
64
  },
79
65
  {
80
66
  type: 'title',
@@ -115,8 +101,8 @@ const seo: PngAWebpLocaleContent['seo'] = [
115
101
  icon: 'mdi:laptop-mac',
116
102
  highlight: true,
117
103
  points: [
118
- '即时处理——零网络延迟',
119
- '完全私密——数据向外发送量为 0 字节',
104
+ '即时处理-零网络延迟',
105
+ '完全私密-数据向外发送量为 0 字节',
120
106
  '无 MB 限制或文件数量限制',
121
107
  '界面简洁, 无广告或追踪',
122
108
  ],
@@ -130,7 +116,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
130
116
  },
131
117
  {
132
118
  type: 'paragraph',
133
- html: 'PNG 文件被本地加载并解码到内存中的 <strong>HTML5 Canvas</strong> 中。Canvas API 保留了原始 PNG 的 Alpha 通道——所有透明和半透明像素在 RGBA 像素缓冲区中保持原样。然后通过调用 <code>toDataURL(\'image/webp\')</code> 导出画布, 该方法应用浏览器的 WebP 编解码器 (基于 Google 的 libwebp) 来生成更紧凑的文件, 而不会改变透明度数据。',
119
+ html: 'PNG 文件被本地加载并解码到内存中的 <strong>HTML5 Canvas</strong> 中。Canvas API 保留了原始 PNG 的 Alpha 通道-所有透明和半透明像素在 RGBA 像素缓冲区中保持原样。然后通过调用 <code>toDataURL(\'image/webp\')</code> 导出画布, 该方法应用浏览器的 WebP 编解码器 (基于 Google 的 libwebp) 来生成更紧凑的文件, 而不会改变透明度数据。',
134
120
  },
135
121
  {
136
122
  type: 'paragraph',
@@ -139,7 +125,7 @@ const seo: PngAWebpLocaleContent['seo'] = [
139
125
  {
140
126
  type: 'tip',
141
127
  title: '提示: 在 Web 端, WebP 同时超越了 PNG 和 JPG',
142
- html: '无损模式下的 WebP 比 PNG 小。有损模式下的 WebP 比 JPG 小。这使得 WebP 成为 Web 环境下 <strong>唯一能够同时取代两者的格式</strong>。在上传之前将您的透明 PNG 转换为 WebP: Google PageSpeed Insights 会检测到这一点, 并在“以现代格式提供图像”审计中给出正面评分。',
128
+ html: '无损模式下的 WebP 比 PNG 小。有损模式下的 WebP 比 JPG 小。这使得 WebP 成为 Web 环境下 <strong>唯一能够同时取代两者的格式</strong>。在上传之前将您的透明 PNG 转换为 WebP: Google PageSpeed Insights 会检测到这一点, 并在\"以现代格式提供图像\"审计中给出正面评分。',
143
129
  },
144
130
  {
145
131
  type: 'title',
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await pngAWebp.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: 'W3C SVG Spezifikation',
6
+ url: 'https://www.w3.org/TR/SVG/',
7
+ },
8
+ {
9
+ name: 'JPEG Standard-Übersicht',
10
+ url: 'https://jpeg.org/jpeg/',
11
+ },
12
+ ];
@@ -27,3 +27,5 @@ export const svgAJpg: 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 { SvgAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: SvgAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: SvgAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'W3C SVG Spezifikation',
57
- url: 'https://www.w3.org/TR/SVG/',
58
- },
59
- {
60
- name: 'JPEG Standard-Übersicht',
61
- url: 'https://jpeg.org/jpeg/',
62
- },
63
- ];
64
-
65
55
  const seo: SvgAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -160,7 +150,7 @@ const seo: SvgAJpgLocaleContent['seo'] = [
160
150
  },
161
151
  {
162
152
  type: 'paragraph',
163
- html: 'Die reale Welt spricht immer noch in Pixeln. Dieses Tool übersetzt Ihre SVG-Vektoren in Sekundenschnelle in die universelle Sprache von JPG – mit hochauflösendem Rendering und ohne dass Ihre proprietären Designs jemals Ihren Browser verlassen.',
153
+ html: 'Die reale Welt spricht immer noch in Pixeln. Dieses Tool übersetzt Ihre SVG-Vektoren in Sekundenschnelle in die universelle Sprache von JPG - mit hochauflösendem Rendering und ohne dass Ihre proprietären Designs jemals Ihren Browser verlassen.',
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 { SvgAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: SvgAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: SvgAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'W3C SVG Specification',
57
- url: 'https://www.w3.org/TR/SVG/',
58
- },
59
- {
60
- name: 'JPEG Standard Overview',
61
- url: 'https://jpeg.org/jpeg/',
62
- },
63
- ];
64
-
65
55
  const seo: SvgAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { SvgAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: SvgAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: SvgAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'W3C SVG Specification',
57
- url: 'https://www.w3.org/TR/SVG/',
58
- },
59
- {
60
- name: 'JPEG Standard Overview',
61
- url: 'https://jpeg.org/jpeg/',
62
- },
63
- ];
64
-
65
55
  const seo: SvgAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { SvgAJpgLocaleContent } from '../index';
@@ -51,30 +52,19 @@ const howTo: SvgAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: SvgAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Spécification W3C SVG',
57
- url: 'https://www.w3.org/TR/SVG/',
58
- },
59
- {
60
- name: 'Aperçu du standard JPEG',
61
- url: 'https://jpeg.org/jpeg/',
62
- },
63
- ];
64
-
65
55
  const seo: SvgAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
68
- text: 'Convertisseur SVG vers JPG : Emmenez vos Vecteurs sur Toutes les Plateformes',
58
+ text: 'Convertisseur SVG vers JPG: Emmenez vos Vecteurs sur Toutes les Plateformes',
69
59
  level: 2,
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: 'Le format <strong>SVG</strong> est le langage natif du web moderne : léger, évolutif, éditable. Mais il existe des plateformes entières qui ne comprennent tout simplement pas les vecteurs. Les réseaux sociaux, les clients de messagerie, les documents Word, les applications d\'impression et la grande majorité des logiciels du monde réel fonctionnent avec des images rastérisées. Le <strong>JPG</strong> est le plus petit dénominateur commun universel : accepté partout, sans exception, sans plugins ni conversions supplémentaires.',
63
+ html: 'Le format <strong>SVG</strong> est le langage natif du web moderne: léger, évolutif, éditable. Mais il existe des plateformes entières qui ne comprennent tout simplement pas les vecteurs. Les réseaux sociaux, les clients de messagerie, les documents Word, les applications d\'impression et la grande majorité des logiciels du monde réel fonctionnent avec des images rastérisées. Le <strong>JPG</strong> est le plus petit dénominateur commun universel: accepté partout, sans exception, sans plugins ni conversions supplémentaires.',
74
64
  },
75
65
  {
76
66
  type: 'title',
77
- text: 'SVG vs JPG : Quand le Vecteur Doit Devenir une Photo',
67
+ text: 'SVG vs JPG: Quand le Vecteur Doit Devenir une Photo',
78
68
  level: 3,
79
69
  },
80
70
  {
@@ -83,11 +73,11 @@ const seo: SvgAJpgLocaleContent['seo'] = [
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: 'JPG convertit chaque image en matrice de pixels avec des informations de couleur compressées par l\'algorithme JPEG. Ne supportant pas le canal alpha, le convertisseur fusionne automatiquement le fond avec du blanc solide. En échange, vous obtenez un fichier qui s\'ouvre sur <em>n\'importe quel appareil de la planète</em> : vieux téléphones, imprimantes, téléviseurs intelligents, applications d\'édition vieilles de vingt ans. C\'est le format du plus petit dénominateur commun, et dans bien des contextes, le plus précieux.',
76
+ html: 'JPG convertit chaque image en matrice de pixels avec des informations de couleur compressées par l\'algorithme JPEG. Ne supportant pas le canal alpha, le convertisseur fusionne automatiquement le fond avec du blanc solide. En échange, vous obtenez un fichier qui s\'ouvre sur <em>n\'importe quel appareil de la planète</em>: vieux téléphones, imprimantes, téléviseurs intelligents, applications d\'édition vieilles de vingt ans. C\'est le format du plus petit dénominateur commun, et dans bien des contextes, le plus précieux.',
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
  {
@@ -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 { SvgAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: SvgAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: SvgAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Spesifikasi W3C SVG',
57
- url: 'https://www.w3.org/TR/SVG/',
58
- },
59
- {
60
- name: 'Ikhtisar Standar JPEG',
61
- url: 'https://jpeg.org/jpeg/',
62
- },
63
- ];
64
-
65
55
  const seo: SvgAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { SvgAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: SvgAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: SvgAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Specifica W3C SVG',
57
- url: 'https://www.w3.org/TR/SVG/',
58
- },
59
- {
60
- name: 'Panoramica dello Standard JPEG',
61
- url: 'https://jpeg.org/jpeg/',
62
- },
63
- ];
64
-
65
55
  const seoArray: SvgAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { SvgAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: SvgAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: SvgAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'W3C SVG仕様',
57
- url: 'https://www.w3.org/TR/SVG/',
58
- },
59
- {
60
- name: 'JPEG標準の概要',
61
- url: 'https://jpeg.org/jpeg/',
62
- },
63
- ];
64
-
65
55
  const seo: SvgAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { SvgAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: SvgAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: SvgAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'W3C SVG 사양',
57
- url: 'https://www.w3.org/TR/SVG/',
58
- },
59
- {
60
- name: 'JPEG 표준 개요',
61
- url: 'https://jpeg.org/jpeg/',
62
- },
63
- ];
64
-
65
55
  const seo: SvgAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { SvgAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: SvgAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: SvgAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'W3C SVG Specificatie',
57
- url: 'https://www.w3.org/TR/SVG/',
58
- },
59
- {
60
- name: 'JPEG Standaard Overzicht',
61
- url: 'https://jpeg.org/jpeg/',
62
- },
63
- ];
64
-
65
55
  const seo: SvgAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',