@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
@@ -0,0 +1,214 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { InspectorCertificadosSslUI } from '../ui';
4
+
5
+ const slug = 'ssl-tls-zertifikat-inspektor';
6
+ const title = 'SSL/TLS Zertifikat Inspektor Online PEM und CRT Dateien prüfen';
7
+ const description = 'SSL-Zertifikatsdateien (.pem, .crt, .der) lokal analysieren. Ablaufdaten, Aussteller, Inhaberdaten und SHA-256-Fingerabdrücke prüfen, ohne dass Ihre Daten den Browser verlassen.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Ist es sicher, mein SSL-Zertifikat auf dieser Website zu analysieren?',
12
+ answer: 'Absolut. Dieses Tool läuft vollständig im Browser. Wenn Sie Ihre .pem- oder .crt-Datei hineinziehen, werden die Daten lokal verarbeitet und nie an einen Server übertragen. Vollständige Privatsphäre.',
13
+ },
14
+ {
15
+ question: 'Welche Zertifikatsformate werden unterstützt?',
16
+ answer: 'Das Tool unterstützt die gängigsten Formate: PEM (Base64-kodiert mit "BEGIN CERTIFICATE"-Kopfzeilen) und DER (Binärformat), die üblicherweise die Erweiterungen .pem, .crt, .cer oder .der haben.',
17
+ },
18
+ {
19
+ question: 'Kann ich das Ablaufdatum einer .crt-Datei einsehen?',
20
+ answer: 'Ja, nach dem Laden der Datei sehen Sie sofort den Abschnitt "Gültigkeitsstatus", der das genaue Ablaufdatum und den aktuellen Gültigkeitsstatus des Zertifikats anzeigt.',
21
+ },
22
+ {
23
+ question: 'Wozu dient der Zertifikatsaussteller?',
24
+ answer: 'Der Aussteller (Issuer) gibt an, welche Zertifizierungsstelle (CA) die Identität der Website bestätigt hat. Er zeigt, ob das Zertifikat von gängigen Browsern anerkannt wird.',
25
+ },
26
+ {
27
+ question: 'Wie werden SHA-256-Fingerabdrücke berechnet?',
28
+ answer: 'Sie werden berechnet, indem ein Hash-Algorithmus direkt auf den binären Inhalt des Zertifikats angewendet wird. Sie dienen dazu, zu überprüfen, dass die Datei nicht manipuliert wurde und mit dem übereinstimmt, was der Server erwartet.',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ { name: 'Datei suchen', text: 'Suchen Sie auf Ihrem Computer die Datei mit der Erweiterung .pem, .crt, .cer oder .der.' },
34
+ { name: 'Drag & Drop', text: 'Ziehen Sie die Datei einfach in den gepunkteten Bereich oben.' },
35
+ { name: 'Ergebnisse ansehen', text: 'Sofort sehen Sie, wer das Zertifikat ausgestellt hat, für wen es gilt, wann es abläuft und seine Fingerabdrücke.' },
36
+ ];
37
+
38
+ const faqSchema: WithContext<FAQPage> = {
39
+ '@context': 'https://schema.org',
40
+ '@type': 'FAQPage',
41
+ mainEntity: faqData.map((item) => ({
42
+ '@type': 'Question',
43
+ name: item.question,
44
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
45
+ })),
46
+ };
47
+
48
+ const howToSchema: WithContext<HowToThing> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'HowTo',
51
+ name: title,
52
+ description,
53
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
54
+ };
55
+
56
+ const appSchema: WithContext<SoftwareApplication> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'SoftwareApplication',
59
+ name: title,
60
+ description,
61
+ applicationCategory: 'UtilityApplication',
62
+ operatingSystem: 'All',
63
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
64
+ inLanguage: 'de',
65
+ };
66
+
67
+ const ui: InspectorCertificadosSslUI = {
68
+ labelAnalyzeCertificate: 'Zertifikat analysieren',
69
+ dragDropText: 'Ziehen Sie Ihre .pem, .crt oder .cer Datei hierher',
70
+ dragDropSubtext: '(100% lokale Verarbeitung in Ihrem Browser)',
71
+ cardStatusTitle: 'Gültigkeitsstatus',
72
+ cardSubjectTitle: 'Inhaber (Subject)',
73
+ cardIssuerTitle: 'Aussteller (CA)',
74
+ cardFingerprintsTitle: 'Fingerabdrücke',
75
+ cardTechnicalTitle: 'Technische Details',
76
+ labelValidityStatus: 'Status:',
77
+ labelExpiryDate: 'Läuft ab am',
78
+ labelIssueDate: 'Ausgestellt am',
79
+ labelSha256: 'SHA-256 Fingerabdruck',
80
+ labelSha1: 'SHA-1 Fingerabdruck',
81
+ labelSignatureAlgorithm: 'Signaturalgorithmus',
82
+ labelVersion: 'X.509 Version',
83
+ labelSerialNumber: 'Seriennummer',
84
+ labelCommonName: 'Common Name',
85
+ labelOrganization: 'Organization',
86
+ labelOrgUnit: 'Org. Unit',
87
+ labelLocality: 'Locality',
88
+ labelState: 'State/Province',
89
+ labelCountry: 'Country',
90
+ labelEmail: 'Email',
91
+ statusValid: 'Gültig',
92
+ statusExpired: 'Abgelaufen',
93
+ errorMessageInvalid: 'Ungültige Datei.',
94
+ supportedFormats: '.pem, .crt, .cer, .der',
95
+ };
96
+
97
+ export const content: ToolLocaleContent<InspectorCertificadosSslUI> = {
98
+ slug,
99
+ title,
100
+ description,
101
+ ui,
102
+ faqTitle: 'Häufig gestellte Fragen',
103
+ faq: faqData,
104
+ bibliographyTitle: 'Technische Ressourcen zu SSL/TLS-Zertifikaten',
105
+ bibliography: [
106
+ { name: 'RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile', url: 'https://datatracker.ietf.org/doc/html/rfc5280' },
107
+ { name: 'NIST: FIPS 180-4 Secure Hash Standard (SHA)', url: 'https://csrc.nist.gov/publications/detail/fips/180/4/final' },
108
+ { name: 'Mozilla: SSL/TLS Verschlüsselung – Übersicht', url: 'https://developer.mozilla.org/de/docs/Glossary/TLS' },
109
+ { name: 'OpenSSL: X.509 Zertifikatsformat Dokumentation', url: 'https://www.openssl.org/docs/man1.1.1/man1/x509.html' },
110
+ ],
111
+ howTo: howToData,
112
+ schemas: [faqSchema, howToSchema, appSchema],
113
+ seo: [
114
+ { type: 'title', text: 'Was ist ein SSL/TLS-Zertifikat-Inspektor und warum brauchen Sie ihn?', level: 2 },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'In der Welt der Webentwicklung und Cybersicherheit sind <strong>SSL- (Secure Sockets Layer) und TLS-Zertifikate (Transport Layer Security)</strong> das Fundament des digitalen Vertrauens. Ein digitales Zertifikat ist im Grunde eine Datei, die einen kryptografischen Schlüssel mit den Daten einer Organisation oder Domain verknüpft. Diese Dateien liegen jedoch oft in Binärformaten (.der) oder Base64-kodiert (.pem, .crt) vor und sind auf den ersten Blick nicht lesbar.',
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: 'Unser <strong>SSL/TLS-Zertifikat-Inspektor</strong> ermöglicht es Ihnen, diese Dateien visuell und sicher zu öffnen. Anders als Tools, die eine öffentliche Domain abfragen (wie der bekannte SSL-Labs-Test), arbeitet dieses Werkzeug direkt mit der Datei auf Ihrem Gerät. Das ist besonders wichtig, wenn Sie Nginx- oder Apache-Server konfigurieren oder Zertifikate in einen AWS- oder Google-Cloud-Loadbalancer laden und vor dem Hochladen prüfen möchten, ob die Datei korrekt ist.',
122
+ },
123
+ { type: 'title', text: 'So prüfen Sie eine .pem- oder .crt-Datei Schritt für Schritt', level: 2 },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'Ein Zertifikat mit unserem Tool zu analysieren ist denkbar einfach und erfordert keinerlei Kenntnisse der Kommandozeile (OpenSSL). Folgen Sie diesen Schritten:',
127
+ },
128
+ {
129
+ type: 'list',
130
+ items: [
131
+ '<strong>Datei suchen:</strong> Suchen Sie auf Ihrem Computer die Datei mit der Erweiterung .pem, .crt, .cer oder .der.',
132
+ '<strong>Drag & Drop:</strong> Ziehen Sie die Datei einfach in den gepunkteten Bereich oben.',
133
+ '<strong>Ergebnisse ansehen:</strong> Sofort sehen Sie, wer das Zertifikat ausgestellt hat, für wen es gilt, wann es abläuft und seine Fingerabdrücke.',
134
+ ],
135
+ },
136
+ {
137
+ type: 'tip',
138
+ title: 'Vollständige Privatsphäre',
139
+ html: 'Das Wichtigste an diesem Prozess ist der <strong>Datenschutz</strong>. Die Datei wird niemals auf unsere Server hochgeladen. Die gesamte Verarbeitung der ASN.1-Struktur des Zertifikats findet im RAM Ihres eigenen Browsers statt. Maximale Sicherheit für Ihre öffentlichen Schlüssel.',
140
+ },
141
+ { type: 'title', text: 'Die wichtigsten Felder bei der Zertifikatsanalyse', level: 2 },
142
+ {
143
+ type: 'paragraph',
144
+ html: 'Bei der Analyse Ihres Zertifikats schlüsseln wir die relevantesten technischen Informationen auf, damit Sie alles auf einen Blick überprüfen können:',
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>Inhaber (Subject):</strong> Zeigt die Daten des Zertifikatsinhabers, einschließlich Common Name (CN), Organisation und Standort.',
150
+ '<strong>Aussteller (Issuer):</strong> Gibt die Zertifizierungsstelle (CA) an, die das Zertifikat signiert hat (z. B. Let\'s Encrypt, DigiCert).',
151
+ '<strong>Gültigkeitszeitraum:</strong> Zeigt das genaue Ausstellungsdatum und das kritische Ablaufdatum.',
152
+ '<strong>Fingerabdrücke:</strong> SHA-256- und SHA-1-Fingerabdrücke dienen zur Überprüfung der Dateiintegrität.',
153
+ ],
154
+ },
155
+ { type: 'title', text: 'Unterstützte Formate: PEM, CRT, CER und DER', level: 2 },
156
+ {
157
+ type: 'paragraph',
158
+ html: 'Es gibt verschiedene Zertifikatsdateiformate, die manchmal verwirrend sein können. Unser Tool unterstützt die gängigsten:',
159
+ },
160
+ {
161
+ type: 'list',
162
+ items: [
163
+ '<strong>PEM (.pem, .crt, .cer):</strong> Das häufigste Format unter Linux und auf Webservern. Beginnt mit der Zeile <code>-----BEGIN CERTIFICATE-----</code>.',
164
+ '<strong>DER (.der, .cer):</strong> Das Binärformat. Weit verbreitet in Windows-Umgebungen (Java, Active Directory) und ohne Spezialtools meist schwer lesbar.',
165
+ ],
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: 'Selbst wenn Ihre Datei eine ungewöhnliche Erweiterung hat – sofern die interne Struktur ein standardkonformes X.509-Zertifikat ist, kann unser auf <strong>node-forge</strong> basierender Parser es problemlos verarbeiten.',
170
+ },
171
+ { type: 'title', text: 'Warum dieses Tool statt OpenSSL nutzen?', level: 2 },
172
+ {
173
+ type: 'paragraph',
174
+ html: 'OpenSSL ist das Schweizer Taschenmesser der Kryptografie – aber seine Befehle sind schwer zu merken. Um ein Zertifikat über die Kommandozeile anzuzeigen, müssten Sie Folgendes eingeben:',
175
+ },
176
+ { type: 'code', text: 'openssl x509 -in certificado.crt -text -noout' },
177
+ {
178
+ type: 'paragraph',
179
+ html: 'Unser Tool bietet klare Vorteile im täglichen Arbeitsablauf:',
180
+ },
181
+ {
182
+ type: 'list',
183
+ items: [
184
+ '<strong>Schnelligkeit:</strong> Kein Terminal öffnen, keine komplexen Flags merken.',
185
+ '<strong>Übersichtlichkeit:</strong> Feldnamen (Locality, Organization) werden lesbar formatiert, nicht als kryptische Kürzel wie "L" oder "O".',
186
+ '<strong>Gültigkeitswarnungen:</strong> Automatische Berechnung, ob das Zertifikat heute noch gültig ist – kein manueller Datumsabgleich nötig.',
187
+ '<strong>Plattformunabhängig:</strong> Funktioniert auf jedem Betriebssystem mit einem modernen Browser, ohne Installation zusätzlicher Software.',
188
+ ],
189
+ },
190
+ { type: 'title', text: 'Sicherheit und Datenschutz: Ihr Zertifikat verlässt nie Ihren Browser', level: 2 },
191
+ {
192
+ type: 'paragraph',
193
+ html: 'Als Entwickler weiß ich, wie sensibel der Umgang mit solchen Informationen ist. Obwohl ein Zertifikat technisch gesehen <strong>öffentliche Information</strong> ist (es wird an jeden Browser übertragen, der Ihre Website besucht), ist es dennoch gute Praxis, Dateien nicht unnötig auf externe Server hochzuladen.',
194
+ },
195
+ {
196
+ type: 'paragraph',
197
+ html: 'Dieses Tool verwendet JavaScript, das ausschließlich im Browser läuft. Wenn Sie die Datei hineinziehen, wird ihr Inhalt lokal gelesen und verarbeitet. Sie können das selbst testen, indem Sie die Internetverbindung trennen: Das Tool funktioniert weiterhin genauso.',
198
+ },
199
+ { type: 'title', text: 'Typische Anwendungsfälle für den SSL-Inspektor', level: 2 },
200
+ {
201
+ type: 'paragraph',
202
+ html: 'Wann lohnt es sich, diese Seite zu bookmarken?',
203
+ },
204
+ {
205
+ type: 'list',
206
+ items: [
207
+ '<strong>Server-Debugging:</strong> Wenn Sie ein Zertifikat installiert haben, die Website aber weiterhin Fehler wirft – um sicherzustellen, dass nicht versehentlich das alte Zertifikat geladen wurde.',
208
+ '<strong>Kettenprüfung:</strong> Um festzustellen, ob eine Datei das Endzertifikat oder ein Zwischenzertifikat enthält.',
209
+ '<strong>Asset-Audit:</strong> Um nachzuvollziehen, welche Zertifizierungsstelle in einem älteren Projekt verwendet wurde.',
210
+ '<strong>Integritätsprüfung:</strong> Beim Verschieben von Zertifikaten zwischen Servern – durch Vergleich des SHA-256-Fingerabdrucks lässt sich sicherstellen, dass die Datei nicht beschädigt ist.',
211
+ ],
212
+ },
213
+ ],
214
+ };
@@ -0,0 +1,215 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { InspectorCertificadosSslUI } from '../ui';
4
+
5
+ const slug = 'ssl-tls-certificate-inspector-id';
6
+ const title = 'Inspektur Sertifikat SSL/TLS Online Lihat File PEM dan CRT';
7
+ const description = 'Analisis file sertifikat SSL (.pem, .crt, .der) secara lokal. Periksa tanggal kedaluwarsa, penerbit, subjek, dan sidik jari SHA-256 tanpa data Anda meninggalkan browser.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Apakah aman untuk menganalisis sertifikat SSL saya di situs web ini?',
12
+ answer: 'Sangat aman. Utilitas ini berjalan 100% sisi klien. Ketika Anda menyeret file .pem atau .crt, browser membaca data secara lokal dan tidak pernah mengirimkannya ke server mana pun. Privasi lengkap.',
13
+ },
14
+ {
15
+ question: 'Format sertifikat apa yang didukung?',
16
+ answer: 'Alat ini mendukung format paling umum: PEM (dikodekan Base64 dengan header "BEGIN CERTIFICATE") dan DER (format biner), yang biasanya memiliki ekstensi .pem, .crt, .cer atau .der.',
17
+ },
18
+ {
19
+ question: 'Bisakah saya melihat tanggal kedaluwarsa file .crt?',
20
+ answer: 'Ya, ketika Anda memuat file, Anda akan langsung melihat bagian "Status Validitas" yang menunjukkan tanggal kedaluwarsa yang tepat dan apakah sertifikat masih berlaku hari ini.',
21
+ },
22
+ {
23
+ question: 'Apa yang dilakukan penerbit sertifikat?',
24
+ answer: 'Penerbit (Issuer) menunjukkan Otoritas Sertifikat (CA) mana yang memvalidasi identitas situs. Penting untuk mengetahui apakah sertifikat akan dikenali oleh browser komersial.',
25
+ },
26
+ {
27
+ question: 'Bagaimana sidik jari SHA-256 dihitung?',
28
+ answer: 'Sidik jari dihitung dengan menerapkan algoritma hash langsung ke konten biner sertifikat. Mereka berfungsi untuk memverifikasi bahwa file belum diubah dan cocok dengan yang diharapkan server.',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ { name: 'Temukan file Anda', text: 'Temukan file dengan ekstensi .pem, .crt, .cer atau .der di komputer Anda.' },
34
+ { name: 'Seret dan lepas', text: 'Cukup seret file ke area bertitik di atas.' },
35
+ { name: 'Lihat hasil', text: 'Segera Anda akan melihat siapa yang mengeluarkan sertifikat, untuk siapa, kapan kedaluwarsa, dan sidik jarinya.' },
36
+ ];
37
+
38
+ const faqSchema: WithContext<FAQPage> = {
39
+ '@context': 'https://schema.org',
40
+ '@type': 'FAQPage',
41
+ mainEntity: faqData.map((item) => ({
42
+ '@type': 'Question',
43
+ name: item.question,
44
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
45
+ })),
46
+ };
47
+
48
+ const howToSchema: WithContext<HowToThing> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'HowTo',
51
+ name: title,
52
+ description,
53
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
54
+ };
55
+
56
+ const appSchema: WithContext<SoftwareApplication> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'SoftwareApplication',
59
+ name: title,
60
+ description,
61
+ applicationCategory: 'UtilityApplication',
62
+ operatingSystem: 'All',
63
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
64
+ inLanguage: 'id',
65
+ };
66
+
67
+ const ui: InspectorCertificadosSslUI = {
68
+ labelAnalyzeCertificate: 'Analisis Sertifikat',
69
+ dragDropText: 'Seret file .pem, .crt atau .cer Anda di sini',
70
+ dragDropSubtext: '(Pemrosesan 100% lokal di browser Anda)',
71
+ cardStatusTitle: 'Status Validitas',
72
+ cardSubjectTitle: 'Subjek (Pemilik)',
73
+ cardIssuerTitle: 'Penerbit (CA)',
74
+ cardFingerprintsTitle: 'Sidik Jari',
75
+ cardTechnicalTitle: 'Detail Teknis',
76
+ labelValidityStatus: 'Status:',
77
+ labelExpiryDate: 'Kedaluwarsa pada',
78
+ labelIssueDate: 'Diterbitkan pada',
79
+ labelSha256: 'Sidik Jari SHA-256',
80
+ labelSha1: 'Sidik Jari SHA-1',
81
+ labelSignatureAlgorithm: 'Algoritma Tanda Tangan',
82
+ labelVersion: 'Versi X.509',
83
+ labelSerialNumber: 'Nomor Seri',
84
+ labelCommonName: 'Nama Umum',
85
+ labelOrganization: 'Organisasi',
86
+ labelOrgUnit: 'Unit Org',
87
+ labelLocality: 'Lokalitas',
88
+ labelState: 'Negara/Provinsi',
89
+ labelCountry: 'Negara',
90
+ labelEmail: 'Email',
91
+ statusValid: 'Valid',
92
+ statusExpired: 'Kedaluwarsa',
93
+ errorMessageInvalid: 'File tidak valid.',
94
+ supportedFormats: '.pem, .crt, .cer, .der',
95
+ };
96
+
97
+ export const content: ToolLocaleContent<InspectorCertificadosSslUI> = {
98
+ slug,
99
+ title,
100
+ description,
101
+ ui,
102
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
103
+ faq: faqData,
104
+ bibliographyTitle: 'Sumber Daya Teknis tentang Sertifikat SSL/TLS',
105
+ bibliography: [
106
+ { name: 'RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile', url: 'https://datatracker.ietf.org/doc/html/rfc5280' },
107
+ { name: 'NIST: FIPS 180-4 Secure Hash Standard (SHA)', url: 'https://csrc.nist.gov/publications/detail/fips/180/4/final' },
108
+ { name: 'Mozilla: SSL/TLS Encryption Overview', url: 'https://developer.mozilla.org/en-US/docs/Glossary/TLS' },
109
+ { name: 'OpenSSL: X.509 Certificate Format Documentation', url: 'https://www.openssl.org/docs/man1.1.1/man1/x509.html' },
110
+ ],
111
+ howTo: howToData,
112
+ schemas: [faqSchema, howToSchema, appSchema],
113
+ seo: [
114
+ { type: 'title', text: 'Apa itu Inspektur Sertifikat SSL/TLS dan mengapa Anda membutuhkannya?', level: 2 },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Dalam dunia pengembangan web dan keamanan siber, <strong>sertifikat SSL (Secure Sockets Layer) dan TLS (Transport Layer Security)</strong> adalah fondasi kepercayaan. Sertifikat digital tidak lebih dari sekadar file yang menghubungkan kunci kriptografi dengan data organisasi atau domain. Namun, file ini sering datang dalam format biner (.der) atau Base64 terenkode (.pem, .crt) yang tidak terbaca pada pandangan pertama.',
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: '<strong>Inspektur Sertifikat SSL/TLS</strong> kami memungkinkan Anda untuk "membuka" file ini secara visual dan aman. Tidak seperti alat yang menanyakan domain publik (seperti tes SSL Labs yang terkenal), utilitas ini bekerja langsung dengan file yang Anda miliki di perangkat Anda. Ini sangat penting ketika Anda mengonfigurasi server Nginx, Apache atau memuat sertifikat ke AWS atau Google Cloud Load Balancer, dan Anda perlu memverifikasi bahwa file di tangan Anda benar sebelum mengunggahnya.',
122
+ },
123
+ { type: 'title', text: 'Cara memeriksa file .pem atau .crt langkah demi langkah', level: 2 },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'Menganalisis sertifikat dengan alat kami sangat sederhana dan tidak memerlukan pengetahuan konsol (OpenSSL). Ikuti langkah-langkah berikut:',
127
+ },
128
+ {
129
+ type: 'list',
130
+ items: [
131
+ '<strong>Temukan file Anda:</strong> Temukan file dengan ekstensi .pem, .crt, .cer atau .der di komputer Anda.',
132
+ '<strong>Seret dan lepas:</strong> Cukup seret file ke area bertitik di atas.',
133
+ '<strong>Lihat hasil:</strong> Segera Anda akan melihat siapa yang mengeluarkan sertifikat, untuk siapa, kapan kedaluwarsa, dan sidik jarinya.',
134
+ ],
135
+ },
136
+ {
137
+ type: 'tip',
138
+ title: 'Privasi Lengkap',
139
+ html: 'Bagian paling penting dari proses ini adalah <strong>privasi</strong>. File tidak pernah diunggah ke server kami. Semua penguraian struktur ASN.1 sertifikat terjadi dalam RAM browser Anda sendiri. Keamanan lengkap untuk kunci publik Anda.',
140
+ },
141
+ { type: 'title', text: 'Bidang kunci yang akan Anda lihat saat menganalisis sertifikat Anda', level: 2 },
142
+ {
143
+ type: 'paragraph',
144
+ html: 'Saat menganalisis sertifikat Anda, kami memecah informasi teknis yang paling relevan sehingga Anda dapat memverifikasinya sekilas:',
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>Subjek:</strong> Menampilkan data pemilik, termasuk Nama Umum (CN), organisasi, dan lokasi.',
150
+ '<strong>Penerbit:</strong> Mengidentifikasi Otoritas Sertifikat (CA) yang menandatangani sertifikat (misalnya, Let\'s Encrypt, DigiCert).',
151
+ '<strong>Periode Validitas:</strong> Menunjukkan tanggal penerbitan yang tepat dan tanggal kedaluwarsa yang kritis.',
152
+ '<strong>Sidik Jari:</strong> Sidik jari SHA-256 dan SHA-1 berfungsi untuk memverifikasi integritas file.',
153
+ ],
154
+ },
155
+ { type: 'title', text: 'Format yang didukung: PEM, CRT, CER dan DER', level: 2 },
156
+ {
157
+ type: 'paragraph',
158
+ html: 'Ada beberapa format file sertifikat dan terkadang membingungkan. Alat kami kompatibel dengan yang paling umum:',
159
+ },
160
+ {
161
+ type: 'list',
162
+ items: [
163
+ '<strong>PEM (.pem, .crt, .cer):</strong> Format paling umum di Linux dan server web. Dimulai dengan baris <code>-----BEGIN CERTIFICATE-----</code>.',
164
+ '<strong>DER (.der, .cer):</strong> Format biner. Banyak digunakan di lingkungan Windows (Java, Active Directory) dan biasanya lebih sulit dibaca tanpa alat khusus.',
165
+ ],
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: 'Bahkan jika file Anda memiliki ekstensi yang tidak biasa, jika struktur internalnya adalah sertifikat X.509 standar, mesin kami yang didukung <strong>node-forge</strong> akan dapat menginterpretasinya tanpa masalah.',
170
+ },
171
+ { type: 'title', text: 'Mengapa menggunakan alat ini daripada OpenSSL?', level: 2 },
172
+ {
173
+ type: 'paragraph',
174
+ html: 'OpenSSL adalah pisau tentara Swiss kriptografi, tetapi perintahnya sulit diingat. Untuk melihat sertifikat dari konsol Anda harus menulis:',
175
+ },
176
+ { type: 'code', text: 'openssl x509 -in certificado.crt -text -noout' },
177
+ {
178
+ type: 'paragraph',
179
+ html: 'Alat kami menawarkan keuntungan yang jelas untuk alur kerja sehari-hari:',
180
+ },
181
+ {
182
+ type: 'list',
183
+ items: [
184
+ '<strong>Kecepatan:</strong> Tidak perlu membuka terminal atau mengingat bendera kompleks.',
185
+ '<strong>Visual:</strong> Kami memformat nama bidang (Locality, Organization) agar dapat dibaca dan bukan kode singkat seperti "L" atau "O".',
186
+ '<strong>Peringatan validitas:</strong> Kami secara otomatis menghitung apakah sertifikat valid hari ini, menghemat Anda dari pemeriksaan manual tanggal saat ini terhadap tanggal sertifikat.',
187
+ '<strong>Lintas platform:</strong> Bekerja di sistem operasi apa pun dengan browser modern, tanpa dependensi untuk diinstal.',
188
+ ],
189
+ },
190
+ { type: 'title', text: 'Keamanan dan Privasi: Sertifikat Anda tidak pernah meninggalkan RAM Anda', level: 2 },
191
+ {
192
+ type: 'paragraph',
193
+ html: 'Sebagai pengembang, saya tahu betapa kritis menangani jenis informasi ini. Meskipun sertifikat secara teknis merupakan <strong>informasi publik</strong> (dikirim ke browser mana pun yang mengunjungi situs web Anda), masih merupakan praktik yang baik untuk tidak mengunggah file ke server eksternal tanpa perlu.',
194
+ },
195
+ {
196
+ type: 'paragraph',
197
+ html: 'Utilitas ini menggunakan JavaScript yang berjalan ketat di sisi klien. Ketika Anda menyeret file, kami membaca kontennya dan memprosesnya secara lokal. Anda dapat memverifikasi ini dengan memutuskan internet: alat akan terus berfungsi persis sama.',
198
+ },
199
+ { type: 'title', text: 'Kasus penggunaan umum untuk Inspektur SSL', level: 2 },
200
+ {
201
+ type: 'paragraph',
202
+ html: 'Kapan menambahkan halaman ini ke bookmark akan bermanfaat?',
203
+ },
204
+ {
205
+ type: 'list',
206
+ items: [
207
+ '<strong>Debugging server:</strong> Ketika Anda menginstal sertifikat dan situs web terus memberikan kesalahan, untuk memverifikasi bahwa Anda tidak secara tidak sengaja memuat sertifikat lama.',
208
+ '<strong>Verifikasi rantai:</strong> Untuk melihat apakah file berisi sertifikat akhir atau sertifikat perantara.',
209
+ '<strong>Audit aset:</strong> Untuk memeriksa Otoritas Sertifikat mana yang digunakan dalam proyek lama.',
210
+ '<strong>Integritas salinan:</strong> Saat memindahkan sertifikat antar server, untuk memastikan file tidak rusak dengan membandingkan sidik jari SHA-256 nya.',
211
+ ],
212
+ },
213
+ ],
214
+ };
215
+
@@ -0,0 +1,214 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { InspectorCertificadosSslUI } from '../ui';
4
+
5
+ const slug = 'ispettore-certificati-ssl-tls';
6
+ const title = 'Ispettore Certificati SSL/TLS Online Visualizza file PEM e CRT';
7
+ const description = 'Analizza i file di certificati SSL (.pem, .crt, .der) in locale. Controlla date di scadenza, emittenti, intestatari e impronte SHA-256 senza che i tuoi dati lascino il browser.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'È sicuro analizzare il mio certificato SSL su questo sito?',
12
+ answer: 'Assolutamente sì. Questo strumento funziona al 100% lato client. Quando trascini il tuo file .pem o .crt, il browser legge i dati in locale e non li invia mai a nessun server. Privacy totale.',
13
+ },
14
+ {
15
+ question: 'Quali formati di certificato sono supportati?',
16
+ answer: 'Lo strumento supporta i formati più comuni: PEM (codificato in Base64 con intestazioni "BEGIN CERTIFICATE") e DER (formato binario), che di solito hanno estensioni .pem, .crt, .cer o .der.',
17
+ },
18
+ {
19
+ question: 'Posso vedere la data di scadenza di un file .crt?',
20
+ answer: 'Sì, dopo aver caricato il file vedrai immediatamente la sezione "Stato di Validità", che mostra la data di scadenza esatta e se il certificato è ancora valido oggi.',
21
+ },
22
+ {
23
+ question: 'A cosa serve l\'emittente del certificato?',
24
+ answer: 'L\'emittente (Issuer) indica quale Autorità di Certificazione (CA) ha validato l\'identità del sito. È fondamentale per sapere se il certificato sarà riconosciuto dai browser commerciali.',
25
+ },
26
+ {
27
+ question: 'Come vengono calcolate le impronte SHA-256?',
28
+ answer: 'Vengono calcolate applicando un algoritmo di hash direttamente al contenuto binario del certificato. Servono a verificare che il file non sia stato alterato e corrisponda a quanto il server si aspetta.',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ { name: 'Trova il tuo file', text: 'Individua il file con estensione .pem, .crt, .cer o .der sul tuo computer.' },
34
+ { name: 'Trascina e rilascia', text: 'Trascina semplicemente il file nell\'area tratteggiata qui sopra.' },
35
+ { name: 'Visualizza i risultati', text: 'Immediatamente vedrai chi ha emesso il certificato, a chi è intestato, quando scade e le sue impronte digitali.' },
36
+ ];
37
+
38
+ const faqSchema: WithContext<FAQPage> = {
39
+ '@context': 'https://schema.org',
40
+ '@type': 'FAQPage',
41
+ mainEntity: faqData.map((item) => ({
42
+ '@type': 'Question',
43
+ name: item.question,
44
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
45
+ })),
46
+ };
47
+
48
+ const howToSchema: WithContext<HowToThing> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'HowTo',
51
+ name: title,
52
+ description,
53
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
54
+ };
55
+
56
+ const appSchema: WithContext<SoftwareApplication> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'SoftwareApplication',
59
+ name: title,
60
+ description,
61
+ applicationCategory: 'UtilityApplication',
62
+ operatingSystem: 'All',
63
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
64
+ inLanguage: 'it',
65
+ };
66
+
67
+ const ui: InspectorCertificadosSslUI = {
68
+ labelAnalyzeCertificate: 'Analizza Certificato',
69
+ dragDropText: 'Trascina qui il tuo file .pem, .crt o .cer',
70
+ dragDropSubtext: '(Elaborazione 100% locale nel tuo browser)',
71
+ cardStatusTitle: 'Stato di Validità',
72
+ cardSubjectTitle: 'Intestatario (Subject)',
73
+ cardIssuerTitle: 'Emittente (CA)',
74
+ cardFingerprintsTitle: 'Impronte Digitali',
75
+ cardTechnicalTitle: 'Dettagli Tecnici',
76
+ labelValidityStatus: 'Stato:',
77
+ labelExpiryDate: 'Scade il',
78
+ labelIssueDate: 'Emesso il',
79
+ labelSha256: 'Impronta SHA-256',
80
+ labelSha1: 'Impronta SHA-1',
81
+ labelSignatureAlgorithm: 'Algoritmo di Firma',
82
+ labelVersion: 'Versione X.509',
83
+ labelSerialNumber: 'Numero di Serie',
84
+ labelCommonName: 'Common Name',
85
+ labelOrganization: 'Organization',
86
+ labelOrgUnit: 'Org. Unit',
87
+ labelLocality: 'Locality',
88
+ labelState: 'State/Province',
89
+ labelCountry: 'Country',
90
+ labelEmail: 'Email',
91
+ statusValid: 'Valido',
92
+ statusExpired: 'Scaduto',
93
+ errorMessageInvalid: 'File non valido.',
94
+ supportedFormats: '.pem, .crt, .cer, .der',
95
+ };
96
+
97
+ export const content: ToolLocaleContent<InspectorCertificadosSslUI> = {
98
+ slug,
99
+ title,
100
+ description,
101
+ ui,
102
+ faqTitle: 'Domande Frequenti',
103
+ faq: faqData,
104
+ bibliographyTitle: 'Risorse Tecniche sui Certificati SSL/TLS',
105
+ bibliography: [
106
+ { name: 'RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile', url: 'https://datatracker.ietf.org/doc/html/rfc5280' },
107
+ { name: 'NIST: FIPS 180-4 Secure Hash Standard (SHA)', url: 'https://csrc.nist.gov/publications/detail/fips/180/4/final' },
108
+ { name: 'Mozilla: Panoramica sulla crittografia SSL/TLS', url: 'https://developer.mozilla.org/it/docs/Glossary/TLS' },
109
+ { name: 'OpenSSL: Documentazione del formato certificato X.509', url: 'https://www.openssl.org/docs/man1.1.1/man1/x509.html' },
110
+ ],
111
+ howTo: howToData,
112
+ schemas: [faqSchema, howToSchema, appSchema],
113
+ seo: [
114
+ { type: 'title', text: 'Cos\'è un Ispettore di Certificati SSL/TLS e perché ti serve?', level: 2 },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Nel mondo dello sviluppo web e della sicurezza informatica, i <strong>certificati SSL (Secure Sockets Layer) e TLS (Transport Layer Security)</strong> sono il pilastro della fiducia digitale. Un certificato digitale non è altro che un file che collega una chiave crittografica ai dati di un\'organizzazione o di un dominio. Questi file si presentano però spesso in formati binari (.der) o codificati in Base64 (.pem, .crt) che non sono leggibili a prima vista.',
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: 'Il nostro <strong>Ispettore di Certificati SSL/TLS</strong> ti permette di "aprire" questi file in modo visivo e sicuro. A differenza degli strumenti che interrogano un dominio pubblico (come il popolare test di SSL Labs), questo strumento lavora direttamente con il file che hai sul tuo dispositivo. È fondamentale quando stai configurando server Nginx o Apache, o stai caricando certificati su un Load Balancer di AWS o Google Cloud, e vuoi verificare che il file in tuo possesso sia corretto prima di caricarlo.',
122
+ },
123
+ { type: 'title', text: 'Come ispezionare un file .pem o .crt passo dopo passo', level: 2 },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'Analizzare un certificato con il nostro strumento è semplicissimo e non richiede alcuna conoscenza della riga di comando (OpenSSL). Segui questi passaggi:',
127
+ },
128
+ {
129
+ type: 'list',
130
+ items: [
131
+ '<strong>Trova il tuo file:</strong> Individua il file con estensione .pem, .crt, .cer o .der sul tuo computer.',
132
+ '<strong>Trascina e rilascia:</strong> Trascina semplicemente il file nell\'area tratteggiata qui sopra.',
133
+ '<strong>Visualizza i risultati:</strong> Immediatamente vedrai chi ha emesso il certificato, a chi è intestato, quando scade e le sue impronte digitali.',
134
+ ],
135
+ },
136
+ {
137
+ type: 'tip',
138
+ title: 'Privacy Totale',
139
+ html: 'La cosa più importante di questo processo è la <strong>privacy</strong>. Il file non viene mai caricato sui nostri server. Tutta l\'elaborazione della struttura ASN.1 del certificato avviene nella RAM del tuo browser. Massima sicurezza per le tue chiavi pubbliche.',
140
+ },
141
+ { type: 'title', text: 'I campi principali che vedrai analizzando il tuo certificato', level: 2 },
142
+ {
143
+ type: 'paragraph',
144
+ html: 'Quando analizzi il tuo certificato, scomponiamo le informazioni tecniche più rilevanti così da permetterti di verificarle a colpo d\'occhio:',
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>Intestatario (Subject):</strong> Mostra i dati del proprietario, inclusi il Common Name (CN), l\'organizzazione e la località.',
150
+ '<strong>Emittente (Issuer):</strong> Identifica l\'Autorità di Certificazione (CA) che ha firmato il certificato (ad es. Let\'s Encrypt, DigiCert).',
151
+ '<strong>Periodo di Validità:</strong> Mostra la data esatta di emissione e la data di scadenza.',
152
+ '<strong>Impronte (Fingerprints):</strong> Le impronte SHA-256 e SHA-1 servono a verificare l\'integrità del file.',
153
+ ],
154
+ },
155
+ { type: 'title', text: 'Formati supportati: PEM, CRT, CER e DER', level: 2 },
156
+ {
157
+ type: 'paragraph',
158
+ html: 'Esistono diversi formati di file certificato e a volte possono generare confusione. Il nostro strumento è compatibile con i più diffusi:',
159
+ },
160
+ {
161
+ type: 'list',
162
+ items: [
163
+ '<strong>PEM (.pem, .crt, .cer):</strong> Il formato più comune su Linux e sui server web. Inizia con la riga <code>-----BEGIN CERTIFICATE-----</code>.',
164
+ '<strong>DER (.der, .cer):</strong> Il formato binario. Molto usato in ambienti Windows (Java, Active Directory) e di solito più difficile da leggere senza strumenti specializzati.',
165
+ ],
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: 'Anche se il tuo file ha un\'estensione insolita, se la struttura interna è un certificato X.509 standard, il nostro motore basato su <strong>node-forge</strong> sarà in grado di interpretarlo senza problemi.',
170
+ },
171
+ { type: 'title', text: 'Perché usare questo strumento invece di OpenSSL?', level: 2 },
172
+ {
173
+ type: 'paragraph',
174
+ html: 'OpenSSL è il coltellino svizzero della crittografia, ma i suoi comandi sono difficili da ricordare. Per visualizzare un certificato dalla riga di comando dovresti digitare:',
175
+ },
176
+ { type: 'code', text: 'openssl x509 -in certificado.crt -text -noout' },
177
+ {
178
+ type: 'paragraph',
179
+ html: 'Il nostro strumento offre vantaggi concreti nel lavoro quotidiano:',
180
+ },
181
+ {
182
+ type: 'list',
183
+ items: [
184
+ '<strong>Velocità:</strong> Non devi aprire il terminale né ricordare opzioni complesse.',
185
+ '<strong>Chiarezza visiva:</strong> I nomi dei campi (Locality, Organization) sono formattati in modo leggibile, non come codici abbreviati tipo "L" o "O".',
186
+ '<strong>Avvisi di validità:</strong> Calcoliamo automaticamente se il certificato è valido oggi, risparmiarti il confronto manuale delle date.',
187
+ '<strong>Multipiattaforma:</strong> Funziona su qualsiasi sistema operativo con un browser moderno, senza installare dipendenze.',
188
+ ],
189
+ },
190
+ { type: 'title', text: 'Sicurezza e Privacy: il tuo certificato non lascia mai il browser', level: 2 },
191
+ {
192
+ type: 'paragraph',
193
+ html: 'Da sviluppatore, so quanto sia delicato gestire questo tipo di informazioni. Anche se un certificato è tecnicamente <strong>informazione pubblica</strong> (viene inviato a qualsiasi browser che visita il tuo sito), è comunque buona pratica non caricare file su server esterni inutilmente.',
194
+ },
195
+ {
196
+ type: 'paragraph',
197
+ html: 'Questo strumento usa JavaScript che gira esclusivamente nel browser. Quando trascini il file, ne leggiamo il contenuto ed elaboriamo tutto in locale. Puoi verificarlo disconnettendo Internet: lo strumento continuerà a funzionare esattamente allo stesso modo.',
198
+ },
199
+ { type: 'title', text: 'Casi d\'uso tipici per l\'Ispettore SSL', level: 2 },
200
+ {
201
+ type: 'paragraph',
202
+ html: 'Quando ti torna utile tenere questa pagina tra i preferiti?',
203
+ },
204
+ {
205
+ type: 'list',
206
+ items: [
207
+ '<strong>Debug del server:</strong> Quando installi un certificato ma il sito continua a dare errori, per verificare di non aver caricato per sbaglio il vecchio certificato.',
208
+ '<strong>Verifica della catena:</strong> Per controllare se un file contiene il certificato finale o un certificato intermedio.',
209
+ '<strong>Audit degli asset:</strong> Per verificare quale Autorità di Certificazione è stata usata in un vecchio progetto.',
210
+ '<strong>Integrità delle copie:</strong> Quando si spostano certificati tra server, per assicurarsi che il file non sia corrotto confrontando l\'impronta SHA-256.',
211
+ ],
212
+ },
213
+ ],
214
+ };