@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,176 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { PlaceholderGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'generator-obrazu-zastepczego';
|
|
6
|
+
const title = 'Generator Obrazu Zastępczego. Szybkie Mockupy Online';
|
|
7
|
+
const description =
|
|
8
|
+
'Twórz niestandardowe obrazy zastępcze dla swoich projektów webowych. Dostosuj rozdzielczość, tło, tekst i eksportuj w formatach PNG, WebP lub JPEG natychmiast.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Co to jest obraz zastępczy?',
|
|
13
|
+
answer:
|
|
14
|
+
'Obraz zastępczy, znany również jako placeholder, to tymczasowa grafika używana w projektowaniu stron internetowych i układach, aby zarezerwować miejsce, w którym ostatecznie pojawi się definicja obrazu. Pomaga wizualizować strukturę strony przed dostępnością ostatecznej zawartości.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Czy mogę użyć dowolnej rozdzielczości w generatorze?',
|
|
18
|
+
answer:
|
|
19
|
+
'Tak, możesz wprowadzić dowolną wartość liczbową dla szerokości i wysokości. Generator utworzy kanwę z dokładnie żądanymi wymiarami, idealnymi do ścisłych siatek lub określonych banerów reklamowych.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'W jakim formacie są pobierane obrazy?',
|
|
23
|
+
answer:
|
|
24
|
+
'Domyślnie obrazy są generowane w formacie WebP dla optymalnej kompresji, ale możesz wybrać pobieranie w formacie PNG, aby zachować maksymalną jakość bez strat, lub JPEG dla tradycyjnej kompatybilności.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Czy to jest przetwarzane na jakimkolwiek serwerze?',
|
|
28
|
+
answer:
|
|
29
|
+
'Nie, całe renderowanie obrazu jest generowane natychmiast w pamięci wirtualnej (Canvas) Twojej przeglądarki. Jest to błyskawiczne i nie wymaga wysyłania danych przez sieć.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Ustaw wymiary',
|
|
36
|
+
text: 'Wprowadź wartości szerokości i wysokości bezpośrednio lub kliknij jedno z ustawień wstępnych (FHD, HD, Instagram itp.), aby je automatycznie wypełnić.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Skonfiguruj kolory i tekst',
|
|
40
|
+
text: 'Wybierz kolory tła i tekstu za pomocą selektorów natywnych lub wpisując kod szesnastkowy. Opcjonalnie dodaj niestandardowy tekst, aby zastąpić domyślną etykietę wymiaru.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Wybierz typografię i format',
|
|
44
|
+
text: 'Wybierz rodzinę czcionek i rozmiar. Wybierz format wyjściowy (WebP, PNG lub JPEG) zgodnie z Twoimi potrzebami.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Pobierz obraz',
|
|
48
|
+
text: 'Kliknij przycisk Pobierz, aby zapisać wygenerowany obraz zastępczy bezpośrednio na swoim urządzeniu.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'pl',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const ui: PlaceholderGeneratorUI = {
|
|
87
|
+
labelDimensions: 'Szybkie Wymiary',
|
|
88
|
+
labelWidth: 'Szerokość (px)',
|
|
89
|
+
labelHeight: 'Wysokość (px)',
|
|
90
|
+
labelBgColor: 'Tło',
|
|
91
|
+
labelTextColor: 'Tekst',
|
|
92
|
+
labelCustomText: 'Niestandardowy Tekst (Opcjonalnie)',
|
|
93
|
+
placeholderCustomText: 'Np.: Hero Banner',
|
|
94
|
+
labelFontFamily: 'Typografia',
|
|
95
|
+
labelFontSize: 'Rozmiar Bazowy',
|
|
96
|
+
fontSizeAuto: 'Automatycznie',
|
|
97
|
+
labelFormat: 'Format Wyjściowy',
|
|
98
|
+
btnDownload: 'Pobierz Obraz',
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export const content: ToolLocaleContent<PlaceholderGeneratorUI> = {
|
|
102
|
+
slug,
|
|
103
|
+
title,
|
|
104
|
+
description,
|
|
105
|
+
ui,
|
|
106
|
+
faqTitle: 'Często Zadawane Pytania',
|
|
107
|
+
faq: faqData,
|
|
108
|
+
bibliographyTitle: 'Referencje i Dokumentacja',
|
|
109
|
+
bibliography: [
|
|
110
|
+
{
|
|
111
|
+
name: 'MDN Web Docs: HTMLCanvasElement.toDataURL()',
|
|
112
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'MDN Web Docs: CanvasRenderingContext2D',
|
|
116
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'W3C: HTML Canvas 2D Context',
|
|
120
|
+
url: 'https://www.w3.org/TR/2dcontext/',
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
howTo: howToData,
|
|
124
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
125
|
+
seo: [
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
text: 'Ostateczne Narzędzie do Szybkich Mockupów',
|
|
129
|
+
level: 2,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Na początkowych etapach konceptualizacji lub strukturalizacji witryny (wireframing) rzadko dysponujemy ostateczną zawartością fotograficzną. Puste wymiary mogą zniekształcić globalną wizualizację produktu i ukryć krytyczne błędy w odstępach lub proporcjach. Generator obrazów zastępczych natychmiast rozwiązuje ten problem, pozwalając na wstrzykiwanie dokładnie wymiarowanych obszarów kolorowych.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Projektowanie Bez Tarcia',
|
|
138
|
+
html: 'Integracja przestrzeni o dokładnie 1200x800 pikseli jest konieczna podczas budowania CSS Grids. Pobierając bloki wypełniające, unikasz wstrzykiwania dodatkowego CSS lub skryptów trzecich stron do kodu tymczasowego.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Znaczenie Unikania Usług Zewnętrznych',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Często spotykana praktyka w ekosystemie frontendu polega na łączeniu się z usługami takimi jak <code>via.placeholder.com</code> lub podobnymi bezpośrednio w atrybutach <code>src</code> HTML. Choć teoretycznie zwinne poprzez parametry URL, ma to poważne skutki uboczne, które ostrożny programista będzie starał się unikać.',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Wstawienie domeny zdalnej w każde znaczenie obrazu na stronie deweloperskiej zwiększa żądania DNS, karze systemy hot-reload Vite, Gulp lub Webpack i przypadkowo ujawnia ślady w gałęziach, które ostatecznie trafiają do chmury. Korzystając z tego narzędzia i generując obraz w preferowanym formacie (WebP, PNG lub JPEG), centralizujesz swój prototyp całkowicie w trybie localhost.',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Kluczowe Cechy Algorytmu Generatora',
|
|
156
|
+
level: 3,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'list',
|
|
160
|
+
items: [
|
|
161
|
+
'<strong>Rozdzielczość Pixel Perfect:</strong> Natywna HTML5 Canvas zapewnia, że eksportowana kanwa odpowiada arytmetycznie współrzędnym określonym przez użytkownika.',
|
|
162
|
+
'<strong>Automatyczne Skalowanie Typograficzne:</strong> W trybie Automatycznie rozmiar czcionki oblicza obszar obwodu i liczbę znaków, aby elegancko dopasować tekst bez niepożądanych <em>przepełnień</em>.',
|
|
163
|
+
'<strong>Fuzja Szesnastkowa:</strong> Dwukierunkowa kontrola stanu między selektorami natywnego ekosystemu HTML i wpisanymi danymi wejściowymi, gwarantując precyzyjne kontrasty dyktowane przez paletę Figma lub Penpot UI/UX.',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'title',
|
|
168
|
+
text: 'Ukryta Sztuka Technicznych Wireframe\'ów',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: 'Nie ma monolitycznego projektu ani mikrofrontendu, który nie przejdzie przez etapy tworzenia fundamentu, zwłaszcza gdy mamy do czynienia z wymagającymi klientami lub Product Managerami z żelazną wizją. Ułatwienie zwinnymi iteracjami graficznymi bez noszenia obciążenia ostatecznych <em>assetów</em> oddziela szybkiego programistę od zablokowanego. Ten generator bezpośrednio wykorzystuje nowoczesny API JS <code>toDataURL()</code> na Twojej lokalnej maszynie, aby dostarczyć rezultat na poziomie branżowym bez wątpliwego pośredniego przetwarzania.',
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
};
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { PlaceholderGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'gerador-imagem-marcador';
|
|
6
|
+
const title = 'Gerador de Imagens Marcador. Mockups Web Rápidos Online';
|
|
7
|
+
const description =
|
|
8
|
+
'Crie imagens marcador personalizadas para seus designs web. Ajuste a resolução, fundo, texto e exporte em PNG, WebP ou JPEG instantaneamente.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'O que é uma imagem marcador?',
|
|
13
|
+
answer:
|
|
14
|
+
'Uma imagem marcador ou preenchimento é um gráfico temporário usado em design web e layout para reservar espaço onde uma imagem definitiva irá. Ajudam a visualizar a estrutura de uma página antes que o conteúdo final esteja disponível.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Posso usar qualquer resolução no gerador?',
|
|
18
|
+
answer:
|
|
19
|
+
'Sim, você pode inserir qualquer valor numérico para largura e altura. O gerador criará uma tela com as dimensões exatas solicitadas, perfeito para grades rígidas ou banners publicitários específicos.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Em qual formato as imagens são baixadas?',
|
|
23
|
+
answer:
|
|
24
|
+
'Por padrão, as imagens são geradas em WebP para compressão ideal, mas você pode escolher fazer download em PNG para manter qualidade máxima sem perda, ou JPEG para compatibilidade tradicional.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Isto é processado em algum servidor?',
|
|
28
|
+
answer:
|
|
29
|
+
'Não, toda a renderização de imagem é gerada instantaneamente na memória virtual (Canvas) do seu próprio navegador. É instantâneo e não requer envio de dados pela rede.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Defina dimensões',
|
|
36
|
+
text: 'Insira valores de largura e altura diretamente ou clique em um dos presets (FHD, HD, Instagram, etc.) para preenchê-los automaticamente.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Configure cores e texto',
|
|
40
|
+
text: 'Escolha cores de fundo e texto usando os seletores nativos ou digitando um código hexadecimal. Opcionalmente, adicione texto personalizado para substituir o rótulo de dimensão padrão.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Selecione tipografia e formato',
|
|
44
|
+
text: 'Escolha a família e tamanho da fonte. Selecione o formato de saída (WebP, PNG ou JPEG) de acordo com suas necessidades.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Baixe a imagem',
|
|
48
|
+
text: 'Clique no botão Download para salvar o marcador gerado diretamente em seu dispositivo.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'pt',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const ui: PlaceholderGeneratorUI = {
|
|
87
|
+
labelDimensions: 'Dimensões Rápidas',
|
|
88
|
+
labelWidth: 'Largura (px)',
|
|
89
|
+
labelHeight: 'Altura (px)',
|
|
90
|
+
labelBgColor: 'Fundo',
|
|
91
|
+
labelTextColor: 'Texto',
|
|
92
|
+
labelCustomText: 'Texto Personalizado (Opcional)',
|
|
93
|
+
placeholderCustomText: 'Ex.: Banner Hero',
|
|
94
|
+
labelFontFamily: 'Tipografia',
|
|
95
|
+
labelFontSize: 'Tamanho Base',
|
|
96
|
+
fontSizeAuto: 'Automático',
|
|
97
|
+
labelFormat: 'Formato de Saída',
|
|
98
|
+
btnDownload: 'Baixar Imagem',
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export const content: ToolLocaleContent<PlaceholderGeneratorUI> = {
|
|
102
|
+
slug,
|
|
103
|
+
title,
|
|
104
|
+
description,
|
|
105
|
+
ui,
|
|
106
|
+
faqTitle: 'Perguntas Frequentes',
|
|
107
|
+
faq: faqData,
|
|
108
|
+
bibliographyTitle: 'Referências e Documentação',
|
|
109
|
+
bibliography: [
|
|
110
|
+
{
|
|
111
|
+
name: 'MDN Web Docs: HTMLCanvasElement.toDataURL()',
|
|
112
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'MDN Web Docs: CanvasRenderingContext2D',
|
|
116
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'W3C: HTML Canvas 2D Context',
|
|
120
|
+
url: 'https://www.w3.org/TR/2dcontext/',
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
howTo: howToData,
|
|
124
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
125
|
+
seo: [
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
text: 'A Ferramenta Definitiva para Mockups Rápidos',
|
|
129
|
+
level: 2,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Nos estágios iniciais de conceptualização ou layout estrutural de um site (wireframing), raramente temos o conteúdo fotográfico final. Dimensões vazias podem distorcer a visualização global do produto e esconder erros críticos de espaçamento ou proporção. Um gerador de imagens marcador resolve isto instantaneamente, permitindo injetar áreas coloridas precisamente dimensionadas.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Design Sem Atrito',
|
|
138
|
+
html: 'Integrar um espaço de exatamente 1200x800 pixels é imperativo ao construir CSS Grids. Ao fazer download de blocos de preenchimento você evita injetar CSS extra ou scripts de terceiros em seu código temporário.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'A Importância de Evitar Serviços Externos',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Uma prática recorrente no ecossistema frontend consiste em vincular serviços como <code>via.placeholder.com</code> ou similares diretamente nos atributos <code>src</code> do HTML. Embora teoricamente ágil através de parâmetros de URL, tem efeitos profundos que um desenvolvedor meticuloso evitaria ao máximo.',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Inserir um domínio remoto em cada tag de imagem de uma página em desenvolvimento aumenta requisições DNS, penaliza sistemas hot-reloading de Vite, Gulp ou Webpack e expõe acidentalmente rastros em branches que eventualmente terminam na nuvem. Usando este utilitário e gerando a imagem em seu formato preferido (WebP, PNG ou JPEG), você centraliza completamente seu protótipo em modo localhost.',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Recursos-Chave do Algoritmo do Gerador',
|
|
156
|
+
level: 3,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'list',
|
|
160
|
+
items: [
|
|
161
|
+
'<strong>Resolução Perfeita de Pixel:</strong> Canvas HTML5 nativo garante que a tela exportada corresponda aritmeticamente às coordenadas estipuladas pelo usuário.',
|
|
162
|
+
'<strong>Autoscaling Tipográfico:</strong> Em modo Automático, o tamanho da fonte calcula a área do perímetro e número de caracteres para ajustar elegantemente o texto sem causar <em>overflows</em> indesejados.',
|
|
163
|
+
'<strong>Fusão Hexadecimal:</strong> Controle de estado bidirecional entre seletores do ecossistema HTML nativo e entradas digitadas, garantindo contrastes precisos ditados por sua paleta Figma ou Penpot UI/UX.',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'title',
|
|
168
|
+
text: 'A Arte Oculta do Wireframing Técnico',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: 'Não há projeto monolítico ou micro frontend que não passe por estágios de fundação, especialmente quando enfrentando clientes exigentes ou Product Managers com uma visão de ferro. Facilitar iterações gráficas ágeis sem arrastar a sobrecarga de <em>assets</em> finalizados separa o desenvolvedor rápido do preso. Este gerador explora diretamente a moderna API <code>toDataURL()</code> do JS em sua máquina local para entregar um resultado de nível industrial sem processamento intermediário duvidoso.',
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
};
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { PlaceholderGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'generator-izobrazhenii-zapolnitelja';
|
|
6
|
+
const title = 'Генератор плейсхолдеров. Быстрые Веб Макеты Онлайн';
|
|
7
|
+
const description =
|
|
8
|
+
'Создавайте пользовательские плейсхолдер-изображения для веб-дизайна. Настраивайте разрешение, фон, текст и экспортируйте в PNG, WebP или JPEG мгновенно.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Что такое плейсхолдер-изображение?',
|
|
13
|
+
answer:
|
|
14
|
+
'Плейсхолдер или заполняющее изображение — это временный графический элемент, используемый в веб-дизайне и макете для зарезервирования пространства, где будет размещено окончательное изображение. Они помогают визуализировать структуру страницы до появления финального контента.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Могу ли я использовать любое разрешение в генераторе?',
|
|
18
|
+
answer:
|
|
19
|
+
'Да, вы можете ввести любое числовое значение для ширины и высоты. Генератор создаст холст с точными запрошенными размерами, идеально подходящий для строгих сеток или конкретных рекламных баннеров.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'В каком формате загружаются изображения?',
|
|
23
|
+
answer:
|
|
24
|
+
'По умолчанию изображения генерируются в WebP для оптимального сжатия, но вы можете загрузить их в формате PNG для максимального качества без потерь или JPEG для традиционной совместимости.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Обрабатывается ли это на каком-либо сервере?',
|
|
28
|
+
answer:
|
|
29
|
+
'Нет, вся визуализация изображения генерируется мгновенно в виртуальной памяти (Canvas) вашего собственного браузера. Это мгновенно и не требует отправки данных по сети.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Установите размеры',
|
|
36
|
+
text: 'Введите значения ширины и высоты напрямую или нажмите на один из предустановок (FHD, HD, Instagram и т.д.) для автоматического заполнения.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Настройте цвета и текст',
|
|
40
|
+
text: 'Выберите цвета фона и текста, используя встроенные средства выбора или введя шестнадцатеричный код. Опционально добавьте пользовательский текст для замены метки размера по умолчанию.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Выберите типографику и формат',
|
|
44
|
+
text: 'Выберите семейство шрифтов и размер. Выберите формат вывода (WebP, PNG или JPEG) в соответствии с вашими потребностями.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Загрузите изображение',
|
|
48
|
+
text: 'Нажмите кнопку Загрузить, чтобы сохранить созданный плейсхолдер прямо на ваше устройство.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'ru',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const ui: PlaceholderGeneratorUI = {
|
|
87
|
+
labelDimensions: 'Быстрые Размеры',
|
|
88
|
+
labelWidth: 'Ширина (px)',
|
|
89
|
+
labelHeight: 'Высота (px)',
|
|
90
|
+
labelBgColor: 'Фон',
|
|
91
|
+
labelTextColor: 'Текст',
|
|
92
|
+
labelCustomText: 'Пользовательский Текст (Опционально)',
|
|
93
|
+
placeholderCustomText: 'Пример: Hero Banner',
|
|
94
|
+
labelFontFamily: 'Типографика',
|
|
95
|
+
labelFontSize: 'Базовый Размер',
|
|
96
|
+
fontSizeAuto: 'Автоматический',
|
|
97
|
+
labelFormat: 'Формат Вывода',
|
|
98
|
+
btnDownload: 'Загрузить Изображение',
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export const content: ToolLocaleContent<PlaceholderGeneratorUI> = {
|
|
102
|
+
slug,
|
|
103
|
+
title,
|
|
104
|
+
description,
|
|
105
|
+
ui,
|
|
106
|
+
faqTitle: 'Часто Задаваемые Вопросы',
|
|
107
|
+
faq: faqData,
|
|
108
|
+
bibliographyTitle: 'Ссылки и Документация',
|
|
109
|
+
bibliography: [
|
|
110
|
+
{
|
|
111
|
+
name: 'MDN Web Docs: HTMLCanvasElement.toDataURL()',
|
|
112
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'MDN Web Docs: CanvasRenderingContext2D',
|
|
116
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'W3C: HTML Canvas 2D Context',
|
|
120
|
+
url: 'https://www.w3.org/TR/2dcontext/',
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
howTo: howToData,
|
|
124
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
125
|
+
seo: [
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
text: 'Окончательный Инструмент для Быстрых Макетов',
|
|
129
|
+
level: 2,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'На ранних этапах концептуализации или структурного макета веб-сайта (wireframing) у нас редко есть финальный фотографический контент. Пустые размеры могут исказить глобальную визуализацию продукта и скрыть критические ошибки в пространстве или пропорциях. Генератор плейсхолдер-изображений мгновенно решает эту проблему, позволяя вам вводить цветные области с точными размерами.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Дизайн без Трения',
|
|
138
|
+
html: 'Интегрировать пространство ровно 1200x800 пиксели необходимо при создании CSS Grid. Загружая блоки заполнения, вы избегаете внедрения дополнительного CSS или скриптов третьих сторон в ваш временный код.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Важность Избежания Внешних Сервисов',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Повторяющаяся практика в экосистеме frontend состоит в связывании сервисов, таких как <code>via.placeholder.com</code> или подобных, непосредственно в атрибутах <code>src</code> HTML. Хотя теоретически гибко через параметры URL, это имеет глубокие побочные эффекты, которых тщательный разработчик избегал бы любой ценой.',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Внедрение удаленного домена в каждый тег изображения на странице разработки увеличивает DNS-запросы, штрафует hot-reloading системы Vite, Gulp или Webpack и случайно раскрывает следы в ветках, которые в конечном итоге оказываются в облаке. Используя эту утилиту и генерируя изображение в вашем предпочтительном формате (WebP, PNG или JPEG), вы полностью централизуете ваш прототип в режиме localhost.',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Ключевые Возможности Алгоритма Генератора',
|
|
156
|
+
level: 3,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'list',
|
|
160
|
+
items: [
|
|
161
|
+
'<strong>Идеальное Разрешение Пикселя:</strong> Встроенный HTML5 Canvas гарантирует, что экспортированный холст арифметически соответствует координатам, указанным пользователем.',
|
|
162
|
+
'<strong>Типографическое Автомасштабирование:</strong> В автоматическом режиме размер шрифта вычисляет область периметра и количество символов для изящного размещения текста без нежелательных <em>переполнений</em>.',
|
|
163
|
+
'<strong>Шестнадцатеричное Слияние:</strong> Двусторонний контроль состояния между встроенными селекторами экосистемы HTML и типизированными входами, гарантирующий точные контрасты, продиктованные вашей палитрой Figma или Penpot UI/UX.',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'title',
|
|
168
|
+
text: 'Скрытое Искусство Технического Wireframing',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: 'Нет ни одного монолитного проекта или микро-фронтенда, который не проходил бы основные этапы, особенно при работе с требовательными клиентами или Product Manager\'ами с железной волей. Облегчение гибких графических итераций без перетаскивания затрат на финализированные <em>assets</em> отличает быстрого разработчика от застрявшего. Этот генератор напрямую использует современный JavaScript API <code>toDataURL()</code> на вашей локальной машине для доставки результата промышленного уровня без сомнительной промежуточной обработки.',
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
};
|