@jjlmoya/utils-developer 1.3.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 (339) 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/index.ts +12 -0
  16. package/src/tests/faq_count.test.ts +1 -1
  17. package/src/tests/i18n_coverage.test.ts +36 -0
  18. package/src/tests/locale_completeness.test.ts +2 -2
  19. package/src/tests/slug_uniqueness.test.ts +81 -0
  20. package/src/tool/aspectRatio/i18n/de.ts +177 -0
  21. package/src/tool/aspectRatio/i18n/id.ts +177 -0
  22. package/src/tool/aspectRatio/i18n/it.ts +177 -0
  23. package/src/tool/aspectRatio/i18n/ja.ts +178 -0
  24. package/src/tool/aspectRatio/i18n/ko.ts +178 -0
  25. package/src/tool/aspectRatio/i18n/nl.ts +178 -0
  26. package/src/tool/aspectRatio/i18n/pl.ts +177 -0
  27. package/src/tool/aspectRatio/i18n/pt.ts +177 -0
  28. package/src/tool/aspectRatio/i18n/ru.ts +177 -0
  29. package/src/tool/aspectRatio/i18n/sv.ts +177 -0
  30. package/src/tool/aspectRatio/i18n/tr.ts +177 -0
  31. package/src/tool/aspectRatio/i18n/zh.ts +178 -0
  32. package/src/tool/aspectRatio/index.ts +15 -7
  33. package/src/tool/calculadoraTiempoDatos/i18n/de.ts +150 -0
  34. package/src/tool/calculadoraTiempoDatos/i18n/id.ts +150 -0
  35. package/src/tool/calculadoraTiempoDatos/i18n/it.ts +150 -0
  36. package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +151 -0
  37. package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +151 -0
  38. package/src/tool/calculadoraTiempoDatos/i18n/nl.ts +150 -0
  39. package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +150 -0
  40. package/src/tool/calculadoraTiempoDatos/i18n/pt.ts +150 -0
  41. package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +151 -0
  42. package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +150 -0
  43. package/src/tool/calculadoraTiempoDatos/i18n/tr.ts +150 -0
  44. package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +151 -0
  45. package/src/tool/calculadoraTiempoDatos/index.ts +15 -7
  46. package/src/tool/colorConverter/i18n/de.ts +126 -0
  47. package/src/tool/colorConverter/i18n/id.ts +126 -0
  48. package/src/tool/colorConverter/i18n/it.ts +126 -0
  49. package/src/tool/colorConverter/i18n/ja.ts +127 -0
  50. package/src/tool/colorConverter/i18n/ko.ts +127 -0
  51. package/src/tool/colorConverter/i18n/nl.ts +126 -0
  52. package/src/tool/colorConverter/i18n/pl.ts +126 -0
  53. package/src/tool/colorConverter/i18n/pt.ts +126 -0
  54. package/src/tool/colorConverter/i18n/ru.ts +126 -0
  55. package/src/tool/colorConverter/i18n/sv.ts +126 -0
  56. package/src/tool/colorConverter/i18n/tr.ts +126 -0
  57. package/src/tool/colorConverter/i18n/zh.ts +127 -0
  58. package/src/tool/colorConverter/index.ts +15 -7
  59. package/src/tool/conversorExcelCsvHtml/i18n/de.ts +129 -0
  60. package/src/tool/conversorExcelCsvHtml/i18n/id.ts +129 -0
  61. package/src/tool/conversorExcelCsvHtml/i18n/it.ts +129 -0
  62. package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +130 -0
  63. package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +130 -0
  64. package/src/tool/conversorExcelCsvHtml/i18n/nl.ts +129 -0
  65. package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +129 -0
  66. package/src/tool/conversorExcelCsvHtml/i18n/pt.ts +129 -0
  67. package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +129 -0
  68. package/src/tool/conversorExcelCsvHtml/i18n/sv.ts +129 -0
  69. package/src/tool/conversorExcelCsvHtml/i18n/tr.ts +129 -0
  70. package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +130 -0
  71. package/src/tool/conversorExcelCsvHtml/index.ts +15 -7
  72. package/src/tool/cronGenerator/i18n/de.ts +192 -0
  73. package/src/tool/cronGenerator/i18n/es.ts +2 -1
  74. package/src/tool/cronGenerator/i18n/fr.ts +2 -1
  75. package/src/tool/cronGenerator/i18n/id.ts +192 -0
  76. package/src/tool/cronGenerator/i18n/it.ts +192 -0
  77. package/src/tool/cronGenerator/i18n/ja.ts +192 -0
  78. package/src/tool/cronGenerator/i18n/ko.ts +192 -0
  79. package/src/tool/cronGenerator/i18n/nl.ts +192 -0
  80. package/src/tool/cronGenerator/i18n/pl.ts +192 -0
  81. package/src/tool/cronGenerator/i18n/pt.ts +192 -0
  82. package/src/tool/cronGenerator/i18n/ru.ts +192 -0
  83. package/src/tool/cronGenerator/i18n/sv.ts +192 -0
  84. package/src/tool/cronGenerator/i18n/tr.ts +192 -0
  85. package/src/tool/cronGenerator/i18n/zh.ts +192 -0
  86. package/src/tool/cronGenerator/index.ts +15 -7
  87. package/src/tool/cssSpecificityCalculator/i18n/de.ts +168 -0
  88. package/src/tool/cssSpecificityCalculator/i18n/id.ts +168 -0
  89. package/src/tool/cssSpecificityCalculator/i18n/it.ts +168 -0
  90. package/src/tool/cssSpecificityCalculator/i18n/ja.ts +169 -0
  91. package/src/tool/cssSpecificityCalculator/i18n/ko.ts +169 -0
  92. package/src/tool/cssSpecificityCalculator/i18n/nl.ts +168 -0
  93. package/src/tool/cssSpecificityCalculator/i18n/pl.ts +168 -0
  94. package/src/tool/cssSpecificityCalculator/i18n/pt.ts +168 -0
  95. package/src/tool/cssSpecificityCalculator/i18n/ru.ts +168 -0
  96. package/src/tool/cssSpecificityCalculator/i18n/sv.ts +168 -0
  97. package/src/tool/cssSpecificityCalculator/i18n/tr.ts +168 -0
  98. package/src/tool/cssSpecificityCalculator/i18n/zh.ts +169 -0
  99. package/src/tool/cssSpecificityCalculator/index.ts +15 -7
  100. package/src/tool/cssToInlineConverter/i18n/de.ts +160 -0
  101. package/src/tool/cssToInlineConverter/i18n/id.ts +160 -0
  102. package/src/tool/cssToInlineConverter/i18n/it.ts +160 -0
  103. package/src/tool/cssToInlineConverter/i18n/ja.ts +161 -0
  104. package/src/tool/cssToInlineConverter/i18n/ko.ts +161 -0
  105. package/src/tool/cssToInlineConverter/i18n/nl.ts +160 -0
  106. package/src/tool/cssToInlineConverter/i18n/pl.ts +160 -0
  107. package/src/tool/cssToInlineConverter/i18n/pt.ts +160 -0
  108. package/src/tool/cssToInlineConverter/i18n/ru.ts +160 -0
  109. package/src/tool/cssToInlineConverter/i18n/sv.ts +160 -0
  110. package/src/tool/cssToInlineConverter/i18n/tr.ts +160 -0
  111. package/src/tool/cssToInlineConverter/i18n/zh.ts +161 -0
  112. package/src/tool/cssToInlineConverter/index.ts +15 -7
  113. package/src/tool/duplicateCssRemover/i18n/de.ts +167 -0
  114. package/src/tool/duplicateCssRemover/i18n/id.ts +167 -0
  115. package/src/tool/duplicateCssRemover/i18n/it.ts +167 -0
  116. package/src/tool/duplicateCssRemover/i18n/ja.ts +168 -0
  117. package/src/tool/duplicateCssRemover/i18n/ko.ts +168 -0
  118. package/src/tool/duplicateCssRemover/i18n/nl.ts +167 -0
  119. package/src/tool/duplicateCssRemover/i18n/pl.ts +167 -0
  120. package/src/tool/duplicateCssRemover/i18n/pt.ts +167 -0
  121. package/src/tool/duplicateCssRemover/i18n/ru.ts +167 -0
  122. package/src/tool/duplicateCssRemover/i18n/sv.ts +167 -0
  123. package/src/tool/duplicateCssRemover/i18n/tr.ts +167 -0
  124. package/src/tool/duplicateCssRemover/i18n/zh.ts +168 -0
  125. package/src/tool/duplicateCssRemover/index.ts +15 -7
  126. package/src/tool/generadorSecurityTxt/i18n/de.ts +174 -0
  127. package/src/tool/generadorSecurityTxt/i18n/id.ts +174 -0
  128. package/src/tool/generadorSecurityTxt/i18n/it.ts +174 -0
  129. package/src/tool/generadorSecurityTxt/i18n/ja.ts +174 -0
  130. package/src/tool/generadorSecurityTxt/i18n/ko.ts +174 -0
  131. package/src/tool/generadorSecurityTxt/i18n/nl.ts +174 -0
  132. package/src/tool/generadorSecurityTxt/i18n/pl.ts +174 -0
  133. package/src/tool/generadorSecurityTxt/i18n/pt.ts +174 -0
  134. package/src/tool/generadorSecurityTxt/i18n/ru.ts +174 -0
  135. package/src/tool/generadorSecurityTxt/i18n/sv.ts +174 -0
  136. package/src/tool/generadorSecurityTxt/i18n/tr.ts +174 -0
  137. package/src/tool/generadorSecurityTxt/i18n/zh.ts +174 -0
  138. package/src/tool/generadorSecurityTxt/index.ts +15 -7
  139. package/src/tool/hashGenerator/i18n/de.ts +119 -0
  140. package/src/tool/hashGenerator/i18n/id.ts +119 -0
  141. package/src/tool/hashGenerator/i18n/it.ts +118 -0
  142. package/src/tool/hashGenerator/i18n/ja.ts +119 -0
  143. package/src/tool/hashGenerator/i18n/ko.ts +119 -0
  144. package/src/tool/hashGenerator/i18n/nl.ts +119 -0
  145. package/src/tool/hashGenerator/i18n/pl.ts +118 -0
  146. package/src/tool/hashGenerator/i18n/pt.ts +118 -0
  147. package/src/tool/hashGenerator/i18n/ru.ts +119 -0
  148. package/src/tool/hashGenerator/i18n/sv.ts +119 -0
  149. package/src/tool/hashGenerator/i18n/tr.ts +118 -0
  150. package/src/tool/hashGenerator/i18n/zh.ts +119 -0
  151. package/src/tool/hashGenerator/index.ts +15 -7
  152. package/src/tool/inspectorCertificadosSsl/i18n/de.ts +214 -0
  153. package/src/tool/inspectorCertificadosSsl/i18n/id.ts +215 -0
  154. package/src/tool/inspectorCertificadosSsl/i18n/it.ts +214 -0
  155. package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +215 -0
  156. package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +215 -0
  157. package/src/tool/inspectorCertificadosSsl/i18n/nl.ts +215 -0
  158. package/src/tool/inspectorCertificadosSsl/i18n/pl.ts +215 -0
  159. package/src/tool/inspectorCertificadosSsl/i18n/pt.ts +214 -0
  160. package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +215 -0
  161. package/src/tool/inspectorCertificadosSsl/i18n/sv.ts +215 -0
  162. package/src/tool/inspectorCertificadosSsl/i18n/tr.ts +215 -0
  163. package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +215 -0
  164. package/src/tool/inspectorCertificadosSsl/index.ts +24 -0
  165. package/src/tool/jsonFormatter/i18n/de.ts +157 -0
  166. package/src/tool/jsonFormatter/i18n/es.ts +2 -1
  167. package/src/tool/jsonFormatter/i18n/fr.ts +2 -1
  168. package/src/tool/jsonFormatter/i18n/id.ts +157 -0
  169. package/src/tool/jsonFormatter/i18n/it.ts +156 -0
  170. package/src/tool/jsonFormatter/i18n/ja.ts +157 -0
  171. package/src/tool/jsonFormatter/i18n/ko.ts +157 -0
  172. package/src/tool/jsonFormatter/i18n/nl.ts +157 -0
  173. package/src/tool/jsonFormatter/i18n/pl.ts +156 -0
  174. package/src/tool/jsonFormatter/i18n/pt.ts +156 -0
  175. package/src/tool/jsonFormatter/i18n/ru.ts +157 -0
  176. package/src/tool/jsonFormatter/i18n/sv.ts +157 -0
  177. package/src/tool/jsonFormatter/i18n/tr.ts +157 -0
  178. package/src/tool/jsonFormatter/i18n/zh.ts +157 -0
  179. package/src/tool/jsonFormatter/index.ts +15 -7
  180. package/src/tool/keycode/i18n/de.ts +161 -0
  181. package/src/tool/keycode/i18n/es.ts +2 -1
  182. package/src/tool/keycode/i18n/fr.ts +2 -1
  183. package/src/tool/keycode/i18n/id.ts +161 -0
  184. package/src/tool/keycode/i18n/it.ts +161 -0
  185. package/src/tool/keycode/i18n/ja.ts +161 -0
  186. package/src/tool/keycode/i18n/ko.ts +161 -0
  187. package/src/tool/keycode/i18n/nl.ts +161 -0
  188. package/src/tool/keycode/i18n/pl.ts +161 -0
  189. package/src/tool/keycode/i18n/pt.ts +160 -0
  190. package/src/tool/keycode/i18n/ru.ts +160 -0
  191. package/src/tool/keycode/i18n/sv.ts +160 -0
  192. package/src/tool/keycode/i18n/tr.ts +160 -0
  193. package/src/tool/keycode/i18n/zh.ts +161 -0
  194. package/src/tool/keycode/index.ts +15 -7
  195. package/src/tool/llmCostCalculator/i18n/de.ts +166 -0
  196. package/src/tool/llmCostCalculator/i18n/fr.ts +2 -1
  197. package/src/tool/llmCostCalculator/i18n/id.ts +166 -0
  198. package/src/tool/llmCostCalculator/i18n/it.ts +166 -0
  199. package/src/tool/llmCostCalculator/i18n/ja.ts +166 -0
  200. package/src/tool/llmCostCalculator/i18n/ko.ts +166 -0
  201. package/src/tool/llmCostCalculator/i18n/nl.ts +166 -0
  202. package/src/tool/llmCostCalculator/i18n/pl.ts +165 -0
  203. package/src/tool/llmCostCalculator/i18n/pt.ts +165 -0
  204. package/src/tool/llmCostCalculator/i18n/ru.ts +165 -0
  205. package/src/tool/llmCostCalculator/i18n/sv.ts +165 -0
  206. package/src/tool/llmCostCalculator/i18n/tr.ts +165 -0
  207. package/src/tool/llmCostCalculator/i18n/zh.ts +166 -0
  208. package/src/tool/llmCostCalculator/index.ts +24 -0
  209. package/src/tool/mobileMockupGenerator/i18n/de.ts +121 -0
  210. package/src/tool/mobileMockupGenerator/i18n/id.ts +121 -0
  211. package/src/tool/mobileMockupGenerator/i18n/it.ts +121 -0
  212. package/src/tool/mobileMockupGenerator/i18n/ja.ts +122 -0
  213. package/src/tool/mobileMockupGenerator/i18n/ko.ts +122 -0
  214. package/src/tool/mobileMockupGenerator/i18n/nl.ts +121 -0
  215. package/src/tool/mobileMockupGenerator/i18n/pl.ts +31 -0
  216. package/src/tool/mobileMockupGenerator/i18n/pt.ts +121 -0
  217. package/src/tool/mobileMockupGenerator/i18n/ru.ts +121 -0
  218. package/src/tool/mobileMockupGenerator/i18n/sv.ts +121 -0
  219. package/src/tool/mobileMockupGenerator/i18n/tr.ts +121 -0
  220. package/src/tool/mobileMockupGenerator/i18n/zh.ts +122 -0
  221. package/src/tool/mobileMockupGenerator/index.ts +24 -0
  222. package/src/tool/musicalTypography/i18n/de.ts +179 -0
  223. package/src/tool/musicalTypography/i18n/id.ts +179 -0
  224. package/src/tool/musicalTypography/i18n/it.ts +179 -0
  225. package/src/tool/musicalTypography/i18n/ja.ts +180 -0
  226. package/src/tool/musicalTypography/i18n/ko.ts +180 -0
  227. package/src/tool/musicalTypography/i18n/nl.ts +179 -0
  228. package/src/tool/musicalTypography/i18n/pl.ts +179 -0
  229. package/src/tool/musicalTypography/i18n/pt.ts +101 -0
  230. package/src/tool/musicalTypography/i18n/ru.ts +47 -0
  231. package/src/tool/musicalTypography/i18n/sv.ts +29 -0
  232. package/src/tool/musicalTypography/i18n/tr.ts +29 -0
  233. package/src/tool/musicalTypography/i18n/zh.ts +30 -0
  234. package/src/tool/musicalTypography/index.ts +15 -7
  235. package/src/tool/placeholderGenerator/i18n/de.ts +176 -0
  236. package/src/tool/placeholderGenerator/i18n/id.ts +176 -0
  237. package/src/tool/placeholderGenerator/i18n/it.ts +176 -0
  238. package/src/tool/placeholderGenerator/i18n/ja.ts +177 -0
  239. package/src/tool/placeholderGenerator/i18n/ko.ts +177 -0
  240. package/src/tool/placeholderGenerator/i18n/nl.ts +176 -0
  241. package/src/tool/placeholderGenerator/i18n/pl.ts +176 -0
  242. package/src/tool/placeholderGenerator/i18n/pt.ts +176 -0
  243. package/src/tool/placeholderGenerator/i18n/ru.ts +176 -0
  244. package/src/tool/placeholderGenerator/i18n/sv.ts +176 -0
  245. package/src/tool/placeholderGenerator/i18n/tr.ts +176 -0
  246. package/src/tool/placeholderGenerator/i18n/zh.ts +177 -0
  247. package/src/tool/placeholderGenerator/index.ts +24 -0
  248. package/src/tool/promptLibrary/i18n/de.ts +131 -0
  249. package/src/tool/promptLibrary/i18n/id.ts +131 -0
  250. package/src/tool/promptLibrary/i18n/it.ts +131 -0
  251. package/src/tool/promptLibrary/i18n/ja.ts +132 -0
  252. package/src/tool/promptLibrary/i18n/ko.ts +132 -0
  253. package/src/tool/promptLibrary/i18n/nl.ts +131 -0
  254. package/src/tool/promptLibrary/i18n/pl.ts +28 -0
  255. package/src/tool/promptLibrary/i18n/pt.ts +101 -0
  256. package/src/tool/promptLibrary/i18n/ru.ts +101 -0
  257. package/src/tool/promptLibrary/i18n/sv.ts +93 -0
  258. package/src/tool/promptLibrary/i18n/tr.ts +93 -0
  259. package/src/tool/promptLibrary/i18n/zh.ts +94 -0
  260. package/src/tool/promptLibrary/index.ts +24 -0
  261. package/src/tool/readabilityCalculator/i18n/de.ts +133 -0
  262. package/src/tool/readabilityCalculator/i18n/id.ts +133 -0
  263. package/src/tool/readabilityCalculator/i18n/it.ts +133 -0
  264. package/src/tool/readabilityCalculator/i18n/ja.ts +134 -0
  265. package/src/tool/readabilityCalculator/i18n/ko.ts +134 -0
  266. package/src/tool/readabilityCalculator/i18n/nl.ts +133 -0
  267. package/src/tool/readabilityCalculator/i18n/pl.ts +29 -0
  268. package/src/tool/readabilityCalculator/i18n/pt.ts +91 -0
  269. package/src/tool/readabilityCalculator/i18n/ru.ts +91 -0
  270. package/src/tool/readabilityCalculator/i18n/sv.ts +43 -0
  271. package/src/tool/readabilityCalculator/i18n/tr.ts +43 -0
  272. package/src/tool/readabilityCalculator/i18n/zh.ts +44 -0
  273. package/src/tool/readabilityCalculator/index.ts +24 -0
  274. package/src/tool/svgSanitizer/i18n/de.ts +125 -0
  275. package/src/tool/svgSanitizer/i18n/id.ts +125 -0
  276. package/src/tool/svgSanitizer/i18n/it.ts +125 -0
  277. package/src/tool/svgSanitizer/i18n/ja.ts +126 -0
  278. package/src/tool/svgSanitizer/i18n/ko.ts +126 -0
  279. package/src/tool/svgSanitizer/i18n/nl.ts +125 -0
  280. package/src/tool/svgSanitizer/i18n/pl.ts +125 -0
  281. package/src/tool/svgSanitizer/i18n/pt.ts +30 -0
  282. package/src/tool/svgSanitizer/i18n/ru.ts +126 -0
  283. package/src/tool/svgSanitizer/i18n/sv.ts +126 -0
  284. package/src/tool/svgSanitizer/i18n/tr.ts +126 -0
  285. package/src/tool/svgSanitizer/i18n/zh.ts +126 -0
  286. package/src/tool/svgSanitizer/index.ts +24 -0
  287. package/src/tool/svgToCss/i18n/de.ts +174 -0
  288. package/src/tool/svgToCss/i18n/id.ts +174 -0
  289. package/src/tool/svgToCss/i18n/it.ts +174 -0
  290. package/src/tool/svgToCss/i18n/ja.ts +175 -0
  291. package/src/tool/svgToCss/i18n/ko.ts +175 -0
  292. package/src/tool/svgToCss/i18n/nl.ts +174 -0
  293. package/src/tool/svgToCss/i18n/pl.ts +174 -0
  294. package/src/tool/svgToCss/i18n/pt.ts +174 -0
  295. package/src/tool/svgToCss/i18n/ru.ts +174 -0
  296. package/src/tool/svgToCss/i18n/sv.ts +174 -0
  297. package/src/tool/svgToCss/i18n/tr.ts +174 -0
  298. package/src/tool/svgToCss/i18n/zh.ts +175 -0
  299. package/src/tool/svgToCss/index.ts +15 -7
  300. package/src/tool/urlCleaner/i18n/de.ts +116 -0
  301. package/src/tool/urlCleaner/i18n/id.ts +116 -0
  302. package/src/tool/urlCleaner/i18n/it.ts +116 -0
  303. package/src/tool/urlCleaner/i18n/ja.ts +117 -0
  304. package/src/tool/urlCleaner/i18n/ko.ts +117 -0
  305. package/src/tool/urlCleaner/i18n/nl.ts +116 -0
  306. package/src/tool/urlCleaner/i18n/pl.ts +29 -0
  307. package/src/tool/urlCleaner/i18n/pt.ts +43 -0
  308. package/src/tool/urlCleaner/i18n/ru.ts +43 -0
  309. package/src/tool/urlCleaner/i18n/sv.ts +43 -0
  310. package/src/tool/urlCleaner/i18n/tr.ts +43 -0
  311. package/src/tool/urlCleaner/i18n/zh.ts +44 -0
  312. package/src/tool/urlCleaner/index.ts +24 -0
  313. package/src/tool/urlEncoderDecoder/i18n/de.ts +163 -0
  314. package/src/tool/urlEncoderDecoder/i18n/id.ts +163 -0
  315. package/src/tool/urlEncoderDecoder/i18n/it.ts +163 -0
  316. package/src/tool/urlEncoderDecoder/i18n/ja.ts +163 -0
  317. package/src/tool/urlEncoderDecoder/i18n/ko.ts +163 -0
  318. package/src/tool/urlEncoderDecoder/i18n/nl.ts +163 -0
  319. package/src/tool/urlEncoderDecoder/i18n/pl.ts +162 -0
  320. package/src/tool/urlEncoderDecoder/i18n/pt.ts +162 -0
  321. package/src/tool/urlEncoderDecoder/i18n/ru.ts +163 -0
  322. package/src/tool/urlEncoderDecoder/i18n/sv.ts +163 -0
  323. package/src/tool/urlEncoderDecoder/i18n/tr.ts +162 -0
  324. package/src/tool/urlEncoderDecoder/i18n/zh.ts +163 -0
  325. package/src/tool/urlEncoderDecoder/index.ts +15 -7
  326. package/src/tool/utmGenerator/i18n/de.ts +118 -0
  327. package/src/tool/utmGenerator/i18n/id.ts +118 -0
  328. package/src/tool/utmGenerator/i18n/it.ts +118 -0
  329. package/src/tool/utmGenerator/i18n/ja.ts +118 -0
  330. package/src/tool/utmGenerator/i18n/ko.ts +118 -0
  331. package/src/tool/utmGenerator/i18n/nl.ts +118 -0
  332. package/src/tool/utmGenerator/i18n/pl.ts +117 -0
  333. package/src/tool/utmGenerator/i18n/pt.ts +118 -0
  334. package/src/tool/utmGenerator/i18n/ru.ts +118 -0
  335. package/src/tool/utmGenerator/i18n/sv.ts +118 -0
  336. package/src/tool/utmGenerator/i18n/tr.ts +117 -0
  337. package/src/tool/utmGenerator/i18n/zh.ts +118 -0
  338. package/src/tool/utmGenerator/index.ts +15 -7
  339. package/src/types.ts +1 -2
@@ -7,10 +7,6 @@ import type { CssSpecificityCalculatorUI } from './ui';
7
7
 
8
8
  export type CssSpecificityCalculatorLocaleContent = ToolLocaleContent<CssSpecificityCalculatorUI>;
9
9
 
10
- import { content as es } from './i18n/es';
11
- import { content as en } from './i18n/en';
12
- import { content as fr } from './i18n/fr';
13
-
14
10
  export const cssSpecificityCalculator: DeveloperToolEntry<CssSpecificityCalculatorUI> = {
15
11
  id: 'css-specificity-calculator',
16
12
  icons: {
@@ -18,9 +14,21 @@ export const cssSpecificityCalculator: DeveloperToolEntry<CssSpecificityCalculat
18
14
  fg: 'mdi:language-css3',
19
15
  },
20
16
  i18n: {
21
- es: async () => es,
22
- en: async () => en,
23
- fr: async () => fr,
17
+ de: async () => (await import('./i18n/de')).content,
18
+ en: async () => (await import('./i18n/en')).content,
19
+ es: async () => (await import('./i18n/es')).content,
20
+ fr: async () => (await import('./i18n/fr')).content,
21
+ id: async () => (await import('./i18n/id')).content,
22
+ it: async () => (await import('./i18n/it')).content,
23
+ ja: async () => (await import('./i18n/ja')).content,
24
+ ko: async () => (await import('./i18n/ko')).content,
25
+ nl: async () => (await import('./i18n/nl')).content,
26
+ pl: async () => (await import('./i18n/pl')).content,
27
+ pt: async () => (await import('./i18n/pt')).content,
28
+ ru: async () => (await import('./i18n/ru')).content,
29
+ sv: async () => (await import('./i18n/sv')).content,
30
+ tr: async () => (await import('./i18n/tr')).content,
31
+ zh: async () => (await import('./i18n/zh')).content,
24
32
  },
25
33
  };
26
34
 
@@ -0,0 +1,160 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { CssToInlineConverterUI } from '../ui';
4
+
5
+ const slug = 'css-zu-inline-html-konverter';
6
+ const title = 'CSS zu Inline HTML konvertieren. Inliner für Emails';
7
+ const description =
8
+ 'Wandeln Sie Ihre Stylesheets und CSS-Klassen in direkt eingebettete Inline-Styles innerhalb Ihres HTML um. Ideal für Newsletter, transaktionale Emails und zuverlässige Web-Layouts.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Warum benötigen Emails Inline-CSS statt externer Stylesheets?',
13
+ answer:
14
+ 'E-Mail-Clients wie Outlook, Gmail oder Apple Mail filtern oder ignorieren <link>- und <style>-Tags aus Sicherheitsgründen. Die einzige zuverlässige Methode, damit ein Stil in einer E-Mail korrekt angezeigt wird, ist, ihn direkt im style-Attribut des jeweiligen HTML-Elements einzubetten.',
15
+ },
16
+ {
17
+ question: 'Was passiert, wenn ein Element bereits ein eigenes style-Attribut hat?',
18
+ answer:
19
+ 'Das Werkzeug respektiert vorhandene Inline-Styles und fügt die neuen Eigenschaften dahinter an – es simuliert dabei das Verhalten der CSS-Kaskade: Bei Konflikten überschreiben später deklarierte Eigenschaften frühere.',
20
+ },
21
+ {
22
+ question: 'Funktioniert es auch mit komplexen Selektoren wie :hover oder Media Queries?',
23
+ answer:
24
+ 'Das Werkzeug verarbeitet Klassen-, ID-, Attribut- und strukturelle Pseudo-Klassen-Selektoren, die DOMParser auflösen kann. Zustandsabhängige Selektoren wie :hover und Media Queries können nicht inline eingebettet werden – sie hängen von der Laufzeitumgebung ab und werden ignoriert.',
25
+ },
26
+ {
27
+ question: 'Wird mein HTML- und CSS-Code an einen Server gesendet?',
28
+ answer:
29
+ 'Nein. Die gesamte Verarbeitung findet zu 100 % in Ihrem Browser mithilfe der nativen DOMParser-API statt. Kein einziges Byte Ihres Codes verlässt Ihr Gerät – das garantiert vollständige Privatsphäre, auch bei Vorlagen mit vertraulichen Inhalten.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Fügen Sie Ihr HTML ein',
36
+ text: 'Schreiben oder fügen Sie das HTML, das Sie verarbeiten möchten, in das Feld „Original-HTML" ein. Es kann sich um ein Fragment oder ein vollständiges Dokument handeln.',
37
+ },
38
+ {
39
+ name: 'CSS-Regeln hinzufügen',
40
+ text: 'Fügen Sie die Klassen und IDs, die Sie einbetten möchten, in das Feld „CSS-Regeln" ein. Das Werkzeug wendet sie unter Berücksichtigung der Selektorspezifität an.',
41
+ },
42
+ {
43
+ name: 'Konvertieren und kopieren',
44
+ text: 'Klicken Sie auf „CSS in HTML einbetten". Das Ergebnis mit allen Inline-Styles erscheint darunter – bereit zum Kopieren und Einfügen in Ihren E-Mail-Manager oder Ihr CMS.',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faqData.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+
58
+ const howToSchema: WithContext<HowToThing> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'HowTo',
61
+ name: title,
62
+ description,
63
+ step: howToData.map((step, i) => ({
64
+ '@type': 'HowToStep',
65
+ position: i + 1,
66
+ name: step.name,
67
+ text: step.text,
68
+ })),
69
+ };
70
+
71
+ const appSchema: WithContext<SoftwareApplication> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'SoftwareApplication',
74
+ name: title,
75
+ description,
76
+ applicationCategory: 'UtilityApplication',
77
+ operatingSystem: 'All',
78
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
79
+ inLanguage: 'de',
80
+ };
81
+
82
+ const ui: CssToInlineConverterUI = {
83
+ labelHtml: 'Original-HTML',
84
+ labelCss: 'CSS-Regeln',
85
+ labelOutput: 'Ergebnis als Inline-HTML',
86
+ placeholderHtml: '<div class="meine-klasse">Hallo Welt</div>',
87
+ placeholderCss: '.meine-klasse { color: red; padding: 10px; }',
88
+ placeholderOutput: 'Hier erscheint Ihr HTML mit eingebetteten Styles...',
89
+ btnConvert: 'CSS in HTML einbetten',
90
+ btnCopy: 'Code kopieren',
91
+ btnCopied: 'Kopiert!',
92
+ msgError: 'Verarbeitungsfehler. Prüfen Sie, ob HTML und CSS korrekt sind.',
93
+ };
94
+
95
+ export const content: ToolLocaleContent<CssToInlineConverterUI> = {
96
+ slug,
97
+ title,
98
+ description,
99
+ ui,
100
+ faqTitle: 'Häufig gestellte Fragen',
101
+ faq: faqData,
102
+ bibliographyTitle: 'Referenzen und Dokumentation',
103
+ bibliography: [
104
+ {
105
+ name: 'Can I email: HTML- und CSS-Unterstützungsmatrix für Emails',
106
+ url: 'https://www.caniemail.com/',
107
+ },
108
+ {
109
+ name: 'MDN Web Docs: Das globale style-Attribut',
110
+ url: 'https://developer.mozilla.org/de/docs/Web/HTML/Global_attributes/style',
111
+ },
112
+ {
113
+ name: 'DOMParser API: Sicheres Parsen im Browser',
114
+ url: 'https://developer.mozilla.org/de/docs/Web/API/DOMParser',
115
+ },
116
+ ],
117
+ howTo: howToData,
118
+ schemas: [faqSchema, howToSchema, appSchema],
119
+ seo: [
120
+ {
121
+ type: 'title',
122
+ text: 'Was ist ein CSS Inliner und wozu brauchen Sie ihn?',
123
+ level: 2,
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: 'Bei der Entwicklung moderner Webanwendungen sind wir es gewohnt, Verantwortlichkeiten zu trennen: HTML bildet die Struktur, eine externe CSS-Datei liefert das gesamte visuelle Styling. Doch nicht alle Umgebungen vertrauen externen Stylesheets oder globalen <code>&lt;style&gt;</code>-Tags.',
128
+ },
129
+ {
130
+ type: 'paragraph',
131
+ html: 'Der bekannteste und strengste Anwendungsfall, in dem externes CSS versagt, ist die <strong>Entwicklung von E-Mail-Vorlagen</strong>. In diesen Umgebungen ist die einzige zuverlässige Methode, damit Schrift, Farbe oder Abstand korrekt dargestellt werden, sie direkt in das Tag einzubetten: <code>&lt;span style="color: red;"&gt;</code>.',
132
+ },
133
+ {
134
+ type: 'title',
135
+ text: 'Das CSS-Problem in E-Mail-Clients',
136
+ level: 3,
137
+ },
138
+ {
139
+ type: 'paragraph',
140
+ html: 'E-Mail-Clients wie Microsoft Outlook, Apple Mail oder Gmail sind für ihre restriktiven CSS-Rendering-Engines bekannt. Die meisten filtern oder verwerfen <code>&lt;link&gt;</code>- oder <code>&lt;style&gt;</code>-Tags aus Angst vor Code-Injektionen, die die Leseoberfläche beschädigen könnten.',
141
+ },
142
+ {
143
+ type: 'tip',
144
+ html: 'Für Newsletter oder transaktionale Emails (Quittungen, Kontobestätigungen) gelten Tabellen und <em>Inline-CSS</em> als Goldstandard in der E-Mail-Marketing-Branche.',
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'So funktioniert das Werkzeug in Ihrem Browser',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'list',
153
+ items: [
154
+ '<strong>Sicheres Parsen:</strong> Verwendet die <code>DOMParser-API</code>, um das eingegebene HTML vorübergehend in ein sicheres virtuelles DOM in Ihrem Browser umzuwandeln.',
155
+ '<strong>Kaskaden-Simulation:</strong> Analysiert Ihre CSS-Regeln, gewichtet Selektoren nach Spezifität und schreibt die <code>style</code>-Attribute der betroffenen HTML-Elemente durch das Einbetten des Codes um.',
156
+ '<strong>100 % offline:</strong> Kein einziges Byte Ihres Codes verlässt Ihr Gerät. Vollständige Privatsphäre für Vorlagen mit sensiblen Inhalten.',
157
+ ],
158
+ },
159
+ ],
160
+ };
@@ -0,0 +1,160 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { CssToInlineConverterUI } from '../ui';
4
+
5
+ const slug = 'konverter-css-inline-html';
6
+ const title = 'Konverter CSS ke Inline HTML untuk Email';
7
+ const description =
8
+ 'Ubah stylesheet dan kelas CSS Anda menjadi style inline yang langsung tertanam dalam HTML. Cocok untuk newsletter, email transaksional, dan tata letak web yang kompatibel lintas platform.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Mengapa email membutuhkan CSS inline, bukan stylesheet eksternal?',
13
+ answer:
14
+ 'Klien email seperti Outlook, Gmail, atau Apple Mail memfilter atau mengabaikan tag <link> dan <style> demi alasan keamanan. Satu-satunya cara yang terjamin agar sebuah gaya diterapkan dengan benar dalam email adalah dengan menyematkannya langsung pada atribut style setiap elemen HTML.',
15
+ },
16
+ {
17
+ question: 'Apa yang terjadi jika elemen sudah memiliki atribut style sendiri?',
18
+ answer:
19
+ 'Alat ini menghormati style inline yang sudah ada dan menambahkan properti baru setelahnya, mensimulasikan perilaku kaskade CSS: properti yang dideklarasikan belakangan akan menimpa yang sebelumnya jika terjadi konflik.',
20
+ },
21
+ {
22
+ question: 'Apakah berfungsi dengan selektor kompleks seperti :hover atau media queries?',
23
+ answer:
24
+ 'Alat ini memproses selektor kelas, id, atribut, dan pseudo-class struktural yang dapat diselesaikan oleh DOMParser. Selektor yang bergantung pada status seperti :hover dan media queries tidak dapat diinline (karena bergantung pada lingkungan runtime) dan akan diabaikan.',
25
+ },
26
+ {
27
+ question: 'Apakah kode HTML dan CSS saya dikirim ke server?',
28
+ answer:
29
+ 'Tidak. Semua pemrosesan berlangsung 100% di browser Anda menggunakan DOMParser API bawaan. Tidak ada satu byte pun kode Anda yang meninggalkan perangkat Anda, menjamin privasi penuh untuk template yang berisi konten sensitif.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Tempelkan HTML asli Anda',
36
+ text: 'Tulis atau tempelkan HTML yang ingin Anda proses di kolom "HTML Asli". Bisa berupa fragmen atau dokumen lengkap.',
37
+ },
38
+ {
39
+ name: 'Tambahkan aturan CSS Anda',
40
+ text: 'Tempelkan kelas dan id yang ingin Anda suntikkan di kolom "Aturan CSS". Alat ini menerapkannya dengan memperhatikan spesifisitas selektor.',
41
+ },
42
+ {
43
+ name: 'Konversi dan salin',
44
+ text: 'Klik "Suntikkan CSS ke HTML". Hasilnya dengan semua style inline akan muncul di bawah, siap untuk disalin dan ditempel ke pengelola email atau CMS Anda.',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faqData.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+
58
+ const howToSchema: WithContext<HowToThing> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'HowTo',
61
+ name: title,
62
+ description,
63
+ step: howToData.map((step, i) => ({
64
+ '@type': 'HowToStep',
65
+ position: i + 1,
66
+ name: step.name,
67
+ text: step.text,
68
+ })),
69
+ };
70
+
71
+ const appSchema: WithContext<SoftwareApplication> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'SoftwareApplication',
74
+ name: title,
75
+ description,
76
+ applicationCategory: 'UtilityApplication',
77
+ operatingSystem: 'All',
78
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
79
+ inLanguage: 'id',
80
+ };
81
+
82
+ const ui: CssToInlineConverterUI = {
83
+ labelHtml: 'HTML Asli',
84
+ labelCss: 'Aturan CSS',
85
+ labelOutput: 'Hasil HTML Inline',
86
+ placeholderHtml: '<div class="kelas-saya">Halo Dunia</div>',
87
+ placeholderCss: '.kelas-saya { color: red; padding: 10px; }',
88
+ placeholderOutput: 'HTML Anda dengan style tertanam akan muncul di sini...',
89
+ btnConvert: 'Suntikkan CSS ke HTML',
90
+ btnCopy: 'Salin Kode',
91
+ btnCopied: 'Tersalin!',
92
+ msgError: 'Terjadi kesalahan pemrosesan. Pastikan HTML dan CSS Anda valid.',
93
+ };
94
+
95
+ export const content: ToolLocaleContent<CssToInlineConverterUI> = {
96
+ slug,
97
+ title,
98
+ description,
99
+ ui,
100
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
101
+ faq: faqData,
102
+ bibliographyTitle: 'Referensi dan Dokumentasi',
103
+ bibliography: [
104
+ {
105
+ name: 'Can I email: Matriks Dukungan HTML dan CSS untuk Email',
106
+ url: 'https://www.caniemail.com/',
107
+ },
108
+ {
109
+ name: 'MDN Web Docs: Atribut global style',
110
+ url: 'https://developer.mozilla.org/en/docs/Web/HTML/Global_attributes/style',
111
+ },
112
+ {
113
+ name: 'DOMParser API: Parsing aman di dalam browser',
114
+ url: 'https://developer.mozilla.org/en/docs/Web/API/DOMParser',
115
+ },
116
+ ],
117
+ howTo: howToData,
118
+ schemas: [faqSchema, howToSchema, appSchema],
119
+ seo: [
120
+ {
121
+ type: 'title',
122
+ text: 'Apa Itu CSS Inliner dan Mengapa Anda Membutuhkannya?',
123
+ level: 2,
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: 'Dalam pengembangan aplikasi web modern, kita terbiasa memisahkan tanggung jawab: HTML membangun struktur, sementara file CSS eksternal menangani seluruh tampilan visual. Namun, tidak semua lingkungan mempercayai stylesheet eksternal atau tag <code>&lt;style&gt;</code> global.',
128
+ },
129
+ {
130
+ type: 'paragraph',
131
+ html: 'Kasus penggunaan yang paling umum dan ketat di mana CSS eksternal gagal adalah <strong>Pengembangan Template Email</strong>. Dalam lingkungan ini, satu-satunya cara yang andal agar font, warna, atau margin tampil dengan benar adalah menyematkannya langsung dalam tag: <code>&lt;span style="color: red;"&gt;</code>.',
132
+ },
133
+ {
134
+ type: 'title',
135
+ text: 'Masalah CSS di Klien Email',
136
+ level: 3,
137
+ },
138
+ {
139
+ type: 'paragraph',
140
+ html: 'Klien email seperti Microsoft Outlook, Apple Mail, atau Gmail dikenal memiliki mesin rendering CSS yang sangat ketat. Sebagian besar memfilter atau membuang tag <code>&lt;link&gt;</code> atau <code>&lt;style&gt;</code> karena khawatir dengan injeksi kode yang bisa merusak antarmuka pembacaan.',
141
+ },
142
+ {
143
+ type: 'tip',
144
+ html: 'Untuk newsletter atau email transaksional (struk, konfirmasi akun), penggunaan tabel dan <em>CSS inline</em> adalah standar emas di industri email marketing.',
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Cara Kerja Alat Ini di Browser Anda',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'list',
153
+ items: [
154
+ '<strong>Parsing Aman:</strong> Menggunakan <code>DOMParser API</code> untuk mengubah HTML masukan secara sementara menjadi DOM virtual yang aman di dalam browser Anda.',
155
+ '<strong>Simulasi Kaskade:</strong> Menganalisis aturan CSS Anda, menerapkan bobot spesifisitas pada selektor, dan memodifikasi atribut <code>style</code> dari elemen HTML yang dipilih dengan menyuntikkan kodenya.',
156
+ '<strong>100% Offline:</strong> Tidak ada satu byte pun kode Anda yang meninggalkan perangkat Anda. Privasi penuh untuk template dengan konten sensitif.',
157
+ ],
158
+ },
159
+ ],
160
+ };
@@ -0,0 +1,160 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { CssToInlineConverterUI } from '../ui';
4
+
5
+ const slug = 'convertitore-css-inline-html';
6
+ const title = 'Convertitore CSS in Stili Inline per Email';
7
+ const description =
8
+ 'Trasforma i tuoi fogli di stile e le classi CSS in stili incorporati direttamente nel codice HTML. Ideale per newsletter, email transazionali e layout web affidabili su ogni client.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Perché le email richiedono CSS inline invece di fogli di stile esterni?',
13
+ answer:
14
+ 'Client di posta come Outlook, Gmail o Apple Mail filtrano o ignorano i tag <link> e <style> per motivi di sicurezza. L\'unico modo garantito perché uno stile venga applicato correttamente in una email è incorporarlo direttamente nell\'attributo style di ciascun elemento HTML.',
15
+ },
16
+ {
17
+ question: 'Cosa succede se un elemento ha già un attributo style proprio?',
18
+ answer:
19
+ 'Lo strumento rispetta gli stili inline esistenti e aggiunge le nuove proprietà in coda, simulando il comportamento della cascata CSS: le proprietà dichiarate dopo sovrascrivono quelle precedenti in caso di conflitto.',
20
+ },
21
+ {
22
+ question: 'Funziona con selettori complessi come :hover o media query?',
23
+ answer:
24
+ 'Lo strumento elabora selettori di classe, id, attributo e pseudo-classi strutturali che DOMParser è in grado di risolvere. I selettori dipendenti dallo stato come :hover e le media query non possono essere incorporati inline (dipendono dall\'ambiente di esecuzione) e vengono ignorati.',
25
+ },
26
+ {
27
+ question: 'Il mio codice HTML e CSS viene inviato a qualche server?',
28
+ answer:
29
+ 'No. Tutta l\'elaborazione avviene al 100% nel tuo browser tramite la DOMParser API nativa. Nessun byte del tuo codice lascia il tuo dispositivo, garantendo la massima privacy anche per template con contenuti sensibili.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Incolla il tuo HTML originale',
36
+ text: 'Scrivi o incolla l\'HTML che vuoi elaborare nel campo "HTML Originale". Può essere un frammento o un documento completo.',
37
+ },
38
+ {
39
+ name: 'Aggiungi le tue regole CSS',
40
+ text: 'Incolla le classi e gli id che vuoi iniettare nel campo "Regole CSS". Lo strumento le applica rispettando la specificità dei selettori.',
41
+ },
42
+ {
43
+ name: 'Converti e copia',
44
+ text: 'Clicca su "Inietta CSS nell\'HTML". Il risultato con tutti gli stili inline apparirà in basso, pronto da copiare e incollare nel tuo gestore email o CMS.',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faqData.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+
58
+ const howToSchema: WithContext<HowToThing> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'HowTo',
61
+ name: title,
62
+ description,
63
+ step: howToData.map((step, i) => ({
64
+ '@type': 'HowToStep',
65
+ position: i + 1,
66
+ name: step.name,
67
+ text: step.text,
68
+ })),
69
+ };
70
+
71
+ const appSchema: WithContext<SoftwareApplication> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'SoftwareApplication',
74
+ name: title,
75
+ description,
76
+ applicationCategory: 'UtilityApplication',
77
+ operatingSystem: 'All',
78
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
79
+ inLanguage: 'it',
80
+ };
81
+
82
+ const ui: CssToInlineConverterUI = {
83
+ labelHtml: 'HTML Originale',
84
+ labelCss: 'Regole CSS',
85
+ labelOutput: 'Risultato HTML Inline',
86
+ placeholderHtml: '<div class="mia-classe">Ciao Mondo</div>',
87
+ placeholderCss: '.mia-classe { color: red; padding: 10px; }',
88
+ placeholderOutput: 'Qui apparirà il tuo HTML con gli stili incorporati...',
89
+ btnConvert: 'Inietta CSS nell\'HTML',
90
+ btnCopy: 'Copia il codice',
91
+ btnCopied: 'Copiato!',
92
+ msgError: 'Errore di elaborazione. Verifica che HTML e CSS siano validi.',
93
+ };
94
+
95
+ export const content: ToolLocaleContent<CssToInlineConverterUI> = {
96
+ slug,
97
+ title,
98
+ description,
99
+ ui,
100
+ faqTitle: 'Domande frequenti',
101
+ faq: faqData,
102
+ bibliographyTitle: 'Riferimenti e documentazione',
103
+ bibliography: [
104
+ {
105
+ name: 'Can I email: Matrice di supporto HTML e CSS per le email',
106
+ url: 'https://www.caniemail.com/',
107
+ },
108
+ {
109
+ name: 'MDN Web Docs: L\'attributo globale style',
110
+ url: 'https://developer.mozilla.org/it/docs/Web/HTML/Global_attributes/style',
111
+ },
112
+ {
113
+ name: 'DOMParser API: Parsing sicuro nel browser',
114
+ url: 'https://developer.mozilla.org/it/docs/Web/API/DOMParser',
115
+ },
116
+ ],
117
+ howTo: howToData,
118
+ schemas: [faqSchema, howToSchema, appSchema],
119
+ seo: [
120
+ {
121
+ type: 'title',
122
+ text: 'Cos\'è un CSS Inliner e perché ti serve?',
123
+ level: 2,
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: 'Nello sviluppo di applicazioni web moderne siamo abituati a separare le responsabilità: l\'HTML costruisce la struttura, un file CSS esterno fornisce tutto lo stile visivo. Tuttavia, non tutti gli ambienti si fidano dei fogli di stile esterni o dei tag <code>&lt;style&gt;</code> globali.',
128
+ },
129
+ {
130
+ type: 'paragraph',
131
+ html: 'Il caso d\'uso più diffuso e restrittivo in cui il CSS esterno non funziona è lo <strong>Sviluppo di Template Email</strong>. In questi contesti, l\'unico modo affidabile perché un font, un colore o un margine vengano visualizzati correttamente è incorporarli direttamente nel tag: <code>&lt;span style="color: red;"&gt;</code>.',
132
+ },
133
+ {
134
+ type: 'title',
135
+ text: 'Il problema del CSS nei client di posta',
136
+ level: 3,
137
+ },
138
+ {
139
+ type: 'paragraph',
140
+ html: 'Client di posta come Microsoft Outlook, Apple Mail o Gmail hanno una storia nota per i loro motori di rendering CSS restrittivi. La maggior parte filtra o scarta i tag <code>&lt;link&gt;</code> o <code>&lt;style&gt;</code> per paura di iniezioni di codice che potrebbero compromettere l\'interfaccia di lettura.',
141
+ },
142
+ {
143
+ type: 'tip',
144
+ html: 'Per newsletter o email transazionali (ricevute, conferme di account), l\'uso di tabelle e <em>CSS inline</em> è lo standard d\'oro nel settore dell\'email marketing.',
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Come funziona questo strumento nel tuo browser',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'list',
153
+ items: [
154
+ '<strong>Parsing sicuro:</strong> Usa la <code>DOMParser API</code> per trasformare temporaneamente l\'HTML di input in un DOM virtuale sicuro all\'interno del tuo browser.',
155
+ '<strong>Simulazione della cascata:</strong> Analizza le tue regole CSS, applica i pesi di specificità ai selettori e modifica gli attributi <code>style</code> degli elementi HTML selezionati iniettando il codice.',
156
+ '<strong>100% offline:</strong> Nessun byte del tuo codice lascia il tuo dispositivo. Privacy totale per template con contenuti sensibili.',
157
+ ],
158
+ },
159
+ ],
160
+ };