@jjlmoya/utils-converters 1.7.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 (345) 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/title_quality.test.ts +55 -0
  10. package/src/tool/avifAJpg/i18n/de.ts +178 -0
  11. package/src/tool/avifAJpg/i18n/en.ts +2 -12
  12. package/src/tool/avifAJpg/i18n/es.ts +2 -12
  13. package/src/tool/avifAJpg/i18n/fr.ts +2 -12
  14. package/src/tool/avifAJpg/i18n/id.ts +178 -0
  15. package/src/tool/avifAJpg/i18n/it.ts +178 -0
  16. package/src/tool/avifAJpg/i18n/ja.ts +178 -0
  17. package/src/tool/avifAJpg/i18n/ko.ts +178 -0
  18. package/src/tool/avifAJpg/i18n/nl.ts +178 -0
  19. package/src/tool/avifAJpg/i18n/pl.ts +178 -0
  20. package/src/tool/avifAJpg/i18n/pt.ts +178 -0
  21. package/src/tool/avifAJpg/i18n/ru.ts +178 -0
  22. package/src/tool/avifAJpg/i18n/sv.ts +178 -0
  23. package/src/tool/avifAJpg/i18n/tr.ts +178 -0
  24. package/src/tool/avifAJpg/i18n/zh.ts +178 -0
  25. package/src/tool/avifAJpg/index.ts +13 -1
  26. package/src/tool/avifAPng/i18n/de.ts +178 -0
  27. package/src/tool/avifAPng/i18n/en.ts +2 -12
  28. package/src/tool/avifAPng/i18n/es.ts +2 -12
  29. package/src/tool/avifAPng/i18n/fr.ts +2 -12
  30. package/src/tool/avifAPng/i18n/id.ts +178 -0
  31. package/src/tool/avifAPng/i18n/it.ts +178 -0
  32. package/src/tool/avifAPng/i18n/ja.ts +178 -0
  33. package/src/tool/avifAPng/i18n/ko.ts +178 -0
  34. package/src/tool/avifAPng/i18n/nl.ts +178 -0
  35. package/src/tool/avifAPng/i18n/pl.ts +178 -0
  36. package/src/tool/avifAPng/i18n/pt.ts +178 -0
  37. package/src/tool/avifAPng/i18n/ru.ts +178 -0
  38. package/src/tool/avifAPng/i18n/sv.ts +178 -0
  39. package/src/tool/avifAPng/i18n/tr.ts +178 -0
  40. package/src/tool/avifAPng/i18n/zh.ts +178 -0
  41. package/src/tool/avifAPng/index.ts +13 -1
  42. package/src/tool/avifAWebp/i18n/de.ts +178 -0
  43. package/src/tool/avifAWebp/i18n/en.ts +2 -12
  44. package/src/tool/avifAWebp/i18n/es.ts +2 -12
  45. package/src/tool/avifAWebp/i18n/fr.ts +2 -12
  46. package/src/tool/avifAWebp/i18n/id.ts +178 -0
  47. package/src/tool/avifAWebp/i18n/it.ts +178 -0
  48. package/src/tool/avifAWebp/i18n/ja.ts +178 -0
  49. package/src/tool/avifAWebp/i18n/ko.ts +178 -0
  50. package/src/tool/avifAWebp/i18n/nl.ts +178 -0
  51. package/src/tool/avifAWebp/i18n/pl.ts +178 -0
  52. package/src/tool/avifAWebp/i18n/pt.ts +178 -0
  53. package/src/tool/avifAWebp/i18n/ru.ts +178 -0
  54. package/src/tool/avifAWebp/i18n/sv.ts +178 -0
  55. package/src/tool/avifAWebp/i18n/tr.ts +178 -0
  56. package/src/tool/avifAWebp/i18n/zh.ts +178 -0
  57. package/src/tool/avifAWebp/index.ts +13 -1
  58. package/src/tool/bmpAJpg/i18n/de.ts +178 -0
  59. package/src/tool/bmpAJpg/i18n/en.ts +2 -12
  60. package/src/tool/bmpAJpg/i18n/es.ts +2 -12
  61. package/src/tool/bmpAJpg/i18n/fr.ts +2 -12
  62. package/src/tool/bmpAJpg/i18n/id.ts +178 -0
  63. package/src/tool/bmpAJpg/i18n/it.ts +178 -0
  64. package/src/tool/bmpAJpg/i18n/ja.ts +178 -0
  65. package/src/tool/bmpAJpg/i18n/ko.ts +178 -0
  66. package/src/tool/bmpAJpg/i18n/nl.ts +178 -0
  67. package/src/tool/bmpAJpg/i18n/pl.ts +178 -0
  68. package/src/tool/bmpAJpg/i18n/pt.ts +178 -0
  69. package/src/tool/bmpAJpg/i18n/ru.ts +178 -0
  70. package/src/tool/bmpAJpg/i18n/sv.ts +178 -0
  71. package/src/tool/bmpAJpg/i18n/tr.ts +178 -0
  72. package/src/tool/bmpAJpg/i18n/zh.ts +178 -0
  73. package/src/tool/bmpAJpg/index.ts +13 -1
  74. package/src/tool/bmpAPng/i18n/de.ts +177 -0
  75. package/src/tool/bmpAPng/i18n/en.ts +2 -12
  76. package/src/tool/bmpAPng/i18n/es.ts +2 -12
  77. package/src/tool/bmpAPng/i18n/fr.ts +2 -12
  78. package/src/tool/bmpAPng/i18n/id.ts +177 -0
  79. package/src/tool/bmpAPng/i18n/it.ts +177 -0
  80. package/src/tool/bmpAPng/i18n/ja.ts +177 -0
  81. package/src/tool/bmpAPng/i18n/ko.ts +177 -0
  82. package/src/tool/bmpAPng/i18n/nl.ts +177 -0
  83. package/src/tool/bmpAPng/i18n/pl.ts +177 -0
  84. package/src/tool/bmpAPng/i18n/pt.ts +177 -0
  85. package/src/tool/bmpAPng/i18n/ru.ts +177 -0
  86. package/src/tool/bmpAPng/i18n/sv.ts +177 -0
  87. package/src/tool/bmpAPng/i18n/tr.ts +177 -0
  88. package/src/tool/bmpAPng/i18n/zh.ts +177 -0
  89. package/src/tool/bmpAPng/index.ts +13 -1
  90. package/src/tool/bmpAWebp/i18n/de.ts +178 -0
  91. package/src/tool/bmpAWebp/i18n/en.ts +2 -12
  92. package/src/tool/bmpAWebp/i18n/es.ts +2 -12
  93. package/src/tool/bmpAWebp/i18n/fr.ts +2 -12
  94. package/src/tool/bmpAWebp/i18n/id.ts +178 -0
  95. package/src/tool/bmpAWebp/i18n/it.ts +178 -0
  96. package/src/tool/bmpAWebp/i18n/ja.ts +178 -0
  97. package/src/tool/bmpAWebp/i18n/ko.ts +178 -0
  98. package/src/tool/bmpAWebp/i18n/nl.ts +178 -0
  99. package/src/tool/bmpAWebp/i18n/pl.ts +178 -0
  100. package/src/tool/bmpAWebp/i18n/pt.ts +178 -0
  101. package/src/tool/bmpAWebp/i18n/ru.ts +178 -0
  102. package/src/tool/bmpAWebp/i18n/sv.ts +178 -0
  103. package/src/tool/bmpAWebp/i18n/tr.ts +178 -0
  104. package/src/tool/bmpAWebp/i18n/zh.ts +178 -0
  105. package/src/tool/bmpAWebp/index.ts +13 -1
  106. package/src/tool/gifAJpg/i18n/de.ts +178 -0
  107. package/src/tool/gifAJpg/i18n/en.ts +2 -12
  108. package/src/tool/gifAJpg/i18n/es.ts +2 -12
  109. package/src/tool/gifAJpg/i18n/fr.ts +2 -12
  110. package/src/tool/gifAJpg/i18n/id.ts +178 -0
  111. package/src/tool/gifAJpg/i18n/it.ts +178 -0
  112. package/src/tool/gifAJpg/i18n/ja.ts +178 -0
  113. package/src/tool/gifAJpg/i18n/ko.ts +178 -0
  114. package/src/tool/gifAJpg/i18n/nl.ts +178 -0
  115. package/src/tool/gifAJpg/i18n/pl.ts +178 -0
  116. package/src/tool/gifAJpg/i18n/pt.ts +178 -0
  117. package/src/tool/gifAJpg/i18n/ru.ts +178 -0
  118. package/src/tool/gifAJpg/i18n/sv.ts +178 -0
  119. package/src/tool/gifAJpg/i18n/tr.ts +178 -0
  120. package/src/tool/gifAJpg/i18n/zh.ts +178 -0
  121. package/src/tool/gifAJpg/index.ts +13 -1
  122. package/src/tool/gifAPng/i18n/de.ts +178 -0
  123. package/src/tool/gifAPng/i18n/en.ts +2 -12
  124. package/src/tool/gifAPng/i18n/es.ts +2 -12
  125. package/src/tool/gifAPng/i18n/fr.ts +2 -12
  126. package/src/tool/gifAPng/i18n/id.ts +178 -0
  127. package/src/tool/gifAPng/i18n/it.ts +178 -0
  128. package/src/tool/gifAPng/i18n/ja.ts +178 -0
  129. package/src/tool/gifAPng/i18n/ko.ts +178 -0
  130. package/src/tool/gifAPng/i18n/nl.ts +178 -0
  131. package/src/tool/gifAPng/i18n/pl.ts +178 -0
  132. package/src/tool/gifAPng/i18n/pt.ts +178 -0
  133. package/src/tool/gifAPng/i18n/ru.ts +178 -0
  134. package/src/tool/gifAPng/i18n/sv.ts +178 -0
  135. package/src/tool/gifAPng/i18n/tr.ts +178 -0
  136. package/src/tool/gifAPng/i18n/zh.ts +178 -0
  137. package/src/tool/gifAPng/index.ts +12 -0
  138. package/src/tool/gifAWebp/i18n/de.ts +178 -0
  139. package/src/tool/gifAWebp/i18n/en.ts +2 -12
  140. package/src/tool/gifAWebp/i18n/es.ts +2 -12
  141. package/src/tool/gifAWebp/i18n/fr.ts +2 -12
  142. package/src/tool/gifAWebp/i18n/id.ts +178 -0
  143. package/src/tool/gifAWebp/i18n/it.ts +178 -0
  144. package/src/tool/gifAWebp/i18n/ja.ts +178 -0
  145. package/src/tool/gifAWebp/i18n/ko.ts +178 -0
  146. package/src/tool/gifAWebp/i18n/nl.ts +178 -0
  147. package/src/tool/gifAWebp/i18n/pl.ts +178 -0
  148. package/src/tool/gifAWebp/i18n/pt.ts +178 -0
  149. package/src/tool/gifAWebp/i18n/ru.ts +178 -0
  150. package/src/tool/gifAWebp/i18n/sv.ts +178 -0
  151. package/src/tool/gifAWebp/i18n/tr.ts +178 -0
  152. package/src/tool/gifAWebp/i18n/zh.ts +178 -0
  153. package/src/tool/gifAWebp/index.ts +12 -0
  154. package/src/tool/imagenBase64/i18n/de.ts +168 -0
  155. package/src/tool/imagenBase64/i18n/en.ts +2 -12
  156. package/src/tool/imagenBase64/i18n/es.ts +2 -12
  157. package/src/tool/imagenBase64/i18n/fr.ts +2 -12
  158. package/src/tool/imagenBase64/i18n/id.ts +168 -0
  159. package/src/tool/imagenBase64/i18n/it.ts +168 -0
  160. package/src/tool/imagenBase64/i18n/ja.ts +168 -0
  161. package/src/tool/imagenBase64/i18n/ko.ts +168 -0
  162. package/src/tool/imagenBase64/i18n/nl.ts +168 -0
  163. package/src/tool/imagenBase64/i18n/pl.ts +168 -0
  164. package/src/tool/imagenBase64/i18n/pt.ts +173 -0
  165. package/src/tool/imagenBase64/i18n/ru.ts +168 -0
  166. package/src/tool/imagenBase64/i18n/sv.ts +168 -0
  167. package/src/tool/imagenBase64/i18n/tr.ts +168 -0
  168. package/src/tool/imagenBase64/i18n/zh.ts +168 -0
  169. package/src/tool/imagenBase64/index.ts +12 -0
  170. package/src/tool/jpgAIco/i18n/de.ts +183 -0
  171. package/src/tool/jpgAIco/i18n/en.ts +8 -13
  172. package/src/tool/jpgAIco/i18n/es.ts +13 -18
  173. package/src/tool/jpgAIco/i18n/fr.ts +9 -14
  174. package/src/tool/jpgAIco/i18n/id.ts +183 -0
  175. package/src/tool/jpgAIco/i18n/it.ts +183 -0
  176. package/src/tool/jpgAIco/i18n/ja.ts +183 -0
  177. package/src/tool/jpgAIco/i18n/ko.ts +183 -0
  178. package/src/tool/jpgAIco/i18n/nl.ts +183 -0
  179. package/src/tool/jpgAIco/i18n/pl.ts +183 -0
  180. package/src/tool/jpgAIco/i18n/pt.ts +183 -0
  181. package/src/tool/jpgAIco/i18n/ru.ts +183 -0
  182. package/src/tool/jpgAIco/i18n/sv.ts +183 -0
  183. package/src/tool/jpgAIco/i18n/tr.ts +183 -0
  184. package/src/tool/jpgAIco/i18n/zh.ts +183 -0
  185. package/src/tool/jpgAIco/index.ts +12 -0
  186. package/src/tool/jpgAPng/i18n/de.ts +178 -0
  187. package/src/tool/jpgAPng/i18n/en.ts +2 -12
  188. package/src/tool/jpgAPng/i18n/es.ts +2 -12
  189. package/src/tool/jpgAPng/i18n/fr.ts +2 -12
  190. package/src/tool/jpgAPng/i18n/id.ts +178 -0
  191. package/src/tool/jpgAPng/i18n/it.ts +178 -0
  192. package/src/tool/jpgAPng/i18n/ja.ts +178 -0
  193. package/src/tool/jpgAPng/i18n/ko.ts +178 -0
  194. package/src/tool/jpgAPng/i18n/nl.ts +178 -0
  195. package/src/tool/jpgAPng/i18n/pl.ts +178 -0
  196. package/src/tool/jpgAPng/i18n/pt.ts +178 -0
  197. package/src/tool/jpgAPng/i18n/ru.ts +178 -0
  198. package/src/tool/jpgAPng/i18n/sv.ts +178 -0
  199. package/src/tool/jpgAPng/i18n/tr.ts +178 -0
  200. package/src/tool/jpgAPng/i18n/zh.ts +178 -0
  201. package/src/tool/jpgAPng/index.ts +13 -1
  202. package/src/tool/jpgAWebp/i18n/de.ts +178 -0
  203. package/src/tool/jpgAWebp/i18n/en.ts +2 -12
  204. package/src/tool/jpgAWebp/i18n/es.ts +2 -12
  205. package/src/tool/jpgAWebp/i18n/fr.ts +2 -12
  206. package/src/tool/jpgAWebp/i18n/id.ts +178 -0
  207. package/src/tool/jpgAWebp/i18n/it.ts +178 -0
  208. package/src/tool/jpgAWebp/i18n/ja.ts +178 -0
  209. package/src/tool/jpgAWebp/i18n/ko.ts +178 -0
  210. package/src/tool/jpgAWebp/i18n/nl.ts +178 -0
  211. package/src/tool/jpgAWebp/i18n/pl.ts +178 -0
  212. package/src/tool/jpgAWebp/i18n/pt.ts +178 -0
  213. package/src/tool/jpgAWebp/i18n/ru.ts +178 -0
  214. package/src/tool/jpgAWebp/i18n/sv.ts +178 -0
  215. package/src/tool/jpgAWebp/i18n/tr.ts +178 -0
  216. package/src/tool/jpgAWebp/i18n/zh.ts +178 -0
  217. package/src/tool/jpgAWebp/index.ts +12 -0
  218. package/src/tool/pngAIco/i18n/de.ts +183 -0
  219. package/src/tool/pngAIco/i18n/en.ts +8 -13
  220. package/src/tool/pngAIco/i18n/es.ts +19 -24
  221. package/src/tool/pngAIco/i18n/fr.ts +20 -25
  222. package/src/tool/pngAIco/i18n/id.ts +183 -0
  223. package/src/tool/pngAIco/i18n/it.ts +183 -0
  224. package/src/tool/pngAIco/i18n/ja.ts +183 -0
  225. package/src/tool/pngAIco/i18n/ko.ts +183 -0
  226. package/src/tool/pngAIco/i18n/nl.ts +183 -0
  227. package/src/tool/pngAIco/i18n/pl.ts +183 -0
  228. package/src/tool/pngAIco/i18n/pt.ts +183 -0
  229. package/src/tool/pngAIco/i18n/ru.ts +183 -0
  230. package/src/tool/pngAIco/i18n/sv.ts +183 -0
  231. package/src/tool/pngAIco/i18n/tr.ts +183 -0
  232. package/src/tool/pngAIco/i18n/zh.ts +183 -0
  233. package/src/tool/pngAIco/index.ts +12 -0
  234. package/src/tool/pngAJpg/i18n/de.ts +191 -0
  235. package/src/tool/pngAJpg/i18n/en.ts +2 -12
  236. package/src/tool/pngAJpg/i18n/es.ts +2 -12
  237. package/src/tool/pngAJpg/i18n/fr.ts +2 -12
  238. package/src/tool/pngAJpg/i18n/id.ts +191 -0
  239. package/src/tool/pngAJpg/i18n/it.ts +191 -0
  240. package/src/tool/pngAJpg/i18n/ja.ts +191 -0
  241. package/src/tool/pngAJpg/i18n/ko.ts +191 -0
  242. package/src/tool/pngAJpg/i18n/nl.ts +191 -0
  243. package/src/tool/pngAJpg/i18n/pl.ts +191 -0
  244. package/src/tool/pngAJpg/i18n/pt.ts +191 -0
  245. package/src/tool/pngAJpg/i18n/ru.ts +191 -0
  246. package/src/tool/pngAJpg/i18n/sv.ts +191 -0
  247. package/src/tool/pngAJpg/i18n/tr.ts +191 -0
  248. package/src/tool/pngAJpg/i18n/zh.ts +191 -0
  249. package/src/tool/pngAJpg/index.ts +13 -1
  250. package/src/tool/pngAWebp/i18n/de.ts +182 -0
  251. package/src/tool/pngAWebp/i18n/en.ts +2 -12
  252. package/src/tool/pngAWebp/i18n/es.ts +2 -12
  253. package/src/tool/pngAWebp/i18n/fr.ts +2 -12
  254. package/src/tool/pngAWebp/i18n/id.ts +182 -0
  255. package/src/tool/pngAWebp/i18n/it.ts +182 -0
  256. package/src/tool/pngAWebp/i18n/ja.ts +182 -0
  257. package/src/tool/pngAWebp/i18n/ko.ts +182 -0
  258. package/src/tool/pngAWebp/i18n/nl.ts +182 -0
  259. package/src/tool/pngAWebp/i18n/pl.ts +182 -0
  260. package/src/tool/pngAWebp/i18n/pt.ts +182 -0
  261. package/src/tool/pngAWebp/i18n/ru.ts +182 -0
  262. package/src/tool/pngAWebp/i18n/sv.ts +182 -0
  263. package/src/tool/pngAWebp/i18n/tr.ts +182 -0
  264. package/src/tool/pngAWebp/i18n/zh.ts +182 -0
  265. package/src/tool/pngAWebp/index.ts +12 -0
  266. package/src/tool/svgAJpg/i18n/de.ts +178 -0
  267. package/src/tool/svgAJpg/i18n/en.ts +8 -13
  268. package/src/tool/svgAJpg/i18n/es.ts +8 -13
  269. package/src/tool/svgAJpg/i18n/fr.ts +2 -12
  270. package/src/tool/svgAJpg/i18n/id.ts +178 -0
  271. package/src/tool/svgAJpg/i18n/it.ts +178 -0
  272. package/src/tool/svgAJpg/i18n/ja.ts +178 -0
  273. package/src/tool/svgAJpg/i18n/ko.ts +178 -0
  274. package/src/tool/svgAJpg/i18n/nl.ts +178 -0
  275. package/src/tool/svgAJpg/i18n/pl.ts +178 -0
  276. package/src/tool/svgAJpg/i18n/pt.ts +178 -0
  277. package/src/tool/svgAJpg/i18n/ru.ts +178 -0
  278. package/src/tool/svgAJpg/i18n/sv.ts +178 -0
  279. package/src/tool/svgAJpg/i18n/tr.ts +178 -0
  280. package/src/tool/svgAJpg/i18n/zh.ts +178 -0
  281. package/src/tool/svgAJpg/index.ts +12 -0
  282. package/src/tool/svgAPng/i18n/de.ts +178 -0
  283. package/src/tool/svgAPng/i18n/en.ts +8 -13
  284. package/src/tool/svgAPng/i18n/es.ts +31 -36
  285. package/src/tool/svgAPng/i18n/fr.ts +2 -12
  286. package/src/tool/svgAPng/i18n/id.ts +178 -0
  287. package/src/tool/svgAPng/i18n/it.ts +178 -0
  288. package/src/tool/svgAPng/i18n/ja.ts +178 -0
  289. package/src/tool/svgAPng/i18n/ko.ts +178 -0
  290. package/src/tool/svgAPng/i18n/nl.ts +178 -0
  291. package/src/tool/svgAPng/i18n/pl.ts +178 -0
  292. package/src/tool/svgAPng/i18n/pt.ts +178 -0
  293. package/src/tool/svgAPng/i18n/ru.ts +178 -0
  294. package/src/tool/svgAPng/i18n/sv.ts +178 -0
  295. package/src/tool/svgAPng/i18n/tr.ts +178 -0
  296. package/src/tool/svgAPng/i18n/zh.ts +178 -0
  297. package/src/tool/svgAPng/index.ts +12 -0
  298. package/src/tool/webpAIco/i18n/de.ts +183 -0
  299. package/src/tool/webpAIco/i18n/en.ts +8 -13
  300. package/src/tool/webpAIco/i18n/es.ts +9 -14
  301. package/src/tool/webpAIco/i18n/fr.ts +11 -16
  302. package/src/tool/webpAIco/i18n/id.ts +183 -0
  303. package/src/tool/webpAIco/i18n/it.ts +183 -0
  304. package/src/tool/webpAIco/i18n/ja.ts +183 -0
  305. package/src/tool/webpAIco/i18n/ko.ts +183 -0
  306. package/src/tool/webpAIco/i18n/nl.ts +183 -0
  307. package/src/tool/webpAIco/i18n/pl.ts +183 -0
  308. package/src/tool/webpAIco/i18n/pt.ts +183 -0
  309. package/src/tool/webpAIco/i18n/ru.ts +183 -0
  310. package/src/tool/webpAIco/i18n/sv.ts +183 -0
  311. package/src/tool/webpAIco/i18n/tr.ts +183 -0
  312. package/src/tool/webpAIco/i18n/zh.ts +183 -0
  313. package/src/tool/webpAIco/index.ts +12 -0
  314. package/src/tool/webpAJpg/i18n/de.ts +187 -0
  315. package/src/tool/webpAJpg/i18n/en.ts +9 -13
  316. package/src/tool/webpAJpg/i18n/es.ts +37 -42
  317. package/src/tool/webpAJpg/i18n/fr.ts +35 -40
  318. package/src/tool/webpAJpg/i18n/id.ts +182 -0
  319. package/src/tool/webpAJpg/i18n/it.ts +182 -0
  320. package/src/tool/webpAJpg/i18n/ja.ts +182 -0
  321. package/src/tool/webpAJpg/i18n/ko.ts +182 -0
  322. package/src/tool/webpAJpg/i18n/nl.ts +182 -0
  323. package/src/tool/webpAJpg/i18n/pl.ts +182 -0
  324. package/src/tool/webpAJpg/i18n/pt.ts +182 -0
  325. package/src/tool/webpAJpg/i18n/ru.ts +182 -0
  326. package/src/tool/webpAJpg/i18n/sv.ts +182 -0
  327. package/src/tool/webpAJpg/i18n/tr.ts +182 -0
  328. package/src/tool/webpAJpg/i18n/zh.ts +182 -0
  329. package/src/tool/webpAJpg/index.ts +12 -0
  330. package/src/tool/webpAPng/i18n/de.ts +182 -0
  331. package/src/tool/webpAPng/i18n/en.ts +8 -13
  332. package/src/tool/webpAPng/i18n/es.ts +35 -40
  333. package/src/tool/webpAPng/i18n/fr.ts +2 -12
  334. package/src/tool/webpAPng/i18n/id.ts +182 -0
  335. package/src/tool/webpAPng/i18n/it.ts +182 -0
  336. package/src/tool/webpAPng/i18n/ja.ts +182 -0
  337. package/src/tool/webpAPng/i18n/ko.ts +182 -0
  338. package/src/tool/webpAPng/i18n/nl.ts +182 -0
  339. package/src/tool/webpAPng/i18n/pl.ts +182 -0
  340. package/src/tool/webpAPng/i18n/pt.ts +182 -0
  341. package/src/tool/webpAPng/i18n/ru.ts +182 -0
  342. package/src/tool/webpAPng/i18n/sv.ts +182 -0
  343. package/src/tool/webpAPng/i18n/tr.ts +182 -0
  344. package/src/tool/webpAPng/i18n/zh.ts +182 -0
  345. 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 = 'konwerter-png-na-webp';
6
+ const title = 'Konwertuj PNG na WebP Online i Za Darmo';
7
+ const description =
8
+ 'Konwertuj obrazy PNG na WebP w swojej przeglądarce. Do 40% mniejszy rozmiar pliku. Zachowuje przezroczystość. Bez przesyłania plików. Za darmo i prywatnie.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Przeciągnij pliki PNG...',
12
+ convertText: 'Aby błyskawicznie przekonwertować je na WebP',
13
+ selectFiles: 'Wybierz pliki',
14
+ processedFiles: 'Przetworzone pliki',
15
+ downloadAll: 'Pobierz wszystko (.zip)',
16
+ pending: 'Oczekujące',
17
+ bibliographyTitle: 'Bibliografia',
18
+ faqTitle: 'Często Zadawane Pytania',
19
+ };
20
+
21
+ const faq: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Dlaczego warto konwertować PNG na WebP?',
24
+ answer:
25
+ 'WebP oferuje do 40% lepszą kompresję niż PNG przy tej samej jakości, jednocześnie obsługując przezroczystość alfa. Jest to format zalecany przez Google PageSpeed Insights.',
26
+ },
27
+ {
28
+ question: 'Czy podczas procesu tracona jest przezroczystość?',
29
+ answer:
30
+ 'Nie. Techniczna implementacja WebP obsługuje kanał alfa. Przezroczystość oryginalnego pliku PNG zostanie zachowana w nowym pliku WebP.',
31
+ },
32
+ {
33
+ question: 'Czy moje obrazy trafiają na jakikolwiek serwer?',
34
+ answer:
35
+ 'Nie. Kod działa wyłącznie w Twojej przeglądarce (po stronie klienta). Nigdy nie widzimy, nie rejestrujemy ani nie zapisujemy obrazów, które konwertujesz.',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Wstaw swoje pliki PNG',
42
+ text: 'Upuść duże pliki PNG w obszarze przesyłania lub użyj tradycyjnego interaktywnego selektora.',
43
+ },
44
+ {
45
+ name: 'Wykrywanie kanałów',
46
+ text: 'Lokalny silnik renderujący wykryje i wyeksportuje kompozycję pikseli do zoptymalizowanego formatu WebP.',
47
+ },
48
+ {
49
+ name: 'Bezpośrednie pobieranie',
50
+ text: 'Pobierz swoje wysoko skompresowane pliki WebP pojedynczo lub spakuj je razem za pomocą konwertera ZIP.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Google: Szczegóły implementacji WebP',
57
+ url: 'https://developers.google.com/speed/webp/',
58
+ },
59
+ {
60
+ name: 'W3C: Wskazówki dotyczące Core Web Vitals',
61
+ url: 'https://web.dev/vitals/',
62
+ },
63
+ {
64
+ name: 'Mozilla Docs: Formaty obrazów',
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: 'Konwerter PNG na WebP: Przezroczystość i nowoczesna kompresja dla sieci',
73
+ level: 2,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: '<strong>PNG</strong> od dziesięcioleci był formatem referencyjnym dla obrazów internetowych z przezroczystością — logo, ikon, elementów interfejsu użytkownika, zdjęć produktów na wyciętych tłach. Problemem jest rozmiar pliku: kompresja bezstratna, która gwarantuje jakość, generuje również zauważalnie duże pliki. <strong>WebP</strong> od Google rozwiązuje tę sprzeczność: obsługuje kanał alfa (przezroczystość) <em>i</em> kompresuje znacznie lepiej niż PNG, co sprawia, że przejście z PNG na WebP na Twojej stronie internetowej jest idealną optymalizacją, która nie wymaga żadnych poświęceń.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNG czy WebP? Kiedy używać każdego formatu',
82
+ level: 3,
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '<strong>PNG</strong> pozostaje właściwym formatem, gdy kluczowa jest kompatybilność: narzędzia do projektowania, takie jak Photoshop czy Figma, procesy drukowania, starsze aplikacje desktopowe lub dowolny kontekst, w którym obsługa WebP nie jest gwarantowana. Jest to również idealny format do zapisywania warstw roboczych w procesach edycji, ponieważ kompresja bezstratna zachowuje każdy piksel. Koszt: pliki, które mogą ważyć 3–8 razy więcej niż ich odpowiednik w WebP.',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '<strong>WebP</strong> jest naturalnym następcą PNG dla wszystkich nowoczesnych treści internetowych. Chrome, Firefox, Safari i Edge obsługują go natywnie. Obraz WebP bezstratny jest o 26% mniejszy niż odpowiedni plik PNG; w trybie stratnym może być do 40% mniejszy przy praktycznie nieodróżnialnej jakości wizualnej. Co kluczowe dla projektowania stron internetowych: <strong>WebP zachowuje przezroczystość alfa</strong> dokładnie tak jak PNG, bez wizualnych kompromisów.',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: 'Porównanie: Konwersja lokalna vs w chmurze',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: 'Konwertery w chmurze',
102
+ description: 'Narzędzia, które przesyłają pliki na zdalny serwer.',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ 'Opóźnienia sieciowe podczas przesyłania i pobierania',
107
+ 'Twoje logo i obrazy przechowywane na serwerach osób trzecich',
108
+ 'Limity rozmiaru plików i dzienne limity konwersji',
109
+ 'Intruzywne reklamy i skrypty śledzące osób trzecich',
110
+ ],
111
+ },
112
+ {
113
+ title: 'Nasza lokalna architektura',
114
+ description: 'Bezpośrednie przetwarzanie na Twoim sprzęcie przy użyciu technologii Vanilla JS.',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ 'Błyskawiczna prędkość — zero opóźnień sieciowych',
119
+ 'Pełna prywatność — 0 bajtów wysłanych na zewnątrz',
120
+ 'Brak limitów MB lub ograniczeń liczby plików',
121
+ 'Czysty interfejs, bez reklam i śledzenia',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Jak to działa technicznie',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Plik PNG jest ładowany lokalnie i dekodowany do <strong>HTML5 Canvas</strong> w pamięci. Interfejs API Canvas zachowuje kanał alfa z oryginalnego pliku PNG — wszystkie przezroczyste i półprzezroczyste piksele zostają zachowane w nienaruszonym stanie w buforze pikseli RGBA. Następnie płótno jest eksportowane przez wywołanie <code>toDataURL(\'image/webp\')</code>, co powoduje zastosowanie kodeka WebP przeglądarki (opartego na libwebp firmy Google) w celu wygenerowania bardziej zwartego pliku bez zmiany danych o przezroczystości.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'WebP wykorzystuje dwa tryby kompresji: tryb bezstratny dla obrazów, w których każdy piksel musi być dokładnie wierny oryginałowi, oraz tryb stratny dla zdjęć i elementów, w których małe różnice są niezauważalne. Tryb bezstratny generuje pliki o 26% mniejsze niż PNG; tryb stratny pozwala uzyskać oszczędności do 40% w porównaniu z PNG przy zachowaniu doskonałej jakości wizualnej.',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: 'Wskazówka: WebP pokonuje zarówno PNG, jak i JPG w internecie',
142
+ html: 'WebP w trybie bezstratnym jest mniejszy niż PNG. WebP w trybie stratnym jest mniejszy niż JPG. Dzięki temu WebP jest <strong>jedynym formatem, który zastępuje oba</strong> w kontekście internetowym. Konwertuj swoje przezroczyste pliki PNG na WebP przed przesłaniem: Google PageSpeed Insights wykrywa to i ocenia pozytywnie w audytach "Serwuj obrazy w nowoczesnych formatach".',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: 'Zastosowania i kompatybilność',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ 'Logo i ikony z przezroczystym tłem dla stron internetowych i aplikacji.',
154
+ 'Zdjęcia produktów na wyciętych tłach w sklepach e-commerce.',
155
+ 'Sprite\'y CSS i elementy interfejsu z przezroczystością alfa.',
156
+ 'Ilustracje rastrowe i grafika wektorowa dla stron docelowych.',
157
+ 'Miniatury artykułów z przezroczystym tłem na blogach i portalach informacyjnych.',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Podsumowanie',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'paragraph',
167
+ html: 'Przejście z PNG na WebP to najbardziej kompletna optymalizacja obrazów internetowych: otrzymujesz lżejsze pliki, zachowujesz przezroczystość i poprawiasz wskaźniki Core Web Vitals bez żadnych zmian w projekcie wizualnym. To narzędzie robi to natychmiastowo, za darmo i całkowicie prywatnie — Twoje zdjęcia są przetwarzane w przeglądarce i nigdy nie trafiają na żaden zewnętrzny serwer.',
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: 'pl', 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 = 'conversor-de-png-para-webp';
6
+ const title = 'Converter PNG para WebP Online e Grátis';
7
+ const description =
8
+ 'Converta imagens PNG para WebP no seu navegador. Até 40% menos tamanho de arquivo. Preserva a transparência. Sem upload de arquivos. Gratuito e privado.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Arraste arquivos PNG...',
12
+ convertText: 'Para convertê-los em WebP instantaneamente',
13
+ selectFiles: 'Selecionar arquivos',
14
+ processedFiles: 'Arquivos processados',
15
+ downloadAll: 'Baixar tudo (.zip)',
16
+ pending: 'Pendente',
17
+ bibliographyTitle: 'Referências Bibliográficas',
18
+ faqTitle: 'Perguntas Frequentes',
19
+ };
20
+
21
+ const faq: PngAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'Porquê converter PNG para WebP?',
24
+ answer:
25
+ 'O WebP oferece uma compressão até 40% melhor do que o PNG com a mesma qualidade, ao mesmo tempo que suporta a transparência Alpha. É o formato recomendado pelo Google PageSpeed Insights.',
26
+ },
27
+ {
28
+ question: 'A transparência é perdida no processo?',
29
+ answer:
30
+ 'Não. A implementação técnica do WebP suporta o canal alfa. As transparências do PNG original serão preservadas no novo arquivo WebP.',
31
+ },
32
+ {
33
+ question: 'As minhas imagens vão para algum servidor?',
34
+ answer:
35
+ 'Não. O código corre exclusivamente no seu navegador (Client-Side). Nunca vemos, registamos ou guardamos as imagens que converte.',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Insira os seus PNGs',
42
+ text: 'Largue os seus arquivos PNG grandes na área de upload ou utilize o seletor interativo tradicional.',
43
+ },
44
+ {
45
+ name: 'Deteção de canal',
46
+ text: 'O motor de renderização local detetará e exportará a composição de píxeis para o formato WebP otimizado.',
47
+ },
48
+ {
49
+ name: 'Download Direto',
50
+ text: 'Baixe os seus arquivos WebP altamente comprimidos individualmente ou agrupe-os utilizando o conversor de pacotes ZIP.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: PngAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Google: Detalhes de Implementação WebP',
57
+ url: 'https://developers.google.com/speed/webp/',
58
+ },
59
+ {
60
+ name: 'W3C: Orientação sobre Core Web Vitals',
61
+ url: 'https://web.dev/vitals/',
62
+ },
63
+ {
64
+ name: 'Mozilla Docs: Formatos de Imagem',
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: 'Conversor de PNG para WebP: Transparência e compressão moderna para a web',
73
+ level: 2,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: 'O <strong>PNG</strong> tem sido o formato de referência para imagens web com transparência durante décadas — logótipos, ícones, elementos de UI, imagens de produtos em fundos recortados. O seu problema é o tamanho do arquivo: a compressão sem perdas que garante a qualidade também gera arquivos visivelmente grandes. O <strong>WebP</strong> da Google resolve esta contradição: suporta o canal alfa (transparência) <em>e</em> comprime muito melhor do que o PNG, tornando a mudança de PNG para WebP no seu website uma otimização perfeita que não sacrifica nada.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'PNG ou WebP? Quando utilizar cada formato',
82
+ level: 3,
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'O <strong>PNG</strong> continua a ser o formato certo quando a compatibilidade é crítica: ferramentas de design como o Photoshop ou Figma, fluxos de trabalho de impressão, aplicações de desktop antigas ou qualquer contexto onde o suporte WebP não seja garantido. É também o formato ideal para guardar camadas de trabalho em pipelines de edição, uma vez que a sua compressão sem perdas preserva cada píxel. O custo: arquivos que podem pesar 3 a 8 vezes mais do que o seu equivalente WebP.',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: 'O <strong>WebP</strong> é a substituição natural do PNG para todo o conteúdo web moderno. Chrome, Firefox, Safari e Edge suportam-no nativamente. Uma imagem WebP sem perdas é 26% menor do que o PNG equivalente; em modo lossy pode ser até 40% menor com uma qualidade visual praticamente indistinguível. E crucial para o web design: o <strong>WebP preserva a transparência alfa</strong> exatamente como o PNG, sem qualquer compromisso visual.',
91
+ },
92
+ {
93
+ type: 'title',
94
+ text: 'Comparação: Conversão Local vs Cloud',
95
+ level: 3,
96
+ },
97
+ {
98
+ type: 'comparative',
99
+ items: [
100
+ {
101
+ title: 'Conversores Cloud',
102
+ description: 'Ferramentas que carregam os seus arquivos para um servidor remoto.',
103
+ icon: 'mdi:cloud-upload',
104
+ pointIcon: 'mdi:close-circle-outline',
105
+ points: [
106
+ 'Latência de rede no upload e download',
107
+ 'Os seus logótipos e imagens armazenados em servidores de terceiros',
108
+ 'Limites de tamanho de arquivo e quotas de conversão diárias',
109
+ 'Anúncios intrusivos e rastreadores de terceiros',
110
+ ],
111
+ },
112
+ {
113
+ title: 'A Nossa Arquitetura Local',
114
+ description: 'Processamento direto no seu hardware utilizando a tecnologia Vanilla JS.',
115
+ icon: 'mdi:laptop-mac',
116
+ highlight: true,
117
+ points: [
118
+ 'Velocidade instantânea — latência de rede zero',
119
+ 'Privacidade total — 0 bytes enviados externamente',
120
+ 'Sem limites de MB ou restrições no número de arquivos',
121
+ 'Interface limpa, sem anúncios ou rastreamento',
122
+ ],
123
+ },
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Como funciona tecnicamente',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'O PNG é carregado localmente e descodificado num <strong>HTML5 Canvas</strong> em memória. A API Canvas preserva o canal alfa do PNG original — todos os píxeis transparentes e semitransparentes são mantidos intactos no buffer de píxeis RGBA. O canvas é então exportado chamando <code>toDataURL(\'image/webp\')</code>, que aplica o codec WebP do navegador (baseado no libwebp da Google) para gerar um arquivo mais compacto sem alterar os dados de transparência.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'O WebP utiliza dois modos de compressão: modo sem perdas para imagens onde cada píxel deve ser exatamente fiel ao original, e modo lossy para fotos e elementos onde pequenas diferenças são impercetíveis. O modo sem perdas produz arquivos 26% menores do que o PNG; o modo lossy pode atingir reduções de até 40% em comparação com o PNG, mantendo uma excelente qualidade visual.',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: 'Dica: o WebP supera tanto o PNG como o JPG na web',
142
+ html: 'O WebP em modo sem perdas é menor do que o PNG. O WebP em modo lossy é menor do que o JPG. Isto torna o WebP o <strong>único formato que substitui ambos</strong> no contexto web. Converta os seus PNGs transparentes para WebP antes de fazer o upload: o Google PageSpeed Insights deteta isso e pontua positivamente nas auditorias de "Servir imagens em formatos modernos".',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: 'Casos de uso e compatibilidade',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
+ 'Logótipos e ícones com fundos transparentes para websites e apps.',
154
+ 'Imagens de produtos com fundos recortados em lojas de e-commerce.',
155
+ 'CSS sprites e elementos de UI com transparência alfa.',
156
+ 'Ilustrações rasterizadas e gráficos vetoriais para landing pages.',
157
+ 'Miniaturas de artigos com fundos transparentes em blogs e portais de notícias.',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Conclusão',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'paragraph',
167
+ html: 'A mudança de PNG para WebP é a otimização de imagem web mais completa disponível: obtém arquivos mais leves, preserva a transparência e melhora as métricas de Core Web Vitals sem alterar nada no seu design visual. Esta ferramenta faz isso instantaneamente, gratuitamente e de forma completamente privada — as suas imagens são processadas no seu navegador e nunca viajam para qualquer servidor externo.',
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: 'pt', 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 = 'konverter-png-v-webp';
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 предлагает до 40% лучшее сжатие, чем PNG, при том же качестве, а также поддерживает альфа-прозрачность. Это формат, рекомендуемый Google PageSpeed Insights.',
26
+ },
27
+ {
28
+ question: 'Теряется ли прозрачность в процессе?',
29
+ answer:
30
+ 'Нет. Техническая реализация WebP поддерживает альфа-канал. Прозрачность оригинального 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: Прозрачность и современное сжатие для веба',
73
+ level: 2,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: '<strong>PNG</strong> десятилетиями был эталонным форматом для веб-изображений с прозрачностью — логотипов, иконок, элементов пользовательского интерфейса, изображений товаров на вырезанных фонах. Его проблема — размер файла: сжатие без потерь, гарантирующее качество, также порождает файлы заметно большого размера. <strong>WebP</strong> от Google решает это противоречие: он поддерживает альфа-канал (прозрачность) <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 не гарантирована. Это также идеальный формат для сохранения рабочих слоев в процессах редактирования, так как сжатие без потерь сохраняет каждый пиксель. Цена: файлы, которые могут весить в 3–8 раз больше, чем их эквивалент в WebP.',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '<strong>WebP</strong> — естественная замена PNG для всего современного веб-контента. Chrome, Firefox, Safari и Edge поддерживают его нативно. Изображение WebP без потерь на 26% меньше соответствующего изображения PNG; в режиме с потерями оно может быть до 40% меньше при практически неразличимом визуальном качестве. И что крайне важно для веб-дизайна: <strong>WebP сохраняет альфа-прозрачность</strong> точно так же, как PNG, без визуальных компромиссов.',
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
+ 'Без лимитов по размеру или количеству файлов',
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> в памяти. API Canvas сохраняет альфа-канал из оригинального PNG — все прозрачные и полупрозрачные пиксели сохраняются в нетронутом виде в буфере пикселей RGBA. Затем холст экспортируется путем вызова <code>toDataURL(\'image/webp\')</code>, что применяет кодек WebP браузера (на основе libwebp от Google) для создания более компактного файла без изменения данных о прозрачности.',
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'WebP использует два режима сжатия: режим без потерь для изображений, где каждый пиксель должен точно соответствовать оригиналу, и режим с потерями для фотографий и элементов, где небольшие различия незаметны. Режим без потерь позволяет получать файлы на 26% меньше, чем PNG; режим с потерями может достигать сокращения до 40% по сравнению с PNG при сохранении отличного визуального качества.',
138
+ },
139
+ {
140
+ type: 'tip',
141
+ title: 'Совет: WebP превосходит и PNG, и JPG в вебе',
142
+ html: 'WebP в режиме без потерь меньше, чем PNG. WebP в режиме с потерями меньше, чем JPG. Это делает WebP <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
+ 'CSS-спрайты и элементы интерфейса с альфа-прозрачностью.',
156
+ 'Растровые иллюстрации и векторная графика для лендингов.',
157
+ 'Миниатюры статей с прозрачным фоном в блогах и новостных порталах.',
158
+ ],
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Заключение',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'paragraph',
167
+ html: 'Переход с PNG на WebP — это самая полная доступная оптимизация веб-изображений: вы получаете более легкие файлы, сохраняете прозрачность и улучшаете показатели 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: 'ru', faq, howTo }),
182
+ };