@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 = 'platshallare-bildgenerator';
|
|
6
|
+
const title = 'Platshållare Bildgenerator. Snabba Webbmockups Online';
|
|
7
|
+
const description =
|
|
8
|
+
'Skapa anpassade platshållarbilder för dina webbdesigner. Justera upplösning, bakgrund, text och exportera i PNG, WebP eller JPEG direkt.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Vad är en platshållarebild?',
|
|
13
|
+
answer:
|
|
14
|
+
'En platshållarebild eller fyllnadsgrafik är ett tillfälligt grafiskt element som används i webbdesign och layout för att reservera utrymme där en slutgiltig bild ska placeras. De hjälper till att visualisera sidans struktur innan det slutliga innehållet är tillgängligt.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Kan jag använda vilken upplösning som helst i generatorn?',
|
|
18
|
+
answer:
|
|
19
|
+
'Ja, du kan ange vilket numeriskt värde som helst för bredd och höjd. Generatorn skapar en canvas med de exakta begärda dimensionerna, perfekt för strikta rutnät eller specifika reklambanderoller.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'I vilket format hämtas bilderna?',
|
|
23
|
+
answer:
|
|
24
|
+
'Som standard genereras bilder i WebP för optimal komprimering, men du kan välja att ladda ned dem i PNG-format för maximal förlustfri kvalitet eller JPEG för traditionell kompatibilitet.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Bearbetas detta på någon server?',
|
|
28
|
+
answer:
|
|
29
|
+
'Nej, all bildrendering genereras omedelbar i det virtuella minnet (Canvas) i din egen webbläsare. Det är omedelbar och kräver inte att data skickas över nätverket.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Ange dimensioner',
|
|
36
|
+
text: 'Ange bredd- och höjdvärden direkt eller klicka på en av förinställningarna (FHD, HD, Instagram, etc.) för att fylla dem in automatiskt.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Konfigurera färger och text',
|
|
40
|
+
text: 'Välj bakgrunds- och textfärger med de inbyggda väljarna eller genom att skriva en hexadecimal kod. Lägg eventuellt till anpassad text för att ersätta standarddimensionsetiketten.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Välj typografi och format',
|
|
44
|
+
text: 'Välj teckensnittsfamilj och storlek. Välj utdataformat (WebP, PNG eller JPEG) enligt dina behov.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Hämta bilden',
|
|
48
|
+
text: 'Klicka på Hämta-knappen för att spara den genererade platshållaren direkt till din enhet.',
|
|
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: 'sv',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const ui: PlaceholderGeneratorUI = {
|
|
87
|
+
labelDimensions: 'Snabba Dimensioner',
|
|
88
|
+
labelWidth: 'Bredd (px)',
|
|
89
|
+
labelHeight: 'Höjd (px)',
|
|
90
|
+
labelBgColor: 'Bakgrund',
|
|
91
|
+
labelTextColor: 'Text',
|
|
92
|
+
labelCustomText: 'Anpassad Text (Valfritt)',
|
|
93
|
+
placeholderCustomText: 'T.ex.: Hero Banner',
|
|
94
|
+
labelFontFamily: 'Typografi',
|
|
95
|
+
labelFontSize: 'Basstorlek',
|
|
96
|
+
fontSizeAuto: 'Automatisk',
|
|
97
|
+
labelFormat: 'Utdataformat',
|
|
98
|
+
btnDownload: 'Hämta Bild',
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export const content: ToolLocaleContent<PlaceholderGeneratorUI> = {
|
|
102
|
+
slug,
|
|
103
|
+
title,
|
|
104
|
+
description,
|
|
105
|
+
ui,
|
|
106
|
+
faqTitle: 'Vanliga Frågor',
|
|
107
|
+
faq: faqData,
|
|
108
|
+
bibliographyTitle: 'Referenser och Dokumentation',
|
|
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: 'Det Ultimata Verktyget för Snabba Mockups',
|
|
129
|
+
level: 2,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Under de tidiga faserna av konceptualisering eller strukturell layout av en webbplats (wireframing) har vi sällan det slutliga fotografiska innehållet. Tomma dimensioner kan förvränga den globala visualiseringen av produkten och dölja kritiska avstånd eller proportionsfel. En platshållarebildgenerator löser detta omedelbar och låter dig injicera exakt dimensionerade färgade områden.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Design utan Friktion',
|
|
138
|
+
html: 'Att integrera ett utrymme på exakt 1200x800 pixlar är absolut nödvändigt när du bygger CSS Grid. Genom att ladda ned fylningsblock undviker du att injicera extra CSS eller tredjepartsscript i din tillfälliga kod.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Vikten av att Undvika Externa Tjänster',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'En återkommande praxis i frontend-ekosystemet är att länka tjänster som <code>via.placeholder.com</code> eller liknande direkt i HTML <code>src</code>-attribut. Även om det teoretiskt är smidig via URL-parametrar, har det djupa biverkningar som en noggrann utvecklare skulle undvika för nästan all kostnad.',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Att infoga en fjärr domän i varje bildtagg på en utvecklingssida ökar DNS-förfrågningar, straffar hot-reloading system av Vite, Gulp eller Webpack och avslöjar versökt spår i grenar som slutligen hamnar i molnet. Genom att använda detta verktyg och generera bilden i ditt föredragna format (WebP, PNG eller JPEG) centraliserar du ditt prototyp helt i localhost-läge.',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Huvudfunktioner i Generatoralgoritmen',
|
|
156
|
+
level: 3,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'list',
|
|
160
|
+
items: [
|
|
161
|
+
'<strong>Pixelperfekt Upplösning:</strong> Inbyggd HTML5 Canvas säkerställer att den exporterade canvas motsvarar aritmetiskt de koordinater som användaren angett.',
|
|
162
|
+
'<strong>Typografisk Autoskalning:</strong> I automatisk läge beräknar teckensnittsstorleken omkretsområdet och antalet tecken för att elegant passa in texten utan oönskade <em>överflöden</em>.',
|
|
163
|
+
'<strong>Hexadecimal Fusion:</strong> Dubbelriktad tillståndsöverkontroll mellan inbyggda HTML-ekosystemväljare och skrivna inmatningar, vilket garanterar exakta kontraster som dikterats av din Figma eller Penpot UI/UX-palett.',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'title',
|
|
168
|
+
text: 'Den Dolda Konsten att Teknisk Wireframing',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: 'Det finns inget monolitiskt projekt eller micro frontend som inte går igenom grundläggande stadier, särskilt när du står inför krävande klienter eller Product Managers med en järnvilja. Att underlätta smidig grafiska iterationer utan att dra kostnader för färdigställda <em>assets</em> skiljer den snabba utvecklaren från den fastna. Denna generator utnyttjar direkt den moderna JavaScript <code>toDataURL()</code> API på din lokala maskin för att leverera ett resultat av industristandard utan misstänkt mellanliggande bearbetning.',
|
|
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 = 'yer-tutucu-resim-ureteci';
|
|
6
|
+
const title = 'Yer Tutucu Resim Üreteci. Hızlı Web Mockup\'ları Çevrimiçi';
|
|
7
|
+
const description =
|
|
8
|
+
'Web tasarımlarınız için özel yer tutucu resimler oluşturun. Çözünürlüğü, arka planı, metni ayarlayın ve PNG, WebP veya JPEG olarak anında dışa aktarın.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Yer tutucu resim nedir?',
|
|
13
|
+
answer:
|
|
14
|
+
'Yer tutucu veya doldurma resmi, web tasarımı ve düzende sonraki bir görüntünün yerine konacağı alanı ayırmak için kullanılan geçici bir grafik öğesidir. Son içerik hazır olmadan önce sayfanın yapısını görselleştirmeye yardımcı olur.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Üreticide herhangi bir çözünürlük kullanabilir miyim?',
|
|
18
|
+
answer:
|
|
19
|
+
'Evet, genişlik ve yükseklik için herhangi bir sayısal değer girebilirsiniz. Üreteci, sıkı ızgaralar veya belirli reklam afişleri için tam istenen boyutlarla bir kanvas oluşturur.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Resimler hangi formatta indirilir?',
|
|
23
|
+
answer:
|
|
24
|
+
'Varsayılan olarak, resimler optimal sıkıştırma için WebP olarak oluşturulur, ancak maksimum kayıpsız kaliteyi korumak için PNG biçiminde veya geleneksel uyumluluk için JPEG olarak indirebilirsiniz.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Bu herhangi bir sunucuda işlenir mi?',
|
|
28
|
+
answer:
|
|
29
|
+
'Hayır, tüm görüntü oluşturması kendi tarayıcınızın sanal belleğinde (Canvas) anında oluşturulur. Anında olur ve verilerin ağ üzerinden gönderilmesini gerektirmez.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Boyutları Ayarlayın',
|
|
36
|
+
text: 'Genişlik ve yükseklik değerlerini doğrudan girin veya ön ayarlardan birine (FHD, HD, Instagram, vb.) tıklayarak otomatik olarak doldurun.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Renkleri ve Metni Yapılandırın',
|
|
40
|
+
text: 'Yerleşik seçicileri kullanarak veya bir onaltılık kod yazarak arka plan ve metin rengini seçin. İsteğe bağlı olarak varsayılan boyut etiketini değiştirmek için özel metin ekleyin.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Tipografi ve Format Seçin',
|
|
44
|
+
text: 'Yazı tipi ailesini ve boyutunu seçin. İhtiyaçlarınız doğrultusunda çıkış biçimini (WebP, PNG veya JPEG) seçin.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Resmi İndirin',
|
|
48
|
+
text: 'Oluşturulan yer tutucu görüntüsünü doğrudan cihazınıza kaydetmek için İndir düğmesini tıklayın.',
|
|
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: 'tr',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const ui: PlaceholderGeneratorUI = {
|
|
87
|
+
labelDimensions: 'Hızlı Boyutlar',
|
|
88
|
+
labelWidth: 'Genişlik (px)',
|
|
89
|
+
labelHeight: 'Yükseklik (px)',
|
|
90
|
+
labelBgColor: 'Arka Plan',
|
|
91
|
+
labelTextColor: 'Metin',
|
|
92
|
+
labelCustomText: 'Özel Metin (İsteğe Bağlı)',
|
|
93
|
+
placeholderCustomText: 'Örn.: Hero Banner',
|
|
94
|
+
labelFontFamily: 'Tipografi',
|
|
95
|
+
labelFontSize: 'Temel Boyut',
|
|
96
|
+
fontSizeAuto: 'Otomatik',
|
|
97
|
+
labelFormat: 'Çıkış Biçimi',
|
|
98
|
+
btnDownload: 'Resmi İndir',
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export const content: ToolLocaleContent<PlaceholderGeneratorUI> = {
|
|
102
|
+
slug,
|
|
103
|
+
title,
|
|
104
|
+
description,
|
|
105
|
+
ui,
|
|
106
|
+
faqTitle: 'Sık Sorulan Sorular',
|
|
107
|
+
faq: faqData,
|
|
108
|
+
bibliographyTitle: 'Referanslar ve Belgeler',
|
|
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: 'Hızlı Mockup\'lar İçin Nihai Araç',
|
|
129
|
+
level: 2,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Bir web sitesinin konseptualizasyon veya yapısal düzeni (wireframing) aşamalarının başlarında, genellikle nihai fotoğrafik içeriğe sahip değiliz. Boş boyutlar ürünün genel görselleştirilmesini çarpıtabilir ve kritik aralık veya oran hatalarını gizleyebilir. Yer tutucu resim üreteci bunu anında çözer ve tam boyutlandırılmış renkli alanları enjekte etmenize izin verir.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Sürtünmesiz Tasarım',
|
|
138
|
+
html: 'CSS Izgarası oluştururken tam olarak 1200x800 pikseli bir boşluk entegre etmek zorunludur. Doldurma blokları indirerek, geçici kodunuza ek CSS veya üçüncü taraf komut dosyaları enjekte etmekten kaçınırsınız.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Harici Hizmetlerden Kaçınmanın Önemi',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Frontend ekosistemindeki tekrarlayan bir uygulama, <code>via.placeholder.com</code> gibi hizmetleri doğrudan HTML <code>src</code> özniteliklerine bağlantılandırmaktan oluşur. URL parametreleri aracılığıyla teorik olarak çevik olsa da, dikkatli bir geliştirici her türlü maliyeti ödemek isteyecek derin yan etkilere sahiptir.',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Bir geliştirme sayfasının her resim etiketine uzak bir etki alanı eklemek DNS isteklerini artırır, Vite, Gulp veya Webpack\'in hot-reloading sistemlerini cezalandırır ve sonunda buluta gelen dallarda kazaları açığa çıkarır. Bu yardımcı programı kullanarak ve resmi tercih ettiğiniz biçimde (WebP, PNG veya JPEG) oluşturarak, prototipinizi tamamen localhost modunda merkezileştirirsiniz.',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Üretici Algoritmasının Temel Özellikleri',
|
|
156
|
+
level: 3,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'list',
|
|
160
|
+
items: [
|
|
161
|
+
'<strong>Piksel Mükemmel Çözünürlük:</strong> Yerleşik HTML5 Canvas, dışa aktarılan kanvasın kullanıcı tarafından belirtilen koordinatlara aritmetik olarak karşılık geldiğini sağlar.',
|
|
162
|
+
'<strong>Tipografik Otomatik Ölçeklendirme:</strong> Otomatik modda, yazı tipi boyutu çevre alanını ve karakter sayısını hesaplayarak metni istenmeyen <em>taşmaları</em> olmadan zarif bir şekilde uyacak şekilde boyutlandırır.',
|
|
163
|
+
'<strong>Onaltılık Füzyon:</strong> Yerleşik HTML ekosistem seçicileri ile yazılan girdiler arasında çift yönlü durum kontrolü, Figma veya Penpot UI/UX paletin tarafından dikte edilen kesin kontrastları garanti eder.',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'title',
|
|
168
|
+
text: 'Teknik Wireframing\'in Gizli Sanatı',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: 'Özellikle talepkâr istemcilerle veya demir iradeli Ürün Yöneticileriyle karşı karşıya gelmek söz konusu olduğunda, temeli başarılı olmayan tek bir monolitik proje veya mikro frontend yoktur. Tamamlanmış <em>varlıkların</em> yükü sürüklenmeden çevik grafik yinelemelerini kolaylaştırmak, hızlı geliştiriciyi sıkışan kişiden ayırır. Bu üreteci, endüstri düzeyinde bir sonuç sunmak için şüpheli ara işleme olmadan yerel makinenizde modern JavaScript <code>toDataURL()</code> API\'sini doğrudan kullanır.',
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
};
|
|
@@ -0,0 +1,177 @@
|
|
|
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 = 'placeholder-image-generator';
|
|
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: 'zh',
|
|
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: '在网站概念化或结构布局(线框图)的早期阶段,我们很少有最终的摄影内容。空的尺寸可能会扭曲产品的整体可视化效果,并隐藏重要的间距或比例错误。占位图生成器立即解决了这个问题,让您能够注入精确尺寸的彩色区域。',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: '无摩擦设计',
|
|
138
|
+
html: '在构建 CSS Grid 时,集成 1200x800 像素的空间是必须的。通过下载填充块,您可以避免在临时代码中注入额外的 CSS 或第三方脚本。',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: '避免外部服务的重要性',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Frontend 生态系统中一个反复出现的做法是将 <code>via.placeholder.com</code> 等服务直接链接到 HTML <code>src</code> 属性中。虽然从理论上讲通过 URL 参数很灵活,但它带来了深层次的副作用,任何细心的开发者都应该竭力避免。',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: '在开发页面的每个图像标签中插入远程域会增加 DNS 请求、惩罚 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: '技术线框设计的隐秘艺术',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: '没有单一的单体项目或微前端不经过基础阶段,尤其是在面对要求苛刻的客户或铁血 Product Manager 时。在不拖累最终 <em>资产</em> 开销的情况下促进敏捷图形迭代,将快速开发者与卡住的开发者区分开来。该生成器直接利用您本地机器上的现代 JavaScript <code>toDataURL()</code> API,在没有可疑的中间处理的情况下提供工业级结果。',
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
};
|
|
177
|
+
|
|
@@ -10,6 +10,18 @@ export type PlaceholderGeneratorLocaleContent = ToolLocaleContent<PlaceholderGen
|
|
|
10
10
|
import { content as es } from './i18n/es';
|
|
11
11
|
import { content as en } from './i18n/en';
|
|
12
12
|
import { content as fr } from './i18n/fr';
|
|
13
|
+
import { content as de } from './i18n/de';
|
|
14
|
+
import { content as id } from './i18n/id';
|
|
15
|
+
import { content as it } from './i18n/it';
|
|
16
|
+
import { content as ja } from './i18n/ja';
|
|
17
|
+
import { content as ko } from './i18n/ko';
|
|
18
|
+
import { content as nl } from './i18n/nl';
|
|
19
|
+
import { content as pl } from './i18n/pl';
|
|
20
|
+
import { content as pt } from './i18n/pt';
|
|
21
|
+
import { content as ru } from './i18n/ru';
|
|
22
|
+
import { content as sv } from './i18n/sv';
|
|
23
|
+
import { content as tr } from './i18n/tr';
|
|
24
|
+
import { content as zh } from './i18n/zh';
|
|
13
25
|
|
|
14
26
|
export const placeholderGenerator: DeveloperToolEntry<PlaceholderGeneratorUI> = {
|
|
15
27
|
id: 'placeholder-generator',
|
|
@@ -21,6 +33,18 @@ export const placeholderGenerator: DeveloperToolEntry<PlaceholderGeneratorUI> =
|
|
|
21
33
|
es: async () => es,
|
|
22
34
|
en: async () => en,
|
|
23
35
|
fr: async () => fr,
|
|
36
|
+
de: async () => de,
|
|
37
|
+
id: async () => id,
|
|
38
|
+
it: async () => it,
|
|
39
|
+
ja: async () => ja,
|
|
40
|
+
ko: async () => ko,
|
|
41
|
+
nl: async () => nl,
|
|
42
|
+
pl: async () => pl,
|
|
43
|
+
pt: async () => pt,
|
|
44
|
+
ru: async () => ru,
|
|
45
|
+
sv: async () => sv,
|
|
46
|
+
tr: async () => tr,
|
|
47
|
+
zh: async () => zh,
|
|
24
48
|
},
|
|
25
49
|
};
|
|
26
50
|
|