@jjlmoya/utils-developer 1.4.0 → 1.6.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/tests/faq_count.test.ts +1 -1
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/locale_completeness.test.ts +2 -2
  18. package/src/tests/slug_language_code_format.test.ts +25 -0
  19. package/src/tests/slug_uniqueness.test.ts +87 -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 +1 -0
  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 +1 -0
  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 +1 -0
  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,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';
6
+ const title = 'オンラインSSL/TLS証明書インスペクタ PEMおよびCRTファイルを表示';
7
+ const description = 'SSL証明書ファイル(.pem、.crt、.der)をローカルで分析します。有効期限、発行者、サブジェクト、SHA-256フィンガープリントを確認できます。データはブラウザから出ません。';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'このウェブサイトでSSL証明書を分析するのは安全ですか?',
12
+ answer: 'はい、非常に安全です。このユーティリティは100%クライアント側で動作します。.pemまたは.crtファイルをドラッグすると、ブラウザはデータをローカルで読み取り、サーバーに送信することはありません。完全なプライバシーが保証されます。',
13
+ },
14
+ {
15
+ question: 'どの証明書形式がサポートされていますか?',
16
+ answer: 'このツールは最も一般的な形式をサポートしています。PEM(「BEGIN CERTIFICATE」ヘッダー付きBase64エンコード)とDER(バイナリ形式)で、通常は.pem、.crt、.cer、.derの拡張子があります。',
17
+ },
18
+ {
19
+ question: '.crtファイルの有効期限を確認できますか?',
20
+ answer: 'はい、ファイルを読み込むと、正確な有効期限と証明書が今日有効かどうかを表示する「有効期限ステータス」セクションが表示されます。',
21
+ },
22
+ {
23
+ question: '証明書発行者は何をしていますか?',
24
+ answer: 'Issuer(発行者)は、サイトのアイデンティティを検証した認証局(CA)を示します。証明書が商用ブラウザで認識されるかどうかを知ることが重要です。',
25
+ },
26
+ {
27
+ question: 'SHA-256フィンガープリントはどのように計算されますか?',
28
+ answer: 'ハッシュアルゴリズムを証明書のバイナリコンテンツに直接適用して計算されます。ファイルが改ざんされていないことを確認し、サーバーが期待するものと一致することを確認するのに役立ちます。',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ { name: 'ファイルを見つけてください', text: 'コンピュータ上の.pem、.crt、.cerまたは.der拡張子のファイルを探します。' },
34
+ { name: 'ドラッグ&ドロップ', text: 'ファイルを上記の点線エリアにドラッグするだけです。' },
35
+ { name: '結果を表示', text: 'すぐに、誰が証明書を発行したか、誰のものか、いつ期限切れになるか、フィンガープリントが表示されます。' },
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: 'ja',
65
+ };
66
+
67
+ const ui: InspectorCertificadosSslUI = {
68
+ labelAnalyzeCertificate: '証明書を分析',
69
+ dragDropText: '.pem、.crtまたは.cerファイルをここにドラッグしてください',
70
+ dragDropSubtext: '(ブラウザで100%ローカル処理)',
71
+ cardStatusTitle: '有効性ステータス',
72
+ cardSubjectTitle: 'サブジェクト(所有者)',
73
+ cardIssuerTitle: '発行者(CA)',
74
+ cardFingerprintsTitle: 'フィンガープリント',
75
+ cardTechnicalTitle: '技術詳細',
76
+ labelValidityStatus: 'ステータス:',
77
+ labelExpiryDate: '有効期限',
78
+ labelIssueDate: '発行日',
79
+ labelSha256: 'SHA-256フィンガープリント',
80
+ labelSha1: 'SHA-1フィンガープリント',
81
+ labelSignatureAlgorithm: '署名アルゴリズム',
82
+ labelVersion: 'X.509バージョン',
83
+ labelSerialNumber: 'シリアル番号',
84
+ labelCommonName: '一般名',
85
+ labelOrganization: '組織',
86
+ labelOrgUnit: '組織単位',
87
+ labelLocality: '市区町村',
88
+ labelState: '都道府県',
89
+ labelCountry: '国',
90
+ labelEmail: 'メール',
91
+ statusValid: '有効',
92
+ statusExpired: '期限切れ',
93
+ errorMessageInvalid: '無効なファイルです。',
94
+ supportedFormats: '.pem、.crt、.cer、.der',
95
+ };
96
+
97
+ export const content: ToolLocaleContent<InspectorCertificadosSslUI> = {
98
+ slug,
99
+ title,
100
+ description,
101
+ ui,
102
+ faqTitle: 'よくある質問',
103
+ faq: faqData,
104
+ bibliographyTitle: '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: 'SSL/TLS証明書インスペクタとは何か、なぜ必要なのか?', level: 2 },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'ウェブ開発とサイバーセキュリティの世界では、<strong>SSL(Secure Sockets Layer)およびTLS(Transport Layer Security)証明書</strong>は信頼の基礎です。デジタル証明書は、暗号化キーを組織またはドメインのデータにリンクするファイルにすぎません。ただし、これらのファイルはバイナリ形式(.der)またはBase64エンコード(.pem、.crt)で提供されることが多く、一見読むことができません。',
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: '私たちの<strong>SSL/TLS証明書インスペクタ</strong>を使用すると、これらのファイルを視覚的かつ安全に「開く」ことができます。公開ドメインをクエリするツール(有名なSSL Labsテストなど)とは異なり、このユーティリティはデバイス上のファイルで直接機能します。これは、Nginx、Apacheサーバーを設定するか、AWSまたはGoogle Cloud Load BalancerにSSL証明書を読み込むときに非常に重要です。アップロードする前に、手持ちのファイルが正しいことを確認する必要があります。',
122
+ },
123
+ { type: 'title', text: '.pemまたは.crtファイルを段階的に検査する方法', level: 2 },
124
+ {
125
+ type: 'paragraph',
126
+ html: '私たちのツールで証明書を分析するのは非常に簡単で、コンソール(OpenSSL)の知識は必要ありません。次の手順に従ってください。',
127
+ },
128
+ {
129
+ type: 'list',
130
+ items: [
131
+ '<strong>ファイルを見つけてください:</strong> コンピュータ上の.pem、.crt、.cerまたは.der拡張子のファイルを探します。',
132
+ '<strong>ドラッグ&ドロップ:</strong> ファイルを上記の点線エリアにドラッグするだけです。',
133
+ '<strong>結果を表示:</strong> すぐに、誰が証明書を発行したか、誰のものか、いつ期限切れになるか、フィンガープリントが表示されます。',
134
+ ],
135
+ },
136
+ {
137
+ type: 'tip',
138
+ title: '完全なプライバシー',
139
+ html: 'このプロセスの最も重要な部分は<strong>プライバシー</strong>です。ファイルは当社のサーバーにアップロードされることはありません。証明書のASN.1構造の解析はすべて、ブラウザのRAM内で行われます。公開鍵の完全なセキュリティです。',
140
+ },
141
+ { type: 'title', text: '証明書を分析するときに表示される主なフィールド', level: 2 },
142
+ {
143
+ type: 'paragraph',
144
+ html: '証明書を分析するとき、最も関連性のある技術情報を分解して、一目で検証できるようにします。',
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>サブジェクト:</strong> 一般名(CN)、組織、場所を含む所有者のデータを表示します。',
150
+ '<strong>発行者:</strong> 証明書に署名した認証局(CA)(例:Let\'s Encrypt、DigiCert)を識別します。',
151
+ '<strong>有効期限:</strong> 正確な発行日と重要な有効期限を表示します。',
152
+ '<strong>フィンガープリント:</strong> SHA-256およびSHA-1フィンガープリントはファイルの整合性を検証するために機能します。',
153
+ ],
154
+ },
155
+ { type: 'title', text: 'サポートされているフォーマット:PEM、CRT、CERおよびDER', level: 2 },
156
+ {
157
+ type: 'paragraph',
158
+ html: 'いくつかの証明書ファイル形式があり、時には混乱することがあります。私たちのツールは最も一般的なものと互換性があります。',
159
+ },
160
+ {
161
+ type: 'list',
162
+ items: [
163
+ '<strong>PEM(.pem、.crt、.cer):</strong> LinuxおよびWebサーバーの最も一般的な形式。行<code>-----BEGIN CERTIFICATE-----</code>で始まります。',
164
+ '<strong>DER(.der、.cer):</strong> バイナリ形式。Windows環境(Java、Active Directory)で多く使用されており、通常、特殊なツールなしで読むのが難しくなります。',
165
+ ],
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: 'ファイルに不慣れな拡張子がある場合でも、内部構造が標準的なX.509証明書である場合、<strong>node-forge</strong>で駆動されるエンジンは問題なくそれを解釈できます。',
170
+ },
171
+ { type: 'title', text: 'OpenSSLの代わりにこのツールを使用する理由', level: 2 },
172
+ {
173
+ type: 'paragraph',
174
+ html: 'OpenSSLは暗号化の万能ナイフですが、コマンドは覚えにくいものです。コンソールから証明書を表示するには、次のように記述する必要があります。',
175
+ },
176
+ { type: 'code', text: 'openssl x509 -in certificado.crt -text -noout' },
177
+ {
178
+ type: 'paragraph',
179
+ html: '私たちのツールは日常的なワークフロー向けに明らかな利点を提供します。',
180
+ },
181
+ {
182
+ type: 'list',
183
+ items: [
184
+ '<strong>速度:</strong> ターミナルを開いたり、複雑なフラグを覚えたりする必要はありません。',
185
+ '<strong>ビジュアル:</strong> フィールド名(Locality、Organization)をわかりやすく書式設定し、「L」や「O」などの短いコードではなくします。',
186
+ '<strong>有効性アラート:</strong> 証明書が今日有効かどうかを自動的に計算し、現在の日付を証明書の日付と手動で確認する手間を省きます。',
187
+ '<strong>クロスプラットフォーム:</strong> 最新のブラウザがあれば、どのオペレーティングシステムでも動作し、インストールする依存関係はありません。',
188
+ ],
189
+ },
190
+ { type: 'title', text: 'セキュリティとプライバシー:証明書はRAMを離れることはありません', level: 2 },
191
+ {
192
+ type: 'paragraph',
193
+ html: '開発者として、このタイプの情報を処理することがいかに重要かを知っています。証明書は技術的には<strong>公開情報</strong>(ウェブサイトを訪問するすべてのブラウザに送信される)ですが、それでも不要に外部サーバーにファイルをアップロードしないことは良い慣例です。',
194
+ },
195
+ {
196
+ type: 'paragraph',
197
+ html: 'このユーティリティは、クライアント側で厳密に実行されるJavaScriptを使用しています。ファイルをドラッグすると、コンテンツを読み取り、ローカルで処理します。インターネットを切断することでこれを確認できます。ツールは完全に同じように動作し続けます。',
198
+ },
199
+ { type: 'title', text: 'SSLインスペクタの一般的な使用例', level: 2 },
200
+ {
201
+ type: 'paragraph',
202
+ html: 'このページをブックマークするのが役立つのはいつでしょうか?',
203
+ },
204
+ {
205
+ type: 'list',
206
+ items: [
207
+ '<strong>サーバーデバッグ:</strong> 証明書をインストールしてウェブサイトがエラーを出し続ける場合、誤って古い証明書をロードしていないことを確認します。',
208
+ '<strong>チェーン検証:</strong> ファイルがエンド証明書を含むか、仲介証明書を含むかを確認するため。',
209
+ '<strong>資産監査:</strong> 古いプロジェクトでどの認証局が使用されたかを確認するため。',
210
+ '<strong>コピー整合性:</strong> サーバー間で証明書を移動する場合、SHA-256フィンガープリントを比較してファイルが破損していないことを確認します。',
211
+ ],
212
+ },
213
+ ],
214
+ };
215
+
@@ -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';
6
+ const title = '온라인 SSL/TLS 인증서 검사자 PEM 및 CRT 파일 보기';
7
+ const description = 'SSL 인증서 파일(.pem, .crt, .der)을 로컬로 분석합니다. 만료 날짜, 발급자, 주체 및 SHA-256 지문을 확인하세요. 데이터가 브라우저를 벗어나지 않습니다.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: '이 웹사이트에서 SSL 인증서를 분석하는 것이 안전합니까?',
12
+ answer: '네, 매우 안전합니다. 이 유틸리티는 100% 클라이언트 측에서 실행됩니다. .pem 또는 .crt 파일을 드래그하면 브라우저가 로컬에서 데이터를 읽고 서버로 전송하지 않습니다. 완전한 개인정보 보호.',
13
+ },
14
+ {
15
+ question: '어떤 인증서 형식이 지원됩니까?',
16
+ answer: '이 도구는 가장 일반적인 형식을 지원합니다. PEM("BEGIN CERTIFICATE" 헤더가 있는 Base64 인코딩)과 DER(이진 형식)은 보통 .pem, .crt, .cer 또는 .der 확장자입니다.',
17
+ },
18
+ {
19
+ question: '.crt 파일의 만료 날짜를 볼 수 있습니까?',
20
+ answer: '네, 파일을 로드하면 정확한 만료 날짜와 인증서가 오늘 유효한지 여부를 표시하는 "유효성 상태" 섹션이 즉시 표시됩니다.',
21
+ },
22
+ {
23
+ question: '인증서 발급자는 무엇을 합니까?',
24
+ answer: '발급자(Issuer)는 사이트의 신원을 검증한 인증 기관(CA)을 나타냅니다. 인증서가 상용 브라우저에서 인식될 것인지 알아야 합니다.',
25
+ },
26
+ {
27
+ question: 'SHA-256 지문은 어떻게 계산됩니까?',
28
+ answer: '인증서의 이진 콘텐츠에 해시 알고리즘을 직접 적용하여 계산됩니다. 파일이 변조되지 않았는지 확인하고 서버가 예상하는 것과 일치하는지 확인하는 데 도움이 됩니다.',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ { name: '파일 찾기', text: '컴퓨터에서 .pem, .crt, .cer 또는 .der 확장자가 있는 파일을 찾습니다.' },
34
+ { name: '끌어서 놓기', text: '파일을 위의 점선 영역으로 드래그하기만 하면 됩니다.' },
35
+ { name: '결과 보기', text: '즉시 누가 인증서를 발급했는지, 누구를 위한 것인지, 언제 만료되는지, 지문이 표시됩니다.' },
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: 'ko',
65
+ };
66
+
67
+ const ui: InspectorCertificadosSslUI = {
68
+ labelAnalyzeCertificate: '인증서 분석',
69
+ dragDropText: '.pem, .crt 또는 .cer 파일을 여기로 드래그하세요',
70
+ dragDropSubtext: '(브라우저에서 100% 로컬 처리)',
71
+ cardStatusTitle: '유효성 상태',
72
+ cardSubjectTitle: '주체(소유자)',
73
+ cardIssuerTitle: '발급자(CA)',
74
+ cardFingerprintsTitle: '지문',
75
+ cardTechnicalTitle: '기술 세부 정보',
76
+ labelValidityStatus: '상태:',
77
+ labelExpiryDate: '만료 날짜',
78
+ labelIssueDate: '발급 날짜',
79
+ labelSha256: 'SHA-256 지문',
80
+ labelSha1: 'SHA-1 지문',
81
+ labelSignatureAlgorithm: '서명 알고리즘',
82
+ labelVersion: 'X.509 버전',
83
+ labelSerialNumber: '일련 번호',
84
+ labelCommonName: '일반명',
85
+ labelOrganization: '조직',
86
+ labelOrgUnit: '조직 단위',
87
+ labelLocality: '지역',
88
+ labelState: '도/주',
89
+ labelCountry: '국가',
90
+ labelEmail: '이메일',
91
+ statusValid: '유효',
92
+ statusExpired: '만료됨',
93
+ errorMessageInvalid: '유효하지 않은 파일입니다.',
94
+ supportedFormats: '.pem, .crt, .cer, .der',
95
+ };
96
+
97
+ export const content: ToolLocaleContent<InspectorCertificadosSslUI> = {
98
+ slug,
99
+ title,
100
+ description,
101
+ ui,
102
+ faqTitle: '자주 묻는 질문',
103
+ faq: faqData,
104
+ bibliographyTitle: '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: 'SSL/TLS 인증서 검사자는 무엇이고 왜 필요합니까?', level: 2 },
115
+ {
116
+ type: 'paragraph',
117
+ html: '웹 개발 및 사이버 보안의 세계에서 <strong>SSL(Secure Sockets Layer) 및 TLS(Transport Layer Security) 인증서</strong>는 신뢰의 기초입니다. 디지털 인증서는 암호화 키를 조직 또는 도메인의 데이터에 연결하는 파일일 뿐입니다. 그러나 이러한 파일은 종종 이진 형식(.der) 또는 Base64 인코딩(.pem, .crt)으로 제공되어 한 눈에 읽을 수 없습니다.',
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: '우리의 <strong>SSL/TLS 인증서 검사자</strong>를 사용하면 이러한 파일을 시각적으로 안전하게 "열" 수 있습니다. 공개 도메인을 쿼리하는 도구(유명한 SSL Labs 테스트 등)와 달리 이 유틸리티는 장치의 파일과 직접 작동합니다. 이것은 Nginx, Apache 서버를 구성하거나 AWS 또는 Google Cloud Load Balancer에 SSL 인증서를 로드할 때 매우 중요합니다. 업로드하기 전에 손에 있는 파일이 올바른지 확인해야 합니다.',
122
+ },
123
+ { type: 'title', text: '.pem 또는 .crt 파일을 단계별로 검사하는 방법', level: 2 },
124
+ {
125
+ type: 'paragraph',
126
+ html: '우리의 도구로 인증서를 분석하는 것은 매우 간단하며 콘솔(OpenSSL) 지식이 필요하지 않습니다. 다음 단계를 따르세요.',
127
+ },
128
+ {
129
+ type: 'list',
130
+ items: [
131
+ '<strong>파일 찾기:</strong> 컴퓨터에서 .pem, .crt, .cer 또는 .der 확장자가 있는 파일을 찾습니다.',
132
+ '<strong>끌어서 놓기:</strong> 파일을 위의 점선 영역으로 드래그하기만 하면 됩니다.',
133
+ '<strong>결과 보기:</strong> 즉시 누가 인증서를 발급했는지, 누구를 위한 것인지, 언제 만료되는지, 지문이 표시됩니다.',
134
+ ],
135
+ },
136
+ {
137
+ type: 'tip',
138
+ title: '완전한 개인정보 보호',
139
+ html: '이 프로세스의 가장 중요한 부분은 <strong>개인정보 보호</strong>입니다. 파일은 절대 우리 서버에 업로드되지 않습니다. 인증서의 ASN.1 구조 분석은 모두 브라우저의 RAM 내에서 발생합니다. 공개 키에 대한 완전한 보안.',
140
+ },
141
+ { type: 'title', text: '인증서를 분석할 때 볼 수 있는 주요 필드', level: 2 },
142
+ {
143
+ type: 'paragraph',
144
+ html: '인증서를 분석할 때 가장 관련성 있는 기술 정보를 분석하여 한눈에 확인할 수 있도록 합니다.',
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>주체:</strong> 일반명(CN), 조직 및 위치를 포함한 소유자의 데이터를 표시합니다.',
150
+ '<strong>발급자:</strong> 인증서에 서명한 인증 기관(CA)(예: Let\'s Encrypt, DigiCert)을 식별합니다.',
151
+ '<strong>유효 기간:</strong> 정확한 발급 날짜 및 중요한 만료 날짜를 표시합니다.',
152
+ '<strong>지문:</strong> SHA-256 및 SHA-1 지문은 파일 무결성을 확인하는 데 도움이 됩니다.',
153
+ ],
154
+ },
155
+ { type: 'title', text: '지원되는 형식: PEM, CRT, CER 및 DER', level: 2 },
156
+ {
157
+ type: 'paragraph',
158
+ html: '여러 인증서 파일 형식이 있으며 때로는 혼동되기도 합니다. 우리 도구는 가장 일반적인 것과 호환됩니다.',
159
+ },
160
+ {
161
+ type: 'list',
162
+ items: [
163
+ '<strong>PEM(.pem, .crt, .cer):</strong> Linux 및 웹 서버에서 가장 일반적인 형식입니다. 줄 <code>-----BEGIN CERTIFICATE-----</code>로 시작합니다.',
164
+ '<strong>DER(.der, .cer):</strong> 이진 형식입니다. Windows 환경(Java, Active Directory)에서 광범위하게 사용되며 일반적으로 특수 도구 없이 읽기가 더 어렵습니다.',
165
+ ],
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: '파일에 비정상적인 확장자가 있는 경우에도 내부 구조가 표준 X.509 인증서이면 <strong>node-forge</strong> 기반 엔진이 문제 없이 해석할 수 있습니다.',
170
+ },
171
+ { type: 'title', text: 'OpenSSL 대신 이 도구를 사용해야 하는 이유', level: 2 },
172
+ {
173
+ type: 'paragraph',
174
+ html: 'OpenSSL은 암호화의 스위스 군용 칼이지만 명령은 기억하기 어렵습니다. 콘솔에서 인증서를 보려면 다음을 작성해야 합니다.',
175
+ },
176
+ { type: 'code', text: 'openssl x509 -in certificado.crt -text -noout' },
177
+ {
178
+ type: 'paragraph',
179
+ html: '우리 도구는 일일 워크플로우에 대해 명확한 이점을 제공합니다.',
180
+ },
181
+ {
182
+ type: 'list',
183
+ items: [
184
+ '<strong>속도:</strong> 터미널을 열거나 복잡한 플래그를 기억할 필요가 없습니다.',
185
+ '<strong>시각적:</strong> 필드명(Locality, Organization)을 읽을 수 있도록 포맷하고 "L" 또는 "O"와 같은 짧은 코드가 아닙니다.',
186
+ '<strong>유효성 알림:</strong> 인증서가 오늘 유효한지 자동으로 계산하여 현재 날짜를 인증서 날짜와 수동으로 확인할 필요가 없습니다.',
187
+ '<strong>크로스 플랫폼:</strong> 최신 브라우저가 있는 모든 운영 체제에서 작동하며 설치할 종속성이 없습니다.',
188
+ ],
189
+ },
190
+ { type: 'title', text: '보안 및 개인정보: 인증서는 RAM을 떠나지 않습니다', level: 2 },
191
+ {
192
+ type: 'paragraph',
193
+ html: '개발자로서 이러한 유형의 정보를 처리하는 것이 얼마나 중요한지 압니다. 인증서는 기술적으로 <strong>공개 정보</strong>(웹사이트를 방문하는 모든 브라우저로 전송됨)이지만, 불필요하게 외부 서버에 파일을 업로드하지 않는 것이 좋은 관행입니다.',
194
+ },
195
+ {
196
+ type: 'paragraph',
197
+ html: '이 유틸리티는 클라이언트 측에서 엄격하게 실행되는 JavaScript를 사용합니다. 파일을 드래그하면 콘텐츠를 읽고 로컬로 처리합니다. 인터넷을 연결 해제하여 이를 확인할 수 있습니다. 도구는 정확히 같은 방식으로 계속 작동합니다.',
198
+ },
199
+ { type: 'title', text: 'SSL 검사자의 일반적인 사용 사례', level: 2 },
200
+ {
201
+ type: 'paragraph',
202
+ html: '이 페이지에 책갈피를 추가하는 것이 도움이 될 때는 언제입니까?',
203
+ },
204
+ {
205
+ type: 'list',
206
+ items: [
207
+ '<strong>서버 디버깅:</strong> 인증서를 설치하고 웹사이트에서 계속 오류가 발생하는 경우 실수로 이전 인증서를 로드하지 않았는지 확인합니다.',
208
+ '<strong>체인 확인:</strong> 파일에 최종 인증서 또는 중간 인증서가 포함되어 있는지 확인합니다.',
209
+ '<strong>자산 감사:</strong> 이전 프로젝트에서 사용된 인증 기관을 확인합니다.',
210
+ '<strong>복사 무결성:</strong> 서버 간에 인증서를 이동할 때 SHA-256 지문을 비교하여 파일이 손상되지 않았는지 확인합니다.',
211
+ ],
212
+ },
213
+ ],
214
+ };
215
+
@@ -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-certificaatinspector';
6
+ const title = 'Online SSL TLS certificaatinspecteur Bekijk PEM en CRT bestanden';
7
+ const description = 'Analyseer SSL-certificaatbestanden (.pem, .crt, .der) lokaal. Controleer vervaldatums, certificaatautoriteiten, onderwerpen en SHA-256-vingerafdrukken zonder dat uw gegevens uw browser verlaten.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Is het veilig om mijn SSL-certificaat op deze website te analyseren?',
12
+ answer: 'Absoluut. Dit hulpprogramma draait 100% aan de clientzijde. Wanneer u uw .pem of .crt bestand sleept, leest de browser de gegevens lokaal en verzendt ze nooit naar een server. Volledige privacy.',
13
+ },
14
+ {
15
+ question: 'Welke certificaatindelingen worden ondersteund?',
16
+ answer: 'Het hulpprogramma ondersteunt de meest voorkomende indelingen: PEM (Base64 gecodeerd met "BEGIN CERTIFICATE"-headers) en DER (binair formaat), die doorgaans .pem-, .crt-, .cer- of .der-extensies hebben.',
17
+ },
18
+ {
19
+ question: 'Kan ik de vervaldatum van een .crt bestand zien?',
20
+ answer: 'Ja, wanneer u het bestand laadt, ziet u onmiddellijk de sectie "Geldigstatus" waarin de exacte vervaldatum en of het certificaat vandaag nog geldig is, wordt weergegeven.',
21
+ },
22
+ {
23
+ question: 'Wat doet de certificaatuitgever?',
24
+ answer: 'De uitgever (Issuer) geeft aan welke certificaatautoriteit (CA) de identiteit van de site heeft gevalideerd. Het is essentieel om te weten of het certificaat door commerciële browsers wordt herkend.',
25
+ },
26
+ {
27
+ question: 'Hoe worden SHA-256-vingerafdrukken berekend?',
28
+ answer: 'Ze worden berekend door een hash-algoritme rechtstreeks toe te passen op de binaire inhoud van het certificaat. Ze dienen om te verifiëren dat het bestand niet is gewijzigd en overeenkomt met wat de server verwacht.',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ { name: 'Zoek uw bestand', text: 'Zoek het bestand met extensie .pem, .crt, .cer of .der op uw computer.' },
34
+ { name: 'Slepen en neerzetten', text: 'Sleep het bestand gewoon naar het stippelgebied hierboven.' },
35
+ { name: 'Resultaten weergeven', text: 'Onmiddellijk ziet u wie het certificaat heeft uitgegeven, voor wie, wanneer het vervalt en de vingerafdrukken.' },
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: 'nl',
65
+ };
66
+
67
+ const ui: InspectorCertificadosSslUI = {
68
+ labelAnalyzeCertificate: 'Certificaat analyseren',
69
+ dragDropText: 'Sleep uw .pem-, .crt- of .cer-bestand hier naartoe',
70
+ dragDropSubtext: '(100% lokale verwerking in uw browser)',
71
+ cardStatusTitle: 'Geldigstatus',
72
+ cardSubjectTitle: 'Onderwerp (Eigenaar)',
73
+ cardIssuerTitle: 'Uitgever (CA)',
74
+ cardFingerprintsTitle: 'Vingerafdrukken',
75
+ cardTechnicalTitle: 'Technische details',
76
+ labelValidityStatus: 'Status:',
77
+ labelExpiryDate: 'Vervalt op',
78
+ labelIssueDate: 'Uitgegeven op',
79
+ labelSha256: 'SHA-256-vingerafdruk',
80
+ labelSha1: 'SHA-1-vingerafdruk',
81
+ labelSignatureAlgorithm: 'Handtekeningalgoritme',
82
+ labelVersion: 'X.509-versie',
83
+ labelSerialNumber: 'Serienummer',
84
+ labelCommonName: 'Algemene naam',
85
+ labelOrganization: 'Organisatie',
86
+ labelOrgUnit: 'Organisatie-eenheid',
87
+ labelLocality: 'Plaats',
88
+ labelState: 'Staat/Provincie',
89
+ labelCountry: 'Land',
90
+ labelEmail: 'E-mail',
91
+ statusValid: 'Geldig',
92
+ statusExpired: 'Verlopen',
93
+ errorMessageInvalid: 'Ongeldig bestand.',
94
+ supportedFormats: '.pem, .crt, .cer, .der',
95
+ };
96
+
97
+ export const content: ToolLocaleContent<InspectorCertificadosSslUI> = {
98
+ slug,
99
+ title,
100
+ description,
101
+ ui,
102
+ faqTitle: 'Veelgestelde vragen',
103
+ faq: faqData,
104
+ bibliographyTitle: 'Technische bronnen over SSL/TLS-certificaten',
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: 'Wat is een SSL TLS certificaatinspecteur en waarom heb je er een nodig?', level: 2 },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'In de wereld van webontwikkeling en cyberbeveiliging zijn <strong>SSL (Secure Sockets Layer) en TLS (Transport Layer Security)-certificaten</strong> de hoeksteen van vertrouwen. Een digitaal certificaat is niets meer dan een bestand dat een cryptografische sleutel aan organisatie- of domeingegevens koppelt. Deze bestanden komen echter vaak in binaire formaten (.der) of Base64-gecodeerde (.pem, .crt) formaten die niet direct leesbaar zijn.',
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: 'Onze <strong>SSL TLS certificaatinspecteur</strong> stelt u in staat deze bestanden visueel en veilig te "openen". In tegenstelling tot tools die een openbaar domein opvragen (zoals de beroemde SSL Labs-test), werkt dit hulpprogramma rechtstreeks met het bestand op uw apparaat. Dit is van essentieel belang wanneer u Nginx-, Apache-servers configureert of certificaten in AWS of Google Cloud Load Balancer laadt, en u moet verifiëren dat het bestand in uw hand correct is voordat u het uploadt.',
122
+ },
123
+ { type: 'title', text: 'Hoe stap voor stap een .pem of .crt bestand inspecteren', level: 2 },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'Een certificaat met onze tool analyseren is extreem eenvoudig en vereist geen consolkennis (OpenSSL). Volg deze stappen:',
127
+ },
128
+ {
129
+ type: 'list',
130
+ items: [
131
+ '<strong>Zoek uw bestand:</strong> Zoek het bestand met extensie .pem, .crt, .cer of .der op uw computer.',
132
+ '<strong>Sleep en zet neer:</strong> Sleep het bestand gewoon naar het stippelgebied hierboven.',
133
+ '<strong>Bekijk resultaten:</strong> Onmiddellijk ziet u wie het certificaat heeft uitgegeven, voor wie, wanneer het vervalt en de vingerafdrukken.',
134
+ ],
135
+ },
136
+ {
137
+ type: 'tip',
138
+ title: 'Volledige privacy',
139
+ html: 'Het belangrijkste deel van dit proces is <strong>privacy</strong>. Het bestand wordt nooit naar onze servers geüpload. Alle ontleding van de ASN.1-structuur van het certificaat vindt plaats in het RAM van uw eigen browser. Volledige beveiliging voor uw openbare sleutels.',
140
+ },
141
+ { type: 'title', text: 'Belangrijke velden die u ziet bij het analyseren van uw certificaat', level: 2 },
142
+ {
143
+ type: 'paragraph',
144
+ html: 'Bij het analyseren van uw certificaat leggen we de meest relevante technische informatie uit zodat u deze in één oogopslag kunt verifiëren:',
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>Onderwerp:</strong> Geeft de gegevens van de eigenaar weer, inclusief de algemene naam (CN), organisatie en locatie.',
150
+ '<strong>Uitgever:</strong> Identificeert de certificaatautoriteit (CA) die het certificaat heeft ondertekend (bijv. Let\'s Encrypt, DigiCert).',
151
+ '<strong>Geldigheidsperiode:</strong> Geeft de exacte uitgiftedatum en kritieke vervaldatum weer.',
152
+ '<strong>Vingerafdrukken:</strong> SHA-256- en SHA-1-vingerafdrukken dienen om de integriteit van het bestand te verifiëren.',
153
+ ],
154
+ },
155
+ { type: 'title', text: 'Ondersteunde indelingen: PEM, CRT, CER en DER', level: 2 },
156
+ {
157
+ type: 'paragraph',
158
+ html: 'Er zijn verschillende certificaatbestandsindelingen en soms is het verwarrend. Ons hulpprogramma is compatibel met de meest voorkomende:',
159
+ },
160
+ {
161
+ type: 'list',
162
+ items: [
163
+ '<strong>PEM (.pem, .crt, .cer):</strong> De meest voorkomende indeling in Linux- en webservers. Begint met de regel <code>-----BEGIN CERTIFICATE-----</code>.',
164
+ '<strong>DER (.der, .cer):</strong> Het binaire formaat. Veel gebruikt in Windows-omgevingen (Java, Active Directory) en is meestal moeilijker leesbaar zonder gespecialiseerde hulpmiddelen.',
165
+ ],
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: 'Zelfs als uw bestand een ongebruikelijke extensie heeft, als de interne structuur een standaard X.509-certificaat is, kan onze <strong>node-forge</strong>-engine het zonder problemen interpreteren.',
170
+ },
171
+ { type: 'title', text: 'Waarom dit hulpprogramma gebruiken in plaats van OpenSSL?', level: 2 },
172
+ {
173
+ type: 'paragraph',
174
+ html: 'OpenSSL is het Zwitserse zakmes van cryptografie, maar de commando\'s zijn moeilijk te onthouden. Om een certificaat van de console weer te geven, moet je schrijven:',
175
+ },
176
+ { type: 'code', text: 'openssl x509 -in certificado.crt -text -noout' },
177
+ {
178
+ type: 'paragraph',
179
+ html: 'Ons hulpprogramma biedt duidelijke voordelen voor dagelijkse workflows:',
180
+ },
181
+ {
182
+ type: 'list',
183
+ items: [
184
+ '<strong>Snelheid:</strong> Geen noodzaak om de terminal te openen of ingewikkelde vlaggen te onthouden.',
185
+ '<strong>Visueel:</strong> We formatteren veldnamen (Locality, Organization) zodat ze leesbaar zijn en geen korte codes zoals "L" of "O".',
186
+ '<strong>Geldigheidswaarschuwingen:</strong> We berekenen automatisch of het certificaat vandaag geldig is, zodat u niet handmatig de huidige datum tegen de certificaatdatum hoeft te controleren.',
187
+ '<strong>Platformonafhankelijk:</strong> Werkt op elk besturingssysteem met een moderne browser, geen afhankelijkheden om te installeren.',
188
+ ],
189
+ },
190
+ { type: 'title', text: 'Beveiliging en privacy: uw certificaat verlaat nooit uw RAM', level: 2 },
191
+ {
192
+ type: 'paragraph',
193
+ html: 'Als ontwikkelaar weet ik hoe kritiek het is om dit soort informatie af te handelen. Hoewel een certificaat technisch <strong>openbare informatie</strong> is (verzonden naar elke browser die uw website bezoekt), is het nog steeds goed practice om bestanden niet onnodig naar externe servers te uploaden.',
194
+ },
195
+ {
196
+ type: 'paragraph',
197
+ html: 'Dit hulpprogramma maakt gebruik van JavaScript dat strikt aan de clientzijde draait. Wanneer u het bestand sleept, lezen we de inhoud en verwerken deze lokaal. U kunt dit verifiëren door internet uit te schakelen: het hulpprogramma blijft precies hetzelfde werken.',
198
+ },
199
+ { type: 'title', text: 'Veel voorkomende gebruiksscenario\'s voor de SSL inspecteur', level: 2 },
200
+ {
201
+ type: 'paragraph',
202
+ html: 'Wanneer zou het bladwijzeren van deze pagina nuttig zijn?',
203
+ },
204
+ {
205
+ type: 'list',
206
+ items: [
207
+ '<strong>Serverdebugging:</strong> Wanneer u een certificaat installeert en de website blijft fouten geven, om te verifiëren dat u niet per ongeluk het oude certificaat hebt geladen.',
208
+ '<strong>Ketenverificatie:</strong> Om te zien of een bestand het eindcertificaat of een tussencertificaat bevat.',
209
+ '<strong>Asset-audit:</strong> Om te controleren welke certificaatautoriteit in een oud project is gebruikt.',
210
+ '<strong>Kopie-integriteit:</strong> Bij het verplaatsen van certificaten tussen servers, om ervoor te zorgen dat het bestand niet beschadigd is door de SHA-256-vingerafdruk te vergelijken.',
211
+ ],
212
+ },
213
+ ],
214
+ };
215
+