@jjlmoya/utils-developer 1.4.0 → 1.5.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 (338) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +34 -0
  3. package/src/category/i18n/id.ts +34 -0
  4. package/src/category/i18n/it.ts +34 -0
  5. package/src/category/i18n/ja.ts +34 -0
  6. package/src/category/i18n/ko.ts +34 -0
  7. package/src/category/i18n/nl.ts +34 -0
  8. package/src/category/i18n/pl.ts +34 -0
  9. package/src/category/i18n/pt.ts +34 -0
  10. package/src/category/i18n/ru.ts +34 -0
  11. package/src/category/i18n/sv.ts +34 -0
  12. package/src/category/i18n/tr.ts +34 -0
  13. package/src/category/i18n/zh.ts +34 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/tests/faq_count.test.ts +1 -1
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/locale_completeness.test.ts +2 -2
  18. package/src/tests/slug_uniqueness.test.ts +81 -0
  19. package/src/tool/aspectRatio/i18n/de.ts +177 -0
  20. package/src/tool/aspectRatio/i18n/id.ts +177 -0
  21. package/src/tool/aspectRatio/i18n/it.ts +177 -0
  22. package/src/tool/aspectRatio/i18n/ja.ts +178 -0
  23. package/src/tool/aspectRatio/i18n/ko.ts +178 -0
  24. package/src/tool/aspectRatio/i18n/nl.ts +178 -0
  25. package/src/tool/aspectRatio/i18n/pl.ts +177 -0
  26. package/src/tool/aspectRatio/i18n/pt.ts +177 -0
  27. package/src/tool/aspectRatio/i18n/ru.ts +177 -0
  28. package/src/tool/aspectRatio/i18n/sv.ts +177 -0
  29. package/src/tool/aspectRatio/i18n/tr.ts +177 -0
  30. package/src/tool/aspectRatio/i18n/zh.ts +178 -0
  31. package/src/tool/aspectRatio/index.ts +15 -7
  32. package/src/tool/calculadoraTiempoDatos/i18n/de.ts +150 -0
  33. package/src/tool/calculadoraTiempoDatos/i18n/id.ts +150 -0
  34. package/src/tool/calculadoraTiempoDatos/i18n/it.ts +150 -0
  35. package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +151 -0
  36. package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +151 -0
  37. package/src/tool/calculadoraTiempoDatos/i18n/nl.ts +150 -0
  38. package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +150 -0
  39. package/src/tool/calculadoraTiempoDatos/i18n/pt.ts +150 -0
  40. package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +151 -0
  41. package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +150 -0
  42. package/src/tool/calculadoraTiempoDatos/i18n/tr.ts +150 -0
  43. package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +151 -0
  44. package/src/tool/calculadoraTiempoDatos/index.ts +15 -7
  45. package/src/tool/colorConverter/i18n/de.ts +126 -0
  46. package/src/tool/colorConverter/i18n/id.ts +126 -0
  47. package/src/tool/colorConverter/i18n/it.ts +126 -0
  48. package/src/tool/colorConverter/i18n/ja.ts +127 -0
  49. package/src/tool/colorConverter/i18n/ko.ts +127 -0
  50. package/src/tool/colorConverter/i18n/nl.ts +126 -0
  51. package/src/tool/colorConverter/i18n/pl.ts +126 -0
  52. package/src/tool/colorConverter/i18n/pt.ts +126 -0
  53. package/src/tool/colorConverter/i18n/ru.ts +126 -0
  54. package/src/tool/colorConverter/i18n/sv.ts +126 -0
  55. package/src/tool/colorConverter/i18n/tr.ts +126 -0
  56. package/src/tool/colorConverter/i18n/zh.ts +127 -0
  57. package/src/tool/colorConverter/index.ts +15 -7
  58. package/src/tool/conversorExcelCsvHtml/i18n/de.ts +129 -0
  59. package/src/tool/conversorExcelCsvHtml/i18n/id.ts +129 -0
  60. package/src/tool/conversorExcelCsvHtml/i18n/it.ts +129 -0
  61. package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +130 -0
  62. package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +130 -0
  63. package/src/tool/conversorExcelCsvHtml/i18n/nl.ts +129 -0
  64. package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +129 -0
  65. package/src/tool/conversorExcelCsvHtml/i18n/pt.ts +129 -0
  66. package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +129 -0
  67. package/src/tool/conversorExcelCsvHtml/i18n/sv.ts +129 -0
  68. package/src/tool/conversorExcelCsvHtml/i18n/tr.ts +129 -0
  69. package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +130 -0
  70. package/src/tool/conversorExcelCsvHtml/index.ts +15 -7
  71. package/src/tool/cronGenerator/i18n/de.ts +192 -0
  72. package/src/tool/cronGenerator/i18n/es.ts +2 -1
  73. package/src/tool/cronGenerator/i18n/fr.ts +2 -1
  74. package/src/tool/cronGenerator/i18n/id.ts +192 -0
  75. package/src/tool/cronGenerator/i18n/it.ts +192 -0
  76. package/src/tool/cronGenerator/i18n/ja.ts +192 -0
  77. package/src/tool/cronGenerator/i18n/ko.ts +192 -0
  78. package/src/tool/cronGenerator/i18n/nl.ts +192 -0
  79. package/src/tool/cronGenerator/i18n/pl.ts +192 -0
  80. package/src/tool/cronGenerator/i18n/pt.ts +192 -0
  81. package/src/tool/cronGenerator/i18n/ru.ts +192 -0
  82. package/src/tool/cronGenerator/i18n/sv.ts +192 -0
  83. package/src/tool/cronGenerator/i18n/tr.ts +192 -0
  84. package/src/tool/cronGenerator/i18n/zh.ts +192 -0
  85. package/src/tool/cronGenerator/index.ts +15 -7
  86. package/src/tool/cssSpecificityCalculator/i18n/de.ts +168 -0
  87. package/src/tool/cssSpecificityCalculator/i18n/id.ts +168 -0
  88. package/src/tool/cssSpecificityCalculator/i18n/it.ts +168 -0
  89. package/src/tool/cssSpecificityCalculator/i18n/ja.ts +169 -0
  90. package/src/tool/cssSpecificityCalculator/i18n/ko.ts +169 -0
  91. package/src/tool/cssSpecificityCalculator/i18n/nl.ts +168 -0
  92. package/src/tool/cssSpecificityCalculator/i18n/pl.ts +168 -0
  93. package/src/tool/cssSpecificityCalculator/i18n/pt.ts +168 -0
  94. package/src/tool/cssSpecificityCalculator/i18n/ru.ts +168 -0
  95. package/src/tool/cssSpecificityCalculator/i18n/sv.ts +168 -0
  96. package/src/tool/cssSpecificityCalculator/i18n/tr.ts +168 -0
  97. package/src/tool/cssSpecificityCalculator/i18n/zh.ts +169 -0
  98. package/src/tool/cssSpecificityCalculator/index.ts +15 -7
  99. package/src/tool/cssToInlineConverter/i18n/de.ts +160 -0
  100. package/src/tool/cssToInlineConverter/i18n/id.ts +160 -0
  101. package/src/tool/cssToInlineConverter/i18n/it.ts +160 -0
  102. package/src/tool/cssToInlineConverter/i18n/ja.ts +161 -0
  103. package/src/tool/cssToInlineConverter/i18n/ko.ts +161 -0
  104. package/src/tool/cssToInlineConverter/i18n/nl.ts +160 -0
  105. package/src/tool/cssToInlineConverter/i18n/pl.ts +160 -0
  106. package/src/tool/cssToInlineConverter/i18n/pt.ts +160 -0
  107. package/src/tool/cssToInlineConverter/i18n/ru.ts +160 -0
  108. package/src/tool/cssToInlineConverter/i18n/sv.ts +160 -0
  109. package/src/tool/cssToInlineConverter/i18n/tr.ts +160 -0
  110. package/src/tool/cssToInlineConverter/i18n/zh.ts +161 -0
  111. package/src/tool/cssToInlineConverter/index.ts +15 -7
  112. package/src/tool/duplicateCssRemover/i18n/de.ts +167 -0
  113. package/src/tool/duplicateCssRemover/i18n/id.ts +167 -0
  114. package/src/tool/duplicateCssRemover/i18n/it.ts +167 -0
  115. package/src/tool/duplicateCssRemover/i18n/ja.ts +168 -0
  116. package/src/tool/duplicateCssRemover/i18n/ko.ts +168 -0
  117. package/src/tool/duplicateCssRemover/i18n/nl.ts +167 -0
  118. package/src/tool/duplicateCssRemover/i18n/pl.ts +167 -0
  119. package/src/tool/duplicateCssRemover/i18n/pt.ts +167 -0
  120. package/src/tool/duplicateCssRemover/i18n/ru.ts +167 -0
  121. package/src/tool/duplicateCssRemover/i18n/sv.ts +167 -0
  122. package/src/tool/duplicateCssRemover/i18n/tr.ts +167 -0
  123. package/src/tool/duplicateCssRemover/i18n/zh.ts +168 -0
  124. package/src/tool/duplicateCssRemover/index.ts +15 -7
  125. package/src/tool/generadorSecurityTxt/i18n/de.ts +174 -0
  126. package/src/tool/generadorSecurityTxt/i18n/id.ts +174 -0
  127. package/src/tool/generadorSecurityTxt/i18n/it.ts +174 -0
  128. package/src/tool/generadorSecurityTxt/i18n/ja.ts +174 -0
  129. package/src/tool/generadorSecurityTxt/i18n/ko.ts +174 -0
  130. package/src/tool/generadorSecurityTxt/i18n/nl.ts +174 -0
  131. package/src/tool/generadorSecurityTxt/i18n/pl.ts +174 -0
  132. package/src/tool/generadorSecurityTxt/i18n/pt.ts +174 -0
  133. package/src/tool/generadorSecurityTxt/i18n/ru.ts +174 -0
  134. package/src/tool/generadorSecurityTxt/i18n/sv.ts +174 -0
  135. package/src/tool/generadorSecurityTxt/i18n/tr.ts +174 -0
  136. package/src/tool/generadorSecurityTxt/i18n/zh.ts +174 -0
  137. package/src/tool/generadorSecurityTxt/index.ts +15 -7
  138. package/src/tool/hashGenerator/i18n/de.ts +119 -0
  139. package/src/tool/hashGenerator/i18n/id.ts +119 -0
  140. package/src/tool/hashGenerator/i18n/it.ts +118 -0
  141. package/src/tool/hashGenerator/i18n/ja.ts +119 -0
  142. package/src/tool/hashGenerator/i18n/ko.ts +119 -0
  143. package/src/tool/hashGenerator/i18n/nl.ts +119 -0
  144. package/src/tool/hashGenerator/i18n/pl.ts +118 -0
  145. package/src/tool/hashGenerator/i18n/pt.ts +118 -0
  146. package/src/tool/hashGenerator/i18n/ru.ts +119 -0
  147. package/src/tool/hashGenerator/i18n/sv.ts +119 -0
  148. package/src/tool/hashGenerator/i18n/tr.ts +118 -0
  149. package/src/tool/hashGenerator/i18n/zh.ts +119 -0
  150. package/src/tool/hashGenerator/index.ts +15 -7
  151. package/src/tool/inspectorCertificadosSsl/i18n/de.ts +214 -0
  152. package/src/tool/inspectorCertificadosSsl/i18n/id.ts +215 -0
  153. package/src/tool/inspectorCertificadosSsl/i18n/it.ts +214 -0
  154. package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +215 -0
  155. package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +215 -0
  156. package/src/tool/inspectorCertificadosSsl/i18n/nl.ts +215 -0
  157. package/src/tool/inspectorCertificadosSsl/i18n/pl.ts +215 -0
  158. package/src/tool/inspectorCertificadosSsl/i18n/pt.ts +214 -0
  159. package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +215 -0
  160. package/src/tool/inspectorCertificadosSsl/i18n/sv.ts +215 -0
  161. package/src/tool/inspectorCertificadosSsl/i18n/tr.ts +215 -0
  162. package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +215 -0
  163. package/src/tool/inspectorCertificadosSsl/index.ts +24 -0
  164. package/src/tool/jsonFormatter/i18n/de.ts +157 -0
  165. package/src/tool/jsonFormatter/i18n/es.ts +2 -1
  166. package/src/tool/jsonFormatter/i18n/fr.ts +2 -1
  167. package/src/tool/jsonFormatter/i18n/id.ts +157 -0
  168. package/src/tool/jsonFormatter/i18n/it.ts +156 -0
  169. package/src/tool/jsonFormatter/i18n/ja.ts +157 -0
  170. package/src/tool/jsonFormatter/i18n/ko.ts +157 -0
  171. package/src/tool/jsonFormatter/i18n/nl.ts +157 -0
  172. package/src/tool/jsonFormatter/i18n/pl.ts +156 -0
  173. package/src/tool/jsonFormatter/i18n/pt.ts +156 -0
  174. package/src/tool/jsonFormatter/i18n/ru.ts +157 -0
  175. package/src/tool/jsonFormatter/i18n/sv.ts +157 -0
  176. package/src/tool/jsonFormatter/i18n/tr.ts +157 -0
  177. package/src/tool/jsonFormatter/i18n/zh.ts +157 -0
  178. package/src/tool/jsonFormatter/index.ts +15 -7
  179. package/src/tool/keycode/i18n/de.ts +161 -0
  180. package/src/tool/keycode/i18n/es.ts +2 -1
  181. package/src/tool/keycode/i18n/fr.ts +2 -1
  182. package/src/tool/keycode/i18n/id.ts +161 -0
  183. package/src/tool/keycode/i18n/it.ts +161 -0
  184. package/src/tool/keycode/i18n/ja.ts +161 -0
  185. package/src/tool/keycode/i18n/ko.ts +161 -0
  186. package/src/tool/keycode/i18n/nl.ts +161 -0
  187. package/src/tool/keycode/i18n/pl.ts +161 -0
  188. package/src/tool/keycode/i18n/pt.ts +160 -0
  189. package/src/tool/keycode/i18n/ru.ts +160 -0
  190. package/src/tool/keycode/i18n/sv.ts +160 -0
  191. package/src/tool/keycode/i18n/tr.ts +160 -0
  192. package/src/tool/keycode/i18n/zh.ts +161 -0
  193. package/src/tool/keycode/index.ts +15 -7
  194. package/src/tool/llmCostCalculator/i18n/de.ts +166 -0
  195. package/src/tool/llmCostCalculator/i18n/fr.ts +2 -1
  196. package/src/tool/llmCostCalculator/i18n/id.ts +166 -0
  197. package/src/tool/llmCostCalculator/i18n/it.ts +166 -0
  198. package/src/tool/llmCostCalculator/i18n/ja.ts +166 -0
  199. package/src/tool/llmCostCalculator/i18n/ko.ts +166 -0
  200. package/src/tool/llmCostCalculator/i18n/nl.ts +166 -0
  201. package/src/tool/llmCostCalculator/i18n/pl.ts +165 -0
  202. package/src/tool/llmCostCalculator/i18n/pt.ts +165 -0
  203. package/src/tool/llmCostCalculator/i18n/ru.ts +165 -0
  204. package/src/tool/llmCostCalculator/i18n/sv.ts +165 -0
  205. package/src/tool/llmCostCalculator/i18n/tr.ts +165 -0
  206. package/src/tool/llmCostCalculator/i18n/zh.ts +166 -0
  207. package/src/tool/llmCostCalculator/index.ts +24 -0
  208. package/src/tool/mobileMockupGenerator/i18n/de.ts +121 -0
  209. package/src/tool/mobileMockupGenerator/i18n/id.ts +121 -0
  210. package/src/tool/mobileMockupGenerator/i18n/it.ts +121 -0
  211. package/src/tool/mobileMockupGenerator/i18n/ja.ts +122 -0
  212. package/src/tool/mobileMockupGenerator/i18n/ko.ts +122 -0
  213. package/src/tool/mobileMockupGenerator/i18n/nl.ts +121 -0
  214. package/src/tool/mobileMockupGenerator/i18n/pl.ts +31 -0
  215. package/src/tool/mobileMockupGenerator/i18n/pt.ts +121 -0
  216. package/src/tool/mobileMockupGenerator/i18n/ru.ts +121 -0
  217. package/src/tool/mobileMockupGenerator/i18n/sv.ts +121 -0
  218. package/src/tool/mobileMockupGenerator/i18n/tr.ts +121 -0
  219. package/src/tool/mobileMockupGenerator/i18n/zh.ts +122 -0
  220. package/src/tool/mobileMockupGenerator/index.ts +24 -0
  221. package/src/tool/musicalTypography/i18n/de.ts +179 -0
  222. package/src/tool/musicalTypography/i18n/id.ts +179 -0
  223. package/src/tool/musicalTypography/i18n/it.ts +179 -0
  224. package/src/tool/musicalTypography/i18n/ja.ts +180 -0
  225. package/src/tool/musicalTypography/i18n/ko.ts +180 -0
  226. package/src/tool/musicalTypography/i18n/nl.ts +179 -0
  227. package/src/tool/musicalTypography/i18n/pl.ts +179 -0
  228. package/src/tool/musicalTypography/i18n/pt.ts +101 -0
  229. package/src/tool/musicalTypography/i18n/ru.ts +47 -0
  230. package/src/tool/musicalTypography/i18n/sv.ts +29 -0
  231. package/src/tool/musicalTypography/i18n/tr.ts +29 -0
  232. package/src/tool/musicalTypography/i18n/zh.ts +30 -0
  233. package/src/tool/musicalTypography/index.ts +15 -7
  234. package/src/tool/placeholderGenerator/i18n/de.ts +176 -0
  235. package/src/tool/placeholderGenerator/i18n/id.ts +176 -0
  236. package/src/tool/placeholderGenerator/i18n/it.ts +176 -0
  237. package/src/tool/placeholderGenerator/i18n/ja.ts +177 -0
  238. package/src/tool/placeholderGenerator/i18n/ko.ts +177 -0
  239. package/src/tool/placeholderGenerator/i18n/nl.ts +176 -0
  240. package/src/tool/placeholderGenerator/i18n/pl.ts +176 -0
  241. package/src/tool/placeholderGenerator/i18n/pt.ts +176 -0
  242. package/src/tool/placeholderGenerator/i18n/ru.ts +176 -0
  243. package/src/tool/placeholderGenerator/i18n/sv.ts +176 -0
  244. package/src/tool/placeholderGenerator/i18n/tr.ts +176 -0
  245. package/src/tool/placeholderGenerator/i18n/zh.ts +177 -0
  246. package/src/tool/placeholderGenerator/index.ts +24 -0
  247. package/src/tool/promptLibrary/i18n/de.ts +131 -0
  248. package/src/tool/promptLibrary/i18n/id.ts +131 -0
  249. package/src/tool/promptLibrary/i18n/it.ts +131 -0
  250. package/src/tool/promptLibrary/i18n/ja.ts +132 -0
  251. package/src/tool/promptLibrary/i18n/ko.ts +132 -0
  252. package/src/tool/promptLibrary/i18n/nl.ts +131 -0
  253. package/src/tool/promptLibrary/i18n/pl.ts +28 -0
  254. package/src/tool/promptLibrary/i18n/pt.ts +101 -0
  255. package/src/tool/promptLibrary/i18n/ru.ts +101 -0
  256. package/src/tool/promptLibrary/i18n/sv.ts +93 -0
  257. package/src/tool/promptLibrary/i18n/tr.ts +93 -0
  258. package/src/tool/promptLibrary/i18n/zh.ts +94 -0
  259. package/src/tool/promptLibrary/index.ts +24 -0
  260. package/src/tool/readabilityCalculator/i18n/de.ts +133 -0
  261. package/src/tool/readabilityCalculator/i18n/id.ts +133 -0
  262. package/src/tool/readabilityCalculator/i18n/it.ts +133 -0
  263. package/src/tool/readabilityCalculator/i18n/ja.ts +134 -0
  264. package/src/tool/readabilityCalculator/i18n/ko.ts +134 -0
  265. package/src/tool/readabilityCalculator/i18n/nl.ts +133 -0
  266. package/src/tool/readabilityCalculator/i18n/pl.ts +29 -0
  267. package/src/tool/readabilityCalculator/i18n/pt.ts +91 -0
  268. package/src/tool/readabilityCalculator/i18n/ru.ts +91 -0
  269. package/src/tool/readabilityCalculator/i18n/sv.ts +43 -0
  270. package/src/tool/readabilityCalculator/i18n/tr.ts +43 -0
  271. package/src/tool/readabilityCalculator/i18n/zh.ts +44 -0
  272. package/src/tool/readabilityCalculator/index.ts +24 -0
  273. package/src/tool/svgSanitizer/i18n/de.ts +125 -0
  274. package/src/tool/svgSanitizer/i18n/id.ts +125 -0
  275. package/src/tool/svgSanitizer/i18n/it.ts +125 -0
  276. package/src/tool/svgSanitizer/i18n/ja.ts +126 -0
  277. package/src/tool/svgSanitizer/i18n/ko.ts +126 -0
  278. package/src/tool/svgSanitizer/i18n/nl.ts +125 -0
  279. package/src/tool/svgSanitizer/i18n/pl.ts +125 -0
  280. package/src/tool/svgSanitizer/i18n/pt.ts +30 -0
  281. package/src/tool/svgSanitizer/i18n/ru.ts +126 -0
  282. package/src/tool/svgSanitizer/i18n/sv.ts +126 -0
  283. package/src/tool/svgSanitizer/i18n/tr.ts +126 -0
  284. package/src/tool/svgSanitizer/i18n/zh.ts +126 -0
  285. package/src/tool/svgSanitizer/index.ts +24 -0
  286. package/src/tool/svgToCss/i18n/de.ts +174 -0
  287. package/src/tool/svgToCss/i18n/id.ts +174 -0
  288. package/src/tool/svgToCss/i18n/it.ts +174 -0
  289. package/src/tool/svgToCss/i18n/ja.ts +175 -0
  290. package/src/tool/svgToCss/i18n/ko.ts +175 -0
  291. package/src/tool/svgToCss/i18n/nl.ts +174 -0
  292. package/src/tool/svgToCss/i18n/pl.ts +174 -0
  293. package/src/tool/svgToCss/i18n/pt.ts +174 -0
  294. package/src/tool/svgToCss/i18n/ru.ts +174 -0
  295. package/src/tool/svgToCss/i18n/sv.ts +174 -0
  296. package/src/tool/svgToCss/i18n/tr.ts +174 -0
  297. package/src/tool/svgToCss/i18n/zh.ts +175 -0
  298. package/src/tool/svgToCss/index.ts +15 -7
  299. package/src/tool/urlCleaner/i18n/de.ts +116 -0
  300. package/src/tool/urlCleaner/i18n/id.ts +116 -0
  301. package/src/tool/urlCleaner/i18n/it.ts +116 -0
  302. package/src/tool/urlCleaner/i18n/ja.ts +117 -0
  303. package/src/tool/urlCleaner/i18n/ko.ts +117 -0
  304. package/src/tool/urlCleaner/i18n/nl.ts +116 -0
  305. package/src/tool/urlCleaner/i18n/pl.ts +29 -0
  306. package/src/tool/urlCleaner/i18n/pt.ts +43 -0
  307. package/src/tool/urlCleaner/i18n/ru.ts +43 -0
  308. package/src/tool/urlCleaner/i18n/sv.ts +43 -0
  309. package/src/tool/urlCleaner/i18n/tr.ts +43 -0
  310. package/src/tool/urlCleaner/i18n/zh.ts +44 -0
  311. package/src/tool/urlCleaner/index.ts +24 -0
  312. package/src/tool/urlEncoderDecoder/i18n/de.ts +163 -0
  313. package/src/tool/urlEncoderDecoder/i18n/id.ts +163 -0
  314. package/src/tool/urlEncoderDecoder/i18n/it.ts +163 -0
  315. package/src/tool/urlEncoderDecoder/i18n/ja.ts +163 -0
  316. package/src/tool/urlEncoderDecoder/i18n/ko.ts +163 -0
  317. package/src/tool/urlEncoderDecoder/i18n/nl.ts +163 -0
  318. package/src/tool/urlEncoderDecoder/i18n/pl.ts +162 -0
  319. package/src/tool/urlEncoderDecoder/i18n/pt.ts +162 -0
  320. package/src/tool/urlEncoderDecoder/i18n/ru.ts +163 -0
  321. package/src/tool/urlEncoderDecoder/i18n/sv.ts +163 -0
  322. package/src/tool/urlEncoderDecoder/i18n/tr.ts +162 -0
  323. package/src/tool/urlEncoderDecoder/i18n/zh.ts +163 -0
  324. package/src/tool/urlEncoderDecoder/index.ts +15 -7
  325. package/src/tool/utmGenerator/i18n/de.ts +118 -0
  326. package/src/tool/utmGenerator/i18n/id.ts +118 -0
  327. package/src/tool/utmGenerator/i18n/it.ts +118 -0
  328. package/src/tool/utmGenerator/i18n/ja.ts +118 -0
  329. package/src/tool/utmGenerator/i18n/ko.ts +118 -0
  330. package/src/tool/utmGenerator/i18n/nl.ts +118 -0
  331. package/src/tool/utmGenerator/i18n/pl.ts +117 -0
  332. package/src/tool/utmGenerator/i18n/pt.ts +118 -0
  333. package/src/tool/utmGenerator/i18n/ru.ts +118 -0
  334. package/src/tool/utmGenerator/i18n/sv.ts +118 -0
  335. package/src/tool/utmGenerator/i18n/tr.ts +117 -0
  336. package/src/tool/utmGenerator/i18n/zh.ts +118 -0
  337. package/src/tool/utmGenerator/index.ts +15 -7
  338. package/src/types.ts +1 -2
@@ -6,10 +6,6 @@ import type { MusicalTypographyUI } from './ui';
6
6
 
7
7
  export type MusicalTypographyLocaleContent = ToolLocaleContent<MusicalTypographyUI>;
8
8
 
9
- import { content as es } from './i18n/es';
10
- import { content as en } from './i18n/en';
11
- import { content as fr } from './i18n/fr';
12
-
13
9
  export const musicalTypography: DeveloperToolEntry<MusicalTypographyUI> = {
14
10
  id: 'musical-typography',
15
11
  icons: {
@@ -17,9 +13,21 @@ export const musicalTypography: DeveloperToolEntry<MusicalTypographyUI> = {
17
13
  fg: 'mdi:format-size',
18
14
  },
19
15
  i18n: {
20
- es: async () => es,
21
- en: async () => en,
22
- fr: async () => fr,
16
+ de: async () => (await import('./i18n/de')).content,
17
+ en: async () => (await import('./i18n/en')).content,
18
+ es: async () => (await import('./i18n/es')).content,
19
+ fr: async () => (await import('./i18n/fr')).content,
20
+ id: async () => (await import('./i18n/id')).content,
21
+ it: async () => (await import('./i18n/it')).content,
22
+ ja: async () => (await import('./i18n/ja')).content,
23
+ ko: async () => (await import('./i18n/ko')).content,
24
+ nl: async () => (await import('./i18n/nl')).content,
25
+ pl: async () => (await import('./i18n/pl')).content,
26
+ pt: async () => (await import('./i18n/pt')).content,
27
+ ru: async () => (await import('./i18n/ru')).content,
28
+ sv: async () => (await import('./i18n/sv')).content,
29
+ tr: async () => (await import('./i18n/tr')).content,
30
+ zh: async () => (await import('./i18n/zh')).content,
23
31
  },
24
32
  };
25
33
 
@@ -0,0 +1,176 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { PlaceholderGeneratorUI } from '../ui';
4
+
5
+ const slug = 'platzhalter-bild-generator';
6
+ const title = 'Platzhalter Bild Generator. Schnelle Web Mockups online';
7
+ const description =
8
+ 'Erstellen Sie individuelle Platzhalterbilder für Ihre Web-Designs. Passen Sie Auflösung, Hintergrund und Text an und exportieren Sie sofort als PNG, WebP oder JPEG.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Was ist ein Platzhalterbild?',
13
+ answer:
14
+ 'Ein Platzhalterbild ist eine temporäre Grafik, die im Webdesign und bei der Seitenerstellung verwendet wird, um den Bereich zu reservieren, in dem später ein endgültiges Bild platziert wird. Sie helfen dabei, die Struktur einer Seite zu visualisieren, bevor der finale Inhalt vorliegt.',
15
+ },
16
+ {
17
+ question: 'Kann ich im Generator jede beliebige Auflösung verwenden?',
18
+ answer:
19
+ 'Ja, Sie können beliebige numerische Werte für Breite und Höhe eingeben. Der Generator erstellt eine Arbeitsfläche mit exakt den angeforderten Abmessungen – ideal für präzise Raster oder spezifische Werbeformate.',
20
+ },
21
+ {
22
+ question: 'In welchem Format werden die Bilder heruntergeladen?',
23
+ answer:
24
+ 'Standardmäßig werden Bilder im WebP-Format erzeugt, das eine optimale Kompression bietet. Sie können aber auch PNG für verlustfreie Qualität oder JPEG für klassische Kompatibilität wählen.',
25
+ },
26
+ {
27
+ question: 'Wird das auf einem Server verarbeitet?',
28
+ answer:
29
+ 'Nein, das gesamte Rendering erfolgt sofort im virtuellen Speicher (Canvas) Ihres eigenen Browsers. Die Verarbeitung ist augenblicklich und erfordert keinerlei Datenübertragung über das Netzwerk.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Abmessungen festlegen',
36
+ text: 'Geben Sie Breite und Höhe direkt ein oder klicken Sie auf eines der Voreinstellungen (FHD, HD, Instagram usw.), um die Felder automatisch auszufüllen.',
37
+ },
38
+ {
39
+ name: 'Farben und Text konfigurieren',
40
+ text: 'Wählen Sie Hintergrund- und Textfarbe über die nativen Auswahlfelder oder durch Eingabe eines Hexadezimalcodes. Optional können Sie einen eigenen Text eingeben, der die Standard-Dimensionsanzeige ersetzt.',
41
+ },
42
+ {
43
+ name: 'Schrift und Format auswählen',
44
+ text: 'Wählen Sie die Schriftfamilie und -größe. Legen Sie das Ausgabeformat (WebP, PNG oder JPEG) je nach Ihren Anforderungen fest.',
45
+ },
46
+ {
47
+ name: 'Bild herunterladen',
48
+ text: 'Klicken Sie auf die Schaltfläche „Herunterladen", um das erstellte Platzhalterbild direkt auf Ihrem Gerät zu speichern.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowToThing> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'de',
84
+ };
85
+
86
+ const ui: PlaceholderGeneratorUI = {
87
+ labelDimensions: 'Schnellformate',
88
+ labelWidth: 'Breite (px)',
89
+ labelHeight: 'Höhe (px)',
90
+ labelBgColor: 'Hintergrund',
91
+ labelTextColor: 'Text',
92
+ labelCustomText: 'Eigener Text (Optional)',
93
+ placeholderCustomText: 'z. B.: Hero-Banner',
94
+ labelFontFamily: 'Schriftart',
95
+ labelFontSize: 'Basisgröße',
96
+ fontSizeAuto: 'Automatisch',
97
+ labelFormat: 'Ausgabeformat',
98
+ btnDownload: 'Bild herunterladen',
99
+ };
100
+
101
+ export const content: ToolLocaleContent<PlaceholderGeneratorUI> = {
102
+ slug,
103
+ title,
104
+ description,
105
+ ui,
106
+ faqTitle: 'Häufig gestellte Fragen',
107
+ faq: faqData,
108
+ bibliographyTitle: 'Referenzen und Dokumentation',
109
+ bibliography: [
110
+ {
111
+ name: 'MDN Web Docs: HTMLCanvasElement.toDataURL()',
112
+ url: 'https://developer.mozilla.org/de/docs/Web/API/HTMLCanvasElement/toDataURL',
113
+ },
114
+ {
115
+ name: 'MDN Web Docs: CanvasRenderingContext2D',
116
+ url: 'https://developer.mozilla.org/de/docs/Web/API/CanvasRenderingContext2D',
117
+ },
118
+ {
119
+ name: 'W3C: HTML Canvas 2D Context',
120
+ url: 'https://www.w3.org/TR/2dcontext/',
121
+ },
122
+ ],
123
+ howTo: howToData,
124
+ schemas: [faqSchema, howToSchema, appSchema],
125
+ seo: [
126
+ {
127
+ type: 'title',
128
+ text: 'Das ideale Werkzeug für schnelle Mockups',
129
+ level: 2,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'In frühen Konzept- und Strukturphasen eines Webprojekts (Wireframing) ist das finale Bildmaterial selten verfügbar. Leere Platzhalter können die Gesamtwahrnehmung des Layouts verzerren und kritische Abstands- oder Proportionsfehler verbergen. Ein Platzhalter-Bild-Generator löst dieses Problem sofort: Er ermöglicht das Einfügen exakt dimensionierter, farbiger Flächen ohne Umwege.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Reibungsloses Design',
138
+ html: 'Beim Aufbau von CSS Grids ist ein Platzhalter mit exakt 1200x800 Pixeln oft unverzichtbar. Mit heruntergeladenen Füllblöcken vermeiden Sie überflüssiges CSS oder externe Skripte in Ihrem temporären Code.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Warum externe Dienste problematisch sind',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'paragraph',
147
+ html: 'Im Frontend-Alltag ist es verbreitet, Dienste wie <code>via.placeholder.com</code> direkt in <code>src</code>-Attribute einzubinden. Das klingt praktisch, hat aber erhebliche Nebenwirkungen, die ein gewissenhafter Entwickler vermeiden sollte.',
148
+ },
149
+ {
150
+ type: 'paragraph',
151
+ html: 'Jede externe Bildadresse in einer Entwicklungsseite erzeugt zusätzliche DNS-Anfragen, verlangsamt Hot-Reloading-Systeme wie Vite, Gulp oder Webpack und hinterlässt ungewollt Spuren in Branches, die irgendwann in der Cloud landen. Mit diesem Generator und dem Export im bevorzugten Format (WebP, PNG oder JPEG) bleibt Ihr Prototyp vollständig im Localhost-Modus.',
152
+ },
153
+ {
154
+ type: 'title',
155
+ text: 'Technische Stärken des Generators',
156
+ level: 3,
157
+ },
158
+ {
159
+ type: 'list',
160
+ items: [
161
+ '<strong>Pixel-genaue Auflösung:</strong> Der native HTML5 Canvas stellt sicher, dass die exportierte Arbeitsfläche arithmetisch exakt den vom Nutzer angegebenen Koordinaten entspricht.',
162
+ '<strong>Typografisches Autoscaling:</strong> Im automatischen Modus berechnet die Schriftgröße die Umfangsfläche und Zeichenanzahl, um den Text elegant einzupassen – ohne unerwünschte <em>Overflows</em>.',
163
+ '<strong>Hexadezimale Synchronisation:</strong> Bidirektionale Zustandskontrolle zwischen nativen HTML-Farbwählern und Texteingaben sorgt für präzise Kontraste, die Ihrer Figma- oder Penpot-Palette entsprechen.',
164
+ ],
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Die verborgene Kunst des technischen Wireframings',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: 'Kein monolithisches Projekt und kein Micro-Frontend kommt ohne Grundlagenarbeit aus – erst recht nicht bei anspruchsvollen Kunden oder Product Managern mit klarer Vision. Wer grafische Iterationen zügig durchführen kann, ohne fertige <em>Assets</em> mitschleppen zu müssen, hat einen klaren Vorteil. Dieser Generator greift direkt auf die moderne JS-API <code>toDataURL()</code> auf Ihrer lokalen Maschine zurück und liefert ein professionelles Ergebnis ohne fragwürdige Zwischenverarbeitung.',
174
+ },
175
+ ],
176
+ };
@@ -0,0 +1,176 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { PlaceholderGeneratorUI } from '../ui';
4
+
5
+ const slug = 'generator-gambar-placeholder';
6
+ const title = 'Generator Gambar Placeholder. Buat Mockup Web dengan Cepat';
7
+ const description =
8
+ 'Buat gambar placeholder kustom untuk desain web Anda. Atur resolusi, warna latar, teks, lalu ekspor dalam format PNG, WebP, atau JPEG secara instan.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Apa itu gambar placeholder?',
13
+ answer:
14
+ 'Gambar placeholder adalah grafis sementara yang digunakan dalam desain web dan tata letak halaman untuk mengisi ruang yang nantinya akan ditempati oleh gambar nyata. Gambar ini membantu memvisualisasikan struktur halaman sebelum konten final tersedia.',
15
+ },
16
+ {
17
+ question: 'Apakah saya bisa menggunakan resolusi apa pun di generator ini?',
18
+ answer:
19
+ 'Ya, Anda dapat memasukkan nilai numerik apa pun untuk lebar dan tinggi. Generator akan membuat kanvas dengan dimensi persis yang diminta, cocok untuk grid ketat atau banner iklan dengan ukuran tertentu.',
20
+ },
21
+ {
22
+ question: 'Dalam format apa gambar diunduh?',
23
+ answer:
24
+ 'Secara bawaan, gambar dihasilkan dalam format WebP untuk kompresi optimal. Namun Anda juga bisa memilih PNG untuk kualitas tanpa kompresi, atau JPEG untuk kompatibilitas yang lebih luas.',
25
+ },
26
+ {
27
+ question: 'Apakah ini diproses di server?',
28
+ answer:
29
+ 'Tidak, seluruh proses rendering gambar dilakukan secara instan di memori virtual (Canvas) browser Anda sendiri. Prosesnya langsung terjadi tanpa mengirim data apa pun melalui jaringan.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Tentukan dimensi',
36
+ text: 'Masukkan nilai lebar dan tinggi secara langsung, atau klik salah satu preset (FHD, HD, Instagram, dll.) untuk mengisinya secara otomatis.',
37
+ },
38
+ {
39
+ name: 'Atur warna dan teks',
40
+ text: 'Pilih warna latar belakang dan teks menggunakan pemilih warna bawaan atau dengan mengetik kode heksadesimal. Opsional, tambahkan teks khusus untuk menggantikan label dimensi default.',
41
+ },
42
+ {
43
+ name: 'Pilih tipografi dan format',
44
+ text: 'Tentukan jenis huruf dan ukuran font. Pilih format keluaran (WebP, PNG, atau JPEG) sesuai kebutuhan Anda.',
45
+ },
46
+ {
47
+ name: 'Unduh gambar',
48
+ text: 'Klik tombol Unduh untuk menyimpan gambar placeholder yang telah dibuat langsung ke perangkat Anda.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowToThing> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'id',
84
+ };
85
+
86
+ const ui: PlaceholderGeneratorUI = {
87
+ labelDimensions: 'Dimensi Cepat',
88
+ labelWidth: 'Lebar (px)',
89
+ labelHeight: 'Tinggi (px)',
90
+ labelBgColor: 'Latar Belakang',
91
+ labelTextColor: 'Teks',
92
+ labelCustomText: 'Teks Kustom (Opsional)',
93
+ placeholderCustomText: 'Mis: Banner Hero',
94
+ labelFontFamily: 'Tipografi',
95
+ labelFontSize: 'Ukuran Dasar',
96
+ fontSizeAuto: 'Otomatis',
97
+ labelFormat: 'Format Keluaran',
98
+ btnDownload: 'Unduh Gambar',
99
+ };
100
+
101
+ export const content: ToolLocaleContent<PlaceholderGeneratorUI> = {
102
+ slug,
103
+ title,
104
+ description,
105
+ ui,
106
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
107
+ faq: faqData,
108
+ bibliographyTitle: 'Referensi dan Dokumentasi',
109
+ bibliography: [
110
+ {
111
+ name: 'MDN Web Docs: HTMLCanvasElement.toDataURL()',
112
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL',
113
+ },
114
+ {
115
+ name: 'MDN Web Docs: CanvasRenderingContext2D',
116
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D',
117
+ },
118
+ {
119
+ name: 'W3C: HTML Canvas 2D Context',
120
+ url: 'https://www.w3.org/TR/2dcontext/',
121
+ },
122
+ ],
123
+ howTo: howToData,
124
+ schemas: [faqSchema, howToSchema, appSchema],
125
+ seo: [
126
+ {
127
+ type: 'title',
128
+ text: 'Solusi Terbaik untuk Mockup Web yang Cepat',
129
+ level: 2,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Pada tahap awal konseptualisasi atau perancangan struktur sebuah situs web (wireframing), kita jarang memiliki konten foto final. Ruang kosong tanpa gambar dapat mendistorsi gambaran keseluruhan produk dan menyembunyikan kesalahan kritis dalam jarak atau proporsi. Generator gambar placeholder menyelesaikan masalah ini seketika, memungkinkan Anda menyisipkan area berwarna dengan dimensi presisi secara langsung.',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Desain Tanpa Hambatan',
138
+ html: 'Saat membangun CSS Grid, placeholder dengan ukuran tepat seperti 1200x800 piksel sangatlah penting. Dengan mengunduh blok pengisi, Anda menghindari penambahan CSS ekstra atau skrip pihak ketiga ke dalam kode sementara Anda.',
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Mengapa Menghindari Layanan Eksternal Itu Penting',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'paragraph',
147
+ html: 'Praktik umum di ekosistem frontend adalah menautkan layanan seperti <code>via.placeholder.com</code> langsung ke atribut <code>src</code> dalam HTML. Meskipun terlihat praktis melalui parameter URL, pendekatan ini memiliki efek samping serius yang sebaiknya dihindari oleh developer yang teliti.',
148
+ },
149
+ {
150
+ type: 'paragraph',
151
+ html: 'Menyisipkan domain eksternal di setiap tag gambar pada halaman yang sedang dikembangkan akan meningkatkan permintaan DNS, memperlambat sistem hot-reloading seperti Vite, Gulp, atau Webpack, dan secara tidak sengaja meninggalkan jejak di branch yang akhirnya masuk ke cloud. Dengan menggunakan utilitas ini dan menghasilkan gambar dalam format pilihan Anda (WebP, PNG, atau JPEG), seluruh prototipe tetap berjalan sepenuhnya di mode localhost.',
152
+ },
153
+ {
154
+ type: 'title',
155
+ text: 'Fitur Utama Algoritma Generator',
156
+ level: 3,
157
+ },
158
+ {
159
+ type: 'list',
160
+ items: [
161
+ '<strong>Resolusi Pixel Perfect:</strong> HTML5 Canvas native memastikan kanvas yang diekspor secara aritmetis sesuai dengan koordinat yang ditentukan pengguna.',
162
+ '<strong>Autoscaling Tipografi:</strong> Dalam mode Otomatis, ukuran font dihitung berdasarkan area perimeter dan jumlah karakter agar teks muat dengan elegan tanpa menimbulkan <em>overflow</em> yang tidak diinginkan.',
163
+ '<strong>Sinkronisasi Heksadesimal:</strong> Kontrol status dua arah antara pemilih warna HTML native dan input teks memastikan kontras warna yang presisi sesuai palet UI/UX dari Figma atau Penpot Anda.',
164
+ ],
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Seni Wireframing Teknis yang Sering Terlupakan',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: 'Tidak ada proyek monolitik maupun micro frontend yang bisa melewati tahap pondasi begitu saja, terutama saat berhadapan dengan klien yang demanding atau Product Manager dengan visi yang kuat. Kemampuan melakukan iterasi grafis dengan cepat tanpa harus menunggu <em>aset</em> final adalah pembeda antara developer yang lincah dan yang terhambat. Generator ini memanfaatkan API JS modern <code>toDataURL()</code> langsung di mesin lokal Anda untuk menghasilkan output berkualitas industri tanpa pemrosesan perantara yang meragukan.',
174
+ },
175
+ ],
176
+ };
@@ -0,0 +1,176 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { PlaceholderGeneratorUI } from '../ui';
4
+
5
+ const slug = 'generatore-immagini-placeholder';
6
+ const title = 'Generatore di Immagini Placeholder. Mockup Web Rapidi Online';
7
+ const description =
8
+ 'Crea immagini segnaposto personalizzate per i tuoi design web. Regola risoluzione, sfondo, testo ed esporta in PNG, WebP o JPEG in pochi istanti.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: "Cos'è un'immagine placeholder?",
13
+ answer:
14
+ "Un'immagine placeholder o segnaposto è una grafica temporanea usata nel web design e nella progettazione di layout per riservare lo spazio destinato a un'immagine definitiva. Aiutano a visualizzare la struttura di una pagina prima che il contenuto finale sia disponibile.",
15
+ },
16
+ {
17
+ question: 'Posso usare qualsiasi risoluzione nel generatore?',
18
+ answer:
19
+ 'Sì, puoi inserire qualsiasi valore numerico per larghezza e altezza. Il generatore creerà una tela con le dimensioni esatte richieste, perfetta per griglie precise o banner pubblicitari specifici.',
20
+ },
21
+ {
22
+ question: 'In che formato vengono scaricate le immagini?',
23
+ answer:
24
+ "Per impostazione predefinita le immagini vengono generate in WebP per una compressione ottimale, ma puoi scegliere di scaricarle in PNG per la massima qualità senza perdita, o in JPEG per la compatibilità tradizionale.",
25
+ },
26
+ {
27
+ question: 'Il processo avviene su un server?',
28
+ answer:
29
+ 'No, il rendering completo avviene istantaneamente nella memoria virtuale (Canvas) del tuo browser. È immediato e non richiede alcun invio di dati attraverso la rete.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Imposta le dimensioni',
36
+ text: 'Inserisci i valori di larghezza e altezza direttamente oppure clicca su uno dei preset (FHD, HD, Instagram, ecc.) per compilarli in automatico.',
37
+ },
38
+ {
39
+ name: 'Configura colori e testo',
40
+ text: 'Scegli il colore di sfondo e del testo tramite i selettori nativi o digitando un codice esadecimale. Facoltativamente, aggiungi un testo personalizzato per sostituire la dicitura predefinita delle dimensioni.',
41
+ },
42
+ {
43
+ name: 'Seleziona tipografia e formato',
44
+ text: "Scegli la famiglia tipografica e la dimensione del carattere. Seleziona il formato di output (WebP, PNG o JPEG) in base alle tue esigenze.",
45
+ },
46
+ {
47
+ name: "Scarica l'immagine",
48
+ text: "Clicca sul pulsante Scarica per salvare il placeholder generato direttamente sul tuo dispositivo.",
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowToThing> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'it',
84
+ };
85
+
86
+ const ui: PlaceholderGeneratorUI = {
87
+ labelDimensions: 'Dimensioni Rapide',
88
+ labelWidth: 'Larghezza (px)',
89
+ labelHeight: 'Altezza (px)',
90
+ labelBgColor: 'Sfondo',
91
+ labelTextColor: 'Testo',
92
+ labelCustomText: 'Testo Personalizzato (Opzionale)',
93
+ placeholderCustomText: 'Es.: Banner Hero',
94
+ labelFontFamily: 'Tipografia',
95
+ labelFontSize: 'Dimensione Base',
96
+ fontSizeAuto: 'Automatico',
97
+ labelFormat: 'Formato di Output',
98
+ btnDownload: "Scarica l'immagine",
99
+ };
100
+
101
+ export const content: ToolLocaleContent<PlaceholderGeneratorUI> = {
102
+ slug,
103
+ title,
104
+ description,
105
+ ui,
106
+ faqTitle: 'Domande Frequenti',
107
+ faq: faqData,
108
+ bibliographyTitle: 'Riferimenti e Documentazione',
109
+ bibliography: [
110
+ {
111
+ name: 'MDN Web Docs: HTMLCanvasElement.toDataURL()',
112
+ url: 'https://developer.mozilla.org/it/docs/Web/API/HTMLCanvasElement/toDataURL',
113
+ },
114
+ {
115
+ name: 'MDN Web Docs: CanvasRenderingContext2D',
116
+ url: 'https://developer.mozilla.org/it/docs/Web/API/CanvasRenderingContext2D',
117
+ },
118
+ {
119
+ name: 'W3C: HTML Canvas 2D Context',
120
+ url: 'https://www.w3.org/TR/2dcontext/',
121
+ },
122
+ ],
123
+ howTo: howToData,
124
+ schemas: [faqSchema, howToSchema, appSchema],
125
+ seo: [
126
+ {
127
+ type: 'title',
128
+ text: 'Lo strumento definitivo per mockup rapidi',
129
+ level: 2,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: "Nelle fasi iniziali di concettualizzazione o strutturazione di un sito web (wireframing), il materiale fotografico finale è raramente disponibile. Le aree vuote possono distorcere la percezione complessiva del prodotto e nascondere errori critici di spaziatura o proporzioni. Un generatore di immagini placeholder risolve il problema all'istante, consentendo di inserire aree colorate con dimensioni precise senza perdere tempo.",
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: 'Design senza attriti',
138
+ html: "Quando si costruiscono CSS Grid, avere un'area di esattamente 1200x800 pixel è spesso imprescindibile. Scaricando i blocchi segnaposto si evita di iniettare CSS aggiuntivo o script di terze parti nel codice temporaneo.",
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Perché evitare i servizi esterni',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'paragraph',
147
+ html: "Nel mondo frontend è comune collegare servizi come <code>via.placeholder.com</code> direttamente negli attributi <code>src</code> dell'HTML. Sebbene sembri pratico tramite parametri URL, questo approccio presenta effetti collaterali rilevanti che uno sviluppatore attento preferirebbe evitare.",
148
+ },
149
+ {
150
+ type: 'paragraph',
151
+ html: "Inserire un dominio remoto in ogni tag immagine di una pagina in sviluppo incrementa le richieste DNS, penalizza i sistemi di hot-reloading di Vite, Gulp o Webpack e lascia tracce accidentali in branch che finiscono nel cloud. Usando questo strumento e generando l'immagine nel formato preferito (WebP, PNG o JPEG), il prototipo rimane completamente in modalità localhost.",
152
+ },
153
+ {
154
+ type: 'title',
155
+ text: "Caratteristiche tecniche del generatore",
156
+ level: 3,
157
+ },
158
+ {
159
+ type: 'list',
160
+ items: [
161
+ "<strong>Risoluzione Pixel Perfect:</strong> L'HTML5 Canvas nativo garantisce che la tela esportata corrisponda aritmeticamente alle coordinate specificate dall'utente.",
162
+ "<strong>Autoscaling Tipografico:</strong> In modalità Automatica, la dimensione del font calcola l'area perimetrale e il numero di caratteri per adattare il testo con eleganza senza generare <em>overflow</em> indesiderati.",
163
+ '<strong>Fusione Esadecimale:</strong> Il controllo bidirezionale dello stato tra i selettori nativi HTML e gli input testuali garantisce contrasti precisi in linea con la palette UI/UX del tuo progetto Figma o Penpot.',
164
+ ],
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'La dimensione nascosta del wireframing tecnico',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: "Non esiste progetto monolitico né micro frontend che non attraversi fasi di impostazione, soprattutto di fronte a clienti esigenti o Product Manager con una visione precisa. Poter iterare graficamente in modo rapido, senza dover trascinare <em>asset</em> definitivi, distingue lo sviluppatore efficiente da quello bloccato. Questo generatore sfrutta direttamente la moderna API JS <code>toDataURL()</code> sulla tua macchina locale per offrire un risultato di livello professionale, senza elaborazioni intermedie di dubbia affidabilità.",
174
+ },
175
+ ],
176
+ };