@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jjlmoya/utils-developer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@iconify-json/mdi": "^1.2.3",
|
|
40
|
+
"@jjlmoya/prompagate": "^1.1.0",
|
|
40
41
|
"@jjlmoya/utils-shared": "1.2.0",
|
|
41
42
|
"@types/file-saver": "^2.0.7",
|
|
42
43
|
"astro": "^6.1.2",
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'web-entwicklung',
|
|
5
|
+
title: 'Webentwicklung',
|
|
6
|
+
description:
|
|
7
|
+
'Kostenlose Webentwicklung-Tools: Formatierer, CSS-Rechner, Generatoren und Hilfsprogramme für Frontend- und Backend-Entwickler.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: 'Entwicklertools',
|
|
12
|
+
items: [
|
|
13
|
+
'Code-Formatierer und Validatoren',
|
|
14
|
+
'CSS-Rechner und visuelle Werkzeuge',
|
|
15
|
+
'Konfigurations- und Sicherheitsgeneratoren',
|
|
16
|
+
'100% lokale und private Verarbeitung',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Essenzielle Werkzeuge für die Webentwicklung',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: 'Eine Sammlung von Tools, die den Workflow von Webentwicklern beschleunigen. Von der JSON-Validierung bis hin zu CSS-Spezifitätsrechnern ist jedes Hilfsprogramm darauf ausgelegt, reale Probleme im Entwicklungsalltag zu lösen.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: 'Privatsphäre garantiert',
|
|
31
|
+
html: 'Alle Tools verarbeiten Daten lokal in Ihrem Browser. Es werden keine Codes, Daten oder Dateien an externe Server gesendet.',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'pengembangan-web',
|
|
5
|
+
title: 'Pengembangan Web',
|
|
6
|
+
description:
|
|
7
|
+
'Alat pengembangan web gratis: pemformat, kalkulator CSS, generator, dan utilitas untuk pengembang frontend dan backend.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: 'Alat Pengembang',
|
|
12
|
+
items: [
|
|
13
|
+
'Pemformat dan validator kode',
|
|
14
|
+
'Kalkulator CSS dan alat visual',
|
|
15
|
+
'Generator konfigurasi dan keamanan',
|
|
16
|
+
'Pemrosesan 100% lokal dan pribadi',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Utilitas Esensial untuk Pengembangan Web',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: 'Koleksi alat yang dirancang untuk mempercepat alur kerja pengembang web. Dari validasi JSON hingga kalkulator spesifisitas CSS, setiap utilitas dibuat untuk menyelesaikan masalah pengembangan sehari-hari.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: 'Privasi terjamin',
|
|
31
|
+
html: 'Semua alat memproses data secara lokal di browser Anda. Tidak ada kode, data, atau file yang dikirim ke server eksternal mana pun.',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'sviluppo-web',
|
|
5
|
+
title: 'Sviluppo Web',
|
|
6
|
+
description:
|
|
7
|
+
'Strumenti gratuiti per lo sviluppo web: formattatori, calcolatori CSS, generatori e utilità per sviluppatori frontend e backend.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: 'Strumenti per Sviluppatori',
|
|
12
|
+
items: [
|
|
13
|
+
'Formattatori e validatori di codice',
|
|
14
|
+
'Calcolatori CSS e strumenti visuali',
|
|
15
|
+
'Generatori di configurazione e sicurezza',
|
|
16
|
+
'Elaborazione 100% locale e privata',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Utility Essenziali per lo Sviluppo Web',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: 'Una collezione di strumenti progettati per accelerare il flusso di lavoro degli sviluppatori web. Dalla validazione JSON ai calcolatori di specificità CSS, ogni utility è pensata per risolvere problemi reali nello sviluppo quotidiano.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: 'Privacy garantita',
|
|
31
|
+
html: 'Tutti gli strumenti elaborano i dati localmente nel tuo browser. Nessun codice, dato o file viene inviato a server esterni.',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'web-development',
|
|
5
|
+
title: 'Web開発',
|
|
6
|
+
description:
|
|
7
|
+
'フロントエンドおよびバックエンド開発者向けの無料Web開発ツール:フォーマッタ、CSS計算機、ジェネレーター、ユーティリティ。',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: '開発者ツール',
|
|
12
|
+
items: [
|
|
13
|
+
'コードフォーマッタとバリデータ',
|
|
14
|
+
'CSS計算機とビジュアルツール',
|
|
15
|
+
'設定とセキュリティのジェネレーター',
|
|
16
|
+
'100%ローカルでプライベートな処理',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Web開発に不可欠なユーティリティ',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: 'Web開発者のワークフローを加速するために設計されたツールのコレクション。JSONバリデーションからCSS特定度計算まで、各ユーティリティは日々の開発における実際の課題を解決するために作られています。',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: 'プライバシー保証',
|
|
31
|
+
html: 'すべてのツールはブラウザ内でローカルにデータを処理します。コード、データ、ファイルが外部サーバーに送信されることはありません。',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'web-development',
|
|
5
|
+
title: '웹 개발',
|
|
6
|
+
description:
|
|
7
|
+
'프론트엔드 및 백엔드 개발자를 위한 무료 웹 개발 툴: 포매터, CSS 계산기, 제너레이터 및 유틸리티.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: '개발자 도구',
|
|
12
|
+
items: [
|
|
13
|
+
'코드 포매터 및 유효성 검사기',
|
|
14
|
+
'CSS 계산기 및 시각적 도구',
|
|
15
|
+
'설정 및 보안 제너레이터',
|
|
16
|
+
'100% 로컬 및 개인 처리',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: '웹 개발을 위한 필수 유틸리티',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: '웹 개발자의 작업 흐름을 가속화하도록 설계된 도구 모음입니다. JSON 유효성 검사부터 CSS 명시도 계산기까지, 각 유틸리티는 일상적인 개발 문제를 해결하기 위해 제작되었습니다.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: '개인정보 보호 보장',
|
|
31
|
+
html: '모든 도구는 브라우저에서 로컬로 데이터를 처리합니다. 코드, 데이터 또는 파일은 외부 서버로 전송되지 않습니다.',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'web-ontwikkeling',
|
|
5
|
+
title: 'Webontwikkeling',
|
|
6
|
+
description:
|
|
7
|
+
'Gratis tools voor webontwikkeling: formatters, CSS-calculators, generators en hulpprogramma\'s voor frontend- en backend-ontwikkelaars.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: 'Developer Tools',
|
|
12
|
+
items: [
|
|
13
|
+
'Code formatters en validators',
|
|
14
|
+
'CSS calculators en visuele tools',
|
|
15
|
+
'Configuratie- en beveiligingsgenerators',
|
|
16
|
+
'100% lokale en privéverwerking',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Essentiële Hulpprogramma\'s voor Webontwikkeling',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: 'Een verzameling tools die zijn ontworpen om de workflow van webontwikkelaars te versnellen. Van JSON-validatie tot CSS-specificiteitcalculators, elk hulpprogramma is gemaakt om echte dagelijkse ontwikkelingsproblemen op te lossen.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: 'Privacy gegarandeerd',
|
|
31
|
+
html: 'Alle tools verwerken gegevens lokaal in uw browser. Er worden geen codes, gegevens of bestanden naar een externe server verzonden.',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'programowanie-webowe',
|
|
5
|
+
title: 'Programowanie Webowe',
|
|
6
|
+
description:
|
|
7
|
+
'Darmowe narzędzia dla programistów: formatery, kalkulatory CSS, generatory i użyteczne narzędzia dla deweloperów frontend i backend.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: 'Narzędzia Programistyczne',
|
|
12
|
+
items: [
|
|
13
|
+
'Formatery i walidatory kodu',
|
|
14
|
+
'Kalkulatory CSS i narzędzia wizualne',
|
|
15
|
+
'Generatory konfiguracji i bezpieczeństwa',
|
|
16
|
+
'Przetwarzanie 100% lokalne i prywatne',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Niezbędne Narzędzia do Programowania Webowego',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: 'Zestaw narzędzi zaprojektowanych w celu przyspieszenia pracy programistów webowych. Od walidacji JSON po kalkulatory specyficzności CSS, każde narzędzie zostało stworzone, aby rozwiązywać realne problemy w codziennej pracy programisty.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: 'Gwarancja prywatności',
|
|
31
|
+
html: 'Wszystkie narzędzia przetwarzają dane lokalnie w Twojej przeglądarce. Żaden kod, dane ani pliki nie są wysyłane na zewnętrzne serwery.',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'desenvolvimento-web',
|
|
5
|
+
title: 'Desenvolvimento Web',
|
|
6
|
+
description:
|
|
7
|
+
'Ferramentas gratuitas de desenvolvimento web: formatadores, calculadoras CSS, geradores e utilitários para desenvolvedores frontend e backend.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: 'Ferramentas de Desenvolvedor',
|
|
12
|
+
items: [
|
|
13
|
+
'Formatadores e validadores de código',
|
|
14
|
+
'Calculadoras CSS e ferramentas visuais',
|
|
15
|
+
'Geradores de configuração e segurança',
|
|
16
|
+
'Processamento 100% local e privado',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Utilitários Essenciais para o Desenvolvimento Web',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: 'Uma coleção de ferramentas projetadas para acelerar o fluxo de trabalho dos desenvolvedores web. Da validação de JSON às calculadoras de especificidade CSS, cada utilitário foi criado para resolver problemas reais no dia a dia do desenvolvimento.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: 'Privacidade garantida',
|
|
31
|
+
html: 'Todas as ferramentas processam dados localmente no seu navegador. Nenhum código, dado ou arquivo é enviado para qualquer servidor externo.',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'web-development',
|
|
5
|
+
title: 'Веб разработка',
|
|
6
|
+
description:
|
|
7
|
+
'Бесплатные инструменты для веб-разработки: форматировщики, калькуляторы CSS, генераторы и утилиты для фронтенд- и бэкенд-разработчиков.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: 'Инструменты разработчика',
|
|
12
|
+
items: [
|
|
13
|
+
'Форматировщики и валидаторы кода',
|
|
14
|
+
'CSS-калькуляторы и визуальные инструменты',
|
|
15
|
+
'Генераторы конфигураций и безопасности',
|
|
16
|
+
'100% локальная и приватная обработка',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Основные утилиты для веб-разработки',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: 'Коллекция инструментов, разработанных для ускорения рабочего процесса веб-разработчиков. От валидации JSON до калькуляторов специфичности CSS — каждая утилита создана для решения реальных повседневных задач разработки.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: 'Конфиденциальность гарантирована',
|
|
31
|
+
html: 'Все инструменты обрабатывают данные локально в вашем браузере. Никакой код, данные или файлы не отправляются на внешние серверы.',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'webbutveckling',
|
|
5
|
+
title: 'Webbutveckling',
|
|
6
|
+
description:
|
|
7
|
+
'Kostnadsfria verktyg för webbutveckling: formaterare, CSS-kalkylatorer, generatorer och verktyg för frontend- och backend-utvecklare.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: 'Utvecklarverktyg',
|
|
12
|
+
items: [
|
|
13
|
+
'Kodformaterare och validatorer',
|
|
14
|
+
'CSS-kalkylatorer och visuella verktyg',
|
|
15
|
+
'Konfigurations- och säkerhetsgeneratorer',
|
|
16
|
+
'100 % lokal och privat bearbetning',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Oumbärliga verktyg för webbutveckling',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: 'En samling verktyg utformade för att påskynda arbetsflödet för webbutvecklare. Från JSON-validering till CSS-specificitetskalkylatorer, varje verktyg är skapat för att lösa verkliga problem i den dagliga utvecklingen.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: 'Garanterad integritet',
|
|
31
|
+
html: 'Alla verktyg bearbetar data lokalt i din webbläsare. Ingen kod, data eller filer skickas till någon extern server.',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'web-gelistirme',
|
|
5
|
+
title: 'Web Geliştirme',
|
|
6
|
+
description:
|
|
7
|
+
'Ücretsiz web geliştirme araçları: frontend ve backend geliştiricileri için formatlayıcılar, CSS hesaplayıcılar, jeneratörler ve yardımcı programlar.',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: 'Geliştirici Araçları',
|
|
12
|
+
items: [
|
|
13
|
+
'Kod formatlayıcılar ve doğrulayıcılar',
|
|
14
|
+
'CSS hesaplayıcılar ve görsel araçlar',
|
|
15
|
+
'Yapılandırma ve güvenlik jeneratörleri',
|
|
16
|
+
'%100 yerel ve gizli işleme',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Web Geliştirme İçin Temel Yardımcı Programlar',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: 'Web geliştiricilerinin iş akışlarını hızlandırmak için tasarlanmış bir araç koleksiyonu. JSON doğrulamasından CSS özgüllük hesaplayıcılarına kadar her yardımcı program, günlük geliştirmedeki gerçek sorunları çözmek için hazırlanmıştır.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: 'Gizlilik garantili',
|
|
31
|
+
html: 'Tüm araçlar verileri tarayıcınızda yerel olarak işler. Hiçbir kod, veri veya dosya herhangi bir harici sunucuya gönderilmez.',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CategoryLocaleContent } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const content: CategoryLocaleContent = {
|
|
4
|
+
slug: 'web-development',
|
|
5
|
+
title: 'Web开发',
|
|
6
|
+
description:
|
|
7
|
+
'免费Web开发工具:面向前后端开发者的代码格式化、CSS计算器、生成器及实用工具。',
|
|
8
|
+
seo: [
|
|
9
|
+
{
|
|
10
|
+
type: 'summary',
|
|
11
|
+
title: '开发者工具',
|
|
12
|
+
items: [
|
|
13
|
+
'代码格式化与校验',
|
|
14
|
+
'CSS计算器与视觉工具',
|
|
15
|
+
'配置与安全生成器',
|
|
16
|
+
'100%本地私密处理',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'title',
|
|
21
|
+
text: 'Web开发必备工具集',
|
|
22
|
+
level: 2,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: 'paragraph',
|
|
26
|
+
html: '专为加速Web开发者工作流而设计的工具集合。从JSON校验到CSS权重计算器,每一个工具都旨在解决日常开发中的实际问题。',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: 'tip',
|
|
30
|
+
title: '隐私保障',
|
|
31
|
+
html: '所有工具均在浏览器本地处理数据。您的代码、数据或文件不会被发送到任何外部服务器。',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
package/src/category/index.ts
CHANGED
|
@@ -24,8 +24,20 @@ export const developerCategory: DeveloperCategoryEntry = {
|
|
|
24
24
|
icon: 'mdi:code-tags',
|
|
25
25
|
tools: [jsonFormatter, svgToCss, aspectRatio, placeholderGenerator, urlEncoderDecoder, duplicateCssRemover, cssToInlineConverter, cssSpecificityCalculator, cronGenerator, keycode, llmCostCalculator, musicalTypography, mobileMockupGenerator, hashGenerator, promptLibrary, colorConverter, readabilityCalculator, svgSanitizer, utmGenerator, urlCleaner],
|
|
26
26
|
i18n: {
|
|
27
|
-
|
|
27
|
+
de: () => import('./i18n/de').then((m) => m.content),
|
|
28
28
|
en: () => import('./i18n/en').then((m) => m.content),
|
|
29
|
+
es: () => import('./i18n/es').then((m) => m.content),
|
|
29
30
|
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
31
|
+
id: () => import('./i18n/id').then((m) => m.content),
|
|
32
|
+
it: () => import('./i18n/it').then((m) => m.content),
|
|
33
|
+
ja: () => import('./i18n/ja').then((m) => m.content),
|
|
34
|
+
ko: () => import('./i18n/ko').then((m) => m.content),
|
|
35
|
+
nl: () => import('./i18n/nl').then((m) => m.content),
|
|
36
|
+
pl: () => import('./i18n/pl').then((m) => m.content),
|
|
37
|
+
pt: () => import('./i18n/pt').then((m) => m.content),
|
|
38
|
+
ru: () => import('./i18n/ru').then((m) => m.content),
|
|
39
|
+
sv: () => import('./i18n/sv').then((m) => m.content),
|
|
40
|
+
tr: () => import('./i18n/tr').then((m) => m.content),
|
|
41
|
+
zh: () => import('./i18n/zh').then((m) => m.content),
|
|
30
42
|
},
|
|
31
43
|
};
|
package/src/index.ts
CHANGED
|
@@ -76,3 +76,15 @@ export { UTM_GENERATOR_TOOL } from './tool/utmGenerator/index';
|
|
|
76
76
|
|
|
77
77
|
export { UrlCleanerComponent, UrlCleanerSEO, UrlCleanerBibliography } from './tool/urlCleaner/index';
|
|
78
78
|
export { URL_CLEANER_TOOL } from './tool/urlCleaner/index';
|
|
79
|
+
|
|
80
|
+
export { GeneradorSecurityTxtComponent, GeneradorSecurityTxtSEO, GeneradorSecurityTxtBibliography } from './tool/generadorSecurityTxt/index';
|
|
81
|
+
export { GENERADOR_SECURITY_TXT_TOOL } from './tool/generadorSecurityTxt/index';
|
|
82
|
+
|
|
83
|
+
export { CalculadoraTiempoDatosComponent, CalculadoraTiempoDatosSEO, CalculadoraTiempoDatosBibliography } from './tool/calculadoraTiempoDatos/index';
|
|
84
|
+
export { CALCULADORA_TIEMPO_DATOS_TOOL } from './tool/calculadoraTiempoDatos/index';
|
|
85
|
+
|
|
86
|
+
export { InspectorCertificadosSslComponent, InspectorCertificadosSslSEO, InspectorCertificadosSslBibliography } from './tool/inspectorCertificadosSsl/index';
|
|
87
|
+
export { INSPECTOR_CERTIFICADOS_SSL_TOOL } from './tool/inspectorCertificadosSsl/index';
|
|
88
|
+
|
|
89
|
+
export { ConversorExcelCsvHtmlComponent, ConversorExcelCsvHtmlSEO, ConversorExcelCsvHtmlBibliography } from './tool/conversorExcelCsvHtml/index';
|
|
90
|
+
export { CONVERSOR_EXCEL_CSV_HTML_TOOL } from './tool/conversorExcelCsvHtml/index';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
import type * as DATA from '../data';
|
|
3
3
|
|
|
4
|
-
const TOOLS: typeof DATA.
|
|
4
|
+
const TOOLS: typeof DATA.audiovisualCategory[] = [];
|
|
5
5
|
|
|
6
6
|
describe('FAQ Content Validation', () => {
|
|
7
7
|
TOOLS.forEach((entry) => {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { ALL_TOOLS } from '../tools';
|
|
3
|
+
|
|
4
|
+
const EXPECTED_LOCALES = [
|
|
5
|
+
'de', 'en', 'es', 'fr', 'id', 'it', 'ja', 'ko', 'nl', 'pl', 'pt', 'ru', 'sv', 'tr', 'zh'
|
|
6
|
+
];
|
|
7
|
+
|
|
8
|
+
describe('I18n Coverage Validation', () => {
|
|
9
|
+
it('all tools should be registered', () => {
|
|
10
|
+
expect(ALL_TOOLS.length).toBeGreaterThan(0);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
ALL_TOOLS.forEach(({ entry }: { entry: any }) => {
|
|
14
|
+
describe(`Tool: ${entry.id}`, () => {
|
|
15
|
+
it('should have all 15 required locales', () => {
|
|
16
|
+
const registeredLocales = Object.keys(entry.i18n);
|
|
17
|
+
EXPECTED_LOCALES.forEach((locale) => {
|
|
18
|
+
expect(
|
|
19
|
+
registeredLocales,
|
|
20
|
+
`Tool "${entry.id}" is missing locale "${locale}"`,
|
|
21
|
+
).toContain(locale);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('all locale loaders should be functions', () => {
|
|
26
|
+
EXPECTED_LOCALES.forEach((locale) => {
|
|
27
|
+
const loader = entry.i18n[locale as keyof typeof entry.i18n];
|
|
28
|
+
expect(
|
|
29
|
+
typeof loader,
|
|
30
|
+
`Tool "${entry.id}" locale "${locale}" loader is not a function`,
|
|
31
|
+
).toBe('function');
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
});
|
|
@@ -35,8 +35,8 @@ describe('Locale Completeness Validation', () => {
|
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
37
|
|
|
38
|
-
it('
|
|
39
|
-
expect(ALL_TOOLS.length).
|
|
38
|
+
it('all 24 tools registered', () => {
|
|
39
|
+
expect(ALL_TOOLS.length).toBe(24);
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
42
|
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { ALL_TOOLS } from '../tools';
|
|
3
|
+
import type { ToolLocaleContent } from '../types';
|
|
4
|
+
|
|
5
|
+
const sharingLocales = ['ja', 'ko', 'zh'];
|
|
6
|
+
|
|
7
|
+
interface ValidateParams {
|
|
8
|
+
toolId: string;
|
|
9
|
+
locale: string;
|
|
10
|
+
content: ToolLocaleContent;
|
|
11
|
+
enSlug: string;
|
|
12
|
+
slugs: Map<string, string>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const validateLocaleSlug = ({
|
|
16
|
+
toolId,
|
|
17
|
+
locale,
|
|
18
|
+
content,
|
|
19
|
+
enSlug,
|
|
20
|
+
slugs,
|
|
21
|
+
}: ValidateParams) => {
|
|
22
|
+
expect(
|
|
23
|
+
content.slug,
|
|
24
|
+
`Tool "${toolId}" locale "${locale}" has an invalid slug ("${content.slug}"). Slugs must be transliterated (only a-z, 0-9, and -).`,
|
|
25
|
+
).toMatch(/^[a-z0-9-]+$/);
|
|
26
|
+
|
|
27
|
+
if (locale === 'en') {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (sharingLocales.includes(locale)) {
|
|
32
|
+
expect(
|
|
33
|
+
content.slug,
|
|
34
|
+
`Tool "${toolId}" locale "${locale}" must use the same slug as "en" ("${enSlug}").`,
|
|
35
|
+
).toBe(enSlug);
|
|
36
|
+
} else {
|
|
37
|
+
expect(
|
|
38
|
+
content.slug,
|
|
39
|
+
`Tool "${toolId}" locale "${locale}" has the same slug as "en" ("${enSlug}"). Cada slug tiene que estar en su propia idioma`,
|
|
40
|
+
).not.toBe(enSlug);
|
|
41
|
+
|
|
42
|
+
if (slugs.has(content.slug)) {
|
|
43
|
+
const previousLocale = slugs.get(content.slug);
|
|
44
|
+
expect(
|
|
45
|
+
false,
|
|
46
|
+
`Tool "${toolId}" locales "${locale}" and "${previousLocale}" share the same slug ("${content.slug}"). Cada slug tiene que estar en su propia idioma`,
|
|
47
|
+
).toBe(true);
|
|
48
|
+
}
|
|
49
|
+
slugs.set(content.slug, locale);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
describe('Slug Localization and Uniqueness Validation', () => {
|
|
54
|
+
ALL_TOOLS.forEach((tool) => {
|
|
55
|
+
describe(`Tool: ${tool.entry.id}`, () => {
|
|
56
|
+
it('every locale should have a unique, translated slug', async () => {
|
|
57
|
+
const slugs = new Map<string, string>();
|
|
58
|
+
const locales = Object.keys(tool.entry.i18n);
|
|
59
|
+
|
|
60
|
+
let enSlug = '';
|
|
61
|
+
if (locales.includes('en')) {
|
|
62
|
+
const enLoader = tool.entry.i18n['en' as keyof typeof tool.entry.i18n];
|
|
63
|
+
const enContent = (await enLoader?.()) as ToolLocaleContent;
|
|
64
|
+
enSlug = enContent.slug;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
for (const locale of locales) {
|
|
68
|
+
const loader = tool.entry.i18n[locale as keyof typeof tool.entry.i18n];
|
|
69
|
+
const content = (await loader?.()) as ToolLocaleContent;
|
|
70
|
+
validateLocaleSlug({
|
|
71
|
+
toolId: tool.entry.id,
|
|
72
|
+
locale,
|
|
73
|
+
content,
|
|
74
|
+
enSlug,
|
|
75
|
+
slugs,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|