@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,192 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { CronGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'cron-pl';
|
|
6
|
+
const title = 'Internetowy generator wyrażeń Cron. Tłumacz i wizualizator';
|
|
7
|
+
const description =
|
|
8
|
+
'Darmowe narzędzie wizualne do generowania wyrażeń Linux Cron. Tłumaczy * * * * * na język ludzki i pokazuje 5 następnych wykonań w czasie rzeczywistym.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Co to jest wyrażenie Cron?',
|
|
13
|
+
answer:
|
|
14
|
+
'Jest to ciąg tekstowy reprezentujący harmonogram wykonywania automatycznych zadań w systemach typu Unix (Linux, macOS). Składa się z 5 pól definiujących minuty, godziny, dzień miesiąca, miesiąc i dzień tygodnia.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Czy jest kompatybilny ze wszystkimi systemami?',
|
|
18
|
+
answer:
|
|
19
|
+
'Tak, wygenerowane wyrażenia są zgodne ze standardem POSIX, kompatybilne z Linux Crontab, macOS cron oraz usługami chmurowymi, takimi jak AWS CloudWatch czy GitHub Actions.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Co oznacza gwiazdka (*) w Cron?',
|
|
23
|
+
answer:
|
|
24
|
+
'Gwiazdka to symbol wieloznaczny oznaczający „wszystko”. Na przykład gwiazdka w polu minut oznacza, że zadanie będzie uruchamiane w każdej minucie zdefiniowanego zakresu.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Jak mogę sprawdzić nadchodzące wykonania?',
|
|
28
|
+
answer:
|
|
29
|
+
'Narzędzie zawiera wizualizator czasu rzeczywistego, który pokazuje dokładnie 5 następnych dat i godzin, w których zadanie zostanie uruchomione zgodnie z bieżącym wyrażeniem.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Wybierz interwał',
|
|
36
|
+
text: 'Wybierz, jak często zadanie ma być uruchamiane, korzystając z szybkich ustawień wstępnych (co minutę, co godzinę, codziennie itp.).',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Skonfiguruj zaawansowane szczegóły',
|
|
40
|
+
text: 'Przełącz się na kartę „Zaawansowane”, aby ręcznie zdefiniować dokładne minuty, godziny lub określone dni tygodnia.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Zweryfikuj tłumaczenie i daty',
|
|
44
|
+
text: 'Przeczytaj opis w języku ludzkim i sprawdź 5 następnych wykonań, aby potwierdzić, że harmonogram jest prawidłowy.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Skopiuj wyrażenie',
|
|
48
|
+
text: 'Skopiuj wynikowy ciąg znaków i wklej go bezpośrednio do pliku crontab lub konfiguracji serwera.',
|
|
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: 'PLN' },
|
|
83
|
+
inLanguage: 'pl',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const ui: CronGeneratorUI = {
|
|
87
|
+
labelMinute: 'Minuta',
|
|
88
|
+
labelHour: 'Godzina',
|
|
89
|
+
labelDom: 'Dzień (miesiąc)',
|
|
90
|
+
labelMonth: 'Miesiąc',
|
|
91
|
+
labelDow: 'Dzień (tydzień)',
|
|
92
|
+
tabQuick: 'Szybkie',
|
|
93
|
+
tabAdvanced: 'Zaawansowane',
|
|
94
|
+
fieldMinute: 'Minuta (0-59)',
|
|
95
|
+
fieldHour: 'Godzina (0-23)',
|
|
96
|
+
fieldDom: 'Dzień miesiąca (1-31)',
|
|
97
|
+
fieldMonth: 'Miesiąc (1-12)',
|
|
98
|
+
fieldDow: 'Dzień tygodnia (0-6)',
|
|
99
|
+
hintMinute: 'Np.: *, */5, 0,30',
|
|
100
|
+
hintDow: '0 = Niedziela, 6 = Sobota',
|
|
101
|
+
labelNextRuns: 'Następne wykonania',
|
|
102
|
+
btnCopy: 'Kopiuj wyrażenie',
|
|
103
|
+
btnCopied: 'Skopiowano!',
|
|
104
|
+
msgNoRuns: 'Nie znaleziono nadchodzących wykonań w rozsądnym zakresie.',
|
|
105
|
+
msgError: 'Błąd podczas obliczania dat.',
|
|
106
|
+
presetEveryMinute: 'Co minutę',
|
|
107
|
+
presetEveryHour: 'Co godzinę',
|
|
108
|
+
presetDaily: 'Codziennie',
|
|
109
|
+
presetWeekly: 'Co tydzień',
|
|
110
|
+
presetMonthly: 'Co miesiąc',
|
|
111
|
+
presetYearly: 'Co rok',
|
|
112
|
+
descEveryMinute: 'Uruchamia się co minutę',
|
|
113
|
+
descEveryHour: 'Uruchamia się na początku każdej godziny',
|
|
114
|
+
descEveryDay: 'Uruchamia się codziennie o północy',
|
|
115
|
+
descPrefix: 'Uruchamia się',
|
|
116
|
+
descEveryMin: 'co minutę',
|
|
117
|
+
descEveryHourOnDot: 'o każdej pełnej godzinie',
|
|
118
|
+
descAtMinute: 'w minucie {m} każdej godziny',
|
|
119
|
+
descAtTime: 'o godzinie {h}:{m}',
|
|
120
|
+
descOnDay: ' w dniu {d} miesiąca',
|
|
121
|
+
descInMonth: ' w miesiącu {mon}',
|
|
122
|
+
descIfDow: ' jeśli jest to dzień {d} (0=Niedz, 6=Sob)',
|
|
123
|
+
descDays: 'Niedziela,Poniedziałek,Wtorek,Środa,Czwartek,Piątek,Sobota',
|
|
124
|
+
descInvalid: 'Nieprawidłowe wyrażenie',
|
|
125
|
+
timeNow: 'teraz',
|
|
126
|
+
timeMin: 'min',
|
|
127
|
+
timeHour: 'h',
|
|
128
|
+
timeDays: 'dni',
|
|
129
|
+
locale: 'pl-PL',
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
export const content: ToolLocaleContent<CronGeneratorUI> = {
|
|
133
|
+
slug,
|
|
134
|
+
title,
|
|
135
|
+
description,
|
|
136
|
+
ui,
|
|
137
|
+
faqTitle: 'Często zadawane pytania',
|
|
138
|
+
faq: faqData,
|
|
139
|
+
bibliographyTitle: 'Referencje i dokumentacja',
|
|
140
|
+
bibliography: [
|
|
141
|
+
{
|
|
142
|
+
name: 'Podręcznik GNU Crontab: wyrażenia Cron w systemie Linux',
|
|
143
|
+
url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'Cron w Wikipedii: historia i składnia',
|
|
147
|
+
url: 'https://pl.wikipedia.org/wiki/Cron',
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
howTo: howToData,
|
|
151
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
152
|
+
seo: [
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Znaczenie Cron we współczesnej automatyzacji',
|
|
156
|
+
level: 2,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'paragraph',
|
|
160
|
+
html: 'Mimo że żyjemy w erze serwerów <em>serverless</em> i przepływów pracy w chmurze, system <strong>Crontab</strong> pozostaje kręgosłupem globalnej infrastruktury technologicznej. Od małych blogów po potężne infrastruktury bankowe, harmonogram zadań to coś, co sprawia, że cyfrowy świat działa.',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'title',
|
|
164
|
+
text: 'Anatomia wyrażenia Cron',
|
|
165
|
+
level: 3,
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'list',
|
|
169
|
+
items: [
|
|
170
|
+
'<strong>Pole 1 – Minuta (0-59):</strong> Kiedy zadanie rozpoczyna się w ciągu godziny.',
|
|
171
|
+
'<strong>Pole 2 – Godzina (0-23):</strong> Wymagany format 24-godzinny.',
|
|
172
|
+
'<strong>Pole 3 – Dzień miesiąca (1-31):</strong> Konkretny dzień kalendarzowy.',
|
|
173
|
+
'<strong>Pole 4 – Miesiąc (1-12):</strong> Od stycznia do grudnia.',
|
|
174
|
+
'<strong>Pole 5 – Dzień tygodnia (0-6):</strong> 0 to zazwyczaj niedziela.',
|
|
175
|
+
],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'title',
|
|
179
|
+
text: 'Operatory specjalne i typowe błędy',
|
|
180
|
+
level: 3,
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'tip',
|
|
184
|
+
html: 'Używaj ukośnika <code>/</code> do definiowania kroków: <code>*/5</code> w minutach oznacza uruchamianie co 5 minut. Przecinek <code>,</code> tworzy listy (<code>1,3,5</code>), a łącznik <code>-</code> definiuje zakresy (<code>1-5</code>).',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
type: 'paragraph',
|
|
188
|
+
html: '90% serwerów działa w czasie <strong>UTC</strong>. Jeśli zaplanujesz zadanie na 02:00 rano, myśląc o lokalnej strefie czasowej, może ono zostać uruchomione o nieoczekiwanej porze. Ponadto Cron nie ma dostępu do Twojej zwykłej ścieżki <code>$PATH</code> – zawsze używaj ścieżek bezwzględnych, takich jak <code>/usr/local/bin/node</code>.',
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
};
|
|
192
|
+
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { CronGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'cron-pt';
|
|
6
|
+
const title = 'Gerador de Expressões Cron Online. Tradutor e Visualizador';
|
|
7
|
+
const description =
|
|
8
|
+
'Ferramenta visual gratuita para gerar expressões Linux Cron. Traduz * * * * * para linguagem humana e mostra as próximas 5 execuções em tempo real.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'O que é uma expressão Cron?',
|
|
13
|
+
answer:
|
|
14
|
+
'É uma sequência de texto que representa um agendamento de execução para tarefas automáticas em sistemas do tipo Unix (Linux, macOS). Consiste em 5 campos que definem minutos, horas, dia do mês, mês e dia da semana.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'É compatível com todos os sistemas?',
|
|
18
|
+
answer:
|
|
19
|
+
'Sim, as expressões geradas seguem o padrão POSIX, compatível com Linux Crontab, macOS crons e serviços de nuvem como AWS CloudWatch ou GitHub Actions.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'O que significa o asterisco (*) no Cron?',
|
|
23
|
+
answer:
|
|
24
|
+
'O asterisco é um curinga que significa "todos". Por exemplo, um * no campo de minutos significa que a tarefa será executada a cada minuto do intervalo definido.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Como posso verificar as próximas execuções?',
|
|
28
|
+
answer:
|
|
29
|
+
'A ferramenta inclui um visualizador em tempo real que mostra exatamente as próximas 5 datas e horários em que sua tarefa será executada de acordo com a expressão atual.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Selecione o intervalo',
|
|
36
|
+
text: 'Escolha com que frequência deseja que a tarefa seja executada usando as predefinições rápidas (a cada minuto, a cada hora, diariamente, etc.).',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Configure detalhes avançados',
|
|
40
|
+
text: 'Mude para a guia "Avançado" para definir manualmente os minutos, horas ou dias específicos da semana exatos.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Verifique a tradução e as datas',
|
|
44
|
+
text: 'Leia a descrição em linguagem humana e verifique as próximas 5 execuções para confirmar se o agendamento está correto.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Copie a expressão',
|
|
48
|
+
text: 'Copie a sequência resultante e cole-a diretamente no seu arquivo crontab ou configuração do servidor.',
|
|
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: CronGeneratorUI = {
|
|
87
|
+
labelMinute: 'Minuto',
|
|
88
|
+
labelHour: 'Hora',
|
|
89
|
+
labelDom: 'Dia (Mês)',
|
|
90
|
+
labelMonth: 'Mês',
|
|
91
|
+
labelDow: 'Dia (Semana)',
|
|
92
|
+
tabQuick: 'Rápido',
|
|
93
|
+
tabAdvanced: 'Avançado',
|
|
94
|
+
fieldMinute: 'Minuto (0-59)',
|
|
95
|
+
fieldHour: 'Hora (0-23)',
|
|
96
|
+
fieldDom: 'Dia do Mês (1-31)',
|
|
97
|
+
fieldMonth: 'Mês (1-12)',
|
|
98
|
+
fieldDow: 'Dia da Semana (0-6)',
|
|
99
|
+
hintMinute: 'Ex: *, */5, 0,30',
|
|
100
|
+
hintDow: '0 = Domingo, 6 = Sábado',
|
|
101
|
+
labelNextRuns: 'Próximas Execuções',
|
|
102
|
+
btnCopy: 'Copiar Expressão',
|
|
103
|
+
btnCopied: 'Copiado!',
|
|
104
|
+
msgNoRuns: 'Nenhuma execução futura encontrada em um intervalo razoável.',
|
|
105
|
+
msgError: 'Erro ao calcular as datas.',
|
|
106
|
+
presetEveryMinute: 'A cada minuto',
|
|
107
|
+
presetEveryHour: 'A cada hora',
|
|
108
|
+
presetDaily: 'Diariamente',
|
|
109
|
+
presetWeekly: 'Semanalmente',
|
|
110
|
+
presetMonthly: 'Mensalmente',
|
|
111
|
+
presetYearly: 'Anualmente',
|
|
112
|
+
descEveryMinute: 'Executa a cada minuto',
|
|
113
|
+
descEveryHour: 'Executa no início de cada hora',
|
|
114
|
+
descEveryDay: 'Executa todos os dias à meia-noite',
|
|
115
|
+
descPrefix: 'Executa',
|
|
116
|
+
descEveryMin: 'a cada minuto',
|
|
117
|
+
descEveryHourOnDot: 'a cada hora em ponto',
|
|
118
|
+
descAtMinute: 'no minuto {m} de cada hora',
|
|
119
|
+
descAtTime: 'às {h}:{m}',
|
|
120
|
+
descOnDay: ' no dia {d} do mês',
|
|
121
|
+
descInMonth: ' no mês {mon}',
|
|
122
|
+
descIfDow: ' se for dia {d} (0=Dom, 6=Sáb)',
|
|
123
|
+
descDays: 'Domingo,Segunda-feira,Terça-feira,Quarta-feira,Quinta-feira,Sexta-feira,Sábado',
|
|
124
|
+
descInvalid: 'Expressão inválida',
|
|
125
|
+
timeNow: 'agora',
|
|
126
|
+
timeMin: 'min',
|
|
127
|
+
timeHour: 'h',
|
|
128
|
+
timeDays: 'dias',
|
|
129
|
+
locale: 'pt-PT',
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
export const content: ToolLocaleContent<CronGeneratorUI> = {
|
|
133
|
+
slug,
|
|
134
|
+
title,
|
|
135
|
+
description,
|
|
136
|
+
ui,
|
|
137
|
+
faqTitle: 'Perguntas Frequentes',
|
|
138
|
+
faq: faqData,
|
|
139
|
+
bibliographyTitle: 'Referências e Documentação',
|
|
140
|
+
bibliography: [
|
|
141
|
+
{
|
|
142
|
+
name: 'Manual do GNU Crontab: Expressões Cron no Linux',
|
|
143
|
+
url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'Cron na Wikipedia: História e Sintaxe',
|
|
147
|
+
url: 'https://pt.wikipedia.org/wiki/Cron',
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
howTo: howToData,
|
|
151
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
152
|
+
seo: [
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'A Importância do Cron na Automação Moderna',
|
|
156
|
+
level: 2,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'paragraph',
|
|
160
|
+
html: 'Apesar de vivermos na era dos servidores <em>serverless</em> e dos fluxos de trabalho na nuvem, o sistema <strong>Crontab</strong> continua a ser a espinha dorsal da infraestrutura tecnológica global. De pequenos blogs a infraestruturas bancárias massivas, o agendamento de tarefas é o que mantém o mundo digital em funcionamento.',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'title',
|
|
164
|
+
text: 'Anatomia de uma Expressão Cron',
|
|
165
|
+
level: 3,
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'list',
|
|
169
|
+
items: [
|
|
170
|
+
'<strong>Campo 1 - Minuto (0-59):</strong> Quando a tarefa começa dentro da hora.',
|
|
171
|
+
'<strong>Campo 2 - Hora (0-23):</strong> Formato de 24 horas obrigatório.',
|
|
172
|
+
'<strong>Campo 3 - Dia do Mês (1-31):</strong> Dia específico do calendário.',
|
|
173
|
+
'<strong>Campo 4 - Mês (1-12):</strong> De janeiro a dezembro.',
|
|
174
|
+
'<strong>Campo 5 - Dia da Semana (0-6):</strong> 0 é normalmente domingo.',
|
|
175
|
+
],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'title',
|
|
179
|
+
text: 'Operadores especiais e erros comuns',
|
|
180
|
+
level: 3,
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'tip',
|
|
184
|
+
html: 'Use a barra <code>/</code> para definir etapas: <code>*/5</code> nos minutos executa a cada 5 minutos. A vírgula <code>,</code> cria listas (<code>1,3,5</code>) e o hífen <code>-</code> define intervalos (<code>1-5</code>).',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
type: 'paragraph',
|
|
188
|
+
html: '90% dos servidores funcionam em <strong>UTC</strong>. Se agendar uma tarefa às 02:00 da manhã pensando no seu fuso horário local, ela poderá ser executada num horário inesperado. Além disso, o Cron não tem acesso ao seu <code>$PATH</code> habitual — use sempre caminhos absolutos como <code>/usr/local/bin/node</code>.',
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
};
|
|
192
|
+
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { CronGeneratorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'cron-ru';
|
|
6
|
+
const title = 'Онлайн генератор Cron выражений. Переводчик и визуализатор';
|
|
7
|
+
const description =
|
|
8
|
+
'Бесплатный визуальный инструмент для генерации выражений Linux Cron. Переводит * * * * * на понятный человеку язык и показывает следующие 5 запусков в реальном времени.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Что такое Cron-выражение?',
|
|
13
|
+
answer:
|
|
14
|
+
'Это текстовая строка, которая представляет собой график выполнения автоматических задач в Unix-подобных системах (Linux, macOS). Она состоит из 5 полей, определяющих минуты, часы, день месяца, месяц и день недели.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Совместимо ли это со всеми системами?',
|
|
18
|
+
answer:
|
|
19
|
+
'Да, сгенерированные выражения следуют стандарту POSIX, совместимы с Linux Crontab, macOS cron и облачными сервисами, такими как AWS CloudWatch или GitHub Actions.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Что означает звездочка (*) в Cron?',
|
|
23
|
+
answer:
|
|
24
|
+
'Звездочка — это подстановочный знак, означающий «все». Например, * в поле минут означает, что задача будет запускаться каждую минуту определенного диапазона.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Как я могу проверить предстоящие запуски?',
|
|
28
|
+
answer:
|
|
29
|
+
'Инструмент включает в себя визуализатор реального времени, показывающий ровно 5 следующих дат и времени, когда ваша задача будет запущена в соответствии с текущим выражением.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Выберите интервал',
|
|
36
|
+
text: 'Выберите, как часто должна запускаться задача, используя быстрые пресеты (каждую минуту, каждый час, ежедневно и т. д.).',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Настройте дополнительные детали',
|
|
40
|
+
text: 'Перейдите на вкладку «Дополнительно», чтобы вручную определить точные минуты, часы или конкретные дни недели.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Проверьте перевод и даты',
|
|
44
|
+
text: 'Прочитайте описание на человеческом языке и проверьте следующие 5 запусков, чтобы подтвердить правильность расписания.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Скопируйте выражение',
|
|
48
|
+
text: 'Скопируйте полученную строку и вставьте ее прямо в файл crontab или в конфигурацию сервера.',
|
|
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: CronGeneratorUI = {
|
|
87
|
+
labelMinute: 'Минута',
|
|
88
|
+
labelHour: 'Час',
|
|
89
|
+
labelDom: 'День (месяц)',
|
|
90
|
+
labelMonth: 'Месяц',
|
|
91
|
+
labelDow: 'День (неделя)',
|
|
92
|
+
tabQuick: 'Быстро',
|
|
93
|
+
tabAdvanced: 'Дополнительно',
|
|
94
|
+
fieldMinute: 'Минута (0-59)',
|
|
95
|
+
fieldHour: 'Час (0-23)',
|
|
96
|
+
fieldDom: 'День месяца (1-31)',
|
|
97
|
+
fieldMonth: 'Месяц (1-12)',
|
|
98
|
+
fieldDow: 'День недели (0-6)',
|
|
99
|
+
hintMinute: 'Напр.: *, */5, 0,30',
|
|
100
|
+
hintDow: '0 = Воскресенье, 6 = Суббота',
|
|
101
|
+
labelNextRuns: 'Следующие запуски',
|
|
102
|
+
btnCopy: 'Копировать выражение',
|
|
103
|
+
btnCopied: 'Скопировано!',
|
|
104
|
+
msgNoRuns: 'В разумном диапазоне не найдено предстоящих запусков.',
|
|
105
|
+
msgError: 'Ошибка при расчете дат.',
|
|
106
|
+
presetEveryMinute: 'Каждую минуту',
|
|
107
|
+
presetEveryHour: 'Каждый час',
|
|
108
|
+
presetDaily: 'Ежедневно',
|
|
109
|
+
presetWeekly: 'Еженедельно',
|
|
110
|
+
presetMonthly: 'Ежемесячно',
|
|
111
|
+
presetYearly: 'Ежегодно',
|
|
112
|
+
descEveryMinute: 'Запускается каждую минуту',
|
|
113
|
+
descEveryHour: 'Запускается в начале каждого часа',
|
|
114
|
+
descEveryDay: 'Запускается каждый день в полночь',
|
|
115
|
+
descPrefix: 'Запускается',
|
|
116
|
+
descEveryMin: 'каждую минуту',
|
|
117
|
+
descEveryHourOnDot: 'каждый час ровно',
|
|
118
|
+
descAtMinute: 'в {m} минут каждого часа',
|
|
119
|
+
descAtTime: 'в {h}:{m}',
|
|
120
|
+
descOnDay: ' в {d}-й день месяца',
|
|
121
|
+
descInMonth: ' в {mon}-м месяце',
|
|
122
|
+
descIfDow: ' если это {d}-й день (0 = Вс, 6 = Сб)',
|
|
123
|
+
descDays: 'Воскресенье,Понедельник,Вторник,Среда,Четверг,Пятница,Суббота',
|
|
124
|
+
descInvalid: 'Недопустимое выражение',
|
|
125
|
+
timeNow: 'сейчас',
|
|
126
|
+
timeMin: 'мин',
|
|
127
|
+
timeHour: 'ч',
|
|
128
|
+
timeDays: 'дн.',
|
|
129
|
+
locale: 'ru-RU',
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
export const content: ToolLocaleContent<CronGeneratorUI> = {
|
|
133
|
+
slug,
|
|
134
|
+
title,
|
|
135
|
+
description,
|
|
136
|
+
ui,
|
|
137
|
+
faqTitle: 'Часто задаваемые вопросы',
|
|
138
|
+
faq: faqData,
|
|
139
|
+
bibliographyTitle: 'Ссылки и документация',
|
|
140
|
+
bibliography: [
|
|
141
|
+
{
|
|
142
|
+
name: 'Руководство GNU Crontab: выражения Cron в Linux',
|
|
143
|
+
url: 'https://www.gnu.org/software/mcron/manual/html_node/Crontab-file.html',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'Cron в Википедии: история и синтаксис',
|
|
147
|
+
url: 'https://ru.wikipedia.org/wiki/Cron',
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
howTo: howToData,
|
|
151
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
152
|
+
seo: [
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Важность Cron в современной автоматизации',
|
|
156
|
+
level: 2,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'paragraph',
|
|
160
|
+
html: 'Несмотря на то, что мы живем в эпоху <em>serverless</em>-серверов и облачных рабочих процессов, система <strong>Crontab</strong> остается основой глобальной технологической инфраструктуры. От небольших блогов до массивных банковских систем — планирование задач поддерживает работу цифрового мира.',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'title',
|
|
164
|
+
text: 'Анатомия Cron-выражения',
|
|
165
|
+
level: 3,
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'list',
|
|
169
|
+
items: [
|
|
170
|
+
'<strong>Поле 1 — Минута (0-59):</strong> когда задача запускается внутри часа.',
|
|
171
|
+
'<strong>Поле 2 — Час (0-23):</strong> требуется 24-часовой формат.',
|
|
172
|
+
'<strong>Поле 3 — День месяца (1-31):</strong> конкретный календарный день.',
|
|
173
|
+
'<strong>Поле 4 — Месяц (1-12):</strong> с января по декабрь.',
|
|
174
|
+
'<strong>Поле 5 — День недели (0-6):</strong> 0 обычно означает воскресенье.',
|
|
175
|
+
],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'title',
|
|
179
|
+
text: 'Специальные операторы и типичные ошибки',
|
|
180
|
+
level: 3,
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'tip',
|
|
184
|
+
html: 'Используйте косую черту <code>/</code> для определения шагов: <code>*/5</code> в минутах означает запуск каждые 5 минут. Запятая <code>,</code> создает списки (<code>1,3,5</code>), а дефис <code>-</code> определяет диапазоны (<code>1-5</code>).',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
type: 'paragraph',
|
|
188
|
+
html: '90% серверов работают по времени <strong>UTC</strong>. Если вы планируете задачу на 02:00 ночи, ориентируясь на местное время, она может запуститься в неожиданное время. Кроме того, у Cron нет доступа к вашему обычному <code>$PATH</code> — всегда используйте абсолютные пути, такие как <code>/usr/local/bin/node</code>.',
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
};
|
|
192
|
+
|