@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,191 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAJpgLocaleContent } from '../index';
4
+
5
+ const slug = 'png-zu-jpg-konvertieren';
6
+ const title = 'PNG in JPG Online Konvertieren';
7
+ const description =
8
+ 'Konvertieren Sie Ihre PNG-Bilder sofort auf Ihrem eigenen Computer in das schnell komprimierte JPG-Format. Ohne Fotos ins Internet hochzuladen. Batch-Optimierung.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'PNG-Dateien hierher ziehen...',
12
+ convertText: 'Um sie sofort in JPG zu konvertieren',
13
+ selectFiles: 'Dateien auswählen',
14
+ processedFiles: 'Verarbeitete Dateien',
15
+ downloadAll: 'Alles herunterladen (.zip)',
16
+ pending: 'Ausstehend',
17
+ bibliographyTitle: 'Literaturhinweise',
18
+ faqTitle: 'Häufig gestellte Fragen',
19
+ };
20
+
21
+ const faq: PngAJpgLocaleContent['faq'] = [
22
+ {
23
+ question: 'Warum sollten Sie unseren lokalen PNG-zu-JPG-Konverter wählen?',
24
+ answer:
25
+ 'Im Gegensatz zu herkömmlichen Tools verarbeitet unser Tool die Dateien vollständig in Ihrem Browser. Ihre Bilder berühren nie eine fremde Festplatte, was die totale Souveränität und Privatsphäre Ihrer Daten garantiert.',
26
+ },
27
+ {
28
+ question: 'JPG oder PNG? Was ist besser für meinen Fall?',
29
+ answer:
30
+ 'PNG ist ideal für Logos und Elemente mit Transparenz. JPG hingegen ist der Goldstandard für Fotos und Web-Banner, da es viel geringere Dateigrößen erreicht und so die Ladegeschwindigkeit einer Website drastisch verbessert.',
31
+ },
32
+ {
33
+ question: 'Wie funktioniert die technische Konvertierung ohne Upload?',
34
+ answer:
35
+ 'Wir nutzen die Leistung des HTML5-Canvas. Der Browser stellt das Bild auf einer unsichtbaren virtuellen Leinwand dar, füllt Transparenzen mit Weiß und erzeugt einen Byte-Stream, den Sie sofort direkt herunterladen.',
36
+ },
37
+ {
38
+ question: 'Ist es sicher für vertrauliche Dokumente?',
39
+ answer:
40
+ 'Ja, es ist die sicherste Option für Fachleute aus den Bereichen Banken, Gesundheit oder Recht. Da es sich um eine "Black Box" handelt, die nur Ihren RAM nutzt, werden alle Daten beim Schließen des Tabs gelöscht, wodurch Lecks in Drittanbieter-Clouds vermieden werden.',
41
+ },
42
+ ];
43
+
44
+ const howTo: PngAJpgLocaleContent['howTo'] = [
45
+ {
46
+ name: 'Dateiauswahl',
47
+ text: 'Bereiten Sie Ihre PNG-Dateien in einem Ordner vor und ziehen Sie sie alle zusammen in den Verarbeitungsbereich oder suchen Sie sie mit dem Explorer.',
48
+ },
49
+ {
50
+ name: 'Sofortige Verarbeitung',
51
+ text: 'Überprüfen Sie, ob sich der Status für jede Datei auf "Fertig" ändert, während der Browser die Dateigröße lokal optimiert.',
52
+ },
53
+ {
54
+ name: 'Optimierter Download',
55
+ text: 'Speichern Sie Ihre neuen JPG-Dateien einzeln oder verwenden Sie die Schaltfläche "Alles herunterladen", um eine komprimierte ZIP-Datei mit allen Bildern zu erhalten.',
56
+ },
57
+ ];
58
+
59
+ const bibliography: PngAJpgLocaleContent['bibliography'] = [
60
+ {
61
+ name: 'PNG Consortium Spezifikationen',
62
+ url: 'http://www.libpng.org/pub/png/',
63
+ },
64
+ {
65
+ name: 'Das JPEG-Komitee',
66
+ url: 'https://jpeg.org/',
67
+ },
68
+ ];
69
+
70
+ const seo: PngAJpgLocaleContent['seo'] = [
71
+ {
72
+ type: 'title',
73
+ text: 'PNG-zu-JPG-Konverter: Der ultimative Leitfaden zur Bildoptimierung',
74
+ level: 2,
75
+ },
76
+ {
77
+ type: 'paragraph',
78
+ html: 'In der Welt des digitalen Designs und der Webentwicklung ist Effizienz alles. Das PNG-Format (Portable Network Graphics) wird für seine Fähigkeit geliebt, Transparenzen beizubehalten und eine verlustfreie Kompression zu bieten, hat aber einen großen Feind: das Dateigewicht. Wenn Sie möchten, dass Ihre Website fliegt oder Ihre E-Mails sofort geladen werden, ist der Wechsel von PNG zu JPG die intelligenteste technische Entscheidung.',
79
+ },
80
+ {
81
+ type: 'title',
82
+ text: 'JPG oder PNG?',
83
+ level: 3,
84
+ },
85
+ {
86
+ type: 'paragraph',
87
+ html: 'Es gibt kein Format, das besser als das andere ist, sondern ein Werkzeug für jeden Bedarf. PNG ist ein verlustfreies Format, ideal für Interface-Mockups, Logos mit kleinem Text und visuelle Elemente, die einen transparenten Hintergrund erfordern. Diese Treue hat jedoch ihren Preis: Dateien, die 5- oder 10-mal schwerer sein können als ihr komprimiertes Äquivalent.',
88
+ },
89
+ {
90
+ type: 'paragraph',
91
+ html: 'JPG (Joint Photographic Experts Group) hingegen verwendet Diskretisierungsalgorithmen, um Informationen zu entfernen, die das menschliche Auge kaum wahrnimmt, und erreicht so Federgewicht. Es ist der Goldstandard für Fotos, Werbebanner und soziale Netzwerke. Indem Sie Ihre PNGs in JPGs konvertieren, tauschen Sie geometrische Treue gegen Netzwerkgeschwindigkeit ein.',
92
+ },
93
+ {
94
+ type: 'title',
95
+ text: 'Architekturvergleich: Lokal vs. Cloud',
96
+ level: 3,
97
+ },
98
+ {
99
+ type: 'comparative',
100
+ items: [
101
+ {
102
+ title: 'Cloud Konverter',
103
+ description: 'Herkömmliche Tools, die Ihre Fotos auf einen Remote-Server hochladen.',
104
+ icon: 'mdi:cloud-upload',
105
+ pointIcon: 'mdi:close-circle-outline',
106
+ points: [
107
+ 'Netzwerklatenz (Upload/Download)',
108
+ 'Risiko von Datenlecks privater Daten',
109
+ 'Dateigrößenbeschränkungen pro Datei',
110
+ 'Werbung und Tracker',
111
+ ],
112
+ },
113
+ {
114
+ title: 'Unsere lokale Architektur',
115
+ description: 'Direkte Verarbeitung auf Ihrer Hardware mittels Vanilla JS-Technologie.',
116
+ icon: 'mdi:laptop-mac',
117
+ highlight: true,
118
+ points: [
119
+ 'Sofortige Geschwindigkeit ohne Netzwerk',
120
+ 'Garantierte Privatsphäre (0 Bytes gesendet)',
121
+ 'Keine MB-Limits pro Datei',
122
+ 'Professionelle und saubere Schnittstelle',
123
+ ],
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Wie die technische Konvertierung funktioniert',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Sie fragen sich wahrscheinlich, wie es möglich ist, ein Bild zu konvertieren, ohne es an einen Server zu senden. Die Magie liegt in der Leistung moderner Browser. Wenn Sie eine Datei auswählen, erzeugen wir einen Blob, der nur in Ihrem RAM existiert. Dieser Blob wird auf ein unsichtbares HTML5-Canvas-Element gezeichnet.',
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Da JPG keine Transparenzen unterstützt, füllt unser Algorithmus den Hintergrund mit einer soliden weißen Farbe, bevor das PNG darauf "gemalt" wird. Sobald das Bild komponiert ist, führen wir die native Exportmethode aus und erzeugen einen Byte-Stream, den Ihr Computer direkt herunterlädt.',
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'SEO Tipp: Das ideale Gewicht',
143
+ html: 'Google bestraft aktiv langsame Websites. Wenn Ihr Largest Contentful Paint (LCP) aufgrund eines 2MB großen Header-PNGs hoch ist, kann die Konvertierung in ein 200KB großes JPG Ihre PageSpeed-Metriken sofort verbessern, ohne visuelle Unterschiede.',
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Sicherheit für Unternehmen und Fachleute',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Wenn Sie in sensiblen Bereichen wie Banken, Gesundheit oder Recht arbeiten, ist das Hochladen von Dateien zu Online-Konvertern eine Sicherheitsverletzung. Unser Tool funktioniert wie eine "Black Box": Was drinnen passiert, bleibt in Ihrem RAM. Es ist der einzige sichere Weg, mit vertraulichen Dokumenten zu arbeiten.',
153
+ },
154
+ {
155
+ type: 'title',
156
+ text: 'Kompatibilität des Ergebnisses',
157
+ level: 3,
158
+ },
159
+ {
160
+ type: 'list',
161
+ icon: 'mdi:check-circle',
162
+ items: [
163
+ 'Anzeige auf Windows, macOS und mobilen Geräten.',
164
+ 'Soziale Netzwerke (Instagram, LinkedIn usw.).',
165
+ 'Office-Tools (Word, PowerPoint).',
166
+ 'Content-Management-Systeme (WordPress, Shopify).',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: 'Fazit: Optimieren wie ein Profi',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Dieser Konverter ist nicht nur eine weitere Seite; er ist ein Stück Ingenieurskunst, das Ihnen das Leben erleichtern soll. Egal, ob Sie Entwickler oder Privatanwender sind, hier ist die ultimative Lösung, um Megabytes zu sparen und Ihre Daten sicher aufzubewahren.',
177
+ },
178
+ ];
179
+
180
+
181
+ export const content: PngAJpgLocaleContent = {
182
+ slug,
183
+ title,
184
+ description,
185
+ ui,
186
+ seo,
187
+ faq,
188
+ bibliography,
189
+ howTo,
190
+ schemas: generateSchemas({ title, description, inLanguage: 'de', faq, howTo }),
191
+ };
@@ -1,5 +1,5 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
2
1
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
3
  import type { PngAJpgLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'png-to-jpg-converter';
@@ -109,16 +109,6 @@ const seo: PngAJpgLocaleContent['seo'] = [
109
109
  },
110
110
  ];
111
111
 
112
- const appSchema: WithContext<SoftwareApplication> = {
113
- '@context': 'https://schema.org',
114
- '@type': 'SoftwareApplication',
115
- name: title,
116
- description,
117
- applicationCategory: 'UtilitiesApplication',
118
- operatingSystem: 'Web',
119
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
120
- inLanguage: 'en',
121
- };
122
112
 
123
113
  export const content: PngAJpgLocaleContent = {
124
114
  slug,
@@ -129,5 +119,5 @@ export const content: PngAJpgLocaleContent = {
129
119
  faq,
130
120
  bibliography,
131
121
  howTo,
132
- schemas: [appSchema as any],
122
+ schemas: generateSchemas({ title, description, inLanguage: 'en', faq, howTo }),
133
123
  };
@@ -1,5 +1,5 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
2
1
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
3
  import type { PngAJpgLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertidor-png-a-jpg';
@@ -177,16 +177,6 @@ const seo: PngAJpgLocaleContent['seo'] = [
177
177
  },
178
178
  ];
179
179
 
180
- const appSchema: WithContext<SoftwareApplication> = {
181
- '@context': 'https://schema.org',
182
- '@type': 'SoftwareApplication',
183
- name: title,
184
- description,
185
- applicationCategory: 'UtilitiesApplication',
186
- operatingSystem: 'Web',
187
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
188
- inLanguage: 'es',
189
- };
190
180
 
191
181
  export const content: PngAJpgLocaleContent = {
192
182
  slug,
@@ -197,5 +187,5 @@ export const content: PngAJpgLocaleContent = {
197
187
  faq,
198
188
  bibliography,
199
189
  howTo,
200
- schemas: [appSchema as any],
190
+ schemas: generateSchemas({ title, description, inLanguage: 'es', faq, howTo }),
201
191
  };
@@ -1,5 +1,5 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
2
1
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
3
  import type { PngAJpgLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertisseur-png-en-jpg';
@@ -104,16 +104,6 @@ const seo: PngAJpgLocaleContent['seo'] = [
104
104
  },
105
105
  ];
106
106
 
107
- const appSchema: WithContext<SoftwareApplication> = {
108
- '@context': 'https://schema.org',
109
- '@type': 'SoftwareApplication',
110
- name: title,
111
- description,
112
- applicationCategory: 'UtilitiesApplication',
113
- operatingSystem: 'Web',
114
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
115
- inLanguage: 'fr',
116
- };
117
107
 
118
108
  export const content: PngAJpgLocaleContent = {
119
109
  slug,
@@ -124,5 +114,5 @@ export const content: PngAJpgLocaleContent = {
124
114
  faq,
125
115
  bibliography,
126
116
  howTo,
127
- schemas: [appSchema as any],
117
+ schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
128
118
  };
@@ -0,0 +1,191 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAJpgLocaleContent } from '../index';
4
+
5
+ const slug = 'konverter-png-ke-jpg';
6
+ const title = 'Ubah PNG ke JPG Online';
7
+ const description =
8
+ 'Ubah gambar PNG Anda ke format JPG dengan kompresi cepat secara instan di komputer Anda sendiri. Tanpa mengunggah foto ke internet. Optimalisasi batch.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Seret file PNG...',
12
+ convertText: 'Untuk mengubahnya ke JPG secara instan',
13
+ selectFiles: 'Pilih file',
14
+ processedFiles: 'File yang diproses',
15
+ downloadAll: 'Unduh Semua (.zip)',
16
+ pending: 'Tertunda',
17
+ bibliographyTitle: 'Referensi Bibliografi',
18
+ faqTitle: 'Pertanyaan Umum',
19
+ };
20
+
21
+ const faq: PngAJpgLocaleContent['faq'] = [
22
+ {
23
+ question: 'Mengapa memilih konverter lokal PNG ke JPG kami?',
24
+ answer:
25
+ 'Berbeda dengan alat konvensional, utilitas kami memproses file sepenuhnya di browser Anda. Gambar Anda tidak pernah menyentuh hard drive orang lain, menjamin kedaulatan total dan privasi data Anda.',
26
+ },
27
+ {
28
+ question: 'JPG atau PNG? Mana yang lebih baik untuk kasus saya?',
29
+ answer:
30
+ 'PNG ideal untuk logo dan elemen dengan transparansi. Namun, JPG adalah standar emas untuk fotografi dan banner web, karena mencapai ukuran yang jauh lebih kecil, secara drastis meningkatkan kecepatan pemuatan situs.',
31
+ },
32
+ {
33
+ question: 'Bagaimana cara kerja konversi teknis tanpa mengunggah apa pun?',
34
+ answer:
35
+ 'Kami menggunakan kekuatan HTML5 Canvas. Browser membuat ulang gambar pada kanvas virtual yang tidak terlihat, mengisi transparansi dengan warna putih dan menghasilkan aliran byte yang Anda unduh langsung secara instan.',
36
+ },
37
+ {
38
+ question: 'Apakah aman untuk dokumen rahasia?',
39
+ answer:
40
+ 'Ya, ini adalah pilihan teraman bagi para profesional di bidang perbankan, kesehatan, atau hukum. Karena ini adalah "kotak hitam" yang hanya menggunakan RAM Anda, apa pun yang terjadi di dalamnya akan hilang saat Anda menutup tab, menghindari kebocoran di cloud pihak ketiga.',
41
+ },
42
+ ];
43
+
44
+ const howTo: PngAJpgLocaleContent['howTo'] = [
45
+ {
46
+ name: 'Pemilihan file',
47
+ text: 'Siapkan file PNG Anda dalam satu folder dan seret semuanya sekaligus ke area pemrosesan atau cari menggunakan penjelajah file.',
48
+ },
49
+ {
50
+ name: 'Pemrosesan instan',
51
+ text: 'Verifikasi bahwa status berubah menjadi "Selesai" untuk setiap file sementara browser mengoptimalkan ukuran secara lokal.',
52
+ },
53
+ {
54
+ name: 'Unduhan yang dioptimalkan',
55
+ text: 'Simpan JPG baru Anda satu per satu atau gunakan tombol "Unduh Semua" untuk mendapatkan file ZIP terkompresi dengan semua gambar.',
56
+ },
57
+ ];
58
+
59
+ const bibliography: PngAJpgLocaleContent['bibliography'] = [
60
+ {
61
+ name: 'Spesifikasi PNG Consortium',
62
+ url: 'http://www.libpng.org/pub/png/',
63
+ },
64
+ {
65
+ name: 'Komite JPEG',
66
+ url: 'https://jpeg.org/',
67
+ },
68
+ ];
69
+
70
+ const seo: PngAJpgLocaleContent['seo'] = [
71
+ {
72
+ type: 'title',
73
+ text: 'Konverter PNG ke JPG: Panduan Definitif untuk Optimalisasi Gambar',
74
+ level: 2,
75
+ },
76
+ {
77
+ type: 'paragraph',
78
+ html: 'Dalam dunia desain digital dan pengembangan web, efisiensi adalah segalanya. Format PNG (Portable Network Graphics) dicintai karena kemampuannya mempertahankan transparansi dan kompresi tanpa kehilangan, tetapi memiliki satu musuh besar: ukuran file. Ketika Anda ingin situs web Anda terbang atau email Anda dimuat secara instan, peralihan dari PNG ke JPG adalah keputusan teknis yang paling cerdas.',
79
+ },
80
+ {
81
+ type: 'title',
82
+ text: 'JPG atau PNG?',
83
+ level: 3,
84
+ },
85
+ {
86
+ type: 'paragraph',
87
+ html: 'Tidak ada format yang lebih baik dari yang lain, melainkan alat untuk setiap kebutuhan. PNG adalah format tanpa kehilangan, ideal untuk maket antarmuka, logo dengan teks kecil, dan elemen visual yang membutuhkan latar belakang transparan. Namun, kesetiaan ini ada harganya: file yang bisa 5 atau 10 kali lebih berat daripada padanannya yang dikompresi.',
88
+ },
89
+ {
90
+ type: 'paragraph',
91
+ html: 'JPG (Joint Photographic Experts Group), di sisi lain, menggunakan algoritma diskritisasi untuk menghapus informasi yang hampir tidak dirasakan oleh mata manusia, mencapai ukuran yang sangat ringan. Ini adalah standar emas untuk fotografi, banner iklan, dan media sosial. Dengan mengubah PNG Anda ke JPG, Anda menukar kesetiaan geometris dengan kecepatan jaringan.',
92
+ },
93
+ {
94
+ type: 'title',
95
+ text: 'Perbandingan Arsitektur: Lokal vs Cloud',
96
+ level: 3,
97
+ },
98
+ {
99
+ type: 'comparative',
100
+ items: [
101
+ {
102
+ title: 'Konverter Cloud',
103
+ description: 'Alat tradisional yang mengunggah foto Anda ke server jarak jauh.',
104
+ icon: 'mdi:cloud-upload',
105
+ pointIcon: 'mdi:close-circle-outline',
106
+ points: [
107
+ 'Latensi jaringan (Unggah/Unduh)',
108
+ 'Risiko kebocoran data pribadi',
109
+ 'Batasan ukuran per file',
110
+ 'Iklan dan pelacak',
111
+ ],
112
+ },
113
+ {
114
+ title: 'Arsitektur Lokal Kami',
115
+ description: 'Pemrosesan langsung pada perangkat keras Anda melalui teknologi Vanilla JS.',
116
+ icon: 'mdi:laptop-mac',
117
+ highlight: true,
118
+ points: [
119
+ 'Kecepatan instan tanpa jaringan',
120
+ 'Privasi terjamin (0 byte dikirim)',
121
+ 'Tanpa batasan MB per file',
122
+ 'Antarmuka profesional dan bersih',
123
+ ],
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Cara kerja konversi teknis',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Anda mungkin bertanya-tanya bagaimana mungkin mengubah gambar tanpa mengirimkannya ke server. Keajaibannya ada pada kekuatan browser modern. Saat Anda memilih file, kami menghasilkan Blob yang hanya ada di RAM Anda. Blob itu digambar pada elemen HTML5 Canvas yang tidak terlihat.',
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Karena JPG tidak mendukung transparansi, algoritma kami mengisi latar belakang dengan warna putih solid sebelum "melukis" PNG di atasnya. Setelah gambar disusun, kami menjalankan metode ekspor asli, menghasilkan aliran byte yang diunduh komputer Anda secara langsung.',
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'Tips SEO: Ukuran Ideal',
143
+ html: 'Google secara aktif menghukum situs web yang lambat. Jika Largest Contentful Paint (LCP) Anda tinggi karena header PNG sebesar 2MB, mengubahnya menjadi JPG sebesar 200KB dapat segera meningkatkan metrik PageSpeed Anda tanpa perbedaan visual.',
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Keamanan untuk Perusahaan dan Profesional',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Jika Anda bekerja di sektor sensitif seperti perbankan, kesehatan, atau hukum, mengunggah file ke konverter online adalah pelanggaran keamanan. Alat kami bekerja seperti "kotak hitam": apa yang terjadi di dalamnya tetap ada di RAM Anda. Ini satu-satunya cara aman untuk bekerja dengan dokumen rahasia.',
153
+ },
154
+ {
155
+ type: 'title',
156
+ text: 'Kompatibilitas Hasil',
157
+ level: 3,
158
+ },
159
+ {
160
+ type: 'list',
161
+ icon: 'mdi:check-circle',
162
+ items: [
163
+ 'Penampil gambar Windows, macOS, dan perangkat seluler.',
164
+ 'Jejaring sosial (Instagram, LinkedIn, dll).',
165
+ 'Alat kantor (Word, PowerPoint).',
166
+ 'Manajer konten (WordPress, Shopify).',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: 'Kesimpulan: Optimalkan seperti Profesional',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Konverter ini bukan sekadar halaman biasa; ini adalah bagian dari teknik yang dirancang untuk memudahkan hidup Anda. Baik Anda seorang pengembang atau pengguna rumahan, di sini Anda memiliki solusi definitif untuk menghemat megabyte dan menjaga keamanan data Anda.',
177
+ },
178
+ ];
179
+
180
+
181
+ export const content: PngAJpgLocaleContent = {
182
+ slug,
183
+ title,
184
+ description,
185
+ ui,
186
+ seo,
187
+ faq,
188
+ bibliography,
189
+ howTo,
190
+ schemas: generateSchemas({ title, description, inLanguage: 'id', faq, howTo }),
191
+ };
@@ -0,0 +1,191 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAJpgLocaleContent } from '../index';
4
+
5
+ const slug = 'convertitore-da-png-a-jpg';
6
+ const title = 'Convertire PNG in JPG Online';
7
+ const description =
8
+ 'Converti le tue immagini PNG nel formato JPG a compressione rapida istantaneamente sul tuo computer. Senza caricare foto su Internet. Ottimizzazione in batch.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Trascina i file PNG...',
12
+ convertText: 'Per convertirli in JPG istantaneamente',
13
+ selectFiles: 'Seleziona i 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: PngAJpgLocaleContent['faq'] = [
22
+ {
23
+ question: 'Perché scegliere il nostro convertitore locale da PNG a JPG?',
24
+ answer:
25
+ 'A differenza degli strumenti convenzionali, la nostra utility elabora i file interamente nel tuo browser. Le tue immagini non toccano mai un disco rigido altrui, garantendo la totale sovranità e privacy dei tuoi dati.',
26
+ },
27
+ {
28
+ question: 'JPG o PNG? Qual è il migliore per il mio caso?',
29
+ answer:
30
+ 'Il PNG è ideale per loghi ed elementi con trasparenza. Tuttavia, il JPG è lo standard di riferimento per fotografie e banner web, poiché raggiunge pesi molto più ridotti, migliorando drasticamente la velocità di caricamento di un sito.',
31
+ },
32
+ {
33
+ question: 'Come funziona la conversione tecnica senza caricare nulla?',
34
+ answer:
35
+ 'Utilizziamo la potenza dell\'HTML5 Canvas. Il browser ricrea l\'immagine su una tela virtuale invisibile, riempie le trasparenze con il bianco e genera un flusso di byte che scarichi direttamente all\'istante.',
36
+ },
37
+ {
38
+ question: 'È sicuro per documenti riservati?',
39
+ answer:
40
+ 'Sì, è l\'opzione più sicura per professionisti del settore bancario, sanitario o legale. Essendo una "scatola nera" che utilizza solo la tua RAM, ciò che accade all\'interno muore al momento della chiusura della scheda, evitando fughe di dati su cloud di terze parti.',
41
+ },
42
+ ];
43
+
44
+ const howTo: PngAJpgLocaleContent['howTo'] = [
45
+ {
46
+ name: 'Selezione dei file',
47
+ text: 'Prepara i tuoi file PNG in una cartella e trascinali tutti insieme nell\'area di elaborazione o cercali con l\'esplora file.',
48
+ },
49
+ {
50
+ name: 'Elaborazione istantanea',
51
+ text: 'Verifica che lo stato cambi in "Pronto" per ogni file mentre il browser ottimizza il peso localmente.',
52
+ },
53
+ {
54
+ name: 'Download ottimizzato',
55
+ text: 'Salva i tuoi nuovi JPG uno ad uno o usa il pulsante "Scarica tutto" per ottenere un file ZIP compresso con tutte le immagini.',
56
+ },
57
+ ];
58
+
59
+ const bibliography: PngAJpgLocaleContent['bibliography'] = [
60
+ {
61
+ name: 'Specifiche PNG Consortium',
62
+ url: 'http://www.libpng.org/pub/png/',
63
+ },
64
+ {
65
+ name: 'Il comitato JPEG',
66
+ url: 'https://jpeg.org/',
67
+ },
68
+ ];
69
+
70
+ const seo: PngAJpgLocaleContent['seo'] = [
71
+ {
72
+ type: 'title',
73
+ text: 'Convertitore da PNG a JPG: La Guida Definitiva per l\'Ottimizzazione delle Immagini',
74
+ level: 2,
75
+ },
76
+ {
77
+ type: 'paragraph',
78
+ html: 'Nel mondo del design digitale e dello sviluppo web, l\'efficienza è tutto. Il formato PNG (Portable Network Graphics) è amato per la sua capacità di mantenere le trasparenze e la sua compressione senza perdita, ma ha un grande nemico: il peso del file. Quando hai bisogno che il tuo sito web voli o che le tue email si carichino istantaneamente, il passaggio da PNG a JPG è la decisione tecnica più intelligente.',
79
+ },
80
+ {
81
+ type: 'title',
82
+ text: 'JPG o PNG?',
83
+ level: 3,
84
+ },
85
+ {
86
+ type: 'paragraph',
87
+ html: 'Non esiste un formato migliore di un altro, ma uno strumento per ogni esigenza. Il PNG è un formato senza perdita, ideale per mockup di interfacce, loghi con testo piccolo ed elementi visivi che richiedono uno sfondo trasparente. Tuttavia, questa fedeltà ha un costo: file che possono essere 5 o 10 volte più pesanti del loro equivalente compresso.',
88
+ },
89
+ {
90
+ type: 'paragraph',
91
+ html: 'Il JPG (Joint Photographic Experts Group), d\'altra parte, utilizza algoritmi di discretizzazione per rimuovere informazioni che l\'occhio umano percepisce a malapena, raggiungendo pesi piuma. È lo standard di riferimento per fotografie, banner pubblicitari e social network. Convertendo i tuoi PNG in JPG, stai scambiando la fedeltà geometrica con la velocità di rete.',
92
+ },
93
+ {
94
+ type: 'title',
95
+ text: 'Confronto Architetturale: Locale vs Cloud',
96
+ level: 3,
97
+ },
98
+ {
99
+ type: 'comparative',
100
+ items: [
101
+ {
102
+ title: 'Convertitori Cloud',
103
+ description: 'Strumenti tradizionali che caricano le tue foto su un server remoto.',
104
+ icon: 'mdi:cloud-upload',
105
+ pointIcon: 'mdi:close-circle-outline',
106
+ points: [
107
+ 'Latenza di rete (Upload/Download)',
108
+ 'Rischio di fuga di dati privati',
109
+ 'Limiti di dimensione per file',
110
+ 'Pubblicità e tracciatori',
111
+ ],
112
+ },
113
+ {
114
+ title: 'La Nostra Architettura Locale',
115
+ description: 'Elaborazione diretta sul tuo hardware tramite tecnologia Vanilla JS.',
116
+ icon: 'mdi:laptop-mac',
117
+ highlight: true,
118
+ points: [
119
+ 'Velocità istantanea senza rete',
120
+ 'Privacy garantita (0 byte inviati)',
121
+ 'Senza limiti di MB per file',
122
+ 'Interfaccia professionale e pulita',
123
+ ],
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Come funziona la conversione tecnica',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Probabilmente ti starai chiedendo come sia possibile convertire un\'immagine senza inviarla a un server. La magia risiede nella potenza dei browser moderni. Quando selezioni un file, generiamo un Blob che esiste solo nella tua RAM. Quel Blob viene disegnato su un elemento HTML5 Canvas invisibile.',
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Dato che il JPG non supporta le trasparenze, il nostro algoritmo riempie lo sfondo con un colore bianco solido prima di "dipingere" il PNG sopra. Una volta composta l\'immagine, eseguiamo il metodo di esportazione nativo, generando un flusso di byte che il tuo computer scarica direttamente.',
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'Consiglio SEO: Il Peso Ideale',
143
+ html: 'Google penalizza attivamente i siti web lenti. Se il tuo Largest Contentful Paint (LCP) è alto a causa di un PNG di intestazione da 2MB, convertirlo in un JPG da 200KB può migliorare istantaneamente le tue metriche PageSpeed senza differenze visive.',
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Sicurezza per Aziende e Professionisti',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Se lavori in settori sensibili come il bancario, il sanitario o il legale, caricare file su convertitori online è una violazione della sicurezza. Il nostro strumento funziona come una "scatola nera": ciò che accade all\'interno rimane nella tua RAM. È l\'unico modo sicuro per lavorare con documenti riservati.',
153
+ },
154
+ {
155
+ type: 'title',
156
+ text: 'Compatibilità del Risultato',
157
+ level: 3,
158
+ },
159
+ {
160
+ type: 'list',
161
+ icon: 'mdi:check-circle',
162
+ items: [
163
+ 'Visualizzatori di Windows, macOS e dispositivi mobili.',
164
+ 'Social network (Instagram, LinkedIn, ecc.).',
165
+ 'Strumenti da ufficio (Word, PowerPoint).',
166
+ 'Gestori di contenuti (WordPress, Shopify).',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: 'Conclusione: Ottimizza come un professionista',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Questo convertitore non è solo l\'ennesima pagina; è un pezzo di ingegneria progettato per semplificarti la vita. Che tu sia uno sviluppatore o un utente domestico, ecco la soluzione definitiva per risparmiare megabyte e tenere i tuoi dati al sicuro.',
177
+ },
178
+ ];
179
+
180
+
181
+ export const content: PngAJpgLocaleContent = {
182
+ slug,
183
+ title,
184
+ description,
185
+ ui,
186
+ seo,
187
+ faq,
188
+ bibliography,
189
+ howTo,
190
+ schemas: generateSchemas({ title, description, inLanguage: 'it', faq, howTo }),
191
+ };