@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,174 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { GeneradorSecurityTxtUI } from '../ui';
4
+
5
+ const slug = 'security-txt-generator-rfc-9116';
6
+ const title = 'Security.txt 생성기 RFC 9116';
7
+ const description = '취약점 보고를 용이하게 하고 국제 웹 보안 표준을 준수하는 전문 security.txt 파일을 만들세요.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'security.txt 파일이란 무엇입니까?',
12
+ answer: '이는 표준(RFC 9116)으로, 웹사이트가 보안 연구자가 취약점을 책임감 있게 보고해야 하는 방법을 정의할 수 있게 합니다.',
13
+ },
14
+ {
15
+ question: 'security.txt 파일은 어디에 배치되어야 합니까?',
16
+ answer: '권장 표준 위치는 도메인의 /.well-known/ 폴더이며, 결과 URL은 https://example.com/.well-known/security.txt입니다.',
17
+ },
18
+ {
19
+ question: '만료 날짜가 필수인 이유는 무엇입니까?',
20
+ answer: '연락처 정보가 만료되지 않도록 하기 위함입니다. 파일에 유효한 만료 날짜가 없으면 연구자는 통신 채널이 활성화되어 있는지 신뢰하지 않을 수 있습니다.',
21
+ },
22
+ {
23
+ question: 'security.txt에서 필수 필드는 무엇입니까?',
24
+ answer: 'RFC 9116에 따르면 필수 필드는 "Contact"(이메일 주소 또는 URL 포함)와 "Expires"(ISO 8601 형식의 미래 날짜 포함)입니다.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ { name: '필드 작성', text: '이메일 주소 또는 연락처 URL을 완료하고 만료 날짜를 선택하세요.' },
30
+ { name: '선택적 필드 추가', text: 'PGP 키, 보안 정책 또는 채용 게시판과 같은 추가 정보를 포함하세요.' },
31
+ { name: '파일 다운로드 또는 복사', text: '"Download .txt"를 클릭하거나 내용을 복사하여 security.txt로 저장하세요.' },
32
+ { name: '서버에 업로드', text: '파일을 도메인의 /.well-known/ 폴더에 배치하세요.' },
33
+ ];
34
+
35
+ const faqSchema: WithContext<FAQPage> = {
36
+ '@context': 'https://schema.org',
37
+ '@type': 'FAQPage',
38
+ mainEntity: faqData.map((item) => ({
39
+ '@type': 'Question',
40
+ name: item.question,
41
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
42
+ })),
43
+ };
44
+
45
+ const howToSchema: WithContext<HowToThing> = {
46
+ '@context': 'https://schema.org',
47
+ '@type': 'HowTo',
48
+ name: title,
49
+ description,
50
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
51
+ };
52
+
53
+ const appSchema: WithContext<SoftwareApplication> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'SoftwareApplication',
56
+ name: title,
57
+ description,
58
+ applicationCategory: 'UtilityApplication',
59
+ operatingSystem: 'All',
60
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
61
+ inLanguage: 'ko',
62
+ };
63
+
64
+ const ui: GeneradorSecurityTxtUI = {
65
+ titleBasicFields: '필수 필드',
66
+ labelContact: '연락처(이메일 또는 URL)',
67
+ placeholderContact: 'mailto:security@example.com 또는 https://example.com/contact',
68
+ contactTip: '취약점 보고를 보낼 주소입니다.',
69
+ labelExpires: '만료 날짜',
70
+ expiresTip: '향후 1년을 초과하면 안 됩니다.',
71
+ titleOptionalFields: '선택적 필드',
72
+ labelEncryption: '공개 키',
73
+ placeholderEncryption: 'https://example.com/pgp-key.txt',
74
+ encryptionTip: '암호화된 보고를 위한 PGP 키 링크입니다.',
75
+ labelPolicy: '보안 정책',
76
+ placeholderPolicy: 'https://example.com/security/policy/',
77
+ policyTip: '취약점 처리 방법을 자세히 설명하는 페이지입니다.',
78
+ labelAcknowledgments: '감사의 말',
79
+ placeholderAcknowledgments: 'https://example.com/security/hall-of-fame/',
80
+ acknowledgmentsTip: '보안 연구자에게 감사를 표하는 페이지입니다.',
81
+ labelHiring: '채용 게시판',
82
+ placeholderHiring: 'https://example.com/jobs',
83
+ hiringTip: '보안 채용 공고 링크입니다.',
84
+ resultTitle: '미리보기(security.txt)',
85
+ btnCopy: '코드 복사',
86
+ btnDownload: '.txt 다운로드',
87
+ copiedMessage: '복사됨',
88
+ generatingMessage: 'security.txt 파일 생성 중...',
89
+ comment: '생성됨',
90
+ };
91
+
92
+ export const content: ToolLocaleContent<GeneradorSecurityTxtUI> = {
93
+ slug,
94
+ title,
95
+ description,
96
+ ui,
97
+ faqTitle: '자주 묻는 질문',
98
+ faq: faqData,
99
+ bibliographyTitle: 'Security.txt에 관한 기술 자료',
100
+ bibliography: [
101
+ { name: 'RFC 9116: A File Format to Aid in Security Vulnerability Disclosure', url: 'https://datatracker.ietf.org/doc/html/rfc9116' },
102
+ { name: 'Security.txt Official Website', url: 'https://securitytxt.org/' },
103
+ { name: 'OWASP: Vulnerability Disclosure Cheat Sheet', url: 'https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html' },
104
+ ],
105
+ howTo: howToData,
106
+ schemas: [faqSchema, howToSchema, appSchema],
107
+ seo: [
108
+ { type: 'title', text: 'security.txt 파일이란 무엇이고 생성해야 하는 이유는 무엇입니까?', level: 2 },
109
+ {
110
+ type: 'paragraph',
111
+ html: '오늘날의 사이버 보안 환경에서 투명성과 소통이 필수적입니다. 시스템 관리자, 웹 개발자 또는 디지털 비즈니스 소유자라면 아마도 <code>robots.txt</code> 또는 <code>ads.txt</code>와 같은 머신이 웹사이트를 이해하도록 돕는 텍스트 파일에 이미 익숙할 것입니다. 그러나 플랫폼의 무결성을 위한 덜 알려져 있지만 중요한 표준이 있습니다: <strong>Security.txt</strong>, <strong>RFC 9116</strong>으로 정의됩니다.',
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: '<strong>security.txt 파일을 생성하는</strong> 목적은 보안 연구자에게 웹사이트 관리자에게 연락하는 표준화된 방법을 제공하는 것입니다. 이 파일이 없으면 시스템의 결함을 발견한 윤리적 해커는 누구에게 보고해야 할지 모를 수 있으며, 이는 종종 정보가 손실되거나 공지 없이 공개되거나 악의적인 행위자에 의해 악용되는 결과를 초래합니다.',
116
+ },
117
+ { type: 'title', text: 'RFC 9116에 따라 Security.txt 파일을 만들고 설치하는 방법', level: 2 },
118
+ {
119
+ type: 'paragraph',
120
+ html: '<strong>보안 연구자 연락처 표준</strong>은 이 파일이 서버의 특정 위치에 있어야 함을 규정합니다: <code>/.well-known/</code> 폴더입니다. 따라서 최종 경로는 일반적으로 <code>https://yourdomain.com/.well-known/security.txt</code>입니다. 루트에 배치하는 것도 허용되지만(<code>/security.txt</code>) 첫 번째 옵션은 자동 스캐닝 도구에서 선호합니다.',
121
+ },
122
+ { type: 'title', text: '놓칠 수 없는 필수 필드', level: 3 },
123
+ {
124
+ type: 'paragraph',
125
+ html: '<strong>security.txt 코드를 얻을</strong> 때 최소한 두 개의 중요한 요소를 포함해야 합니다:',
126
+ },
127
+ {
128
+ type: 'list',
129
+ items: [
130
+ '<strong>Contact:</strong> 보고서를 보낼 이메일 주소 또는 양식의 URL입니다. <code>mailto:</code> 또는 <code>https://</code>로 시작해야 합니다.',
131
+ '<strong>Expires:</strong> 파일의 정보가 더 이상 유효하지 않음을 나타내는 ISO 8601 형식의 날짜입니다. 1년 이상 앞으로 설정하지 않는 것이 좋습니다.',
132
+ ],
133
+ },
134
+ { type: 'code', text: 'Contact: mailto:security@yourcompany.com\nExpires: 2025-12-31T23:59:59.000Z' },
135
+ { type: 'title', text: '고급 보안을 위한 선택적 필드', level: 3 },
136
+ {
137
+ type: 'paragraph',
138
+ html: '더 강력한 <strong>웹사이트 보호</strong>를 원하는 사이트의 경우 표준은 추가 필드를 제공합니다:',
139
+ },
140
+ {
141
+ type: 'list',
142
+ items: [
143
+ '<strong>Encryption:</strong> 연구자가 암호화되고 안전한 정보를 보낼 수 있도록 PGP 공개 키 링크입니다.',
144
+ '<strong>Policy:</strong> 책임감 있는 공개 프로세스를 설명하는 보안 정책 페이지 링크입니다.',
145
+ '<strong>Acknowledgments:</strong> 연구자를 위한 "명예의 전당" 또는 감사 벽 링크입니다.',
146
+ '<strong>Hiring:</strong> 사이버 보안 채용 공고 링크입니다.',
147
+ ],
148
+ },
149
+ { type: 'title', text: '무료 Security.txt 생성기 사용의 이점', level: 2 },
150
+ {
151
+ type: 'paragraph',
152
+ html: '많은 사람들이 <strong>웹사이트의 보안 연락처를 빠르게 얻는 방법</strong>을 궁금해합니다. 우리의 도구를 사용하면 복잡한 기술 문서를 읽을 필요 없이 RFC 9116 형식을 엄격하게 준수합니다.',
153
+ },
154
+ {
155
+ type: 'paragraph',
156
+ html: '생성기를 사용하면 일반적인 구문 오류를 피할 수 있습니다. 예를 들어 <code>mailto:</code> 접두사를 잊거나 만료 날짜의 시간대 형식을 잘못 지정하면 연구자의 자동화된 도구가 파일을 무시할 수 있습니다.',
157
+ },
158
+ { type: 'title', text: 'SEO 및 웹 평판에 미치는 영향', level: 3 },
159
+ {
160
+ type: 'paragraph',
161
+ html: '<code>security.txt</code> 파일은 페이지 속도나 HTTPS와 같은 Google의 직접적인 순위 지정 요소가 아니지만 간접적인 영향을 미칩니다. 취약점을 잘 관리하는 웹사이트는 SEO를 수 시간 내에 망칠 수 있는 시끄러운 해킹(손상, 스팸 삽입)을 방지합니다. 또한 많은 회사 보안 평점 플랫폼(예: SecurityScorecard 또는 BitSight)은 이 표준을 구현하는 도메인에 추가 포인트를 부여합니다.',
162
+ },
163
+ { type: 'title', text: '결론: 더 안전한 웹을 위한 간단한 단계', level: 2 },
164
+ {
165
+ type: 'paragraph',
166
+ html: '요약하면 <strong>security.txt를 다운로드</strong>하고 서버에 업로드하는 것은 오늘날 수행할 수 있는 가장 빠르고 효과적인 보안 유지 관리 작업 중 하나입니다. "좋은 사람들"이 쉽게 할 수 있도록 하고, 호기심 많은 사람들을 억제하며, 사용자 개인정보 보호 및 데이터를 진지하게 받아들인다는 것을 세상에 보여줍니다.',
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: '보안 침해로 인해 이를 제공하지 않은 것을 후회할 때까지 기다리지 마세요. 지금 <strong>온라인 security.txt 생성기</strong>를 사용하여 디지털 생태계를 제어하세요.',
171
+ },
172
+ ],
173
+ };
174
+
@@ -0,0 +1,174 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { GeneradorSecurityTxtUI } from '../ui';
4
+
5
+ const slug = 'security-txt-maker';
6
+ const title = 'Security.txt Generator RFC 9116';
7
+ const description = 'Maak uw professionele security.txt-bestand om kwetsbaarheidsrapportage te vergemakkelijken en internationale webveiligheidsnormen na te leven.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Wat is het security.txt-bestand?',
12
+ answer: 'Het is een standaard (RFC 9116) waarmee websites kunnen bepalen hoe veiligheidsonderzoekers hen kunnen bereiken om kwetsbaarheden verantwoord te melden.',
13
+ },
14
+ {
15
+ question: 'Waar moet het security.txt-bestand worden geplaatst?',
16
+ answer: 'De aanbevolen standaardlocatie is in de map /.well-known/ van uw domein, wat resulteert in de URL https://example.com/.well-known/security.txt.',
17
+ },
18
+ {
19
+ question: 'Waarom is de vervaldatum verplicht?',
20
+ answer: 'Om ervoor te zorgen dat contactgegevens niet verouderd raken. Als het bestand geen geldige vervaldatum heeft, mogen onderzoekers niet vertrouwen dat communicatiekanalen actief blijven.',
21
+ },
22
+ {
23
+ question: 'Welke velden zijn vereist in een security.txt?',
24
+ answer: 'Volgens RFC 9116 zijn de vereiste velden "Contact" (met een e-mailadres of URL) en "Expires" (met een toekomstige datum in ISO 8601-indeling).',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ { name: 'Vul de velden in', text: 'Vul uw e-mailadres of contact-URL in en selecteer een vervaldatum.' },
30
+ { name: 'Voeg optionele velden toe', text: 'Voeg aanvullende informatie toe, zoals uw PGP-sleutel, beveiligingsbeleid of wervingsbord.' },
31
+ { name: 'Download of kopieer het bestand', text: 'Klik op "Download .txt" of kopieer de inhoud en sla deze op als security.txt.' },
32
+ { name: 'Upload naar server', text: 'Plaats het bestand in de map /.well-known/ van uw domein.' },
33
+ ];
34
+
35
+ const faqSchema: WithContext<FAQPage> = {
36
+ '@context': 'https://schema.org',
37
+ '@type': 'FAQPage',
38
+ mainEntity: faqData.map((item) => ({
39
+ '@type': 'Question',
40
+ name: item.question,
41
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
42
+ })),
43
+ };
44
+
45
+ const howToSchema: WithContext<HowToThing> = {
46
+ '@context': 'https://schema.org',
47
+ '@type': 'HowTo',
48
+ name: title,
49
+ description,
50
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
51
+ };
52
+
53
+ const appSchema: WithContext<SoftwareApplication> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'SoftwareApplication',
56
+ name: title,
57
+ description,
58
+ applicationCategory: 'UtilityApplication',
59
+ operatingSystem: 'All',
60
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
61
+ inLanguage: 'nl',
62
+ };
63
+
64
+ const ui: GeneradorSecurityTxtUI = {
65
+ titleBasicFields: 'Vereiste velden',
66
+ labelContact: 'Contact (e-mailadres of URL)',
67
+ placeholderContact: 'mailto:security@example.com of https://example.com/contact',
68
+ contactTip: 'Adres waar kwetsbaarheidsrapporten naar moeten worden gestuurd.',
69
+ labelExpires: 'Vervaldatum',
70
+ expiresTip: 'Mag niet meer dan een jaar in de toekomst liggen.',
71
+ titleOptionalFields: 'Optionele velden',
72
+ labelEncryption: 'Openbare sleutel',
73
+ placeholderEncryption: 'https://example.com/pgp-key.txt',
74
+ encryptionTip: 'Link naar uw PGP-sleutel voor versleutelde rapporten.',
75
+ labelPolicy: 'Beveiligingsbeleid',
76
+ placeholderPolicy: 'https://example.com/security/policy/',
77
+ policyTip: 'Pagina met details over hoe u kwetsbaarheden afhandelt.',
78
+ labelAcknowledgments: 'Erkenningen',
79
+ placeholderAcknowledgments: 'https://example.com/security/hall-of-fame/',
80
+ acknowledgmentsTip: 'Pagina ter dankzegging aan veiligheidsonderzoekers.',
81
+ labelHiring: 'Wervingsbord',
82
+ placeholderHiring: 'https://example.com/jobs',
83
+ hiringTip: 'Link naar openstaande beveiligingsfuncties.',
84
+ resultTitle: 'Voorbeeld(security.txt)',
85
+ btnCopy: 'Code kopiëren',
86
+ btnDownload: 'Download .txt',
87
+ copiedMessage: 'Gekopieerd',
88
+ generatingMessage: 'security.txt-bestand genereren...',
89
+ comment: 'Gegenereerd',
90
+ };
91
+
92
+ export const content: ToolLocaleContent<GeneradorSecurityTxtUI> = {
93
+ slug,
94
+ title,
95
+ description,
96
+ ui,
97
+ faqTitle: 'Veelgestelde vragen',
98
+ faq: faqData,
99
+ bibliographyTitle: 'Technische bronnen over Security.txt',
100
+ bibliography: [
101
+ { name: 'RFC 9116: A File Format to Aid in Security Vulnerability Disclosure', url: 'https://datatracker.ietf.org/doc/html/rfc9116' },
102
+ { name: 'Security.txt Official Website', url: 'https://securitytxt.org/' },
103
+ { name: 'OWASP: Vulnerability Disclosure Cheat Sheet', url: 'https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html' },
104
+ ],
105
+ howTo: howToData,
106
+ schemas: [faqSchema, howToSchema, appSchema],
107
+ seo: [
108
+ { type: 'title', text: 'Wat is een Security.txt-bestand en waarom moet je er een genereren?', level: 2 },
109
+ {
110
+ type: 'paragraph',
111
+ html: 'In het huidige cybersecurity-landschap zijn transparantie en communicatie essentieel. Als u een systeembeheerder, webontwikkelaar of eigenaar van een digitaal bedrijf bent, bent u waarschijnlijk al bekend met tekstbestanden die machines helpen uw website te begrijpen, zoals <code>robots.txt</code> of <code>ads.txt</code>. Er is echter een minder bekende maar vitale standaard voor de integriteit van uw platform: <strong>Security.txt</strong>, gedefinieerd door <strong>RFC 9116</strong>.',
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'Het doel van <strong>het genereren van een security.txt-bestand</strong> is veiligheidsonderzoekers een gestandaardiseerde manier te bieden om uw websiteadministratoren te bereiken wanneer zij een kwetsbaarheid ontdekken. Zonder dit bestand weet een ethische hacker die een fout in uw systeem vindt mogelijk niet aan wie deze moet worden gemeld, wat er vaak toe leidt dat de informatie verloren gaat, zonder kennisgeving wordt gepubliceerd, of door kwaadwillenden wordt misbruikt.',
116
+ },
117
+ { type: 'title', text: 'Hoe het Security.txt-bestand according RFC 9116 maken en installeren', level: 2 },
118
+ {
119
+ type: 'paragraph',
120
+ html: 'De <strong>veiligheidsonderzoekercontactstandaard</strong> bepaalt dat dit bestand op een specifieke locatie op uw server moet staan: de map <code>/.well-known/</code>. Het uiteindelijke pad is daarom meestal <code>https://yourdomain.com/.well-known/security.txt</code>. Hoewel het ook mag in de root (<code>/security.txt</code>) staat, verdient de eerste optie de voorkeur van automatische scanningtools.',
121
+ },
122
+ { type: 'title', text: 'Vereiste velden die u niet mag missen', level: 3 },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Wanneer u <strong>uw security.txt-code verkrijgt</strong>, moet u ervoor zorgen dat deze minstens twee kritieke elementen bevat:',
126
+ },
127
+ {
128
+ type: 'list',
129
+ items: [
130
+ '<strong>Contact:</strong> Het e-mailadres of de URL van een formulier waarheen rapporten moeten worden gestuurd. Moet beginnen met <code>mailto:</code> of <code>https://</code>.',
131
+ '<strong>Expires:</strong> Een datum in ISO 8601-indeling die aangeeft wanneer de informatie van het bestand niet meer geldig is. Het wordt aanbevolen om een datum niet verder dan een jaar in te stellen.',
132
+ ],
133
+ },
134
+ { type: 'code', text: 'Contact: mailto:security@yourcompany.com\nExpires: 2025-12-31T23:59:59.000Z' },
135
+ { type: 'title', text: 'Optionele velden voor geavanceerde beveiliging', level: 3 },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Voor sites die robuustere <strong>websitebescherming</strong> zoeken, biedt de standaard aanvullende velden:',
139
+ },
140
+ {
141
+ type: 'list',
142
+ items: [
143
+ '<strong>Encryption:</strong> Een link naar uw PGP-sleutel zodat onderzoekers u versleutelde en veilige informatie kunnen sturen.',
144
+ '<strong>Policy:</strong> Een link naar uw beveiligingsbeleidspage waar u het proces van verantwoorde openbaarmaking uitlegt.',
145
+ '<strong>Acknowledgments:</strong> Een link naar uw "Hall of Fame" of waarderingswand voor onderzoekers.',
146
+ '<strong>Hiring:</strong> Een link naar uw openstaande cybersecurity-functies.',
147
+ ],
148
+ },
149
+ { type: 'title', text: 'Voordelen van het gebruik van onze gratis Security.txt-generator', level: 2 },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Veel mensen vragen zich af <strong>hoe snel het beveiligingscontact van een website kan worden verkregen</strong>. Door onze tool te gebruiken, zorgt u voor strikte naleving van RFC 9116-indeling zonder dat u complexe technische documenten hoeft te lezen.',
153
+ },
154
+ {
155
+ type: 'paragraph',
156
+ html: 'Het gebruik van een generator voorkomt veelvoorkomende syntaxisfouten. Bijvoorbeeld het vergeten van het <code>mailto:</code>-voorvoegsel of het onjuist opmaken van de tijdzone in de vervaldatum kan ervoor zorgen dat de geautomatiseerde tools van onderzoekers uw bestand negeren.',
157
+ },
158
+ { type: 'title', text: 'Impact op SEO en webreputatie', level: 3 },
159
+ {
160
+ type: 'paragraph',
161
+ html: 'Hoewel het <code>security.txt</code>-bestand niet rechtstreeks een rangeerfactor is in Google, zoals paginasnelheid of HTTPS, heeft het wel een indirecte impact. Een website die kwetsbaarheden goed beheert, voorkomt lawaaierige hacks (vervalsing, spam-injecties) die SEO in uren vernietigen. Bovendien geven veel zakelijke beveiligingsbeoordelingsplatformen (zoals SecurityScorecard of BitSight) extra punten aan domeinen die deze standaard implementeren.',
162
+ },
163
+ { type: 'title', text: 'Conclusie: Een eenvoudige stap voor een veiliger web', level: 2 },
164
+ {
165
+ type: 'paragraph',
166
+ html: 'Samenvattend is <strong>security.txt downloaden</strong> en uploaden naar uw server een van de snelste en meest effectieve beveiligingsonderhoudstaken die u vandaag kunt uitvoeren. U maakt het de "goede jongens" gemakkelijk, ontmoedigt de nieuwsgierigen, en laat de wereld zien dat u gebruikersprivacy en gegevens serieus neemt.',
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: 'Wacht niet tot een beveiligingsinbreuk dat u niet vertrouwde. Gebruik nu onze <strong>online security.txt-generator</strong> en behoud controle over uw digitale ecosysteem.',
171
+ },
172
+ ],
173
+ };
174
+
@@ -0,0 +1,174 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { GeneradorSecurityTxtUI } from '../ui';
4
+
5
+ const slug = 'tworca-security-txt';
6
+ const title = 'Generator Security.txt RFC 9116';
7
+ const description = 'Utwórz profesjonalny plik security.txt, aby ułatwić raportowanie luk w zabezpieczeniach i zgodzić się z międzynarodowymi standardami bezpieczeństwa sieci Web.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Czym jest plik security.txt?',
12
+ answer: 'Jest to standard (RFC 9116), który pozwala witrynom definiować sposób, w jaki badacze bezpieczeństwa powinni się z nimi skontaktować, aby odpowiedzialnie zgłaszać luki w zabezpieczeniach.',
13
+ },
14
+ {
15
+ question: 'Gdzie powinien być umieszczony plik security.txt?',
16
+ answer: 'Zalecaną standardową lokalizacją jest folder /.well-known/ Twojej domeny, co skutkuje adresem URL https://example.com/.well-known/security.txt.',
17
+ },
18
+ {
19
+ question: 'Dlaczego data wygaśnięcia jest obowiązkowa?',
20
+ answer: 'Aby zapewnić, że informacje kontaktowe nie staną się przestarzałe. Jeśli plik nie ma prawidłowej daty wygaśnięcia, badacze mogą nie zaufać, że kanały komunikacji pozostają aktywne.',
21
+ },
22
+ {
23
+ question: 'Jakie pola są wymagane w security.txt?',
24
+ answer: 'Zgodnie z RFC 9116 wymagane pola to "Contact" (z adresem e-mail lub URL) i "Expires" (z datą w przyszłości w formacie ISO 8601).',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ { name: 'Wypełnij pola', text: 'Wypełnij adres e-mail lub adres URL kontaktu i wybierz datę wygaśnięcia.' },
30
+ { name: 'Dodaj pola opcjonalne', text: 'Dołącz dodatkowe informacje, takie jak Twój klucz PGP, polityka bezpieczeństwa lub tablica ogłoszeń.' },
31
+ { name: 'Pobierz lub skopiuj plik', text: 'Kliknij "Pobierz .txt" lub skopiuj zawartość i zapisz jako security.txt.' },
32
+ { name: 'Prześlij na serwer', text: 'Umieść plik w folderze /.well-known/ Twojej domeny.' },
33
+ ];
34
+
35
+ const faqSchema: WithContext<FAQPage> = {
36
+ '@context': 'https://schema.org',
37
+ '@type': 'FAQPage',
38
+ mainEntity: faqData.map((item) => ({
39
+ '@type': 'Question',
40
+ name: item.question,
41
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
42
+ })),
43
+ };
44
+
45
+ const howToSchema: WithContext<HowToThing> = {
46
+ '@context': 'https://schema.org',
47
+ '@type': 'HowTo',
48
+ name: title,
49
+ description,
50
+ step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
51
+ };
52
+
53
+ const appSchema: WithContext<SoftwareApplication> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'SoftwareApplication',
56
+ name: title,
57
+ description,
58
+ applicationCategory: 'UtilityApplication',
59
+ operatingSystem: 'All',
60
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
61
+ inLanguage: 'pl',
62
+ };
63
+
64
+ const ui: GeneradorSecurityTxtUI = {
65
+ titleBasicFields: 'Pola wymagane',
66
+ labelContact: 'Kontakt (adres e-mail lub URL)',
67
+ placeholderContact: 'mailto:security@example.com lub https://example.com/contact',
68
+ contactTip: 'Adres, gdzie powinny być wysyłane raporty o lukach w zabezpieczeniach.',
69
+ labelExpires: 'Data wygaśnięcia',
70
+ expiresTip: 'Nie powinna być dalsza niż rok w przyszłości.',
71
+ titleOptionalFields: 'Pola opcjonalne',
72
+ labelEncryption: 'Klucz publiczny',
73
+ placeholderEncryption: 'https://example.com/pgp-key.txt',
74
+ encryptionTip: 'Łącze do Twojego klucza PGP do szyfrowanych raportów.',
75
+ labelPolicy: 'Polityka bezpieczeństwa',
76
+ placeholderPolicy: 'https://example.com/security/policy/',
77
+ policyTip: 'Strona opisująca sposób obsługi luk w zabezpieczeniach.',
78
+ labelAcknowledgments: 'Podziękowania',
79
+ placeholderAcknowledgments: 'https://example.com/security/hall-of-fame/',
80
+ acknowledgmentsTip: 'Strona dziękująca badaczom bezpieczeństwa.',
81
+ labelHiring: 'Tablica ofert pracy',
82
+ placeholderHiring: 'https://example.com/jobs',
83
+ hiringTip: 'Łącze do ofert pracy w dziedzinie bezpieczeństwa.',
84
+ resultTitle: 'Podgląd(security.txt)',
85
+ btnCopy: 'Skopiuj kod',
86
+ btnDownload: 'Pobierz .txt',
87
+ copiedMessage: 'Skopiowano',
88
+ generatingMessage: 'Generowanie pliku security.txt...',
89
+ comment: 'Wygenerowany',
90
+ };
91
+
92
+ export const content: ToolLocaleContent<GeneradorSecurityTxtUI> = {
93
+ slug,
94
+ title,
95
+ description,
96
+ ui,
97
+ faqTitle: 'Często zadawane pytania',
98
+ faq: faqData,
99
+ bibliographyTitle: 'Zasoby techniczne na temat Security.txt',
100
+ bibliography: [
101
+ { name: 'RFC 9116: A File Format to Aid in Security Vulnerability Disclosure', url: 'https://datatracker.ietf.org/doc/html/rfc9116' },
102
+ { name: 'Security.txt Official Website', url: 'https://securitytxt.org/' },
103
+ { name: 'OWASP: Vulnerability Disclosure Cheat Sheet', url: 'https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html' },
104
+ ],
105
+ howTo: howToData,
106
+ schemas: [faqSchema, howToSchema, appSchema],
107
+ seo: [
108
+ { type: 'title', text: 'Czym jest plik Security.txt i dlaczego powinieneś go generować?', level: 2 },
109
+ {
110
+ type: 'paragraph',
111
+ html: 'W dzisiejszym krajobrazie cyberbezpieczeństwa transparentność i komunikacja są niezbędne. Jeśli jesteś administratorem systemu, deweloperem sieci Web lub właścicielem cyfrowej firmy, prawdopodobnie znasz już pliki tekstowe, które pomagają maszynom zrozumieć Twoją witrynę, takie jak <code>robots.txt</code> lub <code>ads.txt</code>. Istnieje jednak mniej znany, ale istotny standard integralności Twojej platformy: <strong>Security.txt</strong>, zdefiniowany przez <strong>RFC 9116</strong>.',
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'Celem <strong>wygenerowania pliku security.txt</strong> jest zapewnienie badaczom bezpieczeństwa standaryzowanego sposobu kontaktu z administratorami Twojej witryny po odkryciu luki w zabezpieczeniach. Bez tego pliku etyczny haker, który znajdzie błąd w Twoim systemie, może nie wiedzieć, komu to zgłosić, co często skutkuje stratą informacji, publikacją bez powiadomienia lub exploitacją przez złośliwe podmioty.',
116
+ },
117
+ { type: 'title', text: 'Jak stworzyć i zainstalować plik Security.txt zgodnie z RFC 9116', level: 2 },
118
+ {
119
+ type: 'paragraph',
120
+ html: '<strong>Standard kontaktu badacza bezpieczeństwa</strong> stanowi, że plik musi być w określonej lokalizacji na serwerze: folderze <code>/.well-known/</code>. Ostateczna ścieżka to zazwyczaj <code>https://yourdomain.com/.well-known/security.txt</code>. Chociaż dozwolone jest również umieszczenie go w katalogu głównym (<code>/security.txt</code>), pierwsza opcja jest preferowana przez narzędzia do automatycznego skanowania.',
121
+ },
122
+ { type: 'title', text: 'Pola obowiązkowe, których nie możesz przegapić', level: 3 },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Kiedy <strong>zdobędziesz kod security.txt</strong>, musisz upewnić się, że zawiera co najmniej dwa krytyczne elementy:',
126
+ },
127
+ {
128
+ type: 'list',
129
+ items: [
130
+ '<strong>Contact:</strong> Adres e-mail lub URL formularza, na który powinny być wysyłane raporty. Musi zaczynać się od <code>mailto:</code> lub <code>https://</code>.',
131
+ '<strong>Expires:</strong> Data w formacie ISO 8601 wskazująca, kiedy informacje w pliku nie są już ważne. Zalecane jest nie ustawianie daty dalej niż rok w przyszłość.',
132
+ ],
133
+ },
134
+ { type: 'code', text: 'Contact: mailto:security@yourcompany.com\nExpires: 2025-12-31T23:59:59.000Z' },
135
+ { type: 'title', text: 'Pola opcjonalne dla zaawansowanego bezpieczeństwa', level: 3 },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'W przypadku witryn szukających bardziej solidnej <strong>ochrony witryny</strong> standard oferuje dodatkowe pola:',
139
+ },
140
+ {
141
+ type: 'list',
142
+ items: [
143
+ '<strong>Encryption:</strong> Link do Twojego publicznego klucza PGP, aby badacze mogli wysłać Ci zaszyfrowane i bezpieczne informacje.',
144
+ '<strong>Policy:</strong> Link do strony polityki bezpieczeństwa, na której wyjaśniasz proces odpowiedzialnego ujawnienia.',
145
+ '<strong>Acknowledgments:</strong> Link do Twojej "Galerii sław" lub ściany uznania dla badaczy.',
146
+ '<strong>Hiring:</strong> Link do Twoich otwartych stanowisk w dziedzinie cyberbezpieczeństwa.',
147
+ ],
148
+ },
149
+ { type: 'title', text: 'Korzyści z używania naszego bezpłatnego generatora Security.txt', level: 2 },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Wiele osób zastanawia się <strong>jak szybko uzyskać kontakt bezpieczeństwa witryny</strong>. Korzystając z naszego narzędzia, zapewniasz ścisłą zgodność z formatem RFC 9116 bez konieczności czytania złożonych dokumentów technicznych.',
153
+ },
154
+ {
155
+ type: 'paragraph',
156
+ html: 'Korzystanie z generatora pozwala uniknąć typowych błędów składniowych. Na przykład zapomnienie prefiksu <code>mailto:</code> lub nieprawidłowe sformatowanie strefy czasowej w dacie wygaśnięcia może spowodować, że zautomatyzowane narzędzia badaczy będą ignorować Twój plik.',
157
+ },
158
+ { type: 'title', text: 'Wpływ na SEO i reputację sieci', level: 3 },
159
+ {
160
+ type: 'paragraph',
161
+ html: 'Chociaż plik <code>security.txt</code> nie jest bezpośrednim czynnikiem rankingowym w Google, takim jak szybkość strony czy HTTPS, ma pośredni wpływ. Witryna, która dobrze zarządza lukami w zabezpieczeniach, unika hałaśliwych haków (sfałszowania, iniekcji spamu), które niszczą SEO w ciągu godzin. Ponadto wiele korporacyjnych platform oceny bezpieczeństwa (takich jak SecurityScorecard lub BitSight) przyznaje dodatkowe punkty domenom, które implementują ten standard.',
162
+ },
163
+ { type: 'title', text: 'Wniosek: Prosty krok do bezpieczniejszego Internetu', level: 2 },
164
+ {
165
+ type: 'paragraph',
166
+ html: 'Podsumowując, <strong>pobieranie security.txt</strong> i przesyłanie go na serwer jest jednym z najszybszych i najeeffektywniejszych zadań konserwacji bezpieczeństwa, które możesz wykonać dzisiaj. Ułatwiasz "dobrym chłopakom", zniechęcasz ciekawskich i pokazujesz światu, że poważnie traktujesz prywatność użytkowników i dane.',
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: 'Nie czekaj na naruszenie bezpieczeństwa, aby żałować, że tego nie zapewniłeś. Użyj naszego <strong>bezpłatnego generatora security.txt online</strong> teraz i utrzymuj kontrolę nad Twoim ekosystemem cyfrowym.',
171
+ },
172
+ ],
173
+ };
174
+