@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,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宣言やメタデータ、独自のnamespaceが含まれますが、これらをすべて削除します。結果として、あらゆるモダンブラウザと互換性のあるSVGが得られます。',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'クリーニングとminify(圧縮)の違いは何ですか?',
|
|
20
|
+
answer: 'クリーニングは不要な属性やタグを削除しますが、コードを読んで編集できるようにインデント形式を保持します。minifyはさらにすべてを1行に圧縮し、ファイルサイズを最小化します。',
|
|
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の削除、width/heightの除去、minifyなど、必要に応じてオプションを有効または無効にします。' },
|
|
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: 'ja',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const ui: SvgSanitizerUI = {
|
|
69
|
+
labelInput: 'クリーニング前のSVGをここに貼り付け',
|
|
70
|
+
labelOutput: 'クリーンなSVG',
|
|
71
|
+
optRemoveIds: 'IDを削除',
|
|
72
|
+
optRemoveWH: 'width/heightを除去',
|
|
73
|
+
optMinify: 'Minify',
|
|
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 - 公式ドキュメント', url: 'https://help.figma.com/hc/en-us/articles/360040028114-Export-from-Figma' },
|
|
98
|
+
{ name: 'SVGO - SVG Optimizer (オープンソースリファレンス)', 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: '<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のnamespace:</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
|
+
|
|
@@ -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는 XML 선언, 메타데이터, 독자적인 네임스페이스가 포함된 SVG를 내보내는데, 새니타이저가 이를 모두 제거합니다. 결과물은 모든 최신 브라우저와 호환되는 SVG입니다.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '정리(Clean)와 압축(Minify)의 차이는 무엇인가요?',
|
|
20
|
+
answer: '정리는 불필요한 속성과 태그를 제거하되 들여쓰기 형식을 유지해 코드를 읽고 편집할 수 있게 합니다. 압축은 여기에 더해 모든 내용을 한 줄로 합쳐 파일 크기를 최대한 줄입니다.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'ID를 제거하면 SVG가 깨질 수 있나요?',
|
|
24
|
+
answer: '예를 들어 fill="url(#gradient)"처럼 SVG 내 요소가 다른 요소를 ID로 참조하는 경우에만 문제가 생길 수 있습니다. 그럴 때는 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 제거, width/height 제거, 압축 옵션을 켜거나 끕니다.' },
|
|
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: 'ko',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const ui: SvgSanitizerUI = {
|
|
69
|
+
labelInput: '정리할 SVG를 여기에 붙여넣으세요',
|
|
70
|
+
labelOutput: '정리된 SVG',
|
|
71
|
+
optRemoveIds: 'ID 제거',
|
|
72
|
+
optRemoveWH: 'width/height 제거',
|
|
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 - 공식 문서', url: 'https://help.figma.com/hc/en-us/articles/360040028114-Export-from-Figma' },
|
|
98
|
+
{ name: 'SVGO - SVG Optimizer (오픈소스 레퍼런스)', 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: '<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
|
+
|
|
@@ -0,0 +1,125 @@
|
|
|
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-opschoner';
|
|
6
|
+
const title = 'SVG Opschoner Online';
|
|
7
|
+
const description = 'Optimaliseer en maak SVGs schoon die geëxporteerd zijn vanuit Figma, Adobe Illustrator of Inkscape. Verwijder metadata, overbodige attributen en lege groepen voor een productieklare SVG.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Kan ik de volledige HTML van een pagina met ingesloten SVG plakken?',
|
|
12
|
+
answer: 'Ja. De opschoner detecteert het SVG-element in de HTML en extraheert alleen dat blok voor verwerking. Het werkt ook als je het SVG-fragment direct plakt.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Werkt het ook met SVGs van Illustrator?',
|
|
16
|
+
answer: 'Ja. Illustrator exporteert SVGs met XML-declaraties, metadata en eigen namespaces die de opschoner verwijdert. Het resultaat is een SVG die compatibel is met alle moderne browsers.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Wat is het verschil tussen opschonen en minificeren?',
|
|
20
|
+
answer: 'Opschonen verwijdert overbodige attributen en tags, maar behoudt het ingesprongen formaat zodat je de code kunt lezen en bewerken. Minificeren comprimeert alles ook nog eens tot één regel om de bestandsgrootte maximaal te beperken.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Kan het verwijderen van ID\'s de SVG beschadigen?',
|
|
24
|
+
answer: 'Alleen als een element in de SVG een ander element via ID aanroept, bijvoorbeeld via fill="url(#gradient)". Schakel in dat geval de optie ID\'s verwijderen uit. Die is standaard uitgeschakeld om dit probleem te voorkomen.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Wordt mijn SVG-code naar een server gestuurd?',
|
|
28
|
+
answer: 'Nee. Alle verwerking vindt plaats in je browser via de ingebouwde DOMParser- en XMLSerializer-API\'s. De code verlaat je apparaat nooit.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{ name: 'SVG plakken', text: 'Plak de SVG-code geëxporteerd vanuit Figma, Illustrator of Inkscape in het tekstveld.' },
|
|
34
|
+
{ name: 'Opties instellen', text: 'Schakel opties in of uit: ID\'s verwijderen, width/height weghalen en minificeren naar behoefte.' },
|
|
35
|
+
{ name: 'Opschonen', text: 'Klik op SVG opschonen om de code te verwerken en het geoptimaliseerde resultaat te krijgen.' },
|
|
36
|
+
{ name: 'Kopiëren of downloaden', text: 'Gebruik de knoppen Kopiëren of Downloaden om de schoongemaakte SVG klaar voor productie te bewaren.' },
|
|
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: 'nl',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const ui: SvgSanitizerUI = {
|
|
69
|
+
labelInput: 'Plak hier je onbewerkte SVG',
|
|
70
|
+
labelOutput: 'Schoongemaakte SVG',
|
|
71
|
+
optRemoveIds: 'ID\'s verwijderen',
|
|
72
|
+
optRemoveWH: 'width/height weghalen',
|
|
73
|
+
optMinify: 'Minificeren',
|
|
74
|
+
btnSanitize: 'SVG opschonen',
|
|
75
|
+
btnCopy: 'Kopiëren',
|
|
76
|
+
btnCopied: 'Gekopieerd',
|
|
77
|
+
btnDownload: 'Downloaden',
|
|
78
|
+
statOriginal: 'Origineel',
|
|
79
|
+
statCleaned: 'Schoon',
|
|
80
|
+
statReduction: 'Reductie',
|
|
81
|
+
statElems: 'Elem. verwijderd',
|
|
82
|
+
statAttrs: 'Attrs. verwijderd',
|
|
83
|
+
errorPaste: 'Plak eerst een SVG voordat je opschoont.',
|
|
84
|
+
errorProcess: 'Fout bij het verwerken van de SVG.',
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const content: ToolLocaleContent<SvgSanitizerUI> = {
|
|
88
|
+
slug,
|
|
89
|
+
title,
|
|
90
|
+
description,
|
|
91
|
+
ui,
|
|
92
|
+
faqTitle: 'Veelgestelde vragen',
|
|
93
|
+
faq: faqData,
|
|
94
|
+
bibliographyTitle: 'Referenties',
|
|
95
|
+
bibliography: [
|
|
96
|
+
{ name: 'SVG Specification - W3C', url: 'https://www.w3.org/TR/SVG2/' },
|
|
97
|
+
{ name: 'Figma SVG Export - Officiële documentatie', url: 'https://help.figma.com/hc/en-us/articles/360040028114-Export-from-Figma' },
|
|
98
|
+
{ name: 'SVGO - SVG Optimizer (open source referentie)', url: 'https://github.com/svg/svgo' },
|
|
99
|
+
],
|
|
100
|
+
howTo: howToData,
|
|
101
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
102
|
+
seo: [
|
|
103
|
+
{ type: 'title', text: 'SVG Opschoner: Code van Figma en Illustrator schoonmaken', level: 2 },
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'Plak een willekeurige SVG geëxporteerd vanuit <strong>Figma</strong>, Adobe Illustrator of de browser-inspector en ontvang een schone, geoptimaliseerde vectorafbeelding klaar voor productie.',
|
|
107
|
+
},
|
|
108
|
+
{ type: 'title', text: 'Waarom zijn geëxporteerde SVGs zo rommelig?', level: 3 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Wanneer je een SVG exporteert vanuit Figma, krijg je een bestand vol attributen die alleen binnen de applicatie zinvol zijn: <code>data-name</code>, <code>xml:space</code>, verwijzingen naar interne lagen en designmetadata. Het resultaat is een SVG die 40 tot 70% groter kan zijn dan nodig.',
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: 'Wat de opschoner verwijdert', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>Editormetadata:</strong> de tags <code>metadata</code>, <code>title</code> en <code>desc</code> die Figma en Illustrator automatisch toevoegen.',
|
|
118
|
+
'<strong>Inkscape-namespaces:</strong> alle elementen met het prefix <code>inkscape:</code> en <code>sodipodi:</code>.',
|
|
119
|
+
'<strong>Overbodige attributen:</strong> <code>xml:space</code>, <code>version</code>, overbodige <code>xmlns:*</code> en Figma-<code>data-*</code>-attributen.',
|
|
120
|
+
'<strong>Lege groepen:</strong> <code><g></code>-elementen zonder inhoud die als resten van verwijderde lagen overblijven.',
|
|
121
|
+
'<strong>XML-declaraties:</strong> de <code><?xml version="1.0"?></code>-declaratie en het DOCTYPE die niet nodig zijn bij het insluiten van SVG in HTML.',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
};
|
|
@@ -0,0 +1,125 @@
|
|
|
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 = 'oczyszczacz-svg';
|
|
6
|
+
const title = 'Oczyszczacz SVG Online';
|
|
7
|
+
const description = 'Optymalizuj i czyść pliki SVG wyeksportowane z Figmy, Adobe Illustratora lub Inkscape. Usuń metadane, zbędne atrybuty i puste grupy, aby uzyskać SVG gotowy do produkcji.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Czy mogę wkleić pełny kod HTML strony z osadzonym SVG?',
|
|
12
|
+
answer: 'Tak. Oczyszczacz wykrywa element SVG wewnątrz HTML i wyodrębnia tylko ten blok do przetworzenia. Działa również wtedy, gdy wkleisz bezpośrednio fragment SVG.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Czy narzędzie obsługuje pliki SVG z Illustratora?',
|
|
16
|
+
answer: 'Tak. Illustrator eksportuje SVG z deklaracjami XML, metadanymi i własnymi przestrzeniami nazw, które oczyszczacz usuwa. Wynikiem jest SVG zgodny ze wszystkimi nowoczesnymi przeglądarkami.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Jaka jest różnica między czyszczeniem a minifikacją?',
|
|
20
|
+
answer: 'Czyszczenie usuwa zbędne atrybuty i tagi, ale zachowuje format z wcięciami, dzięki czemu możesz czytać i edytować kod. Minifikacja dodatkowo kompresuje wszystko do jednej linii, aby maksymalnie zmniejszyć rozmiar pliku.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Czy usunięcie identyfikatorów może uszkodzić SVG?',
|
|
24
|
+
answer: 'Tylko jeśli jakiś element SVG odwołuje się do innego przez identyfikator, na przykład przez fill="url(#gradient)". W takim przypadku wyłącz opcję Usuń identyfikatory. Jest ona domyślnie wyłączona właśnie po to, aby uniknąć tego problemu.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Czy mój kod SVG jest wysyłany na serwer?',
|
|
28
|
+
answer: 'Nie. Całe przetwarzanie odbywa się w Twojej przeglądarce przy użyciu natywnych interfejsów API DOMParser i XMLSerializer. Kod nigdy nie opuszcza Twojego urządzenia.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{ name: 'Wklej SVG', text: 'Wklej kod SVG wyeksportowany z Figmy, Illustratora lub Inkscape do pola tekstowego.' },
|
|
34
|
+
{ name: 'Skonfiguruj opcje', text: 'Włącz lub wyłącz opcje: usuń identyfikatory, usuń width/height i minifikuj według swoich potrzeb.' },
|
|
35
|
+
{ name: 'Wyczyść', text: 'Kliknij Wyczyść SVG, aby przetworzyć kod i uzyskać zoptymalizowany wynik.' },
|
|
36
|
+
{ name: 'Skopiuj lub pobierz', text: 'Użyj przycisków Kopiuj lub Pobierz, aby zachować czysty SVG gotowy do produkcji.' },
|
|
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: 'pl',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const ui: SvgSanitizerUI = {
|
|
69
|
+
labelInput: 'Wklej tutaj swój brudny SVG',
|
|
70
|
+
labelOutput: 'Czysty SVG',
|
|
71
|
+
optRemoveIds: 'Usuń identyfikatory',
|
|
72
|
+
optRemoveWH: 'Usuń width/height',
|
|
73
|
+
optMinify: 'Minifikuj',
|
|
74
|
+
btnSanitize: 'Wyczyść SVG',
|
|
75
|
+
btnCopy: 'Kopiuj',
|
|
76
|
+
btnCopied: 'Skopiowano',
|
|
77
|
+
btnDownload: 'Pobierz',
|
|
78
|
+
statOriginal: 'Oryginał',
|
|
79
|
+
statCleaned: 'Czysty',
|
|
80
|
+
statReduction: 'Redukcja',
|
|
81
|
+
statElems: 'Usunięte elem.',
|
|
82
|
+
statAttrs: 'Usunięte atryb.',
|
|
83
|
+
errorPaste: 'Wklej plik SVG przed czyszczeniem.',
|
|
84
|
+
errorProcess: 'Błąd podczas przetwarzania SVG.',
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const content: ToolLocaleContent<SvgSanitizerUI> = {
|
|
88
|
+
slug,
|
|
89
|
+
title,
|
|
90
|
+
description,
|
|
91
|
+
ui,
|
|
92
|
+
faqTitle: 'Często zadawane pytania',
|
|
93
|
+
faq: faqData,
|
|
94
|
+
bibliographyTitle: 'Odniesienia',
|
|
95
|
+
bibliography: [
|
|
96
|
+
{ name: 'SVG Specification - W3C', url: 'https://www.w3.org/TR/SVG2/' },
|
|
97
|
+
{ name: 'Figma SVG Export - Oficjalna dokumentacja', 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: 'Oczyszczacz SVG: Czysty kod z Figmy i Illustratora', level: 2 },
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'Wklej dowolny SVG wyeksportowany z <strong>Figmy</strong>, Adobe Illustratora lub inspektora przeglądarki i uzyskaj czysty, zoptymalizowany plik wektorowy gotowy do produkcji.',
|
|
107
|
+
},
|
|
108
|
+
{ type: 'title', text: 'Dlaczego wyeksportowane pliki SVG są takie brudne?', level: 3 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Gdy eksportujesz SVG z Figmy, otrzymujesz plik wypełniony atrybutami, które mają sens tylko wewnątrz aplikacji: <code>data-name</code>, <code>xml:space</code>, odwołania do wewnętrznych warstw i metadane projektu. Efektem jest SVG, który może ważyć o 40–70% więcej niż powinien.',
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: 'Co usuwa oczyszczacz', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>Metadane edytora:</strong> tagi <code>metadata</code>, <code>title</code> i <code>desc</code> dodawane automatycznie przez Figmę i Illustratora.',
|
|
118
|
+
'<strong>Przestrzenie nazw Inkscape:</strong> wszystkie elementy z prefiksem <code>inkscape:</code> i <code>sodipodi:</code>.',
|
|
119
|
+
'<strong>Zbędne atrybuty:</strong> <code>xml:space</code>, <code>version</code>, nadmiarowe <code>xmlns:*</code> oraz atrybuty <code>data-*</code> z Figmy.',
|
|
120
|
+
'<strong>Puste grupy:</strong> elementy <code><g></code> bez zawartości pozostałe jako artefakty usuniętych warstw.',
|
|
121
|
+
'<strong>Deklaracje XML:</strong> deklaracja <code><?xml version="1.0"?></code> i DOCTYPE zbędne przy osadzaniu SVG w HTML.',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
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 = 'desinfetante-svg-online';
|
|
6
|
+
const title = 'Sanitizador SVG Online';
|
|
7
|
+
const description = 'Otimize e limpe SVGs exportados do Figma, Adobe Illustrator ou Inkscape. Remova metadados, atributos desnecessários e grupos vazios para obter um SVG pronto para produção.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{ question: 'Posso colar o HTML completo de uma página com um SVG incorporado?', answer: 'Sim. O sanitizador detecta o elemento SVG dentro do HTML e extrai apenas esse bloco para processamento. Funciona também se você colar o fragmento SVG diretamente.' },
|
|
11
|
+
{ question: 'Funciona com SVGs do Illustrator?', answer: 'Sim. O Illustrator exporta SVGs com declarações XML, metadados e namespaces proprietários que o sanitizador remove. O resultado é um SVG compatível com todos os navegadores modernos.' },
|
|
12
|
+
{ question: 'Qual é a diferença entre limpeza e minificação?', answer: 'A limpeza remove atributos e tags desnecessários, mas mantém o formato indentado para que você possa ler e editar o código. A minificação também collapsa tudo em uma linha para reduzir o tamanho do arquivo ao máximo.' },
|
|
13
|
+
{ question: 'Remover IDs pode quebrar o SVG?', answer: 'Apenas se um elemento no SVG faz referência a outro por ID, por exemplo através de fill="url(#gradient)". Nesse caso, desabilite a opção Remover IDs. Ela está desabilitada por padrão justamente para evitar esse problema.' },
|
|
14
|
+
{ question: 'Meu código SVG é enviado para algum servidor?', answer: 'Não. Todo processamento acontece em seu navegador usando as APIs DOMParser e XMLSerializer nativas. O código nunca deixa seu dispositivo.' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const howToData = [
|
|
18
|
+
{ name: 'Cole o SVG', text: 'Cole o código SVG exportado do Figma, Illustrator ou Inkscape na área de texto.' },
|
|
19
|
+
{ name: 'Configure opções', text: 'Ative ou desative opções: remover IDs, remover largura/altura e minificar de acordo com suas necessidades.' },
|
|
20
|
+
{ name: 'Limpe', text: 'Clique em Limpar SVG para processar o código e obter o resultado otimizado.' },
|
|
21
|
+
{ name: 'Copie ou baixe', text: 'Use os botões Copiar ou Baixar para obter o SVG limpo pronto para produção.' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
|
|
25
|
+
const howToSchema: WithContext<HowToThing> = { '@context': 'https://schema.org', '@type': 'HowTo', name: title, description, step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })) };
|
|
26
|
+
const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'UtilityApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'pt' };
|
|
27
|
+
|
|
28
|
+
const ui: SvgSanitizerUI = { labelInput: 'Cole seu SVG sujo aqui', labelOutput: 'SVG Limpo', optRemoveIds: 'Remover IDs', optRemoveWH: 'Remover largura/altura', optMinify: 'Minificar', btnSanitize: 'Limpar SVG', btnCopy: 'Copiar', btnCopied: 'Copiado', btnDownload: 'Baixar', statOriginal: 'Original', statCleaned: 'Limpo', statReduction: 'Redução', statElems: 'Elem. removidos', statAttrs: 'Attrs. removidos', errorPaste: 'Cole um SVG antes de limpar.', errorProcess: 'Erro ao processar o SVG.', };
|
|
29
|
+
|
|
30
|
+
export const content: ToolLocaleContent<SvgSanitizerUI> = { slug, title, description, ui, faqTitle: 'Perguntas Frequentes', faq: faqData, bibliographyTitle: 'Referências', bibliography: [{ name: 'SVG Specification - W3C', url: 'https://www.w3.org/TR/SVG2/' }, { name: 'Figma SVG Export - Official Documentation', url: 'https://help.figma.com/hc/en-us/articles/360040028114-Export-from-Figma' }, { name: 'SVGO - SVG Optimizer (open source reference)', url: 'https://github.com/svg/svgo' }], howTo: howToData, schemas: [faqSchema, howToSchema, appSchema], seo: [{ type: 'title', text: 'Sanitizador SVG: Limpar Código do Figma e Illustrator', level: 2 }, { type: 'paragraph', html: 'Cole qualquer SVG exportado do <strong>Figma</strong>, Adobe Illustrator ou do inspetor do navegador e obtenha um arquivo vetorial limpo e otimizado pronto para produção.' }, { type: 'title', text: 'Por que SVGs exportados são tão sujos?', level: 3 }, { type: 'paragraph', html: 'Quando você exporta um SVG do Figma, você obtém um arquivo carregado com atributos que fazem sentido apenas dentro do aplicativo: <code>data-name</code>, <code>xml:space</code>, referências a camadas internas e metadados de design. O resultado é um SVG que pode pesar 40-70% mais do que o necessário.' }, { type: 'title', text: 'O que o Sanitizador remove', level: 3 }, { type: 'list', items: ['<strong>Metadados do editor:</strong> <code>metadata</code>, tags <code>title</code> e <code>desc</code> que Figma e Illustrator adicionam automaticamente.', '<strong>Namespaces Inkscape:</strong> todos os elementos com prefixo <code>inkscape:</code> e <code>sodipodi:</code>.', '<strong>Atributos desnecessários:</strong> <code>xml:space</code>, <code>version</code>, <code>xmlns:*</code> supérfluos e atributos Figma <code>data-*</code>.', '<strong>Grupos vazios:</strong> elementos <code><g></code> sem conteúdo deixados como artefatos de camadas deletadas.', '<strong>Declarações XML:</strong> a declaração <code><?xml version="1.0"?></code> e DOCTYPE desnecessários ao incorporar SVG em HTML.'] }] };
|