@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 = 'convert-gif-to-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는 구글의 압축 표준입니다. 매우 가벼우며 투명도를 깔끔하게 유지합니다. GIF에서 WebP로 전환하면 무거운 애니메이션이 제거되고 웹 속도가 획기적으로 향상됩니다.',
26
+ },
27
+ {
28
+ question: '원본의 투명도가 그대로 유지되나요?',
29
+ answer:
30
+ '네, JPEG와 달리 WebP 컨테이너는 복잡한 알파 채널을 지원합니다. 모든 실루엣이 원래 그대로 완벽하게 유지됩니다.',
31
+ },
32
+ {
33
+ question: '파일은 어디로 업로드되나요?',
34
+ answer:
35
+ '업로드는 발생하지 않습니다. 모든 처리는 사용자의 PC에서 브라우저의 자바스크립트에 의해 로컬로 수행되며 외부 서버로 전송되지 않습니다.',
36
+ },
37
+ ];
38
+
39
+ const howTo: GifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: '애니메이션 파일 준비',
42
+ text: '수십 개의 짤방(meme)을 외부 연결 없이 지정된 영역으로 옮기고 놓으세요.',
43
+ },
44
+ {
45
+ name: '보이지 않는 위대한 변화 확인',
46
+ text: '로컬 캔버스 디코더가 결과물을 생성하는 동안 매 밀리초마다 바뀌는 진행 표시기를 확인하세요.',
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: '구글 WebP 문서',
61
+ url: 'https://developers.google.com/speed/webp',
62
+ },
63
+ ];
64
+
65
+ const seo: GifAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'GIF to WebP 변환기: 무거운 애니메이션을 위한 최신 대안',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '애니메이션 GIF는 현대 웹 콘텐츠의 공룡과 같습니다. 불균형하게 많은 대역폭을 소비하고 모든 페이지의 PageSpeed를 저하시키며, 수천 개의 웹사이트에서 전체 용량의 상당 부분을 차지합니다. 일반적인 5MB 애니메이션 GIF는 동일한 시각적 품질을 유지하면서 1MB 미만의 WebP 애니메이션으로 변환될 수 있습니다. WebP는 구글이 웹에서 GIF를 대체하기 위해 특별히 설계한 현대적인 후계자입니다.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'GIF vs WebP: 웹의 과거와 현재 사이의 간극',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'GIF는 원래 애니메이션용으로 설계되지 않은 1987년 형식입니다. 애니메이션 기능은 나중에 추가된 임시방편이었습니다. 256색 팔레트, 비효율적인 압축, 오디오 처리 불가 등은 이제 구식 형식이 되었음을 의미합니다. 2010년 구글이 개발한 WebP는 손실 및 무손실 압축 모두에서 우수한 성능을 제공하며, 네이티브 애니메이션 지원과 완전한 알파 채널을 갖추고 있습니다.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '웹 개발자에게 페이지의 GIF를 WebP로 교체하는 것은 구글 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 to WebP 변환 작동 원리',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: '로컬 변환은 HTML5 Canvas API를 사용합니다. GIF는 브라우저의 네이티브 Image 요소로 로드됩니다. 이를 캔버스에 그림으로써 그래픽 엔진은 모든 투명도 정보와 함께 첫 번째 애니메이션 프레임을 캡처합니다. <code>toDataURL(\'image/webp\')</code> 메서드는 프레임을 RAM에서 직접 WebP로 내보냅니다.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'WebP는 완전한 알파 채널을 지원하므로 배경을 추가할 필요 없이 결과물인 WebP에서도 GIF의 투명도가 유지됩니다. WebP 압축 알고리즘은 GIF나 PNG보다 훨씬 효율적이어서 최종 출력물의 파일 크기가 획기적으로 줄어듭니다.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: '확실한 PageSpeed 개선',
138
+ html: '5MB 애니메이션 GIF는 1MB 미만의 WebP가 될 수 있습니다. 웹사이트 페이지에 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
+ 'PageSpeed 점수 개선을 위해 웹 페이지의 GIF 교체.',
150
+ '디스코드, 슬랙 및 현대적 플랫폼용으로 최적화된 아바타 및 스티커.',
151
+ '디지털 마케팅 캠페인용 배너 및 비주얼.',
152
+ '프로그레시브 웹 앱(PWA)의 애니메이션.',
153
+ '크롬, 엣지, 파이어폭스, 사파리 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: 'ko', 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 = 'gif-naar-webp-converteren';
6
+ const title = 'GIF naar statische WebP Online Converteren';
7
+ const description =
8
+ 'Converteer geanimeerde GIF\'s naar statische WebP. Behoudt transparantie. Geen server nodig. Lokaal verwerkt in je browser. Gratis.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Sleep GIF-bestanden hierheen...',
12
+ convertText: 'Om ze direct naar WebP te converteren',
13
+ selectFiles: 'Bestanden selecteren',
14
+ processedFiles: 'Verwerkte bestanden',
15
+ downloadAll: 'Alles downloaden (.zip)',
16
+ pending: 'In afwachting',
17
+ bibliographyTitle: 'Bibliografische Referenties',
18
+ faqTitle: 'Veelgestelde Vragen',
19
+ };
20
+
21
+ const faq: GifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Waarom een geanimeerd bestand bevriezen naar het moderne statische WebP-formaat?',
24
+ answer:
25
+ 'WebP is de compressiestandaard van Google; het is opmerkelijk lichtgewicht en behoudt transparantie op een schone manier. De overstap van GIF naar WebP elimineert de zware animatie en zorgt voor een enorme winst in websnelheid.',
26
+ },
27
+ {
28
+ question: 'Blijft de originele avatar transparant?',
29
+ answer:
30
+ 'Ja, in tegenstelling tot JPEG respecteert de WebP-container het complexe alfakanaal. Alle contouren blijven perfect zoals ze van nature waren.',
31
+ },
32
+ {
33
+ question: 'Waar worden de bestanden naar geüpload?',
34
+ answer:
35
+ 'Er is geen upload. De verwerking wordt volledig uitgevoerd door de JavaScript van de browser op je eigen pc, zonder enige verzending op afstand.',
36
+ },
37
+ ];
38
+
39
+ const howTo: GifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Start een geanimeerde lawine',
42
+ text: 'Verplaats en drop tientallen memes in de gemarkeerde zone zonder externe verbinding.',
43
+ },
44
+ {
45
+ name: 'Getuige van de grote onzichtbare verandering',
46
+ text: 'Bekijk hoe een voortgangsindicator elke milliseconde verandert terwijl de lokale canvas-decoder de output genereert.',
47
+ },
48
+ {
49
+ name: 'Sla je schone verzameling resultaten op',
50
+ text: 'Neem de geëxtraheerde bestanden afzonderlijk op of druk op Download Zip om alles te verpakken.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: GifAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'GIF89a Specificatie',
57
+ url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
58
+ },
59
+ {
60
+ name: 'Google WebP Documentatie',
61
+ url: 'https://developers.google.com/speed/webp',
62
+ },
63
+ ];
64
+
65
+ const seo: GifAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'GIF naar WebP Converter: De moderne vervanger voor zware animaties',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Geanimeerde GIF\'s zijn de dinosaurussen van de moderne webcontent: ze verbruiken buitensporige bandbreedte, verslechteren de PageSpeed van elke pagina en zijn verantwoordelijk voor een aanzienlijk percentage van het totale gewicht op duizenden websites. Een typische geanimeerde GIF van 5 MB kan een WebP-animatie van minder dan 1 MB worden met dezelfde visuele kwaliteit. WebP is de moderne opvolger die Google specifiek heeft ontworpen om GIF op het web te vervangen.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'GIF vs WebP: De kloof tussen het verleden en het heden van het web',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'GIF is een formaat uit 1987 dat oorspronkelijk niet bedoeld was voor animaties – die functie kwam later als een hack. Het palet van 256 kleuren, de inefficiënte compressie en het onvermogen om audio te verwerken maken het een verouderd formaat. WebP, ontwikkeld door Google in 2010, biedt superieure compressie (zowel met als zonder verlies), systeemeigen ondersteuning voor animaties en een volledig alfakanaal.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Voor een webontwikkelaar kan het vervangen van GIF\'s door WebP op pagina\'s een verbetering van 10 tot 30 punten in de Google PageSpeed score betekenen. Minder paginagewicht betekent betere Core Web Vitals, betere SEO-rankings en lagere bandbreedtekosten op servers. Het is niet alleen een esthetische verbetering – het is een technische architectuurbeslissing.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Architectuurvergelijking: Lokaal vs Cloud',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Cloud Converters',
98
+ description: 'Platforms die je GIF\'s op externe servers verwerken.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Je animaties reizen over het internet naar servers van derden',
103
+ 'Wachttijd door netwerklatentie bij upload en download',
104
+ 'Groottebeperkingen (grote GIF\'s worden vaak geweigerd)',
105
+ 'Risico op bewaring en analyse van bestanden',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Onze Lokale Architectuur',
110
+ description: 'Directe verwerking op je eigen hardware met Vanilla JS-technologie.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'De GIF verlaat nooit je apparaat',
115
+ 'Directe conversie zonder netwerkwachttijd',
116
+ 'Geen groottebeperkingen: verwerk GIF\'s van elk gewicht',
117
+ 'Totale privacy: 0 bytes worden extern verzonden',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Hoe de lokale GIF naar WebP conversie werkt',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'De lokale conversie maakt gebruik van de HTML5 Canvas API. De GIF wordt geladen als een systeemeigen browser Image-element. Door het op een canvas te tekenen, legt de grafische engine het eerste animatieframe vast met alle transparantie-informatie. De methode <code>toDataURL(\'image/webp\')</code> exporteert het frame direct in het RAM-geheugen als WebP.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'WebP ondersteunt een volledig alfakanaal, dus GIF-transparanties blijven behouden in de resulterende WebP zonder dat er een achtergrond hoeft te worden toegevoegd. WebP-compressiealgoritmen zijn aanzienlijk efficiënter dan GIF of PNG, wat de drastische vermindering van de bestandsgrootte van de uiteindelijke output verklaart.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Gegarandeerde verbetering van de PageSpeed',
138
+ html: 'Een geanimeerde GIF van 5 MB kan een WebP van minder dan 1 MB worden. Als je GIF\'s op je website hebt, kan het vervangen ervan door WebP onmiddellijk je Largest Contentful Paint (LCP) en Total Blocking Time (TBT) verbeteren, wat direct invloed heeft op je SEO-rankings.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Gebruiksscenario\'s en compatibiliteit van de resulterende WebP',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Vervangen van GIF\'s op webpagina\'s om de PageSpeed-scores te verbeteren.',
150
+ 'Geoptimaliseerde avatars en stickers voor Discord, Slack en moderne platforms.',
151
+ 'Banners en visuals voor digitale marketingcampagnes.',
152
+ 'Animaties in progressive web applications (PWA).',
153
+ 'Compatibel met Chrome, Edge, Firefox, Safari 14+ en alle moderne browsers.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Conclusie: migreer je GIF\'s naar de 21e eeuw',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Elke GIF op je website is een gemiste kans voor optimalisatie. Onze tool converteert GIF\'s direct, privé en zonder beperkingen naar WebP, rechtstreeks in je browser. Het resultaat: bestanden die tot 5 keer kleiner zijn, perfecte transparantie en compatibiliteit met alle moderne browsers.',
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: 'nl', 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 = 'konwerter-gif-na-webp';
6
+ const title = 'Konwertuj GIF na statyczne WebP Online';
7
+ const description =
8
+ 'Konwertuj animowane pliki GIF na statyczne WebP. Zachowuje przezroczystość. Bez serwera. Przetwarzane lokalnie w przeglądarce. Za darmo.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Przeciągnij pliki GIF...',
12
+ convertText: 'Aby natychmiast przekonwertować je na WebP',
13
+ selectFiles: 'Wybierz pliki',
14
+ processedFiles: 'Przetworzone pliki',
15
+ downloadAll: 'Pobierz wszystko (.zip)',
16
+ pending: 'Oczekiwanie',
17
+ bibliographyTitle: 'Bibliografia',
18
+ faqTitle: 'Często Zadawane Pytania',
19
+ };
20
+
21
+ const faq: GifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Dlaczego warto zamrozić animowany plik do nowoczesnego statycznego formatu WebP?',
24
+ answer:
25
+ 'WebP to standard kompresji od Google; jest niezwykle lekki i czysto zachowuje przezroczystość. Przejście z GIF na WebP eliminuje ciężką animację i zapewnia ogromny wzrost szybkości ładowania stron.',
26
+ },
27
+ {
28
+ question: 'Czy oryginalny awatar pozostanie przezroczysty?',
29
+ answer:
30
+ 'Tak, w przeciwieństwie do JPEG, kontener WebP respektuje złożony kanał alfa. Wszystkie sylwetki pozostaną idealne, tak jak w oryginale.',
31
+ },
32
+ {
33
+ question: 'Gdzie przesyłane są pliki?',
34
+ answer:
35
+ 'Pliki nie są nigdzie przesyłane. Przetwarzanie odbywa się w całości przez JavaScript przeglądarki na Twoim komputerze, bez wysyłania danych na serwer.',
36
+ },
37
+ ];
38
+
39
+ const howTo: GifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Uruchom animowaną lawinę',
42
+ text: 'Przenieś i upuść dziesiątki memów do wyznaczonej strefy bez połączenia z serwerem.',
43
+ },
44
+ {
45
+ name: 'Świadectwo wielkiej niewidzialnej zmiany',
46
+ text: 'Obserwuj, jak wskaźnik postępu zmienia się co milisekundę, podczas gdy lokalny dekoder canvas generuje wynik.',
47
+ },
48
+ {
49
+ name: 'Zapisz swój czysty arsenał wyników',
50
+ text: 'Pobierz wyekstrahowane pliki pojedynczo lub naciśnij Pobierz Zip, aby spakować wszystko.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: GifAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Specyfikacja GIF89a',
57
+ url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
58
+ },
59
+ {
60
+ name: 'Dokumentacja Google WebP',
61
+ url: 'https://developers.google.com/speed/webp',
62
+ },
63
+ ];
64
+
65
+ const seo: GifAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Konwerter GIF na WebP: Nowoczesny zamiennik dla ciężkich animacji',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Animowane pliki GIF to dinozaury współczesnego internetu: zużywają nieproporcjonalnie dużą szerokość pasma, pogarszają wynik PageSpeed każdej strony i odpowiadają za znaczny procent całkowitej wagi tysięcy witryn. Typowy animowany GIF o rozmiarze 5 MB może stać się animacją WebP o wadze poniżej 1 MB przy zachowaniu tej samej jakości wizualnej. WebP to nowoczesny następca, którego Google zaprojektowało specjalnie w celu zastąpienia formatu GIF w sieci.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'GIF vs WebP: przepaść między przeszłością a teraźniejszością sieci',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'GIF to format z 1987 roku, który pierwotnie nie był projektowany z myślą o animacjach — ta funkcja pojawiła się później jako rozwiązanie tymczasowe. Paleta 256 kolorów, niewydajna kompresja i brak obsługi dźwięku sprawiają, że jest to format przestarzały. WebP, opracowany przez Google w 2010 roku, oferuje doskonałą kompresję zarówno stratną, jak i bezstratną, natywną obsługę animacji oraz pełny kanał alfa.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Dla web developera zastąpienie plików GIF formatem WebP na stronach może oznaczać poprawę wyniku Google PageSpeed o 10 do 30 punktów. Mniejsza waga strony oznacza lepsze wskaźniki Core Web Vitals, wyższe pozycje w SEO i niższe koszty transferu na serwerach. To nie tylko poprawa estetyczna — to decyzja dotycząca architektury technicznej.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Porównanie architektury: Lokalnie vs Chmura',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Konwertery w chmurze',
98
+ description: 'Platformy, które przetwarzają pliki GIF na zdalnych serwerach.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Twoje animacje przesyłane są przez internet na serwery osób trzecich',
103
+ 'Czas oczekiwania wynikający z opóźnień sieci przy wysyłaniu i pobieraniu',
104
+ 'Limity rozmiaru (duże pliki GIF są często odrzucane)',
105
+ 'Ryzyko przechowywania i analizy plików przez serwis',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Nasza lokalna architektura',
110
+ description: 'Bezpośrednie przetwarzanie na Twoim sprzęcie przy użyciu technologii Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Plik GIF nigdy nie opuszcza Twojego urządzenia',
115
+ 'Natychmiastowa konwersja bez oczekiwania na sieć',
116
+ 'Brak limitów rozmiaru: przetwarzaj pliki GIF o dowolnej wadze',
117
+ 'Pełna prywatność: 0 bajtów wysyłanych na zewnątrz',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Jak działa lokalna konwersja GIF na WebP',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Lokalna konwersja wykorzystuje API HTML5 Canvas. Plik GIF jest ładowany jako natywny element Image przeglądarki. Poprzez narysowanie go na płótnie (canvas), silnik graficzny przechwytuje pierwszą klatkę animacji wraz ze wszystkimi informacjami o przezroczystości. Metoda <code>toDataURL(\'image/webp\')</code> eksportuje klatkę jako WebP bezpośrednio w pamięci RAM.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'WebP obsługuje pełny kanał alfa, więc przezroczystości GIF są zachowywane w wynikowym pliku WebP bez konieczności dodawania tła. Algorytmy kompresji WebP są znacznie wydajniejsze niż te w GIF czy PNG, co tłumaczy drastyczną redukcję rozmiaru pliku końcowego.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Gwarantowana poprawa PageSpeed',
138
+ html: 'Animowany GIF o rozmiarze 5 MB może stać się plikiem WebP o wadze poniżej 1 MB. Jeśli masz pliki GIF na swoich stronach, zastąpienie ich formatem WebP może natychmiast poprawić wskaźniki Largest Contentful Paint (LCP) i Total Blocking Time (TBT), co bezpośrednio wpływa na rankingi SEO.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Przypadki użycia i kompatybilność wynikowego formatu WebP',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Zastępowanie plików GIF na stronach internetowych w celu poprawy wyników PageSpeed.',
150
+ 'Zoptymalizowane awatary i naklejki dla Discorda, Slacka i nowoczesnych platform.',
151
+ 'Bannery i materiały wizualne do cyfrowych kampanii marketingowych.',
152
+ 'Animacje w progresywnych aplikacjach internetowych (PWA).',
153
+ 'Kompatybilność z Chrome, Edge, Firefox, Safari 14+ i wszystkimi nowoczesnymi przeglądarkami.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Podsumowanie: przenieś swoje pliki GIF w XXI wiek',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Każdy GIF na Twojej stronie to niewykorzystana okazja do optymalizacji. Nasze narzędzie konwertuje pliki GIF na WebP natychmiast, prywatnie i bez limitów, bezpośrednio w przeglądarce. Wynik: pliki do 5 razy mniejsze, idealna przezroczystość i kompatybilność ze wszystkimi nowoczesnymi przeglądarkami.',
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: 'pl', faq, howTo }),
178
+ };