@jjlmoya/utils-developer 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/category/i18n/de.ts +34 -0
- package/src/category/i18n/id.ts +34 -0
- package/src/category/i18n/it.ts +34 -0
- package/src/category/i18n/ja.ts +34 -0
- package/src/category/i18n/ko.ts +34 -0
- package/src/category/i18n/nl.ts +34 -0
- package/src/category/i18n/pl.ts +34 -0
- package/src/category/i18n/pt.ts +34 -0
- package/src/category/i18n/ru.ts +34 -0
- package/src/category/i18n/sv.ts +34 -0
- package/src/category/i18n/tr.ts +34 -0
- package/src/category/i18n/zh.ts +34 -0
- package/src/category/index.ts +13 -1
- package/src/index.ts +12 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tool/aspectRatio/i18n/de.ts +177 -0
- package/src/tool/aspectRatio/i18n/id.ts +177 -0
- package/src/tool/aspectRatio/i18n/it.ts +177 -0
- package/src/tool/aspectRatio/i18n/ja.ts +178 -0
- package/src/tool/aspectRatio/i18n/ko.ts +178 -0
- package/src/tool/aspectRatio/i18n/nl.ts +178 -0
- package/src/tool/aspectRatio/i18n/pl.ts +177 -0
- package/src/tool/aspectRatio/i18n/pt.ts +177 -0
- package/src/tool/aspectRatio/i18n/ru.ts +177 -0
- package/src/tool/aspectRatio/i18n/sv.ts +177 -0
- package/src/tool/aspectRatio/i18n/tr.ts +177 -0
- package/src/tool/aspectRatio/i18n/zh.ts +178 -0
- package/src/tool/aspectRatio/index.ts +15 -7
- package/src/tool/calculadoraTiempoDatos/i18n/de.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/id.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/it.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +151 -0
- package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +151 -0
- package/src/tool/calculadoraTiempoDatos/i18n/nl.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/pt.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +151 -0
- package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/tr.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +151 -0
- package/src/tool/calculadoraTiempoDatos/index.ts +15 -7
- package/src/tool/colorConverter/i18n/de.ts +126 -0
- package/src/tool/colorConverter/i18n/id.ts +126 -0
- package/src/tool/colorConverter/i18n/it.ts +126 -0
- package/src/tool/colorConverter/i18n/ja.ts +127 -0
- package/src/tool/colorConverter/i18n/ko.ts +127 -0
- package/src/tool/colorConverter/i18n/nl.ts +126 -0
- package/src/tool/colorConverter/i18n/pl.ts +126 -0
- package/src/tool/colorConverter/i18n/pt.ts +126 -0
- package/src/tool/colorConverter/i18n/ru.ts +126 -0
- package/src/tool/colorConverter/i18n/sv.ts +126 -0
- package/src/tool/colorConverter/i18n/tr.ts +126 -0
- package/src/tool/colorConverter/i18n/zh.ts +127 -0
- package/src/tool/colorConverter/index.ts +15 -7
- package/src/tool/conversorExcelCsvHtml/i18n/de.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/id.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/it.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +130 -0
- package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +130 -0
- package/src/tool/conversorExcelCsvHtml/i18n/nl.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/pt.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/sv.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/tr.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +130 -0
- package/src/tool/conversorExcelCsvHtml/index.ts +15 -7
- package/src/tool/cronGenerator/i18n/de.ts +192 -0
- package/src/tool/cronGenerator/i18n/es.ts +2 -1
- package/src/tool/cronGenerator/i18n/fr.ts +2 -1
- package/src/tool/cronGenerator/i18n/id.ts +192 -0
- package/src/tool/cronGenerator/i18n/it.ts +192 -0
- package/src/tool/cronGenerator/i18n/ja.ts +192 -0
- package/src/tool/cronGenerator/i18n/ko.ts +192 -0
- package/src/tool/cronGenerator/i18n/nl.ts +192 -0
- package/src/tool/cronGenerator/i18n/pl.ts +192 -0
- package/src/tool/cronGenerator/i18n/pt.ts +192 -0
- package/src/tool/cronGenerator/i18n/ru.ts +192 -0
- package/src/tool/cronGenerator/i18n/sv.ts +192 -0
- package/src/tool/cronGenerator/i18n/tr.ts +192 -0
- package/src/tool/cronGenerator/i18n/zh.ts +192 -0
- package/src/tool/cronGenerator/index.ts +15 -7
- package/src/tool/cssSpecificityCalculator/i18n/de.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/id.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/it.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/ja.ts +169 -0
- package/src/tool/cssSpecificityCalculator/i18n/ko.ts +169 -0
- package/src/tool/cssSpecificityCalculator/i18n/nl.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/pl.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/pt.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/ru.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/sv.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/tr.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/zh.ts +169 -0
- package/src/tool/cssSpecificityCalculator/index.ts +15 -7
- package/src/tool/cssToInlineConverter/i18n/de.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/id.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/it.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/ja.ts +161 -0
- package/src/tool/cssToInlineConverter/i18n/ko.ts +161 -0
- package/src/tool/cssToInlineConverter/i18n/nl.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/pl.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/pt.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/ru.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/sv.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/tr.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/zh.ts +161 -0
- package/src/tool/cssToInlineConverter/index.ts +15 -7
- package/src/tool/duplicateCssRemover/i18n/de.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/id.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/it.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/ja.ts +168 -0
- package/src/tool/duplicateCssRemover/i18n/ko.ts +168 -0
- package/src/tool/duplicateCssRemover/i18n/nl.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/pl.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/pt.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/ru.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/sv.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/tr.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/zh.ts +168 -0
- package/src/tool/duplicateCssRemover/index.ts +15 -7
- package/src/tool/generadorSecurityTxt/i18n/de.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/id.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/it.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/ja.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/ko.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/nl.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/pl.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/pt.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/ru.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/sv.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/tr.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/zh.ts +174 -0
- package/src/tool/generadorSecurityTxt/index.ts +15 -7
- package/src/tool/hashGenerator/i18n/de.ts +119 -0
- package/src/tool/hashGenerator/i18n/id.ts +119 -0
- package/src/tool/hashGenerator/i18n/it.ts +118 -0
- package/src/tool/hashGenerator/i18n/ja.ts +119 -0
- package/src/tool/hashGenerator/i18n/ko.ts +119 -0
- package/src/tool/hashGenerator/i18n/nl.ts +119 -0
- package/src/tool/hashGenerator/i18n/pl.ts +118 -0
- package/src/tool/hashGenerator/i18n/pt.ts +118 -0
- package/src/tool/hashGenerator/i18n/ru.ts +119 -0
- package/src/tool/hashGenerator/i18n/sv.ts +119 -0
- package/src/tool/hashGenerator/i18n/tr.ts +118 -0
- package/src/tool/hashGenerator/i18n/zh.ts +119 -0
- package/src/tool/hashGenerator/index.ts +15 -7
- package/src/tool/inspectorCertificadosSsl/i18n/de.ts +214 -0
- package/src/tool/inspectorCertificadosSsl/i18n/id.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/it.ts +214 -0
- package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/nl.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/pl.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/pt.ts +214 -0
- package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/sv.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/tr.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/index.ts +24 -0
- package/src/tool/jsonFormatter/i18n/de.ts +157 -0
- package/src/tool/jsonFormatter/i18n/es.ts +2 -1
- package/src/tool/jsonFormatter/i18n/fr.ts +2 -1
- package/src/tool/jsonFormatter/i18n/id.ts +157 -0
- package/src/tool/jsonFormatter/i18n/it.ts +156 -0
- package/src/tool/jsonFormatter/i18n/ja.ts +157 -0
- package/src/tool/jsonFormatter/i18n/ko.ts +157 -0
- package/src/tool/jsonFormatter/i18n/nl.ts +157 -0
- package/src/tool/jsonFormatter/i18n/pl.ts +156 -0
- package/src/tool/jsonFormatter/i18n/pt.ts +156 -0
- package/src/tool/jsonFormatter/i18n/ru.ts +157 -0
- package/src/tool/jsonFormatter/i18n/sv.ts +157 -0
- package/src/tool/jsonFormatter/i18n/tr.ts +157 -0
- package/src/tool/jsonFormatter/i18n/zh.ts +157 -0
- package/src/tool/jsonFormatter/index.ts +15 -7
- package/src/tool/keycode/i18n/de.ts +161 -0
- package/src/tool/keycode/i18n/es.ts +2 -1
- package/src/tool/keycode/i18n/fr.ts +2 -1
- package/src/tool/keycode/i18n/id.ts +161 -0
- package/src/tool/keycode/i18n/it.ts +161 -0
- package/src/tool/keycode/i18n/ja.ts +161 -0
- package/src/tool/keycode/i18n/ko.ts +161 -0
- package/src/tool/keycode/i18n/nl.ts +161 -0
- package/src/tool/keycode/i18n/pl.ts +161 -0
- package/src/tool/keycode/i18n/pt.ts +160 -0
- package/src/tool/keycode/i18n/ru.ts +160 -0
- package/src/tool/keycode/i18n/sv.ts +160 -0
- package/src/tool/keycode/i18n/tr.ts +160 -0
- package/src/tool/keycode/i18n/zh.ts +161 -0
- package/src/tool/keycode/index.ts +15 -7
- package/src/tool/llmCostCalculator/i18n/de.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/fr.ts +2 -1
- package/src/tool/llmCostCalculator/i18n/id.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/it.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/ja.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/ko.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/nl.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/pl.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/pt.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/ru.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/sv.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/tr.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/zh.ts +166 -0
- package/src/tool/llmCostCalculator/index.ts +24 -0
- package/src/tool/mobileMockupGenerator/i18n/de.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/id.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/it.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/ja.ts +122 -0
- package/src/tool/mobileMockupGenerator/i18n/ko.ts +122 -0
- package/src/tool/mobileMockupGenerator/i18n/nl.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/pl.ts +31 -0
- package/src/tool/mobileMockupGenerator/i18n/pt.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/ru.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/sv.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/tr.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/zh.ts +122 -0
- package/src/tool/mobileMockupGenerator/index.ts +24 -0
- package/src/tool/musicalTypography/i18n/de.ts +179 -0
- package/src/tool/musicalTypography/i18n/id.ts +179 -0
- package/src/tool/musicalTypography/i18n/it.ts +179 -0
- package/src/tool/musicalTypography/i18n/ja.ts +180 -0
- package/src/tool/musicalTypography/i18n/ko.ts +180 -0
- package/src/tool/musicalTypography/i18n/nl.ts +179 -0
- package/src/tool/musicalTypography/i18n/pl.ts +179 -0
- package/src/tool/musicalTypography/i18n/pt.ts +101 -0
- package/src/tool/musicalTypography/i18n/ru.ts +47 -0
- package/src/tool/musicalTypography/i18n/sv.ts +29 -0
- package/src/tool/musicalTypography/i18n/tr.ts +29 -0
- package/src/tool/musicalTypography/i18n/zh.ts +30 -0
- package/src/tool/musicalTypography/index.ts +15 -7
- package/src/tool/placeholderGenerator/i18n/de.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/id.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/it.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/ja.ts +177 -0
- package/src/tool/placeholderGenerator/i18n/ko.ts +177 -0
- package/src/tool/placeholderGenerator/i18n/nl.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/pl.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/pt.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/ru.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/sv.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/tr.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/zh.ts +177 -0
- package/src/tool/placeholderGenerator/index.ts +24 -0
- package/src/tool/promptLibrary/i18n/de.ts +131 -0
- package/src/tool/promptLibrary/i18n/id.ts +131 -0
- package/src/tool/promptLibrary/i18n/it.ts +131 -0
- package/src/tool/promptLibrary/i18n/ja.ts +132 -0
- package/src/tool/promptLibrary/i18n/ko.ts +132 -0
- package/src/tool/promptLibrary/i18n/nl.ts +131 -0
- package/src/tool/promptLibrary/i18n/pl.ts +28 -0
- package/src/tool/promptLibrary/i18n/pt.ts +101 -0
- package/src/tool/promptLibrary/i18n/ru.ts +101 -0
- package/src/tool/promptLibrary/i18n/sv.ts +93 -0
- package/src/tool/promptLibrary/i18n/tr.ts +93 -0
- package/src/tool/promptLibrary/i18n/zh.ts +94 -0
- package/src/tool/promptLibrary/index.ts +24 -0
- package/src/tool/readabilityCalculator/i18n/de.ts +133 -0
- package/src/tool/readabilityCalculator/i18n/id.ts +133 -0
- package/src/tool/readabilityCalculator/i18n/it.ts +133 -0
- package/src/tool/readabilityCalculator/i18n/ja.ts +134 -0
- package/src/tool/readabilityCalculator/i18n/ko.ts +134 -0
- package/src/tool/readabilityCalculator/i18n/nl.ts +133 -0
- package/src/tool/readabilityCalculator/i18n/pl.ts +29 -0
- package/src/tool/readabilityCalculator/i18n/pt.ts +91 -0
- package/src/tool/readabilityCalculator/i18n/ru.ts +91 -0
- package/src/tool/readabilityCalculator/i18n/sv.ts +43 -0
- package/src/tool/readabilityCalculator/i18n/tr.ts +43 -0
- package/src/tool/readabilityCalculator/i18n/zh.ts +44 -0
- package/src/tool/readabilityCalculator/index.ts +24 -0
- package/src/tool/svgSanitizer/i18n/de.ts +125 -0
- package/src/tool/svgSanitizer/i18n/id.ts +125 -0
- package/src/tool/svgSanitizer/i18n/it.ts +125 -0
- package/src/tool/svgSanitizer/i18n/ja.ts +126 -0
- package/src/tool/svgSanitizer/i18n/ko.ts +126 -0
- package/src/tool/svgSanitizer/i18n/nl.ts +125 -0
- package/src/tool/svgSanitizer/i18n/pl.ts +125 -0
- package/src/tool/svgSanitizer/i18n/pt.ts +30 -0
- package/src/tool/svgSanitizer/i18n/ru.ts +126 -0
- package/src/tool/svgSanitizer/i18n/sv.ts +126 -0
- package/src/tool/svgSanitizer/i18n/tr.ts +126 -0
- package/src/tool/svgSanitizer/i18n/zh.ts +126 -0
- package/src/tool/svgSanitizer/index.ts +24 -0
- package/src/tool/svgToCss/i18n/de.ts +174 -0
- package/src/tool/svgToCss/i18n/id.ts +174 -0
- package/src/tool/svgToCss/i18n/it.ts +174 -0
- package/src/tool/svgToCss/i18n/ja.ts +175 -0
- package/src/tool/svgToCss/i18n/ko.ts +175 -0
- package/src/tool/svgToCss/i18n/nl.ts +174 -0
- package/src/tool/svgToCss/i18n/pl.ts +174 -0
- package/src/tool/svgToCss/i18n/pt.ts +174 -0
- package/src/tool/svgToCss/i18n/ru.ts +174 -0
- package/src/tool/svgToCss/i18n/sv.ts +174 -0
- package/src/tool/svgToCss/i18n/tr.ts +174 -0
- package/src/tool/svgToCss/i18n/zh.ts +175 -0
- package/src/tool/svgToCss/index.ts +15 -7
- package/src/tool/urlCleaner/i18n/de.ts +116 -0
- package/src/tool/urlCleaner/i18n/id.ts +116 -0
- package/src/tool/urlCleaner/i18n/it.ts +116 -0
- package/src/tool/urlCleaner/i18n/ja.ts +117 -0
- package/src/tool/urlCleaner/i18n/ko.ts +117 -0
- package/src/tool/urlCleaner/i18n/nl.ts +116 -0
- package/src/tool/urlCleaner/i18n/pl.ts +29 -0
- package/src/tool/urlCleaner/i18n/pt.ts +43 -0
- package/src/tool/urlCleaner/i18n/ru.ts +43 -0
- package/src/tool/urlCleaner/i18n/sv.ts +43 -0
- package/src/tool/urlCleaner/i18n/tr.ts +43 -0
- package/src/tool/urlCleaner/i18n/zh.ts +44 -0
- package/src/tool/urlCleaner/index.ts +24 -0
- package/src/tool/urlEncoderDecoder/i18n/de.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/id.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/it.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/ja.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/ko.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/nl.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/pl.ts +162 -0
- package/src/tool/urlEncoderDecoder/i18n/pt.ts +162 -0
- package/src/tool/urlEncoderDecoder/i18n/ru.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/sv.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/tr.ts +162 -0
- package/src/tool/urlEncoderDecoder/i18n/zh.ts +163 -0
- package/src/tool/urlEncoderDecoder/index.ts +15 -7
- package/src/tool/utmGenerator/i18n/de.ts +118 -0
- package/src/tool/utmGenerator/i18n/id.ts +118 -0
- package/src/tool/utmGenerator/i18n/it.ts +118 -0
- package/src/tool/utmGenerator/i18n/ja.ts +118 -0
- package/src/tool/utmGenerator/i18n/ko.ts +118 -0
- package/src/tool/utmGenerator/i18n/nl.ts +118 -0
- package/src/tool/utmGenerator/i18n/pl.ts +117 -0
- package/src/tool/utmGenerator/i18n/pt.ts +118 -0
- package/src/tool/utmGenerator/i18n/ru.ts +118 -0
- package/src/tool/utmGenerator/i18n/sv.ts +118 -0
- package/src/tool/utmGenerator/i18n/tr.ts +117 -0
- package/src/tool/utmGenerator/i18n/zh.ts +118 -0
- package/src/tool/utmGenerator/index.ts +15 -7
- package/src/types.ts +1 -2
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { HashGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'gerador-de-hash';
|
|
6
|
+
const title = 'Gerador Online de Hash de Segurança';
|
|
7
|
+
const description = 'Calcule hashes MD5, SHA-1, SHA-256 e SHA-512 instantaneamente. Ferramenta de segurança gratuita, privada e ultra-rápida para desenvolvedores. 100% Client-Side.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'O que é um hash e para que é usado?',
|
|
12
|
+
answer: 'Um hash é uma impressão digital única de um texto ou arquivo. É usado para verificar se os dados não foram adulterados e para armazenar senhas com segurança.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'É seguro usar este gerador online?',
|
|
16
|
+
answer: 'Sim, é completamente seguro. Ao contrário de outros sites, processamos o hash diretamente no seu navegador. Os seus dados nunca são enviados para nenhum servidor.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Qual algoritmo de hash devo escolher?',
|
|
20
|
+
answer: 'Para segurança moderna e armazenamento de chaves, recomendamos SHA-256 ou SHA-512. MD5 e SHA-1 devem ser usados apenas para compatibilidade com sistemas legados.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: "O que significa adicionar um 'Salt'?",
|
|
24
|
+
answer: 'Um Salt é uma sequência extra misturada com o seu texto para tornar o hash único e muito mais difícil de quebrar através de ataques de dicionário.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{ name: 'Insira o texto', text: 'Digite ou cole o texto que deseja transformar em hash na caixa de entrada.' },
|
|
30
|
+
{ name: 'Configure a segurança', text: 'Adicione um Salt opcional ou aumente as rodadas de processamento para maior robustez.' },
|
|
31
|
+
{ name: 'Obtenha resultados', text: 'Os diferentes hashes (MD5, SHA etc.) são calculados em tempo real enquanto digita.' },
|
|
32
|
+
{ name: 'Copie o Hash', text: 'Clique no ícone de cópia ao lado de cada algoritmo para salvá-lo na área de transferência.' },
|
|
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: HashGeneratorUI = {
|
|
65
|
+
labelInput: 'Texto de entrada',
|
|
66
|
+
placeholderInput: 'Digite ou cole o texto aqui para calcular os seus hashes...',
|
|
67
|
+
labelSalt: 'Salt (Opcional)',
|
|
68
|
+
placeholderSalt: 'Semente de segurança...',
|
|
69
|
+
labelRounds: 'Rodadas (Stretch)',
|
|
70
|
+
copyMd5: 'Copiar MD5',
|
|
71
|
+
copySha1: 'Copiar SHA-1',
|
|
72
|
+
copySha256: 'Copiar SHA-256',
|
|
73
|
+
copySha512: 'Copiar SHA-512',
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export const content: ToolLocaleContent<HashGeneratorUI> = {
|
|
77
|
+
slug,
|
|
78
|
+
title,
|
|
79
|
+
description,
|
|
80
|
+
ui,
|
|
81
|
+
faqTitle: 'Perguntas Frequentes',
|
|
82
|
+
faq: faqData,
|
|
83
|
+
bibliographyTitle: 'Recursos Técnicos sobre Hashing',
|
|
84
|
+
bibliography: [
|
|
85
|
+
{ name: 'MDN Web Docs: SubtleCrypto.digest() API', url: 'https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest' },
|
|
86
|
+
{ name: 'NIST: FIPS 180-4 Secure Hash Standard (SHA)', url: 'https://csrc.nist.gov/publications/detail/fips/180/4/final' },
|
|
87
|
+
{ name: 'IETF: The MD5 Message-Digest Algorithm (RFC 1321)', url: 'https://datatracker.ietf.org/doc/html/rfc1321' },
|
|
88
|
+
],
|
|
89
|
+
howTo: howToData,
|
|
90
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
91
|
+
seo: [
|
|
92
|
+
{ type: 'title', text: 'O que é um Hash Criptográfico?', level: 2 },
|
|
93
|
+
{
|
|
94
|
+
type: 'paragraph',
|
|
95
|
+
html: 'Um <strong>hash criptográfico</strong> é uma função matemática que transforma qualquer quantidade de dados numa sequência de comprimento fixo. A mesma entrada produz sempre a mesma saída, mas qualquer mudança mínima na entrada gera um hash completamente diferente.',
|
|
96
|
+
},
|
|
97
|
+
{ type: 'title', text: 'Algoritmos disponíveis', level: 3 },
|
|
98
|
+
{
|
|
99
|
+
type: 'list',
|
|
100
|
+
items: [
|
|
101
|
+
'<strong>MD5 (128 bits):</strong> Rápido e amplamente suportado. Considerado inseguro para senhas, mas útil para verificações de integridade de arquivos em ambientes não críticos.',
|
|
102
|
+
'<strong>SHA-1 (160 bits):</strong> Descontinuado para usos críticos de segurança desde 2017. Ainda presente em sistemas legados.',
|
|
103
|
+
'<strong>SHA-256 (256 bits):</strong> O padrão atual para a maioria das aplicações. Usado no Bitcoin, TLS e assinatura de código.',
|
|
104
|
+
'<strong>SHA-512 (512 bits):</strong> Variante mais longa do SHA-2, ideal quando é necessária resistência máxima a colisões.',
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
{ type: 'title', text: 'Salt e Key Stretching', level: 3 },
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'O <strong>Salt</strong> é uma sequência aleatória adicionada ao texto antes do hash, garantindo que duas entradas idênticas produzam hashes diferentes. O <strong>Key Stretching</strong> (rodadas) aplica a função de hash várias vezes para endurecer contra ataques de força bruta.',
|
|
111
|
+
},
|
|
112
|
+
{ type: 'title', text: 'Privacidade total: 100% Client-Side', level: 3 },
|
|
113
|
+
{
|
|
114
|
+
type: 'paragraph',
|
|
115
|
+
html: 'Esta ferramenta utiliza a <strong>Web Crypto API</strong> do navegador para SHA e uma implementação pura em TypeScript para MD5. Todo o processamento acontece localmente: os seus dados nunca saem do seu dispositivo.',
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { HashGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'hash-generator-ru';
|
|
6
|
+
const title = 'Онлайн генератор хешей безопасности';
|
|
7
|
+
const description = 'Мгновенно вычисляйте хеши MD5, SHA-1, SHA-256 и SHA-512. Бесплатный, конфиденциальный и сверхбыстрый инструмент безопасности для разработчиков. 100% на стороне клиента.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Что такое хеш и для чего он используется?',
|
|
12
|
+
answer: 'Хеш — это уникальный цифровой отпечаток текста или файла. Он используется для проверки того, что данные не были подделаны, а также для безопасного хранения паролей.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Безопасно ли использовать этот онлайн-генератор?',
|
|
16
|
+
answer: 'Да, это совершенно безопасно. В отличие от других сайтов, мы обрабатываем хеш непосредственно в вашем браузере. Ваши данные никогда не отправляются на сервер.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Какой алгоритм хеширования выбрать?',
|
|
20
|
+
answer: 'Для современной безопасности и хранения ключей мы рекомендуем SHA-256 или SHA-512. MD5 и SHA-1 следует использовать только для совместимости с устаревшими системами.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Что означает добавление «Salt» (соли)?',
|
|
24
|
+
answer: 'Salt — это дополнительная строка, смешиваемая с вашим текстом, чтобы сделать хеш уникальным и его было гораздо сложнее взломать с помощью атак по словарю.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{ name: 'Введите текст', text: 'Введите или вставьте текст, который вы хотите хешировать, в поле ввода.' },
|
|
30
|
+
{ name: 'Настройте безопасность', text: 'Добавьте необязательную соль или увеличьте количество раундов обработки для большей надежности.' },
|
|
31
|
+
{ name: 'Получите результаты', text: 'Различные хеши (MD5, SHA и т. д.) вычисляются в режиме реального времени по мере ввода.' },
|
|
32
|
+
{ name: 'Скопируйте хеш', text: 'Нажмите на значок копирования рядом с каждым алгоритмом, чтобы сохранить его в буфер обмена.' },
|
|
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: HashGeneratorUI = {
|
|
65
|
+
labelInput: 'Входной текст',
|
|
66
|
+
placeholderInput: 'Введите или вставьте текст здесь, чтобы вычислить его хеши...',
|
|
67
|
+
labelSalt: 'Соль (необязательно)',
|
|
68
|
+
placeholderSalt: 'Семя безопасности...',
|
|
69
|
+
labelRounds: 'Раунды (Stretch)',
|
|
70
|
+
copyMd5: 'Копировать MD5',
|
|
71
|
+
copySha1: 'Копировать SHA-1',
|
|
72
|
+
copySha256: 'Копировать SHA-256',
|
|
73
|
+
copySha512: 'Копировать SHA-512',
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export const content: ToolLocaleContent<HashGeneratorUI> = {
|
|
77
|
+
slug,
|
|
78
|
+
title,
|
|
79
|
+
description,
|
|
80
|
+
ui,
|
|
81
|
+
faqTitle: 'Часто задаваемые вопросы',
|
|
82
|
+
faq: faqData,
|
|
83
|
+
bibliographyTitle: 'Технические ресурсы по хешированию',
|
|
84
|
+
bibliography: [
|
|
85
|
+
{ name: 'MDN Web Docs: SubtleCrypto.digest() API', url: 'https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest' },
|
|
86
|
+
{ name: 'NIST: FIPS 180-4 Secure Hash Standard (SHA)', url: 'https://csrc.nist.gov/publications/detail/fips/180/4/final' },
|
|
87
|
+
{ name: 'IETF: The MD5 Message-Digest Algorithm (RFC 1321)', url: 'https://datatracker.ietf.org/doc/html/rfc1321' },
|
|
88
|
+
],
|
|
89
|
+
howTo: howToData,
|
|
90
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
91
|
+
seo: [
|
|
92
|
+
{ type: 'title', text: 'Что такое криптографический хеш?', level: 2 },
|
|
93
|
+
{
|
|
94
|
+
type: 'paragraph',
|
|
95
|
+
html: '<strong>Криптографический хеш</strong> — это математическая функция, которая преобразует любой объем данных в строку фиксированной длины. Одни и те же входные данные всегда дают один и тот же результат, но любое минимальное изменение во входных данных генерирует совершенно другой хеш.',
|
|
96
|
+
},
|
|
97
|
+
{ type: 'title', text: 'Доступные алгоритмы', level: 3 },
|
|
98
|
+
{
|
|
99
|
+
type: 'list',
|
|
100
|
+
items: [
|
|
101
|
+
'<strong>MD5 (128 бит):</strong> быстрый и широко поддерживаемый. Считается небезопасным для паролей, но полезен для проверки целостности файлов в некритичных средах.',
|
|
102
|
+
'<strong>SHA-1 (160 бит):</strong> не рекомендуется для критически важных целей безопасности с 2017 года. Все еще присутствует в устаревших системах.',
|
|
103
|
+
'<strong>SHA-256 (256 бит):</strong> текущий стандарт для большинства приложений. Используется в Bitcoin, TLS и подписи кода.',
|
|
104
|
+
'<strong>SHA-512 (512 бит):</strong> более длинный вариант SHA-2, идеально подходит, когда требуется максимальная стойкость к коллизиям.',
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
{ type: 'title', text: 'Соль и Key Stretching', level: 3 },
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: '<strong>Соль</strong> — это случайная строка, добавляемая к тексту перед хешированием, гарантирующая, что два идентичных входа создадут разные хеши. <strong>Key Stretching</strong> (раунды) применяет функцию хеширования несколько раз, чтобы повысить устойчивость к атакам перебором.',
|
|
111
|
+
},
|
|
112
|
+
{ type: 'title', text: 'Полная конфиденциальность: 100% на стороне клиента', level: 3 },
|
|
113
|
+
{
|
|
114
|
+
type: 'paragraph',
|
|
115
|
+
html: 'Этот инструмент использует браузерный <strong>Web Crypto API</strong> для SHA и чистую реализацию на TypeScript для MD5. Вся обработка происходит локально: ваши данные никогда не покидают ваше устройство.',
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
};
|
|
119
|
+
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { HashGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'hash-generator-sv';
|
|
6
|
+
const title = 'Online Säkerhetshashgenerator';
|
|
7
|
+
const description = 'Beräkna MD5, SHA-1, SHA-256 och SHA-512 hashar direkt. Gratis, privat och supersnabbt säkerhetsverktyg för utvecklare. 100 % Client-Side.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Vad är en hash och vad används den till?',
|
|
12
|
+
answer: 'En hash är ett unikt digitalt fingeravtryck av en text eller fil. Den används för att verifiera att data inte har manipulerats och för att lagra lösenord säkert.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Är det säkert att använda denna online-generator?',
|
|
16
|
+
answer: 'Ja, det är helt säkert. Till skillnad från andra webbplatser bearbetar vi hashen direkt i din webbläsare. Dina data skickas aldrig till någon server.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Vilken hashalgoritm ska jag välja?',
|
|
20
|
+
answer: 'För modern säkerhet och nyckellagring rekommenderar vi SHA-256 eller SHA-512. MD5 och SHA-1 bör endast användas för kompatibilitet med äldre system.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: "Vad innebär det att lägga till ett 'Salt'?",
|
|
24
|
+
answer: 'Ett Salt är en extra textsträng som blandas med din text för att göra hashen unik och mycket svårare att knäcka genom ordboksattacker.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{ name: 'Ange text', text: 'Skriv eller klistra in texten du vill hasha i inmatningsrutan.' },
|
|
30
|
+
{ name: 'Konfigurera säkerhet', text: 'Lägg till ett valfritt Salt eller öka bearbetningsrundorna för större robusthet.' },
|
|
31
|
+
{ name: 'Få resultat', text: 'De olika hasharna (MD5, SHA etc.) beräknas i realtid medan du skriver.' },
|
|
32
|
+
{ name: 'Kopiera hash', text: 'Klicka på kopieringsikonen bredvid varje algoritm för att spara den till ditt urklipp.' },
|
|
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: HashGeneratorUI = {
|
|
65
|
+
labelInput: 'Inmatningstext',
|
|
66
|
+
placeholderInput: 'Skriv eller klistra in text här för att beräkna dess hashar...',
|
|
67
|
+
labelSalt: 'Salt (valfritt)',
|
|
68
|
+
placeholderSalt: 'Säkerhets-seed...',
|
|
69
|
+
labelRounds: 'Rundor (Stretch)',
|
|
70
|
+
copyMd5: 'Kopiera MD5',
|
|
71
|
+
copySha1: 'Kopiera SHA-1',
|
|
72
|
+
copySha256: 'Kopiera SHA-256',
|
|
73
|
+
copySha512: 'Kopiera SHA-512',
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export const content: ToolLocaleContent<HashGeneratorUI> = {
|
|
77
|
+
slug,
|
|
78
|
+
title,
|
|
79
|
+
description,
|
|
80
|
+
ui,
|
|
81
|
+
faqTitle: 'Vanliga frågor',
|
|
82
|
+
faq: faqData,
|
|
83
|
+
bibliographyTitle: 'Tekniska resurser om hashing',
|
|
84
|
+
bibliography: [
|
|
85
|
+
{ name: 'MDN Web Docs: SubtleCrypto.digest() API', url: 'https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest' },
|
|
86
|
+
{ name: 'NIST: FIPS 180-4 Secure Hash Standard (SHA)', url: 'https://csrc.nist.gov/publications/detail/fips/180/4/final' },
|
|
87
|
+
{ name: 'IETF: The MD5 Message-Digest Algorithm (RFC 1321)', url: 'https://datatracker.ietf.org/doc/html/rfc1321' },
|
|
88
|
+
],
|
|
89
|
+
howTo: howToData,
|
|
90
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
91
|
+
seo: [
|
|
92
|
+
{ type: 'title', text: 'Vad är en kryptografisk hash?', level: 2 },
|
|
93
|
+
{
|
|
94
|
+
type: 'paragraph',
|
|
95
|
+
html: 'En <strong>kryptografisk hash</strong> är en matematisk funktion som omvandlar vilken mängd data som helst till en sträng med fast längd. Samma inmatning ger alltid samma utmatning, men varje minimal ändring i inmatningen genererar en helt annan hash.',
|
|
96
|
+
},
|
|
97
|
+
{ type: 'title', text: 'Tillgängliga algoritmer', level: 3 },
|
|
98
|
+
{
|
|
99
|
+
type: 'list',
|
|
100
|
+
items: [
|
|
101
|
+
'<strong>MD5 (128 bitar):</strong> Snabb och allmänt stödd. Betraktas som osäker för lösenord men användbar för filintegritetskontroller i icke-kritiska miljöer.',
|
|
102
|
+
'<strong>SHA-1 (160 bitar):</strong> Föråldrad för kritiska säkerhetsändamål sedan 2017. Finns fortfarande kvar i äldre system.',
|
|
103
|
+
'<strong>SHA-256 (256 bitar):</strong> Den nuvarande standarden för de flesta applikationer. Används i Bitcoin, TLS och kodsignering.',
|
|
104
|
+
'<strong>SHA-512 (512 bitar):</strong> Längre variant av SHA-2, idealisk när maximal kollisionsresistens krävs.',
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
{ type: 'title', text: 'Salt och Key Stretching', level: 3 },
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: '<strong>Salt</strong> är en slumpmässig sträng som läggs till texten före hashning, vilket säkerställer att två identiska inmatningar ger olika hashar. <strong>Key Stretching</strong> (rundor) tillämpar hashfunktionen flera gånger för att försvåra brute force-attacker.',
|
|
111
|
+
},
|
|
112
|
+
{ type: 'title', text: 'Total integritet: 100 % Client-Side', level: 3 },
|
|
113
|
+
{
|
|
114
|
+
type: 'paragraph',
|
|
115
|
+
html: 'Detta verktyg använder webbläsarens <strong>Web Crypto API</strong> för SHA och en ren TypeScript-implementering för MD5. All bearbetning sker lokalt: dina data lämnar aldrig din enhet.',
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
};
|
|
119
|
+
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { HashGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'hash-olusturucu';
|
|
6
|
+
const title = 'Çevrimiçi Güvenlik Hash Oluşturucu';
|
|
7
|
+
const description = 'MD5, SHA-1, SHA-256 ve SHA-512 karmalarını anında hesaplayın. Geliştiriciler için ücretsiz, özel ve ultra hızlı güvenlik aracı. %100 İstemci Tarafı (Client-Side).';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Hash nedir ve ne için kullanılır?',
|
|
12
|
+
answer: 'Hash (karma), bir metin veya dosyanın benzersiz bir dijital parmak izidir. Verilerin tahrif edilmediğini doğrulamak ve parolaları güvenli bir şekilde saklamak için kullanılır.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Bu çevrimiçi oluşturucuyu kullanmak güvenli mi?',
|
|
16
|
+
answer: 'Evet, tamamen güvenlidir. Diğer sitelerin aksine, karma işlemini doğrudan tarayıcınızda gerçekleştiriyoruz. Verileriniz asla herhangi bir sunucuya gönderilmez.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Hangi hash algoritmasını seçmeliyim?',
|
|
20
|
+
answer: 'Modern güvenlik ve anahtar depolama için SHA-256 veya SHA-512\'yi öneriyoruz. MD5 ve SHA-1 yalnızca eski sistemlerle uyumluluk için kullanılmalıdır.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: "'Tuz' (Salt) eklemek ne anlama gelir?",
|
|
24
|
+
answer: 'Salt, metninizi benzersiz kılmak ve sözlük saldırıları yoluyla kırılmasını çok daha zor hale getirmek için metninizle karıştırılan ekstra bir dizedir.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{ name: 'Metni Girin', text: 'Karma oluşturmak istediğiniz metni giriş kutusuna yazın veya yapıştırın.' },
|
|
30
|
+
{ name: 'Güvenliği Yapılandırın', text: 'İsteğe bağlı bir Salt ekleyin veya daha fazla sağlamlık için işlem turu sayısını artırın.' },
|
|
31
|
+
{ name: 'Sonuçları Alın', text: 'Siz yazarken çeşitli karmalar (MD5, SHA vb.) gerçek zamanlı olarak hesaplanır.' },
|
|
32
|
+
{ name: 'Hash\'i Kopyalayın', text: 'Panonunuza kaydetmek için her algoritmanın yanındaki kopyalama simgesine tıklayı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: 'tr',
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const ui: HashGeneratorUI = {
|
|
65
|
+
labelInput: 'Giriş metni',
|
|
66
|
+
placeholderInput: 'Karmalarını hesaplamak için buraya metin yazın veya yapıştırın...',
|
|
67
|
+
labelSalt: 'Salt (İsteğe Bağlı)',
|
|
68
|
+
placeholderSalt: 'Güvenlik tohumu...',
|
|
69
|
+
labelRounds: 'Turlar (Stretch)',
|
|
70
|
+
copyMd5: 'MD5 Kopyala',
|
|
71
|
+
copySha1: 'SHA-1 Kopyala',
|
|
72
|
+
copySha256: 'SHA-256 Kopyala',
|
|
73
|
+
copySha512: 'SHA-512 Kopyala',
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export const content: ToolLocaleContent<HashGeneratorUI> = {
|
|
77
|
+
slug,
|
|
78
|
+
title,
|
|
79
|
+
description,
|
|
80
|
+
ui,
|
|
81
|
+
faqTitle: 'Sıkça Sorulan Sorular',
|
|
82
|
+
faq: faqData,
|
|
83
|
+
bibliographyTitle: 'Hashing Üzerine Teknik Kaynaklar',
|
|
84
|
+
bibliography: [
|
|
85
|
+
{ name: 'MDN Web Docs: SubtleCrypto.digest() API', url: 'https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest' },
|
|
86
|
+
{ name: 'NIST: FIPS 180-4 Secure Hash Standard (SHA)', url: 'https://csrc.nist.gov/publications/detail/fips/180/4/final' },
|
|
87
|
+
{ name: 'IETF: The MD5 Message-Digest Algorithm (RFC 1321)', url: 'https://datatracker.ietf.org/doc/html/rfc1321' },
|
|
88
|
+
],
|
|
89
|
+
howTo: howToData,
|
|
90
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
91
|
+
seo: [
|
|
92
|
+
{ type: 'title', text: 'Kriptografik Hash Nedir?', level: 2 },
|
|
93
|
+
{
|
|
94
|
+
type: 'paragraph',
|
|
95
|
+
html: 'Bir <strong>kriptografik hash</strong>, herhangi bir miktarda veriyi sabit uzunlukta bir dizeye dönüştüren matematiksel bir fonksiyondur. Aynı giriş her zaman aynı çıkışı üretir, ancak girişteki herhangi bir minimal değişiklik tamamen farklı bir karma oluşturur.',
|
|
96
|
+
},
|
|
97
|
+
{ type: 'title', text: 'Mevcut algoritmalar', level: 3 },
|
|
98
|
+
{
|
|
99
|
+
type: 'list',
|
|
100
|
+
items: [
|
|
101
|
+
'<strong>MD5 (128 bit):</strong> Hızlı ve yaygın olarak desteklenir. Parolalar için güvensiz kabul edilir ancak kritik olmayan ortamlarda dosya bütünlüğü kontrolleri için kullanışlıdır.',
|
|
102
|
+
'<strong>SHA-1 (160 bit):</strong> 2017\'den beri kritik güvenlik kullanımları için kullanımdan kaldırılmıştır. Hala eski sistemlerde mevcuttur.',
|
|
103
|
+
'<strong>SHA-256 (256 bit):</strong> Çoğu uygulama için mevcut standarttır. Bitcoin, TLS ve kod imzalama işlemlerinde kullanılır.',
|
|
104
|
+
'<strong>SHA-512 (512 bit):</strong> SHA-2\'nin daha uzun varyantıdır, maksimum çakışma direnci gerektiğinde idealdir.',
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
{ type: 'title', text: 'Salt ve Key Stretching', level: 3 },
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: '<strong>Salt</strong> (tuz), hash işleminden önce metne eklenen rastgele bir dizedir ve aynı iki girişin farklı karmalar üretmesini sağlar. <strong>Key Stretching</strong> (turlar), kaba kuvvet (brute-force) saldırılarına karşı zorlaştırmak için karma işlevini birden çok kez uygular.',
|
|
111
|
+
},
|
|
112
|
+
{ type: 'title', text: 'Tam gizlilik: %100 İstemci Tarafı', level: 3 },
|
|
113
|
+
{
|
|
114
|
+
type: 'paragraph',
|
|
115
|
+
html: 'Bu araç, SHA için tarayıcının <strong>Web Crypto API</strong>\'sini ve MD5 için saf bir TypeScript uygulamasını kullanır. Tüm işlemler yerel olarak gerçekleşir: verileriniz asla cihazınızdan ayrılmaz.',
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { HashGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'hash-generator';
|
|
6
|
+
const title = '在线安全哈希生成器';
|
|
7
|
+
const description = '立即计算 MD5、SHA-1、SHA-256 和 SHA-512 哈希值。为开发者提供的免费、私密且极其快速的安全工具。100% 客户端处理。';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: '什么是哈希,它有什么用途?',
|
|
12
|
+
answer: '哈希是文本或文件的独特数字指纹。它用于验证数据未被篡改,并用于安全地存储密码。',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '使用这个在线生成器安全吗?',
|
|
16
|
+
answer: '是的,非常安全。与其他网站不同,我们直接在您的浏览器中处理哈希。您的数据永远不会被发送到任何服务器。',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '我应该选择哪种哈希算法?',
|
|
20
|
+
answer: '对于现代安全和密钥存储,我们推荐使用 SHA-256 或 SHA-512。MD5 和 SHA-1 仅应在为了兼容旧系统时使用。',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '添加“盐”(Salt)是什么意思?',
|
|
24
|
+
answer: '盐是混入文本中的一段额外字符串,目的是使哈希值变得独一无二,从而使通过字典攻击进行的破解变得更加困难。',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{ name: '输入文本', text: '在此输入框中输入或粘贴您想要计算哈希值的文本。' },
|
|
30
|
+
{ name: '配置安全选项', text: '您可以选择添加“盐”或增加处理轮数(拉伸),以增强安全性。' },
|
|
31
|
+
{ name: '获取结果', text: '当您输入时,各种哈希(MD5、SHA 等)会实时计算出来。' },
|
|
32
|
+
{ name: '复制哈希值', text: '点击每种算法旁边的复制图标,将其保存到剪贴板。' },
|
|
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: 'zh',
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const ui: HashGeneratorUI = {
|
|
65
|
+
labelInput: '输入文本',
|
|
66
|
+
placeholderInput: '在此输入或粘贴文本以计算其哈希值...',
|
|
67
|
+
labelSalt: '加盐 (可选)',
|
|
68
|
+
placeholderSalt: '安全种子...',
|
|
69
|
+
labelRounds: '处理轮数 (Stretch)',
|
|
70
|
+
copyMd5: '复制 MD5',
|
|
71
|
+
copySha1: '复制 SHA-1',
|
|
72
|
+
copySha256: '复制 SHA-256',
|
|
73
|
+
copySha512: '复制 SHA-512',
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export const content: ToolLocaleContent<HashGeneratorUI> = {
|
|
77
|
+
slug,
|
|
78
|
+
title,
|
|
79
|
+
description,
|
|
80
|
+
ui,
|
|
81
|
+
faqTitle: '常见问题',
|
|
82
|
+
faq: faqData,
|
|
83
|
+
bibliographyTitle: '哈希相关技术资源',
|
|
84
|
+
bibliography: [
|
|
85
|
+
{ name: 'MDN Web Docs: SubtleCrypto.digest() API', url: 'https://developer.mozilla.org/zh-CN/docs/Web/API/SubtleCrypto/digest' },
|
|
86
|
+
{ name: 'NIST: FIPS 180-4 Secure Hash Standard (SHA)', url: 'https://csrc.nist.gov/publications/detail/fips/180/4/final' },
|
|
87
|
+
{ name: 'IETF: The MD5 Message-Digest Algorithm (RFC 1321)', url: 'https://datatracker.ietf.org/doc/html/rfc1321' },
|
|
88
|
+
],
|
|
89
|
+
howTo: howToData,
|
|
90
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
91
|
+
seo: [
|
|
92
|
+
{ type: 'title', text: '什么是加密哈希?', level: 2 },
|
|
93
|
+
{
|
|
94
|
+
type: 'paragraph',
|
|
95
|
+
html: '<strong>加密哈希</strong>是一种数学函数,它将任意量的数据转换为固定长度的字符串。相同的输入总是产生相同的输出,但输入中的任何细微变化都会产生完全不同的哈希值。',
|
|
96
|
+
},
|
|
97
|
+
{ type: 'title', text: '可用算法', level: 3 },
|
|
98
|
+
{
|
|
99
|
+
type: 'list',
|
|
100
|
+
items: [
|
|
101
|
+
'<strong>MD5 (128位):</strong> 快速且支持广泛。对于密码安全来说被认为是不安全的,但在非关键环境中用于文件完整性检查很有用。',
|
|
102
|
+
'<strong>SHA-1 (160位):</strong> 自 2017 年起已不建议用于关键安全用途。仍存在于旧系统中。',
|
|
103
|
+
'<strong>SHA-256 (256位):</strong> 大多数应用程序的当前标准。用于比特币、TLS 和代码签名。',
|
|
104
|
+
'<strong>SHA-512 (512位):</strong> SHA-2 的较长变体,在需要最大抗碰撞性时是理想选择。',
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
{ type: 'title', text: '盐和密钥拉伸', level: 3 },
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: '<strong>盐(Salt)</strong>是在哈希处理前添加到文本中的随机字符串,确保两个相同的输入产生不同的哈希值。<strong>密钥拉伸</strong>(轮数)会多次应用哈希函数,以增强对暴力破解攻击的抵抗力。',
|
|
111
|
+
},
|
|
112
|
+
{ type: 'title', text: '完全隐私:100% 客户端处理', level: 3 },
|
|
113
|
+
{
|
|
114
|
+
type: 'paragraph',
|
|
115
|
+
html: '此工具使用浏览器的 <strong>Web Crypto API</strong> 进行 SHA 计算,并使用纯 TypeScript 实现 MD5。所有处理均在本地完成:您的数据永远不会离开您的设备。',
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
};
|
|
119
|
+
|
|
@@ -6,10 +6,6 @@ import type { HashGeneratorUI } from './ui';
|
|
|
6
6
|
|
|
7
7
|
export type HashGeneratorLocaleContent = ToolLocaleContent<HashGeneratorUI>;
|
|
8
8
|
|
|
9
|
-
import { content as es } from './i18n/es';
|
|
10
|
-
import { content as en } from './i18n/en';
|
|
11
|
-
import { content as fr } from './i18n/fr';
|
|
12
|
-
|
|
13
9
|
export const hashGenerator: DeveloperToolEntry<HashGeneratorUI> = {
|
|
14
10
|
id: 'hash-generator',
|
|
15
11
|
icons: {
|
|
@@ -17,9 +13,21 @@ export const hashGenerator: DeveloperToolEntry<HashGeneratorUI> = {
|
|
|
17
13
|
fg: 'mdi:pound',
|
|
18
14
|
},
|
|
19
15
|
i18n: {
|
|
20
|
-
|
|
21
|
-
en: async () => en,
|
|
22
|
-
|
|
16
|
+
de: async () => (await import('./i18n/de')).content,
|
|
17
|
+
en: async () => (await import('./i18n/en')).content,
|
|
18
|
+
es: async () => (await import('./i18n/es')).content,
|
|
19
|
+
fr: async () => (await import('./i18n/fr')).content,
|
|
20
|
+
id: async () => (await import('./i18n/id')).content,
|
|
21
|
+
it: async () => (await import('./i18n/it')).content,
|
|
22
|
+
ja: async () => (await import('./i18n/ja')).content,
|
|
23
|
+
ko: async () => (await import('./i18n/ko')).content,
|
|
24
|
+
nl: async () => (await import('./i18n/nl')).content,
|
|
25
|
+
pl: async () => (await import('./i18n/pl')).content,
|
|
26
|
+
pt: async () => (await import('./i18n/pt')).content,
|
|
27
|
+
ru: async () => (await import('./i18n/ru')).content,
|
|
28
|
+
sv: async () => (await import('./i18n/sv')).content,
|
|
29
|
+
tr: async () => (await import('./i18n/tr')).content,
|
|
30
|
+
zh: async () => (await import('./i18n/zh')).content,
|
|
23
31
|
},
|
|
24
32
|
};
|
|
25
33
|
|