@jjlmoya/utils-converters 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/package.json +60 -59
  2. package/src/shared/logic/schemas.ts +57 -0
  3. package/src/tests/faq_count.test.ts +13 -4
  4. package/src/tests/i18n_coverage.test.ts +36 -0
  5. package/src/tests/locale_completeness.test.ts +42 -0
  6. package/src/tests/no_h1_in_components.test.ts +48 -0
  7. package/src/tests/schemas_fulfillment.test.ts +23 -0
  8. package/src/tests/seo_length.test.ts +1 -1
  9. package/src/tests/slug_uniqueness.test.ts +81 -0
  10. package/src/tests/title_quality.test.ts +55 -0
  11. package/src/tool/avifAJpg/i18n/de.ts +178 -0
  12. package/src/tool/avifAJpg/i18n/en.ts +2 -12
  13. package/src/tool/avifAJpg/i18n/es.ts +2 -12
  14. package/src/tool/avifAJpg/i18n/fr.ts +2 -12
  15. package/src/tool/avifAJpg/i18n/id.ts +178 -0
  16. package/src/tool/avifAJpg/i18n/it.ts +178 -0
  17. package/src/tool/avifAJpg/i18n/ja.ts +178 -0
  18. package/src/tool/avifAJpg/i18n/ko.ts +178 -0
  19. package/src/tool/avifAJpg/i18n/nl.ts +178 -0
  20. package/src/tool/avifAJpg/i18n/pl.ts +178 -0
  21. package/src/tool/avifAJpg/i18n/pt.ts +178 -0
  22. package/src/tool/avifAJpg/i18n/ru.ts +178 -0
  23. package/src/tool/avifAJpg/i18n/sv.ts +178 -0
  24. package/src/tool/avifAJpg/i18n/tr.ts +178 -0
  25. package/src/tool/avifAJpg/i18n/zh.ts +178 -0
  26. package/src/tool/avifAJpg/index.ts +13 -1
  27. package/src/tool/avifAPng/i18n/de.ts +178 -0
  28. package/src/tool/avifAPng/i18n/en.ts +2 -12
  29. package/src/tool/avifAPng/i18n/es.ts +2 -12
  30. package/src/tool/avifAPng/i18n/fr.ts +2 -12
  31. package/src/tool/avifAPng/i18n/id.ts +178 -0
  32. package/src/tool/avifAPng/i18n/it.ts +178 -0
  33. package/src/tool/avifAPng/i18n/ja.ts +178 -0
  34. package/src/tool/avifAPng/i18n/ko.ts +178 -0
  35. package/src/tool/avifAPng/i18n/nl.ts +178 -0
  36. package/src/tool/avifAPng/i18n/pl.ts +178 -0
  37. package/src/tool/avifAPng/i18n/pt.ts +178 -0
  38. package/src/tool/avifAPng/i18n/ru.ts +178 -0
  39. package/src/tool/avifAPng/i18n/sv.ts +178 -0
  40. package/src/tool/avifAPng/i18n/tr.ts +178 -0
  41. package/src/tool/avifAPng/i18n/zh.ts +178 -0
  42. package/src/tool/avifAPng/index.ts +13 -1
  43. package/src/tool/avifAWebp/i18n/de.ts +178 -0
  44. package/src/tool/avifAWebp/i18n/en.ts +2 -12
  45. package/src/tool/avifAWebp/i18n/es.ts +2 -12
  46. package/src/tool/avifAWebp/i18n/fr.ts +2 -12
  47. package/src/tool/avifAWebp/i18n/id.ts +178 -0
  48. package/src/tool/avifAWebp/i18n/it.ts +178 -0
  49. package/src/tool/avifAWebp/i18n/ja.ts +178 -0
  50. package/src/tool/avifAWebp/i18n/ko.ts +178 -0
  51. package/src/tool/avifAWebp/i18n/nl.ts +178 -0
  52. package/src/tool/avifAWebp/i18n/pl.ts +178 -0
  53. package/src/tool/avifAWebp/i18n/pt.ts +178 -0
  54. package/src/tool/avifAWebp/i18n/ru.ts +178 -0
  55. package/src/tool/avifAWebp/i18n/sv.ts +178 -0
  56. package/src/tool/avifAWebp/i18n/tr.ts +178 -0
  57. package/src/tool/avifAWebp/i18n/zh.ts +178 -0
  58. package/src/tool/avifAWebp/index.ts +13 -1
  59. package/src/tool/bmpAJpg/i18n/de.ts +178 -0
  60. package/src/tool/bmpAJpg/i18n/en.ts +2 -12
  61. package/src/tool/bmpAJpg/i18n/es.ts +2 -12
  62. package/src/tool/bmpAJpg/i18n/fr.ts +2 -12
  63. package/src/tool/bmpAJpg/i18n/id.ts +178 -0
  64. package/src/tool/bmpAJpg/i18n/it.ts +178 -0
  65. package/src/tool/bmpAJpg/i18n/ja.ts +178 -0
  66. package/src/tool/bmpAJpg/i18n/ko.ts +178 -0
  67. package/src/tool/bmpAJpg/i18n/nl.ts +178 -0
  68. package/src/tool/bmpAJpg/i18n/pl.ts +178 -0
  69. package/src/tool/bmpAJpg/i18n/pt.ts +178 -0
  70. package/src/tool/bmpAJpg/i18n/ru.ts +178 -0
  71. package/src/tool/bmpAJpg/i18n/sv.ts +178 -0
  72. package/src/tool/bmpAJpg/i18n/tr.ts +178 -0
  73. package/src/tool/bmpAJpg/i18n/zh.ts +178 -0
  74. package/src/tool/bmpAJpg/index.ts +13 -1
  75. package/src/tool/bmpAPng/i18n/de.ts +177 -0
  76. package/src/tool/bmpAPng/i18n/en.ts +2 -12
  77. package/src/tool/bmpAPng/i18n/es.ts +2 -12
  78. package/src/tool/bmpAPng/i18n/fr.ts +2 -12
  79. package/src/tool/bmpAPng/i18n/id.ts +177 -0
  80. package/src/tool/bmpAPng/i18n/it.ts +177 -0
  81. package/src/tool/bmpAPng/i18n/ja.ts +177 -0
  82. package/src/tool/bmpAPng/i18n/ko.ts +177 -0
  83. package/src/tool/bmpAPng/i18n/nl.ts +177 -0
  84. package/src/tool/bmpAPng/i18n/pl.ts +177 -0
  85. package/src/tool/bmpAPng/i18n/pt.ts +177 -0
  86. package/src/tool/bmpAPng/i18n/ru.ts +177 -0
  87. package/src/tool/bmpAPng/i18n/sv.ts +177 -0
  88. package/src/tool/bmpAPng/i18n/tr.ts +177 -0
  89. package/src/tool/bmpAPng/i18n/zh.ts +177 -0
  90. package/src/tool/bmpAPng/index.ts +13 -1
  91. package/src/tool/bmpAWebp/i18n/de.ts +178 -0
  92. package/src/tool/bmpAWebp/i18n/en.ts +2 -12
  93. package/src/tool/bmpAWebp/i18n/es.ts +2 -12
  94. package/src/tool/bmpAWebp/i18n/fr.ts +2 -12
  95. package/src/tool/bmpAWebp/i18n/id.ts +178 -0
  96. package/src/tool/bmpAWebp/i18n/it.ts +178 -0
  97. package/src/tool/bmpAWebp/i18n/ja.ts +178 -0
  98. package/src/tool/bmpAWebp/i18n/ko.ts +178 -0
  99. package/src/tool/bmpAWebp/i18n/nl.ts +178 -0
  100. package/src/tool/bmpAWebp/i18n/pl.ts +178 -0
  101. package/src/tool/bmpAWebp/i18n/pt.ts +178 -0
  102. package/src/tool/bmpAWebp/i18n/ru.ts +178 -0
  103. package/src/tool/bmpAWebp/i18n/sv.ts +178 -0
  104. package/src/tool/bmpAWebp/i18n/tr.ts +178 -0
  105. package/src/tool/bmpAWebp/i18n/zh.ts +178 -0
  106. package/src/tool/bmpAWebp/index.ts +13 -1
  107. package/src/tool/gifAJpg/i18n/de.ts +178 -0
  108. package/src/tool/gifAJpg/i18n/en.ts +2 -12
  109. package/src/tool/gifAJpg/i18n/es.ts +2 -12
  110. package/src/tool/gifAJpg/i18n/fr.ts +2 -12
  111. package/src/tool/gifAJpg/i18n/id.ts +178 -0
  112. package/src/tool/gifAJpg/i18n/it.ts +178 -0
  113. package/src/tool/gifAJpg/i18n/ja.ts +178 -0
  114. package/src/tool/gifAJpg/i18n/ko.ts +178 -0
  115. package/src/tool/gifAJpg/i18n/nl.ts +178 -0
  116. package/src/tool/gifAJpg/i18n/pl.ts +178 -0
  117. package/src/tool/gifAJpg/i18n/pt.ts +178 -0
  118. package/src/tool/gifAJpg/i18n/ru.ts +178 -0
  119. package/src/tool/gifAJpg/i18n/sv.ts +178 -0
  120. package/src/tool/gifAJpg/i18n/tr.ts +178 -0
  121. package/src/tool/gifAJpg/i18n/zh.ts +178 -0
  122. package/src/tool/gifAJpg/index.ts +13 -1
  123. package/src/tool/gifAPng/i18n/de.ts +178 -0
  124. package/src/tool/gifAPng/i18n/en.ts +2 -12
  125. package/src/tool/gifAPng/i18n/es.ts +2 -12
  126. package/src/tool/gifAPng/i18n/fr.ts +2 -12
  127. package/src/tool/gifAPng/i18n/id.ts +178 -0
  128. package/src/tool/gifAPng/i18n/it.ts +178 -0
  129. package/src/tool/gifAPng/i18n/ja.ts +178 -0
  130. package/src/tool/gifAPng/i18n/ko.ts +178 -0
  131. package/src/tool/gifAPng/i18n/nl.ts +178 -0
  132. package/src/tool/gifAPng/i18n/pl.ts +178 -0
  133. package/src/tool/gifAPng/i18n/pt.ts +178 -0
  134. package/src/tool/gifAPng/i18n/ru.ts +178 -0
  135. package/src/tool/gifAPng/i18n/sv.ts +178 -0
  136. package/src/tool/gifAPng/i18n/tr.ts +178 -0
  137. package/src/tool/gifAPng/i18n/zh.ts +178 -0
  138. package/src/tool/gifAPng/index.ts +12 -0
  139. package/src/tool/gifAWebp/i18n/de.ts +178 -0
  140. package/src/tool/gifAWebp/i18n/en.ts +2 -12
  141. package/src/tool/gifAWebp/i18n/es.ts +2 -12
  142. package/src/tool/gifAWebp/i18n/fr.ts +2 -12
  143. package/src/tool/gifAWebp/i18n/id.ts +178 -0
  144. package/src/tool/gifAWebp/i18n/it.ts +178 -0
  145. package/src/tool/gifAWebp/i18n/ja.ts +178 -0
  146. package/src/tool/gifAWebp/i18n/ko.ts +178 -0
  147. package/src/tool/gifAWebp/i18n/nl.ts +178 -0
  148. package/src/tool/gifAWebp/i18n/pl.ts +178 -0
  149. package/src/tool/gifAWebp/i18n/pt.ts +178 -0
  150. package/src/tool/gifAWebp/i18n/ru.ts +178 -0
  151. package/src/tool/gifAWebp/i18n/sv.ts +178 -0
  152. package/src/tool/gifAWebp/i18n/tr.ts +178 -0
  153. package/src/tool/gifAWebp/i18n/zh.ts +178 -0
  154. package/src/tool/gifAWebp/index.ts +12 -0
  155. package/src/tool/imagenBase64/i18n/de.ts +168 -0
  156. package/src/tool/imagenBase64/i18n/en.ts +2 -12
  157. package/src/tool/imagenBase64/i18n/es.ts +2 -12
  158. package/src/tool/imagenBase64/i18n/fr.ts +2 -12
  159. package/src/tool/imagenBase64/i18n/id.ts +168 -0
  160. package/src/tool/imagenBase64/i18n/it.ts +168 -0
  161. package/src/tool/imagenBase64/i18n/ja.ts +168 -0
  162. package/src/tool/imagenBase64/i18n/ko.ts +168 -0
  163. package/src/tool/imagenBase64/i18n/nl.ts +168 -0
  164. package/src/tool/imagenBase64/i18n/pl.ts +168 -0
  165. package/src/tool/imagenBase64/i18n/pt.ts +173 -0
  166. package/src/tool/imagenBase64/i18n/ru.ts +168 -0
  167. package/src/tool/imagenBase64/i18n/sv.ts +168 -0
  168. package/src/tool/imagenBase64/i18n/tr.ts +168 -0
  169. package/src/tool/imagenBase64/i18n/zh.ts +168 -0
  170. package/src/tool/imagenBase64/index.ts +12 -0
  171. package/src/tool/jpgAIco/i18n/de.ts +183 -0
  172. package/src/tool/jpgAIco/i18n/en.ts +8 -13
  173. package/src/tool/jpgAIco/i18n/es.ts +13 -18
  174. package/src/tool/jpgAIco/i18n/fr.ts +9 -14
  175. package/src/tool/jpgAIco/i18n/id.ts +183 -0
  176. package/src/tool/jpgAIco/i18n/it.ts +183 -0
  177. package/src/tool/jpgAIco/i18n/ja.ts +183 -0
  178. package/src/tool/jpgAIco/i18n/ko.ts +183 -0
  179. package/src/tool/jpgAIco/i18n/nl.ts +183 -0
  180. package/src/tool/jpgAIco/i18n/pl.ts +183 -0
  181. package/src/tool/jpgAIco/i18n/pt.ts +183 -0
  182. package/src/tool/jpgAIco/i18n/ru.ts +183 -0
  183. package/src/tool/jpgAIco/i18n/sv.ts +183 -0
  184. package/src/tool/jpgAIco/i18n/tr.ts +183 -0
  185. package/src/tool/jpgAIco/i18n/zh.ts +183 -0
  186. package/src/tool/jpgAIco/index.ts +12 -0
  187. package/src/tool/jpgAPng/i18n/de.ts +178 -0
  188. package/src/tool/jpgAPng/i18n/en.ts +2 -12
  189. package/src/tool/jpgAPng/i18n/es.ts +2 -12
  190. package/src/tool/jpgAPng/i18n/fr.ts +2 -12
  191. package/src/tool/jpgAPng/i18n/id.ts +178 -0
  192. package/src/tool/jpgAPng/i18n/it.ts +178 -0
  193. package/src/tool/jpgAPng/i18n/ja.ts +178 -0
  194. package/src/tool/jpgAPng/i18n/ko.ts +178 -0
  195. package/src/tool/jpgAPng/i18n/nl.ts +178 -0
  196. package/src/tool/jpgAPng/i18n/pl.ts +178 -0
  197. package/src/tool/jpgAPng/i18n/pt.ts +178 -0
  198. package/src/tool/jpgAPng/i18n/ru.ts +178 -0
  199. package/src/tool/jpgAPng/i18n/sv.ts +178 -0
  200. package/src/tool/jpgAPng/i18n/tr.ts +178 -0
  201. package/src/tool/jpgAPng/i18n/zh.ts +178 -0
  202. package/src/tool/jpgAPng/index.ts +13 -1
  203. package/src/tool/jpgAWebp/i18n/de.ts +178 -0
  204. package/src/tool/jpgAWebp/i18n/en.ts +2 -12
  205. package/src/tool/jpgAWebp/i18n/es.ts +2 -12
  206. package/src/tool/jpgAWebp/i18n/fr.ts +2 -12
  207. package/src/tool/jpgAWebp/i18n/id.ts +178 -0
  208. package/src/tool/jpgAWebp/i18n/it.ts +178 -0
  209. package/src/tool/jpgAWebp/i18n/ja.ts +178 -0
  210. package/src/tool/jpgAWebp/i18n/ko.ts +178 -0
  211. package/src/tool/jpgAWebp/i18n/nl.ts +178 -0
  212. package/src/tool/jpgAWebp/i18n/pl.ts +178 -0
  213. package/src/tool/jpgAWebp/i18n/pt.ts +178 -0
  214. package/src/tool/jpgAWebp/i18n/ru.ts +178 -0
  215. package/src/tool/jpgAWebp/i18n/sv.ts +178 -0
  216. package/src/tool/jpgAWebp/i18n/tr.ts +178 -0
  217. package/src/tool/jpgAWebp/i18n/zh.ts +178 -0
  218. package/src/tool/jpgAWebp/index.ts +12 -0
  219. package/src/tool/pngAIco/i18n/de.ts +183 -0
  220. package/src/tool/pngAIco/i18n/en.ts +8 -13
  221. package/src/tool/pngAIco/i18n/es.ts +19 -24
  222. package/src/tool/pngAIco/i18n/fr.ts +20 -25
  223. package/src/tool/pngAIco/i18n/id.ts +183 -0
  224. package/src/tool/pngAIco/i18n/it.ts +183 -0
  225. package/src/tool/pngAIco/i18n/ja.ts +183 -0
  226. package/src/tool/pngAIco/i18n/ko.ts +183 -0
  227. package/src/tool/pngAIco/i18n/nl.ts +183 -0
  228. package/src/tool/pngAIco/i18n/pl.ts +183 -0
  229. package/src/tool/pngAIco/i18n/pt.ts +183 -0
  230. package/src/tool/pngAIco/i18n/ru.ts +183 -0
  231. package/src/tool/pngAIco/i18n/sv.ts +183 -0
  232. package/src/tool/pngAIco/i18n/tr.ts +183 -0
  233. package/src/tool/pngAIco/i18n/zh.ts +183 -0
  234. package/src/tool/pngAIco/index.ts +12 -0
  235. package/src/tool/pngAJpg/i18n/de.ts +191 -0
  236. package/src/tool/pngAJpg/i18n/en.ts +2 -12
  237. package/src/tool/pngAJpg/i18n/es.ts +2 -12
  238. package/src/tool/pngAJpg/i18n/fr.ts +2 -12
  239. package/src/tool/pngAJpg/i18n/id.ts +191 -0
  240. package/src/tool/pngAJpg/i18n/it.ts +191 -0
  241. package/src/tool/pngAJpg/i18n/ja.ts +191 -0
  242. package/src/tool/pngAJpg/i18n/ko.ts +191 -0
  243. package/src/tool/pngAJpg/i18n/nl.ts +191 -0
  244. package/src/tool/pngAJpg/i18n/pl.ts +191 -0
  245. package/src/tool/pngAJpg/i18n/pt.ts +191 -0
  246. package/src/tool/pngAJpg/i18n/ru.ts +191 -0
  247. package/src/tool/pngAJpg/i18n/sv.ts +191 -0
  248. package/src/tool/pngAJpg/i18n/tr.ts +191 -0
  249. package/src/tool/pngAJpg/i18n/zh.ts +191 -0
  250. package/src/tool/pngAJpg/index.ts +13 -1
  251. package/src/tool/pngAWebp/i18n/de.ts +182 -0
  252. package/src/tool/pngAWebp/i18n/en.ts +2 -12
  253. package/src/tool/pngAWebp/i18n/es.ts +2 -12
  254. package/src/tool/pngAWebp/i18n/fr.ts +2 -12
  255. package/src/tool/pngAWebp/i18n/id.ts +182 -0
  256. package/src/tool/pngAWebp/i18n/it.ts +182 -0
  257. package/src/tool/pngAWebp/i18n/ja.ts +182 -0
  258. package/src/tool/pngAWebp/i18n/ko.ts +182 -0
  259. package/src/tool/pngAWebp/i18n/nl.ts +182 -0
  260. package/src/tool/pngAWebp/i18n/pl.ts +182 -0
  261. package/src/tool/pngAWebp/i18n/pt.ts +182 -0
  262. package/src/tool/pngAWebp/i18n/ru.ts +182 -0
  263. package/src/tool/pngAWebp/i18n/sv.ts +182 -0
  264. package/src/tool/pngAWebp/i18n/tr.ts +182 -0
  265. package/src/tool/pngAWebp/i18n/zh.ts +182 -0
  266. package/src/tool/pngAWebp/index.ts +12 -0
  267. package/src/tool/svgAJpg/i18n/de.ts +178 -0
  268. package/src/tool/svgAJpg/i18n/en.ts +8 -13
  269. package/src/tool/svgAJpg/i18n/es.ts +8 -13
  270. package/src/tool/svgAJpg/i18n/fr.ts +2 -12
  271. package/src/tool/svgAJpg/i18n/id.ts +178 -0
  272. package/src/tool/svgAJpg/i18n/it.ts +178 -0
  273. package/src/tool/svgAJpg/i18n/ja.ts +178 -0
  274. package/src/tool/svgAJpg/i18n/ko.ts +178 -0
  275. package/src/tool/svgAJpg/i18n/nl.ts +178 -0
  276. package/src/tool/svgAJpg/i18n/pl.ts +178 -0
  277. package/src/tool/svgAJpg/i18n/pt.ts +178 -0
  278. package/src/tool/svgAJpg/i18n/ru.ts +178 -0
  279. package/src/tool/svgAJpg/i18n/sv.ts +178 -0
  280. package/src/tool/svgAJpg/i18n/tr.ts +178 -0
  281. package/src/tool/svgAJpg/i18n/zh.ts +178 -0
  282. package/src/tool/svgAJpg/index.ts +12 -0
  283. package/src/tool/svgAPng/i18n/de.ts +178 -0
  284. package/src/tool/svgAPng/i18n/en.ts +8 -13
  285. package/src/tool/svgAPng/i18n/es.ts +31 -36
  286. package/src/tool/svgAPng/i18n/fr.ts +2 -12
  287. package/src/tool/svgAPng/i18n/id.ts +178 -0
  288. package/src/tool/svgAPng/i18n/it.ts +178 -0
  289. package/src/tool/svgAPng/i18n/ja.ts +178 -0
  290. package/src/tool/svgAPng/i18n/ko.ts +178 -0
  291. package/src/tool/svgAPng/i18n/nl.ts +178 -0
  292. package/src/tool/svgAPng/i18n/pl.ts +178 -0
  293. package/src/tool/svgAPng/i18n/pt.ts +178 -0
  294. package/src/tool/svgAPng/i18n/ru.ts +178 -0
  295. package/src/tool/svgAPng/i18n/sv.ts +178 -0
  296. package/src/tool/svgAPng/i18n/tr.ts +178 -0
  297. package/src/tool/svgAPng/i18n/zh.ts +178 -0
  298. package/src/tool/svgAPng/index.ts +12 -0
  299. package/src/tool/webpAIco/i18n/de.ts +183 -0
  300. package/src/tool/webpAIco/i18n/en.ts +8 -13
  301. package/src/tool/webpAIco/i18n/es.ts +9 -14
  302. package/src/tool/webpAIco/i18n/fr.ts +11 -16
  303. package/src/tool/webpAIco/i18n/id.ts +183 -0
  304. package/src/tool/webpAIco/i18n/it.ts +183 -0
  305. package/src/tool/webpAIco/i18n/ja.ts +183 -0
  306. package/src/tool/webpAIco/i18n/ko.ts +183 -0
  307. package/src/tool/webpAIco/i18n/nl.ts +183 -0
  308. package/src/tool/webpAIco/i18n/pl.ts +183 -0
  309. package/src/tool/webpAIco/i18n/pt.ts +183 -0
  310. package/src/tool/webpAIco/i18n/ru.ts +183 -0
  311. package/src/tool/webpAIco/i18n/sv.ts +183 -0
  312. package/src/tool/webpAIco/i18n/tr.ts +183 -0
  313. package/src/tool/webpAIco/i18n/zh.ts +183 -0
  314. package/src/tool/webpAIco/index.ts +12 -0
  315. package/src/tool/webpAJpg/i18n/de.ts +187 -0
  316. package/src/tool/webpAJpg/i18n/en.ts +9 -13
  317. package/src/tool/webpAJpg/i18n/es.ts +37 -42
  318. package/src/tool/webpAJpg/i18n/fr.ts +35 -40
  319. package/src/tool/webpAJpg/i18n/id.ts +182 -0
  320. package/src/tool/webpAJpg/i18n/it.ts +182 -0
  321. package/src/tool/webpAJpg/i18n/ja.ts +182 -0
  322. package/src/tool/webpAJpg/i18n/ko.ts +182 -0
  323. package/src/tool/webpAJpg/i18n/nl.ts +182 -0
  324. package/src/tool/webpAJpg/i18n/pl.ts +182 -0
  325. package/src/tool/webpAJpg/i18n/pt.ts +182 -0
  326. package/src/tool/webpAJpg/i18n/ru.ts +182 -0
  327. package/src/tool/webpAJpg/i18n/sv.ts +182 -0
  328. package/src/tool/webpAJpg/i18n/tr.ts +182 -0
  329. package/src/tool/webpAJpg/i18n/zh.ts +182 -0
  330. package/src/tool/webpAJpg/index.ts +12 -0
  331. package/src/tool/webpAPng/i18n/de.ts +182 -0
  332. package/src/tool/webpAPng/i18n/en.ts +8 -13
  333. package/src/tool/webpAPng/i18n/es.ts +35 -40
  334. package/src/tool/webpAPng/i18n/fr.ts +2 -12
  335. package/src/tool/webpAPng/i18n/id.ts +182 -0
  336. package/src/tool/webpAPng/i18n/it.ts +182 -0
  337. package/src/tool/webpAPng/i18n/ja.ts +182 -0
  338. package/src/tool/webpAPng/i18n/ko.ts +182 -0
  339. package/src/tool/webpAPng/i18n/nl.ts +182 -0
  340. package/src/tool/webpAPng/i18n/pl.ts +182 -0
  341. package/src/tool/webpAPng/i18n/pt.ts +182 -0
  342. package/src/tool/webpAPng/i18n/ru.ts +182 -0
  343. package/src/tool/webpAPng/i18n/sv.ts +182 -0
  344. package/src/tool/webpAPng/i18n/tr.ts +182 -0
  345. package/src/tool/webpAPng/i18n/zh.ts +182 -0
  346. package/src/tool/webpAPng/index.ts +12 -0
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { JpgAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'konverter-jpg-v-png';
6
+ const title = 'Конвертировать JPG в PNG Онлайн и Бесплатно';
7
+ const description =
8
+ 'Конвертируйте JPG-изображения в PNG в вашем браузере без загрузки файлов. Беспотерьная конвертация, бесплатно и полностью приватно.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Перетащите файлы JPG...',
12
+ convertText: 'Чтобы мгновенно конвертировать их в PNG',
13
+ selectFiles: 'Выбрать файлы',
14
+ processedFiles: 'Обработанные файлы',
15
+ downloadAll: 'Скачать всё (.zip)',
16
+ pending: 'В ожидании',
17
+ bibliographyTitle: 'Библиографические ссылки',
18
+ faqTitle: 'Часто задаваемые вопросы',
19
+ };
20
+
21
+ const faq: JpgAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'Когда мне следует использовать конвертацию из JPG в PNG?',
24
+ answer:
25
+ 'Всегда, когда вы собираетесь редактировать текст или логотипы внутри фотографии. Если вы сохраняете JPG несколько раз, изображение "замусоривается". PNG "замораживает" сжатие.',
26
+ },
27
+ {
28
+ question: 'Будет ли у PNG-файла сразу прозрачный фон?',
29
+ answer:
30
+ 'Нет. Исходный JPG был плоским и без такого типа структурного канала. Результирующий PNG подготовит этот контейнер, затем вам нужно будет изолировать объект с помощью Photoshop или другого редактора.',
31
+ },
32
+ {
33
+ question: 'Есть ли у этого сайта ограничения по трафику?',
34
+ answer:
35
+ 'Благодаря технологиям Edge без облачных зависимостей, вес вашей конверсии не накладывает лимитов, так как она полностью использует ваш компьютер или мобильный телефон.',
36
+ },
37
+ ];
38
+
39
+ const howTo: JpgAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Перетащите JPG в панель',
42
+ text: 'Загрузите статические изображения в формате JPG с помощью мыши или системного селектора файлов.',
43
+ },
44
+ {
45
+ name: 'Выполнение без потерь',
46
+ text: 'Программное обеспечение Vanilla перемещает биты кадра в оболочку без потерь, характерную для семейства PNG.',
47
+ },
48
+ {
49
+ name: 'Завершить сессию',
50
+ text: 'Нажмите на панель, и ваш браузер сохранит загруженные веб-активы в ваши пользовательские папки.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'The W3C PNG Graphics',
57
+ url: 'https://www.w3.org/Graphics/PNG/',
58
+ },
59
+ {
60
+ name: 'Understanding Digital Image Compression',
61
+ url: 'https://en.wikipedia.org/wiki/Image_compression',
62
+ },
63
+ ];
64
+
65
+ const seo: JpgAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Конвертер JPG в PNG: Редактирование без потерь и прозрачность',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>JPG</strong> непревзойден для фотографий с камеры, но у него есть ахиллесова пята: каждый раз, когда вы сохраняете файл, снова применяется сжатие с потерями, постепенно ухудшая края и градиенты. <strong>PNG</strong> использует сжатие без потерь — после сохранения пиксели неизменны. Конвертация JPG в PNG — ключевая операция, когда нужно подготовить изображение для интенсивного редактирования, добавить прозрачный фон или интегрировать его в рабочий процесс дизайна, требующий многократных сохранений.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'JPG или PNG? Когда использовать каждый формат',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: '<strong>JPG</strong> — король фотографии: малый вес, совместимость со всеми устройствами. Но артефакты сжатия накапливаются при каждом редактировании и повторном сохранении. Если вам нужно многократно обрезать, ретушировать или добавлять текст на изображение, начать с JPG означает вносить деградацию в каждом цикле. Кроме того, в JPG отсутствует альфа-канал: он не может иметь прозрачного фона, что делает его непригодным для логотипов, иконок и элементов интерфейса.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '<strong>PNG</strong> — правильный выбор для корпоративных логотипов, скриншотов с четким текстом, элементов интерфейса, изображений продуктов с белым фоном, которые позже нужно будет вырезать, или любых графических ресурсов, которые будут редактироваться более одного раза. Сжатие без потерь гарантирует, что края текста остаются идеально четкими, а чистые цвета — чистыми, без шума JPEG.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Сравнение: Локальная конвертация против Облачной',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Облачные конвертеры',
98
+ description: 'Инструменты, которые загружают ваши файлы на удаленный сервер.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Сетевая задержка при загрузке и скачивании',
103
+ 'Ваши изображения остаются на чужих серверах',
104
+ 'Ограничения на размер и количество конвертаций в день',
105
+ 'Навязчивая реклама и сторонние трекеры',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Наша локальная архитектура',
110
+ description: 'Прямая обработка на вашем оборудовании с использованием технологии Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Мгновенная скорость — нулевая сетевая задержка',
115
+ 'Полная конфиденциальность — 0 байт отправлено наружу',
116
+ 'Без лимитов на МБ и количество файлов',
117
+ 'Чистый интерфейс, без рекламы и отслеживания',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Как это работает технически',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Процесс чисто локальный: браузер создает <strong>Blob</strong> с выбранным JPG и отрисовывает его на <strong>HTML5 Canvas</strong> в памяти. После рендеринга вызывается <code>toDataURL(\'image/png\')</code> — встроенный в браузер кодек PNG заново кодирует каждый пиксель без применения нового сжатия с потерями. Результатомявляется PNG, который точно сохраняет текущее состояние JPG: не лучше и не хуже, просто замороженный.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Результирующий PNG будет использовать беспотерьное сжатие DEFLATE, такое же, как в профессиональных инструментах вроде Photoshop или GIMP. Его размер будет больше исходного JPG — обычно в 2–5 раз — потому что он хранит все пиксели без отбрасывания информации. Это цена за точность и бесконечные возможности редактирования.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Важно: PNG не восстанавливает качество JPEG',
138
+ html: 'Конвертация JPG в PNG <strong>не восстанавливает качество, потерянное</strong> во время оригинального сжатия JPEG. Если ваш JPG уже имел блочные артефакты или цветовой шум, PNG сохранит их в неизменном виде — он просто предотвращает добавление новых. Думайте о конвертации как о "замораживании" текущего состояния изображения, чтобы будущие правки не ухудшали его еще больше.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Случаи использования и совместимость',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Логотипы и элементы брендинга, которым нужен прозрачный фон после вырезания.',
150
+ 'Скриншоты с текстом, которые будут редактироваться и сохраняться несколько раз.',
151
+ 'Изображения продуктов для e-commerce, требующие чистого белого фона для обтравки.',
152
+ 'Графические ресурсы для презентаций PowerPoint или Google Slides.',
153
+ 'UI-активы для веб- и мобильных приложений, где критична четкость краев.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Заключение',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Конвертация JPG в PNG — первый шаг в любом серьезном рабочем процессе дизайна. Она не трансформирует исходное качество, но защищает каждый пиксель от будущих правок. С этим инструментом процесс происходит мгновенно и полностью приватно, без того чтобы ваши корпоративные или личные изображения когда-либо покидали ваше устройство.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: JpgAPngLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'ru', faq, howTo }),
178
+ };
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { JpgAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'konvertera-jpg-till-png';
6
+ const title = 'Konvertera JPG till PNG Online och Gratis';
7
+ const description =
8
+ 'Konvertera JPG-bilder till PNG i din webbläsare utan att ladda upp filer. Förlustfri konvertering, gratis och helt privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Dra JPG-filer hit...',
12
+ convertText: 'För att konvertera dem till PNG direkt',
13
+ selectFiles: 'Välj filer',
14
+ processedFiles: 'Bearbetade filer',
15
+ downloadAll: 'Ladda ner alla (.zip)',
16
+ pending: 'Väntande',
17
+ bibliographyTitle: 'Bibliografiska Referenser',
18
+ faqTitle: 'Vanliga Frågor',
19
+ };
20
+
21
+ const faq: JpgAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'När ska jag använda JPG till PNG?',
24
+ answer:
25
+ 'Närhelst du ska redigera text eller logotyper i ett fotografi. Om du sparar en JPG flera gånger blir den "smutsig". PNG fryser komprimeringen.',
26
+ },
27
+ {
28
+ question: 'Kommer PNG-filen att få en transparent bakgrund omedelbart?',
29
+ answer:
30
+ 'Nej. Den ursprungliga JPG-filen var platt och saknade den typen av strukturell kanal. Den resulterande PNG-filen förbereder den containern, sedan måste du isolera elementet med Photoshop eller ett annat redigeringsprogram.',
31
+ },
32
+ {
33
+ question: 'Har den här webbplatsen trafikbegränsningar?',
34
+ answer:
35
+ 'Tack vare Edge-teknik utan molnberoende finns det inga begränsningar eftersom den helt använder din egen dator eller mobiltelefon.',
36
+ },
37
+ ];
38
+
39
+ const howTo: JpgAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Dra JPG till panelen',
42
+ text: 'Ladda upp statiska bilder i JPG-format med musen eller datorns väljare.',
43
+ },
44
+ {
45
+ name: 'Förlustfri körning',
46
+ text: 'Vanilla-programvaran skjuter bildens bitar till ett förlustfritt hölje som är infödd i PNG-familjen.',
47
+ },
48
+ {
49
+ name: 'Avsluta sessionen',
50
+ text: 'Klicka på panelen så lägger din webbläsare de nedladdade webbtillgångarna i dina användarmappar.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'The W3C PNG Graphics',
57
+ url: 'https://www.w3.org/Graphics/PNG/',
58
+ },
59
+ {
60
+ name: 'Understanding Digital Image Compression',
61
+ url: 'https://en.wikipedia.org/wiki/Image_compression',
62
+ },
63
+ ];
64
+
65
+ const seo: JpgAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Konverterare från JPG till PNG: Förlustfri redigering och transparens',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>JPG</strong> är oslagbart för kamerafotografier, men har en akilleshäl: varje gång du sparar filen tillämpas dess förlustbringande komprimering igen, vilket gradvis försämrar kanter och gradienter. <strong>PNG</strong> använder förlustfri komprimering – när filen väl har sparats är pixlarna oföränderliga. Att konvertera en JPG till PNG är den avgörande operationen när du behöver förbereda en bild för intensiv redigering, lägga till en transparent bakgrund eller integrera den i ett designflöde som kräver flera sparanden.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'JPG eller PNG? När man ska använda varje format',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: '<strong>JPG</strong> är fotografins kung: låg vikt, kompatibel med allt. Men dess komprimeringseffekter ackumuleras vid varje redigering och omsparande. Om du behöver beskära, retuschera eller lägga till text i en bild upprepade gånger, innebär det att börja från JPG att du introducerar försämring i varje cykel. Dessutom saknar JPG en alfakanal: den kan inte ha transparenta bakgrunder, vilket gör att den inte lämpar sig för logotyper, ikoner och UI-element.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '<strong>PNG</strong> är det rätta valet för företagslogotyper, skärmdumpar med skarp text, gränssnittselement, produktbilder med vit bakgrund som du senare behöver beskära, eller alla grafiska resurser som ska redigeras mer än en gång. Den förlustfria komprimeringen garanterar att textkanter förblir perfekt definierade och att plana färger förblir rena, utan JPEG-brus.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Jämförelse: Lokal konvertering vs moln',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Molnkonverterare',
98
+ description: 'Verktyg som laddar upp dina filer till en fjärrserver.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Nätverkslatens vid uppladdning och nedladdning',
103
+ 'Dina bilder finns kvar på andras servrar',
104
+ 'Begränsningar i storlek och dagliga konverteringar',
105
+ 'Påträngande reklam och tredjepartsspårare',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Vår lokala arkitektur',
110
+ description: 'Direkt bearbetning på din hårdvara via Vanilla JS-teknik.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Omedelbar hastighet – noll nätverkslatens',
115
+ 'Total integritet – 0 byte skickas externt',
116
+ 'Inga MB-begränsningar eller begränsningar på antal filer',
117
+ 'Rent gränssnitt, utan annonser eller spårning',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Hur det fungerar tekniskt',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Processen är rent lokal: webbläsaren skapar en <strong>Blob</strong> med den valda JPG-filen och ritar den på en <strong>HTML5 Canvas</strong> i minnet. När den väl har renderats anropas <code>toDataURL(\'image/png\')</code> – webbläsarens integrerade PNG-codec kodar om varje pixel utan att tillämpa någon ny förlustbringande komprimering. Resultatet är en PNG som troget bevarar JPG-filens nuvarande tillstånd: varken bättre eller sämre, bara fryst.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Den resulterande PNG-filen kommer att använda förlustfri DEFLATE-komprimering, samma som används av professionella verktyg som Photoshop eller GIMP. Dess storlek kommer att vara större än den ursprungliga JPG-filen – vanligtvis mellan 2 och 5 gånger – eftersom den lagrar alla pixlar utan att kasta bort information. Det är priset man betalar för trohet och oändlig redigerbarhet.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Viktigt: PNG återställer inte JPEG kvalitet',
138
+ html: 'Att konvertera en JPG till PNG <strong>återställer inte den förlorade kvaliteten</strong> under den ursprungliga JPEG-komprimeringen. Om din JPG redan hade blockeffekter eller färgbrus, kommer PNG att bevara dem intakta – det förhindrar helt enkelt att fler läggs till. Tänk på konverteringen som att "frysa" bildens nuvarande tillstånd så att framtida redigeringar inte försämrar den ytterligare.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Användningsfall och kompatibilitet',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Logotyper och varumärkeselement som behöver transparent bakgrund efter beskärning.',
150
+ 'Skärmdumpar med text som kommer att redigeras och sparas om flera gånger.',
151
+ 'Produktbilder för e-handel som kräver ren och beskärningsbar vit bakgrund.',
152
+ 'Grafiska resurser för PowerPoint- eller Google Slides-presentationer.',
153
+ 'UI-tillgångar för webb- och mobilapplikationer där kantskärpa är kritisk.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Slutsats',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Konvertering från JPG till PNG är det första steget i alla seriösa designarbetsflöden. Det omvandlar inte den ursprungliga kvaliteten, men det skyddar varje pixel från framtida redigeringar. Med det här verktyget sker processen omedelbart och helt privat, utan att dina företags- eller personliga bilder någonsin lämnar din enhet.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: JpgAPngLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'sv', faq, howTo }),
178
+ };
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { JpgAPngLocaleContent } from '../index';
4
+
5
+ const slug = 'jpg-png-donusturucu';
6
+ const title = 'Online ve Ücretsiz JPG\'den PNG\'ye Dönüştür';
7
+ const description =
8
+ 'Dosya yüklemeden tarayıcınızda JPG görüntülerini PNG\'ye dönüştürün. Kayıpsız, ücretsiz ve tamamen özel dönüşüm.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'JPG dosyalarını buraya sürükleyin...',
12
+ convertText: 'Anında PNG\'ye dönüştürmek için',
13
+ selectFiles: 'Dosyaları seçin',
14
+ processedFiles: 'İşlenen dosyalar',
15
+ downloadAll: 'Tümünü İndir (.zip)',
16
+ pending: 'Bekliyor',
17
+ bibliographyTitle: 'Bibliyografik Referanslar',
18
+ faqTitle: 'Sıkça Sorulan Sorular',
19
+ };
20
+
21
+ const faq: JpgAPngLocaleContent['faq'] = [
22
+ {
23
+ question: 'JPG\'den PNG\'ye dönüştürmeyi ne zaman kullanmalıyım?',
24
+ answer:
25
+ 'Bir fotoğrafın içindeki metni veya logoları düzenleyeceğiniz zaman. Bir JPG dosyasını birden çok kez kaydederseniz, o dosya bozulur. PNG ise sıkıştırmayı dondurur.',
26
+ },
27
+ {
28
+ question: 'PNG dosyası hemen şeffaf bir arka plana sahip olacak mı?',
29
+ answer:
30
+ 'Hayır. Orijinal JPG dosyası düzdü ve bu tür bir yapısal kanala sahip değildi. Elde edilen PNG bu alanı hazırlayacaktır, ardından Photoshop veya başka bir düzenleyici kullanarak parçayı izole etmeniz gerekecektir.',
31
+ },
32
+ {
33
+ question: 'Bu web sitesinin trafik sınırları var mı?',
34
+ answer:
35
+ 'Bulut bağımlılığı olmayan Edge teknolojileri sayesinde, dönüşümünüzün boyutu herhangi bir sınır oluşturmaz çünkü tamamen bilgisayarınızı veya mobil terminalinizi kullanır.',
36
+ },
37
+ ];
38
+
39
+ const howTo: JpgAPngLocaleContent['howTo'] = [
40
+ {
41
+ name: 'JPG\'yi panele sürükleyin',
42
+ text: 'Fare veya bilgisayar seçici kullanarak JPG formatındaki statik görüntüleri yükleyin.',
43
+ },
44
+ {
45
+ name: 'Kayıpsız Yürütme',
46
+ text: 'Vanilla yazılımı, görüntünün bitlerini PNG ailesine özgü kayıpsız bir kılıfa iter.',
47
+ },
48
+ {
49
+ name: 'Oturanı Bitir',
50
+ text: 'Panele tıkladığınızda tarayıcınız indirilen web varlıklarını Kullanıcı Klasörlerinize bırakacaktır.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: JpgAPngLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'The W3C PNG Graphics',
57
+ url: 'https://www.w3.org/Graphics/PNG/',
58
+ },
59
+ {
60
+ name: 'Understanding Digital Image Compression',
61
+ url: 'https://en.wikipedia.org/wiki/Image_compression',
62
+ },
63
+ ];
64
+
65
+ const seo: JpgAPngLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'JPG\'den PNG\'ye Dönüştürücü: Kayıpsız Düzenleme ve Şeffaflık',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>JPG</strong> fotoğraf makinesi fotoğrafları için rakipsizdir, ancak bir zayıf noktası vardır: dosyayı her kaydettiğinizde kayıplı sıkıştırmasını yeniden uygular, kenarları ve geçişleri kademeli olarak bozar. <strong>PNG</strong> kayıpsız sıkıştırma kullanır; bir kez kaydedildiğinde pikseller değişmez. Bir JPG görüntüsünü PNG\'ye dönüştürmek, bir görüntüyü yoğun düzenleme için hazırlamanız, şeffaf bir arka plan eklemeniz veya birden fazla kaydetme gerektiren bir tasarım akışına entegre etmeniz gerektiğinde kilit işlemdir.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'JPG mi PNG mi? Her formatı ne zaman kullanmalı?',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: '<strong>JPG</strong> fotoğrafçılığın kralıdır: düşük boyut, her şeyle uyumlu. Ancak sıkıştırma kusurları her düzenleme ve yeniden kaydetme ile birikir. Bir görüntüyü tekrar tekrar kırpmanız, rötuşlamanız veya metin eklemeniz gerekiyorsa, JPG\'den başlamak her döngüde bozulma eklemek anlamına gelir. Ayrıca, JPG dosyasında alfa kanalı yoktur: şeffaf arka planlara sahip olamaz, bu da onu logolar, simgeler ve kullanıcı arayüzü (UI) öğeleri için diskalifiye eder.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '<strong>PNG</strong> kurumsal logolar, net metin içeren ekran görüntüleri, arayüz öğeleri, daha sonra kırpmanız gerekecek beyaz arka planlı ürün görselleri veya birden fazla kez düzenlenecek herhangi bir grafik kaynağı için doğru seçimdir. Kayıpsız sıkıştırma, metin kenarlarının mükemmel bir şekilde tanımlanmış kalmasını ve düz renklerin JPEG paraziti olmadan saf kalmasını garanti eder.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Karşılaştırma: Yerel Dönüşüm vs Bulut',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Bulut Dönüştürücüler',
98
+ description: 'Dosyalarınızı uzak bir sunucuya yükleyen araçlar.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Yükleme ve indirmede ağ gecikmesi',
103
+ 'Görüntüleriniz başkalarının sunucularında kalır',
104
+ 'Boyut ve günlük dönüşüm sınırları',
105
+ 'Müdahaleci reklamlar ve üçüncü taraf izleyiciler',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Yerel Mimarimiz',
110
+ description: 'Vanilla JS teknolojisi ile doğrudan donanımınızda işleme.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Anında hız — sıfır ağ gecikmesi',
115
+ 'Tam gizlilik — dışarıya 0 bayt gönderilir',
116
+ 'MB veya dosya sayısı sınırı yok',
117
+ 'Reklam veya izleme içermeyen temiz arayüz',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Teknik Olarak Nasıl Çalışır?',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Süreç tamamen yereldir: tarayıcı seçilen JPG ile bir <strong>Blob</strong> oluşturur ve bunu bellekteki bir <strong>Canvas HTML5</strong> üzerine çizer. Oluşturulduktan sonra <code>toDataURL(\'image/png\')</code> çağrılır — tarayıcıya entegre PNG kodeği, herhangi bir yeni kayıplı sıkıştırma uygulamadan her pikseli yeniden kodlar. Sonuç, JPG\'nin mevcut durumunu sadık bir şekilde koruyan bir PNG\'dir: ne daha iyi ne daha kötü, sadece dondurulmuş halidir.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Elde edilen PNG, Photoshop veya GIMP gibi profesyonel araçlarda kullanılan kayıpsız DEFLATE sıkıştırmasını kullanacaktır. Boyutu, tüm pikselleri bilgi atmadan sakladığı için orijinal JPG\'den — genellikle 2 ila 5 kat — daha büyük olacaktır. Bu, aslına uygunluk ve sonsuz düzenlenebilirlik için ödenen bedeldir.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Önemli: PNG, JPEG kalitesini geri getirmez',
138
+ html: 'Bir JPG görüntüsünü PNG\'ye dönüştürmek, orijinal JPEG sıkıştırması sırasında <strong>kaybedilen kaliteyi geri getirmez</strong>. JPG dosyanızda blok kusurları veya renk paraziti varsa, PNG bunları bozulmadan koruyacaktır — sadece daha fazlasının eklenmesini engeller. Dönüşümü, görüntünün mevcut durumunu "dondurmak" olarak düşünün, böylece gelecekteki düzenlemeler görüntüyü daha fazla bozmaz.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Kullanım Durumları ve Uyumluluk',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Kırpma işleminden sonra şeffaf arka plana ihtiyaç duyan logolar ve marka öğeleri.',
150
+ 'Metin içeren ve birden çok kez düzenlenip yeniden kaydedilecek ekran görüntüleri.',
151
+ 'E-ticaret için temiz ve kırpılabilir beyaz arka plan gerektiren ürün görselleri.',
152
+ 'PowerPoint veya Google Slaytlar sunumları için grafik kaynakları.',
153
+ 'Kenar netliğinin kritik olduğu web ve mobil uygulamalar için kullanıcı arayüzü (UI) varlıkları.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Sonuç',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'JPG\'den PNG\'ye dönüştürme, her ciddi tasarım iş akışındaki ilk adımdır. Orijinal kaliteyi değiştirmez, ancak her pikseli gelecekteki düzenlemelerden korur. Bu araçla süreç anında ve tamamen özel olarak gerçekleşir, kurumsal veya kişisel görüntüleriniz cihazınızdan hiçbir zaman çıkmaz.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: JpgAPngLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'tr', faq, howTo }),
178
+ };