@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,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 = 'gif-in-webp-konvertieren';
6
+ const title = 'GIF in statisches WebP online konvertieren';
7
+ const description =
8
+ 'Konvertieren Sie animierte GIFs in statisches WebP. Bewahrt Transparenz. Kein Server erforderlich. Lokale Verarbeitung im Browser. Kostenlos.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'GIF-Dateien hierher ziehen...',
12
+ convertText: 'Um sie sofort in WebP zu konvertieren',
13
+ selectFiles: 'Dateien auswählen',
14
+ processedFiles: 'Verarbeitete Dateien',
15
+ downloadAll: 'Alles herunterladen (.zip)',
16
+ pending: 'Ausstehend',
17
+ bibliographyTitle: 'Literaturhinweise',
18
+ faqTitle: 'Häufig gestellte Fragen',
19
+ };
20
+
21
+ const faq: GifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Wozu eine animierte Datei in das moderne statische WebP-Format umwandeln?',
24
+ answer:
25
+ 'WebP ist der Kompressionsstandard von Google; es ist bemerkenswert leichtgewichtig und erhält Transparenzen sauber. Der Wechsel von GIF zu WebP eliminiert die schwere Animation und führt zu einem enormen Gewinn an Web-Geschwindigkeit.',
26
+ },
27
+ {
28
+ question: 'Bleibt der ursprüngliche Avatar transparent?',
29
+ answer:
30
+ 'Ja, im Gegensatz zu JPEG respektiert der WebP-Container den komplexen Alpha-Kanal. Alle Silhouetten bleiben so perfekt, wie sie nativ waren.',
31
+ },
32
+ {
33
+ question: 'Wohin werden die Dateien hochgeladen?',
34
+ answer:
35
+ 'Es findet kein Upload statt. Die Verarbeitung erfolgt vollständig durch das JavaScript des Browsers auf Ihrem PC, ohne jegliche Remote-Übertragung.',
36
+ },
37
+ ];
38
+
39
+ const howTo: GifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Eine animierte Lawine starten',
42
+ text: 'Verschieben und legen Sie Dutzende von Memes in der markierten Zone ab, ganz ohne Remote-Verbindung.',
43
+ },
44
+ {
45
+ name: 'Erleben Sie den unsichtbaren Wandel',
46
+ text: 'Beobachten Sie, wie sich die Fortschrittsanzeige Millisekunde für Millisekunde ändert, während der lokale Canvas-Decoder das Ergebnis generiert.',
47
+ },
48
+ {
49
+ name: 'Ihr sauberes Ergebnis-Arsenal speichern',
50
+ text: 'Nehmen Sie die extrahierten Dateien einzeln entgegen oder drücken Sie auf ZIP-Download, um alles zu paketieren.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: GifAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'GIF89a Spezifikation',
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-zu-WebP-Konverter: Der moderne Ersatz für schwere Animationen',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Animierte GIFs sind die Dinosaurier des modernen Web-Contents: Sie verbrauchen unverhältnismäßig viel Bandbreite, verschlechtern den PageSpeed jeder Seite und sind für einen erheblichen Prozentsatz des Gesamtgewichts von Tausenden von Websites verantwortlich. Ein typisches 5 MB großes animiertes GIF kann zu einer WebP-Animation unter 1 MB werden, bei gleicher visueller Qualität. WebP ist der moderne Nachfolger, den Google speziell entwickelt hat, um GIF im Web abzulösen.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'GIF vs WebP: Die Kluft zwischen Vergangenheit und Gegenwart des Webs',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'GIF ist ein Format von 1987, das ursprünglich nicht für Animationen konzipiert wurde – diese Funktion kam erst als späterer Hack hinzu. Seine 256-Farben-Palette, die ineffiziente Kompression und die Unfähigkeit, Audio zu verarbeiten, machen es zu einem veralteten Format. WebP, 2010 von Google entwickelt, bietet überlegene verlustbehaftete und verlustfreie Kompression, native Animationsunterstützung und vollen Alpha-Kanal.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Für einen Webentwickler kann der Ersatz von GIFs durch WebP auf Seiten eine Verbesserung des Google PageSpeed Scores um 10 bis 30 Punkte bedeuten. Weniger Seitengewicht bedeutet bessere Core Web Vitals, bessere SEO-Rankings und niedrigere Bandbreitenkosten auf den Servern. Es ist nicht nur eine ästhetische Verbesserung – es ist eine Entscheidung für die technische Architektur.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Architekturvergleich: Lokal vs Cloud',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Cloud Konverter',
98
+ description: 'Plattformen, die Ihre GIFs auf Remote-Servern verarbeiten.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Ihre Animationen reisen über das Internet zu Servern von Drittanbietern',
103
+ 'Wartezeit aufgrund von Netzwerklatenz beim Upload und Download',
104
+ 'Größenbeschränkungen (große GIFs werden oft abgelehnt)',
105
+ 'Risiko der Speicherung und Analyse der Dateien',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Unsere lokale Architektur',
110
+ description: 'Direkte Verarbeitung auf Ihrer Hardware mittels Vanilla JS-Technologie.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Das GIF verlässt nie Ihr Gerät',
115
+ 'Sofortige Konvertierung ohne Netzwerkwartezeit',
116
+ 'Keine Größenlimits: Verarbeitung von GIFs jedes Gewichts',
117
+ 'Voller Datenschutz: 0 Bytes werden nach außen gesendet',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Wie die lokale GIF-zu-WebP-Konvertierung funktioniert',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Die lokale Konvertierung nutzt die HTML5 Canvas API. Das GIF wird als natives Image-Element des Browsers geladen. Durch das Zeichnen auf eine Leinwand erfasst die Grafik-Engine das erste Animationsbild mit all seinen Transparenzinformationen. Die Methode <code>toDataURL(\'image/webp\')</code> exportiert den Frame direkt im RAM als WebP.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'WebP unterstützt einen vollen Alpha-Kanal, sodass GIF-Transparenzen im resultierenden WebP erhalten bleiben, ohne dass ein Hintergrund hinzugefügt werden muss. WebP-Kompressionsalgorithmen sind wesentlich effizienter als GIF oder PNG, was die drastische Reduzierung der Dateigröße des Endergebnisses erklärt.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Garantierte PageSpeed Verbesserung',
138
+ html: 'Ein 5 MB großes animiertes GIF kann zu einem WebP unter 1 MB werden. Wenn Sie GIFs auf Ihren Webseiten haben, kann deren Ersatz durch WebP sofort Ihren Largest Contentful Paint (LCP) und die Total Blocking Time (TBT) verbessern, was sich direkt auf Ihre SEO-Rankings auswirkt.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Anwendungsfälle und Kompatibilität des resultierenden WebP',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Ersetzen von GIFs auf Webseiten zur Verbesserung der PageSpeed-Werte.',
150
+ 'Optimierte Avatare und Sticker für Discord, Slack und moderne Plattformen.',
151
+ 'Banner und Visuals für digitale Marketingkampagnen.',
152
+ 'Animationen in Progressive Web Applications (PWA).',
153
+ 'Kompatibel mit Chrome, Edge, Firefox, Safari 14+ und allen modernen Browsern.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Fazit: Migrieren Sie Ihre GIFs ins 21. Jahrhundert',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Jedes GIF auf Ihrer Website ist eine verpasste Optimierungschance. Unser Tool konvertiert GIFs sofort, privat und ohne Limits direkt in Ihrem Browser in WebP. Das Ergebnis: bis zu 5-mal kleinere Dateien, perfekte Transparenz und Kompatibilität mit allen modernen Browsern.',
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: 'de', faq, howTo }),
178
+ };
@@ -1,5 +1,5 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
2
1
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
3
  import type { GifAWebpLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'gif-to-webp-converter';
@@ -164,16 +164,6 @@ const seo: GifAWebpLocaleContent['seo'] = [
164
164
  },
165
165
  ];
166
166
 
167
- const appSchema: WithContext<SoftwareApplication> = {
168
- '@context': 'https://schema.org',
169
- '@type': 'SoftwareApplication',
170
- name: title,
171
- description,
172
- applicationCategory: 'UtilitiesApplication',
173
- operatingSystem: 'Web',
174
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
175
- inLanguage: 'en',
176
- };
177
167
 
178
168
  export const content: GifAWebpLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: GifAWebpLocaleContent = {
184
174
  faq,
185
175
  bibliography,
186
176
  howTo,
187
- schemas: [appSchema as any],
177
+ schemas: generateSchemas({ title, description, inLanguage: 'en', faq, howTo }),
188
178
  };
@@ -1,5 +1,5 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
2
1
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
3
  import type { GifAWebpLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertidor-gif-a-webp';
@@ -164,16 +164,6 @@ const seo: GifAWebpLocaleContent['seo'] = [
164
164
  },
165
165
  ];
166
166
 
167
- const appSchema: WithContext<SoftwareApplication> = {
168
- '@context': 'https://schema.org',
169
- '@type': 'SoftwareApplication',
170
- name: title,
171
- description,
172
- applicationCategory: 'UtilitiesApplication',
173
- operatingSystem: 'Web',
174
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
175
- inLanguage: 'es',
176
- };
177
167
 
178
168
  export const content: GifAWebpLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: GifAWebpLocaleContent = {
184
174
  faq,
185
175
  bibliography,
186
176
  howTo,
187
- schemas: [appSchema as any],
177
+ schemas: generateSchemas({ title, description, inLanguage: 'es', faq, howTo }),
188
178
  };
@@ -1,5 +1,5 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
2
1
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
3
  import type { GifAWebpLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertisseur-gif-en-webp';
@@ -164,16 +164,6 @@ const seo: GifAWebpLocaleContent['seo'] = [
164
164
  },
165
165
  ];
166
166
 
167
- const appSchema: WithContext<SoftwareApplication> = {
168
- '@context': 'https://schema.org',
169
- '@type': 'SoftwareApplication',
170
- name: title,
171
- description,
172
- applicationCategory: 'UtilitiesApplication',
173
- operatingSystem: 'Web',
174
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
175
- inLanguage: 'fr',
176
- };
177
167
 
178
168
  export const content: GifAWebpLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: GifAWebpLocaleContent = {
184
174
  faq,
185
175
  bibliography,
186
176
  howTo,
187
- schemas: [appSchema as any],
177
+ schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
188
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-ke-webp';
6
+ const title = 'Konversi GIF ke WebP statis Online';
7
+ const description =
8
+ 'Konversi GIF animasi ke WebP statis. Mempertahankan transparansi. Tanpa server. Diproses secara lokal di browser Anda. Gratis.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Tarik file GIF...',
12
+ convertText: 'Untuk mengonversinya ke WebP secara instan',
13
+ selectFiles: 'Pilih file',
14
+ processedFiles: 'File yang diproses',
15
+ downloadAll: 'Unduh Semua (.zip)',
16
+ pending: 'Tertunda',
17
+ bibliographyTitle: 'Referensi Bibliografi',
18
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
19
+ };
20
+
21
+ const faq: GifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Mengapa membekukan file animasi ke format WebP statis modern?',
24
+ answer:
25
+ 'WebP adalah standar kompresi Google; ini sangat ringan dan mempertahankan transparansi dengan bersih. Beralih dari GIF ke WebP menghilangkan animasi yang berat dan menghasilkan peningkatan kecepatan web yang luar biasa.',
26
+ },
27
+ {
28
+ question: 'Apakah avatar asli akan tetap transparan?',
29
+ answer:
30
+ 'Ya, tidak seperti JPEG, kontainer WebP menghormati saluran Alpha yang kompleks. Semua siluetnya akan tetap sempurna seperti aslinya.',
31
+ },
32
+ {
33
+ question: 'Ke mana file akan diunggah?',
34
+ answer:
35
+ 'Tidak ada pengunggahan. Pemrosesan dilakukan sepenuhnya oleh Javascript browser di PC Anda, dengan nol pengiriman jarak jauh.',
36
+ },
37
+ ];
38
+
39
+ const howTo: GifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Luncurkan longsoran animasi',
42
+ text: 'Pindahkan dan letakkan puluhan meme ke zona yang ditentukan tanpa koneksi jarak jauh.',
43
+ },
44
+ {
45
+ name: 'Saksikan perubahan besar yang tak terlihat',
46
+ text: 'Lihat indikator progresif berubah setiap milidetik saat dekoder canvas lokal menghasilkan output.',
47
+ },
48
+ {
49
+ name: 'Simpan gudang hasil bersih Anda',
50
+ text: 'Ambil file yang diekstrak satu per satu atau tekan Unduh Zip untuk mengemas semuanya.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: GifAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Spesifikasi GIF89a',
57
+ url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
58
+ },
59
+ {
60
+ name: 'Dokumentasi Google WebP',
61
+ url: 'https://developers.google.com/speed/webp',
62
+ },
63
+ ];
64
+
65
+ const seo: GifAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Konverter GIF ke WebP: Pengganti Modern untuk Animasi Berat',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'GIF animasi adalah dinosaurus konten web modern: mereka mengonsumsi bandwidth yang tidak proporsional, memperburuk PageSpeed halaman mana pun, dan bertanggung jawab atas persentase berat total yang signifikan di ribuan situs web. GIF animasi 5 MB yang khas dapat menjadi animasi WebP di bawah 1 MB dengan kualitas visual yang sama. WebP adalah penerus modern yang dirancang khusus oleh Google untuk menggantikan GIF di web.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'GIF vs WebP: kesenjangan antara masa lalu dan masa kini web',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'GIF adalah format dari tahun 1987 yang awalnya tidak dirancang untuk animasi — fitur tersebut datang sebagai "hack" kemudian. Palet 256 warnanya, kompresi yang tidak efisien, dan ketidakmampuan untuk menangani audio menjadikannya format yang usang. WebP, yang dikembangkan oleh Google pada tahun 2010, menawarkan kompresi superior baik lossy maupun lossless, dukungan animasi asli, dan saluran alpha penuh.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Bagi pengembang web, mengganti GIF dengan WebP pada halaman dapat berarti peningkatan skor Google PageSpeed sebesar 10 hingga 30 poin. Berat halaman yang lebih sedikit berarti Core Web Vitals yang lebih baik, peringkat SEO yang lebih baik, dan biaya bandwidth yang lebih rendah di server. Ini bukan sekadar peningkatan estetika — ini adalah keputusan arsitektur teknis.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Perbandingan Arsitektur: Lokal vs Cloud',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Konverter Cloud',
98
+ description: 'Platform yang memproses GIF Anda di server jarak jauh.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Animasi Anda dikirim melalui internet ke server pihak ketiga',
103
+ 'Waktu tunggu karena latensi jaringan saat pengunggahan dan pengunduhan',
104
+ 'Batasan ukuran (GIF besar sering ditolak)',
105
+ 'Risiko retensi dan analisis file',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Arsitektur Lokal Kami',
110
+ description: 'Pemrosesan langsung pada perangkat keras Anda menggunakan teknologi Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'GIF tidak pernah meninggalkan perangkat Anda',
115
+ 'Konversi instan tanpa menunggu jaringan',
116
+ 'Tidak ada batasan ukuran: proses GIF dengan berat apa pun',
117
+ 'Privasi total: 0 byte dikirim secara eksternal',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Bagaimana cara kerja konversi GIF ke WebP lokal',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Konversi lokal menggunakan HTML5 Canvas API. GIF dimuat sebagai elemen Gambar browser asli. Dengan menggambarnya ke kanvas, mesin grafis menangkap bingkai animasi pertama dengan semua informasi transparansinya. Metode <code>toDataURL(\'image/webp\')</code> mengekspor bingkai sebagai WebP langsung di RAM.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'WebP mendukung saluran alpha penuh, sehingga transparansi GIF dipertahankan dalam WebP yang dihasilkan tanpa perlu menambahkan latar belakang. Algoritme kompresi WebP jauh lebih efisien daripada GIF atau PNG, yang menjelaskan pengurangan ukuran file yang drastis dari output akhir.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Peningkatan PageSpeed yang dijamin',
138
+ html: 'GIF animasi 5 MB bisa menjadi WebP di bawah 1 MB. Jika Anda memiliki GIF di halaman situs web Anda, menggantinya dengan WebP dapat segera meningkatkan Largest Contentful Paint (LCP) dan Total Blocking Time (TBT) Anda, yang berdampak langsung pada peringkat SEO.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Kasus penggunaan dan kompatibilitas WebP yang dihasilkan',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Mengganti GIF di halaman web untuk meningkatkan skor PageSpeed.',
150
+ 'Avatar dan stiker yang dioptimalkan untuk Discord, Slack, dan platform modern.',
151
+ 'Banner dan visual untuk kampanye pemasaran digital.',
152
+ 'Animasi dalam aplikasi web progresif (PWA).',
153
+ 'Kompatibel dengan Chrome, Edge, Firefox, Safari 14+ dan semua browser modern.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Kesimpulan: migrasikan GIF Anda ke abad ke-21',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Setiap GIF di situs web Anda adalah peluang optimasi yang terlewatkan. Alat kami mengonversi GIF ke WebP secara instan, privat, dan tanpa batasan, langsung di browser Anda. Hasilnya: file hingga 5 kali lebih kecil, transparansi sempurna, dan kompatibilitas dengan semua browser modern.',
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: 'id', 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 = 'convertitore-gif-in-webp';
6
+ const title = 'Converti GIF in WebP statico Online';
7
+ const description =
8
+ 'Converti GIF animate in WebP statico. Preserva la trasparenza. Nessun server necessario. Elaborazione locale nel tuo browser. Gratuito.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Trascina i file GIF...',
12
+ convertText: 'Per convertirli istantaneamente in WebP',
13
+ selectFiles: 'Seleziona file',
14
+ processedFiles: 'File elaborati',
15
+ downloadAll: 'Scarica tutto (.zip)',
16
+ pending: 'In attesa',
17
+ bibliographyTitle: 'Riferimenti Bibliografici',
18
+ faqTitle: 'Domande Frequenti',
19
+ };
20
+
21
+ const faq: GifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Perché congelare un file animato nel moderno formato statico WebP?',
24
+ answer:
25
+ 'WebP è lo standard di compressione di Google; è incredibilmente leggero e mantiene la trasparenza in modo pulito. Passare da GIF a WebP elimina l\'animazione pesante e ottiene un guadagno abissale nella velocità del web.',
26
+ },
27
+ {
28
+ question: 'L\'avatar originale rimarrà trasparente?',
29
+ answer:
30
+ 'Sì, a differenza del JPEG, il contenitore WebP rispetta il complesso canale Alpha. Tutte le sue sagome rimarranno perfette come erano nativamente.',
31
+ },
32
+ {
33
+ question: 'Dove verranno caricati i file?',
34
+ answer:
35
+ 'Non c\'è alcun caricamento. L\'elaborazione è eseguita interamente dal Javascript del browser sul tuo PC, con zero invio remoto.',
36
+ },
37
+ ];
38
+
39
+ const howTo: GifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Lancia una valanga animata',
42
+ text: 'Sposta e rilascia decine di meme nella zona delimitata senza connessione remota.',
43
+ },
44
+ {
45
+ name: 'Assisti al grande cambiamento invisibile',
46
+ text: 'Guarda un indicatore progressivo cambiare ogni millisecondo mentre il decoder canvas locale genera l\'output.',
47
+ },
48
+ {
49
+ name: 'Salva il tuo arsenale di risultati puliti',
50
+ text: 'Prendi i file estratti singolarmente o premi Scarica Zip per pacchettizzare tutto.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: GifAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Specifica GIF89a',
57
+ url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
58
+ },
59
+ {
60
+ name: 'Documentazione Google WebP',
61
+ url: 'https://developers.google.com/speed/webp',
62
+ },
63
+ ];
64
+
65
+ const seo: GifAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Convertitore da GIF a WebP: Il sostituto moderno per animazioni pesanti',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Le GIF animate sono i dinosauri dei moderni contenuti web: consumano una larghezza di banda sproporzionata, peggiorano il PageSpeed di qualsiasi pagina e sono responsabili di una percentuale significativa del peso totale su migliaia di siti web. Una tipica GIF animata da 5 MB può diventare un\'animazione WebP sotto 1 MB con la stessa qualità visiva. WebP è il successore moderno che Google ha progettato specificamente per sostituire le GIF sul web.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'GIF vs WebP: il divario tra il passato e il presente del web',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'La GIF è un formato del 1987 non originariamente progettato per le animazioni: tale caratteristica è arrivata come un successivo "hack". La sua tavolozza di 256 colori, la compressione inefficiente e l\'incapacità di gestire l\'audio lo rendono un formato obsoleto. WebP, sviluppato da Google nel 2010, offre una compressione superiore sia lossy che lossless, supporto nativo per le animazioni e canale alpha completo.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Per uno sviluppatore web, sostituire le GIF con WebP sulle pagine può significare un miglioramento del punteggio Google PageSpeed da 10 a 30 punti. Meno peso della pagina significa migliori Core Web Vitals, migliori posizionamenti SEO e minori costi di larghezza di banda sui server. Non è solo un miglioramento estetico: è una decisione di architettura tecnica.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Confronto Architettura: Locale vs Cloud',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Convertitori Cloud',
98
+ description: 'Piattaforme che elaborano le tue GIF su server remoti.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Le tue animazioni viaggiano su Internet verso server di terze parti',
103
+ 'Tempo di attesa dovuto alla latenza di rete durante il caricamento e lo scaricamento',
104
+ 'Limiti di dimensione (le GIF di grandi dimensioni vengono spesso rifiutate)',
105
+ 'Rischio di conservazione e analisi dei file',
106
+ ],
107
+ },
108
+ {
109
+ title: 'La nostra Architettura Locale',
110
+ description: 'Elaborazione diretta sul tuo hardware utilizzando la tecnologia Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'La GIF non lascia mai il tuo dispositivo',
115
+ 'Conversione istantanea senza attese di rete',
116
+ 'Nessun limite di dimensione: elabora GIF di qualsiasi peso',
117
+ 'Privacy totale: 0 byte inviati esternamente',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Come funziona la conversione locale da GIF a WebP',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'La conversione locale utilizza l\'API HTML5 Canvas. La GIF viene caricata come un elemento Image nativo del browser. Disegnandola su un canvas, il motore grafico cattura il primo fotogramma dell\'animazione con tutte le sue informazioni sulla trasparenza. Il metodo <code>toDataURL(\'image/webp\')</code> esporta il fotogramma come WebP direttamente nella RAM.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'WebP supporta il canale alpha completo, quindi le trasparenze GIF vengono preservate nel WebP risultante senza necessità di aggiungere uno sfondo. Gli algoritmi di compressione WebP sono significativamente più efficienti di quelli GIF o PNG, il che spiega la drastica riduzione della dimensione del file finale.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Miglioramento PageSpeed garantito',
138
+ html: 'Una GIF animata da 5 MB può diventare un WebP sotto 1 MB. Se hai delle GIF sulle pagine del tuo sito web, sostituirle con WebP può migliorare immediatamente il tuo Largest Contentful Paint (LCP) e il Total Blocking Time (TBT), influenzando direttamente i posizionamenti SEO.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Casi d\'uso e compatibilità del WebP risultante',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Sostituzione delle GIF sulle pagine web per migliorare i punteggi PageSpeed.',
150
+ 'Avatar e sticker ottimizzati per Discord, Slack e piattaforme moderne.',
151
+ 'Banner e visual per campagne di digital marketing.',
152
+ 'Animazioni in applicazioni web progressive (PWA).',
153
+ 'Compatibile con Chrome, Edge, Firefox, Safari 14+ e tutti i browser moderni.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Conclusione: migra le tue GIF nel 21° secolo',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Ogni GIF sul tuo sito web è un\'opportunità di ottimizzazione persa. Il nostro strumento converte le GIF in WebP all\'istante, in modo privato e senza limiti, direttamente nel tuo browser. Il risultato: file fino a 5 volte più piccoli, trasparenza perfetta e compatibilità con tutti i browser moderni.',
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: 'it', faq, howTo }),
178
+ };