@jjlmoya/utils-converters 1.6.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 (346) hide show
  1. package/package.json +60 -59
  2. package/src/shared/ImageConverter.astro +2 -1
  3. package/src/shared/logic/schemas.ts +57 -0
  4. package/src/tests/faq_count.test.ts +13 -4
  5. package/src/tests/i18n_coverage.test.ts +36 -0
  6. package/src/tests/locale_completeness.test.ts +42 -0
  7. package/src/tests/no_h1_in_components.test.ts +48 -0
  8. package/src/tests/schemas_fulfillment.test.ts +23 -0
  9. package/src/tests/seo_length.test.ts +1 -1
  10. package/src/tests/title_quality.test.ts +55 -0
  11. package/src/tool/avifAJpg/i18n/de.ts +178 -0
  12. package/src/tool/avifAJpg/i18n/en.ts +2 -12
  13. package/src/tool/avifAJpg/i18n/es.ts +2 -12
  14. package/src/tool/avifAJpg/i18n/fr.ts +2 -12
  15. package/src/tool/avifAJpg/i18n/id.ts +178 -0
  16. package/src/tool/avifAJpg/i18n/it.ts +178 -0
  17. package/src/tool/avifAJpg/i18n/ja.ts +178 -0
  18. package/src/tool/avifAJpg/i18n/ko.ts +178 -0
  19. package/src/tool/avifAJpg/i18n/nl.ts +178 -0
  20. package/src/tool/avifAJpg/i18n/pl.ts +178 -0
  21. package/src/tool/avifAJpg/i18n/pt.ts +178 -0
  22. package/src/tool/avifAJpg/i18n/ru.ts +178 -0
  23. package/src/tool/avifAJpg/i18n/sv.ts +178 -0
  24. package/src/tool/avifAJpg/i18n/tr.ts +178 -0
  25. package/src/tool/avifAJpg/i18n/zh.ts +178 -0
  26. package/src/tool/avifAJpg/index.ts +13 -1
  27. package/src/tool/avifAPng/i18n/de.ts +178 -0
  28. package/src/tool/avifAPng/i18n/en.ts +2 -12
  29. package/src/tool/avifAPng/i18n/es.ts +2 -12
  30. package/src/tool/avifAPng/i18n/fr.ts +2 -12
  31. package/src/tool/avifAPng/i18n/id.ts +178 -0
  32. package/src/tool/avifAPng/i18n/it.ts +178 -0
  33. package/src/tool/avifAPng/i18n/ja.ts +178 -0
  34. package/src/tool/avifAPng/i18n/ko.ts +178 -0
  35. package/src/tool/avifAPng/i18n/nl.ts +178 -0
  36. package/src/tool/avifAPng/i18n/pl.ts +178 -0
  37. package/src/tool/avifAPng/i18n/pt.ts +178 -0
  38. package/src/tool/avifAPng/i18n/ru.ts +178 -0
  39. package/src/tool/avifAPng/i18n/sv.ts +178 -0
  40. package/src/tool/avifAPng/i18n/tr.ts +178 -0
  41. package/src/tool/avifAPng/i18n/zh.ts +178 -0
  42. package/src/tool/avifAPng/index.ts +13 -1
  43. package/src/tool/avifAWebp/i18n/de.ts +178 -0
  44. package/src/tool/avifAWebp/i18n/en.ts +2 -12
  45. package/src/tool/avifAWebp/i18n/es.ts +2 -12
  46. package/src/tool/avifAWebp/i18n/fr.ts +2 -12
  47. package/src/tool/avifAWebp/i18n/id.ts +178 -0
  48. package/src/tool/avifAWebp/i18n/it.ts +178 -0
  49. package/src/tool/avifAWebp/i18n/ja.ts +178 -0
  50. package/src/tool/avifAWebp/i18n/ko.ts +178 -0
  51. package/src/tool/avifAWebp/i18n/nl.ts +178 -0
  52. package/src/tool/avifAWebp/i18n/pl.ts +178 -0
  53. package/src/tool/avifAWebp/i18n/pt.ts +178 -0
  54. package/src/tool/avifAWebp/i18n/ru.ts +178 -0
  55. package/src/tool/avifAWebp/i18n/sv.ts +178 -0
  56. package/src/tool/avifAWebp/i18n/tr.ts +178 -0
  57. package/src/tool/avifAWebp/i18n/zh.ts +178 -0
  58. package/src/tool/avifAWebp/index.ts +13 -1
  59. package/src/tool/bmpAJpg/i18n/de.ts +178 -0
  60. package/src/tool/bmpAJpg/i18n/en.ts +2 -12
  61. package/src/tool/bmpAJpg/i18n/es.ts +2 -12
  62. package/src/tool/bmpAJpg/i18n/fr.ts +2 -12
  63. package/src/tool/bmpAJpg/i18n/id.ts +178 -0
  64. package/src/tool/bmpAJpg/i18n/it.ts +178 -0
  65. package/src/tool/bmpAJpg/i18n/ja.ts +178 -0
  66. package/src/tool/bmpAJpg/i18n/ko.ts +178 -0
  67. package/src/tool/bmpAJpg/i18n/nl.ts +178 -0
  68. package/src/tool/bmpAJpg/i18n/pl.ts +178 -0
  69. package/src/tool/bmpAJpg/i18n/pt.ts +178 -0
  70. package/src/tool/bmpAJpg/i18n/ru.ts +178 -0
  71. package/src/tool/bmpAJpg/i18n/sv.ts +178 -0
  72. package/src/tool/bmpAJpg/i18n/tr.ts +178 -0
  73. package/src/tool/bmpAJpg/i18n/zh.ts +178 -0
  74. package/src/tool/bmpAJpg/index.ts +13 -1
  75. package/src/tool/bmpAPng/i18n/de.ts +177 -0
  76. package/src/tool/bmpAPng/i18n/en.ts +2 -12
  77. package/src/tool/bmpAPng/i18n/es.ts +2 -12
  78. package/src/tool/bmpAPng/i18n/fr.ts +2 -12
  79. package/src/tool/bmpAPng/i18n/id.ts +177 -0
  80. package/src/tool/bmpAPng/i18n/it.ts +177 -0
  81. package/src/tool/bmpAPng/i18n/ja.ts +177 -0
  82. package/src/tool/bmpAPng/i18n/ko.ts +177 -0
  83. package/src/tool/bmpAPng/i18n/nl.ts +177 -0
  84. package/src/tool/bmpAPng/i18n/pl.ts +177 -0
  85. package/src/tool/bmpAPng/i18n/pt.ts +177 -0
  86. package/src/tool/bmpAPng/i18n/ru.ts +177 -0
  87. package/src/tool/bmpAPng/i18n/sv.ts +177 -0
  88. package/src/tool/bmpAPng/i18n/tr.ts +177 -0
  89. package/src/tool/bmpAPng/i18n/zh.ts +177 -0
  90. package/src/tool/bmpAPng/index.ts +13 -1
  91. package/src/tool/bmpAWebp/i18n/de.ts +178 -0
  92. package/src/tool/bmpAWebp/i18n/en.ts +2 -12
  93. package/src/tool/bmpAWebp/i18n/es.ts +2 -12
  94. package/src/tool/bmpAWebp/i18n/fr.ts +2 -12
  95. package/src/tool/bmpAWebp/i18n/id.ts +178 -0
  96. package/src/tool/bmpAWebp/i18n/it.ts +178 -0
  97. package/src/tool/bmpAWebp/i18n/ja.ts +178 -0
  98. package/src/tool/bmpAWebp/i18n/ko.ts +178 -0
  99. package/src/tool/bmpAWebp/i18n/nl.ts +178 -0
  100. package/src/tool/bmpAWebp/i18n/pl.ts +178 -0
  101. package/src/tool/bmpAWebp/i18n/pt.ts +178 -0
  102. package/src/tool/bmpAWebp/i18n/ru.ts +178 -0
  103. package/src/tool/bmpAWebp/i18n/sv.ts +178 -0
  104. package/src/tool/bmpAWebp/i18n/tr.ts +178 -0
  105. package/src/tool/bmpAWebp/i18n/zh.ts +178 -0
  106. package/src/tool/bmpAWebp/index.ts +13 -1
  107. package/src/tool/gifAJpg/i18n/de.ts +178 -0
  108. package/src/tool/gifAJpg/i18n/en.ts +2 -12
  109. package/src/tool/gifAJpg/i18n/es.ts +2 -12
  110. package/src/tool/gifAJpg/i18n/fr.ts +2 -12
  111. package/src/tool/gifAJpg/i18n/id.ts +178 -0
  112. package/src/tool/gifAJpg/i18n/it.ts +178 -0
  113. package/src/tool/gifAJpg/i18n/ja.ts +178 -0
  114. package/src/tool/gifAJpg/i18n/ko.ts +178 -0
  115. package/src/tool/gifAJpg/i18n/nl.ts +178 -0
  116. package/src/tool/gifAJpg/i18n/pl.ts +178 -0
  117. package/src/tool/gifAJpg/i18n/pt.ts +178 -0
  118. package/src/tool/gifAJpg/i18n/ru.ts +178 -0
  119. package/src/tool/gifAJpg/i18n/sv.ts +178 -0
  120. package/src/tool/gifAJpg/i18n/tr.ts +178 -0
  121. package/src/tool/gifAJpg/i18n/zh.ts +178 -0
  122. package/src/tool/gifAJpg/index.ts +13 -1
  123. package/src/tool/gifAPng/i18n/de.ts +178 -0
  124. package/src/tool/gifAPng/i18n/en.ts +2 -12
  125. package/src/tool/gifAPng/i18n/es.ts +2 -12
  126. package/src/tool/gifAPng/i18n/fr.ts +2 -12
  127. package/src/tool/gifAPng/i18n/id.ts +178 -0
  128. package/src/tool/gifAPng/i18n/it.ts +178 -0
  129. package/src/tool/gifAPng/i18n/ja.ts +178 -0
  130. package/src/tool/gifAPng/i18n/ko.ts +178 -0
  131. package/src/tool/gifAPng/i18n/nl.ts +178 -0
  132. package/src/tool/gifAPng/i18n/pl.ts +178 -0
  133. package/src/tool/gifAPng/i18n/pt.ts +178 -0
  134. package/src/tool/gifAPng/i18n/ru.ts +178 -0
  135. package/src/tool/gifAPng/i18n/sv.ts +178 -0
  136. package/src/tool/gifAPng/i18n/tr.ts +178 -0
  137. package/src/tool/gifAPng/i18n/zh.ts +178 -0
  138. package/src/tool/gifAPng/index.ts +12 -0
  139. package/src/tool/gifAWebp/i18n/de.ts +178 -0
  140. package/src/tool/gifAWebp/i18n/en.ts +2 -12
  141. package/src/tool/gifAWebp/i18n/es.ts +2 -12
  142. package/src/tool/gifAWebp/i18n/fr.ts +2 -12
  143. package/src/tool/gifAWebp/i18n/id.ts +178 -0
  144. package/src/tool/gifAWebp/i18n/it.ts +178 -0
  145. package/src/tool/gifAWebp/i18n/ja.ts +178 -0
  146. package/src/tool/gifAWebp/i18n/ko.ts +178 -0
  147. package/src/tool/gifAWebp/i18n/nl.ts +178 -0
  148. package/src/tool/gifAWebp/i18n/pl.ts +178 -0
  149. package/src/tool/gifAWebp/i18n/pt.ts +178 -0
  150. package/src/tool/gifAWebp/i18n/ru.ts +178 -0
  151. package/src/tool/gifAWebp/i18n/sv.ts +178 -0
  152. package/src/tool/gifAWebp/i18n/tr.ts +178 -0
  153. package/src/tool/gifAWebp/i18n/zh.ts +178 -0
  154. package/src/tool/gifAWebp/index.ts +12 -0
  155. package/src/tool/imagenBase64/i18n/de.ts +168 -0
  156. package/src/tool/imagenBase64/i18n/en.ts +2 -12
  157. package/src/tool/imagenBase64/i18n/es.ts +2 -12
  158. package/src/tool/imagenBase64/i18n/fr.ts +2 -12
  159. package/src/tool/imagenBase64/i18n/id.ts +168 -0
  160. package/src/tool/imagenBase64/i18n/it.ts +168 -0
  161. package/src/tool/imagenBase64/i18n/ja.ts +168 -0
  162. package/src/tool/imagenBase64/i18n/ko.ts +168 -0
  163. package/src/tool/imagenBase64/i18n/nl.ts +168 -0
  164. package/src/tool/imagenBase64/i18n/pl.ts +168 -0
  165. package/src/tool/imagenBase64/i18n/pt.ts +173 -0
  166. package/src/tool/imagenBase64/i18n/ru.ts +168 -0
  167. package/src/tool/imagenBase64/i18n/sv.ts +168 -0
  168. package/src/tool/imagenBase64/i18n/tr.ts +168 -0
  169. package/src/tool/imagenBase64/i18n/zh.ts +168 -0
  170. package/src/tool/imagenBase64/index.ts +12 -0
  171. package/src/tool/jpgAIco/i18n/de.ts +183 -0
  172. package/src/tool/jpgAIco/i18n/en.ts +8 -13
  173. package/src/tool/jpgAIco/i18n/es.ts +13 -18
  174. package/src/tool/jpgAIco/i18n/fr.ts +9 -14
  175. package/src/tool/jpgAIco/i18n/id.ts +183 -0
  176. package/src/tool/jpgAIco/i18n/it.ts +183 -0
  177. package/src/tool/jpgAIco/i18n/ja.ts +183 -0
  178. package/src/tool/jpgAIco/i18n/ko.ts +183 -0
  179. package/src/tool/jpgAIco/i18n/nl.ts +183 -0
  180. package/src/tool/jpgAIco/i18n/pl.ts +183 -0
  181. package/src/tool/jpgAIco/i18n/pt.ts +183 -0
  182. package/src/tool/jpgAIco/i18n/ru.ts +183 -0
  183. package/src/tool/jpgAIco/i18n/sv.ts +183 -0
  184. package/src/tool/jpgAIco/i18n/tr.ts +183 -0
  185. package/src/tool/jpgAIco/i18n/zh.ts +183 -0
  186. package/src/tool/jpgAIco/index.ts +12 -0
  187. package/src/tool/jpgAPng/i18n/de.ts +178 -0
  188. package/src/tool/jpgAPng/i18n/en.ts +2 -12
  189. package/src/tool/jpgAPng/i18n/es.ts +2 -12
  190. package/src/tool/jpgAPng/i18n/fr.ts +2 -12
  191. package/src/tool/jpgAPng/i18n/id.ts +178 -0
  192. package/src/tool/jpgAPng/i18n/it.ts +178 -0
  193. package/src/tool/jpgAPng/i18n/ja.ts +178 -0
  194. package/src/tool/jpgAPng/i18n/ko.ts +178 -0
  195. package/src/tool/jpgAPng/i18n/nl.ts +178 -0
  196. package/src/tool/jpgAPng/i18n/pl.ts +178 -0
  197. package/src/tool/jpgAPng/i18n/pt.ts +178 -0
  198. package/src/tool/jpgAPng/i18n/ru.ts +178 -0
  199. package/src/tool/jpgAPng/i18n/sv.ts +178 -0
  200. package/src/tool/jpgAPng/i18n/tr.ts +178 -0
  201. package/src/tool/jpgAPng/i18n/zh.ts +178 -0
  202. package/src/tool/jpgAPng/index.ts +13 -1
  203. package/src/tool/jpgAWebp/i18n/de.ts +178 -0
  204. package/src/tool/jpgAWebp/i18n/en.ts +2 -12
  205. package/src/tool/jpgAWebp/i18n/es.ts +2 -12
  206. package/src/tool/jpgAWebp/i18n/fr.ts +2 -12
  207. package/src/tool/jpgAWebp/i18n/id.ts +178 -0
  208. package/src/tool/jpgAWebp/i18n/it.ts +178 -0
  209. package/src/tool/jpgAWebp/i18n/ja.ts +178 -0
  210. package/src/tool/jpgAWebp/i18n/ko.ts +178 -0
  211. package/src/tool/jpgAWebp/i18n/nl.ts +178 -0
  212. package/src/tool/jpgAWebp/i18n/pl.ts +178 -0
  213. package/src/tool/jpgAWebp/i18n/pt.ts +178 -0
  214. package/src/tool/jpgAWebp/i18n/ru.ts +178 -0
  215. package/src/tool/jpgAWebp/i18n/sv.ts +178 -0
  216. package/src/tool/jpgAWebp/i18n/tr.ts +178 -0
  217. package/src/tool/jpgAWebp/i18n/zh.ts +178 -0
  218. package/src/tool/jpgAWebp/index.ts +12 -0
  219. package/src/tool/pngAIco/i18n/de.ts +183 -0
  220. package/src/tool/pngAIco/i18n/en.ts +8 -13
  221. package/src/tool/pngAIco/i18n/es.ts +19 -24
  222. package/src/tool/pngAIco/i18n/fr.ts +20 -25
  223. package/src/tool/pngAIco/i18n/id.ts +183 -0
  224. package/src/tool/pngAIco/i18n/it.ts +183 -0
  225. package/src/tool/pngAIco/i18n/ja.ts +183 -0
  226. package/src/tool/pngAIco/i18n/ko.ts +183 -0
  227. package/src/tool/pngAIco/i18n/nl.ts +183 -0
  228. package/src/tool/pngAIco/i18n/pl.ts +183 -0
  229. package/src/tool/pngAIco/i18n/pt.ts +183 -0
  230. package/src/tool/pngAIco/i18n/ru.ts +183 -0
  231. package/src/tool/pngAIco/i18n/sv.ts +183 -0
  232. package/src/tool/pngAIco/i18n/tr.ts +183 -0
  233. package/src/tool/pngAIco/i18n/zh.ts +183 -0
  234. package/src/tool/pngAIco/index.ts +12 -0
  235. package/src/tool/pngAJpg/i18n/de.ts +191 -0
  236. package/src/tool/pngAJpg/i18n/en.ts +2 -12
  237. package/src/tool/pngAJpg/i18n/es.ts +2 -12
  238. package/src/tool/pngAJpg/i18n/fr.ts +2 -12
  239. package/src/tool/pngAJpg/i18n/id.ts +191 -0
  240. package/src/tool/pngAJpg/i18n/it.ts +191 -0
  241. package/src/tool/pngAJpg/i18n/ja.ts +191 -0
  242. package/src/tool/pngAJpg/i18n/ko.ts +191 -0
  243. package/src/tool/pngAJpg/i18n/nl.ts +191 -0
  244. package/src/tool/pngAJpg/i18n/pl.ts +191 -0
  245. package/src/tool/pngAJpg/i18n/pt.ts +191 -0
  246. package/src/tool/pngAJpg/i18n/ru.ts +191 -0
  247. package/src/tool/pngAJpg/i18n/sv.ts +191 -0
  248. package/src/tool/pngAJpg/i18n/tr.ts +191 -0
  249. package/src/tool/pngAJpg/i18n/zh.ts +191 -0
  250. package/src/tool/pngAJpg/index.ts +13 -1
  251. package/src/tool/pngAWebp/i18n/de.ts +182 -0
  252. package/src/tool/pngAWebp/i18n/en.ts +2 -12
  253. package/src/tool/pngAWebp/i18n/es.ts +2 -12
  254. package/src/tool/pngAWebp/i18n/fr.ts +2 -12
  255. package/src/tool/pngAWebp/i18n/id.ts +182 -0
  256. package/src/tool/pngAWebp/i18n/it.ts +182 -0
  257. package/src/tool/pngAWebp/i18n/ja.ts +182 -0
  258. package/src/tool/pngAWebp/i18n/ko.ts +182 -0
  259. package/src/tool/pngAWebp/i18n/nl.ts +182 -0
  260. package/src/tool/pngAWebp/i18n/pl.ts +182 -0
  261. package/src/tool/pngAWebp/i18n/pt.ts +182 -0
  262. package/src/tool/pngAWebp/i18n/ru.ts +182 -0
  263. package/src/tool/pngAWebp/i18n/sv.ts +182 -0
  264. package/src/tool/pngAWebp/i18n/tr.ts +182 -0
  265. package/src/tool/pngAWebp/i18n/zh.ts +182 -0
  266. package/src/tool/pngAWebp/index.ts +12 -0
  267. package/src/tool/svgAJpg/i18n/de.ts +178 -0
  268. package/src/tool/svgAJpg/i18n/en.ts +8 -13
  269. package/src/tool/svgAJpg/i18n/es.ts +8 -13
  270. package/src/tool/svgAJpg/i18n/fr.ts +2 -12
  271. package/src/tool/svgAJpg/i18n/id.ts +178 -0
  272. package/src/tool/svgAJpg/i18n/it.ts +178 -0
  273. package/src/tool/svgAJpg/i18n/ja.ts +178 -0
  274. package/src/tool/svgAJpg/i18n/ko.ts +178 -0
  275. package/src/tool/svgAJpg/i18n/nl.ts +178 -0
  276. package/src/tool/svgAJpg/i18n/pl.ts +178 -0
  277. package/src/tool/svgAJpg/i18n/pt.ts +178 -0
  278. package/src/tool/svgAJpg/i18n/ru.ts +178 -0
  279. package/src/tool/svgAJpg/i18n/sv.ts +178 -0
  280. package/src/tool/svgAJpg/i18n/tr.ts +178 -0
  281. package/src/tool/svgAJpg/i18n/zh.ts +178 -0
  282. package/src/tool/svgAJpg/index.ts +12 -0
  283. package/src/tool/svgAPng/i18n/de.ts +178 -0
  284. package/src/tool/svgAPng/i18n/en.ts +8 -13
  285. package/src/tool/svgAPng/i18n/es.ts +31 -36
  286. package/src/tool/svgAPng/i18n/fr.ts +2 -12
  287. package/src/tool/svgAPng/i18n/id.ts +178 -0
  288. package/src/tool/svgAPng/i18n/it.ts +178 -0
  289. package/src/tool/svgAPng/i18n/ja.ts +178 -0
  290. package/src/tool/svgAPng/i18n/ko.ts +178 -0
  291. package/src/tool/svgAPng/i18n/nl.ts +178 -0
  292. package/src/tool/svgAPng/i18n/pl.ts +178 -0
  293. package/src/tool/svgAPng/i18n/pt.ts +178 -0
  294. package/src/tool/svgAPng/i18n/ru.ts +178 -0
  295. package/src/tool/svgAPng/i18n/sv.ts +178 -0
  296. package/src/tool/svgAPng/i18n/tr.ts +178 -0
  297. package/src/tool/svgAPng/i18n/zh.ts +178 -0
  298. package/src/tool/svgAPng/index.ts +12 -0
  299. package/src/tool/webpAIco/i18n/de.ts +183 -0
  300. package/src/tool/webpAIco/i18n/en.ts +8 -13
  301. package/src/tool/webpAIco/i18n/es.ts +9 -14
  302. package/src/tool/webpAIco/i18n/fr.ts +11 -16
  303. package/src/tool/webpAIco/i18n/id.ts +183 -0
  304. package/src/tool/webpAIco/i18n/it.ts +183 -0
  305. package/src/tool/webpAIco/i18n/ja.ts +183 -0
  306. package/src/tool/webpAIco/i18n/ko.ts +183 -0
  307. package/src/tool/webpAIco/i18n/nl.ts +183 -0
  308. package/src/tool/webpAIco/i18n/pl.ts +183 -0
  309. package/src/tool/webpAIco/i18n/pt.ts +183 -0
  310. package/src/tool/webpAIco/i18n/ru.ts +183 -0
  311. package/src/tool/webpAIco/i18n/sv.ts +183 -0
  312. package/src/tool/webpAIco/i18n/tr.ts +183 -0
  313. package/src/tool/webpAIco/i18n/zh.ts +183 -0
  314. package/src/tool/webpAIco/index.ts +12 -0
  315. package/src/tool/webpAJpg/i18n/de.ts +187 -0
  316. package/src/tool/webpAJpg/i18n/en.ts +9 -13
  317. package/src/tool/webpAJpg/i18n/es.ts +37 -42
  318. package/src/tool/webpAJpg/i18n/fr.ts +35 -40
  319. package/src/tool/webpAJpg/i18n/id.ts +182 -0
  320. package/src/tool/webpAJpg/i18n/it.ts +182 -0
  321. package/src/tool/webpAJpg/i18n/ja.ts +182 -0
  322. package/src/tool/webpAJpg/i18n/ko.ts +182 -0
  323. package/src/tool/webpAJpg/i18n/nl.ts +182 -0
  324. package/src/tool/webpAJpg/i18n/pl.ts +182 -0
  325. package/src/tool/webpAJpg/i18n/pt.ts +182 -0
  326. package/src/tool/webpAJpg/i18n/ru.ts +182 -0
  327. package/src/tool/webpAJpg/i18n/sv.ts +182 -0
  328. package/src/tool/webpAJpg/i18n/tr.ts +182 -0
  329. package/src/tool/webpAJpg/i18n/zh.ts +182 -0
  330. package/src/tool/webpAJpg/index.ts +12 -0
  331. package/src/tool/webpAPng/i18n/de.ts +182 -0
  332. package/src/tool/webpAPng/i18n/en.ts +8 -13
  333. package/src/tool/webpAPng/i18n/es.ts +35 -40
  334. package/src/tool/webpAPng/i18n/fr.ts +2 -12
  335. package/src/tool/webpAPng/i18n/id.ts +182 -0
  336. package/src/tool/webpAPng/i18n/it.ts +182 -0
  337. package/src/tool/webpAPng/i18n/ja.ts +182 -0
  338. package/src/tool/webpAPng/i18n/ko.ts +182 -0
  339. package/src/tool/webpAPng/i18n/nl.ts +182 -0
  340. package/src/tool/webpAPng/i18n/pl.ts +182 -0
  341. package/src/tool/webpAPng/i18n/pt.ts +182 -0
  342. package/src/tool/webpAPng/i18n/ru.ts +182 -0
  343. package/src/tool/webpAPng/i18n/sv.ts +182 -0
  344. package/src/tool/webpAPng/i18n/tr.ts +182 -0
  345. package/src/tool/webpAPng/i18n/zh.ts +182 -0
  346. package/src/tool/webpAPng/index.ts +12 -0
@@ -0,0 +1,182 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'png-to-webp-converter';
6
+ const title = 'PNGをWebPにオンラインで無料で変換しましょう';
7
+ const description =
8
+ 'ブラウザでPNG画像をWebPに変換します。ファイルサイズを最大40%削減。透明度を維持。ファイルのアップロード不要。無料かつプライベート。';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'PNGファイルをドラッグ...',
12
+ convertText: '即座にWebPに変換します',
13
+ selectFiles: 'ファイルを選択',
14
+ processedFiles: '処理済みファイル',
15
+ downloadAll: 'すべてダウンロード (.zip)',
16
+ pending: '保留中',
17
+ bibliographyTitle: '参考文献',
18
+ faqTitle: 'よくある質問',
19
+ };
20
+
21
+ const faq: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'なぜPNGをWebPに変換する必要があるのですか?',
24
+ answer:
25
+ 'WebPは同じ品質でPNGよりも最大40%優れた圧縮を提供すると同時に、アルファ透明度もサポートしています。Google PageSpeed Insightsが推奨する形式です。',
26
+ },
27
+ {
28
+ question: '変換過程で透明度は失われますか?',
29
+ answer:
30
+ 'いいえ。WebPの技術的実装はアルファチャネルをサポートしています。元のPNGの透明度は、新しいWebPファイルでもそのまま維持されます。',
31
+ },
32
+ {
33
+ question: '画像はサーバーに送信されますか?',
34
+ answer:
35
+ 'いいえ。コードはユーザーのブラウザ(クライアント側)でのみ実行されます。変換された画像を当社が閲覧、記録、または保存することはありません。',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'PNGファイルを挿入',
42
+ text: '容量の大きいPNGファイルをアップロードエリアにドラッグ&ドロップするか、従来のインタラクティブなセレクターを使用してください。',
43
+ },
44
+ {
45
+ name: 'チャネル検出',
46
+ text: 'ローカルレンダリングエンジンがピクセル構成を検出し、最適化されたWebP形式でエクスポートします。',
47
+ },
48
+ {
49
+ name: '直接ダウンロード',
50
+ text: '高度に圧縮されたWebPファイルを個別にダウンロードするか、ZIPパッケージコンバーターを使用してまとめてダウンロードしてください。',
51
+ },
52
+ ];
53
+
54
+ const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Google: WebPの実装詳細',
57
+ url: 'https://developers.google.com/speed/webp/',
58
+ },
59
+ {
60
+ name: 'W3C: Core Web Vitalsガイダンス',
61
+ url: 'https://web.dev/vitals/',
62
+ },
63
+ {
64
+ name: 'Mozilla Docs: 画像形式',
65
+ url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
+ },
67
+ ];
68
+
69
+ const seo: PngAWebpLocaleContent['seo'] = [
70
+ {
71
+ type: 'title',
72
+ text: 'PNG to WebP 変換機:ウェブのための透明度と最新の圧縮技術',
73
+ level: 2,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: '<strong>PNG</strong>は、ロゴ、アイコン、UI要素、切り抜き背景の商品画像など、透明度が必要なウェブ画像の標準形式でした。問題はファイルサイズです。品質を保証する可逆圧縮は、ファイル容量を大幅に大きくします。Googleの <strong>WebP</strong> はこの矛盾を解決します。アルファチャネル(透明度)をサポートしながら、PNGよりもはるかに効率的に圧縮するため、ウェブサイトでPNGからWebPに切り替えることは、視覚的な品質を犠牲にすることなく適用できる完璧な最適化です。',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNGとWebPの使い分け',
82
+ level: 3,
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'PhotoshopやFigmaなどのデザインツール、印刷ワークフロー、古いデスクトップアプリケーション、またはWebPサポートが保証されていない環境など、互換性が重要な場合には依然として <strong>PNG</strong> が適切な形式です。また、可逆圧縮によってすべてのピクセルが保持されるため、編集工程で作業レイヤーを保存するのにも理想的な形式です。ただし、ファイル容量がWebPの3〜8倍になる可能性があります。',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '<strong>WebP</strong>は、あらゆるモダンなウェブコンテンツにおいてPNGの自然な後継です。Chrome、Firefox、Safari、およびEdgeはすべてこれをネイティブにサポートしています。可逆WebP画像は、同等のPNGより26%小さく、非可逆モードでは視覚的にほとんど区別がつかない品質を維持しながら最大40%小さくなります。そしてウェブデザインにとって重要なのは、 <strong>WebPがPNGと全く同様にアルファ透明度を保持</strong> し、視覚的な妥協がないことです。',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: '比較:ローカル変換 vs クラウド変換',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: 'クラウド変換器',
102
+ description: 'リモートサーバーにファイルをアップロードするツールです。',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ 'アップロードおよびダウンロード時にネットワーク遅延が発生',
107
+ 'ロゴや画像がサードパーティのサーバーに保存される',
108
+ 'ファイルサイズ制限や1日の変換回数制限がある',
109
+ '強制的な広告やサードパーティのトラッカーが含まれる',
110
+ ],
111
+ },
112
+ {
113
+ title: 'ローカルアーキテクチャ',
114
+ description: 'Vanilla JS技術を使用し、ユーザーのハードウェア上で直接処理します。',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ 'ネットワーク遅延のない即座の処理速度',
119
+ '完全なプライバシー — 外部送信データ0バイト',
120
+ '容量制限やファイル数の制限なし',
121
+ '広告や追跡のないクリーンなインターフェース',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: '技術的な仕組み',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'PNGファイルがローカルで読み込まれ、メモリ上の <strong>HTML5 Canvas</strong> にデコードされます。Canvas APIは元のPNGのアルファチャネルを保持し、すべての透明および半透明のピクセルがRGBAピクセルバッファ内にそのまま維持されます。次に、 <code>toDataURL(\'image/webp\')</code> を呼び出してキャンバスをエクスポートしますが、この際にブラウザのWebPコーデック(Googleのlibwebpベース)が適用され、透明度データを変更することなく、より圧縮されたファイルを生成します。',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'WebPは2つの圧縮モードを使用します。すべてのピクセルがオリジナルと正確に一致する必要がある画像のための可逆モードと、小さな差異が目立たない写真や要素のための非可逆モードです。可逆モードはPNGより26%小さいファイルを生成し、非可逆モードでは優れた視覚品質を維持しながらPNG比で最大40%の容量削減を達成できます。',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: 'ヒント:ウェブではWebPがPNGとJPGの両方を凌駕します',
142
+ html: '可逆モードのWebPはPNGより小さいです。非可逆モードのWebPはJPGより小さいです。これにより、WebPはウェブ環境において <strong>両方の形式を代替する唯一の形式</strong> となりました。アップロードする前に透明PNGをWebPに変換してください。Google PageSpeed Insightsはこれを検出し、「次世代フォーマットでの画像の配信」の監査で高い評価を与えます。',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: '活用事例と互換性',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ 'ウェブサイトやアプリ用の透明背景のロゴやアイコン。',
154
+ 'ECサイトにおける切り抜き背景の商品画像。',
155
+ 'アルファ透明度を持つCSSスプライトやUI要素。',
156
+ 'ランディングページ用のラスタライズされたイラストやベクターグラフィックス。',
157
+ 'ブログやニュースポータルの透明背景の記事サムネイル。',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: '結論',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'paragraph',
167
+ html: 'PNGからWebPへの移行は、現在ウェブにおいて利用可能な最も包括的な画像最適化です。視覚的なデザインを変更することなく、ファイル容量を削減し、透明度を維持し、Core Web Vitalsの指標を改善できます。このツールはブラウザで画像を処理し、外部サーバーへ送信しないため、即座に、無料で、かつ完全にプライベートに行えます。',
168
+ },
169
+ ];
170
+
171
+
172
+ export const content: PngAWebpLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: generateSchemas({ title, description, inLanguage: 'ja', faq, howTo }),
182
+ };
@@ -0,0 +1,182 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'png-to-webp-converter';
6
+ const title = 'PNG를 WebP로 온라인에서 무료로 변환하세요';
7
+ const description =
8
+ '브라우저에서 PNG 이미지를 WebP로 변환하세요. 파일 크기 최대 40% 감소. 투명도 유지. 파일 업로드 없음. 무료 및 개인 정보 보호.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'PNG 파일을 드래그하세요...',
12
+ convertText: '즉시 WebP로 변환하려면',
13
+ selectFiles: '파일 선택',
14
+ processedFiles: '처리된 파일',
15
+ downloadAll: '모두 다운로드 (.zip)',
16
+ pending: '대기 중',
17
+ bibliographyTitle: '참고 문헌',
18
+ faqTitle: '자주 묻는 질문',
19
+ };
20
+
21
+ const faq: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: '왜 PNG를 WebP로 변환해야 하나요?',
24
+ answer:
25
+ 'WebP는 동일한 품질에서 PNG보다 최대 40% 더 나은 압축률을 제공하는 동시에 알파 투명도를 지원합니다. Google PageSpeed Insights에서 권장하는 형식입니다.',
26
+ },
27
+ {
28
+ question: '변환 과정에서 투명도가 손실되나요?',
29
+ answer:
30
+ '아니요. WebP의 기술적 구현은 알파 채널을 지원합니다. 원본 PNG의 투명도는 새 WebP 파일에서도 그대로 유지됩니다.',
31
+ },
32
+ {
33
+ question: '내 이미지가 서버로 전송되나요?',
34
+ answer:
35
+ '아니요. 코드는 사용자의 브라우저(클라이언트 측)에서만 실행됩니다. 당사는 사용자가 변환하는 이미지를 보거나 기록하거나 저장하지 않습니다.',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'PNG 파일 넣기',
42
+ text: '용량이 큰 PNG 파일을 업로드 영역에 드래그하여 떨어뜨리거나 기존의 인터랙티브 선택기를 사용하세요.',
43
+ },
44
+ {
45
+ name: '채널 감지',
46
+ text: '로컬 렌더링 엔진이 픽셀 구성을 감지하여 최적화된 WebP 형식으로 내보냅니다.',
47
+ },
48
+ {
49
+ name: '직접 다운로드',
50
+ text: '고도로 압축된 WebP 파일을 개별적으로 다운로드하거나 ZIP 패키지 변환기를 사용하여 한 번에 묶어서 다운로드하세요.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Google: WebP 구현 세부 정보',
57
+ url: 'https://developers.google.com/speed/webp/',
58
+ },
59
+ {
60
+ name: 'W3C: Core Web Vitals 가이드',
61
+ url: 'https://web.dev/vitals/',
62
+ },
63
+ {
64
+ name: 'Mozilla Docs: 이미지 형식',
65
+ url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
+ },
67
+ ];
68
+
69
+ const seo: PngAWebpLocaleContent['seo'] = [
70
+ {
71
+ type: 'title',
72
+ text: 'PNG to WebP 변환기: 웹을 위한 투명도 및 현대적인 압축 기술',
73
+ level: 2,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: '<strong>PNG</strong>는 로고, 아이콘, UI 요소, 누끼 컷 제품 이미지 등 투명도가 필요한 웹 이미지의 표준 형식이었습니다. 문제는 파일 크기입니다. 품질을 보장하는 무손실 압축은 파일 용량을 상당히 크게 만듭니다. Google의 <strong>WebP</strong>는 이 모순을 해결합니다. 알파 채널(투명도)을 지원하면서도 PNG보다 훨씬 더 효과적으로 압축하므로, 웹사이트에서 PNG를 WebP로 전환하는 것은 시각적 품질을 희생하지 않으면서도 완벽한 최적화를 이루는 방법입니다.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNG와 WebP 중 무엇을 선택해야 할까요?',
82
+ level: 3,
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Photoshop이나 Figma와 같은 디자인 도구, 인쇄 작업 흐름, 레거시 데스크톱 애플리케이션 또는 WebP 지원을 보장할 수 없는 환경과 같이 호환성이 중요한 경우에는 여전히 <strong>PNG</strong>가 적합한 형식입니다. 또한 무손실 압축이 모든 픽셀을 보존하므로 편집 파이프라인에서 작업 레이어를 저장하는 데 이상적인 형식입니다. 하지만 파일 용량이 WebP보다 3~8배 더 무거울 수 있다는 단점이 있습니다.',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '<strong>WebP</strong>는 모든 현대적인 웹 콘텐츠에서 PNG를 대체할 수 있는 자연스러운 선택입니다. Chrome, Firefox, Safari 및 Edge는 모두 이를 기본적으로 지원합니다. 무손실 WebP 이미지는 동일한 PNG보다 26% 더 작으며, 손실 모드에서는 시각적으로 거의 차이가 없으면서도 최대 40%까지 더 작아질 수 있습니다. 그리고 웹 디자인에서 중요한 점은 <strong>WebP가 PNG와 똑같이 알파 투명도를 보존</strong>하여 시각적 타협이 없다는 것입니다.',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: '비교: 로컬 변환 vs 클라우드 변환',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: '클라우드 변환기',
102
+ description: '원격 서버로 파일을 업로드하는 도구입니다.',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ '업로드 및 다운로드 시 네트워크 지연 발생',
107
+ '로고와 이미지가 타사 서버에 저장됨',
108
+ '파일 크기 제한 및 일일 변환 횟수 제한',
109
+ '강제적인 광고 및 타사 추적 프로그램 포함',
110
+ ],
111
+ },
112
+ {
113
+ title: '사용자 환경 로컬 아키텍처',
114
+ description: 'Vanilla JS 기술을 사용하여 하드웨어에서 직접 처리합니다.',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ '네트워크 지연 없는 즉각적인 속도',
119
+ '완벽한 개인 정보 보호 — 외부 전송 데이터 0바이트',
120
+ '용량 제한이나 파일 개수 제한 없음',
121
+ '광고나 추적이 없는 깨끗한 인터페이스',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: '기술적 작동 원리',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'PNG 파일이 로컬에서 로드되어 메모리상 <strong>HTML5 Canvas</strong>에 디코딩됩니다. Canvas API는 원본 PNG의 알파 채널을 보존하여 모든 투명 및 반투명 픽셀이 RGBA 픽셀 버퍼 내에 온전히 유지됩니다. 그런 다음 <code>toDataURL(\'image/webp\')</code>을 호출하여 캔버스를 내보내는데, 이때 브라우저의 WebP 코덱(Google의 libwebp 기반)이 적용되어 투명도 데이터를 변경하지 않고도 더 압축된 파일을 생성합니다.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'WebP는 두 가지 압축 모드를 사용합니다. 모든 픽셀이 원본과 정확히 일치해야 하는 이미지를 위한 무손실 모드와 작은 차이가 눈에 띄지 않는 사진 및 요소를 위한 손실 모드입니다. 무손실 모드는 PNG보다 26% 더 작은 파일을 생성하며, 손실 모드는 우수한 시각적 품질을 유지하면서 PNG 대비 최대 40%의 용량 감소를 달성할 수 있습니다.',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: '팁: 웹에서는 WebP가 PNG와 JPG를 모두 능가합니다',
142
+ html: '무손실 모드의 WebP는 PNG보다 작습니다. 손실 모드의 WebP는 JPG보다 작습니다. 이로 인해 WebP는 웹 환경에서 <strong>두 형식을 모두 대체하는 유일한 형식</strong>이 되었습니다. 업로드하기 전에 투명 PNG를 WebP로 변환하세요. Google PageSpeed Insights는 이를 감지하여 "현대적인 형식으로 이미지 제공하기" 감사에서 긍정적인 점수를 부여합니다.',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: '활용 사례 및 호환성',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ '웹사이트 및 앱용 투명 배경 로고 및 아이콘.',
154
+ '전자상거래 상점의 누끼 컷 배경 제품 이미지.',
155
+ '알파 투명도가 있는 CSS 스프라이트 및 UI 요소.',
156
+ '랜딩 페이지용 래스터화된 일러스트레이션 및 벡터 그래픽.',
157
+ '블로그 및 뉴스 포털의 투명 배경 기사 썸네일.',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: '결론',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'paragraph',
167
+ html: 'PNG에서 WebP로의 전환은 가장 완벽한 웹 이미지 최적화 방법입니다. 시각적 디자인을 변경하지 않고도 파일 용량을 줄이고 투명도를 유지하며 Core Web Vitals 지표를 개선할 수 있습니다. 이 도구는 브라우저에서 이미지를 처리하며 외부 서버로 전송하지 않으므로 즉각적이고 무료이며 완벽하게 개인 정보가 보호됩니다.',
168
+ },
169
+ ];
170
+
171
+
172
+ export const content: PngAWebpLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: generateSchemas({ title, description, inLanguage: 'ko', faq, howTo }),
182
+ };
@@ -0,0 +1,182 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'png-naar-webp-converter';
6
+ const title = 'Converteer PNG naar WebP Online en Gratis';
7
+ const description =
8
+ 'Converteer PNG-afbeeldingen naar WebP in je browser. Tot 40% kleinere bestandsgrootte. Behoudt transparantie. Geen bestandsuploads. Gratis en privé.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Sleep PNG-bestanden...',
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: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Waarom PNG naar WebP converteren?',
24
+ answer:
25
+ 'WebP biedt tot 40% betere compressie dan PNG bij dezelfde kwaliteit, terwijl het ook Alpha-transparantie ondersteunt. Het is het formaat dat wordt aanbevolen door Google PageSpeed Insights.',
26
+ },
27
+ {
28
+ question: 'Gaat transparantie verloren tijdens het proces?',
29
+ answer:
30
+ 'Nee. De technische implementatie van WebP ondersteunt het alfakanaal. De transparanties van de originele PNG blijven behouden in het nieuwe WebP-bestand.',
31
+ },
32
+ {
33
+ question: 'Gaan mijn afbeeldingen naar een server?',
34
+ answer:
35
+ 'Nee. De code draait exclusief in je browser (Client-Side). We bekijken, registreren of bewaren de afbeeldingen die je converteert nooit.',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Voeg je PNG\'s toe',
42
+ text: 'Sleep je grote PNG-bestanden naar het uploadgedeelte of gebruik de traditionele interactieve kiezer.',
43
+ },
44
+ {
45
+ name: 'Kanaaldetectie',
46
+ text: 'De lokale rendering-engine detecteert en exporteert de pixelcompositie naar het geoptimaliseerde WebP-formaat.',
47
+ },
48
+ {
49
+ name: 'Directe Download',
50
+ text: 'Download je sterk gecomprimeerde WebP-bestanden afzonderlijk of bundel ze samen met de ZIP-pakketconverter.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Google: WebP Implementatiedetails',
57
+ url: 'https://developers.google.com/speed/webp/',
58
+ },
59
+ {
60
+ name: 'W3C: Core Web Vitals Richtlijnen',
61
+ url: 'https://web.dev/vitals/',
62
+ },
63
+ {
64
+ name: 'Mozilla Docs: Beeldformaten',
65
+ url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
+ },
67
+ ];
68
+
69
+ const seo: PngAWebpLocaleContent['seo'] = [
70
+ {
71
+ type: 'title',
72
+ text: 'PNG naar WebP Converter: Transparantie en moderne compressie voor het web',
73
+ level: 2,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: '<strong>PNG</strong> is decennialang het referentieformaat geweest voor webafbeeldingen met transparantie — logo\'s, pictogrammen, UI-elementen, productafbeeldingen op uitgesneden achtergronden. Het probleem is de bestandsgrootte: de verliesvrije compressie die kwaliteit garandeert, genereert ook merkbaar grote bestanden. Google\'s <strong>WebP</strong> lost deze tegenstrijdigheid op: het ondersteunt het alfakanaal (transparantie) <em>en</em> comprimeert veel beter dan PNG, waardoor de overstap van PNG naar WebP op je website een perfecte optimalisatie is die niets opoffert.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNG of WebP? Wanneer je elk formaat moet gebruiken',
82
+ level: 3,
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '<strong>PNG</strong> blijft het juiste formaat wanneer compatibiliteit cruciaal is: ontwerptools zoals Photoshop of Figma, printworkflows, verouderde desktopapplicaties of elke context waarin WebP-ondersteuning niet gegarandeerd is. Het is ook het ideale formaat voor het opslaan van werklagen in bewerkingspipelines, aangezien de verliesvrije compressie elke pixel behoudt. De kosten: bestanden die 3–8 keer meer kunnen wegen dan hun WebP-equivalent.',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '<strong>WebP</strong> is de natuurlijke vervanger van PNG voor alle moderne webinhoud. Chrome, Firefox, Safari en Edge ondersteunen het allemaal standaard. Een verliesvrije WebP-afbeelding is 26% kleiner dan de equivalente PNG; in de lossy-modus kan deze tot 40% kleiner zijn met vrijwel onwaarneembare visuele kwaliteit. En cruciaal voor webdesign: <strong>WebP behoudt alfa-transparantie</strong> precies zoals PNG, zonder visueel compromis.',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: 'Vergelijking: Lokale vs Cloud-conversie',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: 'Cloud Converters',
102
+ description: 'Tools die je bestanden uploaden naar een externe server.',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ 'Netwerklatentie bij uploaden en downloaden',
107
+ 'Je logo\'s en afbeeldingen opgeslagen op servers van derden',
108
+ 'Limieten voor bestandsgrootte en dagelijkse conversiequota',
109
+ 'Opdringerige advertenties en trackers van derden',
110
+ ],
111
+ },
112
+ {
113
+ title: 'Onze Lokale Architectuur',
114
+ description: 'Directe verwerking op je eigen hardware met Vanilla JS-technologie.',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ 'Onmiddellijke snelheid — geen netwerklatentie',
119
+ 'Volledige privacy — 0 bytes extern verzonden',
120
+ 'Geen MB-limieten of beperkingen op aantal bestanden',
121
+ 'Schone interface, geen advertenties of tracking',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Hoe het technisch werkt',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'De PNG wordt lokaal geladen en gedecodeerd in een in-memory <strong>HTML5 Canvas</strong>. De Canvas API behoudt het alfakanaal van de originele PNG — alle transparante en semi-transparante pixels blijven intact in de RGBA-pixelbuffer. Het canvas wordt vervolgens geëxporteerd door <code>toDataURL(\'image/webp\')</code> aan te roepen, wat de WebP-codec van de browser (gebaseerd op Google\'s libwebp) toepast om een compacter bestand te genereren zonder de transparantiegegevens te wijzigen.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'WebP gebruikt twee compressiemodi: lossless-modus voor afbeeldingen waarbij elke pixel exact trouw aan het origineel moet zijn, en lossy-modus voor foto\'s en elementen waarbij kleine verschillen onmerkbaar zijn. Lossless-modus produceert bestanden die 26% kleiner zijn dan PNG; lossy-modus kan reducties tot 40% bereiken in vergelijking met PNG met behoud van uitstekende visuele kwaliteit.',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: 'Tip: WebP verslaat zowel PNG als JPG op het web',
142
+ html: 'WebP in lossless-modus is kleiner dan PNG. WebP in lossy-modus is kleiner dan JPG. Dit maakt WebP het <strong>enige formaat dat beide vervangt</strong> in de webcontext. Converteer je transparante PNG\'s naar WebP voordat je ze uploadt: Google PageSpeed Insights detecteert het en scoort het positief in audits voor "Afbeeldingen in moderne formaten aanbieden".',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: 'Toepassingen en compatibiliteit',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ 'Logo\'s en pictogrammen met transparante achtergronden voor websites en apps.',
154
+ 'Productafbeeldingen met uitgesneden achtergronden in e-commerce winkels.',
155
+ 'CSS-sprites en UI-elementen met alfa-transparantie.',
156
+ 'Gerasterde illustraties en vectorafbeeldingen voor landingspagina\'s.',
157
+ 'Artikelminiaturen met transparante achtergronden in blogs en nieuwsportalen.',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Conclusie',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'paragraph',
167
+ html: 'De overstap van PNG naar WebP is de meest complete webafbeeldingsoptimalisatie die beschikbaar is: je krijgt lichtere bestanden, behoudt transparantie en verbetert Core Web Vitals-metrieken zonder iets aan je visuele ontwerp te veranderen. Deze tool doet het onmiddellijk, gratis en volledig privé — je afbeeldingen worden verwerkt in je browser en gaan nooit naar een externe server.',
168
+ },
169
+ ];
170
+
171
+
172
+ export const content: PngAWebpLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: generateSchemas({ title, description, inLanguage: 'nl', faq, howTo }),
182
+ };