@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 = 'konvertera-bmp-till-webp';
6
+ const title = 'Konvertera BMP till WebP Gratis';
7
+ const description =
8
+ 'Konvertera BMP-bilder till WebP offline. Minska enorma filer till kilobyte. Utan att ladda upp filer. Gratis, offline och helt privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Dra BMP-filer hit...',
12
+ convertText: 'För att konvertera dem till WebP 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: BmpAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Varför tar mina BMP-filer 10 gånger mer plats och vad vinner jag på att ha dem i WebP?',
24
+ answer:
25
+ 'BMP sparar okomprimerade pixelkartor. WebP använder matematisk komprimering för att minska enorma BMP:er till mindre än en megabyte samtidigt som bilden förblir extremt igenkännbar.',
26
+ },
27
+ {
28
+ question: 'Måste jag registrera ett konto?',
29
+ answer:
30
+ 'Vi kräver ingen e-post och ditt material förblir isolerat, eftersom processen utförs av webbläsarens JavaScript som är installerat på din dator, utan fjärrsändning.',
31
+ },
32
+ {
33
+ question: 'Kan jag dra många filer samtidigt?',
34
+ answer:
35
+ 'Ja, du kan dra 50 eller 100 filer om din hårdvara klarar av att bearbeta alla utan att skapa köer.',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Identifiera råfiler',
42
+ text: 'Placera dina bitmappskollektioner i fönster som är redo för överföring.',
43
+ },
44
+ {
45
+ name: 'Inbyggd batch-aktivering',
46
+ text: 'Flytta eller dra alla filer till vårt digitala bord.',
47
+ },
48
+ {
49
+ name: 'WebP batch-evakuering',
50
+ text: 'Klicka på resultaten så får du separat bilderna med mikrovikt eller som omedelbara ZIP-paket.',
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: 'Konverterare BMP till WebP: Den mest extrema storleksminskningen som är möjlig',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Att konvertera BMP till WebP är utan tvekan den mest spektakulära transformationen du kan göra med en bild. BMP-formatet (Bitmap) är ett av de äldsta och tyngsta formaten i det digitala ekosystemet: det lagrar varje pixel utan någon form av komprimering, vilket resulterar i filer som kan väga 20, 50 eller till och med 100 gånger mer än deras moderna motsvarighet. WebP, utvecklat av Google, tillämpar senaste generationens komprimeringsalgoritmer som minskar storleken till det absolut möjliga minimumet samtidigt som en utmärkt visuell kvalitet bibehålls.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'Varför är BMP så tungt och WebP så effektivt?',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'BMP-formatet föddes på 80-talet för Windows, när diskutrymmet var enormt och komprimering inte var en prioritet. Varje pixel sparas som den är, utan någon reduktionsalgoritm: en bild på 1920x1080 pixlar i BMP upptar exakt 5,93 MB, oberoende av dess innehåll. Detta gör det idealiskt för interna skärmdumpar eller redigering utan förlust, men helt olämpligt för webben eller modern lagring.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'WebP använder prediktiv komprimering baserad på block och DCT-transformering (samma teknik som ligger till grund för digital video), vilket gör att samma 1920x1080-bild upptar mellan 80 KB och 300 KB. Det innebär en minskning på 95 till 99% jämfört med den ursprungliga BMP-filen. Dessutom stöder WebP alfakanal för transparens och både förlustbringande och förlustfri komprimering, vilket erbjuder total mångsidighet.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Jämförelse: Molnkonverterare vs Vår lokala arkitektur',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Molnkonverterare',
98
+ description: 'Verktyg som laddar upp dina BMP-filer till en fjärrserver för bearbetning.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Att ladda upp en 20 MB BMP tar minuter med långsam anslutning',
103
+ 'Dina bilder förblir lagrade på andras servrar',
104
+ 'Storleksbegränsningar som utesluter stora BMP-filer',
105
+ 'Invasiv reklam och dataspårare',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Vår lokala arkitektur',
110
+ description: 'Direkt bearbetning i din webbläsare via Vanilla JS-teknik och Canvas API.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Omedelbar konvertering utan nätverksöverföring',
115
+ 'Absolut integritet — 0 byte lämnar din enhet',
116
+ 'Inga storleksbegränsningar per fil',
117
+ 'Fungerar utan internetanslutning',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Hur den tekniska konverteringen fungerar i webbläsaren',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'När du drar en BMP-fil läser webbläsaren den som en binär Blob i RAM-minnet. Denna Blob laddas in i ett <code>Image</code>-element i JavaScript, som avkodar det med den inbyggda bildmotorn. Därefter ritas bilden på ett osynligt HTML5-elemet <code>Canvas</code>. Canvas fungerar som en virtuell duk där bilden existerar i sin form pixel för pixel.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'När den ritas på Canvas kör vi metoden <code>toBlob()</code> med MIME-typen <code>image/webp</code> och önskad kvalitetsnivå. Webbläsaren tillämpar internt WebP-komprimeringsalgoritmen och genererar en ny Blob med den resulterande filen. Denna Blob omvandlas till en direkt nedladdnings-URL som din webbläsare sparar på disken. Vid inget tillfälle etableras någon nätverksanslutning.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Det största möjliga komprimeringssprånget',
138
+ html: 'Konvertering från BMP till WebP kan uppnå en minskning av filstorleken på 99%. En 20 MB BMP kan förvandlas till en WebP på knappt 200 KB med praktiskt taget identisk visuell kvalitet. Det är den mest effektiva transformationen tillgänglig bland standardbildformat.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Användningsfall och kompatibilitet för WebP',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Webbpublicering — Chrome, Firefox, Safari, Edge och alla moderna webbläsare.',
150
+ 'Sociala nätverk — Instagram, Twitter, Facebook accepterar WebP lokalt.',
151
+ 'Webbappar och PWA — minimala storlekar för omedelbar laddning.',
152
+ 'Effektiv arkivering — ersätter kollektioner av gamla BMP:er och sparar gigabyte.',
153
+ 'E-postmarknadsföring — lätta bilder som laddas snabbt i alla moderna e-postklienter.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Slutsats: Den mest effektfulla konverteringen med ett enda klick',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Om du har gamla BMP-filer från Windows, okomprimerade skärmdumpar eller bilder från gamla verktyg, är konvertering till WebP den mest effektfulla åtgärden du kan vidta för att optimera din lagring och webbprestanda. Med vårt verktyg är konverteringen omedelbar, privat och utan begränsningar — precis som den ska vara.',
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: 'sv', 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 = 'bmp-webp-donusturucu';
6
+ const title = 'Ücretsiz BMP\'den WebP\'ye Dönüştür';
7
+ const description =
8
+ 'BMP görüntülerini çevrimdışı olarak WebP\'ye dönüştürün. Devasa dosyaları kilobaytlara düşürün. Dosya yüklemeden. Ücretsiz, çevrimdışı ve tamamen özel.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'BMP dosyalarını buraya sürükleyin...',
12
+ convertText: 'Anında WebP\'ye dönüştürmek için',
13
+ selectFiles: 'Dosyaları seçin',
14
+ processedFiles: 'İşlenen dosyalar',
15
+ downloadAll: 'Tümünü İndir (.zip)',
16
+ pending: 'Bekliyor',
17
+ bibliographyTitle: 'Bibliyografik Referanslar',
18
+ faqTitle: 'Sıkça Sorulan Sorular',
19
+ };
20
+
21
+ const faq: BmpAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'BMP dosyalarım neden 10 kat daha fazla yer kaplıyor ve WebP\'ye sahip olmanın bana avantajı ne?',
24
+ answer:
25
+ 'BMP, sıkıştırılmamış piksel haritalarını saklar. WebP ise devasa BMP\'leri bir megabayttan daha az bir boyuta düşürmek için matematiksel sıkıştırma kullanırken görüntünün son derece tanınabilir kalmasını sağlar.',
26
+ },
27
+ {
28
+ question: 'Hesap açmam gerekiyor mu?',
29
+ answer:
30
+ 'E-posta talep etmiyoruz ve materyaliniz izole kalacaktır, çünkü işleme PC\'nize yüklü olan tarayıcının Javascript\'i tarafından uzaktan gönderim olmadan gerçekleştirilir.',
31
+ },
32
+ {
33
+ question: 'Aynı anda çok sayıda dosya sürükleyebilir miyim?',
34
+ answer:
35
+ 'Evet, donanımınız kuyruk oluşturmadan hepsini işlemeyi kaldırabiliyorsa 50 veya 100 dosyayı sürükleyebilirsiniz.',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Ham Dosyaları Tanımlayın',
42
+ text: 'Bit haritası koleksiyonlarınızı aktarıma hazır pencerelere yerleştirin.',
43
+ },
44
+ {
45
+ name: 'Yerel Toplu Etkinleştirme',
46
+ text: 'Tüm dosyaları dijital masamıza yansıtın veya sürükleyin.',
47
+ },
48
+ {
49
+ name: 'WebP Toplu Boşaltma',
50
+ text: 'Sonuçlara tıkladığınızda mikro boyutlu görüntüleri ayrı ayrı veya anlık sıkıştırılmış paketler olarak alacaksınız.',
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\'den WebP\'ye Dönüştürücü: Mümkün Olan En Uç Boyut Azaltma',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'BMP\'yi WebP\'ye dönüştürmek, şüphesiz bir görüntüyle yapabileceğiniz en görkemli dönüştürmedir. BMP (Bitmap) formatı, dijital ekosistemin en eski ve en ağır formatıdır: her pikseli herhangi bir sıkıştırma olmadan saklar, bu da modern eşdeğerinden 20, 50 hatta 100 kat daha ağır olabilen dosyalarla sonuçlanır. Google tarafından geliştirilen WebP, mükemmel görsel kaliteyi korurken boyutu mümkün olan en düşük seviyeye indiren son nesil sıkıştırma algoritmalarını uygular.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'BMP neden bu kadar ağır ve WebP neden bu kadar verimli?',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'BMP formatı, disk alanının devasa olduğu ve sıkıştırmanın öncelik olmadığı 80\'li yılların Windows\'u için doğdu. Her piksel olduğu gibi saklanır, herhangi bir azaltma algoritması yoktur: BMP\'deki 1920x1080 piksellik bir görüntü içeriğinden bağımsız olarak tam olarak 5,93 MB yer kaplar. Bu, onu dahili ekran görüntüleri veya kayıpsız düzenleme için ideal hale getirir ancak web veya modern depolama için tamamen uygunsuz kılar.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'WebP, bloklar ve DCT dönüşümleri tabanlı tahmini sıkıştırma kullanarak (dijital videonun temelindeki aynı teknoloji) aynı 1920x1080 görüntünün 80 KB ile 300 KB arasında yer kaplamasını sağlar. Bu, orijinal BMP\'ye kıyasla %95 ile %99 arasında bir azalma anlamına gelir. Ayrıca WebP, şeffaflıklar için alfa kanalını ve hem kayıplı hem de kayıpsız sıkıştırmayı destekleyerek tam bir çok yönlülük sunar.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Karşılaştırma: Bulut Dönüştürücüler vs Yerel Mimarimiz',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Bulut Dönüştürücüler',
98
+ description: 'Dosyalarınızı işlemek için uzak bir sunucuya yükleyen araçlar.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ '20 MB\'lık bir BMP\'yi yüklemek yavaş bağlantıda dakikalar sürer',
103
+ 'Görüntüleriniz başkalarının sunucularında saklanır',
104
+ 'Büyük BMP dosyalarını dışlayan boyut sınırları',
105
+ 'Müdahaleci reklamlar ve veri izleyicileri',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Yerel Mimarimiz',
110
+ description: 'Vanilla JS teknolojisi ve Canvas API aracılığıyla doğrudan tarayıcınızda işleme.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Ağ aktarımı olmadan anında dönüşüm',
115
+ 'Mutlak gizlilik — cihazınızdan 0 bayt çıkar',
116
+ 'Dosya başına boyut sınırı yok',
117
+ 'İnternet bağlantısı olmadan çalışır',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Tarayıcıda teknik dönüşüm nasıl çalışır?',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Bir BMP dosyasını sürüklediğinizde, tarayıcı onu RAM belleğindeki ikili bir Blob olarak okur. Bu Blob, JavaScript\'in yerel görüntü motorunu kullanarak kodunu çözen bir <code>Image</code> öğesine yüklenir. Ardından, görüntü görünmez bir <code>Canvas</code> HTML5 öğesi üzerine çizilir. Tuval, görüntünün piksel piksel formunda bulunduğu sanal bir tuval görevi görür.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Tuval üzerine çizildikten sonra, <code>image/webp</code> MIME türü ve istenen kalite seviyesi ile <code>toBlob()</code> yöntemini çalıştırıyoruz. Tarayıcı dahili olarak WebP sıkıştırma algoritmasını uygular ve sonuç dosyasıyla yeni bir Blob oluşturur. Bu Blob, tarayıcınızın diske kaydettiği doğrudan bir indirme URL\'sine dönüştürülür. Hiçbir zaman ağ bağlantısı kurulmaz.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Mümkün olan en büyük sıkıştırma sıçraması',
138
+ html: 'BMP\'den WebP\'ye dönüşüm, dosya boyutunda %99\'luk bir azalma sağlayabilir. 20 MB\'lık bir BMP, görsel olarak neredeyse özdeş kalitede yaklaşık 200 KB\'lık bir WebP\'ye dönüşebilir. Standart görüntü formatları arasında mevcut olan en verimli dönüştürmedir.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'WebP\'nin kullanım durumları ve uyumluluğu',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Web yayını — Chrome, Firefox, Safari, Edge ve tüm modern tarayıcılar.',
150
+ 'Sosyal ağlar — Instagram, Twitter, Facebook WebP\'yi yerel olarak kabul eder.',
151
+ 'Web uygulamaları ve PWA — anında yükleme için minimum boyutlar.',
152
+ 'Verimli arşivleme — eski BMP koleksiyonlarını değiştirerek gigabaytlarca tasarruf sağlar.',
153
+ 'E-posta pazarlaması — herhangi bir modern e-posta istemcisinde hızlı yüklenen hafif görüntüler.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Sonuç: Tek tıklamayla en etkili dönüştürme',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Eğer elinizde Windows\'tan kalma eski BMP dosyaları, sıkıştırılmamış ekran görüntüleri veya eski araçlardan görüntüler varsa, bunları WebP\'ye dönüştürmek, depolama alanınızı ve web performansınızı optimize etmek için atabileceğiniz en etkili adımdır. Aracımızla dönüşüm anında, özel ve sınırsızdır — tam olması gerektiği gibi.',
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: 'tr', faq, howTo }),
178
+ };
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { BmpAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'bmp-to-webp-converter';
6
+ const title = '免费将 BMP 转换为 WebP';
7
+ const description =
8
+ '离线将 BMP 图像转换为 WebP。将巨大文件缩减至千字节。无需上传文件。免费、离线且完全私密。';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: '拖拽 BMP 文件...',
12
+ convertText: '立即将其转换为 WebP',
13
+ selectFiles: '选择文件',
14
+ processedFiles: '已处理文件',
15
+ downloadAll: '下载全部 (.zip)',
16
+ pending: '等待中',
17
+ bibliographyTitle: '参考文献',
18
+ faqTitle: '常见问题',
19
+ };
20
+
21
+ const faq: BmpAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: '为什么我的 BMP 文件占用空间大 10 倍?转换为 WebP 有什么好处?',
24
+ answer:
25
+ 'BMP 存储的是未经压缩的像素图。WebP 使用数学压缩技术,在保持图像极高辨识度的同时,将巨大的 BMP 缩减到不到 1MB。',
26
+ },
27
+ {
28
+ question: '我需要注册账户吗?',
29
+ answer:
30
+ '我们不要求提供电子邮件,您的资料将保持隔离状态,因为处理是由您电脑上安装的浏览器 JavaScript 完成的,无需远程传输。',
31
+ },
32
+ {
33
+ question: '我可以同时拖入多个文件吗?',
34
+ answer:
35
+ '是的,如果您的硬件能够承受,您可以同时拖入 50 或 100 个文件进行处理,而无需排队。',
36
+ },
37
+ ];
38
+
39
+ const howTo: BmpAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: '识别原始文件',
42
+ text: '将您的位图集合放在准备好传输的窗口中。',
43
+ },
44
+ {
45
+ name: '原生批量激活',
46
+ text: '将所有文件投影或拖拽到我们的数字工作台上。',
47
+ },
48
+ {
49
+ name: '导出 WebP 批量文件',
50
+ text: '点击结果,您将分别获得极小体积的图像,或作为即时压缩包下载。',
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 转 WebP 转换器:最极限的文件瘦身方案',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '将 BMP 转换为 WebP 与无疑是您可以对图像进行的、最令人惊叹的转变。BMP(位图)格式是数字生态系统中最古老、最笨重的格式之一:它不经任何压缩地存储每个像素,导致文件的体积可能是其现代等效格式的 20、50 甚至 100 倍。由 Google 开发的 WebP 应用了最先进的压缩算法,在保持出色视觉质量的同时,将体积缩减到极致。',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: '为什么 BMP 如此笨重,而 WebP 如此高效?',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'BMP 格式诞生于 80 年底的 Windows 系统,当时硬盘空间巨大且压缩并非首要任务。每个像素都原样保存,没有任何缩减算法:一张 1920x1080 像素的图像在 BMP 中正好占用 5.93 MB,与其内容无关。这使其成为内部截图或无损编辑的理想选择,但完全不适合网页或现代存储。',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'WebP 使用基于块的预测压缩和 DCT 变换(与数字视频背后的技术相同),使得同样的 1920x1080 图像仅占用 80 KB 到 300 KB。这意味着比原始 BMP 减少了 95% 到 99%。此外,WebP 支持透明度 Alpha 通道以及有损和无损压缩,提供了全面的通用性。',
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
+ '在慢速连接下上传 20 MB 的 BMP 需要几分钟',
103
+ '您的图像存储在他人的服务器上',
104
+ '体积限制排除了大型 BMP 文件',
105
+ '侵入性广告和数据追踪器',
106
+ ],
107
+ },
108
+ {
109
+ title: '我们的本地架构',
110
+ description: '通过 Vanilla JS 技术和 Canvas API 在您的浏览器中直接处理。',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ '无需网络传输,即时转换',
115
+ '绝对隐私——0 字节离开您的设备',
116
+ '不限单个文件的大小',
117
+ '无需互联网连接即可工作',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: '浏览器本地转换的技术原理',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: '拖拽 BMP 文件时,浏览器将其作为二进制 Blob 读取到 RAM 内存中。该 Blob 被加载到 JavaScript 的 <code>Image</code> 元素中,使用原生图像引擎进行解码。接着,图像被绘制在不可见的 HTML5 <code>Canvas</code> 元素上。Canvas 充当虚拟画布,图像以像素对像素的形式存在于其中。',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: '在 Canvas 上绘制完成后,我们运行 <code>toBlob()</code> 方法,并指定 MIME 类型为 <code>image/webp</code> 以及所需的质量等级。浏览器内部应用 WebP 压缩算法,生成包含结果文件的新 Blob。该 Blob 被转换为浏览器保存到硬盘的直接下载 URL。整个过程不建立任何网络连接。',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: '最大的压缩跨度',
138
+ html: 'BMP 到 WebP 的转换可以实现 99% 的文件体积缩减。一张 20 MB 的 BMP 可以在视觉质量几乎完全相同的情况下,变成仅约 200 KB 的 WebP。这是标准图像格式之间最有效的转换。',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'WebP 的应用场景与兼容性',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ '网页发布——Chrome、Firefox、Safari、Edge 及所有现代浏览器均支持。',
150
+ '社交网络——Instagram、Twitter、Facebook 原生接受 WebP。',
151
+ '网页应用与 PWA——极小体积实现即时加载。',
152
+ '高效归档——替换陈旧的 BMP 集合,节省数以 GB 计的空间。',
153
+ '邮件营销——轻量级图像,在任何现代邮件客户端中都能快速加载。',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: '结论:一键实现最具冲击力的转换',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: '如果您有来自 Windows 的陈旧 BMP 文件、未经压缩的截图或来自旧工具的图像,将它们转换为 WebP 是优化存储和网页性能的最有效行动。使用我们的工具,转换是即时的、私密的且无限制的——正应如此。',
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: 'zh', faq, howTo }),
178
+ };
@@ -13,9 +13,21 @@ export const bmpAWebp: 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