@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,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 = 'convertitore-svg-in-png';
6
+ const title = 'Converti SVG in PNG Online e Gratis';
7
+ const description =
8
+ 'Converti file vettoriali SVG in PNG nel tuo browser. Output HD in scala doppia. Mantiene la trasparenza. Gratuito e privato al 100%.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Trascina i file SVG...',
12
+ convertText: 'Per convertirli in PNG istantaneamente',
13
+ selectFiles: 'Seleziona file',
14
+ processedFiles: 'File elaborati',
15
+ downloadAll: 'Scarica tutto (.zip)',
16
+ pending: 'In attesa',
17
+ bibliographyTitle: 'Riferimenti Bibliografici',
18
+ faqTitle: 'Domande Frequenti',
19
+ };
20
+
21
+ const faq: SvgAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'Perché convertire i file SVG in PNG?',
24
+ answer:
25
+ 'Il formato SVG è basato su vettori e ideale per i loghi, ma a volte è necessario il formato PNG rasterizzato per l\'uso in applicazioni che non supportano i vettori, o per condividerli tramite app di messaggistica o social media.',
26
+ },
27
+ {
28
+ question: 'Posso scegliere la dimensione dell\'output?',
29
+ answer:
30
+ 'Attualmente raddoppiamo la scala dell\'SVG sorgente in modo che l\'output PNG sia nitido e adatto agli schermi Retina o 4K.',
31
+ },
32
+ {
33
+ question: 'Le trasparenze dell\'SVG vengono mantenute?',
34
+ answer:
35
+ 'Sì, il PNG risultante preserva il canale alfa dell\'SVG originale, mantenendo intatti tutti gli sfondi trasparenti.',
36
+ },
37
+ ];
38
+
39
+ const howTo: SvgAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Inserisci i tuoi file SVG',
42
+ text: 'Rilascia i tuoi file SVG o trascinali direttamente nell\'area superiore.',
43
+ },
44
+ {
45
+ name: 'Generazione PNG HD',
46
+ text: 'In pochi millisecondi il nostro motore locale ricreerà ogni vettore come un livello di pixel HD in formato PNG trasparente.',
47
+ },
48
+ {
49
+ name: 'Scarica i file',
50
+ text: 'Salva i PNG generati singolarmente o come pacchetto ZIP.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: SvgAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Specifica W3C SVG',
57
+ url: 'https://www.w3.org/TR/SVG/',
58
+ },
59
+ {
60
+ name: 'Mozilla: Tutorial SVG',
61
+ url: 'https://developer.mozilla.org/it/docs/Web/SVG/Tutorial',
62
+ },
63
+ ];
64
+
65
+ const seo: SvgAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Convertitore da SVG a PNG: Dal vettore infinito al raster universale',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>SVG</strong> (Scalable Vector Graphics) è la scelta perfetta per il web design: infinitamente scalabile, leggero e modificabile con qualsiasi editor di codice. Ma quando devi usare quel logo o quell\'icona in un\'app mobile, condividerla sui social media o inserirla in una presentazione PowerPoint, ti scontri con un muro: la maggior parte di queste piattaforme non supporta l\'SVG. Il formato <strong>PNG</strong> è la soluzione universale: rasterizzato, con un canale alfa e compatibile in assolutamente ogni contesto.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'SVG vs PNG: Vettori per il Web, Raster per il Mondo',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'L\'SVG memorizza l\'immagine come istruzioni matematiche: una curva di Bézier, una sfumatura, un poligono. Ciò significa che lo stesso file appare perfetto a 16px o 16.000px. È il formato ideale per il tuo codice web, le animazioni CSS e qualsiasi elemento che debba adattarsi a diverse risoluzioni dello schermo senza alcuna perdita di qualità.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Il PNG memorizza l\'immagine come una griglia di pixel con informazioni sul colore e sulla trasparenza per ogni pixel. È un formato <strong>lossless</strong> (senza perdita), il che significa che la qualità viene preservata interamente. Una volta che un SVG è rasterizzato in PNG, la risoluzione è fissa. Ecco perché scegliere la giusta dimensione di esportazione è fondamentale: il nostro strumento esegue il rendering in scala doppia (2x) per garantire la nitidezza sugli schermi Retina e 4K.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Confronto: Conversione Locale vs Cloud',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Convertitori Cloud',
98
+ description: 'Strumenti che caricano i tuoi file su un server remoto.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Il tuo codice SVG viaggia verso server esterni',
103
+ 'Rendering remoto con qualità inconsistente',
104
+ 'Tempo di attesa per il caricamento e l\'elaborazione',
105
+ 'Limitazioni sulla dimensione del file SVG',
106
+ ],
107
+ },
108
+ {
109
+ title: 'La Nostra Architettura Locale',
110
+ description: 'Elaborazione diretta sul tuo hardware utilizzando la tecnologia Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Il tuo SVG non lascia mai il tuo browser',
115
+ 'Rendering del motore nativo del browser per la massima fedeltà',
116
+ 'PNG a risoluzione 2x per schermi ad alta densità',
117
+ 'Trasparenza preservata con canale alfa completo',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Come funziona tecnicamente',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Il processo inizia caricando il file SVG in un elemento JavaScript <strong>Image</strong>. Una volta che il motore del browser ha analizzato e renderizzato l\'XML vettoriale, l\'immagine risultante viene disegnata su un <strong>HTML5 Canvas</strong> le cui dimensioni sono doppie rispetto alla dimensione SVG originale (scala 2x). Questo produce un PNG con il doppio dei pixel per dimensione, ideale per gli schermi ad alta risoluzione.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'A differenza della conversione in JPG, quando si esporta in PNG il canvas mantiene il canale alfa completo: le aree trasparenti nell\'SVG originale diventano pixel completamente trasparenti nel PNG risultante — nessuna colorazione di sfondo bianca. L\'esportazione utilizza il metodo <code>toDataURL(\'image/png\')</code> con compressione senza perdita.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Suggerimento prima della rasterizzazione',
138
+ html: 'Scegli attentamente la dimensione di esportazione del PNG — rasterizzare un SVG è un processo a senso unico: non puoi recuperare i vettori dal PNG risultante. Mantieni sempre l\'SVG originale come sorgente master e genera i PNG alla massima risoluzione di cui potresti aver bisogno.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Casi d\'uso e compatibilità',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Esportazione di loghi vettoriali per presentazioni PowerPoint o Google Slides.',
150
+ 'Creazione di icone PNG per iOS, Android o Progressive Web Apps.',
151
+ 'Condivisione di design SVG su Instagram, LinkedIn o altri social media.',
152
+ 'Inserimento di illustrazioni vettoriali in documenti Word o PDF.',
153
+ 'Generazione di miniature PNG di grafiche SVG per l\'anteprima nel CMS.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Conclusione',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'L\'SVG è il linguaggio dei vettori; il PNG è il passaporto per il resto del mondo digitale. Questo strumento rasterizza i tuoi SVG a una risoluzione 2x con la trasparenza intatta, direttamente nel tuo browser, senza che un singolo byte del tuo design viaggi verso server esterni.',
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: 'it', 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 = 'svg-to-png-converter';
6
+ const title = 'SVGをPNGにオンラインで無料で変換しましょう';
7
+ const description =
8
+ 'ブラウザでSVGベクトルファイルをPNGに変換します。2倍スケールの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
+ '現在、出力されるPNGがRetinaや4K画面に適した鮮明なものになるよう、元のSVGのスケールを2倍にして出力しています。',
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: '数ミリ秒以内に、当社のローカルエンジンが各ベクトルを透明PNG形式のHDピクセルレイヤーとして再構築します。',
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/ja/docs/Web/SVG/Tutorial',
62
+ },
63
+ ];
64
+
65
+ const seo: SvgAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'SVG to 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 vs PNG:ウェブのためのベクトル、世界のためのラスタ',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'SVGは画像を数学的な命令として保存します。ベジェ曲線、グラデーション、多角形などがその例です。これは、同じファイルが16pxでも16,000pxでも完璧に見えることを意味します。ウェブコード、CSSアニメーション、および品質を損なうことなくさまざまな画面解像度に適応する必要があるあらゆる要素にとって理想的な形式です。',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'PNGは、各ピクセルの色と透明度の情報を含むピクセルグリッドとして画像を保存します。 <strong>可逆</strong> (lossless) 形式であり、品質が完全に保持されます。一度SVGがPNGにラスタライズされると、解像度は固定されます。そのため、適切なエクスポートサイズを選択することが重要です。当社のツールは、Retinaや4K画面での鮮明さを保証するために、2倍のスケール (2x) でレンダリングします。',
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
+ '高密度画面用の2倍解像度PNG',
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を解析してレンダリングすると、結果の画像が元のSVGサイズの2倍(2倍スケール)の <strong>HTML5 Canvas</strong> 上に描画されます。これにより、高解像度画面に最適な、各次元で2倍のピクセルを持つ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スライドでのプレゼン用にベクトルロゴをエクスポート。',
150
+ 'iOS、Android、またはProgressive Web Apps用のPNGアイコンの作成。',
151
+ 'Instagram、LinkedIn、またはその他のソーシャルメディアでSVGデザインを共有。',
152
+ 'Word文書やPDFにベクトルイラストを挿入。',
153
+ 'CMSプレビュー用にSVGグラフィックのPNGサムネイルを生成。',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: '結論',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'SVGはベクトルの言語であり、PNGはデジタルの世界の残りの部分へのパスポートです。このツールは、デザインの1バイトも外部サーバーに送ることなく、ブラウザで直接、透明度を維持したままSVGを2倍の解像度でラスタライズします。',
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: 'ja', 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 = 'svg-to-png-converter';
6
+ const title = 'SVG를 PNG로 온라인에서 무료로 변환하세요';
7
+ const description =
8
+ '브라우저에서 SVG 벡터 파일을 PNG로 변환하세요. 2배 배율의 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: '수 밀리초 만에 로컬 엔진이 각 벡터를 투명 PNG 형식의 HD 픽셀 레이어로 레디할 것입니다.',
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/en-US/docs/Web/SVG/Tutorial',
62
+ },
63
+ ];
64
+
65
+ const seo: SvgAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'SVG to 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 vs PNG: 웹을 위한 벡터, 세상을 위한 래스터',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'SVG는 이미지를 수학적 명령어로 저장합니다. 베지에 곡선, 그라데이션, 다각형 등이 그 예입니다. 이는 동일한 파일이 16px이나 16,000px에서 모두 완벽하게 보임을 의미합니다. 웹 코드, CSS 애니메이션 및 품질 저하 없이 다양한 화면 해상도에 적응해야 하는 모든 요소에 이상적인 형식입니다.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'PNG는 각 픽셀에 대한 색상 및 투명도 정보가 포함된 픽셀 그리드로 이미지를 저장합니다. <strong>무손실</strong>(lossless) 형식으로 품질이 완전히 보존됩니다. SVG가 PNG로 래스터화되면 해상도가 고정됩니다. 이것이 올바른 내보내기 크기를 선택하는 것이 중요한 이유입니다. 당사의 도구는 Retina 및 4K 화면에서의 선명도를 보장하기 위해 2배 배율(2x)로 렌더링합니다.',
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
+ '고밀도 화면을 위한 2배 해상도 PNG',
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을 파싱하고 렌더링하면 결과 이미지가 원래 SVG 크기의 두 배(2배 배율)인 <strong>HTML5 Canvas</strong> 위에 그려집니다. 이를 통해 고해상도 화면에 이상적인, 각 치수당 두 배의 픽셀을 가진 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 슬라이드 프레젠테이션용 벡터 로고 내보내기.',
150
+ 'iOS, Android 또는 프로그레시브 웹 앱용 PNG 아이콘 생성.',
151
+ 'Instagram, LinkedIn 또는 기타 소셜 미디어에 SVG 디자인 공유.',
152
+ 'Word 문서나 PDF에 벡터 일러스트레이션 삽입.',
153
+ 'CMS 미리보기를 위한 SVG 그래픽의 PNG 썸네일 생성.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: '결론',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'SVG는 벡터의 언어이고, PNG는 디지털 세계의 나머지 부분으로 통하는 여권입니다. 이 도구는 디자인의 단 1바이트도 외부 서버로 전송하지 않고 브라우저에서 직접 투명도가 유지된 상태로 SVG를 2배 해상도로 래스터화합니다.',
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: 'ko', faq, howTo }),
178
+ };