@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,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: 'ネイティブのカラーピッカーまたは16進数コードの直接入力で、背景色とテキスト色を選択します。任意でカスタムテキストを入力し、デフォルトのサイズ表示と置き換えることもできます。',
|
|
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: 'ja',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const ui: PlaceholderGeneratorUI = {
|
|
87
|
+
labelDimensions: 'クイックサイズ',
|
|
88
|
+
labelWidth: '幅 (px)',
|
|
89
|
+
labelHeight: '高さ (px)',
|
|
90
|
+
labelBgColor: '背景色',
|
|
91
|
+
labelTextColor: 'テキスト色',
|
|
92
|
+
labelCustomText: 'カスタムテキスト(任意)',
|
|
93
|
+
placeholderCustomText: '例:ヒーローバナー',
|
|
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/ja/docs/Web/API/HTMLCanvasElement/toDataURL',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'MDN Web Docs: CanvasRenderingContext2D',
|
|
116
|
+
url: 'https://developer.mozilla.org/ja/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グリッドを構築する際、1200×800ピクセルのような正確なサイズのブロックは欠かせません。ダウンロードしたプレースホルダーを使えば、余計なCSSやサードパーティスクリプトを一時的なコードに混ぜ込まずに済みます。',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: '外部サービスを使うことの問題点',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'フロントエンド開発では、<code>via.placeholder.com</code>のようなサービスをHTMLの<code>src</code>属性に直接指定する慣習が広く見られます。URLパラメーターで手軽に使える反面、細心の注意を払う開発者なら避けたいような深刻な副作用があります。',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: '開発中のページのすべての画像タグに外部ドメインを挿入すると、DNSリクエストが増加し、Vite・Gulp・WebpackのホットリローディングシステムのパフォーマンスにSが影響します。また、最終的にクラウドへ上がるブランチに意図せず痕跡を残す恐れもあります。このツールで好みの形式(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>16進数カラーの双方向同期:</strong>ネイティブHTMLのカラーピッカーとテキスト入力欄の状態を双方向で連動させることで、FigmaやPenpotのUI/UXパレットに基づいた精確なカラーコントラストを実現します。',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'title',
|
|
168
|
+
text: '技術的なワイヤーフレーミングが持つ奥深さ',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: 'モノリシックなプロジェクトであれマイクロフロントエンドであれ、基盤を固める段階を経ずに進められるものはほとんどありません。要求の厳しいクライアントや明確なビジョンを持つプロダクトマネージャーと向き合う場面ではなおさらです。最終的な<em>アセット</em>を抱えることなく、グラフィカルな繰り返し作業をすばやく実行できるかどうかが、スピードのある開発者とそうでない開発者の差を生みます。このジェネレーターはローカルマシン上でJSの最新API <code>toDataURL()</code>を直接活用し、不透明な中間処理なしにプロフェッショナルなクオリティの結果を提供します。',
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
};
|
|
177
|
+
|
|
@@ -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: '기본 색상 선택기를 사용하거나 16진수 코드를 직접 입력해 배경색과 텍스트 색상을 설정하세요. 선택적으로 기본 크기 표시 대신 사용할 커스텀 텍스트를 추가할 수 있습니다.',
|
|
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: 'ko',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const ui: PlaceholderGeneratorUI = {
|
|
87
|
+
labelDimensions: '빠른 크기 선택',
|
|
88
|
+
labelWidth: '너비 (px)',
|
|
89
|
+
labelHeight: '높이 (px)',
|
|
90
|
+
labelBgColor: '배경색',
|
|
91
|
+
labelTextColor: '텍스트 색상',
|
|
92
|
+
labelCustomText: '커스텀 텍스트 (선택 사항)',
|
|
93
|
+
placeholderCustomText: '예: 히어로 배너',
|
|
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/ko/docs/Web/API/HTMLCanvasElement/toDataURL',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'MDN Web Docs: CanvasRenderingContext2D',
|
|
116
|
+
url: 'https://developer.mozilla.org/ko/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를 구성할 때 정확히 1200×800픽셀의 공간이 필요한 경우가 많습니다. 플레이스홀더 블록을 다운로드해 사용하면 임시 코드에 불필요한 CSS나 서드파티 스크립트를 추가하지 않아도 됩니다.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: '외부 서비스 의존의 문제점',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: '프론트엔드 개발 환경에서는 <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>16진수 색상 양방향 동기화:</strong> HTML 네이티브 색상 선택기와 텍스트 입력 간의 상태가 양방향으로 동기화되어, Figma나 Penpot의 UI/UX 팔레트에 따른 정밀한 색 대비를 보장합니다.',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'title',
|
|
168
|
+
text: '기술적 와이어프레이밍의 숨겨진 가치',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: '모놀리식 프로젝트든 마이크로 프론트엔드든, 기반 작업 단계를 거치지 않고 완성될 수 있는 것은 없습니다. 까다로운 클라이언트나 확고한 비전을 가진 프로덕트 매니저를 상대할 때는 더욱 그렇습니다. 완성된 <em>에셋</em>의 무게를 짊어지지 않고도 빠르게 그래픽 이터레이션을 수행할 수 있는지 여부가 민첩한 개발자와 그렇지 않은 개발자를 구분 짓습니다. 이 생성기는 로컬 머신에서 현대적인 JS API인 <code>toDataURL()</code>을 직접 활용해, 불투명한 중간 처리 없이 업계 수준의 결과물을 제공합니다.',
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
};
|
|
177
|
+
|
|
@@ -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 = 'placeholder-afbeelding-generator';
|
|
6
|
+
const title = 'Placeholder Afbeelding Generator. Snelle Webmockups Online';
|
|
7
|
+
const description =
|
|
8
|
+
'Maak op maat gemaakte placeholderafbeeldingen voor je webontwerpen. Stel resolutie, achtergrond en tekst in en exporteer direct als PNG, WebP of JPEG.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Wat is een placeholderafbeelding?',
|
|
13
|
+
answer:
|
|
14
|
+
'Een placeholderafbeelding is een tijdelijke grafische afbeelding die in webdesign en opmaak wordt gebruikt om ruimte te reserveren voor een definitief beeld. Ze helpen de structuur van een pagina te visualiseren voordat de uiteindelijke inhoud beschikbaar is.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Kan ik elke gewenste resolutie gebruiken in de generator?',
|
|
18
|
+
answer:
|
|
19
|
+
'Ja, je kunt elke numerieke waarde voor breedte en hoogte invoeren. De generator maakt een canvas met de exact gevraagde afmetingen, perfect voor strikte rasters of specifieke advertentiebanners.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'In welk formaat worden afbeeldingen gedownload?',
|
|
23
|
+
answer:
|
|
24
|
+
'Standaard worden afbeeldingen gegenereerd in WebP voor optimale compressie. Je kunt echter ook PNG kiezen voor maximale verliesvrije kwaliteit, of JPEG voor traditionele compatibiliteit.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Wordt dit verwerkt op een server?',
|
|
28
|
+
answer:
|
|
29
|
+
'Nee, alle afbeeldingsrendering vindt onmiddellijk plaats in het virtuele geheugen (Canvas) van je eigen browser. Het is instant en vereist geen gegevensverzending via het netwerk.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Afmetingen instellen',
|
|
36
|
+
text: "Voer de waarden voor breedte en hoogte direct in, of klik op een van de presets (FHD, HD, Instagram, enz.) om ze automatisch in te vullen.",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Kleuren en tekst configureren',
|
|
40
|
+
text: 'Kies achtergrond- en tekstkleur via de native kleurkiezers of door een hexadecimale code in te typen. Voeg optioneel een eigen tekst toe ter vervanging van het standaard afmetingslabel.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Typografie en formaat kiezen',
|
|
44
|
+
text: 'Selecteer de lettertypefamilie en de basisgrootte. Kies het uitvoerformaat (WebP, PNG of JPEG) op basis van je behoeften.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Afbeelding downloaden',
|
|
48
|
+
text: 'Klik op de knop Downloaden om de gegenereerde placeholder direct op je apparaat op te slaan.',
|
|
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: 'nl',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const ui: PlaceholderGeneratorUI = {
|
|
87
|
+
labelDimensions: 'Snelle Afmetingen',
|
|
88
|
+
labelWidth: 'Breedte (px)',
|
|
89
|
+
labelHeight: 'Hoogte (px)',
|
|
90
|
+
labelBgColor: 'Achtergrond',
|
|
91
|
+
labelTextColor: 'Tekst',
|
|
92
|
+
labelCustomText: 'Eigen Tekst (Optioneel)',
|
|
93
|
+
placeholderCustomText: 'Bijv.: Hero Banner',
|
|
94
|
+
labelFontFamily: 'Typografie',
|
|
95
|
+
labelFontSize: 'Basisgrootte',
|
|
96
|
+
fontSizeAuto: 'Automatisch',
|
|
97
|
+
labelFormat: 'Uitvoerformaat',
|
|
98
|
+
btnDownload: 'Afbeelding downloaden',
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export const content: ToolLocaleContent<PlaceholderGeneratorUI> = {
|
|
102
|
+
slug,
|
|
103
|
+
title,
|
|
104
|
+
description,
|
|
105
|
+
ui,
|
|
106
|
+
faqTitle: 'Veelgestelde vragen',
|
|
107
|
+
faq: faqData,
|
|
108
|
+
bibliographyTitle: 'Referenties en documentatie',
|
|
109
|
+
bibliography: [
|
|
110
|
+
{
|
|
111
|
+
name: 'MDN Web Docs: HTMLCanvasElement.toDataURL()',
|
|
112
|
+
url: 'https://developer.mozilla.org/nl/docs/Web/API/HTMLCanvasElement/toDataURL',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'MDN Web Docs: CanvasRenderingContext2D',
|
|
116
|
+
url: 'https://developer.mozilla.org/nl/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: 'Het ultieme hulpmiddel voor snelle mockups',
|
|
129
|
+
level: 2,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: "In de vroege fasen van conceptontwikkeling of structurele opmaak van een website (wireframing) beschikken we zelden over het definitieve beeldmateriaal. Lege vlakken kunnen de algehele visualisatie van het product vertekenen en kritieke fouten in afstanden of verhoudingen verbergen. Een placeholderafbeelding generator lost dit meteen op: je kunt er nauwkeurig gedimensioneerde gekleurde vlakken mee invoegen zonder omwegen.",
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Ontwerpen zonder weerstand',
|
|
138
|
+
html: 'Bij het bouwen van CSS Grids is een ruimte van precies 1200x800 pixels vaak onmisbaar. Door opvulblokken te downloaden vermijd je het injecteren van extra CSS of scripts van derden in je tijdelijke code.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Waarom externe diensten beter te vermijden zijn',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'In het frontend-ecosysteem is het gebruikelijk om diensten zoals <code>via.placeholder.com</code> direct in <code>src</code>-attributen te koppelen. Hoewel dat via URL-parameters handig lijkt, zijn er verstrekkende bijwerkingen die een zorgvuldige ontwikkelaar liever vermijdt.',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Een extern domein in elk afbeeldingstag op een ontwikkelpagina verhoogt het aantal DNS-verzoeken, vertraagt hot-reloading-systemen van Vite, Gulp of Webpack en laat onbedoeld sporen achter in branches die uiteindelijk in de cloud belanden. Door deze tool te gebruiken en de afbeelding in je favoriete formaat (WebP, PNG of JPEG) te genereren, blijft je prototype volledig in localhost-modus.',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Kernfuncties van het generatoralgoritme',
|
|
156
|
+
level: 3,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'list',
|
|
160
|
+
items: [
|
|
161
|
+
'<strong>Pixelperfecte resolutie:</strong> Native HTML5 Canvas zorgt ervoor dat het geëxporteerde canvas rekenkundig overeenkomt met de door de gebruiker opgegeven coördinaten.',
|
|
162
|
+
'<strong>Typografische automatische schaling:</strong> In de automatische modus berekent de lettergrootte het perimeteroppervlak en het aantal tekens om de tekst elegant te laten passen zonder ongewenste <em>overflows</em>.',
|
|
163
|
+
'<strong>Hexadecimale synchronisatie:</strong> Bidirectionele statuscontrole tussen native HTML-kleurkiezers en getypte invoervelden garandeert nauwkeurige contrasten die worden bepaald door het UI/UX-kleurenpalet van je Figma- of Penpot-ontwerp.',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'title',
|
|
168
|
+
text: 'De verborgen kunst van technisch wireframen',
|
|
169
|
+
level: 3,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'paragraph',
|
|
173
|
+
html: 'Er bestaat geen monolithisch project of micro-frontend dat de fundamentele bouwfasen kan overslaan, zeker niet bij veeleisende opdrachtgevers of Product Managers met een ijzersterk oog voor detail. Wie grafische iteraties snel kan doorvoeren zonder de ballast van definitieve <em>assets</em> mee te slepen, onderscheidt zich als vlotte ontwikkelaar. Deze generator maakt rechtstreeks gebruik van de moderne JS-API <code>toDataURL()</code> op je lokale machine en levert een resultaat op industrieniveau, zonder twijfelachtige tussenverwerking.',
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
};
|