@jjlmoya/utils-developer 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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_language_code_format.test.ts +25 -0
- package/src/tests/slug_uniqueness.test.ts +87 -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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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,126 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { SvgSanitizerUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'svg-ochishchatel';
|
|
6
|
+
const title = 'Онлайн SVG Очиститель';
|
|
7
|
+
const description = 'Оптимизируйте и очищайте SVG, экспортированные из Figma, Adobe Illustrator или Inkscape. Удаляйте метаданные, ненужные атрибуты и пустые группы, чтобы получить готовый к продакшену SVG.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Могу ли я вставить полный HTML страницы с встроенным SVG?',
|
|
12
|
+
answer: 'Да. Очиститель обнаружит SVG-элемент внутри HTML и извлечёт только этот блок для обработки. Также работает, если вставить SVG-фрагмент напрямую.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Работает ли это с SVG из Illustrator?',
|
|
16
|
+
answer: 'Да. Illustrator экспортирует SVG с XML-объявлениями, метаданными и собственными пространствами имён, которые очиститель удаляет. Результат — это SVG, совместимый со всеми современными браузерами.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Какая разница между очисткой и минификацией?',
|
|
20
|
+
answer: 'Очистка удаляет ненужные атрибуты и теги, но сохраняет отступы, чтобы вы могли читать и редактировать код. Минификация также свёртывает всё в одну строку, чтобы максимально уменьшить размер файла.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Может ли удаление ID-элементов повредить SVG?',
|
|
24
|
+
answer: 'Только если элемент в SVG ссылается на другой по ID, например через fill="url(#gradient)". В этом случае отключите опцию «Удалить ID». Она отключена по умолчанию именно чтобы избежать этой проблемы.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Передаётся ли код SVG на какой-нибудь сервер?',
|
|
28
|
+
answer: 'Нет. Вся обработка происходит в вашем браузере с помощью встроенных API DOMParser и XMLSerializer. Код никогда не покидает ваше устройство.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{ name: 'Вставьте SVG', text: 'Вставьте код SVG, экспортированный из Figma, Illustrator или Inkscape, в текстовое поле.' },
|
|
34
|
+
{ name: 'Настройте параметры', text: 'Включите или отключите опции: удалить ID, убрать ширину/высоту и минифицировать в зависимости от ваших нужд.' },
|
|
35
|
+
{ name: 'Очистите', text: 'Нажмите «Очистить SVG», чтобы обработать код и получить оптимизированный результат.' },
|
|
36
|
+
{ name: 'Скопируйте или скачайте', text: 'Используйте кнопки копирования или загрузки, чтобы получить чистый SVG, готовый для продакшена.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faqData.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'SoftwareApplication',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
applicationCategory: 'UtilityApplication',
|
|
63
|
+
operatingSystem: 'All',
|
|
64
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
65
|
+
inLanguage: 'ru',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const ui: SvgSanitizerUI = {
|
|
69
|
+
labelInput: 'Вставьте грязный SVG здесь',
|
|
70
|
+
labelOutput: 'Чистый SVG',
|
|
71
|
+
optRemoveIds: 'Удалить ID',
|
|
72
|
+
optRemoveWH: 'Убрать ширину/высоту',
|
|
73
|
+
optMinify: 'Минифицировать',
|
|
74
|
+
btnSanitize: 'Очистить SVG',
|
|
75
|
+
btnCopy: 'Копировать',
|
|
76
|
+
btnCopied: 'Скопировано',
|
|
77
|
+
btnDownload: 'Скачать',
|
|
78
|
+
statOriginal: 'Оригинал',
|
|
79
|
+
statCleaned: 'Очищено',
|
|
80
|
+
statReduction: 'Сокращение',
|
|
81
|
+
statElems: 'Элементов удалено',
|
|
82
|
+
statAttrs: 'Атрибутов удалено',
|
|
83
|
+
errorPaste: 'Вставьте SVG перед очисткой.',
|
|
84
|
+
errorProcess: 'Ошибка обработки SVG.',
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const content: ToolLocaleContent<SvgSanitizerUI> = {
|
|
88
|
+
slug,
|
|
89
|
+
title,
|
|
90
|
+
description,
|
|
91
|
+
ui,
|
|
92
|
+
faqTitle: 'Часто задаваемые вопросы',
|
|
93
|
+
faq: faqData,
|
|
94
|
+
bibliographyTitle: 'Ссылки',
|
|
95
|
+
bibliography: [
|
|
96
|
+
{ name: 'SVG Specification — W3C', url: 'https://www.w3.org/TR/SVG2/' },
|
|
97
|
+
{ name: 'Figma SVG Export — Official Documentation', url: 'https://help.figma.com/hc/en-us/articles/360040028114-Export-from-Figma' },
|
|
98
|
+
{ name: 'SVGO — SVG Optimizer (open source reference)', url: 'https://github.com/svg/svgo' },
|
|
99
|
+
],
|
|
100
|
+
howTo: howToData,
|
|
101
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
102
|
+
seo: [
|
|
103
|
+
{ type: 'title', text: 'SVG Очиститель: Чистый код из Figma и Illustrator', level: 2 },
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'Вставьте любой SVG, экспортированный из <strong>Figma</strong>, Adobe Illustrator или инспектора браузера, и получите чистый, оптимизированный векторный файл, готовый к продакшену.',
|
|
107
|
+
},
|
|
108
|
+
{ type: 'title', text: 'Почему экспортированные SVG такие грязные?', level: 3 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Когда вы экспортируете SVG из Figma, вы получаете файл, перегруженный атрибутами, которые имеют смысл только внутри приложения: <code>data-name</code>, <code>xml:space</code>, ссылки на внутренние слои и метаданные дизайна. Результат — это SVG, весящий на 40-70% больше необходимого.',
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: 'Что удаляет очиститель', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>Метаданные редактора:</strong> теги <code>metadata</code>, <code>title</code> и <code>desc</code>, которые Figma и Illustrator добавляют автоматически.',
|
|
118
|
+
'<strong>Пространства имён Inkscape:</strong> все элементы с префиксом <code>inkscape:</code> и <code>sodipodi:</code>.',
|
|
119
|
+
'<strong>Ненужные атрибуты:</strong> <code>xml:space</code>, <code>version</code>, лишние <code>xmlns:*</code> и Figma <code>data-*</code> атрибуты.',
|
|
120
|
+
'<strong>Пустые группы:</strong> элементы <code><g></code> без содержимого, оставшиеся от удалённых слоёв.',
|
|
121
|
+
'<strong>XML объявления:</strong> объявление <code><?xml version="1.0"?></code> и DOCTYPE, ненужные при встраивании SVG в HTML.',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
};
|
|
126
|
+
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { SvgSanitizerUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'svg-sanering-online';
|
|
6
|
+
const title = 'Online SVG Sanering';
|
|
7
|
+
const description = 'Optimera och rensa SVG exporterade från Figma, Adobe Illustrator eller Inkscape. Ta bort metadata, onödiga attribut och tomma grupper för att få en produktionsklar SVG.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Kan jag klistra in hela HTML på en sida med inbäddad SVG?',
|
|
12
|
+
answer: 'Ja. Saneringen identifierar SVG-elementet inuti HTML och extraherar bara det blocket för bearbetning. Det fungerar också om du klistrar in SVG-fragmentet direkt.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Fungerar det med Illustrator SVG?',
|
|
16
|
+
answer: 'Ja. Illustrator exporterar SVG med XML-deklarationer, metadata och egna namnrymder som saneringen tar bort. Resultatet är en SVG kompatibel med alla moderna webbläsare.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Vad är skillnaden mellan rensning och minifiering?',
|
|
20
|
+
answer: 'Rensning tar bort onödiga attribut och taggar men behåller det indragna formatet så du kan läsa och redigera koden. Minifiering drar också ihop allt till en enda rad för att minska filstorlek maximalt.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Kan borttagning av ID-nummer skada SVG?',
|
|
24
|
+
answer: 'Endast om ett element i SVG refererar till ett annat med ID, till exempel genom fill="url(#gradient)". I så fall inaktivera alternativet Ta bort ID. Det är inaktiverat som standard just för att undvika detta problem.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Skickas min SVG-kod till någon server?',
|
|
28
|
+
answer: 'Nej. All bearbetning sker i din webbläsare med hjälp av nativa DOMParser- och XMLSerializer-API:er. Koden lämnar aldrig din enhet.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{ name: 'Klistra in SVG', text: 'Klistra in SVG-koden exporterad från Figma, Illustrator eller Inkscape i textområdet.' },
|
|
34
|
+
{ name: 'Konfigurera alternativ', text: 'Aktivera eller inaktivera alternativ: ta bort ID, ta bort bredd/höjd och minifiera enligt dina behov.' },
|
|
35
|
+
{ name: 'Rensa', text: 'Klicka på Rensa SVG för att bearbeta koden och få det optimerade resultatet.' },
|
|
36
|
+
{ name: 'Kopiera eller ladda ned', text: 'Använd knapparna Kopiera eller Ladda ned för att få den rensade SVG klar för produktion.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faqData.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'SoftwareApplication',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
applicationCategory: 'UtilityApplication',
|
|
63
|
+
operatingSystem: 'All',
|
|
64
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
65
|
+
inLanguage: 'sv',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const ui: SvgSanitizerUI = {
|
|
69
|
+
labelInput: 'Klistra in din smutsiga SVG här',
|
|
70
|
+
labelOutput: 'Ren SVG',
|
|
71
|
+
optRemoveIds: 'Ta bort ID',
|
|
72
|
+
optRemoveWH: 'Ta bort bredd/höjd',
|
|
73
|
+
optMinify: 'Minifiera',
|
|
74
|
+
btnSanitize: 'Rensa SVG',
|
|
75
|
+
btnCopy: 'Kopiera',
|
|
76
|
+
btnCopied: 'Kopierat',
|
|
77
|
+
btnDownload: 'Ladda ned',
|
|
78
|
+
statOriginal: 'Original',
|
|
79
|
+
statCleaned: 'Ren',
|
|
80
|
+
statReduction: 'Minskning',
|
|
81
|
+
statElems: 'Element borttagna',
|
|
82
|
+
statAttrs: 'Attribut borttagna',
|
|
83
|
+
errorPaste: 'Klistra in en SVG innan rensning.',
|
|
84
|
+
errorProcess: 'Fel vid bearbetning av SVG.',
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const content: ToolLocaleContent<SvgSanitizerUI> = {
|
|
88
|
+
slug,
|
|
89
|
+
title,
|
|
90
|
+
description,
|
|
91
|
+
ui,
|
|
92
|
+
faqTitle: 'Vanliga frågor',
|
|
93
|
+
faq: faqData,
|
|
94
|
+
bibliographyTitle: 'Referenser',
|
|
95
|
+
bibliography: [
|
|
96
|
+
{ name: 'SVG Specification — W3C', url: 'https://www.w3.org/TR/SVG2/' },
|
|
97
|
+
{ name: 'Figma SVG Export — Official Documentation', url: 'https://help.figma.com/hc/en-us/articles/360040028114-Export-from-Figma' },
|
|
98
|
+
{ name: 'SVGO — SVG Optimizer (open source reference)', url: 'https://github.com/svg/svgo' },
|
|
99
|
+
],
|
|
100
|
+
howTo: howToData,
|
|
101
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
102
|
+
seo: [
|
|
103
|
+
{ type: 'title', text: 'SVG Sanering: Ren kod från Figma och Illustrator', level: 2 },
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'Klistra in vilken SVG som helst exporterad från <strong>Figma</strong>, Adobe Illustrator eller webbläsarens inspektör och få en ren, optimerad vektorfil redo för produktion.',
|
|
107
|
+
},
|
|
108
|
+
{ type: 'title', text: 'Varför är exporterade SVG så smutsiga?', level: 3 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'När du exporterar en SVG från Figma får du en fil fullproppad med attribut som bara är vettiga inuti appen: <code>data-name</code>, <code>xml:space</code>, referenser till interna lager och designmetadata. Resultatet är en SVG som väger 40-70% mer än nödvändigt.',
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: 'Vad saneringen tar bort', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>Redigerarmetadata:</strong> <code>metadata</code>, <code>title</code> och <code>desc</code> taggar som Figma och Illustrator lägger till automatiskt.',
|
|
118
|
+
'<strong>Inkscape-namnrymder:</strong> alla element med <code>inkscape:</code> och <code>sodipodi:</code> prefix.',
|
|
119
|
+
'<strong>Onödiga attribut:</strong> <code>xml:space</code>, <code>version</code>, överflödiga <code>xmlns:*</code> och Figma <code>data-*</code> attribut.',
|
|
120
|
+
'<strong>Tomma grupper:</strong> <code><g></code> element utan innehåll kvar från raderade lager.',
|
|
121
|
+
'<strong>XML deklarationer:</strong> deklarationen <code><?xml version="1.0"?></code> och DOCTYPE onödiga vid inbäddning av SVG i HTML.',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
};
|
|
126
|
+
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { SvgSanitizerUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'svg-temizleyici';
|
|
6
|
+
const title = 'Online SVG Temizleyici';
|
|
7
|
+
const description = 'Figma, Adobe Illustrator veya Inkscape\'ten dışa aktarılan SVG dosyalarını optimize edin ve temizleyin. Meta verileri, gereksiz öznitelikleri ve boş grupları kaldırarak üretim ortamına hazır bir SVG elde edin.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Gömülü SVG içeren tam bir sayfa HTML\'sini yapıştırabilirim?',
|
|
12
|
+
answer: 'Evet. Temizleyici HTML içindeki SVG öğesini tespit eder ve işlemek için yalnızca bu bloğu çıkarır. SVG parçasını doğrudan yapıştırsanız da çalışır.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Illustrator SVG\'leriyle çalışır mı?',
|
|
16
|
+
answer: 'Evet. Illustrator, SVG\'leri XML deklarasyonları, meta verileri ve temizleyicinin kaldırdığı özel ad alanlarıyla dışa aktarır. Sonuç, tüm modern tarayıcılarla uyumlu bir SVG\'dir.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Temizleme ile minifikasyon arasındaki fark nedir?',
|
|
20
|
+
answer: 'Temizleme gereksiz öznitelikleri ve etiketleri kaldırır ancak kodu okuyabilmeniz ve düzenleyebilmeniz için girintili biçimi korur. Minifikasyon ayrıca dosya boyutunu maksimuma indirmek için her şeyi tek satıra daraltır.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'ID\'lerin kaldırılması SVG\'yi kırabilir mi?',
|
|
24
|
+
answer: 'Yalnızca SVG içindeki bir öğe başka bir öğeyi ID ile referans gösterirse, örneğin fill="url(#gradient)" aracılığıyla. Bu durumda Kimlik Kaldır seçeneğini devre dışı bırakın. Tam da bu sorunu önlemek için varsayılan olarak devre dışıdır.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'SVG kodum herhangi bir sunucuya gönderilir mi?',
|
|
28
|
+
answer: 'Hayır. Tüm işlemler tarayıcınızda yerel DOMParser ve XMLSerializer API\'leri kullanılarak gerçekleşir. Kod asla cihazınızı terk etmez.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{ name: 'SVG\'yi yapıştırın', text: 'Figma, Illustrator veya Inkscape\'ten dışa aktarılan SVG kodunu metin alanına yapıştırın.' },
|
|
34
|
+
{ name: 'Seçenekleri yapılandırın', text: 'Seçenekleri etkinleştirin veya devre dışı bırakın: ID\'leri kaldırın, genişlik/yüksekliği çıkarın ve ihtiyaçlarınıza göre minifiye edin.' },
|
|
35
|
+
{ name: 'Temizleyin', text: 'Kodu işlemek ve optimize edilmiş sonucu almak için SVG\'yi Temizle\'ye tıklayın.' },
|
|
36
|
+
{ name: 'Kopyala veya indir', text: 'Üretim ortamına hazır temiz SVG\'yi almak için Kopyala veya İndir düğmelerini kullanın.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faqData.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'SoftwareApplication',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
applicationCategory: 'UtilityApplication',
|
|
63
|
+
operatingSystem: 'All',
|
|
64
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
65
|
+
inLanguage: 'tr',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const ui: SvgSanitizerUI = {
|
|
69
|
+
labelInput: 'Kirli SVG\'nizi buraya yapıştırın',
|
|
70
|
+
labelOutput: 'Temiz SVG',
|
|
71
|
+
optRemoveIds: 'ID\'leri Kaldır',
|
|
72
|
+
optRemoveWH: 'Genişlik/Yüksekliği Çıkar',
|
|
73
|
+
optMinify: 'Minifiye Et',
|
|
74
|
+
btnSanitize: 'SVG\'yi Temizle',
|
|
75
|
+
btnCopy: 'Kopyala',
|
|
76
|
+
btnCopied: 'Kopyalandı',
|
|
77
|
+
btnDownload: 'İndir',
|
|
78
|
+
statOriginal: 'Orijinal',
|
|
79
|
+
statCleaned: 'Temiz',
|
|
80
|
+
statReduction: 'İndirim',
|
|
81
|
+
statElems: 'Öğe kaldırıldı',
|
|
82
|
+
statAttrs: 'Öznitelik kaldırıldı',
|
|
83
|
+
errorPaste: 'Temizlemeden önce bir SVG yapıştırın.',
|
|
84
|
+
errorProcess: 'SVG işlenirken hata oluştu.',
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const content: ToolLocaleContent<SvgSanitizerUI> = {
|
|
88
|
+
slug,
|
|
89
|
+
title,
|
|
90
|
+
description,
|
|
91
|
+
ui,
|
|
92
|
+
faqTitle: 'Sık Sorulan Sorular',
|
|
93
|
+
faq: faqData,
|
|
94
|
+
bibliographyTitle: 'Referanslar',
|
|
95
|
+
bibliography: [
|
|
96
|
+
{ name: 'SVG Specification — W3C', url: 'https://www.w3.org/TR/SVG2/' },
|
|
97
|
+
{ name: 'Figma SVG Export — Official Documentation', url: 'https://help.figma.com/hc/en-us/articles/360040028114-Export-from-Figma' },
|
|
98
|
+
{ name: 'SVGO — SVG Optimizer (open source reference)', url: 'https://github.com/svg/svgo' },
|
|
99
|
+
],
|
|
100
|
+
howTo: howToData,
|
|
101
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
102
|
+
seo: [
|
|
103
|
+
{ type: 'title', text: 'SVG Temizleyici: Figma ve Illustrator\'dan Temiz Kod', level: 2 },
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: '<strong>Figma</strong>, Adobe Illustrator veya tarayıcı inceleme aracından dışa aktarılan herhangi bir SVG yapıştırın ve üretim ortamına hazır temiz, optimize edilmiş bir vektör dosyası elde edin.',
|
|
107
|
+
},
|
|
108
|
+
{ type: 'title', text: 'Neden dışa aktarılan SVG dosyaları bu kadar kiridir?', level: 3 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Figma\'dan bir SVG dışa aktardığınızda, yalnızca uygulama içinde anlamlı özniteliklerle dolu bir dosya alırsınız: <code>data-name</code>, <code>xml:space</code>, iç katmanlara referanslar ve tasarım meta verileri. Sonuç gerekli olandan %40-70 daha ağır bir SVG\'dir.',
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: 'Temizleyicinin kaldırdığı şeyler', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>Editör meta verileri:</strong> Figma ve Illustrator\'un otomatik olarak eklediği <code>metadata</code>, <code>title</code> ve <code>desc</code> etiketleri.',
|
|
118
|
+
'<strong>Inkscape ad alanları:</strong> <code>inkscape:</code> ve <code>sodipodi:</code> önekine sahip tüm öğeler.',
|
|
119
|
+
'<strong>Gereksiz öznitelikler:</strong> <code>xml:space</code>, <code>version</code>, fazlalık <code>xmlns:*</code> ve Figma <code>data-*</code> öznitelikleri.',
|
|
120
|
+
'<strong>Boş gruplar:</strong> silinen katmanlardan kalan içeriği olmayan <code><g></code> öğeleri.',
|
|
121
|
+
'<strong>XML deklarasyonları:</strong> SVG\'yi HTML\'ye gömerken gereksiz olan <code><?xml version="1.0"?></code> deklarasyonu ve DOCTYPE.',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
};
|
|
126
|
+
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { SvgSanitizerUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'svg-sanitizer';
|
|
6
|
+
const title = '在线SVG清理工具';
|
|
7
|
+
const description = '优化和清理从Figma、Adobe Illustrator或Inkscape导出的SVG。删除元数据、不必要的属性和空组,获得生产就绪的SVG。';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: '我可以粘贴包含嵌入SVG的完整HTML页面吗?',
|
|
12
|
+
answer: '可以。清理工具会检测HTML内的SVG元素并仅提取该块进行处理。如果直接粘贴SVG片段也可以工作。',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '它适用于Illustrator SVG吗?',
|
|
16
|
+
answer: '可以。Illustrator导出的SVG包含XML声明、元数据和清理工具会删除的专有命名空间。结果是与所有现代浏览器兼容的SVG。',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '清理和最小化有什么区别?',
|
|
20
|
+
answer: '清理删除不必要的属性和标签,但保持缩进格式以便您可以读取和编辑代码。最小化还会将所有内容折叠成一行,以最大化减少文件大小。',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '删除ID会损坏SVG吗?',
|
|
24
|
+
answer: '仅当SVG中的元素通过ID引用另一个元素时,例如通过fill="url(#gradient)"。在这种情况下,禁用"删除ID"选项。之所以默认禁用,正是为了避免这个问题。',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'SVG代码会发送到任何服务器吗?',
|
|
28
|
+
answer: '不会。所有处理都在您的浏览器中使用本地DOMParser和XMLSerializer API进行。代码永远不会离开您的设备。',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{ name: '粘贴SVG', text: '将从Figma、Illustrator或Inkscape导出的SVG代码粘贴到文本区域。' },
|
|
34
|
+
{ name: '配置选项', text: '根据需要启用或禁用选项:删除ID、移除宽度/高度和最小化。' },
|
|
35
|
+
{ name: '清理', text: '点击"清理SVG"来处理代码并获得优化的结果。' },
|
|
36
|
+
{ name: '复制或下载', text: '使用复制或下载按钮获得生产就绪的清理SVG。' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faqData.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'SoftwareApplication',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
applicationCategory: 'UtilityApplication',
|
|
63
|
+
operatingSystem: 'All',
|
|
64
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
65
|
+
inLanguage: 'zh',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const ui: SvgSanitizerUI = {
|
|
69
|
+
labelInput: '在这里粘贴您的脏SVG',
|
|
70
|
+
labelOutput: '清理的SVG',
|
|
71
|
+
optRemoveIds: '删除ID',
|
|
72
|
+
optRemoveWH: '移除宽度/高度',
|
|
73
|
+
optMinify: '最小化',
|
|
74
|
+
btnSanitize: '清理SVG',
|
|
75
|
+
btnCopy: '复制',
|
|
76
|
+
btnCopied: '已复制',
|
|
77
|
+
btnDownload: '下载',
|
|
78
|
+
statOriginal: '原始',
|
|
79
|
+
statCleaned: '已清理',
|
|
80
|
+
statReduction: '缩减',
|
|
81
|
+
statElems: '已删除元素',
|
|
82
|
+
statAttrs: '已删除属性',
|
|
83
|
+
errorPaste: '清理前粘贴SVG。',
|
|
84
|
+
errorProcess: 'SVG处理出错。',
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const content: ToolLocaleContent<SvgSanitizerUI> = {
|
|
88
|
+
slug,
|
|
89
|
+
title,
|
|
90
|
+
description,
|
|
91
|
+
ui,
|
|
92
|
+
faqTitle: '常见问题',
|
|
93
|
+
faq: faqData,
|
|
94
|
+
bibliographyTitle: '参考资料',
|
|
95
|
+
bibliography: [
|
|
96
|
+
{ name: 'SVG Specification — W3C', url: 'https://www.w3.org/TR/SVG2/' },
|
|
97
|
+
{ name: 'Figma SVG Export — Official Documentation', url: 'https://help.figma.com/hc/en-us/articles/360040028114-Export-from-Figma' },
|
|
98
|
+
{ name: 'SVGO — SVG Optimizer (open source reference)', url: 'https://github.com/svg/svgo' },
|
|
99
|
+
],
|
|
100
|
+
howTo: howToData,
|
|
101
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
102
|
+
seo: [
|
|
103
|
+
{ type: 'title', text: '来自Figma和Illustrator的干净代码SVG清理工具', level: 2 },
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: '粘贴从<strong>Figma</strong>、Adobe Illustrator或浏览器检查器导出的任何SVG,获得清洁、优化的矢量文件,准备投入生产。',
|
|
107
|
+
},
|
|
108
|
+
{ type: 'title', text: '为什么导出的SVG这么脏?', level: 3 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: '当您从Figma导出SVG时,您会获得一个充满仅在应用内有意义的属性的文件:<code>data-name</code>、<code>xml:space</code>、对内部图层的引用和设计元数据。结果是比必要的大40-70%的SVG。',
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: '清理工具删除的内容', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>编辑器元数据:</strong> Figma和Illustrator自动添加的<code>metadata</code>、<code>title</code>和<code>desc</code>标签。',
|
|
118
|
+
'<strong>Inkscape命名空间:</strong> 所有带有<code>inkscape:</code>和<code>sodipodi:</code>前缀的元素。',
|
|
119
|
+
'<strong>不必要的属性:</strong> <code>xml:space</code>、<code>version</code>、多余的<code>xmlns:*</code>和Figma <code>data-*</code>属性。',
|
|
120
|
+
'<strong>空组:</strong> 从删除的图层中遗留的无内容<code><g></code>元素。',
|
|
121
|
+
'<strong>XML声明:</strong> 在HTML中嵌入SVG时不必要的<code><?xml version="1.0"?></code>声明和DOCTYPE。',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
};
|
|
126
|
+
|
|
@@ -9,6 +9,18 @@ export type SvgSanitizerLocaleContent = ToolLocaleContent<SvgSanitizerUI>;
|
|
|
9
9
|
import { content as es } from './i18n/es';
|
|
10
10
|
import { content as en } from './i18n/en';
|
|
11
11
|
import { content as fr } from './i18n/fr';
|
|
12
|
+
import { content as de } from './i18n/de';
|
|
13
|
+
import { content as it } from './i18n/it';
|
|
14
|
+
import { content as ja } from './i18n/ja';
|
|
15
|
+
import { content as ko } from './i18n/ko';
|
|
16
|
+
import { content as nl } from './i18n/nl';
|
|
17
|
+
import { content as pl } from './i18n/pl';
|
|
18
|
+
import { content as pt } from './i18n/pt';
|
|
19
|
+
import { content as ru } from './i18n/ru';
|
|
20
|
+
import { content as sv } from './i18n/sv';
|
|
21
|
+
import { content as tr } from './i18n/tr';
|
|
22
|
+
import { content as zh } from './i18n/zh';
|
|
23
|
+
import { content as id } from './i18n/id';
|
|
12
24
|
|
|
13
25
|
export const svgSanitizer: DeveloperToolEntry<SvgSanitizerUI> = {
|
|
14
26
|
id: 'svg-sanitizer',
|
|
@@ -20,6 +32,18 @@ export const svgSanitizer: DeveloperToolEntry<SvgSanitizerUI> = {
|
|
|
20
32
|
es: async () => es,
|
|
21
33
|
en: async () => en,
|
|
22
34
|
fr: async () => fr,
|
|
35
|
+
de: async () => de,
|
|
36
|
+
it: async () => it,
|
|
37
|
+
ja: async () => ja,
|
|
38
|
+
ko: async () => ko,
|
|
39
|
+
nl: async () => nl,
|
|
40
|
+
pl: async () => pl,
|
|
41
|
+
pt: async () => pt,
|
|
42
|
+
ru: async () => ru,
|
|
43
|
+
sv: async () => sv,
|
|
44
|
+
tr: async () => tr,
|
|
45
|
+
zh: async () => zh,
|
|
46
|
+
id: async () => id,
|
|
23
47
|
},
|
|
24
48
|
};
|
|
25
49
|
|