@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 { AvifAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'avif-webp-donusturucu';
6
+ const title = 'AVIF\'i Online WebP\'ye Dönüştür';
7
+ const description =
8
+ 'Daha iyi uyumluluk için AVIF görüntülerini WebP\'ye dönüştürün. Sunucu olmadan yerel işleme. Ücretsiz, özel ve sınırsız.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'AVIF dosyalarını buraya sürükleyin...',
12
+ convertText: 'Anında WebP\'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: AvifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'WebP\'ye dönüştürmek ile diğer formatlar arasındaki gerçek fark nedir?',
24
+ answer:
25
+ 'WebP her iki dünyanın da en iyisini sunar: JPG kadar şaşırtıcı sıkıştırmalar yaparken PNG gibi temiz şeffaflıkları barındırma yeteneğini korur. AVIF\'inizi WebP\'ye dönüştürmek, tüm avantajlarını korurken web için uyumluluğunu maksimize eder.',
26
+ },
27
+ {
28
+ question: 'Bunu sunucu olmadan ve bu kadar hızlı değiştirmeyi nasıl başarıyorsunuz?',
29
+ answer:
30
+ 'AVIF\'inizi yerel bellekte okumaya ve rekor sürede optimize edilmiş bir WebP dosyası çıkarmaya olanak tanıyan yerleşik kod çözme modüllerinden ve JavaScript HTML5 Image nesnesinden yararlanıyoruz.',
31
+ },
32
+ {
33
+ question: 'WebP formatı günümüzde tamamen uyumlu mu?',
34
+ answer:
35
+ 'Yeni doğan AVIF\'in aksine, WebP formatı Chrome, Firefox ve Safari gibi tarayıcılar arasında çok geniş bir desteğe sahiptir.',
36
+ },
37
+ ];
38
+
39
+ const howTo: AvifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Fotoğraf dosyalarınızı ekleyin',
42
+ text: 'Tüm AVIF formatı seçimlerini sürükleyip tuvalimize bırakın.',
43
+ },
44
+ {
45
+ name: 'Algoritmik Bayt Dönüşümü',
46
+ text: 'Motorumuz, hiçbir şey yüklemeden algoritmaları işler ve sıkıştırılmış WebP tabanlı tam iterasyonlar oluşturur.',
47
+ },
48
+ {
49
+ name: 'Hazır İndirmelerinizi Biriktirin',
50
+ text: 'Panele basın ve toplu dosyaları ZIP kutularında veya tek tek alarak doğrudan yayınlayın.',
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\'ten WebP\'ye Dönüştürücü: Web İçin Modern ve Güvenli Alternatif',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'AVIF, günümüzde mevcut olan en gelişmiş görüntü formatıdır: WebP\'den daha küçük, JPG\'den daha küçük, üstün görsel kaliteye sahip. Ancak benimsenmesi düzensiz oldu - Safari bunu 2024\'e kadar desteklemedi ve birçok eski mobil cihaz bunu tanımıyor. WebP ise %95\'ten fazla küresel desteğiyle yıllardır modern web standardı olarak yerleşmiş durumda. AVIF\'i WebP\'ye dönüştürmek, uyumluluğu riske atmadan modernliğe ihtiyaç duyduğunuzda pragmatik bir karardır.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'AVIF vs WebP: En Yeni vs En Güvenli',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'AVIF, mevcut en gelişmiş sıkıştırmayı sunar - tipik olarak aynı kalitede WebP\'den %20-30 daha küçüktür. AV1 tabanlı teknolojisi sektördeki en modern olanıdır. Ancak AVIF desteği hala kör noktalara sahiptir: Safari\'nin eski sürümleri, eski Android\'deki bazı tarayıcılar ve bazı masaüstü resim oynatıcıları bunu tanımaz. Geniş ve çeşitli kitlelere sahip web üretimi için bu bir risk oluşturur.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'WebP çok daha sağlam bir destek geçmişine sahiptir. Chrome bunu 2010\'da benimsedi, Firefox ve Edge takip etti ve Safari 2020\'de bünyesine kattı. Tarayıcılarda %95\'ten fazla küresel kapsamla WebP, yedek formatlar sunmak istemeyen herhangi bir web sitesi için güvenli seçimdir. Şeffaflıkları, kayıplı ve kayıpsız sıkıştırmayı destekler ve JPG veya PNG\'den çok daha küçük dosyalar elde 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
+ 'Özel resimleriniz harici sunuculardan geçer',
103
+ 'İş akışını yavaşlatan ağ gecikmesi',
104
+ 'Ücretsiz dönüşüm başına dosya sınırları',
105
+ 'Değişebilecek üçüncü taraf hizmetlerine bağımlılık',
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
+ 'Tam gizlilik — 0 bayt cihazınızdan çıkar',
115
+ 'Ağ bağımlılığı olmadan anında hız',
116
+ 'Boyut veya dosya sayısı sınırı yok',
117
+ 'İnternet bağlantısı olmadan çalışır',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Tarayıcıda teknik dönüşüm nasıl çalışır?',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Chrome, Firefox ve Edge yerel AVIF kod çözücüleri içerir. Dosya yüklendiğinde, tarayıcının görüntü motoru bunu RAM\'de kodunu çözerken alfa kanalı bilgisini korur. Görüntü, şeffaflıkları doğru bir şekilde koruyan 2D bağlamı kullanılarak görünmez bir HTML5 <code>Canvas</code> üzerine çizilir.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Dışa aktarma <code>toBlob(\'image/webp\', quality)</code> ile gerçekleştirilir. Tarayıcı, WebP sıkıştırma algoritmasını dahili olarak uygular ve orijinal görüntüde varsa alfa kanalını içeren bir Blob oluşturur. Bu Blob doğrudan indirme bağlantısına dönüştürülür. Tüm süreç, harici sunucularla herhangi bir iletişim olmadan mikrosaniyeler içinde gerçekleşir.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'WebP: modern geliştiricinin pragmatik seçimi',
138
+ html: 'WebP tarayıcılarda %95\'ten fazla desteğe sahiptir - AVIF büyüyor ancak henüz bu rakama ulaşmış değil. Uyarlanabilir format algılaması olmayan yayınlanan siteler için WebP, neredeyse her kitleyi kapsayan güvenli seçimdir. AVIF\'lerinizi WebP\'ye dönüştürün ve modern resimleri güvenle sunun.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Kullanım durumları: WebP\'yi AVIF\'e ne zaman tercih etmeli?',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ '2020\'den beri polyfill olmadan tarayıcı desteğine ihtiyaç duyan web siteleri.',
150
+ 'WebP\'yi kabul eden ancak AVIF\'i etmeyen CDN\'ler ve görüntü teslim sistemleri.',
151
+ 'AVIF\'i destekleyemeyebilecek WebView\'lara sahip hibrit mobil uygulamalar.',
152
+ 'WebP\'nin AVIF\'ten daha yüksek desteğe sahip olduğu modern HTML e-postaları.',
153
+ 'Yerleşik WebP görüntü desteğine sahip CMS platformları ve e-ticaret siteleri.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Sonuç: Garantili uyumlulukla modernlik',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'AVIF görüntü sıkıştırmanın ön saflarıdır, ancak WebP modern web ekosisteminin güvenilir ve evrensel seçimidir. Aracımızla, en yeniden en çok desteklenene anında geçiş yaparsınız - hiçbir şeyi sunucuya yüklemeden, tam gizlilikle ve boyut sınırı olmadan.',
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: '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 { AvifAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'convert-avif-to-webp';
6
+ const title = '在线将 AVIF 转换为 WebP';
7
+ const description =
8
+ '为了获得更好的兼容性,将 AVIF 图像转换为 WebP 格式。无需服务器,本地完成处理。免费、私密且无限制。';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: '拖拽 AVIF 文件...',
12
+ convertText: '立即将其转换为 WebP',
13
+ selectFiles: '选择文件',
14
+ processedFiles: '已处理文件',
15
+ downloadAll: '下载全部 (.zip)',
16
+ pending: '等待中',
17
+ bibliographyTitle: '参考文献',
18
+ faqTitle: '常见问题',
19
+ };
20
+
21
+ const faq: AvifAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: '转换为 WebP 格式与其他格式的实际区别是什么?',
24
+ answer:
25
+ 'WebP 结合了两者的优点:它能像 JPG 一样提供惊人的压缩率,同时保留像 PNG 一样处理干净透明度的能力。将 AVIF 转换为 WebP 可以在保留所有优势的同时,最大化网页兼容性。',
26
+ },
27
+ {
28
+ question: '如何在没有服务器的情况下实现如此快速的处理?',
29
+ answer:
30
+ '我们利用了内置的解码模块和 JavaScript HTML5 的 Image 对象,这使得可以在本地内存中读取 AVIF,并在创纪录的时间内提取出优化的 WebP 文件。',
31
+ },
32
+ {
33
+ question: 'WebP 格式目前是否完全兼容?',
34
+ answer:
35
+ '与尚在起步阶段的 AVIF 不同,WebP 格式在 Chrome、Firefox 和 Safari 等浏览器中获得了极广泛的支持。',
36
+ },
37
+ ];
38
+
39
+ const howTo: AvifAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: '插入您的照片文件',
42
+ text: '将所有选定的 AVIF 格式文件拖放到我们的画布中。',
43
+ },
44
+ {
45
+ name: '字节算法转换',
46
+ text: '我们的引擎在不上传任何内容的情况下处理算法,并创建基于 WebP 压缩的精确副本。',
47
+ },
48
+ {
49
+ name: '收集您的下载成果',
50
+ text: '点击面板,接收 ZIP 压缩包或单个文件,以便直接发布。',
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 转 WebP 转换器:现代且安全的网页替代方案',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'AVIF 是目前最先进的图像格式:比 WebP 小,比 JPG 小,视觉质量更高。然而,它的采用情况参差不齐——Safari 直到 2024 年才支持它,许多旧的移动设备也无法识别它。相比之下,WebP 多年来作为现代网页标准已被确立,拥有超过 95% 的全球支持。当您需要现代性而又不愿承担兼容性风险时,将 AVIF 转换为 WebP 是务实的决策。',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'AVIF vs WebP:最新技术 vs 最安全选择',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'AVIF 提供了目前最先进的压缩技术——在相同质量下,通常比 WebP 小 20-30%。其基于 AV1 的技术是行业内最先进的。然而,AVIF 的支持仍存在盲点:旧版本的 Safari、旧版 Android 上的某些浏览器以及某些桌面图像播放器无法识别它。对于拥有广泛且多样化受众的网页生产来说,这构成了风险。',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'WebP 拥有更稳固的支持历史。Chrome 在 2010 年采用了它,Firefox 和 Edge 随后跟进,Safari 在 2020 年加入了支持。凭借在浏览器中超过 95% 的全球覆盖率,对于任何不想提供回退(fallback)格式的网站来说,WebP 都是安全的选择。它支持透明度、有损和无损压缩,且生成的文件远小于 JPG 或 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
+ '免费转换的文件数量限制',
105
+ '依赖于可能发生变化的第三方服务',
106
+ ],
107
+ },
108
+ {
109
+ title: '我们的本地架构',
110
+ description: '通过 Vanilla JS 技术和 Canvas API 在浏览器中直接处理。',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ '完全隐私——0 字节离开您的设备',
115
+ '即时处理,不依赖网络',
116
+ '没有大小或文件数量限制',
117
+ '可在无网络连接的情况下工作',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: '技术转换在浏览器中如何运行',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Chrome、Firefox 和 Edge 都包含原生的 AVIF 解码器。加载文件时,浏览器的图像引擎会在内存中对其进行解码,并保留 Alpha 通道信息。图像会使用 2D 上下文绘制在不可见的 HTML5 <code>Canvas</code> 上,从而正确保留透明度。',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: '导出过程通过 <code>toBlob(\'image/webp\', quality)</code> 完成。浏览器在内部应用 WebP 压缩算法,如果原始图像包含 Alpha 通道,则生成的 Blob 也会包含。此 Blob 会转换为直接下载链接。整个过程在微秒内完成,不与外部服务器进行任何通信。',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'WebP:现代开发者的务实选择',
138
+ html: 'WebP 拥有超过 95% 的浏览器支持——AVIF 正在增长,但尚未达到这个数字。对于不具备自适应格式检测的生产站点,WebP 是覆盖几乎所有受众的安全选择。将您的 AVIF 转换为 WebP,放心地提供现代图像。',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: '使用场景:何时选择 WebP 而非 AVIF',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ '自 2020 年起需要在浏览器中提供支持且无需 polyfill 的网站。',
150
+ '接受 WebP 但不支持 AVIF 的 CDN 和图像分发系统。',
151
+ '可能不支持 AVIF 的混合移动应用中的 WebView。',
152
+ 'WebP 支持程度高于 AVIF 的现代 HTML 电子邮件。',
153
+ '已建立 WebP 图像支持的 CMS 平台和电子商务系统。',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: '结论:拥有保障兼容性的现代感',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'AVIF 是图像压缩的前沿,但 WebP 是现代网页生态系统中可靠且通用的选择。使用我们的工具,您可以瞬间从最新格式转换为支持最广的格式——无需向服务器上传任何内容,拥有完全隐私且无大小限制。',
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: 'zh', faq, howTo }),
178
+ };
@@ -13,9 +13,21 @@ export const avifAWebp: 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 { BmpAJpgLocaleContent } from '../index';
4
+
5
+ const slug = 'bmp-zu-jpg-konvertieren';
6
+ const title = 'BMP in JPG Online Konvertieren';
7
+ const description =
8
+ 'Konvertieren Sie BMP-Bilder in Ihrem Browser in JPG. Reduzieren Sie die Größe drastisch. Ohne Dateien auf Server hochzuladen. Kostenlos und 100 % privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'BMP-Dateien hierher ziehen...',
12
+ convertText: 'Um sie sofort in JPG zu konvertieren',
13
+ selectFiles: 'Dateien auswählen',
14
+ processedFiles: 'Verarbeitete Dateien',
15
+ downloadAll: 'Alles herunterladen (.zip)',
16
+ pending: 'Ausstehend',
17
+ bibliographyTitle: 'Literaturhinweise',
18
+ faqTitle: 'Häufig gestellte Fragen',
19
+ };
20
+
21
+ const faq: BmpAJpgLocaleContent['faq'] = [
22
+ {
23
+ question: 'Warum BMP in JPG konvertieren?',
24
+ answer:
25
+ 'Das BMP-Format komprimiert Daten nicht, was zu extrem großen Dateien führt. Das JPG-Format komprimiert das Bild drastisch und behält gleichzeitig eine hervorragende visuelle Qualität für das Web und die Verteilung bei.',
26
+ },
27
+ {
28
+ question: 'Ist es sicher, meine Bilder hier zu konvertieren?',
29
+ answer:
30
+ '100 % sicher. Ihre Privatsphäre ist garantiert, da die Verarbeitung vollständig lokal mit der Engine Ihres eigenen Webbrowsers erfolgt.',
31
+ },
32
+ {
33
+ question: 'Wie funktioniert das Tool?',
34
+ answer:
35
+ 'Ziehen Sie einfach Ihre BMP-Dateien hierher, und unser JavaScript-Skript liest die Pixel, um sie auf einem HTML-Canvas neu zu zeichnen und sofort in die JPEG-Kodierung zu exportieren.',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAJpgLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Laden Sie Ihre BMP-Dateien hoch',
42
+ text: 'Ziehen Sie Ihre Bilder im BMP-Format per Drag & Drop in den markierten Bereich oder wählen Sie sie aus.',
43
+ },
44
+ {
45
+ name: 'Automatische Verarbeitung',
46
+ text: 'Das Tool rastert das Bild und wendet in Millisekunden die optimale Kompressionsstufe im JPG-Format an.',
47
+ },
48
+ {
49
+ name: 'Einzel- oder Batch-Download',
50
+ text: 'Holen Sie sich Ihre neuen, für das Web optimierten Bilder entweder einzeln oder durch Herunterladen einer ZIP-Datei.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: BmpAJpgLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'BMP File Format Specification',
57
+ url: 'https://en.wikipedia.org/wiki/BMP_file_format',
58
+ },
59
+ {
60
+ name: 'JPEG.org',
61
+ url: 'https://jpeg.org/',
62
+ },
63
+ ];
64
+
65
+ const seo: BmpAJpgLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'BMP-zu-JPG-Konverter: Reduzieren Sie eine gigantische Datei in Sekundenschnelle',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'BMP (Bitmap) ist das naivste Format in der Informatik: Es speichert jedes Pixel so, wie es ist, ohne jegliche Kompression. Ein Screenshot von 1920x1080 in BMP wiegt etwa 6 MB. Dasselbe Bild in JPG belegt zwischen 200 und 400 KB bei einer visuell ununterscheidbaren Qualität. Der Unterschied ist gewaltig, und unser Tool ermöglicht es Ihnen, diese Konvertierung in Sekundenschnelle direkt in Ihrem Browser durchzuführen, ohne etwas auf einen Server hochzuladen.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'BMP vs. JPG: Rohdaten gegen intelligente Kompression',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'Das BMP-Format wurde von Microsoft in der Ära von Windows 3.1 entwickelt. Seine Philosophie ist so einfach wie möglich: Jedes Pixel belegt 3 Bytes (Rot, Grün, Blau), und die Pixel werden ohne weitere Verarbeitung in Reihen gespeichert. Dieses völlige Fehlen von Kompression führt dazu, dass BMP-Dateien bei echten Fotos und Screenshots zwischen 50 und 100 Mal größer sind als ihr Gegenstück in JPG.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'JPG hingegen verwendet die diskrete Kosinustransformation (DCT), um jeden Block von 8x8 Pixeln zu analysieren und hochfrequente Informationen zu eliminieren, die das menschliche Auge kaum wahrnimmt. Das Ergebnis ist ein Bild, das identisch aussieht, aber nur einen Bruchteil des Originals wiegt. Für BMP-Dateien aus Screenshots, Scannern oder Legacy-Windows-Anwendungen ist die Konvertierung in JPG die wirkungsvollste Optimierungsmaßnahme überhaupt.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Architekturvergleich: Lokal vs. Cloud',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Cloud Konverter',
98
+ description: 'Dienste, die Ihre BMP-Dateien zur Verarbeitung auf Remote-Server hochladen.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Das Hochladen einer 10-MB-BMP-Datei dauert bei langsamen Verbindungen lange',
103
+ 'Ihre vertraulichen Screenshots und Bilder wandern über das Internet',
104
+ 'Häufige Größenbeschränkungen in kostenlosen Tarifen',
105
+ 'Zweifache Latenz: Hoch- und Herunterladen der konvertierten Datei',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Unsere lokale Architektur',
110
+ description: 'Direkte Verarbeitung auf Ihrer Hardware mittels Vanilla JS-Technologie.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Das BMP wird in Ihrem RAM verarbeitet und wandert nicht zu einem Server',
115
+ 'Sofortige Konvertierung ohne Wartezeit',
116
+ 'Keine Größenbeschränkungen pro Datei',
117
+ 'Vollständige Privatsphäre: 0 Bytes nach außen gesendet',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Wie die technische Konvertierung von BMP in JPG funktioniert',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Wenn Sie eine BMP-Datei in das Tool ziehen, liest der Browser sie mit der <code>FileReader</code>-API und dekodiert sie als Blob-Objekt im Speicher. Dieser Blob wird auf einem unsichtbaren HTML5-Canvas gerendert. Anschließend wendet die Methode <code>toDataURL(\'image/jpeg\')</code> den JPEG-Kompressionsalgorithmus auf die Canvas-Daten an und generiert die resultierende JPG-Datei.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Da BMP keinen Alphakanal hat (keine Transparenz unterstützt), ist die Konvertierung in JPG direkt, ohne dass eine Komposition mit weißem Hintergrund erforderlich ist. Der gesamte Vorgang findet im RAM Ihres Computers statt, ohne jegliche Datenübertragung über das Netzwerk, innerhalb von Millisekunden, selbst bei Dateien von mehreren Megabyte.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Windows BMPs können riesig sein',
138
+ html: 'BMP-Dateien, die durch Screenshots (Druck-Taste in Windows) oder durch Legacy-Anwendungen wie Paint erzeugt werden, können zwischen 50 und 100 Mal schwerer sein als ein entsprechendes JPG. Ein einzelnes BMP mit Full-HD-Auflösung kann 6 MB überschreiten. Die Konvertierung in JPG vor dem Versenden per E-Mail oder dem Hochladen auf eine Plattform ist eine wesentliche Praxis.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Anwendungsfälle und Kompatibilität des resultierenden JPG',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Optimierung von Windows-Screenshots für den Versand per E-Mail.',
150
+ 'Konvertierung von Bildern, die von Legacy-Software exportiert wurden (CAD, alte Scanner).',
151
+ 'Gewichtsreduzierung zum Hochladen von Bildern auf Webplattformen und soziale Netzwerke.',
152
+ 'Vorbereitung von Dateien zum Einfügen in Word-, PowerPoint- oder PDF-Dokumente.',
153
+ 'Universelle Kompatibilität mit allen modernen Viewern und Browsern.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Fazit: 10 MB BMP, 500 KB JPG, gleiches Bild',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Die Konvertierung von BMP in JPG ist eine der rentabelsten Optimierungsübungen beim Umgang mit Bilddateien. Unser Tool führt diese Transformation in Sekundenschnelle durch, ohne Dateien hochzuladen, ohne Kontoerstellung, direkt in Ihrem Browser. Das Ergebnis ist ein qualitativ hochwertiges JPG, das universell kompatibel ist und ein um bis zu 97 % geringeres Gewicht als das ursprüngliche BMP aufweist.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: BmpAJpgLocaleContent = {
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 { BmpAJpgLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'bmp-to-jpg-converter';
@@ -164,16 +164,6 @@ const seo: BmpAJpgLocaleContent['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: BmpAJpgLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: BmpAJpgLocaleContent = {
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 { BmpAJpgLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertidor-bmp-a-jpg';
@@ -164,16 +164,6 @@ const seo: BmpAJpgLocaleContent['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: BmpAJpgLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: BmpAJpgLocaleContent = {
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 { BmpAJpgLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertisseur-bmp-en-jpg';
@@ -164,16 +164,6 @@ const seo: BmpAJpgLocaleContent['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: BmpAJpgLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: BmpAJpgLocaleContent = {
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
  };