@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,177 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { BmpAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'bmp-png-donusturucu';
6
+ const title = 'BMP\'den PNG\'ye Dönüştürücü';
7
+ const description =
8
+ 'BMP görüntülerini kalite kaybı olmadan PNG\'ye dönüştürün. Kusurları olmayan modern sıkıştırma. Dosya yüklemeden. Ücretsiz ve %100 özel.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'BMP 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: BmpAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'BMP ve PNG arasındaki temel fark nedir?',
24
+ answer:
25
+ 'Hem BMP hem de PNG kayıpsız formatlardır. Fark optimizasyondadır: PNG, aynı görüntüyü BMP\'den 5 veya 10 kat daha az bellek kaplayacak şekilde saklamak için modern sıkıştırma algoritmalarını kullanır.',
26
+ },
27
+ {
28
+ question: 'Dönüşüm gerçekten özel mi?',
29
+ answer:
30
+ 'Evet. Tüm görüntü işleme süreci bilgisayarınız tarafından yapılır. Yerel aktarım sırasında dosyalarınıza kesinlikle hiç kimse erişemez.',
31
+ },
32
+ {
33
+ question: 'Bu durumda neden JPEG yerine PNG tercih edilmeli?',
34
+ answer:
35
+ 'Elinizde bir BMP dosyası varsa, bunun nedeni görüntünün hassas renklere sahip olmasıdır. Bir BMP\'yi yıkıcı JPG standardına dönüştürmek saf renklerinizi bozar. PNG bu aslına uygunluğu korur.',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Fotoğrafınızı Ekleyin',
42
+ text: 'Kaynak BMP dosyalarını web öğeleri bırakma alanımıza rahatça taşıyın.',
43
+ },
44
+ {
45
+ name: 'Ağ İletimi Olmadan Dönüştürün',
46
+ text: 'HTML5 JS\'niz tarafından yerel olarak yapılan temiz işlemeyi sadece bir saniye içinde görün.',
47
+ },
48
+ {
49
+ name: 'Saf PNG\'ler Elde Edin',
50
+ text: 'PNG kopyalarını tek tek veya sıkıştırılmış bir paket aracılığıyla indirin.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: BmpAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'BMP File Format',
57
+ url: 'https://en.wikipedia.org/wiki/BMP_file_format',
58
+ },
59
+ {
60
+ name: 'PNG Specification W3C',
61
+ url: 'https://www.w3.org/TR/png/',
62
+ },
63
+ ];
64
+
65
+ const seo: BmpAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'BMP\'den PNG\'ye Dönüştürücü: BMP Formatının Kayıpsız Değişimi',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'BMP, PNG\'ye göre hiçbir teknik avantaj sağlamadan muazzam miktarda yer kaplayan sıkıştırılmamış bir formattır. Her ikisi de kayıpsız formatlardır: her pikseli mutlak doğrulukla saklarlar. Ancak PNG, Deflate algoritması aracılığıyla kayıpsız sıkıştırma ekler, bu da tek bir görsel bilgi bitinden bile ödün vermeden dosya boyutunu 3 ila 5 kat azaltır. PNG, özünde BMP\'nin her zaman olmak istediği şeydir.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'BMP vs PNG: aynı kalite, radikal olarak farklı boyut',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'BMP ve PNG arasındaki temel fark görüntü kalitesinde değil (her ikisi de kayıpsızdır), depolama verimliliğindedir. BMP pikselleri ham olarak saklar: sıkıştırma yok, optimizasyon yok, alan kaygısı yok. PNG ise tekrarlanan piksel modellerini analiz eder ve ZIP\'in kullandığı aynı algoritma olan Deflate aracılığıyla bunları kompakt bir şekilde kodlar.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Üstün sıkıştırmaya ek olarak PNG, BMP\'nin hiçbir zaman sahip olmadığı bir özelliği ekler: şeffaflıklar için tam alfa kanalı. Ekran görüntüleri, arayüz grafikleri, logolar, teknik diyagramlar: tüm bu görüntü türleri, her bir renk değerini tam olarak korurken dosya ağırlığını orijinalin küçük bir kısmına düşüren PNG dönüşümünden büyük ölçüde yararlanır.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Mimari Karşılaştırması: Yerel vs Bulut',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Bulut Dönüştürücüler',
98
+ description: 'BMP dosyalarınızı üçüncü taraf sunucularda işleyen hizmetler.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'İş görüntüleriniz internette dolaşır',
103
+ 'Bekleme süresi BMP\'nin boyutuyla doğru orantılıdır',
104
+ 'Ücretsiz planlarda boyut sınırları',
105
+ 'Dosyalarınızın analiz edilmesi veya saklanması riski',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Yerel Mimarimiz',
110
+ description: 'Vanilla JS teknolojisi ile doğrudan donanımınızda işleme.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'BMP yerel olarak işlenir, cihazınızdan asla çıkmaz',
115
+ 'Milisaniyeler içinde anında dönüşüm',
116
+ 'Boyut veya dosya sayısı sınırı yok',
117
+ 'Tam gizlilik: dışarıya 0 bayt gönderilir',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'BMP\'den PNG\'ye Yerel Dönüşüm Nasıl Çalışır?',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Süreç, HTML5\'in Canvas API\'sini kullanır. BMP dosyası tarayıcının <code>FileReader</code> API\'si ile okunur ve bellekte bir Blob olarak kodu çözülür. Bu Blob, görünmez bir HTML5 tuvali üzerine çizilir. Ardından, <code>toDataURL(\'image/png\')</code> yöntemi tarayıcının yerel PNG sıkıştırma algoritmasını uygular ve sonuç dosyasını oluşturur.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'JPG\'ye dönüşümün aksine, PNG\'ye dönüşüm tamamen kayıpsızdır: orijinal BMP\'nin her renk değeri ortaya çıkan PNG\'de tam olarak korunur. Kusurlar yok, kenar yumuşatma yok, bilgi kaybı yok. Ortaya çıkan dosya görsel olarak BMP ile aynıdır ancak diskte 3 ila 5 kat daha az yer kaplar.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'BMP dışa aktaran eski yazılımlarla (endüstriyel makineler, kontrol sistemleri, tıbbi tanı yazılımları) çalışıyorsanız, PNG\'ye dönüştürmek en iyi karardır. PNG, kesinlikle tüm modern programlarla uyumludur, mükemmel renk aslına uygunluğunu korur ve 5 kata kadar daha az yer kaplar. Mümkün olan en basit ve en güvenli geçiştir.',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Elde Edilen PNG\'nin Kullanım Durumları ve Uyumluluğu',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ icon: 'mdi:check-circle',
147
+ items: [
148
+ 'Tam renkleri korunmuş ekran görüntüleri ve arayüz grafikleri.',
149
+ 'Teknik dokümantasyon görüntüleri ve yazılım diyagramları.',
150
+ 'CAD, endüstriyel sistemler ve eski yazılımlardan dışa aktarılanlar.',
151
+ 'Şeffaflık eklenmiş logolar ve görsel kimlik öğeleri.',
152
+ 'Adobe Photoshop, GIMP, Figma ve tüm modern düzenleyicilerle uyumludur.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: 'Sonuç: PNG, BMP\'nin Her Zaman Olması Gereken Şeydir',
158
+ level: 3,
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'BMP\'yi PNG\'ye dönüştürmek bir görüntü dosyasının en doğal modernizasyonudur: aynı kayıpsız kalite, daha fazla uyumluluk, şeffaflık desteği ve 3 ila 5 kat daha az ağırlık. Aracımız bu dönüşümü, herhangi bir dosya yüklemeden doğrudan tarayıcınızda milisaniyeler içinde gerçekleştirir.',
163
+ },
164
+ ];
165
+
166
+
167
+ export const content: BmpAPngLocaleContent = {
168
+ slug,
169
+ title,
170
+ description,
171
+ ui,
172
+ seo,
173
+ faq,
174
+ bibliography,
175
+ howTo,
176
+ schemas: generateSchemas({ title, description, inLanguage: 'tr', faq, howTo }),
177
+ };
@@ -0,0 +1,177 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { BmpAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'convert-bmp-to-png';
6
+ const title = 'BMP 转 PNG 转换器';
7
+ const description =
8
+ '无损地将 BMP 图像转换为 PNG。现代压缩技术,无伪影。无需上传文件。免费且 100% 私密。';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: '拖拽 BMP 文件...',
12
+ convertText: '立即将其转换为 PNG',
13
+ selectFiles: '选择文件',
14
+ processedFiles: '已处理文件',
15
+ downloadAll: '下载全部 (.zip)',
16
+ pending: '等待中',
17
+ bibliographyTitle: '参考文献',
18
+ faqTitle: '常见问题',
19
+ };
20
+
21
+ const faq: BmpAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'BMP 和 PNG 之间的主要区别是什么?',
24
+ answer:
25
+ 'BMP 和 PNG 都是无损格式。区别在于优化:PNG 能够通过现代压缩算法在保持相同图像质量的同时,占用的内存比 BMP 少 5 到 10 倍。',
26
+ },
27
+ {
28
+ question: '转换过程真的是私密的吗?',
29
+ answer:
30
+ '是的。所有的图像处理都在您的电脑上完成。在本地处理过程中,绝对没有任何人能访问您的文件。',
31
+ },
32
+ {
33
+ question: '在这种情况下,为什么选择 PNG 而不是 JPEG?',
34
+ answer:
35
+ '如果您拥有 BMP 文件,通常是因为该图像具有精确的色彩。将 BMP 转换为有损的 JPG 标准会破坏您的纯正色彩,而 PNG 则能完美保护这种色彩忠实度。',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: '载入您的照片',
42
+ text: '放心将 BMP 源文件拖入我们的网页元素投放区域。',
43
+ },
44
+ {
45
+ name: '无需网络传输的转换',
46
+ text: '只需一秒钟即可体验由您的 HTML5 JS 在本地完成的纯净处理。',
47
+ },
48
+ {
49
+ name: '获取纯正的 PNG',
50
+ text: '可以单独下载 PNG 副本,或通过压缩包一次性下载。',
51
+ },
52
+ ];
53
+
54
+ const bibliography: BmpAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'BMP File Format',
57
+ url: 'https://en.wikipedia.org/wiki/BMP_file_format',
58
+ },
59
+ {
60
+ name: 'PNG Specification W3C',
61
+ url: 'https://www.w3.org/TR/png/',
62
+ },
63
+ ];
64
+
65
+ const seo: BmpAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'BMP 转 PNG 转换器:替代 BMP 格式的无损之选',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'BMP 是一种非压缩格式,与 PNG 相比没有任何技术优势,却占用大量空间。两者都是无损格式:它们能以绝对精度保存每个像素。但 PNG 通过 Deflate 算法增加了无损压缩,在不牺牲任何视觉信息位的情况下,将文件大小减少 3 到 5 倍。从本质上讲,PNG 正是 BMP 一直想要成为的样子。',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'BMP vs PNG:相同质量,完全不同的体积',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'BMP 和 PNG 之间的根本区别不在于图像质量(两者都是无损的),而在于存储效率。BMP 原始地存储像素:无压缩、无优化、不考虑空间占用。而 PNG 会分析重复的像素模式,并使用与 ZIP 相同的 Deflate 算法进行紧凑编码。',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '除了优越的压缩性能外,PNG 还增加了 BMP 从未具备的功能:支持透明度的完整 Alpha 通道。屏幕截图、界面图形、徽标、技术图表:所有这些类型的图像都能从 PNG 转换中获益匪浅,在保持每个精确颜色值的同时,将文件重量降至原始大小的一小部分。',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: '架构对比:本地 vs 云端',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: '云端转换器',
98
+ description: '在第三方服务器上处理您的 BMP 文件的服务。',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ '您的工作图像在互联网上传输',
103
+ '等待时间与 BMP 的大小成正比',
104
+ '免费方案中的体积限制',
105
+ '文件被分析或留存的风险',
106
+ ],
107
+ },
108
+ {
109
+ title: '我们的本地架构',
110
+ description: '通过 Vanilla JS 技术在您的硬件上直接处理。',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'BMP 在本地处理,绝不离开您的设备',
115
+ '毫秒级的即时转换',
116
+ '没有体积或文件数量限制',
117
+ '完全隐私:0 字节向外传输',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: '本地 BMP 转 PNG 的工作原理',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: '该过程利用了 HTML5 的 Canvas API。BMP 文件通过浏览器的 <code>FileReader</code> API 读取并解码为内存中的 Blob。该 Blob 被绘制在不可见的 HTML5 画布上。接着,<code>toDataURL(\'image/png\')</code> 方法应用浏览器原生的 PNG 压缩算法并生成结果文件。',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: '与转换为 JPG 不同,转换为 PNG 是完全无损的:原始 BMP 的每个颜色值都会在生成的 PNG 中得到精确保留。没有伪影,没有边缘模糊,没有信息丢失。最终文件在视觉上与 BMP 完全相同,但占用的磁盘空间减少了 3 到 5 倍。',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: '如果您使用的是导出 BMP 的旧软件(工业设备、控制系统、医疗诊断软件),转换为 PNG 是最佳决策。PNG 与几乎所有现代程序兼容,保持完美的色彩忠诚度,且空间占用减少高达 5 倍。这是最简单、最安全的迁移方式。',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: '生成 PNG 的应用场景与兼容性',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ icon: 'mdi:check-circle',
147
+ items: [
148
+ '完美保留精确颜色的屏幕截图和界面图形。',
149
+ '技术文档图像和软件图表。',
150
+ 'CAD 导出、工业系统和老旧软件产出物。',
151
+ '增加了透明度的徽标和视觉识别元素。',
152
+ '兼容 Adobe Photoshop、GIMP、Figma 和所有现代编辑器。',
153
+ ],
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: '结论:PNG 是 BMP 的理想进化形式',
158
+ level: 3,
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: '将 BMP 转换为 PNG 是图像文件最自然的现代化方式:相同的无损质量、更强的兼容性、支持透明度且体积轻巧 3 到 5 倍。我们的工具在您的浏览器中直接完成此项转换,无需上传任何文件到服务器。',
163
+ },
164
+ ];
165
+
166
+
167
+ export const content: BmpAPngLocaleContent = {
168
+ slug,
169
+ title,
170
+ description,
171
+ ui,
172
+ seo,
173
+ faq,
174
+ bibliography,
175
+ howTo,
176
+ schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
177
+ };
@@ -13,9 +13,21 @@ export const bmpAPng: 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 { BmpAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'bmp-zu-webp-konvertieren';
6
+ const title = 'BMP kostenlos in WebP konvertieren';
7
+ const description =
8
+ 'Konvertieren Sie BMP-Bilder offline in WebP. Reduzieren Sie riesige Dateien auf Kilobytes. Ohne Hochladen von Dateien. Kostenlos, offline und absolut privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'BMP-Dateien hierher ziehen...',
12
+ convertText: 'Um sie sofort in WebP zu konvertieren',
13
+ selectFiles: 'Dateien auswählen',
14
+ processedFiles: 'Verarbeitete Dateien',
15
+ downloadAll: 'Alles herunterladen (.zip)',
16
+ pending: 'Ausstehend',
17
+ bibliographyTitle: 'Literaturhinweise',
18
+ faqTitle: 'Häufig gestellte Fragen',
19
+ };
20
+
21
+ const faq: BmpAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Warum belegen meine BMP-Dateien 10-mal mehr Platz und was gewinne ich mit WebP?',
24
+ answer:
25
+ 'BMP speichert unkomprimierte Pixel-Maps. WebP nutzt mathematische Kompression, um riesige BMPs auf weniger als einen Megabyte zu verkleinern, wobei das Bild absolut erkennbar bleibt.',
26
+ },
27
+ {
28
+ question: 'Muss ich ein Konto registrieren?',
29
+ answer:
30
+ 'Wir verlangen keine E-Mail und Ihr Material bleibt isoliert, da die Verarbeitung durch das in Ihrem Browser installierte JavaScript auf Ihrem PC erfolgt, ohne Fernübertragung.',
31
+ },
32
+ {
33
+ question: 'Kann ich viele Dateien gleichzeitig ziehen?',
34
+ answer:
35
+ 'Ja, Sie können 50 oder 100 Dateien ziehen, wenn Ihre Hardware in der Lage ist, alle ohne Warteschlangen zu verarbeiten.',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Rohdateien identifizieren',
42
+ text: 'Platzieren Sie Ihre Bitmap-Sammlungen in Fenstern, die für den Transfer bereit sind.',
43
+ },
44
+ {
45
+ name: 'Nativ Batch-Aktivierung',
46
+ text: 'Projizieren oder ziehen Sie alle Dateien auf unseren digitalen Tisch.',
47
+ },
48
+ {
49
+ name: 'WebP-Batch-Evakuierung',
50
+ text: 'Klicken Sie auf die Ergebnisse und Sie erhalten separat die mikroleichten Bilder oder als sofortige ZIP-Pakete.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: BmpAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'BMP File Format',
57
+ url: 'https://en.wikipedia.org/wiki/BMP_file_format',
58
+ },
59
+ {
60
+ name: 'Google WebP Documentation',
61
+ url: 'https://developers.google.com/speed/webp',
62
+ },
63
+ ];
64
+
65
+ const seo: BmpAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'BMP-zu-WebP-Konverter: Die extremste Größenreduzierung, die möglich ist',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Die Konvertierung von BMP in WebP ist zweifellos die spektakulärste Transformation, die Sie mit einem Bild durchführen können. Das BMP-Format (Bitmap) ist eines der ältesten und schwersten Formate im digitalen Ökosystem: Es speichert jedes Pixel ohne jegliche Kompression, was zu Dateien führen kann, die 20, 50 oder sogar 100 Mal schwerer sind als ihr moderner Gegenpart. WebP, entwickelt von Google, wendet Kompressionsalgorithmen der neuesten Generation an, die die Größe auf das absolut mögliche Minimum reduzieren und dabei eine exzellente visuelle Qualität beibehalten.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'Warum ist BMP so schwer und WebP so effizient?',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'Das BMP-Format entstand in den 80er Jahren für Windows, als Festplattenplatz riesig war und Kompression keine Priorität hatte. Jedes Pixel wird so gespeichert, wie es ist, ohne Reduktionsalgorithmus: Ein Bild mit 1920x1080 Pixeln belegt in BMP genau 5,93 MB, unabhängig vom Inhalt. Das macht es ideal für interne Screenshots oder verlustfreie Bearbeitung, aber völlig ungeeignet für das Web oder moderne Speicherung.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'WebP verwendet prädiktive Kompression basierend auf Blöcken und DCT-Transformationen (dieselbe Technologie, die digitalem Video zugrunde liegt) und erreicht, dass dasselbe Bild mit 1920x1080 Pixeln zwischen 80 KB und 300 KB belegt. Das entspricht einer Reduzierung von 95 bis 99 % gegenüber dem ursprünglichen BMP. Zudem unterstützt WebP den Alphakanal für Transparenzen sowie sowohl verlustbehaftete als auch verlustfreie Kompression und bietet volle Vielseitigkeit.',
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 BMP-Dateien auf einen Remote-Server hochladen, um sie zu verarbeiten.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Das Hochladen eines 20 MB BMP dauert bei langsamer Verbindung Minuten',
103
+ 'Ihre Bilder bleiben auf fremden Servern gespeichert',
104
+ 'Größenlimits, die große BMP-Dateien ausschließen',
105
+ 'Invasive Werbung und Daten-Tracker',
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
+ 'Sofortige Konvertierung ohne Netzwerktransfer',
115
+ 'Absolute Privatsphäre — 0 Bytes verlassen Ihr Gerät',
116
+ 'Keine Größenlimits pro Datei',
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: 'Beim Ziehen einer BMP-Datei liest der Browser diese als binären Blob in den RAM-Speicher. Dieser Blob wird in ein <code>Image</code>-Element von JavaScript geladen, das ihn mit der nativen Bild-Engine dekodiert. Anschließend wird das Bild auf ein unsichtbares HTML5 <code>Canvas</code>-Element gezeichnet. Das Canvas fungiert als virtuelle Leinwand, auf der das Bild Pixel für Pixel existiert.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Nachdem es auf das Canvas gezeichnet wurde, führen wir die Methode <code>toBlob()</code> mit dem MIME-Typ <code>image/webp</code> und der gewünschten Qualität aus. Der Browser wendet intern den WebP-Kompressionsalgorithmus an und generiert einen neuen Blob mit der Ergebnisdatei. Dieser Blob wird in eine direkte Download-URL umgewandelt, die Ihr Browser auf der Festplatte speichert. Zu keinem Zeitpunkt wird eine Netzwerkverbindung hergestellt.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Der größtmögliche Kompressionssprung',
138
+ html: 'Die Konvertierung von BMP in WebP kann eine Reduzierung der Dateigröße um 99 % erreichen. Ein 20 MB BMP kann in ein WebP von nur etwa 200 KB bei praktisch identischer visueller Qualität umgewandelt werden. Es ist die effizienteste verfügbare Transformation zwischen Standard-Bildformaten.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Anwendungsfälle und Kompatibilität von WebP',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Web-Veröffentlichung — Chrome, Firefox, Safari, Edge und alle modernen Browser.',
150
+ 'Soziale Netzwerke — Instagram, Twitter, Facebook akzeptieren WebP nativ.',
151
+ 'Web-Apps und PWAs — minimale Größen für sofortiges Laden.',
152
+ 'Effiziente Archivierung — ersetzt Sammlungen alter BMPs und spart Gigabytes.',
153
+ 'E-Mail-Marketing — leichte Bilder, die in jedem modernen E-Mail-Client schnell laden.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Fazit: Die wirkungsvollste Konvertierung mit nur einem Klick',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Wenn Sie alte BMP-Dateien von Windows, unkomprimierte Screenshots oder Bilder von alten Tools haben, ist die Konvertierung in WebP der wirkungsvollste Schritt, den Sie zur Optimierung Ihres Speichers und Ihrer Web-Performance unternehmen können. Mit unserem Tool erfolgt die Konvertierung sofort, privat und ohne Limits — genau so, wie es sein sollte.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: BmpAWebpLocaleContent = {
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 { BmpAWebpLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'bmp-to-webp-converter';
@@ -164,16 +164,6 @@ const seo: BmpAWebpLocaleContent['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: BmpAWebpLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: BmpAWebpLocaleContent = {
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 { BmpAWebpLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertidor-bmp-a-webp';
@@ -164,16 +164,6 @@ const seo: BmpAWebpLocaleContent['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: BmpAWebpLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: BmpAWebpLocaleContent = {
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 { BmpAWebpLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertisseur-bmp-en-webp';
@@ -164,16 +164,6 @@ const seo: BmpAWebpLocaleContent['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: BmpAWebpLocaleContent = {
179
169
  slug,
@@ -184,5 +174,5 @@ export const content: BmpAWebpLocaleContent = {
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
  };