@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 = 'konvertera-bmp-till-png';
6
+ const title = 'Konverterare från BMP till PNG';
7
+ const description =
8
+ 'Konvertera BMP-bilder till PNG utan kvalitetsförlust. Modern komprimering utan artefakter. Utan att ladda upp filer. Gratis och 100 % privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Dra BMP-filer hit...',
12
+ convertText: 'För att konvertera dem till PNG direkt',
13
+ selectFiles: 'Välj filer',
14
+ processedFiles: 'Bearbetade filer',
15
+ downloadAll: 'Ladda ner alla (.zip)',
16
+ pending: 'Väntande',
17
+ bibliographyTitle: 'Bibliografiska Referenser',
18
+ faqTitle: 'Vanliga Frågor',
19
+ };
20
+
21
+ const faq: BmpAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'Vad är den främsta skillnaden mellan BMP och PNG?',
24
+ answer:
25
+ 'Både BMP och PNG är förlustfria format. Skillnaden ligger i optimeringen: PNG förstår moderna komprimeringsalgoritmer för att spara samma bild genom att uppta 5 eller 10 gånger mindre minne än BMP.',
26
+ },
27
+ {
28
+ question: 'Är konverteringen verkligen privat?',
29
+ answer:
30
+ 'Ja. All bildbehandling görs av din dator. Absolut ingen har tillgång till dina filer under den lokala överföringen.',
31
+ },
32
+ {
33
+ question: 'Varför PNG istället för JPEG i det här fallet?',
34
+ answer:
35
+ 'Om du har en BMP-fil beror det på att bilden har exakta färger. Att omvandla en BMP till den destruktiva JPG-standarden skulle smutsa ner dina rena färger. PNG skyddar den troheten.',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Infoga ditt fotografi',
42
+ text: 'Flytta lugnt BMP-källfilerna till vårt område för att släppa webbelement.',
43
+ },
44
+ {
45
+ name: 'Konvertering utan nätverksöverföring',
46
+ text: 'Upplev på bara en sekund den rena bearbetningen som görs lokalt av din HTML5 JS.',
47
+ },
48
+ {
49
+ name: 'Få rena PNG-filer',
50
+ text: 'Ladda ner PNG-kopiorna individuellt eller via ett komprimerat paket.',
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: 'Konverterare från BMP till PNG: Den förlustfria ersättningen för BMP-formatet',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'BMP är ett format utan komprimering som upptar enorma mängder utrymme utan någon teknisk fördel jämfört med PNG. Båda är förlustfria format: de sparar varje pixel med absolut exakthet. Men PNG lägger till förlustfri komprimering genom Deflate-algoritmen, vilket minskar filstorleken mellan 3 och 5 gånger utan att offra en enda bit av visuell information. PNG är i huvudsak vad BMP alltid velat vara.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'BMP vs PNG: samma kvalitet, radikalt annorlunda storlek',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'Den grundläggande skillnaden mellan BMP och PNG ligger inte i bildkvaliteten — båda är förlustfria — utan i lagringseffektiviteten. BMP lagrar pixlar rått: utan komprimering, utan optimering, utan hänsyn till utrymme. PNG analyserar återkommande pixelmönster och kodar dem kompakt genom Deflate, samma algoritm som ZIP använder.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Förutom den överlägsna komprimeringen lägger PNG till en funktion som BMP aldrig hade: full alfakanal för transparens. Skärmdumpar, gränssnittsgrafik, logotyper, tekniska diagram: alla dessa typer av bilder drar stor nytta av konverteringen till PNG, som behåller varje exakt färgvärde samtidigt som filens vikt minskas till en bråkdel av originalet.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Arkitekturjämförelse: Lokal vs Moln',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Molnkonverterare',
98
+ description: 'Tjänster som bearbetar dina BMP-filer på tredjepartsservrar.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Dina arbetsbilder skickas över internet',
103
+ 'Väntetid proportionell mot BMP-filens storlek',
104
+ 'Storleksbegränsningar i gratisplaner',
105
+ 'Risk för analys eller lagring av dina filer',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Vår lokala arkitektur',
110
+ description: 'Direkt bearbetning på din hårdvara via Vanilla JS-teknik.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'BMP-filen bearbetas lokalt, lämnar aldrig din enhet',
115
+ 'Omedelbar konvertering på millisekunder',
116
+ 'Inga storleksbegränsningar eller begränsningar på antal filer',
117
+ 'Total integritet: 0 byte skickas externt',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Hur den lokala konverteringen från BMP till PNG fungerar',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Processen använder HTML5 Canvas API. BMP-filen läses in med webbläsarens <code>FileReader</code> API och avkodas som en Blob i minnet. Denna Blob ritas på en osynlig HTML5-canvas. Därefter tillämpar metoden <code>toDataURL(\'image/png\')</code> webbläsarens inbyggda PNG-komprimeringsalgoritm och genererar den resulterande filen.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Till skillnad från konverteringen till JPG är konverteringen till PNG helt förlustfri: varje färgvärde från den ursprungliga BMP-filen bevaras exakt i den resulterande PNG-filen. Det finns inga artefakter, ingen kantutjämning, ingen informationsförlust. Den slutliga filen är visuellt identisk med BMP men upptar mellan 3 och 5 gånger mindre utrymme på disken.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'Om du arbetar med äldre programvara som exporterar BMP (industriella maskiner, kontrollsystem, medicinsk diagnostisk programvara), är konvertering till PNG det bästa beslutet. PNG är kompatibelt med absolut alla moderna program, behåller den perfekta färgåtergivningen och upptar upp till 5 gånger mindre utrymme. Det är den enklaste och säkraste migrationen som är möjlig.',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Användningsfall och kompatibilitet för den resulterande PNG-filen',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ icon: 'mdi:check-circle',
147
+ items: [
148
+ 'Skärmdumpar och gränssnittsgrafik med exakt bevarade färger.',
149
+ 'Bilder för teknisk dokumentation och programvarudiagram.',
150
+ 'Exporter från CAD, industriella system och äldre programvara.',
151
+ 'Logotyper och varumärkeselement med tillagd transparens.',
152
+ 'Kompatibel med Adobe Photoshop, GIMP, Figma och alla moderna redigeringsprogram.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: 'Slutsats: PNG är vad BMP alltid borde ha varit',
158
+ level: 3,
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'Att konvertera BMP till PNG är den mest naturliga moderniseringen av en bildfil: samma förlustfria kvalitet, högre kompatibilitet, stöd för transparens och mellan 3 och 5 gånger mindre vikt. Vårt verktyg utför denna konvertering på millisekunder direkt i din webbläsare, utan att ladda upp någon fil till någon server.',
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: 'sv', 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-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 = '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: '在这种情况下,为什么选择 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