@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,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 = 'conversor-png-para-jpg';
6
+ const title = 'Converter PNG para JPG Online';
7
+ const description =
8
+ 'Converta instantaneamente as suas imagens PNG para o formato JPG com compressão rápida no seu próprio computador. Sem enviar fotos para a Internet. Optimização em lote.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Arraste os ficheiros PNG...',
12
+ convertText: 'Para convertê-los para JPG instantaneamente',
13
+ selectFiles: 'Selecionar ficheiros',
14
+ processedFiles: 'Ficheiros processados',
15
+ downloadAll: 'Descarregar Tudo (.zip)',
16
+ pending: 'Pendente',
17
+ bibliographyTitle: 'Referências Bibliográficas',
18
+ faqTitle: 'Perguntas Frequentes',
19
+ };
20
+
21
+ const faq: PngAJpgLocaleContent['faq'] = [
22
+ {
23
+ question: 'Porquê escolher o nosso conversor local de PNG para JPG?',
24
+ answer:
25
+ 'Ao contrário das ferramentas convencionais, o nosso utilitário processa os ficheiros inteiramente no seu navegador. As suas imagens nunca tocam num disco rígido de terceiros, garantindo a total soberania e privacidade dos seus dados.',
26
+ },
27
+ {
28
+ question: 'JPG ou PNG? Qual é o melhor para o meu caso?',
29
+ answer:
30
+ 'O PNG é ideal para logótipos e elementos com transparência. No entanto, o JPG é o padrão de excelência para fotografias e banners web, uma vez que atinge pesos muito mais reduzidos, melhorando drasticamente a velocidade de carregamento de um sítio.',
31
+ },
32
+ {
33
+ question: 'Como funciona a conversão técnica sem enviar nada?',
34
+ answer:
35
+ 'Utilizamos o poder do Canvas do HTML5. O navegador recria a imagem numa tela virtual invisível, preenche as transparências com branco e gera um fluxo de bytes que o utilizador descarrega diretamente no instante.',
36
+ },
37
+ {
38
+ question: 'É seguro para documentos confidenciais?',
39
+ answer:
40
+ 'Sim, é a opção mais segura para profissionais da banca, saúde ou direito. Sendo uma "caixa negra" que utiliza apenas a sua memória RAM, o que acontece lá dentro morre ao fechar o separador, evitando fugas em nuvens de terceiros.',
41
+ },
42
+ ];
43
+
44
+ const howTo: PngAJpgLocaleContent['howTo'] = [
45
+ {
46
+ name: 'Seleção de ficheiros',
47
+ text: 'Prepare os seus ficheiros PNG numa pasta e arraste-os todos juntos para a área de processamento ou procure-os com o explorador.',
48
+ },
49
+ {
50
+ name: 'Processamento instantâneo',
51
+ text: 'Verifique se o estado muda para "Pronto" para cada ficheiro enquanto o navegador otimiza o peso localmente.',
52
+ },
53
+ {
54
+ name: 'Descarregamento otimizado',
55
+ text: 'Guarde os seus novos JPG um a um ou utilize o botão "Descarregar Tudo" para obter um ficheiro ZIP comprimido com todas as imagens.',
56
+ },
57
+ ];
58
+
59
+ const bibliography: PngAJpgLocaleContent['bibliography'] = [
60
+ {
61
+ name: 'Especificações PNG Consortium',
62
+ url: 'http://www.libpng.org/pub/png/',
63
+ },
64
+ {
65
+ name: 'O comité JPEG',
66
+ url: 'https://jpeg.org/',
67
+ },
68
+ ];
69
+
70
+ const seo: PngAJpgLocaleContent['seo'] = [
71
+ {
72
+ type: 'title',
73
+ text: 'Conversor de PNG para JPG: O Guia Definitivo para a Optimização de Imagens',
74
+ level: 2,
75
+ },
76
+ {
77
+ type: 'paragraph',
78
+ html: 'No mundo do design digital e do desenvolvimento web, a eficiência é tudo. O formato PNG (Portable Network Graphics) é amado pela sua capacidade de manter transparências e pela sua compressão sem perda, mas tem um grande inimigo: o peso do ficheiro. Quando precisa que o seu sítio web voe ou que os seus emails carreguem instantaneamente, a mudança de PNG para JPG é a decisão técnica mais inteligente.',
79
+ },
80
+ {
81
+ type: 'title',
82
+ text: 'JPG ou PNG?',
83
+ level: 3,
84
+ },
85
+ {
86
+ type: 'paragraph',
87
+ html: 'Não existe um formato melhor do que o outro, mas sim uma ferramenta para cada necessidade. O PNG é um formato sem perda, ideal para maquetes de interfaces, logótipos com texto pequeno e elementos visuais que requerem um fundo transparente. No entanto, esta fidelidade tem um custo: ficheiros que podem ser 5 ou 10 vezes mais pesados do que o seu equivalente comprimido.',
88
+ },
89
+ {
90
+ type: 'paragraph',
91
+ html: 'O JPG (Joint Photographic Experts Group), por outro lado, utiliza algoritmos de discretização para remover informação que o olho humano mal percebe, conseguindo pesos pluma. É o padrão de excelência para fotografias, banners publicitários e redes sociais. Ao converter os seus PNG para JPG, está a trocar fidelidade geométrica por velocidade de rede.',
92
+ },
93
+ {
94
+ type: 'title',
95
+ text: 'Comparação de Arquitetura: Local vs Nuvem',
96
+ level: 3,
97
+ },
98
+ {
99
+ type: 'comparative',
100
+ items: [
101
+ {
102
+ title: 'Conversores Cloud',
103
+ description: 'Ferramentas tradicionais que enviam as suas fotos para um servidor remoto.',
104
+ icon: 'mdi:cloud-upload',
105
+ pointIcon: 'mdi:close-circle-outline',
106
+ points: [
107
+ 'Latência de rede (Upload/Download)',
108
+ 'Risco de fuga de dados privados',
109
+ 'Limites de tamanho por ficheiro',
110
+ 'Publicidade e rastreadores',
111
+ ],
112
+ },
113
+ {
114
+ title: 'A Nossa Arquitetura Local',
115
+ description: 'Processamento direto no seu hardware através de tecnologia Vanilla JS.',
116
+ icon: 'mdi:laptop-mac',
117
+ highlight: true,
118
+ points: [
119
+ 'Velocidade instantânea sem rede',
120
+ 'Privacidade garantida (0 bytes enviados)',
121
+ 'Sem limites de MB por ficheiro',
122
+ 'Interface profissional e limpa',
123
+ ],
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Como funciona a conversão técnica',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Provavelmente pergunta-se como é possível converter uma imagem sem a enviar para um servidor. A magia reside no poder dos navegadores modernos. Quando seleciona um ficheiro, geramos um Blob que apenas existe na sua memória RAM. Esse Blob é desenhado num elemento HTML5 Canvas invisível.',
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Dado que o JPG não suporta transparências, o nosso algoritmo preenche o fundo com uma cor branca sólida antes de "pintar" o PNG por cima. Uma vez composta a imagem, executamos o método de exportação nativo, gerando um fluxo de bytes que o seu computador descarrega diretamente.',
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'Conselho SEO: O Peso Ideal',
143
+ html: 'A Google penaliza ativamente os sítios web lentos. Se o seu Largest Contentful Paint (LCP) é elevado por culpa de um PNG de cabeçalho de 2MB, convertê-lo para um JPG de 200KB pode melhorar as suas métricas de PageSpeed instantaneamente, sem diferenças visuais.',
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Segurança para Empresas e Profissionais',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Se trabalha em setores sensíveis como a banca, a saúde ou o direito, enviar ficheiros para conversores online é uma violação de segurança. A nossa ferramenta funciona como uma "caixa negra": o que acontece lá dentro fica na sua RAM. É a única forma segura de trabalhar com documentos confidenciais.',
153
+ },
154
+ {
155
+ type: 'title',
156
+ text: 'Compatibilidade do Resultado',
157
+ level: 3,
158
+ },
159
+ {
160
+ type: 'list',
161
+ icon: 'mdi:check-circle',
162
+ items: [
163
+ 'Visualizadores do Windows, macOS e dispositivos móveis.',
164
+ 'Redes sociais (Instagram, LinkedIn, etc).',
165
+ 'Ferramentas de escritório (Word, PowerPoint).',
166
+ 'Gestores de conteúdo (WordPress, Shopify).',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: 'Conclusão: Otimize como um Profissional',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Este conversor não é apenas mais uma página; é uma peça de engenharia desenhada para lhe facilitar a vida. Quer seja um programador ou um utilizador doméstico, aqui tem a solução definitiva para poupar megabytes e manter os seus dados a salvo.',
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: 'pt', 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 = 'konverter-png-v-jpg';
6
+ const title = 'Конвертировать PNG в JPG Онлайн';
7
+ const description =
8
+ 'Мгновенно конвертируйте ваши PNG-изображения в быстро сжимаемый формат JPG прямо на вашем компьютере. Без загрузки фотографий в интернет. Пакетная оптимизация.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Перетащите файлы PNG...',
12
+ convertText: 'Чтобы мгновенно конвертировать их в JPG',
13
+ selectFiles: 'Выбрать файлы',
14
+ processedFiles: 'Обработанные файлы',
15
+ downloadAll: 'Скачать всё (.zip)',
16
+ pending: 'В ожидании',
17
+ bibliographyTitle: 'Библиографические ссылки',
18
+ faqTitle: 'Часто задаваемые вопросы',
19
+ };
20
+
21
+ const faq: PngAJpgLocaleContent['faq'] = [
22
+ {
23
+ question: 'Почему стоит выбрать наш локальный конвертер PNG в JPG?',
24
+ answer:
25
+ 'В отличие от традиционных инструментов, наша утилита обрабатывает файлы полностью в вашем браузере. Ваши изображения никогда не попадают на чужой жесткий диск, гарантируя полный суверенитет и конфиденциальность ваших данных.',
26
+ },
27
+ {
28
+ question: 'JPG или PNG? Что лучше в моем случае?',
29
+ answer:
30
+ 'PNG идеально подходит для логотипов и элементов с прозрачностью. Однако JPG является золотым стандартом для фотографий и веб-баннеров, так как он обеспечивает гораздо меньший размер файлов, что значительно повышает скорость загрузки сайта.',
31
+ },
32
+ {
33
+ question: 'Как работает техническая конвертация без загрузки на сервер?',
34
+ answer:
35
+ 'Мы используем мощь HTML5 Canvas. Браузер воссоздает изображение на невидимом виртуальном холсте, заполняет прозрачные области белым цветом и генерирует поток байтов, который вы мгновенно скачиваете напрямую.',
36
+ },
37
+ {
38
+ question: 'Безопасно ли это для конфиденциальных документов?',
39
+ answer:
40
+ 'Да, это самый безопасный вариант для специалистов в области банковского дела, здравоохранения или права. Поскольку утилита представляет собой «черный ящик», использующий только вашу оперативную память, всё, что происходит внутри, исчезает при закрытии вкладки, что исключает утечки в сторонние облачные хранилища.',
41
+ },
42
+ ];
43
+
44
+ const howTo: PngAJpgLocaleContent['howTo'] = [
45
+ {
46
+ name: 'Выбор файлов',
47
+ text: 'Подготовьте файлы PNG в папке и перетащите их все вместе в область обработки или найдите их с помощью проводника.',
48
+ },
49
+ {
50
+ name: 'Мгновенная обработка',
51
+ text: 'Убедитесь, что статус изменится на «Готово» для каждого файла, пока браузер оптимизирует размер локально.',
52
+ },
53
+ {
54
+ name: 'Оптимизированное скачивание',
55
+ text: 'Сохраняйте новые JPG по одному или используйте кнопку «Скачать всё», чтобы получить сжатый ZIP-архив со всеми изображениями.',
56
+ },
57
+ ];
58
+
59
+ const bibliography: PngAJpgLocaleContent['bibliography'] = [
60
+ {
61
+ name: 'Спецификации PNG Consortium',
62
+ url: 'http://www.libpng.org/pub/png/',
63
+ },
64
+ {
65
+ name: 'Комитет JPEG',
66
+ url: 'https://jpeg.org/',
67
+ },
68
+ ];
69
+
70
+ const seo: PngAJpgLocaleContent['seo'] = [
71
+ {
72
+ type: 'title',
73
+ text: 'Конвертер PNG в JPG: Полное руководство по оптимизации изображений',
74
+ level: 2,
75
+ },
76
+ {
77
+ type: 'paragraph',
78
+ html: 'В мире цифрового дизайна и веб-разработки эффективность — это всё. Формат PNG (Portable Network Graphics) ценят за способность сохранять прозрачность и сжатие без потерь, но у него есть один большой враг: вес файла. Если вы хотите, чтобы ваш сайт летал, а электронные письма загружались мгновенно, переход с PNG на JPG — самое разумное техническое решение.',
79
+ },
80
+ {
81
+ type: 'title',
82
+ text: 'JPG или PNG?',
83
+ level: 3,
84
+ },
85
+ {
86
+ type: 'paragraph',
87
+ html: 'Не существует формата лучше другого, есть инструмент для конкретной задачи. PNG — это формат без потерь, идеально подходящий для макетов интерфейсов, логотипов с мелким текстом и визуальных элементов, требующих прозрачного фона. Однако эта точность имеет свою цену: файлы могут быть в 5 или 10 раз тяжелее, чем их сжатые аналоги.',
88
+ },
89
+ {
90
+ type: 'paragraph',
91
+ html: 'С другой стороны, JPG (Joint Photographic Experts Group) использует алгоритмы дискретизации для удаления информации, которую человеческий глаз почти не воспринимает, достигая минимального веса. Это золотой стандарт для фотографий, рекламных баннеров и социальных сетей. Конвертируя PNG в JPG, вы обмениваете геометрическую точность на скорость сети.',
92
+ },
93
+ {
94
+ type: 'title',
95
+ text: 'Сравнение архитектур: Локальная vs Облачная',
96
+ level: 3,
97
+ },
98
+ {
99
+ type: 'comparative',
100
+ items: [
101
+ {
102
+ title: 'Облачные конвертеры',
103
+ description: 'Традиционные инструменты, которые загружают ваши фото на удаленный сервер.',
104
+ icon: 'mdi:cloud-upload',
105
+ pointIcon: 'mdi:close-circle-outline',
106
+ points: [
107
+ 'Сетевая задержка (загрузка/скачивание)',
108
+ 'Риск утечки личных данных',
109
+ 'Ограничения на размер файла',
110
+ 'Реклама и трекеры',
111
+ ],
112
+ },
113
+ {
114
+ title: 'Наша локальная архитектура',
115
+ description: 'Прямая обработка на вашем оборудовании с помощью технологии Vanilla JS.',
116
+ icon: 'mdi:laptop-mac',
117
+ highlight: true,
118
+ points: [
119
+ 'Мгновенная скорость без сети',
120
+ 'Гарантированная конфиденциальность (0 переданных байт)',
121
+ 'Без ограничений по весу файла',
122
+ 'Профессиональный и чистый интерфейс',
123
+ ],
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Как работает техническая конвертация',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Возможно, вы задаетесь вопросом, как можно конвертировать изображение, не отправляя его на сервер. Магия заключается в мощности современных браузеров. Когда вы выбираете файл, мы создаем Blob, который существует только в вашей оперативной памяти. Этот Blob отрисовывается на невидимом элементе HTML5 Canvas.',
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Поскольку JPG не поддерживает прозрачность, наш алгоритм заполняет фон сплошным белым цветом перед тем, как «нарисовать» на нем PNG. После компоновки изображения мы запускаем нативный метод экспорта, создавая поток байтов, который ваш компьютер скачивает напрямую.',
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'SEO совет: Идеальный вес',
143
+ html: 'Google активно штрафует медленные сайты. Если ваш показатель Largest Contentful Paint (LCP) завышен из-за заглавного PNG весом 2 МБ, конвертация его в JPG весом 200 КБ может мгновенно улучшить показатели PageSpeed без видимых визуальных потерь.',
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Безопасность для компаний и профессионалов',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Если вы работаете в таких чувствительных секторах, как банковское дело, медицина или право, загрузка файлов в онлайн-конвертеры является нарушением безопасности. Наш инструмент работает как «черный ящик»: всё, что происходит внутри, остается в вашей оперативной памяти. Это единственный безопасный способ работы с конфиденциальными документами.',
153
+ },
154
+ {
155
+ type: 'title',
156
+ text: 'Совместимость результата',
157
+ level: 3,
158
+ },
159
+ {
160
+ type: 'list',
161
+ icon: 'mdi:check-circle',
162
+ items: [
163
+ 'Средства просмотра Windows, macOS и мобильных устройств.',
164
+ 'Социальные сети (Instagram, LinkedIn и др.).',
165
+ 'Офисные инструменты (Word, PowerPoint).',
166
+ 'Системы управления контентом (WordPress, Shopify).',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: 'Заключение: Оптимизируйте как профи',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Этот конвертер — не просто еще одна страница; это произведение инженерной мысли, созданное для того, чтобы облегчить вам жизнь. Будь вы разработчиком или обычным пользователем, здесь вы найдете идеальное решение, чтобы сэкономить мегабайты и сохранить данные в безопасности.',
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: 'ru', 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 = 'konvertera-png-till-jpg';
6
+ const title = 'Konvertera PNG till JPG Online';
7
+ const description =
8
+ 'Konvertera dina PNG-bilder till snabbkomprimerande JPG-format direkt på din egen dator. Utan att ladda upp foton till internet. Batchoptimering.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Dra PNG-filer hit...',
12
+ convertText: 'För att konvertera dem till JPG 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: PngAJpgLocaleContent['faq'] = [
22
+ {
23
+ question: 'Varför välja vår lokala PNG till JPG-konverterare?',
24
+ answer:
25
+ 'Till skillnad från konventionella verktyg bearbetar vårt verktyg filerna helt i din webbläsare. Dina bilder rör aldrig någon annans hårddisk, vilket garanterar total suveränitet och integritet för dina data.',
26
+ },
27
+ {
28
+ question: 'JPG eller PNG? Vad är bäst för mitt fall?',
29
+ answer:
30
+ 'PNG är idealiskt för logotyper och element med transparens. JPG är dock guldstandarden för fotografier och webbbanners, eftersom det uppnår mycket lägre filstorlekar, vilket drastiskt förbättrar en webbplats laddningshastighet.',
31
+ },
32
+ {
33
+ question: 'Hur fungerar den tekniska konverteringen utan att ladda upp något?',
34
+ answer:
35
+ 'Vi använder kraften i HTML5 Canvas. Webbläsaren återskapar bilden på en osynlig virtuell duk, fyller transparensen med vitt och genererar en byteström som du laddar ner direkt i realtid.',
36
+ },
37
+ {
38
+ question: 'Är det säkert för konfidentiella dokument?',
39
+ answer:
40
+ 'Ja, det är det säkraste alternativet för yrkesverksamma inom bank, hälsa eller juridik. Eftersom det är en "svart låda" som bara använder ditt RAM-minne, tas allt som sker inuti bort när du stänger fliken, vilket undviker läckor i molntjänster från tredje part.',
41
+ },
42
+ ];
43
+
44
+ const howTo: PngAJpgLocaleContent['howTo'] = [
45
+ {
46
+ name: 'Filval',
47
+ text: 'Förbered dina PNG-filer i en mapp och dra dem alla tillsammans till bearbetningsområdet eller leta reda på dem med utforskaren.',
48
+ },
49
+ {
50
+ name: 'Omedelbar bearbetning',
51
+ text: 'Kontrollera att statusen ändras till "Klar" för varje fil medan webbläsaren optimerar storleken lokalt.',
52
+ },
53
+ {
54
+ name: 'Optimerad nedladdning',
55
+ text: 'Spara dina nya JPG-bilder en och en eller använd knappen "Ladda ner alla" för att få en komprimerad ZIP-fil med alla bilder.',
56
+ },
57
+ ];
58
+
59
+ const bibliography: PngAJpgLocaleContent['bibliography'] = [
60
+ {
61
+ name: 'PNG Consortium Specifikationer',
62
+ url: 'http://www.libpng.org/pub/png/',
63
+ },
64
+ {
65
+ name: 'JPEG-kommittén',
66
+ url: 'https://jpeg.org/',
67
+ },
68
+ ];
69
+
70
+ const seo: PngAJpgLocaleContent['seo'] = [
71
+ {
72
+ type: 'title',
73
+ text: 'PNG till JPG-konverterare: Den Definitiva Guiden till Bildoptimering',
74
+ level: 2,
75
+ },
76
+ {
77
+ type: 'paragraph',
78
+ html: 'I den digitala designens och webbutvecklingens värld är effektivitet allt. PNG-formatet (Portable Network Graphics) älskas för sin förmåga att bibehålla transparens och sin förlustfria kompression, men det har en stor fiende: filvikten. När du behöver att din webbplats flyger eller att dina e-postmeddelanden laddas direkt är övergången från PNG till JPG det smartaste tekniska beslutet.',
79
+ },
80
+ {
81
+ type: 'title',
82
+ text: 'JPG eller PNG?',
83
+ level: 3,
84
+ },
85
+ {
86
+ type: 'paragraph',
87
+ html: 'Det finns inget format som är bättre än det andra, utan snarare ett verktyg för varje behov. PNG är ett förlustfritt format, idealiskt för gränssnittsskisser, logotyper med liten text och visuella element som kräver en transparent bakgrund. Men denna trohet har ett pris: filer som kan vara 5 eller 10 gånger tyngre än motsvarande komprimerade version.',
88
+ },
89
+ {
90
+ type: 'paragraph',
91
+ html: 'Å andra sidan använder JPG (Joint Photographic Experts Group) diskretiseringsalgoritmer för att ta bort information som det mänskliga ögat knappt märker, vilket ger extremt lätta filer. Det är guldstandarden för fotografier, reklambanners och sociala medier. Genom att konvertera dina PNG till JPG byter du geometrisk trohet mot nätverkshastighet.',
92
+ },
93
+ {
94
+ type: 'title',
95
+ text: 'Arkitekturjämförelse: Lokal vs Moln',
96
+ level: 3,
97
+ },
98
+ {
99
+ type: 'comparative',
100
+ items: [
101
+ {
102
+ title: 'Molnkonverterare',
103
+ description: 'Traditionella verktyg som laddar upp dina foton till en fjärrserver.',
104
+ icon: 'mdi:cloud-upload',
105
+ pointIcon: 'mdi:close-circle-outline',
106
+ points: [
107
+ 'Nätverkslatens (Uppladdning/Nedladdning)',
108
+ 'Risk för läckage av privata data',
109
+ 'Begränsningar för filstorlek per fil',
110
+ 'Reklam och spårare',
111
+ ],
112
+ },
113
+ {
114
+ title: 'Vår Lokala Arkitektur',
115
+ description: 'Direkt bearbetning på din hårdvara via Vanilla JS-teknologi.',
116
+ icon: 'mdi:laptop-mac',
117
+ highlight: true,
118
+ points: [
119
+ 'Omedelbar hastighet utan nätverk',
120
+ 'Garanterad integritet (0 skickade bytes)',
121
+ 'Inga MB-gränser per fil',
122
+ 'Professionellt och rent gränssnitt',
123
+ ],
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Hur den tekniska konverteringen fungerar',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Du undrar förmodligen hur det är möjligt att konvertera en bild utan att skicka den till en server. Magin ligger i kraften hos moderna webbläsare. När du väljer en fil genererar vi en Blob som bara finns i ditt RAM-minne. Den Blobben ritas på ett osynligt HTML5 Canvas-element.',
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Eftersom JPG inte stöder transparens fyller vår algoritm bakgrunden med en solid vit färg innan PNG-bilden "målas" ovanpå. När bilden väl är sammansatt kör vi den inbyggda exportmetoden, vilket skapar en byteström som din dator laddar ner direkt.',
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'SEO tips: Den Idealiska Vikten',
143
+ html: 'Google straffar aktivt långsamma webbplatser. Om din Largest Contentful Paint (LCP) är hög på grund av en huvud-PNG på 2MB, kan konvertering till en JPG på 200KB förbättra dina PageSpeed-mätvärden direkt utan visuella skillnader.',
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Säkerhet för företag och yrkesverksamma',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Om du arbetar i känsliga sektorer som bank, hälsa eller juridik är det ett säkerhetsbrott att ladda upp filer till onlinekonverterare. Vårt verktyg fungerar som en "svart låda": det som händer inuti stannar i ditt RAM-minne. Det är det enda säkra sättet att arbeta med konfidentiella dokument.',
153
+ },
154
+ {
155
+ type: 'title',
156
+ text: 'Resultatets Kompatibilitet',
157
+ level: 3,
158
+ },
159
+ {
160
+ type: 'list',
161
+ icon: 'mdi:check-circle',
162
+ items: [
163
+ 'Bildvisare för Windows, macOS och mobila enheter.',
164
+ 'Sociala medier (Instagram, LinkedIn etc.).',
165
+ 'Kontorsverktyg (Word, PowerPoint).',
166
+ 'Innehållshanteringssystem (WordPress, Shopify).',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: 'Slutsats: Optimera som ett Proffs',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Denna konverterare är inte bara ytterligare en sida; det är ett stycke ingenjörskonst utformad för att göra ditt liv enklare. Oavsett om du är en utvecklare eller en hemanvändare har du här den slutgiltiga lösningen för att spara megabyte och hålla dina data säkra.',
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: 'sv', faq, howTo }),
191
+ };