@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,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { AvifAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'avif-png-donusturucu';
6
+ const title = 'AVIF\'i Online PNG\'ye Dönüştür';
7
+ const description =
8
+ 'Şeffaflığı koruyarak AVIF görüntülerini PNG\'ye dönüştürün. Dosya yüklemeden. Tarayıcınızda yerel işleme. Ücretsiz ve sınırsız.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'AVIF dosyalarını buraya sürükleyin...',
12
+ convertText: 'Anında PNG\'ye dönüştürmek için',
13
+ selectFiles: 'Dosyaları seçin',
14
+ processedFiles: 'İşlenen dosyalar',
15
+ downloadAll: 'Tümünü İndir (.zip)',
16
+ pending: 'Bekliyor',
17
+ bibliographyTitle: 'Bibliyografik Referanslar',
18
+ faqTitle: 'Sıkça Sorulan Sorular',
19
+ };
20
+
21
+ const faq: AvifAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'Neden AVIF\'i PNG\'ye dönüştürmeliyim?',
24
+ answer:
25
+ 'AVIF sıkıştırma için harikadır ancak eski tarayıcılarda ve klasik düzenleyicilerde uyumluluğu sınırlıdır. AVIF\'i PNG\'ye dönüştürerek, dosyanızın orijinal şeffaflığını korumasını ve tüm uygulamaların açabilmesini sağlarsınız.',
26
+ },
27
+ {
28
+ question: 'Orijinal AVIF dosyasının şeffaflıkları korunuyor mu?',
29
+ answer:
30
+ 'Evet. Şeffaf arka planı kaldıran JPG\'nin aksine, PNG\'ye aktarırken dönüştürücümüz alfa kanalını olduğu gibi korur.',
31
+ },
32
+ {
33
+ question: 'Resimlerimin internete yüklenmediği doğru mu?',
34
+ answer:
35
+ 'Kesinlikle doğru. Dönüştürücümüz, dahili JavaScript motorunu kullanarak cihazınızda %100 yerel olarak çalışır.',
36
+ },
37
+ ];
38
+
39
+ const howTo: AvifAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'AVIF dosyalarınızı ekleyin',
42
+ text: 'Doğrudan belirlenen alana sürükleyebilir veya bilgisayarınızdaki klasörlere göz atmak için düğmeyi kullanabilirsiniz.',
43
+ },
44
+ {
45
+ name: 'Anında işleme',
46
+ text: 'HTML5 işlemcisinin görüntüyü işlemesine izin verin; format mikrosaniyeler içinde otomatik olarak PNG\'ye dönüşecektir.',
47
+ },
48
+ {
49
+ name: 'PNG\'lerinizi alın',
50
+ text: 'Dönüştürülen görüntüleri tek tek indirin veya ZIP düğmesini kullanarak toplu bir blok indirin.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: AvifAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Alliance for Open Media: AVIF Formatı',
57
+ url: 'https://aomediacodec.github.io/av1-avif/',
58
+ },
59
+ {
60
+ name: 'W3C - Portable Network Graphics (PNG) Spesifikasyonu',
61
+ url: 'https://www.w3.org/TR/png/',
62
+ },
63
+ ];
64
+
65
+ const seo: AvifAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'AVIF - PNG Dönüştürücü: Web Teslimatından Profesyonel Düzenlemeye',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'AVIF, web üzerinde resim sunmak için ideal formattır: küçük, verimli ve yüksek kaliteli. Ancak bu görüntüleri tasarım araçlarında düzenleme, rötuş yapma veya bu görüntülerle çalışma zamanı geldiğinde AVIF bir engel haline gelir. Figma, Photoshop, Illustrator, Sketch ve hemen hemen her profesyonel tasarım aracı, şeffaflık ve kayıpsız düzenleme ile çalışmak için PNG almayı bekler. AVIF\'i PNG\'ye dönüştürmek, web teslimatı dünyası ile yaratıcı düzenleme dünyası arasındaki köprüdür.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'AVIF vs PNG: Teslimat vs Düzenleme',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'AVIF bir teslimat formatı olarak öne çıkar: küçük dosyalar, hızlı yükleme, alfa kanalı desteği ve olağanüstü görsel kalite. Ancak araç ekosistemi sınırlıdır. Çoğu tasarım yazılımı AVIF\'i doğrudan içe aktaramaz ve bu da yaratıcı iş akışlarını kesintiye uğratır. Figma\'da bir AVIF açmaya çalışmak veya Photoshop\'ta katman olarak içe aktarmak basitçe çalışmaz.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'PNG, dijital tasarımın yerel formatıdır. Kayıpsız sıkıştırma, tam alfa kanalı desteği ve tüm yaratıcı araçlarla evrensel uyumluluğu ile PNG, mükemmel bir çalışma formatıdır. Ölçeklendirmeniz, rötuş yapmanız, birden fazla formata aktarmanız veya katmanlar halinde çalışmanız gerektiğinde PNG, bu süreçte hiçbir ayrıntıyı veya pikseli kaybetmeyeceğinizi garanti eder.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Karşılaştırma: Bulut Dönüştürücüler ve Yerel Mimarimiz',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Bulut Dönüştürücüler',
98
+ description: 'AVIF dosyalarınızı işlemek için uzak bir sunucuya yükleyen araçlar.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Tasarım resimleriniz üçüncü taraf sunuculara gider',
103
+ 'Ağ gecikmesi nedeniyle bekleme süresi',
104
+ 'Alfa kanalının olası kaybı veya bozulması',
105
+ 'Toplu dönüştürmeyi zorlaştıran boyut sınırları',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Yerel Mimarimiz',
110
+ description: 'Vanilla JS teknolojisi ve Canvas API aracılığıyla doğrudan tarayıcınızda işleme.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Alfa kanalı mükemmel sadakatle korunur',
115
+ 'Veri aktarımı olmadan anında dönüştürme',
116
+ 'Dosya, boyut veya toplu iş sınırı yok',
117
+ 'Telifli tasarım varlıkları için tam gizlilik',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Şeffaflıklarla teknik dönüşüm nasıl çalışır?',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Modern tarayıcılar, entegre AV1 motorları sayesinde AVIF\'i yerel olarak çözer. Dosya yüklendiğinde, tarayıcı tüm alfa kanalı bilgilerini koruyarak bellekte çözer. Şeffaflıkları da dahil olmak üzere kodu çözülmüş görüntü, alfa kanalını korumak için doğru kompozisyon moduyla bir HTML5 <code>Canvas</code> öğesi üzerine çizilir.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Beyazla doldurarak şeffaflıkları yok eden JPG\'ye aktarmanın aksine, <code>toBlob(\'image/png\')</code> aracılığıyla PNG\'ye aktarma, alfa kanalını tamamen korur. Sonuç, orijinal AVIF\'in her pikselini, her yarı şeffaflığını ve her ayrıntısını koruyan kayıpsız sıkıştırmaya sahip bir PNG\'dir.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Herhangi bir tasarım aracı için zorunlu ön adım',
138
+ html: 'AVIF\'lerinizi Figma, Photoshop, Illustrator veya herhangi bir tasarım aracına aktarmadan önce PNG\'ye dönüştürün. Bu uygulamalar AVIF\'i doğrudan okumaz, ancak PNG hepsinde yerel olarak çalışır, şeffaflıkları ve kaliteyi mükemmel şekilde korur.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Kullanım durumları: AVIF\'in PNG\'ye dönüştürülmesine ne zaman ihtiyacınız olur?',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Figma, Sketch, Adobe XD veya diğer UI tasarım araçlarına aktarma.',
150
+ 'Şeffaflığı koruyarak Photoshop, Affinity Photo veya GIMP\'te katman olarak düzenleme.',
151
+ 'Simge veya sprite oluşturma için kaynak olarak kullanma.',
152
+ 'Standart tasarım yazılımıyla çalışan müşterilere veya iş arkadaşlarına gönderme.',
153
+ 'Şeffaflıklı görüntülerin kayıpsız düzenleme formatında arşivlenmesi.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Sonuç: Web ve tasarım arasındaki köprü',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'AVIF ve PNG modern bir iş akışında mükemmel ortaklardır: Web\'e verimli teslimat için AVIF, tasarım araçlarında düzenleme ve iş birliği için PNG. Dönüştürücümüzle, birinden diğerine geçiş anındadır, özeldir ve her ayrıntıyı korur; görsel varlıklarınız önemli olduğunda tam da ihtiyacınız olan şey budur.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: AvifAPngLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'tr', 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 { AvifAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'convert-avif-to-png';
6
+ const title = '在线将 AVIF 转换为 PNG';
7
+ const description =
8
+ '在保持透明度的同时,将 AVIF 图像转换为 PNG。无需上传文件。在您的浏览器中完成本地处理。免费且无限制。';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: '拖拽 AVIF 文件...',
12
+ convertText: '立即将其转换为 PNG',
13
+ selectFiles: '选择文件',
14
+ processedFiles: '已处理文件',
15
+ downloadAll: '下载全部 (.zip)',
16
+ pending: '等待中',
17
+ bibliographyTitle: '参考文献',
18
+ faqTitle: '常见问题',
19
+ };
20
+
21
+ const faq: AvifAPngLocaleContent['faq'] = [
22
+ {
23
+ question: '为什么要将 AVIF 转换为 PNG?',
24
+ answer:
25
+ 'AVIF 格式虽然压缩率极高,但在旧版本浏览器和经典编辑器中的兼容性有限。通过将 AVIF 转换为 PNG,您可以确保文件保留原始透明度,并且所有应用程序都能打开它。',
26
+ },
27
+ {
28
+ question: '原始 AVIF 文件的透明度会被保留吗?',
29
+ answer:
30
+ '是的。与 JPG 会删除透明背景不同,在导出为 PNG 时,我们的转换器会完整保留 Alpha 通道。',
31
+ },
32
+ {
33
+ question: '我的图像真的不会被上传到互联网吗?',
34
+ answer:
35
+ '绝对是真的。我们的转换器使用内部 JavaScript 引擎在您的设备上 100% 本地运行。',
36
+ },
37
+ ];
38
+
39
+ const howTo: AvifAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: '添加您的 AVIF 文件',
42
+ text: '您可以将其直接拖到指定区域,或使用按钮浏览计算机上的文件夹。',
43
+ },
44
+ {
45
+ name: '即时处理',
46
+ text: '让 HTML5 处理器渲染图像;格式将在微秒内自动切换为 PNG。',
47
+ },
48
+ {
49
+ name: '获取您的 PNG 文件',
50
+ text: '逐个下载转换后的图像,或通过 ZIP 按钮下载整个压缩包。',
51
+ },
52
+ ];
53
+
54
+ const bibliography: AvifAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Alliance for Open Media: AVIF 格式',
57
+ url: 'https://aomediacodec.github.io/av1-avif/',
58
+ },
59
+ {
60
+ name: 'W3C - Portable Network Graphics (PNG) 规范',
61
+ url: 'https://www.w3.org/TR/png/',
62
+ },
63
+ ];
64
+
65
+ const seo: AvifAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'AVIF 转 PNG 转换器:从网页分发到专业编辑',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'AVIF 是在网页上分发图像的理想格式——小巧、高效且高质量。但是,当需要对这些图像进行编辑、修饰或在设计工具中处理时,AVIF 就成了障碍。Figma、Photoshop、Illustrator、Sketch 以及几乎所有的专业设计工具都期望接收 PNG 来进行透明度处理和无损编辑。将 AVIF 转换为 PNG 是连接网页分发世界与创意编辑世界之间的桥梁。',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'AVIF vs PNG:分发 vs 编辑',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'AVIF 作为分发格式脱颖而出:文件小、加载快、支持 Alpha 通道且视觉质量出色。然而,其工具生态系统有限。大多数设计软件无法直接导入 AVIF,这中断了创意工作流。尝试在 Figma 中打开 AVIF 或将其作为图层导入 Photoshop 根本行不通。',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'PNG 是数字设计的原生格式。凭借无损压缩、完整的 Alpha 通道支持以及与所有创意工具的通用兼容性,PNG 是首选的工作格式。当您需要缩放、修饰、导出为多种格式或进行图层化工作时,PNG 保证您在过程中不会丢失任何细节或像素。',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: '对比:云端转换器 vs 我们的本地架构',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: '云端转换器',
98
+ description: '将您的 AVIF 文件上传到远程服务器进行处理的工具。',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ '您的设计图像传输到了第三方服务器',
103
+ '由于网络延迟带来的等待时间',
104
+ 'Alpha 通道可能丢失或改变',
105
+ '大小限制导致批量转换困难',
106
+ ],
107
+ },
108
+ {
109
+ title: '我们的本地架构',
110
+ description: '通过 Vanilla JS 技术和 Canvas API 在浏览器中直接处理。',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ '完美还原并保留 Alpha 通道',
115
+ '即时转换,无数据传输',
116
+ '不设文件数量、大小或批量限制',
117
+ '为专有设计资产提供完全隐私保护',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: '带透明度的技术转换如何运行',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: '现代浏览器凭借集成的 AV1 引擎原生支持 AVIF 解码。加载文件时,浏览器会在内存中对其进行解码,并保留所有 Alpha 通道信息。解码后的图像(包括其透明度)会以正确的合成模式绘制在 HTML5 <code>Canvas</code> 元素上,以保持 Alpha 通道。',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: '与导出为 JPG(会通过填充白色来破坏透明度)不同,通过 <code>toBlob(\'image/png\')</code> 导出为 PNG 会完整保留 Alpha 通道。结果是一个具有无损压缩的 PNG,它保留了原始 AVIF 的每一个像素、每一处半透明和每一处细微差别。',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: '任何设计工具必备的前提步骤',
138
+ html: '在将您的 AVIF 导入 Figma、Photoshop、Illustrator 或任何设计工具之前,请先将其转换为 PNG。这些应用程序无法直接读取 AVIF,但 PNG 在所有这些工具中都能原生运行,且能完美保留透明度和质量。',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: '使用场景:您何时需要将 AVIF 转换为 PNG',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ '导入到 Figma、Sketch、Adobe XD 或其他 UI 设计工具。',
150
+ '在 Photoshop、Affinity Photo 或 GIMP 中作为图层进行编辑,并保持透明度。',
151
+ '用作生成图标或精灵图(sprites)的源文件。',
152
+ '发送给使用标准设计软件的客户或合作者。',
153
+ '以无损编辑格式存档带有透明度的图像。',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: '结论:连接网页与设计的桥梁',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'AVIF 和 PNG 是现代工作流中的完美拍档:AVIF 用于高效网页分发,PNG 用于设计工具内的编辑和协作。使用我们的转换器,两者之间的转换是即时的、私密的,且能保留每一个细节——这正是当您的视觉资产至关重要时所需要的。',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: AvifAPngLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
178
+ };
@@ -13,9 +13,21 @@ export const avifAPng: ConvertersToolEntry<ImageConverterUI> = {
13
13
  fg: 'mdi:file-export',
14
14
  },
15
15
  i18n: {
16
- es: () => import('./i18n/es').then((m) => m.content),
16
+ de: () => import('./i18n/de').then((m) => m.content),
17
17
  en: () => import('./i18n/en').then((m) => m.content),
18
+ es: () => import('./i18n/es').then((m) => m.content),
18
19
  fr: () => import('./i18n/fr').then((m) => m.content),
20
+ id: () => import('./i18n/id').then((m) => m.content),
21
+ it: () => import('./i18n/it').then((m) => m.content),
22
+ ja: () => import('./i18n/ja').then((m) => m.content),
23
+ ko: () => import('./i18n/ko').then((m) => m.content),
24
+ nl: () => import('./i18n/nl').then((m) => m.content),
25
+ pl: () => import('./i18n/pl').then((m) => m.content),
26
+ pt: () => import('./i18n/pt').then((m) => m.content),
27
+ ru: () => import('./i18n/ru').then((m) => m.content),
28
+ sv: () => import('./i18n/sv').then((m) => m.content),
29
+ tr: () => import('./i18n/tr').then((m) => m.content),
30
+ zh: () => import('./i18n/zh').then((m) => m.content),
19
31
  },
20
32
  };
21
33
 
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { AvifAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'avif-zu-webp-konvertieren';
6
+ const title = 'AVIF in WebP Online Konvertieren';
7
+ const description =
8
+ 'Konvertieren Sie AVIF-Bilder in WebP mit besserer Kompatibilität. Lokale Verarbeitung ohne Server. Kostenlos, privat und unbegrenzt.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'AVIF-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 gestelle Fragen',
19
+ };
20
+
21
+ const faq: AvifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Was ist der eigentliche Unterschied zwischen der Konvertierung in WebP und anderen Formaten?',
24
+ answer:
25
+ 'WebP bietet das Beste aus beiden Welten: Kompressionen, die so erstaunlich sind wie die von JPG, aber die Fähigkeit behalten, saubere Transparenzen wie ein PNG zu enthalten. Das Ändern Ihres AVIF in WebP maximiert die Kompatibilität für das Web und bewahrt gleichzeitig alle Vorteile.',
26
+ },
27
+ {
28
+ question: 'Wie schaffen Sie es, dies ohne Server und so schnell zu ändern?',
29
+ answer:
30
+ 'Wir nutzen die integrierten Dekodiermodule und das JavaScript HTML5 Image-Objekt, wodurch Ihr AVIF im lokalen Speicher gelesen und eine optimierte WebP-Datei in Rekordzeit extrahiert werden kann.',
31
+ },
32
+ {
33
+ question: 'Ist das WebP-Format heutzutage vollständig kompatibel?',
34
+ answer:
35
+ 'Im Gegensatz zum aufstrebenden AVIF genießt das WebP-Format eine sehr breite Unterstützung unter Browsern wie Chrome, Firefox und Safari.',
36
+ },
37
+ ];
38
+
39
+ const howTo: AvifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Fügen Sie Ihre Fotodateien ein',
42
+ text: 'Verschieben und legen Sie alle AVIF-Formatauswahlen auf unsere Leinwand.',
43
+ },
44
+ {
45
+ name: 'Algorithmen-Byte-Übersetzung',
46
+ text: 'Unsere Engine verarbeitet die Algorithmen, ohne etwas hochzuladen, und erstellt exakte Iterationen basierend auf komprimiertem WebP.',
47
+ },
48
+ {
49
+ name: 'Sammeln Sie Ihre fertigen Downloads',
50
+ text: 'Klicken Sie auf das Panel und erhalten Sie Pakete in ZIP-Boxen oder einzeln, um sie direkt zu veröffentlichen.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: AvifAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'AV1 Image File Format',
57
+ url: 'https://aomediacodec.github.io/av1-avif/',
58
+ },
59
+ {
60
+ name: 'Google WebP Format Overview',
61
+ url: 'https://developers.google.com/speed/webp',
62
+ },
63
+ ];
64
+
65
+ const seo: AvifAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'AVIF-zu-WebP-Konverter: Die moderne und sichere Alternative für das Web',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'AVIF ist das fortschrittlichste Bildformat, das heute verfügbar ist: kleiner als WebP, kleiner als JPG, mit überlegener visueller Qualität. Die Akzeptanz war jedoch ungleichmäßig – Safari unterstützte es erst 2024, und viele ältere Mobilgeräte kennen es nicht. WebP hingegen ist seit Jahren als der moderne Webstandard mit über 95 % globaler Unterstützung etabliert. Die Konvertierung von AVIF in WebP ist die pragmatische Entscheidung, wenn Sie Modernität benötigen, ohne die Kompatibilität zu riskieren.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'AVIF vs. WebP: Das Neueste vs. Das Sicherste',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'AVIF bietet die fortschrittlichste verfügbare Kompression – typischerweise 20-30 % kleiner als WebP bei gleicher Qualität. Die auf AV1 basierende Technologie ist die modernste der Branche. Die AVIF-Unterstützung hat jedoch noch blinde Flecken: ältere Safari-Versionen, einige Browser auf älterem Android und bestimmte Desktop-Bildbetrachter erkennen es nicht. Für die Webproduktion mit großem und vielfältigem Publikum stellt dies ein Risiko dar.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'WebP hat eine viel solidere Support-Historie. Chrome hat es 2010 übernommen, Firefox und Edge folgten, und Safari hat es 2020 integriert. Mit über 95 % globaler Browser-Abdeckung ist WebP die sichere Wahl für jede Website, die keine Fallback-Formate bereitstellen möchte. Es unterstützt Transparenzen, verlustbehaftete und verlustfreie Kompression und erzielt viel kleinere Dateien als JPG oder PNG.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Vergleich: Cloud-Konverter vs. Unsere lokale Architektur',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Cloud Konverter',
98
+ description: 'Tools, die Ihre AVIF-Dateien zur Verarbeitung auf einen Remote-Server hochladen.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Ihre privaten Bilder werden über externe Server übertragen',
103
+ 'Netzwerklatenz, die den Arbeitsfluss verlangsamt',
104
+ 'Dateibeschränkungen pro kostenloser Konvertierung',
105
+ 'Abhängigkeit von Diensten von Drittanbietern, die sich ändern können',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Unsere lokale Architektur',
110
+ description: 'Direkte Verarbeitung in Ihrem Browser mittels Vanilla JS-Technologie und Canvas API.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Vollständige Privatsphäre – 0 Bytes verlassen Ihr Gerät',
115
+ 'Sofortige Geschwindigkeit ohne Netzwerkabhängigkeit',
116
+ 'Keine Beschränkungen der Dateigröße oder Dateianzahl',
117
+ 'Funktioniert ohne Internetverbindung',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Wie die technische Konvertierung im Browser funktioniert',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Chrome, Firefox und Edge enthalten native AVIF-Dekodierer. Beim Laden der Datei dekodiert die Bild-Engine des Browsers sie im RAM und behält die Informationen des Alphakanals bei. Das Bild wird auf ein unsichtbares HTML5-<code>Canvas</code> mit dem 2D-Kontext gezeichnet, der Transparenzen korrekt beibehält.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Der Export erfolgt mit <code>toBlob(\'image/webp\', quality)</code>. Der Browser wendet den WebP-Kompressionsalgorithmus intern an und generiert einen Blob, der den Alphakanal enthält, wenn das Originalbild einen hatte. Dieser Blob wird in einen direkten Download-Link umgewandelt. Der gesamte Prozess findet in Mikrosekunden ohne jegliche Kommunikation mit externen Servern statt.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'WebP: Die pragmatische Wahl des modernen Entwicklers',
138
+ html: 'WebP hat über 95 % Browser-Unterstützung – AVIF wächst, erreicht diese Zahl aber noch nicht. Für Websites in Produktion ohne adaptive Formaterkennung ist WebP die sichere Wahl, die fast jedes Publikum abdeckt. Konvertieren Sie Ihre AVIFs in WebP und stellen Sie moderne Bilder mit Vertrauen bereit.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Anwendungsfälle: Wann Sie WebP gegenüber AVIF wählen sollten',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Websites, die Unterstützung in Browsern ab 2020 ohne Polyfills benötigen.',
150
+ 'CDNs und Bildbereitstellungssysteme, die WebP, aber nicht AVIF akzeptieren.',
151
+ 'Hybride mobile Apps mit WebViews, die AVIF eventuell nicht unterstützen.',
152
+ 'Moderne HTML-E-Mails, bei denen WebP eine höhere Unterstützung hat als AVIF.',
153
+ 'CMS-Plattformen und E-Commerce mit etablierter WebP-Bildunterstützung.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Fazit: Modernität mit garantierter Kompatibilität',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'AVIF ist die Spitze der Bildkompression, aber WebP ist die zuverlässige und universelle Wahl des modernen Web-Ökosystems. Mit unserem Tool konvertieren Sie im Handumdrehen vom Neuesten zum am besten Unterstützten – ohne etwas auf einen Server hochzuladen, mit vollständiger Privatsphäre und ohne Größenbeschränkungen.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: AvifAWebpLocaleContent = {
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 { AvifAWebpLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'avif-to-webp-converter';
@@ -164,16 +164,6 @@ const seo: AvifAWebpLocaleContent['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: AvifAWebpLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: AvifAWebpLocaleContent = {
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 { AvifAWebpLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertidor-avif-a-webp';
@@ -164,16 +164,6 @@ const seo: AvifAWebpLocaleContent['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: AvifAWebpLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: AvifAWebpLocaleContent = {
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 { AvifAWebpLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertisseur-avif-en-webp';
@@ -164,16 +164,6 @@ const seo: AvifAWebpLocaleContent['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: AvifAWebpLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: AvifAWebpLocaleContent = {
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
  };