@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 = 'png-to-jpg-converter';
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 to 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
+ '네, 은행, 의료 또는 법률 분야의 전문가들에게 가장 안전한 옵션입니다. 사용자의 RAM만 사용하는 "블랙박스" 역할을 하므로, 탭을 닫는 즉시 내부에서 일어나는 모든 데이터는 소멸되어 제3자 클라우드로의 유출을 방지합니다.',
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 컨소시엄 사양',
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 to 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는 무손실 형식으로, 인터페이스 목업, 작은 텍스트가 포함된 로고, 투명한 배경이 필요한 시각적 요소에 이상적입니다. 하지만 이러한 충실도에는 대가가 따릅니다. 압축된 JPG보다 파일 크기가 5배에서 10배 더 무거울 수 있습니다.',
88
+ },
89
+ {
90
+ type: 'paragraph',
91
+ html: '반면 JPG(Joint Photographic Experts Group)는 인간의 눈이 거의 인지하지 못하는 정보를 제거하는 이산화 알고리즘을 사용하여 매우 가벼운 파일 크기를 달성합니다. 사진, 광고 배너 및 소셜 미디어를 위한 골드 표준입니다. PNG를 JPG로 변환함으로써, 기하학적 충실도를 네트워크 속도와 교환하게 됩니다.',
92
+ },
93
+ {
94
+ type: 'title',
95
+ text: '아키텍처 비교: 로컬 대 클라우드',
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
+ '파일당 MB 제한 없음',
122
+ '프로페셔널하고 깔끔한 인터페이스',
123
+ ],
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: '기술적 변환의 원리',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: '서버로 전송하지 않고 이미지를 변환하는 것이 어떻게 가능한지 궁금하실 것입니다. 그 마법은 현대 브라우저의 힘에 있습니다. 파일을 선택하면 사용자의 RAM에만 존재하는 Blob을 생성합니다. 그 Blob은 보이지 않는 HTML5 Canvas 요소 위에 그려집니다.',
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'JPG는 투명도를 지원하지 않기 때문에, 우리의 알고리즘은 PNG를 "그리기" 전에 배경을 흰색으로 채웁니다. 이미지가 구성되면 네이티브 내보내기 메서드를 실행하여 사용자의 컴퓨터가 직접 다운로드하는 바이트 스트림을 생성합니다.',
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'SEO 팁: 이상적인 파일 크기',
143
+ html: 'Google은 느린 웹사이트에 대해 불이익을 줍니다. 2MB 크기의 헤더 PNG 때문에 Largest Contentful Paint(LCP)가 높다면, 이를 200KB 크기의 JPG로 변환하여 시각적 차이 없이 즉시 PageSpeed 지표를 개선할 수 있습니다.',
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: '기업 및 전문가를 위한 보안',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: '금융, 의료 또는 법률과 같은 민감한 분야에서 일하는 경우, 온라인 변환기에 파일을 업로드하는 것은 보안 위반입니다. 우리의 도구는 "블랙박스"처럼 작동합니다. 내부에서 일어나는 모든 일은 사용자의 RAM에 머뭅니다. 기밀 문서를 다루는 유일하고 안전한 방법입니다.',
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: 'ko', 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 = 'convert-png-naar-jpg';
6
+ const title = 'PNG naar JPG Online Converteren';
7
+ const description =
8
+ 'Converteer je PNG-afbeeldingen direct op je eigen computer naar het snel comprimerende JPG-formaat. Zonder foto\'s naar het internet te uploaden. Batch-optimalisatie.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Sleep PNG-bestanden hierheen...',
12
+ convertText: 'Om ze direct naar JPG te converteren',
13
+ selectFiles: 'Bestanden selecteren',
14
+ processedFiles: 'Verwerkte bestanden',
15
+ downloadAll: 'Alles downloaden (.zip)',
16
+ pending: 'In afwachting',
17
+ bibliographyTitle: 'Bibliografische Referenties',
18
+ faqTitle: 'Veelgestelde Vragen',
19
+ };
20
+
21
+ const faq: PngAJpgLocaleContent['faq'] = [
22
+ {
23
+ question: 'Waarom kiezen voor onze lokale PNG naar JPG converter?',
24
+ answer:
25
+ 'In tegenstelling tot conventionele tools verwerkt onze utility de bestanden volledig in je browser. Je afbeeldingen raken nooit een externe harde schijf aan, wat de totale soevereiniteit en privacy van je gegevens garandeert.',
26
+ },
27
+ {
28
+ question: 'JPG of PNG? Welke is beter voor mij?',
29
+ answer:
30
+ 'PNG is ideaal voor logo\'s en elementen met transparantie. JPG is echter de gouden standaard voor foto\'s en webbanners, omdat het veel kleinere bestandsgroottes bereikt, wat de laadsnelheid van een site drastisch verbetert.',
31
+ },
32
+ {
33
+ question: 'Hoe werkt de technische conversie zonder te uploaden?',
34
+ answer:
35
+ 'We maken gebruik van de kracht van het HTML5 Canvas. De browser herschept de afbeelding op een onzichtbaar virtueel canvas, vult de transparanties met wit en genereert een byte-stream die je direct downloadt.',
36
+ },
37
+ {
38
+ question: 'Is het veilig voor vertrouwelijke documenten?',
39
+ answer:
40
+ 'Ja, het is de veiligste optie voor professionals in de banksector, gezondheidszorg of juridische sector. Omdat het een "black box" is die alleen je RAM gebruikt, gaan alle gegevens verloren zodra je het tabblad sluit, waardoor lekken in externe clouds worden voorkomen.',
41
+ },
42
+ ];
43
+
44
+ const howTo: PngAJpgLocaleContent['howTo'] = [
45
+ {
46
+ name: 'Bestandselectie',
47
+ text: 'Bereid je PNG-bestanden voor in een map en sleep ze allemaal tegelijk naar het verwerkingsgebied of zoek ze op met de verkenner.',
48
+ },
49
+ {
50
+ name: 'Directe verwerking',
51
+ text: 'Controleer of de status voor elk bestand verandert in "Gereed" terwijl de browser de grootte lokaal optimaliseert.',
52
+ },
53
+ {
54
+ name: 'Geoptimaliseerde download',
55
+ text: 'Sla je nieuwe JPG\'s een voor een op of gebruik de knop "Alles downloaden" om een gecomprimeerd ZIP-bestand met alle afbeeldingen te krijgen.',
56
+ },
57
+ ];
58
+
59
+ const bibliography: PngAJpgLocaleContent['bibliography'] = [
60
+ {
61
+ name: 'PNG Consortium Specificaties',
62
+ url: 'http://www.libpng.org/pub/png/',
63
+ },
64
+ {
65
+ name: 'Het JPEG-comité',
66
+ url: 'https://jpeg.org/',
67
+ },
68
+ ];
69
+
70
+ const seo: PngAJpgLocaleContent['seo'] = [
71
+ {
72
+ type: 'title',
73
+ text: 'PNG naar JPG Converter: De Ultieme Gids voor Beeldoptimalisatie',
74
+ level: 2,
75
+ },
76
+ {
77
+ type: 'paragraph',
78
+ html: 'In de wereld van digitaal ontwerp en webontwikkeling is efficiëntie alles. Het PNG-formaat (Portable Network Graphics) is geliefd om zijn vermogen om transparanties te behouden en zijn verliesvrije compressie, maar het heeft één grote vijand: het bestandsgewicht. Wanneer je wilt dat je website vliegt of je e-mails direct laden, is de overstap van PNG naar JPG de slimste technische beslissing.',
79
+ },
80
+ {
81
+ type: 'title',
82
+ text: 'JPG of PNG?',
83
+ level: 3,
84
+ },
85
+ {
86
+ type: 'paragraph',
87
+ html: 'Er bestaat geen formaat dat beter is dan een ander, maar eerder een tool voor elke behoefte. PNG is een verliesvrij formaat, ideaal voor interface-mockups, logo\'s met kleine tekst en visuele elementen die een transparante achtergrond vereisen. Deze getrouwheid heeft echter een prijs: bestanden die 5 of 10 keer zwaarder kunnen zijn dan hun gecomprimeerde equivalent.',
88
+ },
89
+ {
90
+ type: 'paragraph',
91
+ html: 'JPG (Joint Photographic Experts Group) daarentegen gebruikt discretiseringsalgoritmen om informatie te verwijderen die het menselijk oog nauwelijks waarneemt, waardoor vederlichte gewichten worden bereikt. Het is de gouden standaard voor foto\'s, advertentie banners en sociale media. Door je PNG\'s naar JPG te converteren, ruil je geometrische getrouwheid in voor netwerksnelheid.',
92
+ },
93
+ {
94
+ type: 'title',
95
+ text: 'Architectuurvergelijking: Lokaal vs Cloud',
96
+ level: 3,
97
+ },
98
+ {
99
+ type: 'comparative',
100
+ items: [
101
+ {
102
+ title: 'Cloud Converters',
103
+ description: 'Traditionele tools die je foto\'s naar een externe server uploaden.',
104
+ icon: 'mdi:cloud-upload',
105
+ pointIcon: 'mdi:close-circle-outline',
106
+ points: [
107
+ 'Netwerklatentie (Upload/Download)',
108
+ 'Risico op lekken van privégegevens',
109
+ 'Limieten voor bestandsgrootte per bestand',
110
+ 'Advertenties en trackers',
111
+ ],
112
+ },
113
+ {
114
+ title: 'Onze Lokale Architectuur',
115
+ description: 'Directe verwerking op je hardware via Vanilla JS-technologie.',
116
+ icon: 'mdi:laptop-mac',
117
+ highlight: true,
118
+ points: [
119
+ 'Directe snelheid zonder netwerk',
120
+ 'Gegarandeerde privacy (0 bytes verzonden)',
121
+ 'Geen MB-limieten per bestand',
122
+ 'Professionele en schone interface',
123
+ ],
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Hoe de technische conversie werkt',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Je vraagt je waarschijnlijk af hoe het mogelijk is om een afbeelding te converteren zonder deze naar een server te sturen. De magie zit in de kracht van moderne browsers. Wanneer je een bestand selecteert, genereren we een Blob die alleen in je RAM bestaat. Die Blob wordt getekend op een onzichtbaar HTML5 Canvas-element.',
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Omdat JPG geen transparantie ondersteunt, vult ons algoritme de achtergrond met een effen witte kleur voordat het PNG-bestand er "op wordt geschilderd". Zodra de afbeelding is samengesteld, voeren we de eigen exportmethode uit, waarbij een byte-stream wordt gegenereerd die je computer direct downloadt.',
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'SEO tip: Het ideale gewicht',
143
+ html: 'Google straft langzame websites actief af. Als je Largest Contentful Paint (LCP) hoog is door een head-PNG van 2MB, kan het converteren naar een JPG van 200KB je PageSpeed-statistieken direct verbeteren zonder visuele verschillen.',
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Beveiliging voor Bedrijven en Professionals',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Als je in gevoelige sectoren werkt zoals banken, gezondheidszorg of recht, is het uploaden van bestanden naar online converters een inbreuk op de beveiliging. Onze tool werkt als een "black box": wat er binnen gebeurt, blijft in je RAM. Het is de enige veilige manier om met vertrouwelijke documenten te werken.',
153
+ },
154
+ {
155
+ type: 'title',
156
+ text: 'Compatibiliteit van het resultaat',
157
+ level: 3,
158
+ },
159
+ {
160
+ type: 'list',
161
+ icon: 'mdi:check-circle',
162
+ items: [
163
+ 'Viewers voor Windows, macOS en mobiele apparaten.',
164
+ 'Sociale media (Instagram, LinkedIn, enz.).',
165
+ 'Kantoortools (Word, PowerPoint).',
166
+ 'Contentbeheersystemen (WordPress, Shopify).',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: 'Conclusie: Optimaliseer als een professional',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Deze converter is niet zomaar een pagina; het is een stukje techniek dat is ontworpen om je leven gemakkelijker te maken. Of je nu een ontwikkelaar bent of een thuisgebruiker, hier heb je de ultieme oplossing om megabytes te besparen en je gegevens veilig te houden.',
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: 'nl', 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 = 'konwerter-png-na-jpg';
6
+ const title = 'Konwertuj PNG na JPG Online';
7
+ const description =
8
+ 'Błyskawicznie konwertuj swoje obrazy PNG do formatu JPG z szybką kompresją na własnym komputerze. Bez przesyłania zdjęć do Internetu. Optymalizacja wsadowa.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Przeciągnij pliki PNG...',
12
+ convertText: 'Aby błyskawicznie konwertować je na JPG',
13
+ selectFiles: 'Wybierz pliki',
14
+ processedFiles: 'Przetworzone pliki',
15
+ downloadAll: 'Pobierz wszystko (.zip)',
16
+ pending: 'Oczekiwanie',
17
+ bibliographyTitle: 'Bibliografia',
18
+ faqTitle: 'Często zadawane pytania',
19
+ };
20
+
21
+ const faq: PngAJpgLocaleContent['faq'] = [
22
+ {
23
+ question: 'Dlaczego warto wybrać nasz lokalny konwerter PNG na JPG?',
24
+ answer:
25
+ 'W przeciwieństwie do konwencjonalnych narzędzi, nasz program przetwarza pliki w całości w Twojej przeglądarce. Twoje obrazy nigdy nie trafiają na obcy dysk twardy, co gwarantuje pełną suwerenność i prywatność Twoich danych.',
26
+ },
27
+ {
28
+ question: 'JPG czy PNG? Co jest lepsze w moim przypadku?',
29
+ answer:
30
+ 'PNG jest idealny do logotypów i elementów z przezroczystością. Jednak JPG jest złotym standardem dla fotografii i banerów internetowych, ponieważ osiąga znacznie mniejszą wagę, co drastycznie poprawia prędkość ładowania strony.',
31
+ },
32
+ {
33
+ question: 'Jak działa techniczna konwersja bez przesyłania czegokolwiek?',
34
+ answer:
35
+ 'Wykorzystujemy moc Canvas HTML5. Przeglądarka odtwarza obraz na niewidocznym wirtualnym płótnie, wypełnia przezroczystości kolorem białym i generuje strumień bajtów, który pobierasz bezpośrednio w mgnieniu oka.',
36
+ },
37
+ {
38
+ question: 'Czy jest to bezpieczne dla dokumentów poufnych?',
39
+ answer:
40
+ 'Tak, to najbezpieczniejsza opcja dla profesjonalistów z branży bankowej, służby zdrowia czy prawa. Będąc „czarną skrzynką”, która używa tylko Twojej pamięci RAM, to, co dzieje się wewnątrz, znika wraz z zamknięciem karty, co zapobiega wyciekom w chmurach zewnętrznych.',
41
+ },
42
+ ];
43
+
44
+ const howTo: PngAJpgLocaleContent['howTo'] = [
45
+ {
46
+ name: 'Wybór plików',
47
+ text: 'Przygotuj swoje pliki PNG w folderze i przeciągnij je wszystkie razem do obszaru przetwarzania lub wyszukaj je za pomocą eksploratora.',
48
+ },
49
+ {
50
+ name: 'Błyskawiczne przetwarzanie',
51
+ text: 'Sprawdź, czy status zmieni się na „Gotowe” dla każdego pliku, podczas gdy przeglądarka optymalizuje wagę lokalnie.',
52
+ },
53
+ {
54
+ name: 'Zoptymalizowane pobieranie',
55
+ text: 'Zapisz swoje nowe pliki JPG jeden po drugim lub użyj przycisku „Pobierz wszystko”, aby uzyskać skompresowany plik ZIP ze wszystkimi obrazami.',
56
+ },
57
+ ];
58
+
59
+ const bibliography: PngAJpgLocaleContent['bibliography'] = [
60
+ {
61
+ name: 'Specyfikacje PNG Consortium',
62
+ url: 'http://www.libpng.org/pub/png/',
63
+ },
64
+ {
65
+ name: 'Komitet JPEG',
66
+ url: 'https://jpeg.org/',
67
+ },
68
+ ];
69
+
70
+ const seo: PngAJpgLocaleContent['seo'] = [
71
+ {
72
+ type: 'title',
73
+ text: 'Konwerter PNG na JPG: Ostateczny Przewodnik po Optymalizacji Obrazów',
74
+ level: 2,
75
+ },
76
+ {
77
+ type: 'paragraph',
78
+ html: 'W świecie cyfrowego projektowania i tworzenia stron internetowych wydajność jest wszystkim. Format PNG (Portable Network Graphics) jest ceniony za zdolność zachowania przezroczystości i kompresję bezstratną, ale ma jednego wielkiego wroga: wagę pliku. Gdy chcesz, aby Twoja strona internetowa „latała” lub Twoje e-maile ładowały się błyskawicznie, przejście z PNG na JPG jest najmądrzejszą decyzją techniczną.',
79
+ },
80
+ {
81
+ type: 'title',
82
+ text: 'JPG czy PNG?',
83
+ level: 3,
84
+ },
85
+ {
86
+ type: 'paragraph',
87
+ html: 'Nie ma formatu lepszego od innego, istnieje tylko narzędzie do konkretnej potrzeby. PNG to format bezstratny, idealny do makiet interfejsów, logotypów z małym tekstem i elementów wizualnych wymagających przezroczystego tła. Jednak ta wierność ma swoją cenę: pliki mogą być 5 lub 10 razy cięższe niż ich skompresowane odpowiedniki.',
88
+ },
89
+ {
90
+ type: 'paragraph',
91
+ html: 'Z drugiej strony JPG (Joint Photographic Experts Group) używa algorytmów dyskretyzacji, aby usunąć informacje, których oko ludzkie prawie nie zauważa, osiągając wagę piórkową. Jest to złoty standard dla fotografii, banerów reklamowych i mediów społecznościowych. Konwertując swoje PNG na JPG, wymieniasz wierność geometryczną na prędkość sieci.',
92
+ },
93
+ {
94
+ type: 'title',
95
+ text: 'Porównanie architektury: Lokalna vs Chmura',
96
+ level: 3,
97
+ },
98
+ {
99
+ type: 'comparative',
100
+ items: [
101
+ {
102
+ title: 'Konwertery w chmurze',
103
+ description: 'Tradycyjne narzędzia, które przesyłają Twoje zdjęcia na zdalny serwer.',
104
+ icon: 'mdi:cloud-upload',
105
+ pointIcon: 'mdi:close-circle-outline',
106
+ points: [
107
+ 'Opóźnienie sieci (Upload/Download)',
108
+ 'Ryzyko wycieku prywatnych danych',
109
+ 'Limity rozmiaru pliku',
110
+ 'Reklamy i trackery',
111
+ ],
112
+ },
113
+ {
114
+ title: 'Nasza lokalna architektura',
115
+ description: 'Bezpośrednie przetwarzanie na Twoim sprzęcie za pomocą technologii Vanilla JS.',
116
+ icon: 'mdi:laptop-mac',
117
+ highlight: true,
118
+ points: [
119
+ 'Natychmiastowa prędkość bez sieci',
120
+ 'Gwarantowana prywatność (0 bajtów przesłanych)',
121
+ 'Brak limitów MB na plik',
122
+ 'Profesjonalny i czysty interfejs',
123
+ ],
124
+ },
125
+ ],
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Jak działa techniczna konwersja',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Pewnie zastanawiasz się, jak to możliwe, aby konwertować obraz bez wysyłania go na serwer. Magia tkwi w mocy nowoczesnych przeglądarek. Gdy wybierasz plik, generujemy Blob, który istnieje tylko w Twojej pamięci RAM. Ten Blob jest rysowany na niewidocznym elemencie HTML5 Canvas.',
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Ponieważ JPG nie obsługuje przezroczystości, nasz algorytm wypełnia tło jednolitym białym kolorem przed „namalowaniem” na nim obrazu PNG. Po skomponowaniu obrazu uruchamiamy natywną metodę eksportu, generując strumień bajtów, który Twój komputer pobiera bezpośrednio.',
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'Wskazówka SEO: Idealna waga',
143
+ html: 'Google aktywnie karze wolne witryny internetowe. Jeśli Twój Largest Contentful Paint (LCP) jest wysoki z powodu nagłówka PNG o rozmiarze 2MB, konwersja na JPG o rozmiarze 200KB może natychmiast poprawić Twoje wskaźniki PageSpeed bez różnic wizualnych.',
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Bezpieczeństwo dla firm i profesjonalistów',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Jeśli pracujesz w sektorach wrażliwych, takich jak bankowość, służba zdrowia czy prawo, przesyłanie plików do konwerterów online jest naruszeniem bezpieczeństwa. Nasze narzędzie działa jak „czarna skrzynka”: to, co dzieje się wewnątrz, pozostaje w Twojej pamięci RAM. To jedyny bezpieczny sposób pracy z poufnymi dokumentami.',
153
+ },
154
+ {
155
+ type: 'title',
156
+ text: 'Kompatybilność wyniku',
157
+ level: 3,
158
+ },
159
+ {
160
+ type: 'list',
161
+ icon: 'mdi:check-circle',
162
+ items: [
163
+ 'Przeglądarki w Windows, macOS i urządzeniach mobilnych.',
164
+ 'Media społecznościowe (Instagram, LinkedIn itp.).',
165
+ 'Narzędzia biurowe (Word, PowerPoint).',
166
+ 'Systemy zarządzania treścią (WordPress, Shopify).',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: 'Podsumowanie: Optymalizuj jak profesjonalista',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Ten konwerter to nie tylko kolejna strona; to dzieło inżynierii zaprojektowane, aby ułatwić Ci życie. Niezależnie od tego, czy jesteś programistą, czy użytkownikiem domowym, masz tutaj ostateczne rozwiązanie pozwalające zaoszczędzić megabajty i zachować bezpieczeństwo swoich danych.',
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: 'pl', faq, howTo }),
191
+ };