@jjlmoya/utils-converters 1.7.0 → 1.9.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/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/slug_uniqueness.test.ts +81 -0
  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 { 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
  };
@@ -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 = 'konverter-bmp-ke-webp';
6
+ const title = 'Ubah BMP ke WebP Gratis';
7
+ const description =
8
+ 'Ubah gambar BMP ke WebP secara offline. Kurangi file besar menjadi kilobyte. Tanpa mengunggah file. Gratis, offline, dan sepenuhnya pribadi.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Seret file BMP...',
12
+ convertText: 'Untuk mengubahnya ke WebP secara instan',
13
+ selectFiles: 'Pilih file',
14
+ processedFiles: 'File yang diproses',
15
+ downloadAll: 'Unduh Semua (.zip)',
16
+ pending: 'Tertunda',
17
+ bibliographyTitle: 'Referensi Bibliografi',
18
+ faqTitle: 'Pertanyaan Umum',
19
+ };
20
+
21
+ const faq: BmpAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Mengapa file BMP saya memakan ruang 10 kali lebih banyak dan apa keuntungan mengubahnya ke WebP?',
24
+ answer:
25
+ 'BMP menyimpan peta piksel tanpa kompresi. WebP menggunakan kompresi matematika untuk memperkecil BMP yang besar menjadi kurang dari satu megabyte namun tetap mempertahankan gambar yang sangat jelas.',
26
+ },
27
+ {
28
+ question: 'Apakah saya harus mendaftar akun?',
29
+ answer:
30
+ 'Kami tidak meminta email dan materi Anda akan tetap terisolasi, karena pemrosesan dilakukan oleh Javascript browser yang terpasang di PC Anda, tanpa pengiriman jarak jauh.',
31
+ },
32
+ {
33
+ question: 'Bisakah saya menyeret banyak file secara bersamaan?',
34
+ answer:
35
+ 'Ya, Anda bisa menyeret 50 atau 100 file jika perangkat keras Anda mampu memproses semuanya tanpa membuat antrean.',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Identifikasi File Mentah',
42
+ text: 'Letakkan koleksi bitmap Anda di jendela yang siap dipindahkan.',
43
+ },
44
+ {
45
+ name: 'Aktivasi Batch Native',
46
+ text: 'Proyeksikan atau seret semua file ke meja digital kami.',
47
+ },
48
+ {
49
+ name: 'Evakuasi Batch WebP',
50
+ text: 'Klik hasilnya dan Anda akan mendapatkan gambar dengan ukuran mikro secara terpisah atau sebagai paket kompresi instan.',
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: 'Konverter BMP ke WebP: Pengurangan Ukuran Paling Ekstrim yang Mungkin Terjadi',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Mengonversi BMP ke WebP tidak diragukan lagi merupakan transformasi paling spektakuler yang bisa Anda lakukan pada sebuah gambar. Format BMP (Bitmap) adalah format tertua dan terberat dalam ekosistem digital: format ini menyimpan setiap piksel tanpa kompresi apa pun, sehingga menghasilkan file yang beratnya bisa 20, 50, atau bahkan 100 kali lebih berat daripada ekuivalen modernnya. WebP, yang dikembangkan oleh Google, menerapkan algoritma kompresi mutakhir yang mengurangi ukuran hingga batas minimum yang paling mungkin terjadi sambil tetap mempertahankan kualitas visual yang luar biasa.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'Mengapa BMP sangat berat dan WebP sangat efisien?',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'Format BMP lahir pada tahun 80-an untuk Windows, ketika ruang disk sangat besar dan kompresi bukan merupakan prioritas. Setiap piksel disimpan apa adanya, tanpa algoritma pengurangan apa pun: gambar berukuran 1920x1080 piksel dalam BMP memakan tepat 5,93 MB, terlepas dari isinya. Hal ini membuatnya ideal untuk tangkapan layar internal atau pengeditan tanpa hilangnya kualitas (lossless), namun sama sekali tidak sesuai untuk web atau penyimpanan modern.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'WebP menggunakan kompresi prediktif berbasis blok dan transformasi DCT (teknologi yang sama dengan video digital), sehingga gambar berukuran 1920x1080 yang sama hanya memakan antara 80 KB dan 300 KB. Itu berarti pengurangan sebesar 95 hingga 99% dibandingkan BMP aslinya. Selain itu, WebP mendukung saluran alfa untuk transparansi dan kompresi lossy maupun lossless, menawarkan fleksibilitas total.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Perbandingan: Konverter Cloud vs Arsitektur Lokal Kami',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Konverter Cloud',
98
+ description: 'Alat yang mengunggah file BMP Anda ke server jarak jauh untuk memprosesnya.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Mengunggah BMP 20 MB butuh waktu bermenit-menit dengan koneksi lambat',
103
+ 'Gambar Anda tetap tersimpan di server pihak lain',
104
+ 'Batasan ukuran yang mengecualikan file BMP besar',
105
+ 'Iklan invasif dan pelacak data',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Arsitektur Lokal Kami',
110
+ description: 'Pemrosesan langsung di browser Anda melalui teknologi Vanilla JS dan Canvas API.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Konversi instan tanpa transfer jaringan',
115
+ 'Privasi absolut — 0 byte yang keluar dari perangkat Anda',
116
+ 'Tanpa batasan ukuran per file',
117
+ 'Berfungsi tanpa koneksi internet',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Bagaimana cara kerja konversi teknis di browser',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Saat menyeret file BMP, browser membacanya sebagai binari Blob di memori RAM. Blob ini dimuat ke dalam elemen <code>Image</code> JavaScript, yang mendeskripsinya menggunakan mesin gambar native. Selanjutnya, gambar dilukis ke atas elemen <code>Canvas</code> HTML5 yang tidak terlihat. Canvas bertindak sebagai kanvas virtual di mana gambar ada dalam bentuk piksel-demi-piksel.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Setelah dilukis di Canvas, kami menjalankan metode <code>toBlob()</code> dengan tipe MIME <code>image/webp</code> dan tingkat kualitas yang diinginkan. Browser secara internal menerapkan algoritma kompresi WebP dan menghasilkan Blob baru dengan file hasil konversi. Blob ini diubah menjadi URL unduhan langsung yang disimpan browser ke disk. Tidak ada koneksi jaringan yang dibuat setiap saat.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Loncatan kompresi terbesar yang mungkin terjadi',
138
+ html: 'Konversi dari BMP ke WebP dapat mencapai pengurangan ukuran file sebesar 99%. BMP 20 MB dapat berubah menjadi WebP yang hanya sekitar 200 KB dengan kualitas visual yang hampir identik. Ini adalah transformasi paling efisien yang tersedia di antara format gambar standar.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Kasus penggunaan dan kompatibilitas WebP',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Publikasi web — Chrome, Firefox, Safari, Edge, dan semua browser modern.',
150
+ 'Jejaring sosial — Instagram, Twitter, Facebook menerima WebP secara native.',
151
+ 'Aplikasi web dan PWA — ukuran minimum untuk pemuatan instan.',
152
+ 'Pengarsipan efisien — menggantikan koleksi BMP warisan dengan penghematan gigabyte.',
153
+ 'Pemasaran email — gambar ringan yang memuat cepat di klien email modern mana pun.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Kesimpulan: Konversi paling berdampak dalam satu klik',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Jika Anda memiliki file BMP warisan dari Windows, tangkapan layar tanpa kompresi, atau gambar dari alat lama, mengubahnya ke WebP adalah tindakan paling berdampak yang dapat Anda lakukan untuk mengoptimalkan penyimpanan dan kinerja web Anda. Dengan alat kami, konversi instan, pribadi, dan tanpa batas — persis seperti yang seharusnya.',
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: 'id', 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 { BmpAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'convertitore-bmp-a-webp';
6
+ const title = 'Convertire BMP in WebP Gratis';
7
+ const description =
8
+ 'Converti le immagini BMP in WebP offline. Riduci file enormi a kilobyte. Senza caricare file su server. Gratuito, offline e completamente privato.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Trascina i file BMP...',
12
+ convertText: 'Per convertirli in WebP istantaneamente',
13
+ selectFiles: 'Seleziona i file',
14
+ processedFiles: 'File elaborati',
15
+ downloadAll: 'Scarica tutto (.zip)',
16
+ pending: 'In attesa',
17
+ bibliographyTitle: 'Riferimenti Bibliografici',
18
+ faqTitle: 'Domande Frequenti',
19
+ };
20
+
21
+ const faq: BmpAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Perché i miei file BMP occupano 10 volte di più e cosa guadagno ad averli in WebP?',
24
+ answer:
25
+ 'Il BMP salva mappe di pixel non compresse. Il WebP usa una compressione matematica per ridurre enormi BMP a meno di un megabyte mantenendo l\'immagine estremamente riconoscibile.',
26
+ },
27
+ {
28
+ question: 'Devo registrare un account?',
29
+ answer:
30
+ 'Non richiediamo email e il tuo materiale rimarrà isolato, poiché l\'elaborazione viene eseguita dal Javascript del browser installato sul tuo PC, senza invio remoto.',
31
+ },
32
+ {
33
+ question: 'Posso trascinare molti file contemporaneamente?',
34
+ answer:
35
+ 'Sì, puoi trascinare 50 o 100 file se il tuo hardware regge l\'elaborazione di tutti senza creare code.',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Identificare i file grezzi',
42
+ text: 'Posiziona le tue collezioni di mappe bit in finestre pronte per il trasferimento.',
43
+ },
44
+ {
45
+ name: 'Attivazione Nativa del Batch',
46
+ text: 'Proietta o trascina tutti i file sulla nostra tavola digitale.',
47
+ },
48
+ {
49
+ name: 'Evacuazione del Batch WebP',
50
+ text: 'Clicca sui risultati e otterrai separatamente l\'immagine in disco dai micro-pesi o come file compressi immediati.',
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: 'Convertitore BMP a WebP: La Riduzione di Dimensioni Più Estrema Possibile',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Convertire BMP in WebP è, senza dubbio, la trasformazione più spettacolare che si possa fare con un\'immagine. Il formato BMP (Bitmap) è il formato più antico e pesante dell\'ecosistema digitale: memorizza ogni pixel senza alcun tipo di compressione, risultando in file che possono pesare 20, 50 o anche 100 volte più del loro equivalente moderno. Il WebP, sviluppato da Google, applica algoritmi di compressione di ultima generazione che riducono le dimensioni al minimo possibile mantenendo un\'eccellente qualità visiva.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'Perché il BMP è così pesante e il WebP così efficiente?',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'Il formato BMP è nato negli anni \'80 per Windows, quando lo spazio su disco era enorme e la compressione non era una priorità. Ogni pixel viene salvato così com\'è, senza alcun algoritmo di riduzione: un\'immagine di 1920x1080 pixel in BMP occupa esattamente 5,93 MB, indipendentemente dal suo contenuto. Questo lo rende ideale per screenshot interni o editing senza perdite, ma completamente inappropriato per il web o l\'archiviazione moderna.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'WebP utilizza una compressione predittiva basata su blocchi e trasformate DCT (la stessa tecnologia che sta alla base del video digitale), riuscendo a far sì che la stessa immagine da 1920x1080 occupi tra 80 KB e 300 KB. Ciò comporta una riduzione dal 95 al 99% rispetto al BMP originale. Inoltre, WebP supporta il canale alfa per le trasparenze e compressioni sia con perdita che senza perdita, offrendo una versatilità totale.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Confronto: Convertitori Cloud vs La Nostra Architettura Locale',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Convertitori Cloud',
98
+ description: 'Strumenti che caricano i tuoi file BMP su un server remoto per elaborarli.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Caricare un BMP da 20 MB richiede minuti con una connessione lenta',
103
+ 'Le tue immagini rimangono memorizzate su server altrui',
104
+ 'Limiti di dimensione che escludono file BMP di grandi dimensioni',
105
+ 'Pubblicità invasiva e tracker di dati',
106
+ ],
107
+ },
108
+ {
109
+ title: 'La Nostra Architettura Locale',
110
+ description: 'Elaborazione diretta nel tuo browser tramite tecnologia Vanilla JS e Canvas API.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Conversione istantanea senza trasferimento di rete',
115
+ 'Privatatezza assoluta — 0 byte escono dal tuo dispositivo',
116
+ 'Senza limiti di dimensione per file',
117
+ 'Funziona senza connessione a Internet',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Come funziona la conversione tecnica nel browser',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Trascinando un file BMP, il browser lo legge come un Blob binario nella memoria RAM. Questo Blob viene caricato in un elemento <code>Image</code> di JavaScript, che lo decodifica usando il motore di immagini nativo. Successivamente, l\'immagine viene dipinta su un elemento <code>Canvas</code> HTML5 invisibile. Il Canvas funge da tela virtuale dove l\'immagine esiste nella sua forma pixel per pixel.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Una volta dipinta sul Canvas, eseguiamo il metodo <code>toBlob()</code> con il tipo MIME <code>image/webp</code> e il livello di qualità desiderato. Il browser applica internamente l\'algoritmo di compressione WebP e genera un nuovo Blob con il file risultante. Questo Blob viene convertito in un URL di download diretto che il tuo browser salva su disco. In nessun momento viene stabilita alcuna connessione di rete.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Il più grande salto di compressione possibile',
138
+ html: 'La conversione da BMP a WebP può ottenere una riduzione del 99% della dimensione del file. Un BMP da 20 MB può trasformarsi in un WebP di appena 200 KB con una qualità visiva praticamente identica. È la trasformazione più efficiente disponibile tra i formati di immagine standard.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Casi d\'uso e compatibilità di WebP',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Pubblicazione web — Chrome, Firefox, Safari, Edge e tutti i browser moderni.',
150
+ 'Social network — Instagram, Twitter, Facebook accettano WebP in modo nativo.',
151
+ 'Applicazioni web e PWA — dimensioni minime per caricamento istantaneo.',
152
+ 'Archiviazione efficiente — sostituisce collezioni di BMP legacy risparmiando gigabyte.',
153
+ 'Email marketing — immagini leggere che caricano velocemente in qualsiasi client mail moderno.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Conclusione: La conversione più impattante in un solo clic',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Se hai file BMP ereditati da Windows, screenshot non compressi o immagini da strumenti datati, convertirli in WebP è l\'azione più impattante che puoi intraprendere per ottimizzare lo spazio di archiviazione e le prestazioni web. Con il nostro strumento, la conversione è istantanea, privata e senza limiti — esattamente come dovrebbe essere.',
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: 'it', faq, howTo }),
178
+ };