@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,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-to-png-converter';
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: 'この場合、なぜJPEGではなくPNGなのですか?',
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のJavaScriptによってローカルで行われるクリーンな処理を、わずか1秒で実感してください。',
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アルゴリズムによるロスレス圧縮を追加し、視覚情報を1ビットも犠牲にすることなく、ファイルサイズを3分の1から5分の1に削減します。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にはなかった機能を備えています。それは、透明度のための完全なアルファチャンネルです。スクリーンショット、インターフェイスグラフィックス、ロゴ、技術図面など、これらすべての種類の画像は、色値を正確に維持しながらファイルサイズを元の何分の一かに削減できる、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分の1から5分の1になります。',
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分の1から5分の1の軽量化。当ツールは、サーバーにファイルを一切アップロードすることなく、ブラウザ上で直接数ミリ秒でこの変換を実行します。',
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: 'ja', 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 = 'bmp-to-png-converter';
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: '이 경우 JPEG 대신 PNG를 선택해야 하는 이유는 무엇인가요?',
34
+ answer:
35
+ 'BMP 파일을 사용한다는 것은 이미지의 색상이 정밀하다는 것을 의미합니다. BMP를 손실 압축 방식인 JPEG로 변환하면 화질이 저하될 수 있지만, 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 to 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를 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 to PNG 로컬 변환 기술의 원리',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: '이 프로세스는 HTML5 Canvas API를 활용합니다. BMP 파일은 브라우저의 <code>FileReader</code> API를 통해 메모리에 Blob 데이터로 읽혀지며, 보이지 않는 캔버스 위에 그려집니다. 그 후 브라우저 고유의 PNG 압축 알고리즘이 적용되어 원본과 시각적으로 동일하지만 용량은 훨씬 최적화된 결과물이 생성됩니다.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'JPEG 변환과 달리 PNG 변환은 완전한 무손실 과정입니다. 원본 BMP의 모든 색상 값이 결과물에 정확하게 보존되며, 가장자리 뭉개짐이나 정보 손실이 전혀 없습니다. 최종 파일은 육안으로 구분이 불가능할 정도로 동일하면서 디스크 공간은 3~5배 더 절약해 줍니다.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: '산업용 장비, 제어 시스템 또는 의료 진단 소프트웨어와 같이 BMP 형식을 주로 사용하는 환경에서 PNG로 변환하는 것은 매우 현명한 선택입니다. 현대의 모든 프로그램과 호환되며 용량 부담을 줄여줍니다. 이는 가장 효율적이고 안전한 시스템 현대화 방안 중 하나입니다.',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: '변환된 PNG의 활용 사례 및 호환성',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ icon: 'mdi:check-circle',
147
+ items: [
148
+ '원본 색상이 완벽하게 보존된 스크린샷 및 UI 그래픽 자료.',
149
+ '기술 문서용 정밀 이미지 및 소프트웨어 다이어그램.',
150
+ 'CAD 데이터, 산업용 시스템 및 레거시 소프트웨어 파일 현대화.',
151
+ '투명 배경 테마가 적용된 로고 및 시각적 아이덴티티 요소.',
152
+ '포토샵, 피그마, GIMP 등 모든 최신 그래픽 편집 툴 지원.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: '결론: PNG는 BMP의 완벽한 미래형 대체제입니다',
158
+ level: 3,
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'BMP를 PNG로 변환하는 것은 이미지 파일의 가장 자연스러운 현대화 방법입니다. 동일한 화질을 유지하면서도 더 넓은 호환성, 투명도 지원, 그리고 대폭 줄어든 용량을 제공합니다. 당사의 도구는 서버 업로드 없이 브라우저에서 즉시 이 작업을 완료해 드립니다.',
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: 'ko', 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 = 'bmp-naar-png-converter';
6
+ const title = 'BMP naar PNG Converter';
7
+ const description =
8
+ 'Converteer BMP-afbeeldingen naar PNG zonder kwaliteitsverlies. Moderne compressie zonder artefacten. Zonder bestanden te uploaden. Gratis en 100% privé.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Sleep BMP-bestanden hierheen...',
12
+ convertText: 'Om ze direct naar PNG te converteren',
13
+ selectFiles: 'Bestanden selecteren',
14
+ processedFiles: 'Verwerkte bestanden',
15
+ downloadAll: 'Alles downloaden (.zip)',
16
+ pending: 'In afwachting',
17
+ bibliographyTitle: 'Bibliografische Referenties',
18
+ faqTitle: 'Veelgestelde Vragen',
19
+ };
20
+
21
+ const faq: BmpAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'Wat is het belangrijkste verschil tussen BMP und PNG?',
24
+ answer:
25
+ 'Zowel BMP als PNG zijn lossless formaten. Het verschil zit in de optimalisatie: PNG begrijpt moderne compressie-algoritmen om dezelfde afbeelding op te slaan met 5 of 10 keer minder geheugen dan BMP.',
26
+ },
27
+ {
28
+ question: 'Is de conversie echt privé?',
29
+ answer:
30
+ 'Ja. De volledige fotoverwerking wordt door je eigen computer gedaan. Absoluut niemand heeft toegang tot je bestanden tijdens de lokale overdracht.',
31
+ },
32
+ {
33
+ question: 'Waarom kiezen voor PNG boven JPEG in dit geval?',
34
+ answer:
35
+ 'Als je een BMP-bestand hebt, is dat omdat de afbeelding nauwkeurige kleuren heeft. Een BMP omzetten naar de destructieve JPG-standaard zou je pure kleuren vervuilen. PNG beschermt die getrouwheid.',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Plaats je Foto',
42
+ text: 'Sleep de BMP-bronbestanden gerust naar onze zone voor het loslaten van web-elementen.',
43
+ },
44
+ {
45
+ name: 'Conversie zonder Netwerkoverdracht',
46
+ text: 'Ervaar in slechts één seconde de schone verwerking die lokaal door je HTML5 JS wordt uitgevoerd.',
47
+ },
48
+ {
49
+ name: 'Ontvang Zuivere PNG\'s',
50
+ text: 'Download de PNG-replica\'s individueel of via een gecomprimeerd pakket.',
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 naar PNG Converter: De Verliesvrije Vervanging van het BMP-formaat',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'BMP is een ongecomprimeerd formaat dat enorme hoeveelheden ruimte in beslag neemt zonder enig technisch voordeel ten opzichte van PNG. Beide zijn lossless formaten: ze slaan elke pixel met absolute nauwkeurigheid op. Maar PNG voegt verliesvrije compressie toe via het Deflate-algoritme, waardoor de bestandsgrootte met 3 tot 5 keer wordt verminderd zonder dat er ook maar één bit aan visuele informatie wordt opgeofferd. PNG is in wezen wat BMP altijd al had willen zijn.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'BMP vs PNG: dezelfde kwaliteit, radicaal verschillende grootte',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'Het fundamentele verschil tussen BMP en PNG zit niet in de beeldkwaliteit — beide zijn lossless — maar in de opslagefficiëntie. BMP slaat pixels ruw op: zonder compressie, zonder optimalisatie, zonder rekening te houden met de ruimte. PNG analyseert herhalende pixelpatronen en codeert ze compact via Deflate, hetzelfde algoritme dat ZIP gebruikt.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Naast de superieure compressie voegt PNG een kenmerk toe dat BMP nooit heeft gehad: een volledig alfaknaal voor transparantie. Screenshots, interface-graphics, logo\'s, technische diagrammen: al dit soort afbeeldingen profiteren enorm van de conversie naar PNG, die elke exacte kleurwaarde behoudt terwijl het bestandsgewicht tot een fractie van het origineel wordt gereduceerd.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Vergelijking van Architectuur: Lokaal vs Cloud',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Cloud Converters',
98
+ description: 'Diensten die je BMP-bestanden verwerken op servers van derden.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Je werkafbeeldingen reizen over het internet',
103
+ 'Wachttijd proportioneel aan de grootte van de BMP',
104
+ 'Limieten voor bestandsgrootte in gratis abonnementen',
105
+ 'Risico op analyse of bewaring van je bestanden',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Onze Lokale Architectuur',
110
+ description: 'Directe verwerking op je eigen hardware via Vanilla JS-technologie.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'De BMP wordt lokaal verwerkt en verlaat nooit je apparaat',
115
+ 'Directe conversie in milliseconden',
116
+ 'Zonder limieten voor bestandsgrootte of aantal bestanden',
117
+ 'Volledige privacy: 0 bytes naar buiten verzonden',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Hoe de lokale conversie van BMP naar PNG werkt',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Het proces maakt gebruik van de Canvas API van HTML5. Het BMP-bestand wordt gelezen met de <code>FileReader</code> API van de browser en gedecodeerd als een Blob in het geheugen. Die Blob wordt getekend op een onzichtbaar HTML5 canvas. Vervolgens past de methode <code>toDataURL(\'image/png\')</code> het eigen PNG-compressiealgoritme van de browser toe en genereert het resulterende bestand.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'In tegenstelling tot de conversie naar JPG is de conversie naar PNG volledig lossless: elke kleurwaarde van de originele BMP blijft exact behouden in de resulterende PNG. Er zijn geen artefacten, geen randvervaging, geen informatieverlies. Het uiteindelijke bestand is visueel identiek aan de BMP, maar neemt 3 tot 5 keer minder schijfruimte in beslag.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'Als je werkt met oude software die BMP exporteert (industriële machines, controlesystemen, medische diagnosesoftware), is converteren naar PNG de beste beslissing. PNG is compatibel met nagenoeg alle moderne programma\'s, behoudt de perfecte kleurgetrouwheid en neemt tot 5 keer minder ruimte in beslag. Het is de eenvoudigst mogelijke en veiligste migratie.',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Gebruiksscenario\'s en compatibiliteit van de resulterende PNG',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ icon: 'mdi:check-circle',
147
+ items: [
148
+ 'Screenshots en interface-graphics met behoud van exacte kleuren.',
149
+ 'Afbeeldingen voor technische documentatie en software-diagrammen.',
150
+ 'Exports uit CAD, industriële systemen en legacy-software.',
151
+ 'Logo\'s en visuele identiteitselementen met toegevoegde transparantie.',
152
+ 'Compatibel met Adobe Photoshop, GIMP, Figma en alle moderne editors.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: 'Conclusie: PNG is wat BMP altijd had moeten zijn',
158
+ level: 3,
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'BMP naar PNG converteren is de meest natuurlijke modernisering van een afbeeldingsbestand: dezelfde lossless kwaliteit, grotere compatibiliteit, ondersteuning voor transparantie en een 3 tot 5 keer lager gewicht. Onze tool voert deze conversie in milliseconden uit, direct in je browser, zonder bestanden naar een server te uploaden.',
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: 'nl', faq, howTo }),
177
+ };