@jjlmoya/utils-converters 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/package.json +60 -59
  2. package/src/shared/logic/schemas.ts +57 -0
  3. package/src/tests/faq_count.test.ts +13 -4
  4. package/src/tests/i18n_coverage.test.ts +36 -0
  5. package/src/tests/locale_completeness.test.ts +42 -0
  6. package/src/tests/no_h1_in_components.test.ts +48 -0
  7. package/src/tests/schemas_fulfillment.test.ts +23 -0
  8. package/src/tests/seo_length.test.ts +1 -1
  9. package/src/tests/title_quality.test.ts +55 -0
  10. package/src/tool/avifAJpg/i18n/de.ts +178 -0
  11. package/src/tool/avifAJpg/i18n/en.ts +2 -12
  12. package/src/tool/avifAJpg/i18n/es.ts +2 -12
  13. package/src/tool/avifAJpg/i18n/fr.ts +2 -12
  14. package/src/tool/avifAJpg/i18n/id.ts +178 -0
  15. package/src/tool/avifAJpg/i18n/it.ts +178 -0
  16. package/src/tool/avifAJpg/i18n/ja.ts +178 -0
  17. package/src/tool/avifAJpg/i18n/ko.ts +178 -0
  18. package/src/tool/avifAJpg/i18n/nl.ts +178 -0
  19. package/src/tool/avifAJpg/i18n/pl.ts +178 -0
  20. package/src/tool/avifAJpg/i18n/pt.ts +178 -0
  21. package/src/tool/avifAJpg/i18n/ru.ts +178 -0
  22. package/src/tool/avifAJpg/i18n/sv.ts +178 -0
  23. package/src/tool/avifAJpg/i18n/tr.ts +178 -0
  24. package/src/tool/avifAJpg/i18n/zh.ts +178 -0
  25. package/src/tool/avifAJpg/index.ts +13 -1
  26. package/src/tool/avifAPng/i18n/de.ts +178 -0
  27. package/src/tool/avifAPng/i18n/en.ts +2 -12
  28. package/src/tool/avifAPng/i18n/es.ts +2 -12
  29. package/src/tool/avifAPng/i18n/fr.ts +2 -12
  30. package/src/tool/avifAPng/i18n/id.ts +178 -0
  31. package/src/tool/avifAPng/i18n/it.ts +178 -0
  32. package/src/tool/avifAPng/i18n/ja.ts +178 -0
  33. package/src/tool/avifAPng/i18n/ko.ts +178 -0
  34. package/src/tool/avifAPng/i18n/nl.ts +178 -0
  35. package/src/tool/avifAPng/i18n/pl.ts +178 -0
  36. package/src/tool/avifAPng/i18n/pt.ts +178 -0
  37. package/src/tool/avifAPng/i18n/ru.ts +178 -0
  38. package/src/tool/avifAPng/i18n/sv.ts +178 -0
  39. package/src/tool/avifAPng/i18n/tr.ts +178 -0
  40. package/src/tool/avifAPng/i18n/zh.ts +178 -0
  41. package/src/tool/avifAPng/index.ts +13 -1
  42. package/src/tool/avifAWebp/i18n/de.ts +178 -0
  43. package/src/tool/avifAWebp/i18n/en.ts +2 -12
  44. package/src/tool/avifAWebp/i18n/es.ts +2 -12
  45. package/src/tool/avifAWebp/i18n/fr.ts +2 -12
  46. package/src/tool/avifAWebp/i18n/id.ts +178 -0
  47. package/src/tool/avifAWebp/i18n/it.ts +178 -0
  48. package/src/tool/avifAWebp/i18n/ja.ts +178 -0
  49. package/src/tool/avifAWebp/i18n/ko.ts +178 -0
  50. package/src/tool/avifAWebp/i18n/nl.ts +178 -0
  51. package/src/tool/avifAWebp/i18n/pl.ts +178 -0
  52. package/src/tool/avifAWebp/i18n/pt.ts +178 -0
  53. package/src/tool/avifAWebp/i18n/ru.ts +178 -0
  54. package/src/tool/avifAWebp/i18n/sv.ts +178 -0
  55. package/src/tool/avifAWebp/i18n/tr.ts +178 -0
  56. package/src/tool/avifAWebp/i18n/zh.ts +178 -0
  57. package/src/tool/avifAWebp/index.ts +13 -1
  58. package/src/tool/bmpAJpg/i18n/de.ts +178 -0
  59. package/src/tool/bmpAJpg/i18n/en.ts +2 -12
  60. package/src/tool/bmpAJpg/i18n/es.ts +2 -12
  61. package/src/tool/bmpAJpg/i18n/fr.ts +2 -12
  62. package/src/tool/bmpAJpg/i18n/id.ts +178 -0
  63. package/src/tool/bmpAJpg/i18n/it.ts +178 -0
  64. package/src/tool/bmpAJpg/i18n/ja.ts +178 -0
  65. package/src/tool/bmpAJpg/i18n/ko.ts +178 -0
  66. package/src/tool/bmpAJpg/i18n/nl.ts +178 -0
  67. package/src/tool/bmpAJpg/i18n/pl.ts +178 -0
  68. package/src/tool/bmpAJpg/i18n/pt.ts +178 -0
  69. package/src/tool/bmpAJpg/i18n/ru.ts +178 -0
  70. package/src/tool/bmpAJpg/i18n/sv.ts +178 -0
  71. package/src/tool/bmpAJpg/i18n/tr.ts +178 -0
  72. package/src/tool/bmpAJpg/i18n/zh.ts +178 -0
  73. package/src/tool/bmpAJpg/index.ts +13 -1
  74. package/src/tool/bmpAPng/i18n/de.ts +177 -0
  75. package/src/tool/bmpAPng/i18n/en.ts +2 -12
  76. package/src/tool/bmpAPng/i18n/es.ts +2 -12
  77. package/src/tool/bmpAPng/i18n/fr.ts +2 -12
  78. package/src/tool/bmpAPng/i18n/id.ts +177 -0
  79. package/src/tool/bmpAPng/i18n/it.ts +177 -0
  80. package/src/tool/bmpAPng/i18n/ja.ts +177 -0
  81. package/src/tool/bmpAPng/i18n/ko.ts +177 -0
  82. package/src/tool/bmpAPng/i18n/nl.ts +177 -0
  83. package/src/tool/bmpAPng/i18n/pl.ts +177 -0
  84. package/src/tool/bmpAPng/i18n/pt.ts +177 -0
  85. package/src/tool/bmpAPng/i18n/ru.ts +177 -0
  86. package/src/tool/bmpAPng/i18n/sv.ts +177 -0
  87. package/src/tool/bmpAPng/i18n/tr.ts +177 -0
  88. package/src/tool/bmpAPng/i18n/zh.ts +177 -0
  89. package/src/tool/bmpAPng/index.ts +13 -1
  90. package/src/tool/bmpAWebp/i18n/de.ts +178 -0
  91. package/src/tool/bmpAWebp/i18n/en.ts +2 -12
  92. package/src/tool/bmpAWebp/i18n/es.ts +2 -12
  93. package/src/tool/bmpAWebp/i18n/fr.ts +2 -12
  94. package/src/tool/bmpAWebp/i18n/id.ts +178 -0
  95. package/src/tool/bmpAWebp/i18n/it.ts +178 -0
  96. package/src/tool/bmpAWebp/i18n/ja.ts +178 -0
  97. package/src/tool/bmpAWebp/i18n/ko.ts +178 -0
  98. package/src/tool/bmpAWebp/i18n/nl.ts +178 -0
  99. package/src/tool/bmpAWebp/i18n/pl.ts +178 -0
  100. package/src/tool/bmpAWebp/i18n/pt.ts +178 -0
  101. package/src/tool/bmpAWebp/i18n/ru.ts +178 -0
  102. package/src/tool/bmpAWebp/i18n/sv.ts +178 -0
  103. package/src/tool/bmpAWebp/i18n/tr.ts +178 -0
  104. package/src/tool/bmpAWebp/i18n/zh.ts +178 -0
  105. package/src/tool/bmpAWebp/index.ts +13 -1
  106. package/src/tool/gifAJpg/i18n/de.ts +178 -0
  107. package/src/tool/gifAJpg/i18n/en.ts +2 -12
  108. package/src/tool/gifAJpg/i18n/es.ts +2 -12
  109. package/src/tool/gifAJpg/i18n/fr.ts +2 -12
  110. package/src/tool/gifAJpg/i18n/id.ts +178 -0
  111. package/src/tool/gifAJpg/i18n/it.ts +178 -0
  112. package/src/tool/gifAJpg/i18n/ja.ts +178 -0
  113. package/src/tool/gifAJpg/i18n/ko.ts +178 -0
  114. package/src/tool/gifAJpg/i18n/nl.ts +178 -0
  115. package/src/tool/gifAJpg/i18n/pl.ts +178 -0
  116. package/src/tool/gifAJpg/i18n/pt.ts +178 -0
  117. package/src/tool/gifAJpg/i18n/ru.ts +178 -0
  118. package/src/tool/gifAJpg/i18n/sv.ts +178 -0
  119. package/src/tool/gifAJpg/i18n/tr.ts +178 -0
  120. package/src/tool/gifAJpg/i18n/zh.ts +178 -0
  121. package/src/tool/gifAJpg/index.ts +13 -1
  122. package/src/tool/gifAPng/i18n/de.ts +178 -0
  123. package/src/tool/gifAPng/i18n/en.ts +2 -12
  124. package/src/tool/gifAPng/i18n/es.ts +2 -12
  125. package/src/tool/gifAPng/i18n/fr.ts +2 -12
  126. package/src/tool/gifAPng/i18n/id.ts +178 -0
  127. package/src/tool/gifAPng/i18n/it.ts +178 -0
  128. package/src/tool/gifAPng/i18n/ja.ts +178 -0
  129. package/src/tool/gifAPng/i18n/ko.ts +178 -0
  130. package/src/tool/gifAPng/i18n/nl.ts +178 -0
  131. package/src/tool/gifAPng/i18n/pl.ts +178 -0
  132. package/src/tool/gifAPng/i18n/pt.ts +178 -0
  133. package/src/tool/gifAPng/i18n/ru.ts +178 -0
  134. package/src/tool/gifAPng/i18n/sv.ts +178 -0
  135. package/src/tool/gifAPng/i18n/tr.ts +178 -0
  136. package/src/tool/gifAPng/i18n/zh.ts +178 -0
  137. package/src/tool/gifAPng/index.ts +12 -0
  138. package/src/tool/gifAWebp/i18n/de.ts +178 -0
  139. package/src/tool/gifAWebp/i18n/en.ts +2 -12
  140. package/src/tool/gifAWebp/i18n/es.ts +2 -12
  141. package/src/tool/gifAWebp/i18n/fr.ts +2 -12
  142. package/src/tool/gifAWebp/i18n/id.ts +178 -0
  143. package/src/tool/gifAWebp/i18n/it.ts +178 -0
  144. package/src/tool/gifAWebp/i18n/ja.ts +178 -0
  145. package/src/tool/gifAWebp/i18n/ko.ts +178 -0
  146. package/src/tool/gifAWebp/i18n/nl.ts +178 -0
  147. package/src/tool/gifAWebp/i18n/pl.ts +178 -0
  148. package/src/tool/gifAWebp/i18n/pt.ts +178 -0
  149. package/src/tool/gifAWebp/i18n/ru.ts +178 -0
  150. package/src/tool/gifAWebp/i18n/sv.ts +178 -0
  151. package/src/tool/gifAWebp/i18n/tr.ts +178 -0
  152. package/src/tool/gifAWebp/i18n/zh.ts +178 -0
  153. package/src/tool/gifAWebp/index.ts +12 -0
  154. package/src/tool/imagenBase64/i18n/de.ts +168 -0
  155. package/src/tool/imagenBase64/i18n/en.ts +2 -12
  156. package/src/tool/imagenBase64/i18n/es.ts +2 -12
  157. package/src/tool/imagenBase64/i18n/fr.ts +2 -12
  158. package/src/tool/imagenBase64/i18n/id.ts +168 -0
  159. package/src/tool/imagenBase64/i18n/it.ts +168 -0
  160. package/src/tool/imagenBase64/i18n/ja.ts +168 -0
  161. package/src/tool/imagenBase64/i18n/ko.ts +168 -0
  162. package/src/tool/imagenBase64/i18n/nl.ts +168 -0
  163. package/src/tool/imagenBase64/i18n/pl.ts +168 -0
  164. package/src/tool/imagenBase64/i18n/pt.ts +173 -0
  165. package/src/tool/imagenBase64/i18n/ru.ts +168 -0
  166. package/src/tool/imagenBase64/i18n/sv.ts +168 -0
  167. package/src/tool/imagenBase64/i18n/tr.ts +168 -0
  168. package/src/tool/imagenBase64/i18n/zh.ts +168 -0
  169. package/src/tool/imagenBase64/index.ts +12 -0
  170. package/src/tool/jpgAIco/i18n/de.ts +183 -0
  171. package/src/tool/jpgAIco/i18n/en.ts +8 -13
  172. package/src/tool/jpgAIco/i18n/es.ts +13 -18
  173. package/src/tool/jpgAIco/i18n/fr.ts +9 -14
  174. package/src/tool/jpgAIco/i18n/id.ts +183 -0
  175. package/src/tool/jpgAIco/i18n/it.ts +183 -0
  176. package/src/tool/jpgAIco/i18n/ja.ts +183 -0
  177. package/src/tool/jpgAIco/i18n/ko.ts +183 -0
  178. package/src/tool/jpgAIco/i18n/nl.ts +183 -0
  179. package/src/tool/jpgAIco/i18n/pl.ts +183 -0
  180. package/src/tool/jpgAIco/i18n/pt.ts +183 -0
  181. package/src/tool/jpgAIco/i18n/ru.ts +183 -0
  182. package/src/tool/jpgAIco/i18n/sv.ts +183 -0
  183. package/src/tool/jpgAIco/i18n/tr.ts +183 -0
  184. package/src/tool/jpgAIco/i18n/zh.ts +183 -0
  185. package/src/tool/jpgAIco/index.ts +12 -0
  186. package/src/tool/jpgAPng/i18n/de.ts +178 -0
  187. package/src/tool/jpgAPng/i18n/en.ts +2 -12
  188. package/src/tool/jpgAPng/i18n/es.ts +2 -12
  189. package/src/tool/jpgAPng/i18n/fr.ts +2 -12
  190. package/src/tool/jpgAPng/i18n/id.ts +178 -0
  191. package/src/tool/jpgAPng/i18n/it.ts +178 -0
  192. package/src/tool/jpgAPng/i18n/ja.ts +178 -0
  193. package/src/tool/jpgAPng/i18n/ko.ts +178 -0
  194. package/src/tool/jpgAPng/i18n/nl.ts +178 -0
  195. package/src/tool/jpgAPng/i18n/pl.ts +178 -0
  196. package/src/tool/jpgAPng/i18n/pt.ts +178 -0
  197. package/src/tool/jpgAPng/i18n/ru.ts +178 -0
  198. package/src/tool/jpgAPng/i18n/sv.ts +178 -0
  199. package/src/tool/jpgAPng/i18n/tr.ts +178 -0
  200. package/src/tool/jpgAPng/i18n/zh.ts +178 -0
  201. package/src/tool/jpgAPng/index.ts +13 -1
  202. package/src/tool/jpgAWebp/i18n/de.ts +178 -0
  203. package/src/tool/jpgAWebp/i18n/en.ts +2 -12
  204. package/src/tool/jpgAWebp/i18n/es.ts +2 -12
  205. package/src/tool/jpgAWebp/i18n/fr.ts +2 -12
  206. package/src/tool/jpgAWebp/i18n/id.ts +178 -0
  207. package/src/tool/jpgAWebp/i18n/it.ts +178 -0
  208. package/src/tool/jpgAWebp/i18n/ja.ts +178 -0
  209. package/src/tool/jpgAWebp/i18n/ko.ts +178 -0
  210. package/src/tool/jpgAWebp/i18n/nl.ts +178 -0
  211. package/src/tool/jpgAWebp/i18n/pl.ts +178 -0
  212. package/src/tool/jpgAWebp/i18n/pt.ts +178 -0
  213. package/src/tool/jpgAWebp/i18n/ru.ts +178 -0
  214. package/src/tool/jpgAWebp/i18n/sv.ts +178 -0
  215. package/src/tool/jpgAWebp/i18n/tr.ts +178 -0
  216. package/src/tool/jpgAWebp/i18n/zh.ts +178 -0
  217. package/src/tool/jpgAWebp/index.ts +12 -0
  218. package/src/tool/pngAIco/i18n/de.ts +183 -0
  219. package/src/tool/pngAIco/i18n/en.ts +8 -13
  220. package/src/tool/pngAIco/i18n/es.ts +19 -24
  221. package/src/tool/pngAIco/i18n/fr.ts +20 -25
  222. package/src/tool/pngAIco/i18n/id.ts +183 -0
  223. package/src/tool/pngAIco/i18n/it.ts +183 -0
  224. package/src/tool/pngAIco/i18n/ja.ts +183 -0
  225. package/src/tool/pngAIco/i18n/ko.ts +183 -0
  226. package/src/tool/pngAIco/i18n/nl.ts +183 -0
  227. package/src/tool/pngAIco/i18n/pl.ts +183 -0
  228. package/src/tool/pngAIco/i18n/pt.ts +183 -0
  229. package/src/tool/pngAIco/i18n/ru.ts +183 -0
  230. package/src/tool/pngAIco/i18n/sv.ts +183 -0
  231. package/src/tool/pngAIco/i18n/tr.ts +183 -0
  232. package/src/tool/pngAIco/i18n/zh.ts +183 -0
  233. package/src/tool/pngAIco/index.ts +12 -0
  234. package/src/tool/pngAJpg/i18n/de.ts +191 -0
  235. package/src/tool/pngAJpg/i18n/en.ts +2 -12
  236. package/src/tool/pngAJpg/i18n/es.ts +2 -12
  237. package/src/tool/pngAJpg/i18n/fr.ts +2 -12
  238. package/src/tool/pngAJpg/i18n/id.ts +191 -0
  239. package/src/tool/pngAJpg/i18n/it.ts +191 -0
  240. package/src/tool/pngAJpg/i18n/ja.ts +191 -0
  241. package/src/tool/pngAJpg/i18n/ko.ts +191 -0
  242. package/src/tool/pngAJpg/i18n/nl.ts +191 -0
  243. package/src/tool/pngAJpg/i18n/pl.ts +191 -0
  244. package/src/tool/pngAJpg/i18n/pt.ts +191 -0
  245. package/src/tool/pngAJpg/i18n/ru.ts +191 -0
  246. package/src/tool/pngAJpg/i18n/sv.ts +191 -0
  247. package/src/tool/pngAJpg/i18n/tr.ts +191 -0
  248. package/src/tool/pngAJpg/i18n/zh.ts +191 -0
  249. package/src/tool/pngAJpg/index.ts +13 -1
  250. package/src/tool/pngAWebp/i18n/de.ts +182 -0
  251. package/src/tool/pngAWebp/i18n/en.ts +2 -12
  252. package/src/tool/pngAWebp/i18n/es.ts +2 -12
  253. package/src/tool/pngAWebp/i18n/fr.ts +2 -12
  254. package/src/tool/pngAWebp/i18n/id.ts +182 -0
  255. package/src/tool/pngAWebp/i18n/it.ts +182 -0
  256. package/src/tool/pngAWebp/i18n/ja.ts +182 -0
  257. package/src/tool/pngAWebp/i18n/ko.ts +182 -0
  258. package/src/tool/pngAWebp/i18n/nl.ts +182 -0
  259. package/src/tool/pngAWebp/i18n/pl.ts +182 -0
  260. package/src/tool/pngAWebp/i18n/pt.ts +182 -0
  261. package/src/tool/pngAWebp/i18n/ru.ts +182 -0
  262. package/src/tool/pngAWebp/i18n/sv.ts +182 -0
  263. package/src/tool/pngAWebp/i18n/tr.ts +182 -0
  264. package/src/tool/pngAWebp/i18n/zh.ts +182 -0
  265. package/src/tool/pngAWebp/index.ts +12 -0
  266. package/src/tool/svgAJpg/i18n/de.ts +178 -0
  267. package/src/tool/svgAJpg/i18n/en.ts +8 -13
  268. package/src/tool/svgAJpg/i18n/es.ts +8 -13
  269. package/src/tool/svgAJpg/i18n/fr.ts +2 -12
  270. package/src/tool/svgAJpg/i18n/id.ts +178 -0
  271. package/src/tool/svgAJpg/i18n/it.ts +178 -0
  272. package/src/tool/svgAJpg/i18n/ja.ts +178 -0
  273. package/src/tool/svgAJpg/i18n/ko.ts +178 -0
  274. package/src/tool/svgAJpg/i18n/nl.ts +178 -0
  275. package/src/tool/svgAJpg/i18n/pl.ts +178 -0
  276. package/src/tool/svgAJpg/i18n/pt.ts +178 -0
  277. package/src/tool/svgAJpg/i18n/ru.ts +178 -0
  278. package/src/tool/svgAJpg/i18n/sv.ts +178 -0
  279. package/src/tool/svgAJpg/i18n/tr.ts +178 -0
  280. package/src/tool/svgAJpg/i18n/zh.ts +178 -0
  281. package/src/tool/svgAJpg/index.ts +12 -0
  282. package/src/tool/svgAPng/i18n/de.ts +178 -0
  283. package/src/tool/svgAPng/i18n/en.ts +8 -13
  284. package/src/tool/svgAPng/i18n/es.ts +31 -36
  285. package/src/tool/svgAPng/i18n/fr.ts +2 -12
  286. package/src/tool/svgAPng/i18n/id.ts +178 -0
  287. package/src/tool/svgAPng/i18n/it.ts +178 -0
  288. package/src/tool/svgAPng/i18n/ja.ts +178 -0
  289. package/src/tool/svgAPng/i18n/ko.ts +178 -0
  290. package/src/tool/svgAPng/i18n/nl.ts +178 -0
  291. package/src/tool/svgAPng/i18n/pl.ts +178 -0
  292. package/src/tool/svgAPng/i18n/pt.ts +178 -0
  293. package/src/tool/svgAPng/i18n/ru.ts +178 -0
  294. package/src/tool/svgAPng/i18n/sv.ts +178 -0
  295. package/src/tool/svgAPng/i18n/tr.ts +178 -0
  296. package/src/tool/svgAPng/i18n/zh.ts +178 -0
  297. package/src/tool/svgAPng/index.ts +12 -0
  298. package/src/tool/webpAIco/i18n/de.ts +183 -0
  299. package/src/tool/webpAIco/i18n/en.ts +8 -13
  300. package/src/tool/webpAIco/i18n/es.ts +9 -14
  301. package/src/tool/webpAIco/i18n/fr.ts +11 -16
  302. package/src/tool/webpAIco/i18n/id.ts +183 -0
  303. package/src/tool/webpAIco/i18n/it.ts +183 -0
  304. package/src/tool/webpAIco/i18n/ja.ts +183 -0
  305. package/src/tool/webpAIco/i18n/ko.ts +183 -0
  306. package/src/tool/webpAIco/i18n/nl.ts +183 -0
  307. package/src/tool/webpAIco/i18n/pl.ts +183 -0
  308. package/src/tool/webpAIco/i18n/pt.ts +183 -0
  309. package/src/tool/webpAIco/i18n/ru.ts +183 -0
  310. package/src/tool/webpAIco/i18n/sv.ts +183 -0
  311. package/src/tool/webpAIco/i18n/tr.ts +183 -0
  312. package/src/tool/webpAIco/i18n/zh.ts +183 -0
  313. package/src/tool/webpAIco/index.ts +12 -0
  314. package/src/tool/webpAJpg/i18n/de.ts +187 -0
  315. package/src/tool/webpAJpg/i18n/en.ts +9 -13
  316. package/src/tool/webpAJpg/i18n/es.ts +37 -42
  317. package/src/tool/webpAJpg/i18n/fr.ts +35 -40
  318. package/src/tool/webpAJpg/i18n/id.ts +182 -0
  319. package/src/tool/webpAJpg/i18n/it.ts +182 -0
  320. package/src/tool/webpAJpg/i18n/ja.ts +182 -0
  321. package/src/tool/webpAJpg/i18n/ko.ts +182 -0
  322. package/src/tool/webpAJpg/i18n/nl.ts +182 -0
  323. package/src/tool/webpAJpg/i18n/pl.ts +182 -0
  324. package/src/tool/webpAJpg/i18n/pt.ts +182 -0
  325. package/src/tool/webpAJpg/i18n/ru.ts +182 -0
  326. package/src/tool/webpAJpg/i18n/sv.ts +182 -0
  327. package/src/tool/webpAJpg/i18n/tr.ts +182 -0
  328. package/src/tool/webpAJpg/i18n/zh.ts +182 -0
  329. package/src/tool/webpAJpg/index.ts +12 -0
  330. package/src/tool/webpAPng/i18n/de.ts +182 -0
  331. package/src/tool/webpAPng/i18n/en.ts +8 -13
  332. package/src/tool/webpAPng/i18n/es.ts +35 -40
  333. package/src/tool/webpAPng/i18n/fr.ts +2 -12
  334. package/src/tool/webpAPng/i18n/id.ts +182 -0
  335. package/src/tool/webpAPng/i18n/it.ts +182 -0
  336. package/src/tool/webpAPng/i18n/ja.ts +182 -0
  337. package/src/tool/webpAPng/i18n/ko.ts +182 -0
  338. package/src/tool/webpAPng/i18n/nl.ts +182 -0
  339. package/src/tool/webpAPng/i18n/pl.ts +182 -0
  340. package/src/tool/webpAPng/i18n/pt.ts +182 -0
  341. package/src/tool/webpAPng/i18n/ru.ts +182 -0
  342. package/src/tool/webpAPng/i18n/sv.ts +182 -0
  343. package/src/tool/webpAPng/i18n/tr.ts +182 -0
  344. package/src/tool/webpAPng/i18n/zh.ts +182 -0
  345. package/src/tool/webpAPng/index.ts +12 -0
@@ -0,0 +1,191 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAJpgLocaleContent } from '../index';
4
+
5
+ const slug = 'png-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-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のみを使用する「ブラックボックス」として動作するため、処理内容はタブを閉じると同時に消去され、サードパーティのクラウドへの流出を防ぎます。',
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-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)は、人間の目にはほとんど認識できない情報を削除する離散化アルゴリズムを使用しており、極めて軽量なファイルサイズを実現します。写真、広告バナー、SNSにとってのゴールドスタンダードです。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
+ 'ファイルあたりの容量制限なし',
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: 'ja', 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-to-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 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
+ };