@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 = 'konvertera-svg-till-png';
6
+ const title = 'Konvertera SVG till PNG Online och Gratis';
7
+ const description =
8
+ 'Konvertera SVG-vektorfiler till PNG i din webbläsare. HD-utmatning i dubbel skala. Bevarar transparens. Gratis och 100 % privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Dra SVG-filer hit...',
12
+ convertText: 'För att konvertera dem till PNG direkt',
13
+ selectFiles: 'Välj filer',
14
+ processedFiles: 'Bearbetade filer',
15
+ downloadAll: 'Ladda ner alla (.zip)',
16
+ pending: 'Väntande',
17
+ bibliographyTitle: 'Bibliografiska Referenser',
18
+ faqTitle: 'Vanliga Frågor',
19
+ };
20
+
21
+ const faq: SvgAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'Varför konvertera SVG-filer till PNG?',
24
+ answer:
25
+ 'SVG är vektorbaserat och idealiskt för logotyper, men ibland behöver du det rastrerade PNG-formatet för användning i applikationer som inte stöder vektorer, eller för att dela via meddelandeappar eller sociala medier.',
26
+ },
27
+ {
28
+ question: 'Kan jag välja storlek på utmatningen?',
29
+ answer:
30
+ 'Vi fördubblar för närvarande skalan på käll-SVG:n så att PNG-utmatningen är skarp och lämplig för Retina- eller 4K-skärmar.',
31
+ },
32
+ {
33
+ question: 'Behålls SVG-transparens?',
34
+ answer:
35
+ 'Ja, den resulterande PNG-filen bevarar alfakanalen från den ursprungliga SVG-filen, vilket håller alla transparenta bakgrunder intakta.',
36
+ },
37
+ ];
38
+
39
+ const howTo: SvgAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Lägg till dina SVG-filer',
42
+ text: 'Släpp dina SVG-filer eller dra dem direkt till det övre området.',
43
+ },
44
+ {
45
+ name: 'HD PNG-generering',
46
+ text: 'På några millisekunder kommer vår lokala motor att återskapa varje vektor som ett HD-pixellager i transparent PNG-format.',
47
+ },
48
+ {
49
+ name: 'Ladda ner filerna',
50
+ text: 'Spara de genererade PNG-filerna individuellt eller som ett ZIP-paket.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: SvgAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'W3C SVG-specifikation',
57
+ url: 'https://www.w3.org/TR/SVG/',
58
+ },
59
+ {
60
+ name: 'Mozilla: SVG-handledning',
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 till PNG-konverterare: Från oändlig vektor till universellt raster',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>SVG</strong> (Scalable Vector Graphics) är det perfekta valet för webbdesign: oändligt skalbart, lättviktigt och redigerbart med vilken kodredigerare som helst. Men när du vill använda den logotypen eller ikonen i en mobilapp, dela den på sociala medier eller infoga den i en PowerPoint presentation, stöter du på patrull: de flesta av dessa plattformar stöder inte SVG. <strong>PNG</strong>-formatet är den universella lösningen: rastrerat, med en alfakanal och kompatibelt i absolut alla sammanhang.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'SVG vs PNG: Vektorer för webben, raster för världen',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'SVG lagrar bilden som matematiska instruktioner: en Bézier kurva, en toning, en polygon. Det betyder att samma fil ser perfekt ut i 16 px eller 16 000 px. Det är det ideala formatet för din webbkod, CSS-animationer och alla element som behöver anpassas till olika skärmupplösningar utan kvalitetsförlust.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'PNG lagrar bilden som ett pixelrutnät med färg- och transparensinformation för varje pixel. Det är ett <strong>förlustfritt</strong> format, vilket innebär att kvaliteten bevaras helt. När en SVG väl har rastrerats till PNG är upplösningen fast. Därför är valet av rätt exportstorlek avgörande: vårt verktyg renderar i dubbel skala (2x) för att säkerställa skärpa på Retina och 4K skärmar.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Jämförelse: Lokal vs Molnkonvertering',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Molnkonverterare',
98
+ description: 'Verktyg som laddar upp dina filer till en fjärrserver.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Din SVG-kod skickas till externa servrar',
103
+ 'Fjärr-rendering med inkonsekvent kvalitet',
104
+ 'Väntetid för uppladdning och bearbetning',
105
+ 'Begränsningar i storlek på SVG-filen',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Vår Lokala Arkitektur',
110
+ description: 'Direkt bearbetning på din hårdvara med Vanilla JS-teknik.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Din SVG lämnar aldrig din webbläsare',
115
+ 'Rendering med den infödda webbläsarmotorn för maximal trohet',
116
+ 'PNG i 2x upplösning för skärmar med hög densitet',
117
+ 'Transparens bevaras med full alfakanal',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Hur det fungerar tekniskt',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Processen börjar med att SVG-filen laddas in i ett JavaScript <strong>Image</strong>-element. När webbläsarmotorn har analyserat och renderat vektorns XML ritas den resulterande bilden på ett <strong>HTML5 Canvas</strong> vars dimensioner är dubbelt så stora som den ursprungliga SVG-storleken (2x skala). Detta ger en PNG med dubbelt så många pixlar per dimension, idealiskt för högupplösta skärmar.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Till skillnad från konvertering till JPG behåller canvasen den fullständiga alfakanalen vid export till PNG: transparenta områden i den ursprungliga SVG-filen blir helt transparenta pixlar i den resulterande PNG-filen – ingen vit bakgrundsfyllning. Exporten använder metoden <code>toDataURL(\'image/png\')</code> med förlustfri komprimering.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Tips före rastrering',
138
+ html: 'Välj din PNG-exportstorlek noggrant – att rastrera en SVG är en enkelriktad process: du kan inte återfå vektorerna från den resulterande PNG-filen. Behåll alltid den ursprungliga SVG-filen som masterkälla och generera PNG-filer i den högsta upplösning du någonsin kan tänkas behöva.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Användningsområden och kompatibilitet',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Exportera vektorlogotyper för PowerPoint eller Google Slides presentationer.',
150
+ 'Skapa PNG-ikoner för iOS, Android eller Progressive Web Apps.',
151
+ 'Dela SVG-design på Instagram, LinkedIn eller andra sociala medier.',
152
+ 'Infoga vektorillustrationer i Word-dokument eller PDF-filer.',
153
+ 'Generera PNG-miniatyrer av SVG-grafik för CMS-förhandsgranskning.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Slutsats',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'SVG är vektorernas språk; PNG är passet till resten av den digitala världen. Detta verktyg rastrerar dina SVG-filer i 2x upplösning med bibehållen transparens, direkt i din webbläsare, utan att en enda byte av din design skickas till någon extern server.',
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: 'sv', faq, howTo }),
178
+ };
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { SvgAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'svg-den-png-ye-donusturucu';
6
+ const title = 'SVG\'yi PNG\'ye Çevrimiçi ve Ücretsiz Dönüştürün';
7
+ const description =
8
+ 'SVG vektör dosyalarını tarayıcınızda PNG\'ye dönüştürün. Çift ölçekli HD çıktı. Şeffaflığı korur. Ücretsiz ve %100 özel.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'SVG dosyalarını sürükleyin...',
12
+ convertText: 'Onları anında PNG\'ye dönüştürmek için',
13
+ selectFiles: 'Dosyaları seçin',
14
+ processedFiles: 'İşlenmiş dosyalar',
15
+ downloadAll: 'Tümünü İndir (.zip)',
16
+ pending: 'Bekliyor',
17
+ bibliographyTitle: 'Bibliyografik Referanslar',
18
+ faqTitle: 'Sıkça Sorulan Sorular',
19
+ };
20
+
21
+ const faq: SvgAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'Neden SVG dosyalarını PNG\'ye dönüştürmeliyiz?',
24
+ answer:
25
+ 'SVG vektör tabanlıdır ve logolar için idealdir, ancak bazen vektörleri desteklemeyen uygulamalarda kullanmak veya mesajlaşma uygulamaları ya da sosyal medya üzerinden paylaşmak için rasterleştirilmiş PNG formatına ihtiyacınız olur.',
26
+ },
27
+ {
28
+ question: 'Çıktı boyutunu seçebilir miyim?',
29
+ answer:
30
+ 'PNG çıktısının keskin ve Retina veya 4K ekranlar için uygun olması için şu anda kaynak SVG\'nin ölçeğini iki katına çıkarıyoruz.',
31
+ },
32
+ {
33
+ question: 'SVG şeffaflıkları korunuyor mu?',
34
+ answer:
35
+ 'Evet, sonuçta elde edilen PNG, orijinal SVG\'nin alfa kanalını koruyarak tüm şeffaf arka planları olduğu gibi tutar.',
36
+ },
37
+ ];
38
+
39
+ const howTo: SvgAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'SVG dosyalarınızı yerleştirin',
42
+ text: 'SVG dosyalarınızı bırakın veya doğrudan üst alana sürükleyin.',
43
+ },
44
+ {
45
+ name: 'HD PNG Üretimi',
46
+ text: 'Milisaniyeler içinde yerel motorumuz her bir vektörü şeffaf PNG formatında bir HD piksel katmanı olarak yeniden oluşturacaktır.',
47
+ },
48
+ {
49
+ name: 'Dosyaları indirin',
50
+ text: 'Oluşturulan PNG\'leri tek tek veya ZIP paketi olarak kaydedin.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: SvgAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'W3C SVG Özellikleri',
57
+ url: 'https://www.w3.org/TR/SVG/',
58
+ },
59
+ {
60
+ name: 'Mozilla: SVG Eğitimi',
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\'den PNG\'ye Dönüştürücü: Sonsuz Vektörden Evrensel Rastere',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>SVG</strong> (Ölçeklenebilir Vektör Grafikleri) web tasarımı için mükemmel bir seçimdir: sonsuz ölçeklenebilir, hafiftir ve herhangi bir kod düzenleyiciyle düzenlenebilir. Ancak bu logoyu veya simgeyi bir mobil uygulamada kullanmak, sosyal medyada paylaşmak veya bir PowerPoint sunumuna yerleştirmek istediğinizde bir engelle karşılaşırsınız: Bu platformların çoğu SVG\'yi desteklemez. <strong>PNG</strong> formatı evrensel çözümdür: rasterleştirilmiştir, bir alfa kanalına sahiptir ve kesinlikle her bağlamda uyumludur.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'SVG mi PNG mi? Web için Vektörler, Dünya için Raster',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: 'SVG, görüntüyü matematiksel talimatlar olarak saklar: bir Bézier eğrisi, bir gradyan, bir çokgen. Bu, aynı dosyanın 16 pikselde veya 16.000 pikselde mükemmel görünmesi anlamına gelir. Web kodunuz, CSS animasyonlarınız ve herhangi bir kalite kaybı olmadan farklı ekran çözünürlüklerine uyum sağlaması gereken her öğe için ideal formattır.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'PNG, görüntüyü her piksel için renk ve şeffaflık bilgilerini içeren bir piksel ızgarası olarak saklar. <strong>Kayıpsız</strong> (lossless) bir formattır, yani kalite tamamen korunur. Bir SVG, PNG\'ye rasterleştirildikten sonra çözünürlük sabittir. Bu nedenle doğru dışa aktarma boyutunu seçmek kritiktir: Aracımız, Retina ve 4K ekranlarda keskinliği sağlamak için çift ölçekte (2 kat) işleme yapar.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Karşılaştırma: Yerel ve Bulut Dönüştürme',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Bulut Dönüştürücüler',
98
+ description: 'Dosyalarınızı uzak bir sunucuya yükleyen araçlar.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'SVG kodunuz harici sunuculara gider',
103
+ 'Tutarsız kalitede uzaktan işleme',
104
+ 'Yükleme ve işleme için bekleme süresi',
105
+ 'SVG dosya boyutu sınırlamaları',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Yerel Mimarimiz',
110
+ description: 'Vanilla JS teknolojisini kullanarak doğrudan donanımınızda işleme.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'SVG\'niz tarayıcınızdan asla ayrılmaz',
115
+ 'Maksimum doğruluk için yerel tarayıcı motoru işlemesi',
116
+ 'Yüksek yoğunluklu ekranlar için 2 kat çözünürlüklü PNG',
117
+ 'Tam alfa kanalıyla korunan şeffaflık',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Teknik Olarak Nasıl Çalışır',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Süreç, SVG dosyasının bir JavaScript <strong>Image</strong> öğesine yüklenmesiyle başlar. Tarayıcı motoru vektör XML\'ini ayrıştırıp işledikten sonra, sonuç görüntüsü boyutları orijinal SVG boyutunun iki katı (2 kat ölçek) olan bir <strong>HTML5 Canvas</strong> üzerine çizilir. Bu, yüksek çözünürlüklü ekranlar için ideal olan, her boyutta iki kat piksele sahip bir PNG üretir.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'JPG\'ye dönüştürmenin aksine, PNG\'ye dışa aktarırken tuval tam alfa kanalını korur: Orijinal SVG\'deki şeffaf alanlar, sonuçta elde edilen PNG\'de tamamen şeffaf pikseller haline gelir — beyaz arka plan dolgusu olmaz. Dışa aktarma işlemi, kayıpsız sıkıştırma ile <code>toDataURL(\'image/png\')</code> yöntemini kullanır.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Rasterleştirmeden önce ipucu',
138
+ html: 'PNG dışa aktarma boyutunuzu dikkatli seçin — bir SVG\'yi rasterleştirmek tek yönlü bir işlemdir: vektörleri sonuçta elde edilen PNG\'den geri kazanamazsınız. Her zaman orijinal SVG\'yi ana kaynak olarak tutun ve ihtiyaç duyabileceğiniz en yüksek çözünürlükte PNG\'ler oluşturun.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Kullanım Durumları ve Uyumluluk',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'PowerPoint veya Google Slides sunumları için vektör logolarını dışa aktarma.',
150
+ 'iOS, Android veya Progresif Web Uygulamaları için PNG simgeleri oluşturma.',
151
+ 'SVG tasarımlarını Instagram, LinkedIn veya diğer sosyal medyalarda paylaşma.',
152
+ 'Vektör illüstrasyonlarını Word belgelerine veya PDF\'lere yerleştirme.',
153
+ 'CMS önizlemesi için SVG grafiklerinin PNG küçük resimlerini oluşturma.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Sonuç',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'SVG vektörlerin dilidir; PNG ise dijital dünyanın geri kalanına açılan pasaporttur. Bu araç, tasarımlarınızın tek bir baytı bile harici bir sunucuya gitmeden, doğrudan tarayıcınızda, SVGs\'lerinizi şeffaflığı bozulmadan 2 kat çözünürlükte rasterleştirir.',
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: 'tr', faq, howTo }),
178
+ };
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { SvgAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'svg-to-png-converter';
6
+ const title = '在线免费将 SVG 转换为 PNG';
7
+ const description =
8
+ '在浏览器中将 SVG 矢量文件转换为 PNG。支持双倍缩放高清输出。保留透明度。无需上传文件。免费且 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 的 Alpha 通道, 使所有透明背景保持原样。',
36
+ },
37
+ ];
38
+
39
+ const howTo: SvgAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: '放入您的 SVG 文件',
42
+ text: '将您的 SVG 文件拖入上方区域。',
43
+ },
44
+ {
45
+ name: '高清 PNG 生成',
46
+ text: '在毫秒之间, 我们的本地引擎就会将每个矢量重建为透明 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/zh-CN/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> (可缩放矢量图形) 是网页设计的完美选择: 无限缩放、轻量级, 且可以使用任何代码编辑器进行编辑。但是当您需要快速在移动应用中使用该徽标或图标、在社交媒体上分享或插入 PowerPoint 演示文稿时, 您就会遇到阻碍: 大多数此类平台并不支持 SVG。 <strong>PNG</strong> 格式则是通用的解决方案: 栅格化、带有 Alpha 通道, 且在绝对任何场景下都具有良好的兼容性。',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'SVG vs PNG: 为 Web 打造矢量, 为世界提供栅格',
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> (lossless) 格式, 意味着画质被完全保留。一旦 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
+ '输出 2 倍高清 PNG 以适配高分辨率屏幕',
117
+ '通过完整 Alpha 通道完美保留透明度',
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 时, 画布保留了完整的 Alpha 通道: 原始 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
+ '为 iOS、Android 或渐进式 Web 应用 (PWA) 创建 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 是通往数字世界其他领域的通行证。此工具能在浏览器中直接以 2 倍分辨率将您的 SVG 栅格化并保留透明度, 您的设计数据完全不会传输到任何外部服务器。',
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: 'zh', faq, howTo }),
178
+ };
@@ -16,6 +16,18 @@ export const svgAPng: ConvertersToolEntry<ImageConverterUI> = {
16
16
  es: () => import('./i18n/es').then((m) => m.content),
17
17
  en: () => import('./i18n/en').then((m) => m.content),
18
18
  fr: () => import('./i18n/fr').then((m) => m.content),
19
+ de: () => import('./i18n/de').then((m) => m.content),
20
+ id: () => import('./i18n/id').then((m) => m.content),
21
+ it: () => import('./i18n/it').then((m) => m.content),
22
+ ja: () => import('./i18n/ja').then((m) => m.content),
23
+ ko: () => import('./i18n/ko').then((m) => m.content),
24
+ nl: () => import('./i18n/nl').then((m) => m.content),
25
+ pl: () => import('./i18n/pl').then((m) => m.content),
26
+ pt: () => import('./i18n/pt').then((m) => m.content),
27
+ ru: () => import('./i18n/ru').then((m) => m.content),
28
+ sv: () => import('./i18n/sv').then((m) => m.content),
29
+ tr: () => import('./i18n/tr').then((m) => m.content),
30
+ zh: () => import('./i18n/zh').then((m) => m.content),
19
31
  },
20
32
  };
21
33