@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 = 'gerador-security-txt';
6
+ const title = 'Gerador Security.txt RFC 9116';
7
+ const description = 'Crie seu arquivo security.txt profissional para facilitar a divulgação de vulnerabilidades e cumprir padrões internacionais de segurança da web.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'O que é o arquivo security.txt?',
12
+ answer: 'É um padrão (RFC 9116) que permite que os sites definam como os pesquisadores de segurança devem contatá-los para relatar vulnerabilidades de forma responsável.',
13
+ },
14
+ {
15
+ question: 'Onde o arquivo security.txt deve ser colocado?',
16
+ answer: 'O local padrão recomendado é na pasta /.well-known/ do seu domínio, resultando na URL https://example.com/.well-known/security.txt.',
17
+ },
18
+ {
19
+ question: 'Por que a data de expiração é obrigatória?',
20
+ answer: 'Para garantir que as informações de contato não se tornem desatualizadas. Se o arquivo não tiver uma data de expiração válida, os pesquisadores podem não confiar que os canais de comunicação permaneçam ativos.',
21
+ },
22
+ {
23
+ question: 'Quais campos são obrigatórios em um security.txt?',
24
+ answer: 'De acordo com RFC 9116, os campos obrigatórios são "Contact" (com um endereço de e-mail ou URL) e "Expires" (com uma data futura em formato ISO 8601).',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ { name: 'Preencha os campos', text: 'Complete seu endereço de e-mail ou URL de contato e selecione uma data de expiração.' },
30
+ { name: 'Adicione campos opcionais', text: 'Inclua informações adicionais como sua chave PGP, política de segurança ou quadro de vagas.' },
31
+ { name: 'Baixe ou copie o arquivo', text: 'Clique em "Download .txt" ou copie o conteúdo e salve como security.txt.' },
32
+ { name: 'Envie para o servidor', text: 'Coloque o arquivo na pasta /.well-known/ do seu domínio.' },
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: 'pt',
62
+ };
63
+
64
+ const ui: GeneradorSecurityTxtUI = {
65
+ titleBasicFields: 'Campos obrigatórios',
66
+ labelContact: 'Contato (e-mail ou URL)',
67
+ placeholderContact: 'mailto:security@example.com ou https://example.com/contact',
68
+ contactTip: 'Endereço para onde os relatórios de vulnerabilidades devem ser enviados.',
69
+ labelExpires: 'Data de expiração',
70
+ expiresTip: 'Não deve exceder um ano no futuro.',
71
+ titleOptionalFields: 'Campos opcionais',
72
+ labelEncryption: 'Chave pública',
73
+ placeholderEncryption: 'https://example.com/pgp-key.txt',
74
+ encryptionTip: 'Link para sua chave PGP para relatórios criptografados.',
75
+ labelPolicy: 'Política de segurança',
76
+ placeholderPolicy: 'https://example.com/security/policy/',
77
+ policyTip: 'Página detalhando como você lida com vulnerabilidades.',
78
+ labelAcknowledgments: 'Reconhecimentos',
79
+ placeholderAcknowledgments: 'https://example.com/security/hall-of-fame/',
80
+ acknowledgmentsTip: 'Página agradecendo pesquisadores de segurança.',
81
+ labelHiring: 'Quadro de vagas',
82
+ placeholderHiring: 'https://example.com/jobs',
83
+ hiringTip: 'Link para aberturas de empregos em segurança.',
84
+ resultTitle: 'Visualização(security.txt)',
85
+ btnCopy: 'Copiar código',
86
+ btnDownload: 'Download .txt',
87
+ copiedMessage: 'Copiado',
88
+ generatingMessage: 'Gerando arquivo security.txt...',
89
+ comment: 'Gerado',
90
+ };
91
+
92
+ export const content: ToolLocaleContent<GeneradorSecurityTxtUI> = {
93
+ slug,
94
+ title,
95
+ description,
96
+ ui,
97
+ faqTitle: 'Perguntas frequentes',
98
+ faq: faqData,
99
+ bibliographyTitle: 'Recursos técnicos sobre 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: 'O que é um arquivo Security.txt e por que você precisa gerar um?', level: 2 },
109
+ {
110
+ type: 'paragraph',
111
+ html: 'Na atual paisagem de segurança cibernética, a transparência e a comunicação são essenciais. Se você é um administrador de sistema, desenvolvedor web ou proprietário de negócios digitais, provavelmente já está familiarizado com arquivos de texto que ajudam máquinas a entender seu site, como <code>robots.txt</code> ou <code>ads.txt</code>. No entanto, existe um padrão menos conhecido, mas vital para a integridade da sua plataforma: <strong>Security.txt</strong>, definido pela <strong>RFC 9116</strong>.',
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'O propósito de <strong>gerar um arquivo security.txt</strong> é fornecer aos pesquisadores de segurança um método padronizado para entrar em contato com os administradores do seu site ao descobrir uma vulnerabilidade. Sem este arquivo, um hacker ético que encontre uma falha no seu sistema pode não saber a quem relatar, o que frequentemente resulta em informações serem perdidas, publicadas sem aviso ou exploradas por atores maliciosos.',
116
+ },
117
+ { type: 'title', text: 'Como criar e instalar o arquivo Security.txt seguindo RFC 9116', level: 2 },
118
+ {
119
+ type: 'paragraph',
120
+ html: 'O <strong>padrão de contato do pesquisador de segurança</strong> determina que este arquivo deve residir em um local específico do seu servidor: a pasta <code>/.well-known/</code>. Portanto, o caminho final é geralmente <code>https://yourdomain.com/.well-known/security.txt</code>. Embora seja permitido colocá-lo na raiz (<code>/security.txt</code>), a primeira opção é preferida por ferramentas de varredura automática.',
121
+ },
122
+ { type: 'title', text: 'Campos obrigatórios que você não pode perder', level: 3 },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Ao <strong>obter seu código security.txt</strong>, você deve garantir que inclua pelo menos dois elementos críticos:',
126
+ },
127
+ {
128
+ type: 'list',
129
+ items: [
130
+ '<strong>Contact:</strong> O endereço de e-mail ou URL de um formulário para onde os relatórios devem ser enviados. Deve começar com <code>mailto:</code> ou <code>https://</code>.',
131
+ '<strong>Expires:</strong> Uma data em formato ISO 8601 que indica quando as informações do arquivo não são mais válidas. Recomenda-se não definir uma data mais de um ano no futuro.',
132
+ ],
133
+ },
134
+ { type: 'code', text: 'Contact: mailto:security@yourcompany.com\nExpires: 2025-12-31T23:59:59.000Z' },
135
+ { type: 'title', text: 'Campos opcionais para segurança avançada', level: 3 },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Para sites que buscam <strong>proteção mais robusta</strong>, o padrão oferece campos adicionais:',
139
+ },
140
+ {
141
+ type: 'list',
142
+ items: [
143
+ '<strong>Encryption:</strong> Um link para sua chave pública PGP para que os pesquisadores possam enviar informações criptografadas e seguras.',
144
+ '<strong>Policy:</strong> Um link para sua página de política de segurança onde você explica o processo de divulgação responsável.',
145
+ '<strong>Acknowledgments:</strong> Um link para seu "Hall da Fama" ou mural de apreciação para pesquisadores.',
146
+ '<strong>Hiring:</strong> Um link para suas aberturas de empregos em segurança cibernética.',
147
+ ],
148
+ },
149
+ { type: 'title', text: 'Benefícios do uso de nosso gerador Security.txt gratuito', level: 2 },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Muitas pessoas se perguntam <strong>como obter rapidamente o contato de segurança de um site</strong>. Ao usar nossa ferramenta, você garante conformidade rigorosa com o formato RFC 9116 sem precisar ler documentos técnicos complexos.',
153
+ },
154
+ {
155
+ type: 'paragraph',
156
+ html: 'Usar um gerador economiza erros de sintaxe comum. Por exemplo, esquecer o prefixo <code>mailto:</code> ou formatar incorretamente o fuso horário na data de expiração pode fazer com que as ferramentas automáticas dos pesquisadores ignorem seu arquivo.',
157
+ },
158
+ { type: 'title', text: 'Impacto no SEO e reputação web', level: 3 },
159
+ {
160
+ type: 'paragraph',
161
+ html: 'Embora o arquivo <code>security.txt</code> não seja um fator de classificação direto no Google como velocidade da página ou HTTPS, ele tem um impacto indireto. Um site que gerencia bem as vulnerabilidades evita hackers barulhentos (falsificação, injeção de spam) que destroem o SEO em poucas horas. Além disso, muitas plataformas de classificação de segurança corporativas (como SecurityScorecard ou BitSight) concedem pontos extras para domínios que implementam este padrão.',
162
+ },
163
+ { type: 'title', text: 'Conclusão: Uma etapa simples para a web mais segura', level: 2 },
164
+ {
165
+ type: 'paragraph',
166
+ html: 'Em resumo, <strong>baixar security.txt</strong> e enviá-lo para seu servidor é uma das tarefas de manutenção de segurança mais rápidas e eficazes que você pode executar hoje. Você facilita para os "rapazes bons", desencoraja os curiosos e mostra ao mundo que leva a privacidade dos usuários e dados a sério.',
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: 'Não espere até uma violação de segurança para se arrepender de não ter fornecido. Use nosso <strong>gerador security.txt online gratuito</strong> agora e mantenha controle do seu ecossistema digital.',
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 = 'generator-security-txt';
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: 'Нажмите "Загрузить .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: 'ru',
62
+ };
63
+
64
+ const ui: GeneradorSecurityTxtUI = {
65
+ titleBasicFields: 'Обязательные поля',
66
+ labelContact: 'Контакт (Email или URL)',
67
+ placeholderContact: 'mailto:security@example.com или https://example.com/contact',
68
+ contactTip: 'Адрес, на который должны отправляться отчёты об уязвимостях.',
69
+ labelExpires: 'Дата истечения',
70
+ expiresTip: 'Не должна быть более чем на год в будущем.',
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: 'Как создать и установить файл Security.txt согласно RFC 9116', 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, указывающая, когда информация в файле больше не действительна. Рекомендуется не устанавливать дату дальше, чем на год вперёд.',
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> не является прямым фактором ранжирования в Google, как скорость страницы или HTTPS, он оказывает косвенное влияние. Сайт, который хорошо управляет уязвимостями, избегает шумного взлома (подделки, внедрения спама), который разрушает 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-skapare';
6
+ const title = 'Security.txt Generator RFC 9116';
7
+ const description = 'Skapa din professionella security.txt-fil för att underlätta rapportering av säkerhetsproblem och följa internationella webbs äkerhetsstandarder.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Vad är security.txt-filen?',
12
+ answer: 'Det är en standard (RFC 9116) som gör det möjligt för webbplatser att definiera hur säkerhetsforskare bör kontakta dem för att på ansvarsfull väg rapportera säkerhetsproblem.',
13
+ },
14
+ {
15
+ question: 'Var bör security.txt-filen placeras?',
16
+ answer: 'Den rekommenderade standardplatsen är i mappen /.well-known/ på din domän, vilket resulterar i URL:en https://example.com/.well-known/security.txt.',
17
+ },
18
+ {
19
+ question: 'Varför är utgångsdatum obligatoriskt?',
20
+ answer: 'För att säkerställa att kontaktinformationen inte blir föråldrad. Om filen inte har ett giltigt utgångsdatum kanske forskare inte kan lita på att kommunikationskanalerna förblir aktiva.',
21
+ },
22
+ {
23
+ question: 'Vilka fält krävs i en security.txt?',
24
+ answer: 'Enligt RFC 9116 är de obligatoriska fälten "Contact" (med en e-postadress eller URL) och "Expires" (med ett framtida datum i ISO 8601-format).',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ { name: 'Fyll i fälten', text: 'Fyll i din e-postadress eller kontakt-URL och välj ett utgångsdatum.' },
30
+ { name: 'Lägg till valfria fält', text: 'Inkludera ytterligare information som din PGP-nyckel, säkerhetsprincip eller jobbanslagstavla.' },
31
+ { name: 'Ladda ned eller kopiera filen', text: 'Klicka på "Ladda ned .txt" eller kopiera innehållet och spara som security.txt.' },
32
+ { name: 'Ladda upp till server', text: 'Placera filen i mappen /.well-known/ på din domän.' },
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: 'sv',
62
+ };
63
+
64
+ const ui: GeneradorSecurityTxtUI = {
65
+ titleBasicFields: 'Obligatoriska fält',
66
+ labelContact: 'Kontakt (e-post eller URL)',
67
+ placeholderContact: 'mailto:security@example.com eller https://example.com/contact',
68
+ contactTip: 'Adressen dit säkerhetsrapporter bör skickas.',
69
+ labelExpires: 'Utgångsdatum',
70
+ expiresTip: 'Ska inte överstiga ett år i framtiden.',
71
+ titleOptionalFields: 'Valfria fält',
72
+ labelEncryption: 'Offentlig nyckel',
73
+ placeholderEncryption: 'https://example.com/pgp-key.txt',
74
+ encryptionTip: 'Länk till din PGP-nyckel för krypterade rapporter.',
75
+ labelPolicy: 'Säkerhetsprincip',
76
+ placeholderPolicy: 'https://example.com/security/policy/',
77
+ policyTip: 'Sida med information om hur du hanterar säkerhetsproblem.',
78
+ labelAcknowledgments: 'Erkännanden',
79
+ placeholderAcknowledgments: 'https://example.com/security/hall-of-fame/',
80
+ acknowledgmentsTip: 'Sida som tackar säkerhetsforskare.',
81
+ labelHiring: 'Jobbanslagstavla',
82
+ placeholderHiring: 'https://example.com/jobs',
83
+ hiringTip: 'Länk till säkerhetsjobbsöppningar.',
84
+ resultTitle: 'Förhandsgransking(security.txt)',
85
+ btnCopy: 'Kopiera kod',
86
+ btnDownload: 'Ladda ned .txt',
87
+ copiedMessage: 'Kopierat',
88
+ generatingMessage: 'Genererar security.txt-fil...',
89
+ comment: 'Genererad',
90
+ };
91
+
92
+ export const content: ToolLocaleContent<GeneradorSecurityTxtUI> = {
93
+ slug,
94
+ title,
95
+ description,
96
+ ui,
97
+ faqTitle: 'Vanliga frågor',
98
+ faq: faqData,
99
+ bibliographyTitle: 'Tekniska resurser om 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: 'Vad är en Security.txt-fil och varför behöver du generera en?', level: 2 },
109
+ {
110
+ type: 'paragraph',
111
+ html: 'I dagens cybersäkerhetsmiljö är transparens och kommunikation essentiella. Om du är systemadministratör, webbutvecklare eller ägare av ett digitalt företag är du förmodligen redan bekant med textfiler som hjälper maskiner att förstå din webbplats, som <code>robots.txt</code> eller <code>ads.txt</code>. Det finns dock en mindre känd men livsviktig standard för din plattforms integritet: <strong>Security.txt</strong>, definierad av <strong>RFC 9116</strong>.',
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'Syftet med <strong>att generera en security.txt-fil</strong> är att ge säkerhetsforskare ett standardiserat sätt att kontakta webbplatsadministratörer när de upptäcker en sårbarhet. Utan denna fil kanske en etisk hacker som hittar en brist i ditt system inte vet vem som ska rapporteras till, vilket ofta resulterar i att informationen går förlorad, publiceras utan meddelande eller utnyttjas av skadliga aktörer.',
116
+ },
117
+ { type: 'title', text: 'Hur du skapar och installerar Security.txt-filen enligt RFC 9116', level: 2 },
118
+ {
119
+ type: 'paragraph',
120
+ html: 'Standarden för <strong>säkerhetsforskarens kontakt</strong> föreskriver att denna fil måste finnas på en specifik plats på servern: mappen <code>/.well-known/</code>. Den slutgiltiga vägen är därför vanligtvis <code>https://yourdomain.com/.well-known/security.txt</code>. Även om det är tillåtet att placera den i roten (<code>/security.txt</code>), föredras det första alternativet av automatiska skanningsverktyg.',
121
+ },
122
+ { type: 'title', text: 'Obligatoriska fält som du inte får missa', level: 3 },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'När du <strong>får din security.txt-kod</strong> måste du se till att den innehåller minst två kritiska element:',
126
+ },
127
+ {
128
+ type: 'list',
129
+ items: [
130
+ '<strong>Contact:</strong> E-postadressen eller URL:en för ett formulär dit rapporter ska skickas. Måste börja med <code>mailto:</code> eller <code>https://</code>.',
131
+ '<strong>Expires:</strong> Ett datum i ISO 8601-format som anger när filens information inte längre är giltig. Det rekommenderas att inte ställa in ett datum längre än ett år fram i tiden.',
132
+ ],
133
+ },
134
+ { type: 'code', text: 'Contact: mailto:security@yourcompany.com\nExpires: 2025-12-31T23:59:59.000Z' },
135
+ { type: 'title', text: 'Valfria fält för avancerad säkerhet', level: 3 },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'För webbplatser som söker mer robust <strong>webbplatsskydd</strong> erbjuder standarden ytterligare fält:',
139
+ },
140
+ {
141
+ type: 'list',
142
+ items: [
143
+ '<strong>Encryption:</strong> En länk till din offentliga PGP-nyckel så att forskare kan skicka dig krypterad och säker information.',
144
+ '<strong>Policy:</strong> En länk till din säkerhetsprincipsida där du förklarar processen för ansvarsfull avslöjande.',
145
+ '<strong>Acknowledgments:</strong> En länk till din "Hall of Fame" eller värderingsväggen för forskare.',
146
+ '<strong>Hiring:</strong> En länk till dina öppna cybersäkerhetsjobb.',
147
+ ],
148
+ },
149
+ { type: 'title', text: 'Fördelar med att använda vår gratis Security.txt-generator', level: 2 },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Många människor undrar <strong>hur man snabbt får en webbplats säkerhetskontakt</strong>. Genom att använda vårt verktyg säkerställer du strikt efterlevnad av RFC 9116-formatet utan att behöva läsa komplexa tekniska dokument.',
153
+ },
154
+ {
155
+ type: 'paragraph',
156
+ html: 'Att använda en generator undviker vanliga syntaxfel. Till exempel kan det att glömma <code>mailto:</code>-prefixet eller felaktigt formatera tidszonen i utgångsdatumet få forskarnas automatiserade verktyg att ignorera din fil.',
157
+ },
158
+ { type: 'title', text: 'Inverkan på SEO och webrykte', level: 3 },
159
+ {
160
+ type: 'paragraph',
161
+ html: 'Även om filen <code>security.txt</code> inte är en direkt rankingfaktor i Google som sidshastighet eller HTTPS, har den en indirekt påverkan. En webbplats som hanterar sårbarheter väl undviker bullrig hacking (förfalskning, skräpinjektion) som förstör SEO på timmar. Dessutom ger många företagsplattformar för säkerhetsbedömning (som SecurityScorecard eller BitSight) extra poäng till domäner som implementerar denna standard.',
162
+ },
163
+ { type: 'title', text: 'Slutsats: Ett enkelt steg för ett säkrare webben', level: 2 },
164
+ {
165
+ type: 'paragraph',
166
+ html: 'Sammanfattningsvis är <strong>nedladdning av security.txt</strong> och uppladdning av det till servern en av de snabbaste och mest effektiva säkerhetsmaintenanceuppgifterna du kan utföra idag. Du gör det lätt för "de goda killarna", avskräcker de nyfikna och visar världen att du tar användarprivacy och data på allvar.',
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: 'Vänta inte på ett säkerhetsbrott för att ångra att du inte tillhandahöll det. Använd vår <strong>online security.txt-generator</strong> nu och behåll kontrollen över ditt digitala ekosystem.',
171
+ },
172
+ ],
173
+ };
174
+