@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 { SvgAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'konwerter-svg-na-png';
6
+ const title = 'Konwertuj SVG na PNG Online i Za Darmo';
7
+ const description =
8
+ 'Konwertuj pliki wektorowe SVG na PNG w swojej przeglądarce. Wyjście HD w podwójnej skali. Zachowuje przezroczystość. Za darmo i w 100% prywatnie.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Przeciągnij pliki SVG...',
12
+ convertText: 'Aby błyskawicznie przekonwertować je na PNG',
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: SvgAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'Dlaczego warto konwertować pliki SVG na PNG?',
24
+ answer:
25
+ 'SVG jest oparty na wektorach i idealny dla logo, ale czasami potrzebujesz rastrowego formatu PNG do użytku w aplikacjach, które nie obsługują wektorów, lub do udostępniania za pośrednictwem komunikatorów lub mediów społecznościowych.',
26
+ },
27
+ {
28
+ question: 'Czy mogę wybrać rozmiar wyjściowy?',
29
+ answer:
30
+ 'Obecnie podwajamy skalę źródłowego pliku SVG, aby wyjściowy obraz PNG był ostry i odpowiedni dla ekranów Retina lub 4K.',
31
+ },
32
+ {
33
+ question: 'Czy przezroczystości SVG są zachowane?',
34
+ answer:
35
+ 'Tak, wynikowy plik PNG zachowuje kanał alfa oryginalnego pliku SVG, utrzymując wszystkie przezroczyste tła w nienaruszonym stanie.',
36
+ },
37
+ ];
38
+
39
+ const howTo: SvgAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Wstaw pliki SVG',
42
+ text: 'Upuść pliki SVG lub przeciągnij je bezpośrednio do górnego obszaru.',
43
+ },
44
+ {
45
+ name: 'Generowanie HD PNG',
46
+ text: 'W ciągu milisekund nasz lokalny silnik odtworzy każdy wektor jako warstwę pikseli HD w przezroczystym formacie PNG.',
47
+ },
48
+ {
49
+ name: 'Pobierz pliki',
50
+ text: 'Zapisz wygenerowane pliki PNG pojedynczo lub jako pakiet ZIP.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: SvgAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Specyfikacja W3C SVG',
57
+ url: 'https://www.w3.org/TR/SVG/',
58
+ },
59
+ {
60
+ name: 'Mozilla: Samouczek SVG',
61
+ url: 'https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial',
62
+ },
63
+ ];
64
+
65
+ const seo: SvgAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Konwerter SVG na PNG: Od nieskończonego wektora do uniwersalnego rastra',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>SVG</strong> (Scalable Vector Graphics) to doskonały wybór do projektowania stron internetowych: nieskończenie skalowalny, lekki i edytowalny w dowolnym edytorze kodu. Ale kiedy musisz użyć tego logo lub ikony w aplikacji mobilnej, udostępnić je w mediach społecznościowych lub wstawić do prezentacji PowerPoint, napotykasz barierę: większość tych platform nie obsługuje formatu SVG. Format <strong>PNG</strong> jest uniwersalnym rozwiązaniem: rastrowy, z kanałem alfa i kompatybilny w absolutnie każdym kontekście.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'SVG vs PNG: Wektory dla sieci, raster dla świata',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'SVG przechowuje obraz jako instrukcje matematyczne: krzywa Béziera, gradient, wielokąt. Oznacza to, że ten sam plik wygląda idealnie przy 16 px lub 16 000 px. Jest to idealny format dla kodu strony internetowej, animacji CSS i wszelkich elementów, które muszą dostosowywać się do różnych rozdzielczości ekranu bez utraty jakości.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'PNG przechowuje obraz jako siatkę pikseli z informacjami o kolorze i przezroczystości dla każdego piksela. Jest to format <strong>bezystratny</strong> (lossless), co oznacza pełne zachowanie jakości. Po zrasteryzowaniu formatu SVG do PNG rozdzielczość jest ustalona. Dlatego wybór odpowiedniego rozmiaru eksportu jest kluczowy: nasze narzędzie renderuje w podwójnej skali (2x), aby zapewnić ostrość na ekranach Retina i 4K.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Porównanie: Konwersja lokalna vs w chmurze',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Konwertery w chmurze',
98
+ description: 'Narzędzia, które przesyłają pliki na zdalny serwer.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Twój kod SVG trafia na zewnętrzne serwery',
103
+ 'Zdalne renderowanie o niespójnej jakości',
104
+ 'Czas oczekiwania na przesłanie i przetworzenie',
105
+ 'Ograniczenia dotyczące rozmiaru pliku SVG',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Nasza lokalna architektura',
110
+ description: 'Bezpośrednie przetwarzanie na Twoim sprzęcie przy użyciu technologii Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Twój plik SVG nigdy nie opuszcza przeglądarki',
115
+ 'Renderowanie natywnym silnikiem przeglądarki dla maksymalnej wierności',
116
+ 'Format PNG w rozdzielczości 2x dla ekranów o wysokiej gęstości',
117
+ 'Przezroczystość zachowana dzięki pełnemu kanałowi alfa',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Jak to działa technicznie',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Proces rozpoczyna się od załadowania pliku SVG do elementu JavaScript <strong>Image</strong>. Gdy silnik przeglądarki przeanalizuje i wyrenderuje wektorowy kod XML, wynikowy obraz jest rysowany na <strong>HTML5 Canvas</strong>, którego wymiary są dwukrotnie większe od oryginalnego rozmiaru SVG (skala 2x). Daje to plik PNG o dwukrotnie większej liczbie pikseli na wymiar, idealny dla ekranów o wysokiej rozdzielczości.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'W przeciwieństwie do konwersji na JPG, podczas eksportu do PNG płótno zachowuje pełny kanał alfa: przezroczyste obszary w oryginalnym SVG stają się w pełni przezroczystymi pikselami w wynikowym pliku PNG — bez wypełnienia tła na biało. Eksport wykorzystuje metodę <code>toDataURL(\'image/png\')</code> z bezstratną kompresją.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Wskazówka przed rasteryzacją',
138
+ html: 'Dokładnie wybierz rozmiar eksportu PNG — rasteryzacja pliku SVG jest procesem jednokierunkowym: nie można odzyskać wektorów z wynikowego pliku PNG. Zawsze zachowuj oryginalny plik SVG jako źródło master i generuj pliki PNG w najwyższej rozdzielczości, jakiej możesz kiedykolwiek potrzebować.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Zastosowania i kompatybilność',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Eksportowanie logo wektorowych do prezentacji PowerPoint lub Google Slides.',
150
+ 'Tworzenie ikon PNG dla systemów iOS, Android lub Progressive Web Apps.',
151
+ 'Udostępnianie projektów SVG na Instagramie, LinkedInie lub w innych mediach społecznościowych.',
152
+ 'Wstawianie ilustracji wektorowych do dokumentów Word lub PDF.',
153
+ 'Generowanie miniatur PNG grafiki SVG dla podglądu w systemie CMS.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Podsumowanie',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'SVG to język wektorów; PNG to paszport do reszty cyfrowego świata. To narzędzie rasteryzuje Twoje pliki SVG w rozdzielczości 2x z nienaruszoną przezroczystością, bezpośrednio w przeglądarce, bez wysyłania ani jednego bajta Twojego projektu na żaden zewnętrzny serwer.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: SvgAPngLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'pl', 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 { SvgAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'conversor-de-svg-para-png';
6
+ const title = 'Converter SVG para PNG Online e Grátis';
7
+ const description =
8
+ 'Converta arquivos vetoriais SVG para PNG no seu navegador. Saída HD em escala dupla. Preserva transparência. Gratuito e 100% privado.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Arraste arquivos SVG...',
12
+ convertText: 'Para convertê-los em PNG 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: SvgAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'Porquê converter arquivos SVG para PNG?',
24
+ answer:
25
+ 'O SVG é baseado em vetores e ideal para logótipos, mas às vezes você precisa do formato PNG rasterizado para uso em aplicações que não suportam vetores, ou para compartilhar via apps de mensagens ou redes sociais.',
26
+ },
27
+ {
28
+ question: 'Posso escolher o tamanho da saída?',
29
+ answer:
30
+ 'Atualmente duplicamos a escala do SVG de origem para que a saída PNG seja nítida e adequada para ecrãs Retina ou 4K.',
31
+ },
32
+ {
33
+ question: 'As transparências do SVG são mantidas?',
34
+ answer:
35
+ 'Sim, o PNG resultante preserva o canal alfa do SVG original, mantendo todos os fundos transparentes intactos.',
36
+ },
37
+ ];
38
+
39
+ const howTo: SvgAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Insira os seus arquivos SVG',
42
+ text: 'Largue os seus arquivos SVG ou arraste-os diretamente para a área superior.',
43
+ },
44
+ {
45
+ name: 'Geração de PNG HD',
46
+ text: 'Em milissegundos, o nosso motor local recriará cada vetor como uma camada de píxeis HD em formato PNG transparente.',
47
+ },
48
+ {
49
+ name: 'Baixe os arquivos',
50
+ text: 'Salve os PNGs gerados individualmente ou como um pacote ZIP.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: SvgAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Especificação W3C SVG',
57
+ url: 'https://www.w3.org/TR/SVG/',
58
+ },
59
+ {
60
+ name: 'Mozilla: Tutorial SVG',
61
+ url: 'https://developer.mozilla.org/pt-BR/docs/Web/SVG/Tutorial',
62
+ },
63
+ ];
64
+
65
+ const seo: SvgAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Conversor de SVG para PNG: Do vetor infinito ao raster universal',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'O <strong>SVG</strong> (Scalable Vector Graphics) é a escolha perfeita para web design: infinitamente escalável, leve e editável com qualquer editor de código. Mas quando você precisa de usar esse logótipo ou ícone numa app móvel, compartilhá-lo nas redes sociais ou inseri-lo numa apresentação PowerPoint, você encontra um obstáculo: a maioria destas plataformas não suporta SVG. O formato <strong>PNG</strong> é a solução universal: rasterizado, com um canal alfa e compatível em absolutamente todos os contextos.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'SVG vs PNG: Vetores para a Web, Raster para o Mundo',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'O SVG armazena a imagem como instruções matemáticas: uma curva de Bézier, um gradiente, um polígono. Isto significa que o mesmo arquivo parece perfeito a 16px ou 16.000px. É o formato ideal para o seu código web, animações CSS e qualquer elemento que precise de se adaptar a diferentes resoluções de ecrã sem qualquer perda de qualidade.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'O PNG armazena a imagem como uma grelha de píxeis com informação de cor e transparência para cada píxel. É um formato <strong>lossless</strong> (sem perdas), o que significa que a qualidade é preservada inteiramente. Uma vez que um SVG é rasterizado para PNG, a resolução é fixa. É por isso que escolher o tamanho de exportação correto é crítico: a nossa ferramenta renderiza em escala dupla (2x) para garantir nitidez em ecrãs Retina e 4K.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Comparação: Conversão Local vs Cloud',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Conversores Cloud',
98
+ description: 'Ferramentas que carregam os seus arquivos para um servidor remoto.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'O seu código SVG viaja para servidores externos',
103
+ 'Renderização remota com qualidade inconsistente',
104
+ 'Tempo de espera para upload e processamento',
105
+ 'Limitações no tamanho do arquivo SVG',
106
+ ],
107
+ },
108
+ {
109
+ title: 'A Nossa Arquitetura Local',
110
+ description: 'Processamento direto no seu hardware utilizando a tecnologia Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'O seu SVG nunca deixa o seu navegador',
115
+ 'Renderização do motor nativo do navegador para máxima fidelidade',
116
+ 'PNG em resolução 2x para ecrãs de alta densidade',
117
+ 'Transparência preservada com canal alfa completo',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Como funciona tecnicamente',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'O processo começa carregando o arquivo SVG num elemento JavaScript <strong>Image</strong>. Assim que o motor do navegador analisa e renderiza o XML vetorial, a imagem resultante é desenhada num <strong>HTML5 Canvas</strong> cujas dimensões são o dobro do tamanho SVG original (escala 2x). Isto produz um PNG com o dobro dos píxeis por dimensão, ideal para ecrãs de alta resolução.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Ao contrário da conversão para JPG, ao exportar para PNG o canvas retém o canal alfa completo: as áreas transparentes no SVG original tornam-se píxeis totalmente transparentes no PNG resultante — sem preenchimento de fundo branco. A exportação utiliza o método <code>toDataURL(\'image/png\')</code> com compressão lossless.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Dica antes de rasterizar',
138
+ html: 'Escolha o seu tamanho de exportação PNG com cuidado — rasterizar um SVG é um processo de sentido único: você não pode recuperar os vetores a partir do PNG resultante. Mantenha sempre o SVG original como fonte mestre e gere PNGs na resolução mais alta que você possa vir a precisar.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Casos de uso e compatibilidade',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Exportar logótipos vetoriais para apresentações PowerPoint ou Google Slides.',
150
+ 'Criar ícones PNG para iOS, Android ou Progressive Web Apps.',
151
+ 'Compartilhar designs SVG no Instagram, LinkedIn ou outras redes sociais.',
152
+ 'Inserir ilustrações vetoriais em documentos Word ou PDFs.',
153
+ 'Gerar miniaturas PNG de gráficos SVG para pré-visualização no CMS.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Conclusão',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'SVG é a linguagem dos vetores; PNG é o passaporte para o resto do mundo digital. Esta ferramenta rasteriza os seus SVGs em resolução 2x com a transparência intacta, diretamente no seu navegador, sem que um único byte do seu design viaje para qualquer servidor externo.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: SvgAPngLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'pt', 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 { SvgAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'konverter-svg-v-png';
6
+ const title = 'Конвертировать SVG в PNG Онлайн и Бесплатно';
7
+ const description =
8
+ 'Конвертируйте векторные файлы SVG в PNG в вашем браузере. HD-вывод в двойном масштабе. Сохраняет прозрачность. Бесплатно и 100% приватно.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Перетащите файлы SVG...',
12
+ convertText: 'Чтобы мгновенно конвертировать их в PNG',
13
+ selectFiles: 'Выбрать файлы',
14
+ processedFiles: 'Обработанные файлы',
15
+ downloadAll: 'Скачать всё (.zip)',
16
+ pending: 'В ожидании',
17
+ bibliographyTitle: 'Библиографические ссылки',
18
+ faqTitle: 'Часто задаваемые вопросы',
19
+ };
20
+
21
+ const faq: SvgAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'Зачем конвертировать файлы SVG в PNG?',
24
+ answer:
25
+ 'SVG основан на векторах и идеально подходит для логотипов, но иногда вам нужен растровый формат PNG для использования в приложениях, которые не поддерживают векторы, или для публикации через мессенджеры или социальные сети.',
26
+ },
27
+ {
28
+ question: 'Могу ли я выбрать размер вывода?',
29
+ answer:
30
+ 'В настоящее время мы удваиваем масштаб исходного SVG, чтобы вывод PNG был четким и подходил для экранов Retina или 4K.',
31
+ },
32
+ {
33
+ question: 'Сохраняется ли прозрачность SVG?',
34
+ answer:
35
+ 'Да, результирующий PNG сохраняет альфа-канал оригинального SVG, сохраняя все прозрачные фоны нетронутыми.',
36
+ },
37
+ ];
38
+
39
+ const howTo: SvgAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Вставьте ваши файлы SVG',
42
+ text: 'Перетащите ваши файлы SVG прямо в верхнюю область.',
43
+ },
44
+ {
45
+ name: 'Генерация HD PNG',
46
+ text: 'За миллисекунды наш локальный движок воссоздаст каждый вектор как пиксельный слой HD в формате прозрачного PNG.',
47
+ },
48
+ {
49
+ name: 'Скачайте файлы',
50
+ text: 'Сохраните сгенерированные PNG по отдельности или в виде ZIP-архива.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: SvgAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Спецификация W3C SVG',
57
+ url: 'https://www.w3.org/TR/SVG/',
58
+ },
59
+ {
60
+ name: 'Mozilla: учебник по SVG',
61
+ url: 'https://developer.mozilla.org/ru/docs/Web/SVG/Tutorial',
62
+ },
63
+ ];
64
+
65
+ const seo: SvgAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Конвертер SVG в PNG: От бесконечного вектора к универсальному растру',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>SVG</strong> (Scalable Vector Graphics) — идеальный выбор для веб-дизайна: бесконечно масштабируемый, легкий и редактируемый в любом текстовом редакторе. Но когда вам нужно использовать этот логотип или иконку в мобильном приложении, опубликовать в социальных сетях или вставить в презентацию PowerPoint, вы сталкиваетесь с препятствием: большинство этих платформ не поддерживают SVG. Формат <strong>PNG</strong> — универсальное решение: растровый, с альфа-каналом и совместимый абсолютно в любом контексте.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'SVG против PNG: векторы для веба, растр для мира',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'SVG хранит изображение в виде математических инструкций: кривая Безье, градиент, многоугольник. Это означает, что один и тот же файл выглядит идеально и при 16 пикселях, и при 16 000. Это идеальный формат для вашего веб-кода, CSS-анимаций и любого элемента, который должен адаптироваться к различным разрешениям экрана без потери качества.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'PNG хранит изображение в виде сетки пикселей с информацией о цвете и прозрачности для каждого пикселя. Это формат <strong>без потерь</strong>, что означает полное сохранение качества. Как только SVG растеризуется в PNG, разрешение фиксируется. Вот почему выбор правильного размера экспорта имеет решающее значение: наш инструмент выполняет рендеринг в двойном масштабе (2x) для обеспечения четкости на экранах Retina и 4K.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Сравнение: локальная vs облачная конвертация',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Облачные конвертеры',
98
+ description: 'Инструменты, которые загружают ваши файлы на удаленный сервер.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Ваш код SVG передается на внешние серверы',
103
+ 'Удаленный рендеринг с нестабильным качеством',
104
+ 'Время ожидания загрузки и обработки',
105
+ 'Ограничения на размер файла SVG',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Наша локальная архитектура',
110
+ description: 'Прямая обработка на вашем оборудовании с использованием технологии Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Ваш SVG никогда не покидает браузер',
115
+ 'Рендеринг нативным движком браузера для максимальной точности',
116
+ 'PNG в разрешении 2x для экранов с высокой плотностью пикселей',
117
+ 'Прозрачность сохраняется благодаря полному альфа-каналу',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Как это работает технически',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Процесс начинается с загрузки файла SVG в элемент JavaScript <strong>Image</strong>. Как только движок браузера разберет и отрисует векторный XML, результирующее изображение отрисовывается на <strong>HTML5 Canvas</strong>, размеры которого в два раза превышают исходный размер SVG (масштаб 2x). Это создает PNG с удвоенным количеством пикселей по каждому измерению, что идеально подходит для экранов с высоким разрешением.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'В отличие от конвертации в JPG, при экспорте в PNG холст сохраняет полный альфа-канал: прозрачные области в оригинальном SVG становятся полностью прозрачными пикселями в результирующем PNG — никакой заливки белым фоном. Для экспорта используется метод <code>toDataURL(\'image/png\')</code> со сжатием без потерь.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Совет перед растеризацией',
138
+ html: 'Тщательно выбирайте размер экспорта в PNG — растеризация SVG является необратимым процессом: вы не сможете восстановить векторы из полученного PNG. Всегда сохраняйте оригинальный SVG в качестве мастер-источника и создавайте PNG в самом высоком разрешении, которое вам когда-либо может понадобиться.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Варианты использования и совместимость',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Экспорт векторных логотипов для презентаций PowerPoint или Google Slides.',
150
+ 'Создание иконок PNG для iOS, Android или прогрессивных веб-приложений (PWA).',
151
+ 'Публикация дизайнов SVG в Instagram, LinkedIn или других социальных сетях.',
152
+ 'Вставка векторных иллюстраций в документы Word или PDF.',
153
+ 'Генерация миниатюр PNG для предварительного просмотра графики SVG в CMS.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Заключение',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'SVG — язык векторов; PNG — паспорт в остальной цифровой мир. Этот инструмент растеризует ваши SVG в разрешении 2x с сохранением прозрачности прямо в вашем браузере, без передачи ни одного байта вашего дизайна на внешние серверы.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: SvgAPngLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'ru', faq, howTo }),
178
+ };