@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,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { JpgAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'jpg-den-webp-ye-donusturucu';
6
+ const title = 'JPG\'yi WebP\'ye Çevrimiçi ve Ücretsiz Dönüştürün';
7
+ const description =
8
+ 'JPG görüntülerini tarayıcınızda WebP\'ye dönüştürün. Görünür kayıp olmadan üstün sıkıştırma. Dosya yüklemesi yok. Ücretsiz, sınırsız ve özel.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'JPG dosyalarını sürükleyin...',
12
+ convertText: 'Onları anında WebP\'ye dönüştürmek için',
13
+ selectFiles: 'Dosyaları seçin',
14
+ processedFiles: 'İşlenmiş 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: JpgAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: 'JPG fotoğraflarını neden WebP\'ye dönüştürmeliyiz?',
24
+ answer:
25
+ 'WebP, geleneksel JPG dosyalarının insan gözü farkı fark etmeden önemli ölçüde daha iyi sıkıştırılmasını sağlar, bu da daha hızlı ve daha modern web siteleriyle sonuçlanır.',
26
+ },
27
+ {
28
+ question: 'Görüntü başına ödeme yapmam gerekiyor mu?',
29
+ answer:
30
+ 'Hayır, araç ücretsizdir ve her şey doğrudan bilgisayarınızda işlenir. Ev veya profesyonel kullanım için sınırsızdır.',
31
+ },
32
+ {
33
+ question: 'Dönüştürme güvenli mi?',
34
+ answer:
35
+ 'Evet, tamamen. Tüm işlemler, harici sunuculara herhangi bir veri gönderilmeden yerel tarayıcınızın HTML5 Canvas\'ında gerçekleşir.',
36
+ },
37
+ ];
38
+
39
+ const howTo: JpgAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: 'JPG fotoğraflarınızı ekleyin',
42
+ text: 'JPG dosyalarınızı bırakın veya doğrudan üst alana sürükleyin. Algılama anlıktır.',
43
+ },
44
+ {
45
+ name: 'WebP\'ye İşleme',
46
+ text: 'Yerel oluşturma motoru, her görüntü dosyasını web için hazır, ultra optimize edilmiş bir WebP\'ye dönüştürecektir.',
47
+ },
48
+ {
49
+ name: 'Sonuçları indirin',
50
+ text: 'Her WebP\'yi ayrı ayrı kaydedin veya tüm dönüştürülmüş dosyaları içeren ZIP dosyasını indirin.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: JpgAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Google WebP Sıkıştırma Çalışması',
57
+ url: 'https://developers.google.com/speed/webp/docs/webp_study',
58
+ },
59
+ {
60
+ name: 'Web.dev: Görüntüleri modern formatlarda sunun',
61
+ url: 'https://web.dev/uses-webp-images/',
62
+ },
63
+ ];
64
+
65
+ const seo: JpgAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'JPG\'den WebP\'ye Dönüştürücü: Google\'ın Modern Formatıyla Sitenizi Hızlandırın',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>JPG</strong> formatı onlarca yıldır dijital fotoğrafçılığa hakim oldu; evrensel olarak uyumlu ve yaygın olarak destekleniyor. Ancak Google, <strong>WebP</strong>\'yi JPG\'yi kendi oyununda yenmek için tasarladı: %25–35 daha az dosya boyutunda aynı görsel kalite. Yavaş sayfa yüklemeleriyle mücadele eden geliştiriciler ve pazarlama ekipleri için JPG\'yi WebP\'ye dönüştürmek, tasarımınıza dokunmadan uygulayabileceğiniz en yüksek getirili optimizasyondur.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'JPG mi WebP mi? Her format ne zaman kullanılır',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: '<strong>JPG</strong>, evrensel uyumluluğa ihtiyacınız olduğunda doğru seçim olmaya devam eder: müşteri e-postaları, Word belgeleri, eski sosyal medya platformları veya henüz WebP\'yi kabul etmeyen CMS sistemleri. Otuz yıllık ekosistemi, herhangi bir ekranın, yazıcının veya görüntüleyicinin onu sorunsuz bir şekilde açacağını garanti eder. Ana dezavantajı boyuttur; 1,5 MB\'lık bir başlık JPG\'si sayfanızın LCP puanını düşürebilir ve Core Web Vitals eşiklerini geçemeyebilir.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '<strong>WebP</strong>, web sitenizde yaşayan tüm içerikler için akıllıca bir seçimdir. Chrome, Firefox, Safari ve Edge yıllardır bunu yerel olarak desteklemektedir. E-ticaretteki ürün görselleri, blog banner\'ları, video küçük resimleri ve çevrimiçi yayınlanan her fotoğraf doğrudan fayda sağlar: daha hafif sayfalar, daha iyi Google PageSpeed Insights puanları ve özellikle yavaş mobil bağlantılarda daha akıcı bir kullanıcı deneyimi.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Karşılaştırma: Yerel ve Bulut Dönüştürme',
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
+ 'Fotoğraflarınız üçüncü taraf sunucularda saklanır',
104
+ 'Dosya boyutu sınırları ve günlük dönüştürme kotaları',
105
+ 'Rahatsız edici reklamlar ve üçüncü taraf izleyiciler',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Yerel Mimarimiz',
110
+ description: 'Vanilla JS teknolojisini kullanarak 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 — harici olarak gönderilen 0 bayt',
116
+ 'MB sınırı veya dosya sayısı kısıtlaması yok',
117
+ 'Temiz arayüz, reklam veya izleme yok',
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: 'Bir JPG\'yi araca sürüklediğinizde, tarayıcı yalnızca RAM\'inizde yaşayan bir <strong>Blob nesnesi</strong> oluşturur. Bu Blob kodu çözülür ve görünmez bir <strong>HTML5 Canvas</strong> öğesine çizilir. JPG\'de alfa kanalı bulunmadığından, WebP\'ye dönüştürme doğrudan gerçekleşir: motor, <code>toDataURL(\'image/webp\')</code> çağrısı yaparak tuvali dışa aktarır ve işletim sisteminizin anında indirdiği bir bayt akışı oluşturur; sunucu dahil olmaz.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'WebP sıkıştırma algoritması, blok tahmin tekniklerini (Google\'ın video kodeği olan VP8\'dekine benzer), renk dönüşümleri ve aritmetik kodlama ile birleştirir. Sonuç, orijinal JPG ile aynı algısal bilgiyi içeren ancak çok daha verimli paketlenmiş bir dosyadır; bu da her sayfa ziyaretinde daha az kilobayt aktarılması anlamına gelir.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Core Web Vitals İpucu: LCP ve görüntü ağırlığı',
138
+ html: '<strong>Largest Contentful Paint (LCP)</strong>, sayfanızdaki en büyük görsel öğenin yüklenmesinin ne kadar sürdüğünü ölçen Google metriğidir. 1,5 MB\'lık bir başlık JPG\'si, gözle görülür bir görsel fark olmadan sadece 900 KB — hatta 600 KB — bir WebP haline gelebilir. Bu <strong>%25–35 tasarruf</strong>, LCP\'nizi "İyileştirme Gerekiyor" durumundan "İyi" durumuna taşıyabilir ve sizi arama sıralamalarında yukarı taşıyabilir.',
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
+ 'WooCommerce veya Shopify mağazalarındaki ürün görselleri: daha az ağırlık, daha fazla dönüşüm.',
150
+ 'Blog ve makale fotoğrafçılığı: yeniden tasarlamaya gerek kalmadan daha iyi PageSpeed puanı.',
151
+ 'Web banner\'ları ve görüntülü reklam kreatifleri: aynı keskinlikte daha hafif dosyalar.',
152
+ 'Mimarlık, fotoğrafçılık veya tasarım stüdyoları için portföy galerileri.',
153
+ 'Streaming sitelerinde veya çevrimiçi kurs platformlarında video küçük resimleri.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Sonuç',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'JPG\'lerinizi WebP\'ye dönüştürmek, bugün herhangi bir web sitesine uygulayabileceğiniz en basit ve en uygun maliyetli optimizasyonlardan biridir. Bu araçla bunu saniyeler içinde, ücretsiz olarak ve görüntüleriniz cihazınızdan hiç ayrılmadan yaparsınız. Daha az kilobayt, daha iyi LCP, daha hızlı sayfalar; hepsi zaten sahip olduğunuz görsel görünümün aynısıyla.',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: JpgAWebpLocaleContent = {
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
+ };
@@ -0,0 +1,178 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { JpgAWebpLocaleContent } from '../index';
4
+
5
+ const slug = 'jpg-to-webp-converter';
6
+ const title = '在线免费将 JPG 转换为 WebP';
7
+ const description =
8
+ '在浏览器中将 JPG 图像转换为 WebP。卓越的压缩率,无明显画质损失。无需上传文件。免费、无限制且私密。';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: '拖拽 JPG 文件...',
12
+ convertText: '立即将它们转换为 WebP',
13
+ selectFiles: '选择文件',
14
+ processedFiles: '已处理文件',
15
+ downloadAll: '下载全部 (.zip)',
16
+ pending: '等待中',
17
+ bibliographyTitle: '参考文献',
18
+ faqTitle: '常见问题',
19
+ };
20
+
21
+ const faq: JpgAWebpLocaleContent['faq'] = [
22
+ {
23
+ question: '为什么要将 JPG 照片转换为 WebP?',
24
+ answer:
25
+ 'WebP 可以在肉眼无法察觉差异的情况下, 实现比传统 JPG 文件更好的压缩效果, 从而使网站加载更快、更现代。',
26
+ },
27
+ {
28
+ question: '我需要按图片付费吗?',
29
+ answer:
30
+ '不需要, 该工具是免费的, 所有操作都在您的电脑上直接完成。无论是家庭还是专业用途, 都没有限制。',
31
+ },
32
+ {
33
+ question: '转换过程安全吗?',
34
+ answer:
35
+ '是的, 完全安全。所有处理都在您本地浏览器的 HTML5 Canvas 中完成, 不会向外部服务器发送任何数据。',
36
+ },
37
+ ];
38
+
39
+ const howTo: JpgAWebpLocaleContent['howTo'] = [
40
+ {
41
+ name: '拖入您的 JPG 照片',
42
+ text: '将您的 JPG 文件直接拖放到上方区域。检测是即时的。',
43
+ },
44
+ {
45
+ name: '处理为 WebP',
46
+ text: '本地渲染引擎会将每个图像文件转换为专门为网页优化的高质量 WebP 格式。',
47
+ },
48
+ {
49
+ name: '下载结果',
50
+ text: '您可以单独保存每个 WebP 文件, 也可以下载包含所有已转换文件的 ZIP 压缩包。',
51
+ },
52
+ ];
53
+
54
+ const bibliography: JpgAWebpLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Google WebP 压缩研究',
57
+ url: 'https://developers.google.com/speed/webp/docs/webp_study',
58
+ },
59
+ {
60
+ name: 'Web.dev: 使用现代格式提供图像',
61
+ url: 'https://web.dev/uses-webp-images/',
62
+ },
63
+ ];
64
+
65
+ const seo: JpgAWebpLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'JPG 转 WebP 转换器: 使用 Google 的现代格式加速您的网站',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>JPG</strong> 格式在数字摄影领域占据统治地位已有数十年——兼容性极佳且获得广泛支持。但 Google 设计了 <strong>WebP</strong> 格式来在相同画质下挑战 JPG: 在相同视觉质量的前提下, 文件大小可减少 25–35%。对于致力于解决网页加载缓慢问题的开发人员和营销团队来说, 将 JPG 转换为 WebP 是在不改变设计的前提下, 投资回报率最高的一项优化措施。',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'JPG 还是 WebP?何时使用各格式',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: '当您需要极致的通用兼容性时, <strong>JPG</strong> 仍然是正确的选择: 例如发送给客户的电子邮件、Word 文档、旧版社交媒体平台或尚未接受 WebP 的 CMS 系统。它长达三十年的生态系统保证了任何屏幕、打印机或查看器都能无缝打开它。其主要缺点是体积——1.5 MB 的首屏 JPG 图片可能会降低页面的 LCP 评分, 从而无法达到 Core Web Vitals 的标准。',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '对于网站上的所有内容, <strong>WebP</strong> 都是明智之选。Chrome、Firefox、Safari 和 Edge 已经原生支持它多年。电子商务中的产品图片、博客横幅、视频缩略图以及在网上发布的任何照片都能直接获益: 网页更轻量, Google PageSpeed Insights 评分更高, 并且在移动端慢速网络下提供更顺畅的用户体验。',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: '对比: 本地转换 vs 云端转换',
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
+ '没有 MB 限制或文件数量限制',
117
+ '界面简洁, 无广告或追踪',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: '技术原理',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: '当您将 JPG 拖入工具时, 浏览器会创建一个仅存在于 RAM 中的 <strong>Blob 对象</strong>。该 Blob 会被解码并绘制到不可见的 <strong>HTML5 Canvas</strong> 元素中。由于 JPG 不含透明通道, 转换过程非常直接: 引擎通过调用 <code>toDataURL(\'image/webp\')</code> 导出画布, 生成一组由您的操作系统即时下载的字节流——整个过程完全不涉及服务器。',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'WebP 压缩算法结合了块预测技术 (类似于 Google VP8 视频编解码器中的技术) 以及色彩转换和算术编码。其结果是生成的文件包含与原始 JPG 相同的视觉感知信息, 但封装效率要高得多——这意味着每次页面访问时传输的千字节更少。',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Core Web Vitals 提示: LCP 与图像重量',
138
+ html: '<strong>最大内容绘画 (LCP)</strong> 是 Google 衡量网页上最大视觉元素加载速度的指标。一个 1.5 MB 的首屏 JPG 可以在没有视觉差异的情况下转换成仅 900 KB (甚至 600 KB) 的 WebP。这 <strong>25–35% 的空间节省</strong> 可以让您的 LCP 评分从“需要改进”变为“良好”, 并提升搜索排名。',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: '应用场景与兼容性',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'WooCommerce 或 Shopify 店铺的产品图片: 体积更小, 转化率更高。',
150
+ '博客和文章摄影: 无需重新设计即可获得更好的 PageSpeed 评分。',
151
+ '网页横幅和显示广告素材: 文件更轻量, 同时保持同样的清晰度。',
152
+ '建筑、摄影或设计工作室的排版画廊。',
153
+ '视频流媒体网站或在线课程平台上的视频缩略图。',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: '总结',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: '将您的 JPG 转换为 WebP 是当今任何网站能采用的最简单、最经济的优化措施之一。使用此工具, 您可以在几秒钟内免费完成, 且您的图像永远不会离开您的设备。更少的千字节, 更好的 LCP, 更快的网页——而这一切都建立在您已经拥有的完全相同的视觉效果之上。',
164
+ },
165
+ ];
166
+
167
+
168
+ export const content: JpgAWebpLocaleContent = {
169
+ slug,
170
+ title,
171
+ description,
172
+ ui,
173
+ seo,
174
+ faq,
175
+ bibliography,
176
+ howTo,
177
+ schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
178
+ };
@@ -16,6 +16,18 @@ export const jpgAWebp: ConvertersToolEntry<ImageConverterUI> = {
16
16
  es: () => import('./i18n/es').then((m) => m.content),
17
17
  en: () => import('./i18n/en').then((m) => m.content),
18
18
  fr: () => import('./i18n/fr').then((m) => m.content),
19
+ de: () => import('./i18n/de').then((m) => m.content),
20
+ id: () => import('./i18n/id').then((m) => m.content),
21
+ it: () => import('./i18n/it').then((m) => m.content),
22
+ ja: () => import('./i18n/ja').then((m) => m.content),
23
+ ko: () => import('./i18n/ko').then((m) => m.content),
24
+ nl: () => import('./i18n/nl').then((m) => m.content),
25
+ pl: () => import('./i18n/pl').then((m) => m.content),
26
+ pt: () => import('./i18n/pt').then((m) => m.content),
27
+ ru: () => import('./i18n/ru').then((m) => m.content),
28
+ sv: () => import('./i18n/sv').then((m) => m.content),
29
+ tr: () => import('./i18n/tr').then((m) => m.content),
30
+ zh: () => import('./i18n/zh').then((m) => m.content),
19
31
  },
20
32
  };
21
33
 
@@ -0,0 +1,183 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { PngAIcoLocaleContent } from '../index';
4
+
5
+ const slug = 'png-zu-ico-konverter';
6
+ const title = 'PNG zu ICO Konverter Online';
7
+ const description =
8
+ 'Konvertieren Sie PNG in ICO mit echten Binär-Headern. Transparenzen bleiben erhalten. Keine Dateiuploads. Kostenlos und zu 100 % privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'PNG-Dateien hierher ziehen...',
12
+ convertText: 'Um sie sofort in ICO zu konvertieren',
13
+ selectFiles: 'Dateien auswählen',
14
+ processedFiles: 'Verarbeitete Dateien',
15
+ downloadAll: 'Alles herunterladen (.zip)',
16
+ pending: 'Ausstehend',
17
+ bibliographyTitle: 'Literaturhinweise',
18
+ faqTitle: 'Häufig gestellte Fragen',
19
+ };
20
+
21
+ const faq: PngAIcoLocaleContent['faq'] = [
22
+ {
23
+ question: 'Ist Ihr Konverter ein Ersteller von getarnten PNGs oder echtem ICO?',
24
+ answer:
25
+ 'Wir erstellen ein echtes ICO. Wir extrahieren die Daten aus Ihrer PNG, erstellen den standardisierten Microsoft-Hexadezimal-Header (Header + Verzeichnis von 22 Byte), skalieren lokal auf das ideale quadratische Format und stellen eine finale Datei zusammen, die als nativ validiert ist.',
26
+ },
27
+ {
28
+ question: 'Bleiben Transparenzen erhalten, wenn mein Logo im Icon platziert wird?',
29
+ answer:
30
+ 'Absolut ja. Unsere Engine liest Ihre PNG mit 32 Bit und verankert sie, wobei alle transparenten Bereiche präzise erhalten bleiben, damit sie in der universellen Adressleiste des Browsers (Favicon) perfekt zur Geltung kommen.',
31
+ },
32
+ {
33
+ question: 'Wird mein Firmenlogo auf Ihren Servern gespeichert?',
34
+ answer:
35
+ 'Dieser Dienst garantiert null Kontakt zu externen Netzwerken. Der Konverter arbeitet verankert in Ihrem internen HTML5 Canvas; die Erstellung Ihres Icons findet zu einhundert Prozent auf Ihrem Rechner im rein lokalen Speicher statt.',
36
+ },
37
+ ];
38
+
39
+ const howTo: PngAIcoLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Dateien zum Übertragen ziehen',
42
+ text: 'Platzieren Sie Ihre Bildmatrizen (quadratische 512x512 PNGs sind ideal) im interaktiven lokalen Rahmen.',
43
+ },
44
+ {
45
+ name: 'Automatische Bytecode-Kompilierung',
46
+ text: 'Sie werden sehen, wie der Balken intern läuft, während die lokale Matrix der gereinigten ICO-Hexadezimal-Header geladen und erstellt wird.',
47
+ },
48
+ {
49
+ name: 'ZIP sammeln oder mitnehmen',
50
+ text: 'Laden Sie sie herunter, indem Sie auf eine Sammel-Zusammenstellung für Ihre Websites klicken (globale ZIP-Buttons) oder laden Sie das Vorschaubild für die ausführbare Datei in Windows herunter.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: PngAIcoLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Microsoft ICO Format Technische Struktur',
57
+ url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
58
+ },
59
+ {
60
+ name: 'Favicon Standard - W3C',
61
+ url: 'https://www.w3.org/2005/10/howto-favicon',
62
+ },
63
+ ];
64
+
65
+ const seo: PngAIcoLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'PNG zu ICO Konverter: Die beste Quelle für Favicons mit perfekter Transparenz',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: '<strong>PNG mit Transparenz</strong> ist das ideale Ausgangsmaterial für die Erstellung professioneller ICO-Icons. Im Gegensatz zu JPG (das keinen Alpha-Kanal besitzt) oder verlustbehafteten Formaten bietet PNG genau das, was das ICO-Format benötigt: gestochen scharfe Pixel, saubere Kanten und einen 32-Bit-Alpha-Kanal, mit dem sich das Icon perfekt in jeden Hintergrund integrieren lässt – egal ob in die weiße Lesezeichenleiste von Safari, die dunkle Leiste von Firefox oder den Desktop von Windows 11.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'PNG oder ICO? Wann welches Format zu verwenden ist',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: '<strong>PNG</strong> ist das Arbeitsformat: Hier entwerfen Sie Ihr Logo, exportieren aus Figma oder Illustrator und speichern Ihre bearbeitbaren Versionen. Seine Transparenz, Pixelpräzision und verlustfreie Kompression machen es unschlagbar für den Designprozess. Aber Browser, Betriebssysteme und Windows-Anwendungen, die nach einem Favicon oder App-Icon suchen, akzeptieren PNG nicht direkt – sie benötigen das ICO-Format.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: '<strong>ICO</strong> ist das Verteilungsformat für Symbole in Microsoft-Umgebungen und im Web. Es enthält eine spezifische binäre Struktur, die es ermöglicht, mehrere Auflösungen in einer einzigen Datei zu bündeln: Der Browser liest das interne Verzeichnis der ICO-Datei und wählt automatisch <strong>16×16</strong> für den Browser-Tab, <strong>32×32</strong> für Verknüpfungen, <strong>48×48</strong> für den Datei-Explorer und <strong>256×256</strong> für Retina- und 4K-Bildschirme aus. Der Ausgangspunkt einer transparenten PNG garantiert, dass all diese Auflösungen perfekte Kanten ohne weißen Rand haben.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Vergleich: Lokale vs Cloud Konvertierung',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Cloud Konverter',
98
+ description: 'Tools, die Ihre Dateien auf einen Remote-Server hochladen.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Netzwerklatenz beim Hoch- und Herunterladen',
103
+ 'Ihr Firmenlogo wird auf Servern von Drittanbietern gespeichert',
104
+ 'Dateigrößenlimits und tägliche Konvertierungsbeschränkungen',
105
+ 'Aufdringliche Werbung und Drittanbieter-Tracker',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Unsere lokale Architektur',
110
+ description: 'Direkte Verarbeitung auf Ihrer Hardware mittels Vanilla JS-Technologie.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Sofortige Geschwindigkeit – keine Netzwerklatenz',
115
+ 'Vollständige Privatsphäre – 0 Byte werden extern gesendet',
116
+ 'Keine Megabyte-Limits oder Dateianzahlbeschränkungen',
117
+ 'Saubere Benutzeroberfläche, keine Werbung oder Tracking',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Wie es technisch funktioniert',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'Die PNG wird in einem im Speicher befindlichen <strong>HTML5 Canvas</strong> mit voller 32-Bit-Alpha-Kanal-Unterstützung dekodiert. Die Engine erstellt den Standard-Microsoft-ICO-Header mit der korrekten Magic Number (<code>00 00 01 00</code>), das Bildverzeichnis mit Abmessungen und Daten-Offset sowie die Pixeldaten unter Beibehaltung der Transparenzinformationen. Das Ergebnis ist eine echte binäre .ico-Datei, die von Windows, macOS und allen Browsern nativ erkannt wird.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Die Transparenz der PNG bleibt in der resultierenden ICO-Datei vollständig erhalten – transparente Pixel bleiben transparent, halbtransparente Pixel behalten ihren exakten Alpha-Wert und opake Pixel behalten ihre ursprüngliche Farbe. Dies ist entscheidend für Logos auf variablen Hintergründen: Ihr Favicon wird im Light Mode, im Dark Mode und bei jeder Kombination von Browser-Farben korrekt aussehen.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Tipp: Verwenden Sie eine 512×512 PNG als Quelle',
138
+ html: 'Für das bestmögliche Ergebnis verwenden Sie ein <strong>quadratisches 512×512 PNG-Bild</strong> als Quelle. Diese Auflösung gibt dem Konverter genügend Informationen, um alle Standard-ICO-Größen scharf zu generieren – vom 16×16 Favicon bis zum 256×256 Icon für hochauflösende Bildschirme – ohne Pixelbildung oder Verlust von Kantendetails. Je größer die Quell-PNG, desto besser wirken die kleinen Icon-Größen.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Anwendungsfälle und Kompatibilität',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Transparentes Favicon für Websites: Funktioniert in Chrome, Firefox, Safari, Edge und Internet Explorer.',
150
+ 'Icon für PWA-Anwendungen: manifest.json verweist auf die ICO für die Desktop-Installation.',
151
+ 'Anpassung von Windows 10/11-Ordnern mit Firmenlogo ohne weißen Hintergrund.',
152
+ 'Verknüpfungssymbol für Desktop-Anwendungen, Installer und ausführbare Dateien.',
153
+ 'Symbol für Browser-Erweiterungen für Chrome und Firefox.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Fazit',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'PNG mit Transparenz ist zweifellos der beste Ausgangspunkt für die Erstellung von ICO-Icons in Profiqualität. Mit diesem Tool erfolgt die Konvertierung sofort, Alpha-Kanäle bleiben vollständig erhalten und das Ergebnis ist eine echte ICO-Datei mit der korrekten binären Struktur. Kein Hochladen Ihres Logos auf einen Server, keine Wasserzeichen, keine Limits – und perfekte Transparenz in allen Größen.',
164
+ },
165
+ ];
166
+
167
+ export const content: PngAIcoLocaleContent = {
168
+ slug,
169
+ title,
170
+ description,
171
+ ui,
172
+ seo,
173
+ faq,
174
+ bibliography,
175
+ howTo,
176
+ schemas: generateSchemas({
177
+ title,
178
+ description,
179
+ inLanguage: 'de',
180
+ faq,
181
+ howTo,
182
+ }),
183
+ };
@@ -1,5 +1,5 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
2
1
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
3
  import type { PngAIcoLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'png-to-ico-converter';
@@ -164,17 +164,6 @@ const seo: PngAIcoLocaleContent['seo'] = [
164
164
  },
165
165
  ];
166
166
 
167
- const appSchema: WithContext<SoftwareApplication> = {
168
- '@context': 'https://schema.org',
169
- '@type': 'SoftwareApplication',
170
- name: title,
171
- description,
172
- applicationCategory: 'UtilitiesApplication',
173
- operatingSystem: 'Web',
174
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
175
- inLanguage: 'en',
176
- };
177
-
178
167
  export const content: PngAIcoLocaleContent = {
179
168
  slug,
180
169
  title,
@@ -184,5 +173,11 @@ export const content: PngAIcoLocaleContent = {
184
173
  faq,
185
174
  bibliography,
186
175
  howTo,
187
- schemas: [appSchema as any],
176
+ schemas: generateSchemas({
177
+ title,
178
+ description,
179
+ inLanguage: 'en',
180
+ faq,
181
+ howTo,
182
+ }),
188
183
  };