@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,183 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { JpgAIcoLocaleContent } from '../index';
4
+
5
+ const slug = 'jpg-zu-ico-konverter';
6
+ const title = 'JPG zu ICO Konverter';
7
+ const description =
8
+ 'Konvertieren Sie JPG-Fotos in ICO mit echten Microsoft-Binär-Headern. Automatischer quadratischer Zuschnitt. Keine Dateiuploads. Kostenlos und privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'JPG-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: JpgAIcoLocaleContent['faq'] = [
22
+ {
23
+ question: 'Ist die resultierende ICO-Datei nativ kompatibel, um Windows Ordner anzupassen?',
24
+ answer:
25
+ 'Ja, wir erstellen eine zu 100 % authentische Datei im Microsoft-Icon-Format, indem wir einen standardisierten Binär-Header auf niedriger Ebene in die Bildmatrix einfügen.',
26
+ },
27
+ {
28
+ question: 'Was passiert mit dem Seitenverhältnis, wenn mein Original-JPG ein Panoramafoto ist?',
29
+ answer:
30
+ 'Der starre globale ICO-Standard erfordert zwingend ein perfekt quadratisches Bild. Unsere HTML5 JS Engine wird Ihr Foto zentrieren und den Überschuss abschneiden, um ein ausgewogenes Ergebnis zu garantieren.',
31
+ },
32
+ {
33
+ question: 'Ist es gefährlich, Firmenlogos oder persönliche JPGs in den Konverter hochzuladen?',
34
+ answer:
35
+ 'Die Canvas-Engine in JavaScript arbeitet in Ihrem eigenen Browser. Das Konvertieren von Hunderten von Fotos in ICO sendet kein einziges Megabyte an eine Cloud in fragwürdigen Ländern.',
36
+ },
37
+ ];
38
+
39
+ const howTo: JpgAIcoLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Original-JPG-Fotos sammeln',
42
+ text: 'Suchen und sammeln Sie die herkömmlichen Fotos und legen Sie sie durch Ablegen in unserem quadratischen Bereich ab.',
43
+ },
44
+ {
45
+ name: 'Erleben Sie die hexadezimale Reinigung',
46
+ text: 'Die Neu-Kodierung fügt nativ und schnell Metadaten und Header asynchron ein und generiert ein striktes, reines Icon im Speicher.',
47
+ },
48
+ {
49
+ name: 'Mehrere ZIP-Designs zusammenstellen',
50
+ text: 'Schließen Sie die Arbeit ab, indem Sie alles massenweise in einem kompakten Paket in nur wenigen Sekunden herunterladen.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: JpgAIcoLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'ICO Ikonografische Struktur und Systemnutzung',
57
+ url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
58
+ },
59
+ {
60
+ name: 'JPEG.org Standards',
61
+ url: 'https://jpeg.org/',
62
+ },
63
+ ];
64
+
65
+ const seo: JpgAIcoLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'JPG zu ICO Konverter: Erstellen Sie Favicons und Windows Icons aus Ihren Fotos',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Das <strong>ICO</strong>-Format ist der Microsoft-Standard für Symbole in Windows-Anwendungen und Favicons von Websites. Im Gegensatz zum einfachen Umbenennen eines JPG in .ico erfordert eine echte ICO-Datei eine spezifische binäre Struktur mit 22-Byte-Headern und einem eingebetteten Bildverzeichnis. <strong>JPG</strong> ist der am häufigsten gewählte Ausgangspunkt für die Erstellung dieser Icons – ein Firmenlogo, ein Profilfoto oder jedes Bild, das Sie zum visuellen Erkennungsmerkmal Ihrer Anwendung oder Website machen möchten.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'JPG oder ICO? Wann welches Format zu verwenden ist',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: '<strong>JPG</strong> ist ein Quellformat, kein Zielformat für Symbole. Es eignet sich hervorragend für Fotografien und Banner, ist jedoch inkompatibel mit Systemen, die Icons erfordern: Windows Explorer, die Lesezeichenleiste des Browsers, Desktop-Verknüpfungen oder PWA-Anwendungsmanifeste. Ein Betriebssystem oder Browser, der nach einem Icon sucht, erwartet das ICO-Format – und wenn es dieses nicht findet, wird ein generisches Symbol oder ein fehlerhaftes Quadrat angezeigt.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Das <strong>ICO</strong>-Format wurde entwickelt, um mehrere Auflösungen in einer einzigen Datei zu speichern: <strong>16×16</strong> für die Lesezeichenleiste, <strong>32×32</strong> für Verknüpfungen, <strong>48×48</strong> für den Datei-Explorer und <strong>256×256</strong> für hochauflösende Displays. Browser und Betriebssysteme wählen automatisch die passende Auflösung basierend auf dem Anzeigekontext aus – der Benutzer muss nichts weiter tun.',
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
+ 'Ihre Firmenlogos werden 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: 'Das JPG wird dekodiert und auf ein im Speicher befindliches <strong>HTML5 Canvas</strong> gezeichnet. Da das ICO-Format ein quadratisches Bild erfordert, erkennt die Engine automatisch, ob das JPG rechteckig ist, und schneidet es zu, indem sie den relevantesten Teil zentriert. Anschließend wird der Standard-Microsoft-ICO-Header mit der korrekten Magic Number (<code>00 00 01 00</code>), dem Bildverzeichnis und den kodierten Pixeldaten erstellt. Das Ergebnis ist eine echte binäre .ico-Datei – kein umbenanntes PNG.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Da JPG kein Alpha-Kanal besitzt, wird das resultierende ICO ebenfalls keine Transparenz aufweisen – es wird einen soliden Hintergrund haben, der vom Originalfoto übernommen wurde. Wenn Sie ein Favicon mit transparentem Hintergrund benötigen (zum Beispiel zur Anpassung an dunkle oder helle Lesezeichenleisten), ist der empfohlene Arbeitsablauf: Hintergrund in einem Editor entfernen, als PNG speichern und den PNG zu ICO Konverter verwenden.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Tipp: Mehrere Auflösungen in einer einzigen ICO Datei',
138
+ html: 'ICO-Dateien können <strong>mehrere Auflösungen</strong> in einer einzigen Datei packen – der Browser oder das Betriebssystem wählt automatisch die passendste für den jeweiligen Kontext aus. Für das bestmögliche Ergebnis verwenden Sie ein quadratisches JPG mit mindestens <strong>256×256 Pixeln</strong> als Quelle: Dies gibt dem Konverter genügend Informationen, um scharfe 16×16, 32×32 und 48×48 Größen ohne Verpixelung zu generieren.',
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
+ 'Website-Favicon: Kompatibel mit allen Browsern, einschließlich Internet Explorer.',
150
+ 'Anpassung von Ordnern und Desktop-Icons in Windows 10/11.',
151
+ 'Verknüpfungssymbol für Desktop-Anwendungen oder Installer.',
152
+ 'Anwendungssymbol für Electron-Projekte oder PWA-Anwendungen.',
153
+ 'Icons für Dateiverwaltungssysteme und Firmen-Explorer.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Fazit',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Die Konvertierung von JPG in ICO ist ein technisch wesentlicher Schritt für jedes Web- oder Desktop-Projekt, das eine erkennbare visuelle Identität benötigt. Dieses Tool generiert authentische ICOs mit der korrekten binären Struktur in Sekunden, ohne Ihr Logo auf einen externen Server hochzuladen. Das Ergebnis funktioniert in allen Browsern, im Windows Explorer und in jedem System, das den Microsoft ICO-Standard nutzt.',
164
+ },
165
+ ];
166
+
167
+ export const content: JpgAIcoLocaleContent = {
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 { JpgAIcoLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'jpg-to-ico-converter';
@@ -164,17 +164,6 @@ const seo: JpgAIcoLocaleContent['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: JpgAIcoLocaleContent = {
179
168
  slug,
180
169
  title,
@@ -184,5 +173,11 @@ export const content: JpgAIcoLocaleContent = {
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
  };
@@ -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 { JpgAIcoLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertidor-jpg-a-ico';
@@ -126,16 +126,16 @@ const seo: JpgAIcoLocaleContent['seo'] = [
126
126
  },
127
127
  {
128
128
  type: 'paragraph',
129
- html: 'El JPG se decodifica y se dibuja en un <strong>Canvas HTML5</strong> en memoria. Como el formato ICO exige imagen cuadrada, el motor detecta automáticamente si el JPG es rectangular y lo recorta centrando la parte más relevante. A continuación, construye la cabecera ICO estándar de Microsoft con el número mágico correcto (<code>00 00 01 00</code>), el directorio de imágenes y los datos de píxeles codificados. El resultado es un archivo .ico binario genuino, no un PNG renombrado.',
129
+ html: 'El JPG se decodifica y se dibuja en un <strong>Canvas HTML5</strong> en memoria. Como el formato ICO exige imagen cuadrada, el motor detecta automáticamente si el JPG es rectangular und lo recorta centrando la parte más relevante. A continuación, construye la cabecera ICO estándar de Microsoft con el número mágico correcto (<code>00 00 01 00</code>), el directorio de imágenes und los datos de píxeles codificados. El resultado es un archivo .ico binario genuino, no un PNG renombrado.',
130
130
  },
131
131
  {
132
132
  type: 'paragraph',
133
- html: 'Dado que el JPG carece de canal alfa, el ICO resultante tampoco tendrá transparencia — tendrá un fondo sólido heredado de la fotografía original. Si necesitas un favicon con fondo transparente (por ejemplo, para que se adapte a barras de favoritos oscuras o claras), el flujo recomendado es: elimina el fondo en un editor, guarda como PNG y usa el convertidor de PNG a ICO.',
133
+ html: 'Dado que el JPG carece de canal alfa, el ICO resultante tampoco tendrá transparencia — tendrá un fondo sólido heredado de la fotografía original. Si necesitas un favicon con fondo transparente (por ejemplo, para que se adapte a barras de favoritos oscuras o claras), el flujo recomendado es: elimina el fondo en un editor, guarda como PNG und usa el convertidor de PNG a ICO.',
134
134
  },
135
135
  {
136
136
  type: 'tip',
137
137
  title: 'Consejo: resoluciones múltiples en un solo ICO',
138
- html: 'Los archivos ICO pueden empaquetar <strong>varias resoluciones</strong> en un único fichero — el navegador o el sistema operativo elige automáticamente la más adecuada según el contexto. Para el mejor resultado posible, usa como fuente un JPG cuadrado de al menos <strong>256×256 píxeles</strong>: así el convertidor tendrá suficiente información para generar con nitidez los tamaños 16×16, 32×32 y 48×48 sin pixelado.',
138
+ html: 'Los archivos ICO pueden empaquetar <strong>varias resoluciones</strong> en un único fichero — el navegador o el sistema operativo elige automáticamente la más adecuada según el contexto. Para el mejor resultado posible, usa como fuente un JPG cuadrado de al menos <strong>256×256 píxeles</strong>: así el convertidor tendrá suficiente información para generar con nitidez los tamaños 16×16, 32×32 und 48×48 sin pixelado.',
139
139
  },
140
140
  {
141
141
  type: 'title',
@@ -150,7 +150,7 @@ const seo: JpgAIcoLocaleContent['seo'] = [
150
150
  'Personalización de carpetas e iconos de escritorio en Windows 10/11.',
151
151
  'Icono de acceso directo para aplicaciones de escritorio o instaladores.',
152
152
  'Icono de aplicación para proyectos Electron o aplicaciones PWA.',
153
- 'Iconos para sistemas de gestión de archivos y exploradores corporativos.',
153
+ 'Iconos para sistemas de gestión de archivos und exploradores corporativos.',
154
154
  ],
155
155
  },
156
156
  {
@@ -160,21 +160,10 @@ const seo: JpgAIcoLocaleContent['seo'] = [
160
160
  },
161
161
  {
162
162
  type: 'paragraph',
163
- html: 'Convertir un JPG a ICO es un paso técnico imprescindible para cualquier proyecto web o de escritorio que necesite una identidad visual reconocible. Esta herramienta genera ICO auténticos con la estructura binaria correcta, en segundos, sin subir tu logo a ningún servidor externo. El resultado funciona en todos los navegadores, en Windows Explorer y en cualquier sistema que consuma el estándar ICO de Microsoft.',
163
+ html: 'Convertir un JPG a ICO es un paso técnico imprescindible para cualquier proyecto web o de escritorio que necesite una identidad visual reconocible. Esta herramienta genera ICO auténticos con la estructura binaria correcta, en segundos, sin subir tu logo a ningún servidor externo. El resultado funciona en todos los navegadores, en Windows Explorer und en cualquier sistema que consuma el estándar ICO de Microsoft.',
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: 'es',
176
- };
177
-
178
167
  export const content: JpgAIcoLocaleContent = {
179
168
  slug,
180
169
  title,
@@ -184,5 +173,11 @@ export const content: JpgAIcoLocaleContent = {
184
173
  faq,
185
174
  bibliography,
186
175
  howTo,
187
- schemas: [appSchema as any],
176
+ schemas: generateSchemas({
177
+ title,
178
+ description,
179
+ inLanguage: 'es',
180
+ faq,
181
+ howTo,
182
+ }),
188
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 { JpgAIcoLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'convertisseur-jpg-en-ico';
@@ -130,7 +130,7 @@ const seo: JpgAIcoLocaleContent['seo'] = [
130
130
  },
131
131
  {
132
132
  type: 'paragraph',
133
- html: 'Comme le JPG ne possède pas de canal alpha, l\'ICO résultant n\'aura pas non plus de transparence — il aura un fond solide hérité de la photographie originale. Si vous avez besoin d\'un favicon avec fond transparent (par exemple pour s\'adapter aux barres de favoris sombres ou claires), le flux recommandé est : supprimez le fond dans un éditeur, sauvegardez en PNG, puis utilisez le convertisseur PNG vers ICO.',
133
+ html: 'Comme le JPG ne possède pas de canal alfa, l\'ICO résultant n\'aura pas non plus de transparence — il aura un fond solide hérité de la photographie originale. Si vous avez besoin d\'un favicon avec fond transparent (par exemple pour s\'adapter aux barres de favoris sombres ou claires), le flux recommandé est : supprimez le fond dans un éditeur, sauvegardez en PNG, puis utilisez le convertisseur PNG vers ICO.',
134
134
  },
135
135
  {
136
136
  type: 'tip',
@@ -164,17 +164,6 @@ const seo: JpgAIcoLocaleContent['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: 'fr',
176
- };
177
-
178
167
  export const content: JpgAIcoLocaleContent = {
179
168
  slug,
180
169
  title,
@@ -184,5 +173,11 @@ export const content: JpgAIcoLocaleContent = {
184
173
  faq,
185
174
  bibliography,
186
175
  howTo,
187
- schemas: [appSchema as any],
176
+ schemas: generateSchemas({
177
+ title,
178
+ description,
179
+ inLanguage: 'fr',
180
+ faq,
181
+ howTo,
182
+ }),
188
183
  };
@@ -0,0 +1,183 @@
1
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import { generateSchemas } from '../../../shared/logic/schemas';
3
+ import type { JpgAIcoLocaleContent } from '../index';
4
+
5
+ const slug = 'konverter-jpg-ke-ico';
6
+ const title = 'Konverter JPG ke ICO';
7
+ const description =
8
+ 'Konversi foto JPG ke ICO dengan header biner Microsoft asli. Pemangkasan persegi otomatis. Tanpa pengunggahan file. Gratis dan privat.';
9
+
10
+ const ui: ImageConverterUI = {
11
+ dragText: 'Tarik file JPG...',
12
+ convertText: 'Untuk mengonversinya ke ICO secara instan',
13
+ selectFiles: 'Pilih file',
14
+ processedFiles: 'File yang diproses',
15
+ downloadAll: 'Unduh Semua (.zip)',
16
+ pending: 'Menunggu',
17
+ bibliographyTitle: 'Referensi Bibliografi',
18
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
19
+ };
20
+
21
+ const faq: JpgAIcoLocaleContent['faq'] = [
22
+ {
23
+ question: 'Apakah file ICO yang dihasilkan kompatibel secara native untuk menyesuaikan folder Windows?',
24
+ answer:
25
+ 'Ya, kami membuat file Microsoft Icon Format yang 100% otentik dengan memasukkan header biner standar pada tingkat rendah ke dalam matriks gambar.',
26
+ },
27
+ {
28
+ question: 'Apa yang terjadi dengan proporsi jika JPG asli saya adalah foto horizontal panorama?',
29
+ answer:
30
+ 'Standar ICO global yang ketat mutlak memerlukan gambar persegi yang sempurna. Mesin HTML5 JS kami akan memusatkan foto Anda und memotong kelebihannya, menjamin hasil yang seimbang.',
31
+ },
32
+ {
33
+ question: 'Apakah berbahaya mengunggah logo JPG perusahaan atau pribadi ke konverter ini?',
34
+ answer:
35
+ 'Mesin Canvas di JavaScript berada di browser fisik Anda sendiri. Mengonversi ratusan foto ke ICO tidak mengirim satu megabita pun ke cloud mana pun di negara-negara yang meragukan.',
36
+ },
37
+ ];
38
+
39
+ const howTo: JpgAIcoLocaleContent['howTo'] = [
40
+ {
41
+ name: 'Kumpulkan foto JPG asli',
42
+ text: 'Temukan und kumpulkan foto konvensional und simpan dengan menjatuhkannya ke dalam kotak ramah kami.',
43
+ },
44
+ {
45
+ name: 'Saksikan pemurnian heksadesimal buta',
46
+ text: 'Pengkodean ulang akan secara native und cepat memasukkan metadata und header secara asinkron yang menghasilkan ikon murni yang ketat di memori.',
47
+ },
48
+ {
49
+ name: 'Kompilasi beberapa desain ZIP',
50
+ text: 'Selesaikan pekerjaan dengan mengunduh semuanya secara massal dalam paket kompak hanya dalam hitungan detik.',
51
+ },
52
+ ];
53
+
54
+ const bibliography: JpgAIcoLocaleContent['bibliography'] = [
55
+ {
56
+ name: 'Struktur Ikonografi ICO und Penggunaan Sistem',
57
+ url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
58
+ },
59
+ {
60
+ name: 'Standar JPEG.org',
61
+ url: 'https://jpeg.org/',
62
+ },
63
+ ];
64
+
65
+ const seo: JpgAIcoLocaleContent['seo'] = [
66
+ {
67
+ type: 'title',
68
+ text: 'Konverter JPG ke ICO: Buat Favicon und Ikon Windows dari Foto Anda',
69
+ level: 2,
70
+ },
71
+ {
72
+ type: 'paragraph',
73
+ html: 'Format <strong>ICO</strong> adalah standar Microsoft untuk ikon aplikasi Windows und favicon situs web. Berbeda dengan sekadar mengganti nama JPG menjadi .ico, file ICO asli memerlukan struktur biner khusus dengan header 22-byte und direktori gambar yang disematkan. <strong>JPG</strong> adalah titik awal yang paling umum untuk membuat ikon-ikon ini — logo perusahaan, foto profil, atau gambar apa pun yang ingin Anda ubah menjadi ikon visual aplikasi atau situs web Anda.',
74
+ },
75
+ {
76
+ type: 'title',
77
+ text: 'JPG atau ICO? Kapan menggunakan masing-masing format',
78
+ level: 3,
79
+ },
80
+ {
81
+ type: 'paragraph',
82
+ html: '<strong>JPG</strong> adalah format sumber, bukan tujuan untuk ikon. Sempurna untuk foto und banner, tetapi tidak kompatibel dengan sistem yang memerlukan ikon: Windows Explorer, bilah bookmark browser, pintasan desktop, atau manifes aplikasi PWA. Sistem operasi atau browser yang mencari ikon mengharapkan format ICO — und jika tidak menemukannya, ia akan menampilkan ikon generik atau kotak rusak.',
83
+ },
84
+ {
85
+ type: 'paragraph',
86
+ html: 'Format <strong>ICO</strong> dirancang untuk menampung beberapa resolusi dalam satu file: <strong>16×16</strong> untuk bilah bookmark, <strong>32×32</strong> untuk pintasan, <strong>48×48</strong> untuk file explorer, und <strong>256×256</strong> untuk layar dengan kepadatan tinggi. Browser und sistem operasi secara otomatis memilih resolusi yang sesuai berdasarkan konteks tampilan — pengguna tidak perlu mengelola apa pun.',
87
+ },
88
+ {
89
+ type: 'title',
90
+ text: 'Perbandingan: Konversi Lokal vs Cloud',
91
+ level: 3,
92
+ },
93
+ {
94
+ type: 'comparative',
95
+ items: [
96
+ {
97
+ title: 'Konverter Cloud',
98
+ description: 'Alat yang mengunggah file Anda ke server jarak jauh.',
99
+ icon: 'mdi:cloud-upload',
100
+ pointIcon: 'mdi:close-circle-outline',
101
+ points: [
102
+ 'Latensi jaringan saat mengunggah und mengunduh',
103
+ 'Logo perusahaan Anda disimpan di server pihak ketiga',
104
+ 'Batas ukuran file und batasan konversi harian',
105
+ 'Iklan yang mengganggu und pelacak pihak ketiga',
106
+ ],
107
+ },
108
+ {
109
+ title: 'Arsitektur Lokal Kami',
110
+ description: 'Pemrosesan langsung pada perangkat keras Anda menggunakan teknologi Vanilla JS.',
111
+ icon: 'mdi:laptop-mac',
112
+ highlight: true,
113
+ points: [
114
+ 'Kecepatan instan — nol latensi jaringan',
115
+ 'Privasi lengkap — 0 byte dikirim secara eksternal',
116
+ 'Tanpa batas MB atau batasan jumlah file',
117
+ 'Antarmuka bersih, tanpa iklan atau pelacakan',
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Cara kerjanya secara teknis',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'JPG didekodekan und digambar ke dalam <strong>HTML5 Canvas</strong> di memori. Karena format ICO memerlukan gambar persegi, mesin secara otomatis mendeteksi jika JPG berbentuk persegi panjang und memotongnya dengan memusatkan bagian yang paling relevan. Kemudian ia membangun header Microsoft ICO standar dengan magic number yang benar (<code>00 00 01 00</code>), direktori gambar, und data piksel yang dikodekan. Hasilnya adalah file biner .ico asli — bukan PNG yang diganti namanya.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Karena JPG tidak memiliki saluran alfa, ICO yang dihasilkan juga tidak akan memiliki transparansi — ia akan memiliki latar belakang padat yang diwarisi dari foto asli. Jika Anda memerlukan favicon dengan latar belakang transparan (misalnya, untuk beradaptasi dengan bilah bookmark gelap atau terang), alur kerja yang disarankan adalah: hapus latar belakang di editor, simpan sebagai PNG, und gunakan konverter PNG ke ICO.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Tip: beberapa resolusi dalam satu ICO',
138
+ html: 'File ICO dapat mengemas <strong>beberapa resolusi</strong> ke dalam satu file — browser atau OS secara otomatis memilih yang paling sesuai untuk setiap konteks. Untuk hasil terbaik, gunakan JPG persegi minimal <strong>256×256 piksel</strong> sebagai sumber Anda: ini memberi konverter informasi yang cukup untuk menghasilkan ukuran 16×16, 32×32, und 48×48 yang tajam tanpa pikselasi.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Kasus penggunaan und kompatibilitas',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ icon: 'mdi:check-circle',
148
+ items: [
149
+ 'Favicon situs web: kompatibel dengan semua browser termasuk Internet Explorer.',
150
+ 'Kustomisasi ikon folder und desktop di Windows 10/11.',
151
+ 'Ikon pintasan untuk aplikasi desktop atau penginstal.',
152
+ 'Ikon aplikasi untuk proyek Electron atau aplikasi PWA.',
153
+ 'Ikon untuk sistem manajemen file und file explorer perusahaan.',
154
+ ],
155
+ },
156
+ {
157
+ type: 'title',
158
+ text: 'Kesimpulan',
159
+ level: 3,
160
+ },
161
+ {
162
+ type: 'paragraph',
163
+ html: 'Mengonversi JPG ke ICO adalah langkah teknis yang penting untuk proyek web atau desktop mana pun yang membutuhkan identitas visual yang mudah dikenali. Alat ini menghasilkan ICO otentik dengan struktur biner yang benar, dalam hitungan detik, tanpa mengunggah logo Anda ke server eksternal mana pun. Hasilnya berfungsi di semua browser, di Windows Explorer, und di sistem mana pun yang menggunakan standar ICO Microsoft.',
164
+ },
165
+ ];
166
+
167
+ export const content: JpgAIcoLocaleContent = {
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: 'id',
180
+ faq,
181
+ howTo,
182
+ }),
183
+ };