@jjlmoya/utils-converters 1.6.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/package.json +60 -59
  2. package/src/shared/ImageConverter.astro +2 -1
  3. package/src/shared/logic/schemas.ts +57 -0
  4. package/src/tests/faq_count.test.ts +13 -4
  5. package/src/tests/i18n_coverage.test.ts +36 -0
  6. package/src/tests/locale_completeness.test.ts +42 -0
  7. package/src/tests/no_h1_in_components.test.ts +48 -0
  8. package/src/tests/schemas_fulfillment.test.ts +23 -0
  9. package/src/tests/seo_length.test.ts +1 -1
  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,182 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'konvertera-png-till-webp';
6
+ const title = 'Konvertera PNG till WebP Online och Gratis';
7
+ const description =
8
+ 'Konvertera PNG-bilder till WebP i din webbläsare. Upp till 40 % mindre filstorlek. Bevarar transparens. Inga filuppladdningar. Gratis och privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Dra PNG-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: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Varför konvertera PNG till WebP?',
24
+ answer:
25
+ 'WebP erbjuder upp till 40 % bättre komprimering än PNG vid samma kvalitet, samtidigt som det stöder Alpha-transparens. Det är det format som rekommenderas av Google PageSpeed Insights.',
26
+ },
27
+ {
28
+ question: 'Går transparens förlorad i processen?',
29
+ answer:
30
+ 'Nej. Den tekniska implementeringen av WebP stöder alfakanalen. Transparensen i den ursprungliga PNG-filen kommer att bevaras i den nya WebP-filen.',
31
+ },
32
+ {
33
+ question: 'Skickas mina bilder till någon server?',
34
+ answer:
35
+ 'Nej. Koden körs exklusivt i din webbläsare (Client-Side). Vi ser, registrerar eller sparar aldrig de bilder du konverterar.',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Lägg till dina PNG-filer',
42
+ text: 'Släpp dina stora PNG-filer i uppladdningsområdet eller använd den traditionella interaktiva väljaren.',
43
+ },
44
+ {
45
+ name: 'Kanalidentifiering',
46
+ text: 'Den lokala renderingsmotorn kommer att identifiera och exportera pixelsammansättningen till det optimerade WebP-formatet.',
47
+ },
48
+ {
49
+ name: 'Direkt nedladdning',
50
+ text: 'Ladda ner dina högkomprimerade WebP-filer individuellt eller bunta ihop dem med hjälp av ZIP-paketkonverteraren.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Google: WebP-implementeringsdetaljer',
57
+ url: 'https://developers.google.com/speed/webp/',
58
+ },
59
+ {
60
+ name: 'W3C: Vägledning för Core Web Vitals',
61
+ url: 'https://web.dev/vitals/',
62
+ },
63
+ {
64
+ name: 'Mozilla Docs: Bildformat',
65
+ url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
+ },
67
+ ];
68
+
69
+ const seo: PngAWebpLocaleContent['seo'] = [
70
+ {
71
+ type: 'title',
72
+ text: 'PNG till WebP-konverterare: Transparens och modern komprimering för webben',
73
+ level: 2,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: '<strong>PNG</strong> har varit referensformatet för webbbilder med transparens i årtionden — logotyper, ikoner, UI-element, produktbilder på utskurna bakgrunder. Problemet är filstorleken: den förlustfria komprimeringen som garanterar kvalitet genererar också märkbart stora filer. Googles <strong>WebP</strong> löser denna motsägelse: det stöder alfakanalen (transparens) <em>och</em> komprimerar mycket bättre än PNG, vilket gör bytet från PNG till WebP på din webbplats till en perfekt optimering som inte offrar något.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNG eller WebP? När du ska använda respektive format',
82
+ level: 3,
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '<strong>PNG</strong> förblir rätt format när kompatibilitet är avgörande: designverktyg som Photoshop eller Figma, arbetsflöden för utskrift, äldre skrivbordsapplikationer eller sammanhang där WebP-stöd inte kan garanteras. Det är också det ideala formatet för att spara arbetslager i redigeringsflöden, eftersom dess förlustfria komprimering bevarar varje pixel. Kostnaden: filer som kan väga 3–8 gånger mer än deras WebP-motsvarighet.',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '<strong>WebP</strong> är den naturliga ersättaren för PNG för allt modernt webbinnehåll. Chrome, Firefox, Safari och Edge stöder det alla nativt. En förlustfri WebP-bild är 26 % mindre än motsvarande PNG; i förlustläge kan den vara upp till 40 % mindre med praktiskt taget oskiljbar visuell kvalitet. Och avgörande för webbdesign: <strong>WebP bevarar alfa-transparens</strong> exakt som PNG, utan visuella kompromisser.',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: 'Jämförelse: Lokal vs Molnkonvertering',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: 'Molnkonverterare',
102
+ description: 'Verktyg som laddar upp dina filer till en fjärrserver.',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ 'Nätverkslatens vid uppladdning och nedladdning',
107
+ 'Dina logotyper och bilder lagras på tredjepartsservrar',
108
+ 'Begränsningar i filstorlek och dagliga konverteringstak',
109
+ 'Påträngande annonser och spårare från tredje part',
110
+ ],
111
+ },
112
+ {
113
+ title: 'Vår Lokala Arkitektur',
114
+ description: 'Direkt bearbetning på din hårdvara med Vanilla JS-teknik.',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ 'Omedelbar hastighet — noll nätverkslatens',
119
+ 'Komplett integritet — 0 byte skickas externt',
120
+ 'Inga MB-gränser eller begränsningar på antal filer',
121
+ 'Rent gränssnitt, inga annonser eller spårning',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Hur det fungerar tekniskt',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'PNG-filen laddas lokalt och avkodas till ett <strong>HTML5 Canvas</strong> i minnet. Canvas-API:et bevarar alfakanalen från den ursprungliga PNG-filen — alla transparenta och halvtransparenta pixlar hålls intakta i RGBA-pixelbufferten. Canvasen exporteras sedan genom att anropa <code>toDataURL(\'image/webp\')</code>, vilket tillämpar webbläsarens WebP-codec (baserat på Googles libwebp) för att generera en mer kompakt fil utan att ändra transparensdatan.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'WebP använder två komprimeringslägen: förlustfritt läge för bilder där varje pixel måste vara exakt trogen originalet, och förlustläge för foton och element där små skillnader är omärkliga. Förlustfritt läge ger filer som är 26 % mindre än PNG; förlustläge kan uppnå minskningar på upp till 40 % jämfört med PNG med bibehållen utmärkt visuell kvalitet.',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: 'Tips: WebP vinner över både PNG och JPG på webben',
142
+ html: 'WebP i förlustfritt läge är mindre än PNG. WebP i förlustläge är mindre än JPG. Detta gör WebP till det <strong>enda formatet som ersätter båda</strong> i webbsammanhang. Konvertera dina transparenta PNG-filer till WebP innan du laddar upp dem: Google PageSpeed Insights upptäcker det och ger höga poäng i revisioner för "Leverera bilder i moderna format".',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: 'Användningsområden och kompatibilitet',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ 'Logotyper och ikoner med transparent bakgrund för webbplatser och appar.',
154
+ 'Produktbilder med utskurna bakgrunder i e-handelsbutiker.',
155
+ 'CSS-sprites och UI-element med alfa-transparens.',
156
+ 'Rastrerade illustrationer och vektorgrafik för målsidor.',
157
+ 'Artikelminiatyrer med transparent bakgrund i bloggar och nyhetsportaler.',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Slutsats',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'paragraph',
167
+ html: 'Bytet från PNG till WebP är den mest kompletta optimeringen av webbbilder som finns tillgänglig: du får lättare filer, bevarar transparens och förbättrar Core Web Vitals-mått utan att ändra någonting i din visuella design. Detta verktyg gör det omedelbart, gratis och helt privat — dina bilder bearbetas i din webbläsare och skickas aldrig till någon extern server.',
168
+ },
169
+ ];
170
+
171
+
172
+ export const content: PngAWebpLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: generateSchemas({ title, description, inLanguage: 'sv', faq, howTo }),
182
+ };
@@ -0,0 +1,182 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'png-den-webp-ye-donusturucu';
6
+ const title = 'PNG\'yi WebP\'ye Çevrimiçi ve Ücretsiz Dönüştürün';
7
+ const description =
8
+ 'PNG görüntülerini tarayıcınızda WebP\'ye dönüştürün. %40\'a varan daha küçük dosya boyutu. Şeffaflığı korur. Dosya yüklemesi yok. Ücretsiz ve özel.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'PNG dosyalarını sürükleyin...',
12
+ convertText: 'Onları anında WebP\'ye dönüştürmek için',
13
+ selectFiles: 'Dosyaları seçin',
14
+ processedFiles: 'İşlenmiş 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: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Neden PNG\'yi WebP\'ye dönüştürmeliyiz?',
24
+ answer:
25
+ 'WebP, aynı kalitede PNG\'den %40\'a kadar daha iyi sıkıştırma sağlarken Alfa şeffaflığını da destekler. Google PageSpeed Insights tarafından önerilen formattır.',
26
+ },
27
+ {
28
+ question: 'İşlem sırasında şeffaflık kaybolur mu?',
29
+ answer:
30
+ 'Hayır. WebP\'nin teknik uygulaması alfa kanalını destekler. Orijinal PNG\'nin şeffaflıkları yeni WebP dosyasında korunacaktır.',
31
+ },
32
+ {
33
+ question: 'Görüntülerim herhangi bir sunucuya gidiyor mu?',
34
+ answer:
35
+ 'Hayır. Kod yalnızca tarayıcınızda (İstemci Tarafı) çalışır. Dönüştürdüğünüz görüntüleri asla görmeyiz, kaydetmeyiz veya saklamayız.',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'PNG\'lerinizi yerleştirin',
42
+ text: 'Büyük PNG dosyalarınızı yükleme alanına bırakın veya geleneksel etkileşimli seçiciyi kullanın.',
43
+ },
44
+ {
45
+ name: 'Kanal algılama',
46
+ text: 'Yerel oluşturma motoru, piksel kompozisyonunu algılayacak ve optimize edilmiş WebP formatına aktaracaktır.',
47
+ },
48
+ {
49
+ name: 'Doğrudan İndirme',
50
+ text: 'Yüksek kaliteli sıkıştırılmış WebP dosyalarınızı tek tek indirin veya ZIP paketi dönüştürücüsünü kullanarak bir araya getirin.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Google: WebP Uygulama Detayları',
57
+ url: 'https://developers.google.com/speed/webp/',
58
+ },
59
+ {
60
+ name: 'W3C: Core Web Vitals Rehberi',
61
+ url: 'https://web.dev/vitals/',
62
+ },
63
+ {
64
+ name: 'Mozilla Docs: Görüntü Formatları',
65
+ url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
+ },
67
+ ];
68
+
69
+ const seo: PngAWebpLocaleContent['seo'] = [
70
+ {
71
+ type: 'title',
72
+ text: 'PNG\'den WebP\'ye Dönüştürücü: Web İçin Şeffaflık ve Modern Sıkıştırma',
73
+ level: 2,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: '<strong>PNG</strong>, onlarca yıldır şeffaflığa sahip web görüntüleri için referans format olmuştur — logolar, simgeler, kullanıcı arayüzü öğeleri, dekupe edilmiş arka planlara sahip ürün görüntüleri. Sorunu dosya boyutudur: kaliteyi garanti eden kayıpsız sıkıştırma aynı zamanda belirgin şekilde büyük dosyalar oluşturur. Google\'ın <strong>WebP</strong>\'si bu çelişkiyi çözer: alfa kanalını (şeffaflığı) destekler <em>ve</em> PNG\'den çok daha iyi sıkıştırır; bu da web sitenizde PNG\'den WebP\'ye geçişi hiçbir şeyden ödün vermeyen mükemmel bir optimizasyon haline getirir.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNG mi WebP mi? Her format ne zaman kullanılır',
82
+ level: 3,
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Uyumluluk kritik olduğunda <strong>PNG</strong> doğru format olmaya devam eder: Photoshop veya Figma gibi tasarım araçları, baskı iş akışları, eski masaüstü uygulamaları veya WebP desteğinin garanti edilmediği herhangi bir bağlam. Ayrıca, kayıpsız sıkıştırması her pikseli koruduğu için düzenleme süreçlerinde çalışma katmanlarını kaydetmek için ideal formattır. Maliyeti: WebP eşdeğerinden 3-8 kat daha fazla ağırlığa sahip olabilen dosyalar.',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '<strong>WebP</strong>, tüm modern web içerikleri için PNG\'nin doğal halefidir. Chrome, Firefox, Safari ve Edge web tarayıcılarının tamamı bunu yerel olarak destekler. Kayıpsız bir WebP görüntüsü, eşdeğer PNG\'den %26 daha küçüktür; kayıplı modda neredeyse ayırt edilemez görsel kalitede %40\'a kadar daha küçük olabilir. Ve web tasarımı için kritik olan: <strong>WebP, alfa şeffaflığını</strong> görsel bir taviz vermeden tıpkı PNG gibi korur.',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: 'Karşılaştırma: Yerel ve Bulut Dönüştürme',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: 'Bulut Dönüştürücüler',
102
+ description: 'Dosyalarınızı uzak bir sunucuya yükleyen araçlar.',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ 'Yükleme ve indirmede ağ gecikmesi',
107
+ 'Logolarınız ve görüntüleriniz üçüncü taraf sunucularda saklanır',
108
+ 'Dosya boyutu sınırları ve günlük dönüştürme kotaları',
109
+ 'Rahatsız edici reklamlar ve üçüncü taraf izleyiciler',
110
+ ],
111
+ },
112
+ {
113
+ title: 'Yerel Mimarimiz',
114
+ description: 'Vanilla JS teknolojisini kullanarak doğrudan donanımınızda işleme.',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ 'Anında hız — sıfır ağ gecikmesi',
119
+ 'Tam gizlilik — harici olarak gönderilen 0 bayt',
120
+ 'MB sınırı veya dosya sayısı kısıtlaması yok',
121
+ 'Temiz arayüz, reklam veya izleme yok',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Teknik olarak nasıl çalışır',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'PNG yerel olarak yüklenir ve bellekteki bir <strong>HTML5 Canvas</strong>\'a çözülür. Canvas API\'si orijinal PNG\'deki alfa kanalını korur — tüm şeffaf ve yarı şeffaf pikseller RGBA piksel arabelleğinde sağlam tutulur. Ardından tuval, şeffaflık verilerini değiştirmeden daha kompakt bir dosya oluşturmak için tarayıcının (Google\'ın libwebp tabanlı) WebP codec bileşenini uygulayan <code>toDataURL(\'image/webp\')</code> çağrısı yapılarak dışa aktarılır.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'WebP iki sıkıştırma modu kullanır: her pikselin orijinaline tam olarak sadık kalması gereken görüntüler için kayıpsız mod ve küçük farklılıkların algılanamaz olduğu fotoğraflar ve öğeler için kayıplı mod. Kayıpsız mod, PNG\'den %26 daha küçük dosyalar üretir; kayıplı mod, mükemmel görsel kaliteyi korurken PNG\'ye kıyasla %40\'a varan azalmalar elde edebilir.',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: 'İpucu: WebP web üzerinde hem PNG\'yi hem de JPG\'yi yener',
142
+ html: 'Kayıpsız moddaki WebP, PNG\'den daha küçüktür. Kayıplı moddaki WebP, JPG\'den daha küçüktür. Bu, WebP\'yi web bağlamında <strong>her ikisinin de yerini alan tek format</strong> yapar. Şeffaf PNG\'lerinizi yüklemeden önce WebP\'ye dönüştürün: Google PageSpeed Insights bunu algılar ve "Modern formatlardaki görseller sunun" denetimlerinde olumlu puan verir.',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: 'Kullanım durumları ve uyumluluk',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ 'Web siteleri ve uygulamalar için şeffaf arka plana sahip logolar ve simgeler.',
154
+ 'E-ticaret mağazalarında dekupe arka planlı ürün görselleri.',
155
+ 'Alfa şeffaflığına sahip CSS sprite\'ları ve kullanıcı arayüzü öğeleri.',
156
+ 'Açılış sayfaları için rasterleştirilmiş çizimler ve vektör grafikleri.',
157
+ 'Bloglarda ve haber portallarında şeffaf arka plana sahip makale küçük resimleri.',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Sonuç',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'paragraph',
167
+ html: 'PNG\'den WebP\'ye geçiş, mevcut en eksiksiz web görüntüsü optimizasyonudur: görsel tasarımınız hakkında hiçbir şeyi değiştirmeden daha hafif dosyalar elde eder, şeffaflığı korur ve Core Web Vitals metriklerini iyileştirir. Bu araç bunu anında, ücretsiz ve tamamen gizli bir şekilde yapar — görüntüleriniz tarayıcınızda işlenir ve asla harici bir sunucuya gitmez.',
168
+ },
169
+ ];
170
+
171
+
172
+ export const content: PngAWebpLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: generateSchemas({ title, description, inLanguage: 'tr', faq, howTo }),
182
+ };
@@ -0,0 +1,182 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'png-to-webp-converter';
6
+ const title = '在线免费将 PNG 转换为 WebP';
7
+ const description =
8
+ '在浏览器中将 PNG 图像转换为 WebP。文件体积减少高达 40%。保留透明度。无需上传文件。免费且私密。';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: '拖拽 PNG 文件...',
12
+ convertText: '立即将它们转换为 WebP',
13
+ selectFiles: '选择文件',
14
+ processedFiles: '已处理文件',
15
+ downloadAll: '下载全部 (.zip)',
16
+ pending: '等待中',
17
+ bibliographyTitle: '参考文献',
18
+ faqTitle: '常见问题',
19
+ };
20
+
21
+ const faq: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: '为什么要将 PNG 转换为 WebP?',
24
+ answer:
25
+ 'WebP 在保持相同画质的前提下, 压缩率比 PNG 高出多达 40%, 同时还支持 Alpha 透明度。它是 Google PageSpeed Insights 推荐的格式。',
26
+ },
27
+ {
28
+ question: '转换过程中会丢失透明度吗?',
29
+ answer:
30
+ '不会。WebP 的技术实现支持 Alpha 通道。原始 PNG 的透明度将完美保留在新的 WebP 文件中。',
31
+ },
32
+ {
33
+ question: '我的图片会上传到服务器吗?',
34
+ answer:
35
+ '不会。代码完全在您的浏览器(客户端)运行。我们从不查看、记录或保存您转换的图片。',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: '放入您的 PNG',
42
+ text: '将您的大體積 PNG 文件拖入上传区域, 或使用传统的交互式选择器。',
43
+ },
44
+ {
45
+ name: '通道检测',
46
+ text: '本地渲染引擎将检测像素组成并将其导出为优化后的 WebP 格式。',
47
+ },
48
+ {
49
+ name: '直接下载',
50
+ text: '您可以单独下载高压缩率的 WebP 文件, 也可以使用 ZIP 打包转换器批量下载。',
51
+ },
52
+ ];
53
+
54
+ const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Google: WebP 实现详情',
57
+ url: 'https://developers.google.com/speed/webp/',
58
+ },
59
+ {
60
+ name: 'W3C: Core Web Vitals 指南',
61
+ url: 'https://web.dev/vitals/',
62
+ },
63
+ {
64
+ name: 'Mozilla Docs: 图像格式',
65
+ url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
66
+ },
67
+ ];
68
+
69
+ const seo: PngAWebpLocaleContent['seo'] = [
70
+ {
71
+ type: 'title',
72
+ text: 'PNG 转 WebP 转换器: 为 Web 设计提供透明度与现代压缩技术',
73
+ level: 2,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: '<strong>PNG</strong> 几十年来一直是带透明度的 Web 图像的标准格式——标志、图标、UI 元素、抠图背景的产品图。其问题在于文件体积: 保证质量的无损压缩也会产生显著的大文件。Google 的 <strong>WebP</strong> 解决了这一矛盾: 它支持 Alpha 通道(透明度) <em>且</em> 压缩率远高于 PNG, 这使得在您的网站上将 PNG 切换为 WebP 成为一种不牺牲任何质量的完美优化。',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNG 还是 WebP?何时使用各格式',
82
+ level: 3,
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '当兼容性至关重要时, <strong>PNG</strong> 仍然是正确的格式: 例如 Photoshop 或 Figma 等设计工具、打印工作流、旧式桌面应用程序或任何无法保证 WebP 支持的环境。它也是保存编辑流程中工作图层的理想格式, 因为其无损压缩保留了每一个像素。代价是: 文件体积可能是同等 WebP 的 3-8 倍。',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '<strong>WebP</strong> 是所有现代 Web 内容中 PNG 的自然替代品。Chrome、Firefox、Safari 和 Edge 都原生支持它。无损 WebP 图像比同等 PNG 小 26%;在有损模式下, 它的体积可缩小高达 40%, 且视觉画质几乎无法区分。对于 Web 设计来说至关重要的一点是: <strong>WebP 像 PNG 一样保留 Alpha 透明度</strong>, 没有任何视觉权衡。',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: '对比: 本地转换 vs 云端转换',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: '云端转换器',
102
+ description: '将您的文件上传到远程服务器的工具。',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ '上传和下载时的网络延迟',
107
+ '您的徽标和图像存储在第三方服务器上',
108
+ '文件大小限制和每日转换配额',
109
+ '干扰性广告和第三方追踪器',
110
+ ],
111
+ },
112
+ {
113
+ title: '我们的本地架构',
114
+ description: '使用 Vanilla JS 技术直接在您的硬件上进行处理。',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ '即时处理——零网络延迟',
119
+ '完全私密——数据向外发送量为 0 字节',
120
+ '无 MB 限制或文件数量限制',
121
+ '界面简洁, 无广告或追踪',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: '技术原理',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'PNG 文件被本地加载并解码到内存中的 <strong>HTML5 Canvas</strong> 中。Canvas API 保留了原始 PNG 的 Alpha 通道——所有透明和半透明像素在 RGBA 像素缓冲区中保持原样。然后通过调用 <code>toDataURL(\'image/webp\')</code> 导出画布, 该方法应用浏览器的 WebP 编解码器 (基于 Google 的 libwebp) 来生成更紧凑的文件, 而不会改变透明度数据。',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'WebP 使用两种压缩模式: 无损模式适用于每一个像素都必须精确还原原始图像的情况;有损模式适用于照片和细微差异无法察觉的元素。无损模式产生的文件比 PNG 小 26%;有损模式在保持极佳视觉质量的同时, 体积可比 PNG 减少高达 40%。',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: '提示: 在 Web 端, WebP 同时超越了 PNG 和 JPG',
142
+ html: '无损模式下的 WebP 比 PNG 小。有损模式下的 WebP 比 JPG 小。这使得 WebP 成为 Web 环境下 <strong>唯一能够同时取代两者的格式</strong>。在上传之前将您的透明 PNG 转换为 WebP: Google PageSpeed Insights 会检测到这一点, 并在“以现代格式提供图像”审计中给出正面评分。',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: '应用场景与兼容性',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ '网站和应用中带透明背景的标志和图标。',
154
+ '电子商务商店中带抠图背景的产品图片。',
155
+ '带 Alpha 透明度的 CSS 精灵图和 UI 元素。',
156
+ '用于落地页的栅格化插图和矢量图形。',
157
+ '博客和新闻门户中带透明背景的文章缩略图。',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: '总结',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'paragraph',
167
+ html: '从 PNG 切换到 WebP 是目前最全面的 Web 图像优化手段: 您可以获得更轻量的文件、保留透明度, 并在不改变视觉设计的前提下改善 Core Web Vitals 指标。此工具由浏览器本地处理, 不会向任何服务器传输图片, 过程即时、免费且完全私密。',
168
+ },
169
+ ];
170
+
171
+
172
+ export const content: PngAWebpLocaleContent = {
173
+ slug,
174
+ title,
175
+ description,
176
+ ui,
177
+ seo,
178
+ faq,
179
+ bibliography,
180
+ howTo,
181
+ schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
182
+ };
@@ -16,6 +16,18 @@ export const pngAWebp: ConvertersToolEntry<ImageConverterUI> = {
16
16
  es: () => import('./i18n/es').then((m) => m.content),
17
17
  en: () => import('./i18n/en').then((m) => m.content),
18
18
  fr: () => import('./i18n/fr').then((m) => m.content),
19
+ de: () => import('./i18n/de').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