@jjlmoya/utils-converters 1.7.0 → 1.9.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 (346) hide show
  1. package/package.json +60 -59
  2. package/src/shared/logic/schemas.ts +57 -0
  3. package/src/tests/faq_count.test.ts +13 -4
  4. package/src/tests/i18n_coverage.test.ts +36 -0
  5. package/src/tests/locale_completeness.test.ts +42 -0
  6. package/src/tests/no_h1_in_components.test.ts +48 -0
  7. package/src/tests/schemas_fulfillment.test.ts +23 -0
  8. package/src/tests/seo_length.test.ts +1 -1
  9. package/src/tests/slug_uniqueness.test.ts +81 -0
  10. package/src/tests/title_quality.test.ts +55 -0
  11. package/src/tool/avifAJpg/i18n/de.ts +178 -0
  12. package/src/tool/avifAJpg/i18n/en.ts +2 -12
  13. package/src/tool/avifAJpg/i18n/es.ts +2 -12
  14. package/src/tool/avifAJpg/i18n/fr.ts +2 -12
  15. package/src/tool/avifAJpg/i18n/id.ts +178 -0
  16. package/src/tool/avifAJpg/i18n/it.ts +178 -0
  17. package/src/tool/avifAJpg/i18n/ja.ts +178 -0
  18. package/src/tool/avifAJpg/i18n/ko.ts +178 -0
  19. package/src/tool/avifAJpg/i18n/nl.ts +178 -0
  20. package/src/tool/avifAJpg/i18n/pl.ts +178 -0
  21. package/src/tool/avifAJpg/i18n/pt.ts +178 -0
  22. package/src/tool/avifAJpg/i18n/ru.ts +178 -0
  23. package/src/tool/avifAJpg/i18n/sv.ts +178 -0
  24. package/src/tool/avifAJpg/i18n/tr.ts +178 -0
  25. package/src/tool/avifAJpg/i18n/zh.ts +178 -0
  26. package/src/tool/avifAJpg/index.ts +13 -1
  27. package/src/tool/avifAPng/i18n/de.ts +178 -0
  28. package/src/tool/avifAPng/i18n/en.ts +2 -12
  29. package/src/tool/avifAPng/i18n/es.ts +2 -12
  30. package/src/tool/avifAPng/i18n/fr.ts +2 -12
  31. package/src/tool/avifAPng/i18n/id.ts +178 -0
  32. package/src/tool/avifAPng/i18n/it.ts +178 -0
  33. package/src/tool/avifAPng/i18n/ja.ts +178 -0
  34. package/src/tool/avifAPng/i18n/ko.ts +178 -0
  35. package/src/tool/avifAPng/i18n/nl.ts +178 -0
  36. package/src/tool/avifAPng/i18n/pl.ts +178 -0
  37. package/src/tool/avifAPng/i18n/pt.ts +178 -0
  38. package/src/tool/avifAPng/i18n/ru.ts +178 -0
  39. package/src/tool/avifAPng/i18n/sv.ts +178 -0
  40. package/src/tool/avifAPng/i18n/tr.ts +178 -0
  41. package/src/tool/avifAPng/i18n/zh.ts +178 -0
  42. package/src/tool/avifAPng/index.ts +13 -1
  43. package/src/tool/avifAWebp/i18n/de.ts +178 -0
  44. package/src/tool/avifAWebp/i18n/en.ts +2 -12
  45. package/src/tool/avifAWebp/i18n/es.ts +2 -12
  46. package/src/tool/avifAWebp/i18n/fr.ts +2 -12
  47. package/src/tool/avifAWebp/i18n/id.ts +178 -0
  48. package/src/tool/avifAWebp/i18n/it.ts +178 -0
  49. package/src/tool/avifAWebp/i18n/ja.ts +178 -0
  50. package/src/tool/avifAWebp/i18n/ko.ts +178 -0
  51. package/src/tool/avifAWebp/i18n/nl.ts +178 -0
  52. package/src/tool/avifAWebp/i18n/pl.ts +178 -0
  53. package/src/tool/avifAWebp/i18n/pt.ts +178 -0
  54. package/src/tool/avifAWebp/i18n/ru.ts +178 -0
  55. package/src/tool/avifAWebp/i18n/sv.ts +178 -0
  56. package/src/tool/avifAWebp/i18n/tr.ts +178 -0
  57. package/src/tool/avifAWebp/i18n/zh.ts +178 -0
  58. package/src/tool/avifAWebp/index.ts +13 -1
  59. package/src/tool/bmpAJpg/i18n/de.ts +178 -0
  60. package/src/tool/bmpAJpg/i18n/en.ts +2 -12
  61. package/src/tool/bmpAJpg/i18n/es.ts +2 -12
  62. package/src/tool/bmpAJpg/i18n/fr.ts +2 -12
  63. package/src/tool/bmpAJpg/i18n/id.ts +178 -0
  64. package/src/tool/bmpAJpg/i18n/it.ts +178 -0
  65. package/src/tool/bmpAJpg/i18n/ja.ts +178 -0
  66. package/src/tool/bmpAJpg/i18n/ko.ts +178 -0
  67. package/src/tool/bmpAJpg/i18n/nl.ts +178 -0
  68. package/src/tool/bmpAJpg/i18n/pl.ts +178 -0
  69. package/src/tool/bmpAJpg/i18n/pt.ts +178 -0
  70. package/src/tool/bmpAJpg/i18n/ru.ts +178 -0
  71. package/src/tool/bmpAJpg/i18n/sv.ts +178 -0
  72. package/src/tool/bmpAJpg/i18n/tr.ts +178 -0
  73. package/src/tool/bmpAJpg/i18n/zh.ts +178 -0
  74. package/src/tool/bmpAJpg/index.ts +13 -1
  75. package/src/tool/bmpAPng/i18n/de.ts +177 -0
  76. package/src/tool/bmpAPng/i18n/en.ts +2 -12
  77. package/src/tool/bmpAPng/i18n/es.ts +2 -12
  78. package/src/tool/bmpAPng/i18n/fr.ts +2 -12
  79. package/src/tool/bmpAPng/i18n/id.ts +177 -0
  80. package/src/tool/bmpAPng/i18n/it.ts +177 -0
  81. package/src/tool/bmpAPng/i18n/ja.ts +177 -0
  82. package/src/tool/bmpAPng/i18n/ko.ts +177 -0
  83. package/src/tool/bmpAPng/i18n/nl.ts +177 -0
  84. package/src/tool/bmpAPng/i18n/pl.ts +177 -0
  85. package/src/tool/bmpAPng/i18n/pt.ts +177 -0
  86. package/src/tool/bmpAPng/i18n/ru.ts +177 -0
  87. package/src/tool/bmpAPng/i18n/sv.ts +177 -0
  88. package/src/tool/bmpAPng/i18n/tr.ts +177 -0
  89. package/src/tool/bmpAPng/i18n/zh.ts +177 -0
  90. package/src/tool/bmpAPng/index.ts +13 -1
  91. package/src/tool/bmpAWebp/i18n/de.ts +178 -0
  92. package/src/tool/bmpAWebp/i18n/en.ts +2 -12
  93. package/src/tool/bmpAWebp/i18n/es.ts +2 -12
  94. package/src/tool/bmpAWebp/i18n/fr.ts +2 -12
  95. package/src/tool/bmpAWebp/i18n/id.ts +178 -0
  96. package/src/tool/bmpAWebp/i18n/it.ts +178 -0
  97. package/src/tool/bmpAWebp/i18n/ja.ts +178 -0
  98. package/src/tool/bmpAWebp/i18n/ko.ts +178 -0
  99. package/src/tool/bmpAWebp/i18n/nl.ts +178 -0
  100. package/src/tool/bmpAWebp/i18n/pl.ts +178 -0
  101. package/src/tool/bmpAWebp/i18n/pt.ts +178 -0
  102. package/src/tool/bmpAWebp/i18n/ru.ts +178 -0
  103. package/src/tool/bmpAWebp/i18n/sv.ts +178 -0
  104. package/src/tool/bmpAWebp/i18n/tr.ts +178 -0
  105. package/src/tool/bmpAWebp/i18n/zh.ts +178 -0
  106. package/src/tool/bmpAWebp/index.ts +13 -1
  107. package/src/tool/gifAJpg/i18n/de.ts +178 -0
  108. package/src/tool/gifAJpg/i18n/en.ts +2 -12
  109. package/src/tool/gifAJpg/i18n/es.ts +2 -12
  110. package/src/tool/gifAJpg/i18n/fr.ts +2 -12
  111. package/src/tool/gifAJpg/i18n/id.ts +178 -0
  112. package/src/tool/gifAJpg/i18n/it.ts +178 -0
  113. package/src/tool/gifAJpg/i18n/ja.ts +178 -0
  114. package/src/tool/gifAJpg/i18n/ko.ts +178 -0
  115. package/src/tool/gifAJpg/i18n/nl.ts +178 -0
  116. package/src/tool/gifAJpg/i18n/pl.ts +178 -0
  117. package/src/tool/gifAJpg/i18n/pt.ts +178 -0
  118. package/src/tool/gifAJpg/i18n/ru.ts +178 -0
  119. package/src/tool/gifAJpg/i18n/sv.ts +178 -0
  120. package/src/tool/gifAJpg/i18n/tr.ts +178 -0
  121. package/src/tool/gifAJpg/i18n/zh.ts +178 -0
  122. package/src/tool/gifAJpg/index.ts +13 -1
  123. package/src/tool/gifAPng/i18n/de.ts +178 -0
  124. package/src/tool/gifAPng/i18n/en.ts +2 -12
  125. package/src/tool/gifAPng/i18n/es.ts +2 -12
  126. package/src/tool/gifAPng/i18n/fr.ts +2 -12
  127. package/src/tool/gifAPng/i18n/id.ts +178 -0
  128. package/src/tool/gifAPng/i18n/it.ts +178 -0
  129. package/src/tool/gifAPng/i18n/ja.ts +178 -0
  130. package/src/tool/gifAPng/i18n/ko.ts +178 -0
  131. package/src/tool/gifAPng/i18n/nl.ts +178 -0
  132. package/src/tool/gifAPng/i18n/pl.ts +178 -0
  133. package/src/tool/gifAPng/i18n/pt.ts +178 -0
  134. package/src/tool/gifAPng/i18n/ru.ts +178 -0
  135. package/src/tool/gifAPng/i18n/sv.ts +178 -0
  136. package/src/tool/gifAPng/i18n/tr.ts +178 -0
  137. package/src/tool/gifAPng/i18n/zh.ts +178 -0
  138. package/src/tool/gifAPng/index.ts +12 -0
  139. package/src/tool/gifAWebp/i18n/de.ts +178 -0
  140. package/src/tool/gifAWebp/i18n/en.ts +2 -12
  141. package/src/tool/gifAWebp/i18n/es.ts +2 -12
  142. package/src/tool/gifAWebp/i18n/fr.ts +2 -12
  143. package/src/tool/gifAWebp/i18n/id.ts +178 -0
  144. package/src/tool/gifAWebp/i18n/it.ts +178 -0
  145. package/src/tool/gifAWebp/i18n/ja.ts +178 -0
  146. package/src/tool/gifAWebp/i18n/ko.ts +178 -0
  147. package/src/tool/gifAWebp/i18n/nl.ts +178 -0
  148. package/src/tool/gifAWebp/i18n/pl.ts +178 -0
  149. package/src/tool/gifAWebp/i18n/pt.ts +178 -0
  150. package/src/tool/gifAWebp/i18n/ru.ts +178 -0
  151. package/src/tool/gifAWebp/i18n/sv.ts +178 -0
  152. package/src/tool/gifAWebp/i18n/tr.ts +178 -0
  153. package/src/tool/gifAWebp/i18n/zh.ts +178 -0
  154. package/src/tool/gifAWebp/index.ts +12 -0
  155. package/src/tool/imagenBase64/i18n/de.ts +168 -0
  156. package/src/tool/imagenBase64/i18n/en.ts +2 -12
  157. package/src/tool/imagenBase64/i18n/es.ts +2 -12
  158. package/src/tool/imagenBase64/i18n/fr.ts +2 -12
  159. package/src/tool/imagenBase64/i18n/id.ts +168 -0
  160. package/src/tool/imagenBase64/i18n/it.ts +168 -0
  161. package/src/tool/imagenBase64/i18n/ja.ts +168 -0
  162. package/src/tool/imagenBase64/i18n/ko.ts +168 -0
  163. package/src/tool/imagenBase64/i18n/nl.ts +168 -0
  164. package/src/tool/imagenBase64/i18n/pl.ts +168 -0
  165. package/src/tool/imagenBase64/i18n/pt.ts +173 -0
  166. package/src/tool/imagenBase64/i18n/ru.ts +168 -0
  167. package/src/tool/imagenBase64/i18n/sv.ts +168 -0
  168. package/src/tool/imagenBase64/i18n/tr.ts +168 -0
  169. package/src/tool/imagenBase64/i18n/zh.ts +168 -0
  170. package/src/tool/imagenBase64/index.ts +12 -0
  171. package/src/tool/jpgAIco/i18n/de.ts +183 -0
  172. package/src/tool/jpgAIco/i18n/en.ts +8 -13
  173. package/src/tool/jpgAIco/i18n/es.ts +13 -18
  174. package/src/tool/jpgAIco/i18n/fr.ts +9 -14
  175. package/src/tool/jpgAIco/i18n/id.ts +183 -0
  176. package/src/tool/jpgAIco/i18n/it.ts +183 -0
  177. package/src/tool/jpgAIco/i18n/ja.ts +183 -0
  178. package/src/tool/jpgAIco/i18n/ko.ts +183 -0
  179. package/src/tool/jpgAIco/i18n/nl.ts +183 -0
  180. package/src/tool/jpgAIco/i18n/pl.ts +183 -0
  181. package/src/tool/jpgAIco/i18n/pt.ts +183 -0
  182. package/src/tool/jpgAIco/i18n/ru.ts +183 -0
  183. package/src/tool/jpgAIco/i18n/sv.ts +183 -0
  184. package/src/tool/jpgAIco/i18n/tr.ts +183 -0
  185. package/src/tool/jpgAIco/i18n/zh.ts +183 -0
  186. package/src/tool/jpgAIco/index.ts +12 -0
  187. package/src/tool/jpgAPng/i18n/de.ts +178 -0
  188. package/src/tool/jpgAPng/i18n/en.ts +2 -12
  189. package/src/tool/jpgAPng/i18n/es.ts +2 -12
  190. package/src/tool/jpgAPng/i18n/fr.ts +2 -12
  191. package/src/tool/jpgAPng/i18n/id.ts +178 -0
  192. package/src/tool/jpgAPng/i18n/it.ts +178 -0
  193. package/src/tool/jpgAPng/i18n/ja.ts +178 -0
  194. package/src/tool/jpgAPng/i18n/ko.ts +178 -0
  195. package/src/tool/jpgAPng/i18n/nl.ts +178 -0
  196. package/src/tool/jpgAPng/i18n/pl.ts +178 -0
  197. package/src/tool/jpgAPng/i18n/pt.ts +178 -0
  198. package/src/tool/jpgAPng/i18n/ru.ts +178 -0
  199. package/src/tool/jpgAPng/i18n/sv.ts +178 -0
  200. package/src/tool/jpgAPng/i18n/tr.ts +178 -0
  201. package/src/tool/jpgAPng/i18n/zh.ts +178 -0
  202. package/src/tool/jpgAPng/index.ts +13 -1
  203. package/src/tool/jpgAWebp/i18n/de.ts +178 -0
  204. package/src/tool/jpgAWebp/i18n/en.ts +2 -12
  205. package/src/tool/jpgAWebp/i18n/es.ts +2 -12
  206. package/src/tool/jpgAWebp/i18n/fr.ts +2 -12
  207. package/src/tool/jpgAWebp/i18n/id.ts +178 -0
  208. package/src/tool/jpgAWebp/i18n/it.ts +178 -0
  209. package/src/tool/jpgAWebp/i18n/ja.ts +178 -0
  210. package/src/tool/jpgAWebp/i18n/ko.ts +178 -0
  211. package/src/tool/jpgAWebp/i18n/nl.ts +178 -0
  212. package/src/tool/jpgAWebp/i18n/pl.ts +178 -0
  213. package/src/tool/jpgAWebp/i18n/pt.ts +178 -0
  214. package/src/tool/jpgAWebp/i18n/ru.ts +178 -0
  215. package/src/tool/jpgAWebp/i18n/sv.ts +178 -0
  216. package/src/tool/jpgAWebp/i18n/tr.ts +178 -0
  217. package/src/tool/jpgAWebp/i18n/zh.ts +178 -0
  218. package/src/tool/jpgAWebp/index.ts +12 -0
  219. package/src/tool/pngAIco/i18n/de.ts +183 -0
  220. package/src/tool/pngAIco/i18n/en.ts +8 -13
  221. package/src/tool/pngAIco/i18n/es.ts +19 -24
  222. package/src/tool/pngAIco/i18n/fr.ts +20 -25
  223. package/src/tool/pngAIco/i18n/id.ts +183 -0
  224. package/src/tool/pngAIco/i18n/it.ts +183 -0
  225. package/src/tool/pngAIco/i18n/ja.ts +183 -0
  226. package/src/tool/pngAIco/i18n/ko.ts +183 -0
  227. package/src/tool/pngAIco/i18n/nl.ts +183 -0
  228. package/src/tool/pngAIco/i18n/pl.ts +183 -0
  229. package/src/tool/pngAIco/i18n/pt.ts +183 -0
  230. package/src/tool/pngAIco/i18n/ru.ts +183 -0
  231. package/src/tool/pngAIco/i18n/sv.ts +183 -0
  232. package/src/tool/pngAIco/i18n/tr.ts +183 -0
  233. package/src/tool/pngAIco/i18n/zh.ts +183 -0
  234. package/src/tool/pngAIco/index.ts +12 -0
  235. package/src/tool/pngAJpg/i18n/de.ts +191 -0
  236. package/src/tool/pngAJpg/i18n/en.ts +2 -12
  237. package/src/tool/pngAJpg/i18n/es.ts +2 -12
  238. package/src/tool/pngAJpg/i18n/fr.ts +2 -12
  239. package/src/tool/pngAJpg/i18n/id.ts +191 -0
  240. package/src/tool/pngAJpg/i18n/it.ts +191 -0
  241. package/src/tool/pngAJpg/i18n/ja.ts +191 -0
  242. package/src/tool/pngAJpg/i18n/ko.ts +191 -0
  243. package/src/tool/pngAJpg/i18n/nl.ts +191 -0
  244. package/src/tool/pngAJpg/i18n/pl.ts +191 -0
  245. package/src/tool/pngAJpg/i18n/pt.ts +191 -0
  246. package/src/tool/pngAJpg/i18n/ru.ts +191 -0
  247. package/src/tool/pngAJpg/i18n/sv.ts +191 -0
  248. package/src/tool/pngAJpg/i18n/tr.ts +191 -0
  249. package/src/tool/pngAJpg/i18n/zh.ts +191 -0
  250. package/src/tool/pngAJpg/index.ts +13 -1
  251. package/src/tool/pngAWebp/i18n/de.ts +182 -0
  252. package/src/tool/pngAWebp/i18n/en.ts +2 -12
  253. package/src/tool/pngAWebp/i18n/es.ts +2 -12
  254. package/src/tool/pngAWebp/i18n/fr.ts +2 -12
  255. package/src/tool/pngAWebp/i18n/id.ts +182 -0
  256. package/src/tool/pngAWebp/i18n/it.ts +182 -0
  257. package/src/tool/pngAWebp/i18n/ja.ts +182 -0
  258. package/src/tool/pngAWebp/i18n/ko.ts +182 -0
  259. package/src/tool/pngAWebp/i18n/nl.ts +182 -0
  260. package/src/tool/pngAWebp/i18n/pl.ts +182 -0
  261. package/src/tool/pngAWebp/i18n/pt.ts +182 -0
  262. package/src/tool/pngAWebp/i18n/ru.ts +182 -0
  263. package/src/tool/pngAWebp/i18n/sv.ts +182 -0
  264. package/src/tool/pngAWebp/i18n/tr.ts +182 -0
  265. package/src/tool/pngAWebp/i18n/zh.ts +182 -0
  266. package/src/tool/pngAWebp/index.ts +12 -0
  267. package/src/tool/svgAJpg/i18n/de.ts +178 -0
  268. package/src/tool/svgAJpg/i18n/en.ts +8 -13
  269. package/src/tool/svgAJpg/i18n/es.ts +8 -13
  270. package/src/tool/svgAJpg/i18n/fr.ts +2 -12
  271. package/src/tool/svgAJpg/i18n/id.ts +178 -0
  272. package/src/tool/svgAJpg/i18n/it.ts +178 -0
  273. package/src/tool/svgAJpg/i18n/ja.ts +178 -0
  274. package/src/tool/svgAJpg/i18n/ko.ts +178 -0
  275. package/src/tool/svgAJpg/i18n/nl.ts +178 -0
  276. package/src/tool/svgAJpg/i18n/pl.ts +178 -0
  277. package/src/tool/svgAJpg/i18n/pt.ts +178 -0
  278. package/src/tool/svgAJpg/i18n/ru.ts +178 -0
  279. package/src/tool/svgAJpg/i18n/sv.ts +178 -0
  280. package/src/tool/svgAJpg/i18n/tr.ts +178 -0
  281. package/src/tool/svgAJpg/i18n/zh.ts +178 -0
  282. package/src/tool/svgAJpg/index.ts +12 -0
  283. package/src/tool/svgAPng/i18n/de.ts +178 -0
  284. package/src/tool/svgAPng/i18n/en.ts +8 -13
  285. package/src/tool/svgAPng/i18n/es.ts +31 -36
  286. package/src/tool/svgAPng/i18n/fr.ts +2 -12
  287. package/src/tool/svgAPng/i18n/id.ts +178 -0
  288. package/src/tool/svgAPng/i18n/it.ts +178 -0
  289. package/src/tool/svgAPng/i18n/ja.ts +178 -0
  290. package/src/tool/svgAPng/i18n/ko.ts +178 -0
  291. package/src/tool/svgAPng/i18n/nl.ts +178 -0
  292. package/src/tool/svgAPng/i18n/pl.ts +178 -0
  293. package/src/tool/svgAPng/i18n/pt.ts +178 -0
  294. package/src/tool/svgAPng/i18n/ru.ts +178 -0
  295. package/src/tool/svgAPng/i18n/sv.ts +178 -0
  296. package/src/tool/svgAPng/i18n/tr.ts +178 -0
  297. package/src/tool/svgAPng/i18n/zh.ts +178 -0
  298. package/src/tool/svgAPng/index.ts +12 -0
  299. package/src/tool/webpAIco/i18n/de.ts +183 -0
  300. package/src/tool/webpAIco/i18n/en.ts +8 -13
  301. package/src/tool/webpAIco/i18n/es.ts +9 -14
  302. package/src/tool/webpAIco/i18n/fr.ts +11 -16
  303. package/src/tool/webpAIco/i18n/id.ts +183 -0
  304. package/src/tool/webpAIco/i18n/it.ts +183 -0
  305. package/src/tool/webpAIco/i18n/ja.ts +183 -0
  306. package/src/tool/webpAIco/i18n/ko.ts +183 -0
  307. package/src/tool/webpAIco/i18n/nl.ts +183 -0
  308. package/src/tool/webpAIco/i18n/pl.ts +183 -0
  309. package/src/tool/webpAIco/i18n/pt.ts +183 -0
  310. package/src/tool/webpAIco/i18n/ru.ts +183 -0
  311. package/src/tool/webpAIco/i18n/sv.ts +183 -0
  312. package/src/tool/webpAIco/i18n/tr.ts +183 -0
  313. package/src/tool/webpAIco/i18n/zh.ts +183 -0
  314. package/src/tool/webpAIco/index.ts +12 -0
  315. package/src/tool/webpAJpg/i18n/de.ts +187 -0
  316. package/src/tool/webpAJpg/i18n/en.ts +9 -13
  317. package/src/tool/webpAJpg/i18n/es.ts +37 -42
  318. package/src/tool/webpAJpg/i18n/fr.ts +35 -40
  319. package/src/tool/webpAJpg/i18n/id.ts +182 -0
  320. package/src/tool/webpAJpg/i18n/it.ts +182 -0
  321. package/src/tool/webpAJpg/i18n/ja.ts +182 -0
  322. package/src/tool/webpAJpg/i18n/ko.ts +182 -0
  323. package/src/tool/webpAJpg/i18n/nl.ts +182 -0
  324. package/src/tool/webpAJpg/i18n/pl.ts +182 -0
  325. package/src/tool/webpAJpg/i18n/pt.ts +182 -0
  326. package/src/tool/webpAJpg/i18n/ru.ts +182 -0
  327. package/src/tool/webpAJpg/i18n/sv.ts +182 -0
  328. package/src/tool/webpAJpg/i18n/tr.ts +182 -0
  329. package/src/tool/webpAJpg/i18n/zh.ts +182 -0
  330. package/src/tool/webpAJpg/index.ts +12 -0
  331. package/src/tool/webpAPng/i18n/de.ts +182 -0
  332. package/src/tool/webpAPng/i18n/en.ts +8 -13
  333. package/src/tool/webpAPng/i18n/es.ts +35 -40
  334. package/src/tool/webpAPng/i18n/fr.ts +2 -12
  335. package/src/tool/webpAPng/i18n/id.ts +182 -0
  336. package/src/tool/webpAPng/i18n/it.ts +182 -0
  337. package/src/tool/webpAPng/i18n/ja.ts +182 -0
  338. package/src/tool/webpAPng/i18n/ko.ts +182 -0
  339. package/src/tool/webpAPng/i18n/nl.ts +182 -0
  340. package/src/tool/webpAPng/i18n/pl.ts +182 -0
  341. package/src/tool/webpAPng/i18n/pt.ts +182 -0
  342. package/src/tool/webpAPng/i18n/ru.ts +182 -0
  343. package/src/tool/webpAPng/i18n/sv.ts +182 -0
  344. package/src/tool/webpAPng/i18n/tr.ts +182 -0
  345. package/src/tool/webpAPng/i18n/zh.ts +182 -0
  346. package/src/tool/webpAPng/index.ts +12 -0
@@ -0,0 +1,182 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'conversor-de-png-para-webp';
6
+ const title = 'Converter PNG para WebP Online e Grátis';
7
+ const description =
8
+ 'Converta imagens PNG para WebP no seu navegador. Até 40% menos tamanho de arquivo. Preserva a transparência. Sem upload de arquivos. Gratuito e privado.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Arraste arquivos PNG...',
12
+ convertText: 'Para convertê-los em WebP instantaneamente',
13
+ selectFiles: 'Selecionar arquivos',
14
+ processedFiles: 'Arquivos processados',
15
+ downloadAll: 'Baixar tudo (.zip)',
16
+ pending: 'Pendente',
17
+ bibliographyTitle: 'Referências Bibliográficas',
18
+ faqTitle: 'Perguntas Frequentes',
19
+ };
20
+
21
+ const faq: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Porquê converter PNG para WebP?',
24
+ answer:
25
+ 'O WebP oferece uma compressão até 40% melhor do que o PNG com a mesma qualidade, ao mesmo tempo que suporta a transparência Alpha. É o formato recomendado pelo Google PageSpeed Insights.',
26
+ },
27
+ {
28
+ question: 'A transparência é perdida no processo?',
29
+ answer:
30
+ 'Não. A implementação técnica do WebP suporta o canal alfa. As transparências do PNG original serão preservadas no novo arquivo WebP.',
31
+ },
32
+ {
33
+ question: 'As minhas imagens vão para algum servidor?',
34
+ answer:
35
+ 'Não. O código corre exclusivamente no seu navegador (Client-Side). Nunca vemos, registamos ou guardamos as imagens que converte.',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Insira os seus PNGs',
42
+ text: 'Largue os seus arquivos PNG grandes na área de upload ou utilize o seletor interativo tradicional.',
43
+ },
44
+ {
45
+ name: 'Deteção de canal',
46
+ text: 'O motor de renderização local detetará e exportará a composição de píxeis para o formato WebP otimizado.',
47
+ },
48
+ {
49
+ name: 'Download Direto',
50
+ text: 'Baixe os seus arquivos WebP altamente comprimidos individualmente ou agrupe-os utilizando o conversor de pacotes ZIP.',
51
+ },
52
+ ];
53
+
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
+ const seo: PngAWebpLocaleContent['seo'] = [
70
+ {
71
+ type: 'title',
72
+ text: 'Conversor de PNG para WebP: Transparência e compressão moderna para a web',
73
+ level: 2,
74
+ },
75
+ {
76
+ 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.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNG ou WebP? Quando utilizar cada formato',
82
+ level: 3,
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'O <strong>PNG</strong> continua a ser o formato certo quando a compatibilidade é crítica: ferramentas de design como o Photoshop ou Figma, fluxos de trabalho de impressão, aplicações de desktop antigas ou qualquer contexto onde o suporte WebP não seja garantido. É também o formato ideal para guardar camadas de trabalho em pipelines de edição, uma vez que a sua compressão sem perdas preserva cada píxel. O custo: arquivos que podem pesar 3 a 8 vezes mais do que o seu equivalente WebP.',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: 'O <strong>WebP</strong> é a substituição natural do PNG para todo o conteúdo web moderno. Chrome, Firefox, Safari e Edge suportam-no nativamente. Uma imagem WebP sem perdas é 26% menor do que o PNG equivalente; em modo lossy pode ser até 40% menor com uma qualidade visual praticamente indistinguível. E crucial para o web design: o <strong>WebP preserva a transparência alfa</strong> exatamente como o PNG, sem qualquer compromisso visual.',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: 'Comparação: Conversão Local vs Cloud',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: 'Conversores Cloud',
102
+ description: 'Ferramentas que carregam os seus arquivos para um servidor remoto.',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ 'Latência de rede no upload e download',
107
+ 'Os seus logótipos e imagens armazenados em servidores de terceiros',
108
+ 'Limites de tamanho de arquivo e quotas de conversão diárias',
109
+ 'Anúncios intrusivos e rastreadores de terceiros',
110
+ ],
111
+ },
112
+ {
113
+ title: 'A Nossa Arquitetura Local',
114
+ description: 'Processamento direto no seu hardware utilizando a tecnologia Vanilla JS.',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ 'Velocidade instantânea — latência de rede zero',
119
+ 'Privacidade total — 0 bytes enviados externamente',
120
+ 'Sem limites de MB ou restrições no número de arquivos',
121
+ 'Interface limpa, sem anúncios ou rastreamento',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Como funciona tecnicamente',
129
+ level: 3,
130
+ },
131
+ {
132
+ 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.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'O WebP utiliza dois modos de compressão: modo sem perdas para imagens onde cada píxel deve ser exatamente fiel ao original, e modo lossy para fotos e elementos onde pequenas diferenças são impercetíveis. O modo sem perdas produz arquivos 26% menores do que o PNG; o modo lossy pode atingir reduções de até 40% em comparação com o PNG, mantendo uma excelente qualidade visual.',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: 'Dica: o WebP supera tanto o PNG como o JPG na web',
142
+ html: 'O WebP em modo sem perdas é menor do que o PNG. O WebP em modo lossy é menor do que o JPG. Isto torna o WebP o <strong>único formato que substitui ambos</strong> no contexto web. Converta os seus PNGs transparentes para WebP antes de fazer o upload: o Google PageSpeed Insights deteta isso e pontua positivamente nas auditorias de "Servir imagens em formatos modernos".',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: 'Casos de uso e compatibilidade',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ 'Logótipos e ícones com fundos transparentes para websites e apps.',
154
+ 'Imagens de produtos com fundos recortados em lojas de e-commerce.',
155
+ 'CSS sprites e elementos de UI com transparência alfa.',
156
+ 'Ilustrações rasterizadas e gráficos vetoriais para landing pages.',
157
+ 'Miniaturas de artigos com fundos transparentes em blogs e portais de notícias.',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Conclusão',
163
+ level: 3,
164
+ },
165
+ {
166
+ 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.',
168
+ },
169
+ ];
170
+
171
+
172
+ export const content: PngAWebpLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: generateSchemas({ title, description, inLanguage: 'pt', faq, howTo }),
182
+ };
@@ -0,0 +1,182 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'konverter-png-v-webp';
6
+ const title = 'Конвертировать PNG в WebP Онлайн и Бесплатно';
7
+ const description =
8
+ 'Конвертируйте PNG-изображения в WebP в вашем браузере. Размер файла меньше до 40%. Сохраняет прозрачность. Без загрузки файлов. Бесплатно и приватно.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Перетащите файлы PNG...',
12
+ convertText: 'Чтобы мгновенно конвертировать их в WebP',
13
+ selectFiles: 'Выбрать файлы',
14
+ processedFiles: 'Обработанные файлы',
15
+ downloadAll: 'Скачать всё (.zip)',
16
+ pending: 'В ожидании',
17
+ bibliographyTitle: 'Библиографические ссылки',
18
+ faqTitle: 'Часто задаваемые вопросы',
19
+ };
20
+
21
+ const faq: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Зачем конвертировать PNG в WebP?',
24
+ answer:
25
+ 'WebP предлагает до 40% лучшее сжатие, чем PNG, при том же качестве, а также поддерживает альфа-прозрачность. Это формат, рекомендуемый Google PageSpeed Insights.',
26
+ },
27
+ {
28
+ question: 'Теряется ли прозрачность в процессе?',
29
+ answer:
30
+ 'Нет. Техническая реализация WebP поддерживает альфа-канал. Прозрачность оригинального PNG будет сохранена в новом файле WebP.',
31
+ },
32
+ {
33
+ question: 'Попадают ли мои изображения на какой-либо сервер?',
34
+ answer:
35
+ 'Нет. Код выполняется исключительно в вашем браузере (на стороне клиента). Мы никогда не видим, не записываем и не сохраняем изображения, которые вы конвертируете.',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Вставьте ваши PNG',
42
+ text: 'Перетащите ваши файлы PNG в область загрузки или воспользуйтесь традиционным интерактивным селектором.',
43
+ },
44
+ {
45
+ name: 'Обнаружение каналов',
46
+ text: 'Локальный движок рендеринга обнаружит и экспортирует попиксельную композицию в оптимизированный формат WebP.',
47
+ },
48
+ {
49
+ name: 'Прямое скачивание',
50
+ text: 'Скачивайте сильно сжатые файлы WebP по отдельности или объединяйте их вместе с помощью конвертера в ZIP-архив.',
51
+ },
52
+ ];
53
+
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
+ const seo: PngAWebpLocaleContent['seo'] = [
70
+ {
71
+ type: 'title',
72
+ text: 'Конвертер PNG в WebP: Прозрачность и современное сжатие для веба',
73
+ level: 2,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: '<strong>PNG</strong> десятилетиями был эталонным форматом для веб-изображений с прозрачностью — логотипов, иконок, элементов пользовательского интерфейса, изображений товаров на вырезанных фонах. Его проблема — размер файла: сжатие без потерь, гарантирующее качество, также порождает файлы заметно большого размера. <strong>WebP</strong> от Google решает это противоречие: он поддерживает альфа-канал (прозрачность) <em>и</em> сжимает гораздо лучше, чем PNG, что делает переход с PNG на WebP на вашем сайте идеальной оптимизацией, не требующей жертв.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNG или WebP? Когда использовать каждый формат',
82
+ level: 3,
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '<strong>PNG</strong> остается подходящим форматом, когда критически важна совместимость: инструменты дизайна, такие как Photoshop или Figma, рабочие процессы печати, устаревшие настольные приложения или любой контекст, где поддержка WebP не гарантирована. Это также идеальный формат для сохранения рабочих слоев в процессах редактирования, так как сжатие без потерь сохраняет каждый пиксель. Цена: файлы, которые могут весить в 3–8 раз больше, чем их эквивалент в WebP.',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '<strong>WebP</strong> — естественная замена PNG для всего современного веб-контента. Chrome, Firefox, Safari и Edge поддерживают его нативно. Изображение WebP без потерь на 26% меньше соответствующего изображения PNG; в режиме с потерями оно может быть до 40% меньше при практически неразличимом визуальном качестве. И что крайне важно для веб-дизайна: <strong>WebP сохраняет альфа-прозрачность</strong> точно так же, как PNG, без визуальных компромиссов.',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: 'Сравнение: локальная vs облачная конвертация',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: 'Облачные конвертеры',
102
+ description: 'Инструменты, которые загружают ваши файлы на удаленный сервер.',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ 'Задержка сети при загрузке и скачивании',
107
+ 'Ваши логотипы и изображения хранятся на сторонних серверах',
108
+ 'Ограничения на размер файлов и дневные лимиты конвертации',
109
+ 'Навязчивая реклама и сторонние трекеры',
110
+ ],
111
+ },
112
+ {
113
+ title: 'Наша локальная архитектура',
114
+ description: 'Прямая обработка на вашем оборудовании с использованием технологии Vanilla JS.',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ 'Мгновенная скорость — нулевая задержка сети',
119
+ 'Полная конфиденциальность — 0 байт отправлено наружу',
120
+ 'Без лимитов по размеру или количеству файлов',
121
+ 'Чистый интерфейс, без рекламы и отслеживания',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Как это работает технически',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'PNG загружается локально и декодируется в <strong>HTML5 Canvas</strong> в памяти. API Canvas сохраняет альфа-канал из оригинального PNG — все прозрачные и полупрозрачные пиксели сохраняются в нетронутом виде в буфере пикселей RGBA. Затем холст экспортируется путем вызова <code>toDataURL(\'image/webp\')</code>, что применяет кодек WebP браузера (на основе libwebp от Google) для создания более компактного файла без изменения данных о прозрачности.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'WebP использует два режима сжатия: режим без потерь для изображений, где каждый пиксель должен точно соответствовать оригиналу, и режим с потерями для фотографий и элементов, где небольшие различия незаметны. Режим без потерь позволяет получать файлы на 26% меньше, чем PNG; режим с потерями может достигать сокращения до 40% по сравнению с PNG при сохранении отличного визуального качества.',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: 'Совет: WebP превосходит и PNG, и JPG в вебе',
142
+ html: 'WebP в режиме без потерь меньше, чем PNG. WebP в режиме с потерями меньше, чем JPG. Это делает WebP <strong>единственным форматом, заменяющим оба</strong> в веб-контексте. Конвертируйте ваши прозрачные PNG в WebP перед загрузкой: Google PageSpeed Insights обнаруживает это и начисляет баллы в проверках "Используйте современные форматы изображений".',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: 'Варианты использования и совместимость',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ 'Логотипы и иконки с прозрачным фоном для сайтов и приложений.',
154
+ 'Изображения товаров на вырезанном фоне в интернет-магазинах.',
155
+ 'CSS-спрайты и элементы интерфейса с альфа-прозрачностью.',
156
+ 'Растровые иллюстрации и векторная графика для лендингов.',
157
+ 'Миниатюры статей с прозрачным фоном в блогах и новостных порталах.',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Заключение',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'paragraph',
167
+ html: 'Переход с PNG на WebP — это самая полная доступная оптимизация веб-изображений: вы получаете более легкие файлы, сохраняете прозрачность и улучшаете показатели Core Web Vitals, ничего не меняя в визуальном дизайне. Этот инструмент делает это мгновенно, бесплатно и полностью приватно — ваши изображения обрабатываются в браузере и никогда не отправляются на внешний сервер.',
168
+ },
169
+ ];
170
+
171
+
172
+ export const content: PngAWebpLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: generateSchemas({ title, description, inLanguage: 'ru', faq, howTo }),
182
+ };
@@ -0,0 +1,182 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'konvertera-png-till-webp';
6
+ const title = 'Konvertera PNG till WebP Online och Gratis';
7
+ const description =
8
+ 'Konvertera PNG-bilder till WebP i din webbläsare. Upp till 40 % mindre filstorlek. Bevarar transparens. Inga filuppladdningar. Gratis och privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Dra PNG-filer hit...',
12
+ convertText: 'För att konvertera dem till WebP direkt',
13
+ selectFiles: 'Välj filer',
14
+ processedFiles: 'Bearbetade filer',
15
+ downloadAll: 'Ladda ner alla (.zip)',
16
+ pending: 'Väntande',
17
+ bibliographyTitle: 'Bibliografiska Referenser',
18
+ faqTitle: 'Vanliga Frågor',
19
+ };
20
+
21
+ const faq: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Varför konvertera PNG till WebP?',
24
+ answer:
25
+ 'WebP erbjuder upp till 40 % bättre komprimering än PNG vid samma kvalitet, samtidigt som det stöder Alpha-transparens. Det är det format som rekommenderas av Google PageSpeed Insights.',
26
+ },
27
+ {
28
+ question: 'Går transparens förlorad i processen?',
29
+ answer:
30
+ 'Nej. Den tekniska implementeringen av WebP stöder alfakanalen. Transparensen i den ursprungliga PNG-filen kommer att bevaras i den nya WebP-filen.',
31
+ },
32
+ {
33
+ question: 'Skickas mina bilder till någon server?',
34
+ answer:
35
+ 'Nej. Koden körs exklusivt i din webbläsare (Client-Side). Vi ser, registrerar eller sparar aldrig de bilder du konverterar.',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Lägg till dina PNG-filer',
42
+ text: 'Släpp dina stora PNG-filer i uppladdningsområdet eller använd den traditionella interaktiva väljaren.',
43
+ },
44
+ {
45
+ name: 'Kanalidentifiering',
46
+ text: 'Den lokala renderingsmotorn kommer att identifiera och exportera pixelsammansättningen till det optimerade WebP-formatet.',
47
+ },
48
+ {
49
+ name: 'Direkt nedladdning',
50
+ text: 'Ladda ner dina högkomprimerade WebP-filer individuellt eller bunta ihop dem med hjälp av ZIP-paketkonverteraren.',
51
+ },
52
+ ];
53
+
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
+ const seo: PngAWebpLocaleContent['seo'] = [
70
+ {
71
+ type: 'title',
72
+ text: 'PNG till WebP-konverterare: Transparens och modern komprimering för webben',
73
+ level: 2,
74
+ },
75
+ {
76
+ 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.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNG eller WebP? När du ska använda respektive format',
82
+ level: 3,
83
+ },
84
+ {
85
+ 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.',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '<strong>WebP</strong> är den naturliga ersättaren för PNG för allt modernt webbinnehåll. Chrome, Firefox, Safari och Edge stöder det alla nativt. En förlustfri WebP-bild är 26 % mindre än motsvarande PNG; i förlustläge kan den vara upp till 40 % mindre med praktiskt taget oskiljbar visuell kvalitet. Och avgörande för webbdesign: <strong>WebP bevarar alfa-transparens</strong> exakt som PNG, utan visuella kompromisser.',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: 'Jämförelse: Lokal vs Molnkonvertering',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: 'Molnkonverterare',
102
+ description: 'Verktyg som laddar upp dina filer till en fjärrserver.',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ 'Nätverkslatens vid uppladdning och nedladdning',
107
+ 'Dina logotyper och bilder lagras på tredjepartsservrar',
108
+ 'Begränsningar i filstorlek och dagliga konverteringstak',
109
+ 'Påträngande annonser och spårare från tredje part',
110
+ ],
111
+ },
112
+ {
113
+ title: 'Vår Lokala Arkitektur',
114
+ description: 'Direkt bearbetning på din hårdvara med Vanilla JS-teknik.',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ 'Omedelbar hastighet — noll nätverkslatens',
119
+ 'Komplett integritet — 0 byte skickas externt',
120
+ 'Inga MB-gränser eller begränsningar på antal filer',
121
+ 'Rent gränssnitt, inga annonser eller spårning',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Hur det fungerar tekniskt',
129
+ level: 3,
130
+ },
131
+ {
132
+ 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.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'WebP använder två komprimeringslägen: förlustfritt läge för bilder där varje pixel måste vara exakt trogen originalet, och förlustläge för foton och element där små skillnader är omärkliga. Förlustfritt läge ger filer som är 26 % mindre än PNG; förlustläge kan uppnå minskningar på upp till 40 % jämfört med PNG med bibehållen utmärkt visuell kvalitet.',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: 'Tips: WebP vinner över både PNG och JPG på webben',
142
+ html: 'WebP i förlustfritt läge är mindre än PNG. WebP i förlustläge är mindre än JPG. Detta gör WebP till det <strong>enda formatet som ersätter båda</strong> i webbsammanhang. Konvertera dina transparenta PNG-filer till WebP innan du laddar upp dem: Google PageSpeed Insights upptäcker det och ger höga poäng i revisioner för "Leverera bilder i moderna format".',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: 'Användningsområden och kompatibilitet',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ 'Logotyper och ikoner med transparent bakgrund för webbplatser och appar.',
154
+ 'Produktbilder med utskurna bakgrunder i e-handelsbutiker.',
155
+ 'CSS-sprites och UI-element med alfa-transparens.',
156
+ 'Rastrerade illustrationer och vektorgrafik för målsidor.',
157
+ 'Artikelminiatyrer med transparent bakgrund i bloggar och nyhetsportaler.',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Slutsats',
163
+ level: 3,
164
+ },
165
+ {
166
+ 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.',
168
+ },
169
+ ];
170
+
171
+
172
+ export const content: PngAWebpLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: generateSchemas({ title, description, inLanguage: 'sv', faq, howTo }),
182
+ };