@jjlmoya/utils-converters 1.7.0 → 1.8.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 (345) 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/title_quality.test.ts +55 -0
  10. package/src/tool/avifAJpg/i18n/de.ts +178 -0
  11. package/src/tool/avifAJpg/i18n/en.ts +2 -12
  12. package/src/tool/avifAJpg/i18n/es.ts +2 -12
  13. package/src/tool/avifAJpg/i18n/fr.ts +2 -12
  14. package/src/tool/avifAJpg/i18n/id.ts +178 -0
  15. package/src/tool/avifAJpg/i18n/it.ts +178 -0
  16. package/src/tool/avifAJpg/i18n/ja.ts +178 -0
  17. package/src/tool/avifAJpg/i18n/ko.ts +178 -0
  18. package/src/tool/avifAJpg/i18n/nl.ts +178 -0
  19. package/src/tool/avifAJpg/i18n/pl.ts +178 -0
  20. package/src/tool/avifAJpg/i18n/pt.ts +178 -0
  21. package/src/tool/avifAJpg/i18n/ru.ts +178 -0
  22. package/src/tool/avifAJpg/i18n/sv.ts +178 -0
  23. package/src/tool/avifAJpg/i18n/tr.ts +178 -0
  24. package/src/tool/avifAJpg/i18n/zh.ts +178 -0
  25. package/src/tool/avifAJpg/index.ts +13 -1
  26. package/src/tool/avifAPng/i18n/de.ts +178 -0
  27. package/src/tool/avifAPng/i18n/en.ts +2 -12
  28. package/src/tool/avifAPng/i18n/es.ts +2 -12
  29. package/src/tool/avifAPng/i18n/fr.ts +2 -12
  30. package/src/tool/avifAPng/i18n/id.ts +178 -0
  31. package/src/tool/avifAPng/i18n/it.ts +178 -0
  32. package/src/tool/avifAPng/i18n/ja.ts +178 -0
  33. package/src/tool/avifAPng/i18n/ko.ts +178 -0
  34. package/src/tool/avifAPng/i18n/nl.ts +178 -0
  35. package/src/tool/avifAPng/i18n/pl.ts +178 -0
  36. package/src/tool/avifAPng/i18n/pt.ts +178 -0
  37. package/src/tool/avifAPng/i18n/ru.ts +178 -0
  38. package/src/tool/avifAPng/i18n/sv.ts +178 -0
  39. package/src/tool/avifAPng/i18n/tr.ts +178 -0
  40. package/src/tool/avifAPng/i18n/zh.ts +178 -0
  41. package/src/tool/avifAPng/index.ts +13 -1
  42. package/src/tool/avifAWebp/i18n/de.ts +178 -0
  43. package/src/tool/avifAWebp/i18n/en.ts +2 -12
  44. package/src/tool/avifAWebp/i18n/es.ts +2 -12
  45. package/src/tool/avifAWebp/i18n/fr.ts +2 -12
  46. package/src/tool/avifAWebp/i18n/id.ts +178 -0
  47. package/src/tool/avifAWebp/i18n/it.ts +178 -0
  48. package/src/tool/avifAWebp/i18n/ja.ts +178 -0
  49. package/src/tool/avifAWebp/i18n/ko.ts +178 -0
  50. package/src/tool/avifAWebp/i18n/nl.ts +178 -0
  51. package/src/tool/avifAWebp/i18n/pl.ts +178 -0
  52. package/src/tool/avifAWebp/i18n/pt.ts +178 -0
  53. package/src/tool/avifAWebp/i18n/ru.ts +178 -0
  54. package/src/tool/avifAWebp/i18n/sv.ts +178 -0
  55. package/src/tool/avifAWebp/i18n/tr.ts +178 -0
  56. package/src/tool/avifAWebp/i18n/zh.ts +178 -0
  57. package/src/tool/avifAWebp/index.ts +13 -1
  58. package/src/tool/bmpAJpg/i18n/de.ts +178 -0
  59. package/src/tool/bmpAJpg/i18n/en.ts +2 -12
  60. package/src/tool/bmpAJpg/i18n/es.ts +2 -12
  61. package/src/tool/bmpAJpg/i18n/fr.ts +2 -12
  62. package/src/tool/bmpAJpg/i18n/id.ts +178 -0
  63. package/src/tool/bmpAJpg/i18n/it.ts +178 -0
  64. package/src/tool/bmpAJpg/i18n/ja.ts +178 -0
  65. package/src/tool/bmpAJpg/i18n/ko.ts +178 -0
  66. package/src/tool/bmpAJpg/i18n/nl.ts +178 -0
  67. package/src/tool/bmpAJpg/i18n/pl.ts +178 -0
  68. package/src/tool/bmpAJpg/i18n/pt.ts +178 -0
  69. package/src/tool/bmpAJpg/i18n/ru.ts +178 -0
  70. package/src/tool/bmpAJpg/i18n/sv.ts +178 -0
  71. package/src/tool/bmpAJpg/i18n/tr.ts +178 -0
  72. package/src/tool/bmpAJpg/i18n/zh.ts +178 -0
  73. package/src/tool/bmpAJpg/index.ts +13 -1
  74. package/src/tool/bmpAPng/i18n/de.ts +177 -0
  75. package/src/tool/bmpAPng/i18n/en.ts +2 -12
  76. package/src/tool/bmpAPng/i18n/es.ts +2 -12
  77. package/src/tool/bmpAPng/i18n/fr.ts +2 -12
  78. package/src/tool/bmpAPng/i18n/id.ts +177 -0
  79. package/src/tool/bmpAPng/i18n/it.ts +177 -0
  80. package/src/tool/bmpAPng/i18n/ja.ts +177 -0
  81. package/src/tool/bmpAPng/i18n/ko.ts +177 -0
  82. package/src/tool/bmpAPng/i18n/nl.ts +177 -0
  83. package/src/tool/bmpAPng/i18n/pl.ts +177 -0
  84. package/src/tool/bmpAPng/i18n/pt.ts +177 -0
  85. package/src/tool/bmpAPng/i18n/ru.ts +177 -0
  86. package/src/tool/bmpAPng/i18n/sv.ts +177 -0
  87. package/src/tool/bmpAPng/i18n/tr.ts +177 -0
  88. package/src/tool/bmpAPng/i18n/zh.ts +177 -0
  89. package/src/tool/bmpAPng/index.ts +13 -1
  90. package/src/tool/bmpAWebp/i18n/de.ts +178 -0
  91. package/src/tool/bmpAWebp/i18n/en.ts +2 -12
  92. package/src/tool/bmpAWebp/i18n/es.ts +2 -12
  93. package/src/tool/bmpAWebp/i18n/fr.ts +2 -12
  94. package/src/tool/bmpAWebp/i18n/id.ts +178 -0
  95. package/src/tool/bmpAWebp/i18n/it.ts +178 -0
  96. package/src/tool/bmpAWebp/i18n/ja.ts +178 -0
  97. package/src/tool/bmpAWebp/i18n/ko.ts +178 -0
  98. package/src/tool/bmpAWebp/i18n/nl.ts +178 -0
  99. package/src/tool/bmpAWebp/i18n/pl.ts +178 -0
  100. package/src/tool/bmpAWebp/i18n/pt.ts +178 -0
  101. package/src/tool/bmpAWebp/i18n/ru.ts +178 -0
  102. package/src/tool/bmpAWebp/i18n/sv.ts +178 -0
  103. package/src/tool/bmpAWebp/i18n/tr.ts +178 -0
  104. package/src/tool/bmpAWebp/i18n/zh.ts +178 -0
  105. package/src/tool/bmpAWebp/index.ts +13 -1
  106. package/src/tool/gifAJpg/i18n/de.ts +178 -0
  107. package/src/tool/gifAJpg/i18n/en.ts +2 -12
  108. package/src/tool/gifAJpg/i18n/es.ts +2 -12
  109. package/src/tool/gifAJpg/i18n/fr.ts +2 -12
  110. package/src/tool/gifAJpg/i18n/id.ts +178 -0
  111. package/src/tool/gifAJpg/i18n/it.ts +178 -0
  112. package/src/tool/gifAJpg/i18n/ja.ts +178 -0
  113. package/src/tool/gifAJpg/i18n/ko.ts +178 -0
  114. package/src/tool/gifAJpg/i18n/nl.ts +178 -0
  115. package/src/tool/gifAJpg/i18n/pl.ts +178 -0
  116. package/src/tool/gifAJpg/i18n/pt.ts +178 -0
  117. package/src/tool/gifAJpg/i18n/ru.ts +178 -0
  118. package/src/tool/gifAJpg/i18n/sv.ts +178 -0
  119. package/src/tool/gifAJpg/i18n/tr.ts +178 -0
  120. package/src/tool/gifAJpg/i18n/zh.ts +178 -0
  121. package/src/tool/gifAJpg/index.ts +13 -1
  122. package/src/tool/gifAPng/i18n/de.ts +178 -0
  123. package/src/tool/gifAPng/i18n/en.ts +2 -12
  124. package/src/tool/gifAPng/i18n/es.ts +2 -12
  125. package/src/tool/gifAPng/i18n/fr.ts +2 -12
  126. package/src/tool/gifAPng/i18n/id.ts +178 -0
  127. package/src/tool/gifAPng/i18n/it.ts +178 -0
  128. package/src/tool/gifAPng/i18n/ja.ts +178 -0
  129. package/src/tool/gifAPng/i18n/ko.ts +178 -0
  130. package/src/tool/gifAPng/i18n/nl.ts +178 -0
  131. package/src/tool/gifAPng/i18n/pl.ts +178 -0
  132. package/src/tool/gifAPng/i18n/pt.ts +178 -0
  133. package/src/tool/gifAPng/i18n/ru.ts +178 -0
  134. package/src/tool/gifAPng/i18n/sv.ts +178 -0
  135. package/src/tool/gifAPng/i18n/tr.ts +178 -0
  136. package/src/tool/gifAPng/i18n/zh.ts +178 -0
  137. package/src/tool/gifAPng/index.ts +12 -0
  138. package/src/tool/gifAWebp/i18n/de.ts +178 -0
  139. package/src/tool/gifAWebp/i18n/en.ts +2 -12
  140. package/src/tool/gifAWebp/i18n/es.ts +2 -12
  141. package/src/tool/gifAWebp/i18n/fr.ts +2 -12
  142. package/src/tool/gifAWebp/i18n/id.ts +178 -0
  143. package/src/tool/gifAWebp/i18n/it.ts +178 -0
  144. package/src/tool/gifAWebp/i18n/ja.ts +178 -0
  145. package/src/tool/gifAWebp/i18n/ko.ts +178 -0
  146. package/src/tool/gifAWebp/i18n/nl.ts +178 -0
  147. package/src/tool/gifAWebp/i18n/pl.ts +178 -0
  148. package/src/tool/gifAWebp/i18n/pt.ts +178 -0
  149. package/src/tool/gifAWebp/i18n/ru.ts +178 -0
  150. package/src/tool/gifAWebp/i18n/sv.ts +178 -0
  151. package/src/tool/gifAWebp/i18n/tr.ts +178 -0
  152. package/src/tool/gifAWebp/i18n/zh.ts +178 -0
  153. package/src/tool/gifAWebp/index.ts +12 -0
  154. package/src/tool/imagenBase64/i18n/de.ts +168 -0
  155. package/src/tool/imagenBase64/i18n/en.ts +2 -12
  156. package/src/tool/imagenBase64/i18n/es.ts +2 -12
  157. package/src/tool/imagenBase64/i18n/fr.ts +2 -12
  158. package/src/tool/imagenBase64/i18n/id.ts +168 -0
  159. package/src/tool/imagenBase64/i18n/it.ts +168 -0
  160. package/src/tool/imagenBase64/i18n/ja.ts +168 -0
  161. package/src/tool/imagenBase64/i18n/ko.ts +168 -0
  162. package/src/tool/imagenBase64/i18n/nl.ts +168 -0
  163. package/src/tool/imagenBase64/i18n/pl.ts +168 -0
  164. package/src/tool/imagenBase64/i18n/pt.ts +173 -0
  165. package/src/tool/imagenBase64/i18n/ru.ts +168 -0
  166. package/src/tool/imagenBase64/i18n/sv.ts +168 -0
  167. package/src/tool/imagenBase64/i18n/tr.ts +168 -0
  168. package/src/tool/imagenBase64/i18n/zh.ts +168 -0
  169. package/src/tool/imagenBase64/index.ts +12 -0
  170. package/src/tool/jpgAIco/i18n/de.ts +183 -0
  171. package/src/tool/jpgAIco/i18n/en.ts +8 -13
  172. package/src/tool/jpgAIco/i18n/es.ts +13 -18
  173. package/src/tool/jpgAIco/i18n/fr.ts +9 -14
  174. package/src/tool/jpgAIco/i18n/id.ts +183 -0
  175. package/src/tool/jpgAIco/i18n/it.ts +183 -0
  176. package/src/tool/jpgAIco/i18n/ja.ts +183 -0
  177. package/src/tool/jpgAIco/i18n/ko.ts +183 -0
  178. package/src/tool/jpgAIco/i18n/nl.ts +183 -0
  179. package/src/tool/jpgAIco/i18n/pl.ts +183 -0
  180. package/src/tool/jpgAIco/i18n/pt.ts +183 -0
  181. package/src/tool/jpgAIco/i18n/ru.ts +183 -0
  182. package/src/tool/jpgAIco/i18n/sv.ts +183 -0
  183. package/src/tool/jpgAIco/i18n/tr.ts +183 -0
  184. package/src/tool/jpgAIco/i18n/zh.ts +183 -0
  185. package/src/tool/jpgAIco/index.ts +12 -0
  186. package/src/tool/jpgAPng/i18n/de.ts +178 -0
  187. package/src/tool/jpgAPng/i18n/en.ts +2 -12
  188. package/src/tool/jpgAPng/i18n/es.ts +2 -12
  189. package/src/tool/jpgAPng/i18n/fr.ts +2 -12
  190. package/src/tool/jpgAPng/i18n/id.ts +178 -0
  191. package/src/tool/jpgAPng/i18n/it.ts +178 -0
  192. package/src/tool/jpgAPng/i18n/ja.ts +178 -0
  193. package/src/tool/jpgAPng/i18n/ko.ts +178 -0
  194. package/src/tool/jpgAPng/i18n/nl.ts +178 -0
  195. package/src/tool/jpgAPng/i18n/pl.ts +178 -0
  196. package/src/tool/jpgAPng/i18n/pt.ts +178 -0
  197. package/src/tool/jpgAPng/i18n/ru.ts +178 -0
  198. package/src/tool/jpgAPng/i18n/sv.ts +178 -0
  199. package/src/tool/jpgAPng/i18n/tr.ts +178 -0
  200. package/src/tool/jpgAPng/i18n/zh.ts +178 -0
  201. package/src/tool/jpgAPng/index.ts +13 -1
  202. package/src/tool/jpgAWebp/i18n/de.ts +178 -0
  203. package/src/tool/jpgAWebp/i18n/en.ts +2 -12
  204. package/src/tool/jpgAWebp/i18n/es.ts +2 -12
  205. package/src/tool/jpgAWebp/i18n/fr.ts +2 -12
  206. package/src/tool/jpgAWebp/i18n/id.ts +178 -0
  207. package/src/tool/jpgAWebp/i18n/it.ts +178 -0
  208. package/src/tool/jpgAWebp/i18n/ja.ts +178 -0
  209. package/src/tool/jpgAWebp/i18n/ko.ts +178 -0
  210. package/src/tool/jpgAWebp/i18n/nl.ts +178 -0
  211. package/src/tool/jpgAWebp/i18n/pl.ts +178 -0
  212. package/src/tool/jpgAWebp/i18n/pt.ts +178 -0
  213. package/src/tool/jpgAWebp/i18n/ru.ts +178 -0
  214. package/src/tool/jpgAWebp/i18n/sv.ts +178 -0
  215. package/src/tool/jpgAWebp/i18n/tr.ts +178 -0
  216. package/src/tool/jpgAWebp/i18n/zh.ts +178 -0
  217. package/src/tool/jpgAWebp/index.ts +12 -0
  218. package/src/tool/pngAIco/i18n/de.ts +183 -0
  219. package/src/tool/pngAIco/i18n/en.ts +8 -13
  220. package/src/tool/pngAIco/i18n/es.ts +19 -24
  221. package/src/tool/pngAIco/i18n/fr.ts +20 -25
  222. package/src/tool/pngAIco/i18n/id.ts +183 -0
  223. package/src/tool/pngAIco/i18n/it.ts +183 -0
  224. package/src/tool/pngAIco/i18n/ja.ts +183 -0
  225. package/src/tool/pngAIco/i18n/ko.ts +183 -0
  226. package/src/tool/pngAIco/i18n/nl.ts +183 -0
  227. package/src/tool/pngAIco/i18n/pl.ts +183 -0
  228. package/src/tool/pngAIco/i18n/pt.ts +183 -0
  229. package/src/tool/pngAIco/i18n/ru.ts +183 -0
  230. package/src/tool/pngAIco/i18n/sv.ts +183 -0
  231. package/src/tool/pngAIco/i18n/tr.ts +183 -0
  232. package/src/tool/pngAIco/i18n/zh.ts +183 -0
  233. package/src/tool/pngAIco/index.ts +12 -0
  234. package/src/tool/pngAJpg/i18n/de.ts +191 -0
  235. package/src/tool/pngAJpg/i18n/en.ts +2 -12
  236. package/src/tool/pngAJpg/i18n/es.ts +2 -12
  237. package/src/tool/pngAJpg/i18n/fr.ts +2 -12
  238. package/src/tool/pngAJpg/i18n/id.ts +191 -0
  239. package/src/tool/pngAJpg/i18n/it.ts +191 -0
  240. package/src/tool/pngAJpg/i18n/ja.ts +191 -0
  241. package/src/tool/pngAJpg/i18n/ko.ts +191 -0
  242. package/src/tool/pngAJpg/i18n/nl.ts +191 -0
  243. package/src/tool/pngAJpg/i18n/pl.ts +191 -0
  244. package/src/tool/pngAJpg/i18n/pt.ts +191 -0
  245. package/src/tool/pngAJpg/i18n/ru.ts +191 -0
  246. package/src/tool/pngAJpg/i18n/sv.ts +191 -0
  247. package/src/tool/pngAJpg/i18n/tr.ts +191 -0
  248. package/src/tool/pngAJpg/i18n/zh.ts +191 -0
  249. package/src/tool/pngAJpg/index.ts +13 -1
  250. package/src/tool/pngAWebp/i18n/de.ts +182 -0
  251. package/src/tool/pngAWebp/i18n/en.ts +2 -12
  252. package/src/tool/pngAWebp/i18n/es.ts +2 -12
  253. package/src/tool/pngAWebp/i18n/fr.ts +2 -12
  254. package/src/tool/pngAWebp/i18n/id.ts +182 -0
  255. package/src/tool/pngAWebp/i18n/it.ts +182 -0
  256. package/src/tool/pngAWebp/i18n/ja.ts +182 -0
  257. package/src/tool/pngAWebp/i18n/ko.ts +182 -0
  258. package/src/tool/pngAWebp/i18n/nl.ts +182 -0
  259. package/src/tool/pngAWebp/i18n/pl.ts +182 -0
  260. package/src/tool/pngAWebp/i18n/pt.ts +182 -0
  261. package/src/tool/pngAWebp/i18n/ru.ts +182 -0
  262. package/src/tool/pngAWebp/i18n/sv.ts +182 -0
  263. package/src/tool/pngAWebp/i18n/tr.ts +182 -0
  264. package/src/tool/pngAWebp/i18n/zh.ts +182 -0
  265. package/src/tool/pngAWebp/index.ts +12 -0
  266. package/src/tool/svgAJpg/i18n/de.ts +178 -0
  267. package/src/tool/svgAJpg/i18n/en.ts +8 -13
  268. package/src/tool/svgAJpg/i18n/es.ts +8 -13
  269. package/src/tool/svgAJpg/i18n/fr.ts +2 -12
  270. package/src/tool/svgAJpg/i18n/id.ts +178 -0
  271. package/src/tool/svgAJpg/i18n/it.ts +178 -0
  272. package/src/tool/svgAJpg/i18n/ja.ts +178 -0
  273. package/src/tool/svgAJpg/i18n/ko.ts +178 -0
  274. package/src/tool/svgAJpg/i18n/nl.ts +178 -0
  275. package/src/tool/svgAJpg/i18n/pl.ts +178 -0
  276. package/src/tool/svgAJpg/i18n/pt.ts +178 -0
  277. package/src/tool/svgAJpg/i18n/ru.ts +178 -0
  278. package/src/tool/svgAJpg/i18n/sv.ts +178 -0
  279. package/src/tool/svgAJpg/i18n/tr.ts +178 -0
  280. package/src/tool/svgAJpg/i18n/zh.ts +178 -0
  281. package/src/tool/svgAJpg/index.ts +12 -0
  282. package/src/tool/svgAPng/i18n/de.ts +178 -0
  283. package/src/tool/svgAPng/i18n/en.ts +8 -13
  284. package/src/tool/svgAPng/i18n/es.ts +31 -36
  285. package/src/tool/svgAPng/i18n/fr.ts +2 -12
  286. package/src/tool/svgAPng/i18n/id.ts +178 -0
  287. package/src/tool/svgAPng/i18n/it.ts +178 -0
  288. package/src/tool/svgAPng/i18n/ja.ts +178 -0
  289. package/src/tool/svgAPng/i18n/ko.ts +178 -0
  290. package/src/tool/svgAPng/i18n/nl.ts +178 -0
  291. package/src/tool/svgAPng/i18n/pl.ts +178 -0
  292. package/src/tool/svgAPng/i18n/pt.ts +178 -0
  293. package/src/tool/svgAPng/i18n/ru.ts +178 -0
  294. package/src/tool/svgAPng/i18n/sv.ts +178 -0
  295. package/src/tool/svgAPng/i18n/tr.ts +178 -0
  296. package/src/tool/svgAPng/i18n/zh.ts +178 -0
  297. package/src/tool/svgAPng/index.ts +12 -0
  298. package/src/tool/webpAIco/i18n/de.ts +183 -0
  299. package/src/tool/webpAIco/i18n/en.ts +8 -13
  300. package/src/tool/webpAIco/i18n/es.ts +9 -14
  301. package/src/tool/webpAIco/i18n/fr.ts +11 -16
  302. package/src/tool/webpAIco/i18n/id.ts +183 -0
  303. package/src/tool/webpAIco/i18n/it.ts +183 -0
  304. package/src/tool/webpAIco/i18n/ja.ts +183 -0
  305. package/src/tool/webpAIco/i18n/ko.ts +183 -0
  306. package/src/tool/webpAIco/i18n/nl.ts +183 -0
  307. package/src/tool/webpAIco/i18n/pl.ts +183 -0
  308. package/src/tool/webpAIco/i18n/pt.ts +183 -0
  309. package/src/tool/webpAIco/i18n/ru.ts +183 -0
  310. package/src/tool/webpAIco/i18n/sv.ts +183 -0
  311. package/src/tool/webpAIco/i18n/tr.ts +183 -0
  312. package/src/tool/webpAIco/i18n/zh.ts +183 -0
  313. package/src/tool/webpAIco/index.ts +12 -0
  314. package/src/tool/webpAJpg/i18n/de.ts +187 -0
  315. package/src/tool/webpAJpg/i18n/en.ts +9 -13
  316. package/src/tool/webpAJpg/i18n/es.ts +37 -42
  317. package/src/tool/webpAJpg/i18n/fr.ts +35 -40
  318. package/src/tool/webpAJpg/i18n/id.ts +182 -0
  319. package/src/tool/webpAJpg/i18n/it.ts +182 -0
  320. package/src/tool/webpAJpg/i18n/ja.ts +182 -0
  321. package/src/tool/webpAJpg/i18n/ko.ts +182 -0
  322. package/src/tool/webpAJpg/i18n/nl.ts +182 -0
  323. package/src/tool/webpAJpg/i18n/pl.ts +182 -0
  324. package/src/tool/webpAJpg/i18n/pt.ts +182 -0
  325. package/src/tool/webpAJpg/i18n/ru.ts +182 -0
  326. package/src/tool/webpAJpg/i18n/sv.ts +182 -0
  327. package/src/tool/webpAJpg/i18n/tr.ts +182 -0
  328. package/src/tool/webpAJpg/i18n/zh.ts +182 -0
  329. package/src/tool/webpAJpg/index.ts +12 -0
  330. package/src/tool/webpAPng/i18n/de.ts +182 -0
  331. package/src/tool/webpAPng/i18n/en.ts +8 -13
  332. package/src/tool/webpAPng/i18n/es.ts +35 -40
  333. package/src/tool/webpAPng/i18n/fr.ts +2 -12
  334. package/src/tool/webpAPng/i18n/id.ts +182 -0
  335. package/src/tool/webpAPng/i18n/it.ts +182 -0
  336. package/src/tool/webpAPng/i18n/ja.ts +182 -0
  337. package/src/tool/webpAPng/i18n/ko.ts +182 -0
  338. package/src/tool/webpAPng/i18n/nl.ts +182 -0
  339. package/src/tool/webpAPng/i18n/pl.ts +182 -0
  340. package/src/tool/webpAPng/i18n/pt.ts +182 -0
  341. package/src/tool/webpAPng/i18n/ru.ts +182 -0
  342. package/src/tool/webpAPng/i18n/sv.ts +182 -0
  343. package/src/tool/webpAPng/i18n/tr.ts +182 -0
  344. package/src/tool/webpAPng/i18n/zh.ts +182 -0
  345. package/src/tool/webpAPng/index.ts +12 -0
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { GifAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'conversor-de-gif-para-webp';
6
+ const title = 'Converter GIF para WebP estático Online';
7
+ const description =
8
+ 'Converta GIFs animados para WebP estático. Preserva a transparência. Sem servidor. Processado localmente no seu navegador. Gratuito.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Arraste os arquivos GIF...',
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: GifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Por que congelar um arquivo animado para o formato moderno WebP estático?',
24
+ answer:
25
+ 'WebP é o padrão de compressão do Google; é notavelmente leve e mantém a transparência de forma limpa. Mudar de GIF para WebP elimina a animação pesada e proporciona um ganho abismal na velocidade da web.',
26
+ },
27
+ {
28
+ question: 'O avatar original permanecerá transparente?',
29
+ answer:
30
+ 'Sim, ao contrário do JPEG, o contentor WebP respeita o complexo canal Alpha. Todas as suas silhuetas permanecerão perfeitas como eram nativamente.',
31
+ },
32
+ {
33
+ question: 'Para onde os arquivos serão enviados?',
34
+ answer:
35
+ 'Não há upload. O processamento é realizado inteiramente pelo Javascript do navegador no seu PC, com zero envio remoto.',
36
+ },
37
+ ];
38
+
39
+ const howTo: GifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Lance uma avalanche animada',
42
+ text: 'Mova e solte dezenas de memes na zona delimitada sem conexão remota.',
43
+ },
44
+ {
45
+ name: 'Testemunhe a grande mudança invisível',
46
+ text: 'Observe um indicador progressivo mudar a cada milissegundo enquanto o decodificador canvas local gera o resultado.',
47
+ },
48
+ {
49
+ name: 'Salve seu arsenal de resultados limpos',
50
+ text: 'Pegue os arquivos extraídos individualmente ou pressione Baixar Zip para empacotar tudo.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: GifAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Especificação GIF89a',
57
+ url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
58
+ },
59
+ {
60
+ name: 'Documentação do Google WebP',
61
+ url: 'https://developers.google.com/speed/webp',
62
+ },
63
+ ];
64
+
65
+ const seo: GifAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Conversor de GIF para WebP: O substituto moderno para animações pesadas',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'GIFs animados são os dinossauros do conteúdo web moderno: consomem largura de banda desproporcional, degradam o PageSpeed de qualquer página e são responsáveis por uma porcentagem significativa do peso total em milhares de sites. Um GIF animado típico de 5 MB pode tornar-se uma animação WebP com menos de 1 MB com a mesma qualidade visual. WebP é o sucessor moderno que a Google projetou especificamente para substituir o GIF na web.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'GIF vs WebP: o abismo entre o passado e o presente da web',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'O GIF é um formato de 1987 não projetado originalmente para animações — essa funcionalidade surgiu como um "hack" posterior. A sua paleta de 256 cores, a compressão ineficiente e a incapacidade de lidar com áudio tornam-no um formato obsoleto. O WebP, desenvolvido pela Google em 2010, oferece compressão superior, tanto com perdas como sem perdas, suporte nativo para animações e canal alpha completo.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Para um desenvolvedor web, substituir GIFs por WebP nas páginas pode significar uma melhoria na pontuação do Google PageSpeed de 10 a 30 pontos. Menos peso de página significa melhores Core Web Vitals, melhor posicionamento SEO e menores custos de largura de banda nos servidores. Não é apenas uma melhoria estética — é uma decisão de arquitetura técnica.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Comparação de Arquitetura: Local vs Nuvem',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Conversores Cloud',
98
+ description: 'Plataformas que processam os seus GIFs em servidores remotos.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'As suas animações viajam pela internet para servidores de terceiros',
103
+ 'Tempo de espera devido à latência de rede no upload e download',
104
+ 'Limites de tamanho (GIFs grandes são frequentemente rejeitados)',
105
+ 'Risco de retenção e análise de arquivos',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Nossa Arquitetura Local',
110
+ description: 'Processamento direto no seu hardware usando tecnologia Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'O GIF nunca sai do seu dispositivo',
115
+ 'Conversão instantânea sem espera de rede',
116
+ 'Sem limites de tamanho: processe GIFs de qualquer peso',
117
+ 'Privacidade total: 0 bytes enviados externamente',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Como funciona a conversão local de GIF para WebP',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'A conversão local utiliza a API HTML5 Canvas. O GIF é carregado como um elemento Image nativo do navegador. Ao desenhá-lo num canvas, o motor gráfico captura o primeiro quadro da animação com toda a sua informação de transparência. O método <code>toDataURL(\'image/webp\')</code> exporta o quadro como WebP diretamente na RAM.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'O WebP suporta canal alpha completo, pelo que as transparências do GIF são preservadas no WebP resultante sem necessidade de adicionar um fundo. Os algoritmos de compressão do WebP são significativamente mais eficientes do que os do GIF ou PNG, o que explica a redução drástica do tamanho do arquivo final.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Melhoria garantida no PageSpeed',
138
+ html: 'Um GIF animado de 5 MB pode tornar-se um WebP com menos de 1 MB. Se tiver GIFs nas páginas do seu site, substituí-los por WebP pode melhorar imediatamente o seu Largest Contentful Paint (LCP) e Total Blocking Time (TBT), impactando diretamente o posicionamento SEO.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Casos de uso e compatibilidade do WebP resultante',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Substituir GIFs em páginas web para melhorar as pontuações de PageSpeed.',
150
+ 'Avatares e stickers otimizados para Discord, Slack e plataformas modernas.',
151
+ 'Banners e visuais para campanhas de marketing digital.',
152
+ 'Animações em aplicações web progressivas (PWA).',
153
+ 'Compatível com Chrome, Edge, Firefox, Safari 14+ e todos os navegadores modernos.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Conclusão: migre os seus GIFs para o século XXI',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Cada GIF no seu site é uma oportunidade de otimização perdida. A nossa ferramenta converte GIFs para WebP instantaneamente, de forma privada e sem limites, diretamente no seu navegador. O resultado: arquivos até 5 vezes menores, transparência perfeita e compatibilidade com todos os navegadores modernos.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: GifAWebpLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'pt', faq, howTo }),
178
+ };
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { GifAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'konverter-gif-v-webp';
6
+ const title = 'Конвертировать GIF в статическое WebP онлайн';
7
+ const description =
8
+ 'Конвертируйте анимированные GIF в статическое WebP. Сохраняет прозрачность. Без сервера. Обработка локально в вашем браузере. Бесплатно.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Перетащите GIF-файлы...',
12
+ convertText: 'Чтобы мгновенно конвертировать их в WebP',
13
+ selectFiles: 'Выбрать файлы',
14
+ processedFiles: 'Обработанные файлы',
15
+ downloadAll: 'Скачать всё (.zip)',
16
+ pending: 'В ожидании',
17
+ bibliographyTitle: 'Библиографические ссылки',
18
+ faqTitle: 'Часто задаваемые вопросы',
19
+ };
20
+
21
+ const faq: GifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Зачем преобразовывать анимированный файл в современный статический формат WebP?',
24
+ answer:
25
+ 'WebP — это стандарт сжатия Google; он невероятно легкий и чисто сохраняет прозрачность. Переход от GIF к WebP устраняет тяжелую анимацию и дает колоссальный выигрыш в скорости веб-загрузки.',
26
+ },
27
+ {
28
+ question: 'Останется ли оригинальный аватар прозрачным?',
29
+ answer:
30
+ 'Да, в отличие от JPEG, контейнер WebP учитывает сложный альфа-канал. Все его силуэты останутся такими же идеальными, какими они были изначально.',
31
+ },
32
+ {
33
+ question: 'Куда будут загружаться файлы?',
34
+ answer:
35
+ 'Загрузки на сервер нет. Обработка выполняется полностью JavaScript-движком браузера на вашем ПК, с нулевой дистанционной передачей.',
36
+ },
37
+ ];
38
+
39
+ const howTo: GifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Запустите анимированную лавину',
42
+ text: 'Перемещайте и сбрасывайте десятки мемов в выделенную зону без удаленного подключения.',
43
+ },
44
+ {
45
+ name: 'Станьте свидетелем великой невидимой перемены',
46
+ text: 'Наблюдайте, как прогресс-индикатор меняется каждую миллисекунду, пока локальный декодер Canvas генерирует результат.',
47
+ },
48
+ {
49
+ name: 'Сохраните ваш чистый арсенал результатов',
50
+ text: 'Забирайте извлеченные файлы по отдельности или нажмите «Скачать ZIP», чтобы упаковать всё сразу.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: GifAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Спецификация GIF89a',
57
+ url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
58
+ },
59
+ {
60
+ name: 'Документация Google WebP',
61
+ url: 'https://developers.google.com/speed/webp',
62
+ },
63
+ ];
64
+
65
+ const seo: GifAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Конвертер GIF в WebP: Современная замена тяжелым анимациям',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Анимированные GIF — это динозавры современного веб-контента: они потребляют непропорционально большую полосу пропускания, ухудшают PageSpeed любой страницы и отвечают за значительный процент общего веса на тысячах сайтов. Типичный анимированный GIF размером 5 МБ может превратиться в WebP-анимацию весом менее 1 МБ при том же визуальном качестве. WebP — это современный преемник, разработанный Google специально для замены GIF в Интернете.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'GIF против WebP: Пропасть между прошлым и настоящим веба',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'GIF — это формат 1987 года, изначально не предназначенный для анимаций — эта функция появилась позже как «хакерское» решение. Его 256-цветная палитра, неэффективное сжатие и невозможность работы со звуком делают его устаревшим форматом. WebP, разработанный Google в 2010 году, предлагает превосходное сжатие как с потерями, так и без потерь, нативную поддержку анимации и полный альфа-канал.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Для веб-разработчика замена GIF на WebP на страницах может означать улучшение показателей Google PageSpeed на 10–30 пунктов. Меньший вес страницы означает лучшие показатели Core Web Vitals, более высокие позиции в SEO и более низкие затраты на полосу пропускания серверов. Это не просто эстетическое улучшение — это техническое архитектурное решение.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Сравнение архитектур: Локальная vs Облачная',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Облачные конвертеры',
98
+ description: 'Платформы, которые обрабатывают ваши GIF на удаленных серверах.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Ваши анимации передаются через интернет на сторонние серверы',
103
+ 'Время ожидания из-за сетевой задержки при загрузке и скачивании',
104
+ 'Ограничения по размеру (большие GIF часто отклоняются)',
105
+ 'Риск удержания и анализа файлов сторонними лицами',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Наша локальная архитектура',
110
+ description: 'Прямая обработка на вашем оборудовании с использованием технологии Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'GIF никогда не покидает ваше устройство',
115
+ 'Мгновенная конвертация без ожидания сети',
116
+ 'Нет ограничений по размеру: обрабатывайте GIF любого веса',
117
+ 'Полная конфиденциальность: 0 байт отправляется вовне',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Как работает локальная конвертация GIF в WebP',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Локальная конвертация использует HTML5 Canvas API. GIF загружается как нативный элемент Image браузера. Рисуя его на холсте, графический движок захватывает первый кадр анимации со всей информацией о прозрачности. Метод <code>toDataURL(\'image/webp\')</code> экспортирует кадр как WebP напрямую в оперативную память.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'WebP поддерживает полный альфа-канал, поэтому прозрачность GIF сохраняется в результирующем WebP без необходимости добавления фона. Алгоритмы сжатия WebP значительно эффективнее, чем у GIF или PNG, что объясняет радикальное снижение размера итогового файла.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Гарантированное улучшение PageSpeed',
138
+ html: 'Анимированный GIF весом 5 МБ может превратиться в WebP весом менее 1 МБ. Если на страницах вашего сайта есть GIF, их замена на WebP может немедленно улучшить показатели Largest Contentful Paint (LCP) и Total Blocking Time (TBT), что напрямую влияет на SEO-рейтинг.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Варианты использования и совместимость результирующего WebP',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Замена GIF на веб-страницах для повышения показателей PageSpeed.',
150
+ 'Оптимизированные аватары и стикеры для Discord, Slack и современных платформ.',
151
+ 'Баннеры и визуальные эффекты для цифровых маркетинговых кампаний.',
152
+ 'Анимации в прогрессивных веб-приложениях (PWA).',
153
+ 'Совместимость с Chrome, Edge, Firefox, Safari 14+ и всеми современными браузерами.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Заключение: перенесите ваши GIF в 21 век',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Каждый GIF на вашем сайте — это упущенная возможность оптимизации. Наш инструмент конвертирует GIF в WebP мгновенно, приватно и без ограничений прямо в вашем браузере. Результат: файлы до 5 раз меньше, идеальная прозрачность и совместимость со всеми современными браузерами.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: GifAWebpLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'ru', faq, howTo }),
178
+ };
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { GifAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'konvertera-gif-till-webp';
6
+ const title = 'Konvertera GIF till statisk WebP Online';
7
+ const description =
8
+ 'Konvertera animerade GIF-filer till statisk WebP. Bevarar transparens. Ingen server. Bearbetas lokalt i din webbläsare. Gratis.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Dra GIF-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: GifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Varför frysa en animerad fil till det moderna statiska WebP-formatet?',
24
+ answer:
25
+ 'WebP är Googles komprimeringsstandard. Det är extremt lättviktigt och behåller transparens på ett rent sätt. Genom att gå från GIF till WebP elimineras den tunga animationen och man uppnår en enorm vinst i webbhastighet.',
26
+ },
27
+ {
28
+ question: 'Kommer den ursprungliga avataren att förbli transparent?',
29
+ answer:
30
+ 'Ja, till skillnad från JPEG respekterar WebP-containern den komplexa alfakanalen. Alla dess silhuetter förblir perfekta precis som de var naturligt.',
31
+ },
32
+ {
33
+ question: 'Vart laddas filerna upp?',
34
+ answer:
35
+ 'Ingen uppladdning sker. Bearbetningen utförs helt av webbläsarens JavaScript på din dator, med noll extern sändning.',
36
+ },
37
+ ];
38
+
39
+ const howTo: GifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Starta en animerad lavin',
42
+ text: 'Flytta och släpp dussintals memes i den avgränsade zonen utan extern anslutning.',
43
+ },
44
+ {
45
+ name: 'Bevittna den stora osynliga förändringen',
46
+ text: 'Se hur en framstegsindikator ändras för varje millisekund medan den lokala canvas-avkodaren genererar resultatet.',
47
+ },
48
+ {
49
+ name: 'Spara din rena arsenal av resultat',
50
+ text: 'Hämta de extraherade filerna individuellt eller tryck på Ladda ner Zip för att paketera allt.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: GifAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'GIF89a Specifikation',
57
+ url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
58
+ },
59
+ {
60
+ name: 'Google WebP Dokumentation',
61
+ url: 'https://developers.google.com/speed/webp',
62
+ },
63
+ ];
64
+
65
+ const seo: GifAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'GIF till WebP-konverterare: Den moderna ersättaren för tunga animationer',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Animerade GIF-filer är dinosaurierna i det moderna webbinnehållet: de förbrukar oproportionerligt mycket bandbredd, försämrar PageSpeed för alla sidor och står för en betydande procentandel av den totala vikten på tusentals webbplatser. En typisk animerad GIF på 5 MB kan bli en WebP-animation under 1 MB med samma visuella kvalitet. WebP är den moderna efterföljaren som Google specifikt utformat för att ersätta GIF på webben.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'GIF vs WebP: klyftan mellan webbens dåtid och nutid',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'GIF är ett format från 1987 som ursprungligen inte var designat för animationer – den funktionen kom till som ett senare hack. Dess 256-färgers palett, ineffektiva komprimering och oförmåga att hantera ljud gör det till ett föråldrat format. WebP, utvecklat av Google 2010, erbjuder överlägsen komprimering (både förlustfri och med förlust), inbyggt stöd för animationer och full alfakanal.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'För en webbutvecklare kan byte av GIF-filer mot WebP på sidor innebära en förbättring av Google PageSpeed-poängen med 10 till 30 punkter. Mindre sidvikt innebär bättre Core Web Vitals, bättre SEO-rankning och lägre bandbreddskostnader på servrar. Det är inte bara en estetisk förbättring – det är ett tekniskt arkitekturbeslut.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Arkitekturjämförelse: Lokal vs Moln',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Molnkonverterare',
98
+ description: 'Plattformar som bearbetar dina GIF-filer på fjärrservrar.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Dina animationer reser över internet till tredjepartsservrar',
103
+ 'Väntetid på grund av nätverkslatens vid uppladdning och nedladdning',
104
+ 'Storleksbegränsningar (stora GIF-filer avvisas ofta)',
105
+ 'Risk för filretention och analys',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Vår Lokala Arkitektur',
110
+ description: 'Direkt bearbetning på din hårdvara med Vanilla JS-teknik.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'GIF-filen lämnar aldrig din enhet',
115
+ 'Omedelbar konvertering utan nätverksväntan',
116
+ 'Inga storleksbegränsningar: bearbeta GIF-filer av vilken vikt som helst',
117
+ 'Total integritet: 0 byte skickas externt',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Hur den lokala GIF till WebP-konverteringen fungerar',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Den lokala konverteringen använder HTML5 Canvas-API:et. GIF-filen laddas som ett inbyggt Image-element i webbläsaren. Genom att rita den på en canvas fångar grafikmotorn det första animationsbilden med all dess transparensinformation. Metoden <code>toDataURL(\'image/webp\')</code> exporterar bilden som WebP direkt i RAM-minnet.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'WebP stöder full alfakanal, så GIF-transparens bevaras i den resulterande WebP-filen utan att man behöver lägga till en bakgrund. WebP-komprimeringsalgoritmer är betydligt effektivare än GIF eller PNG, vilket förklarar den drastiska filstorleksminskningen av slutresultatet.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Garanterad PageSpeed förbättring',
138
+ html: 'En animerad GIF på 5 MB kan bli en WebP under 1 MB. Om du har GIF-filer på dina webbsidor kan byte till WebP omedelbart förbättra Largest Contentful Paint (LCP) och Total Blocking Time (TBT), vilket direkt påverkar SEO-rankningen.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Användningsfall och kompatibilitet för resulterande WebP',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Byta ut GIF-filer på webbsidor för att förbättra PageSpeed-poängen.',
150
+ 'Optimerade avatarer och stickers för Discord, Slack och moderna plattformar.',
151
+ 'Banners och visuellt material för digitala marknadsföringskampanjer.',
152
+ 'Animationer i progressiva webbapplikationer (PWA).',
153
+ 'Kompatibel med Chrome, Edge, Firefox, Safari 14+ och alla moderna webbläsare.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Slutsats: migrera dina GIF-filer till 2000-talet',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Varje GIF på din webbplats är en missad optimeringsmöjlighet. Vårt verktyg konverterar GIF-filer till WebP omedelbart, privat och utan begränsningar, direkt i din webbläsare. Resultatet: filer upp till 5 gånger mindre, perfekt transparens och kompatibilitet med alla moderna webbläsare.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: GifAWebpLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'sv', faq, howTo }),
178
+ };