@jjlmoya/utils-converters 1.7.0 → 1.9.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 +60 -59
- package/src/shared/logic/schemas.ts +57 -0
- package/src/tests/faq_count.test.ts +13 -4
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/seo_length.test.ts +1 -1
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/avifAJpg/i18n/de.ts +178 -0
- package/src/tool/avifAJpg/i18n/en.ts +2 -12
- package/src/tool/avifAJpg/i18n/es.ts +2 -12
- package/src/tool/avifAJpg/i18n/fr.ts +2 -12
- package/src/tool/avifAJpg/i18n/id.ts +178 -0
- package/src/tool/avifAJpg/i18n/it.ts +178 -0
- package/src/tool/avifAJpg/i18n/ja.ts +178 -0
- package/src/tool/avifAJpg/i18n/ko.ts +178 -0
- package/src/tool/avifAJpg/i18n/nl.ts +178 -0
- package/src/tool/avifAJpg/i18n/pl.ts +178 -0
- package/src/tool/avifAJpg/i18n/pt.ts +178 -0
- package/src/tool/avifAJpg/i18n/ru.ts +178 -0
- package/src/tool/avifAJpg/i18n/sv.ts +178 -0
- package/src/tool/avifAJpg/i18n/tr.ts +178 -0
- package/src/tool/avifAJpg/i18n/zh.ts +178 -0
- package/src/tool/avifAJpg/index.ts +13 -1
- package/src/tool/avifAPng/i18n/de.ts +178 -0
- package/src/tool/avifAPng/i18n/en.ts +2 -12
- package/src/tool/avifAPng/i18n/es.ts +2 -12
- package/src/tool/avifAPng/i18n/fr.ts +2 -12
- package/src/tool/avifAPng/i18n/id.ts +178 -0
- package/src/tool/avifAPng/i18n/it.ts +178 -0
- package/src/tool/avifAPng/i18n/ja.ts +178 -0
- package/src/tool/avifAPng/i18n/ko.ts +178 -0
- package/src/tool/avifAPng/i18n/nl.ts +178 -0
- package/src/tool/avifAPng/i18n/pl.ts +178 -0
- package/src/tool/avifAPng/i18n/pt.ts +178 -0
- package/src/tool/avifAPng/i18n/ru.ts +178 -0
- package/src/tool/avifAPng/i18n/sv.ts +178 -0
- package/src/tool/avifAPng/i18n/tr.ts +178 -0
- package/src/tool/avifAPng/i18n/zh.ts +178 -0
- package/src/tool/avifAPng/index.ts +13 -1
- package/src/tool/avifAWebp/i18n/de.ts +178 -0
- package/src/tool/avifAWebp/i18n/en.ts +2 -12
- package/src/tool/avifAWebp/i18n/es.ts +2 -12
- package/src/tool/avifAWebp/i18n/fr.ts +2 -12
- package/src/tool/avifAWebp/i18n/id.ts +178 -0
- package/src/tool/avifAWebp/i18n/it.ts +178 -0
- package/src/tool/avifAWebp/i18n/ja.ts +178 -0
- package/src/tool/avifAWebp/i18n/ko.ts +178 -0
- package/src/tool/avifAWebp/i18n/nl.ts +178 -0
- package/src/tool/avifAWebp/i18n/pl.ts +178 -0
- package/src/tool/avifAWebp/i18n/pt.ts +178 -0
- package/src/tool/avifAWebp/i18n/ru.ts +178 -0
- package/src/tool/avifAWebp/i18n/sv.ts +178 -0
- package/src/tool/avifAWebp/i18n/tr.ts +178 -0
- package/src/tool/avifAWebp/i18n/zh.ts +178 -0
- package/src/tool/avifAWebp/index.ts +13 -1
- package/src/tool/bmpAJpg/i18n/de.ts +178 -0
- package/src/tool/bmpAJpg/i18n/en.ts +2 -12
- package/src/tool/bmpAJpg/i18n/es.ts +2 -12
- package/src/tool/bmpAJpg/i18n/fr.ts +2 -12
- package/src/tool/bmpAJpg/i18n/id.ts +178 -0
- package/src/tool/bmpAJpg/i18n/it.ts +178 -0
- package/src/tool/bmpAJpg/i18n/ja.ts +178 -0
- package/src/tool/bmpAJpg/i18n/ko.ts +178 -0
- package/src/tool/bmpAJpg/i18n/nl.ts +178 -0
- package/src/tool/bmpAJpg/i18n/pl.ts +178 -0
- package/src/tool/bmpAJpg/i18n/pt.ts +178 -0
- package/src/tool/bmpAJpg/i18n/ru.ts +178 -0
- package/src/tool/bmpAJpg/i18n/sv.ts +178 -0
- package/src/tool/bmpAJpg/i18n/tr.ts +178 -0
- package/src/tool/bmpAJpg/i18n/zh.ts +178 -0
- package/src/tool/bmpAJpg/index.ts +13 -1
- package/src/tool/bmpAPng/i18n/de.ts +177 -0
- package/src/tool/bmpAPng/i18n/en.ts +2 -12
- package/src/tool/bmpAPng/i18n/es.ts +2 -12
- package/src/tool/bmpAPng/i18n/fr.ts +2 -12
- package/src/tool/bmpAPng/i18n/id.ts +177 -0
- package/src/tool/bmpAPng/i18n/it.ts +177 -0
- package/src/tool/bmpAPng/i18n/ja.ts +177 -0
- package/src/tool/bmpAPng/i18n/ko.ts +177 -0
- package/src/tool/bmpAPng/i18n/nl.ts +177 -0
- package/src/tool/bmpAPng/i18n/pl.ts +177 -0
- package/src/tool/bmpAPng/i18n/pt.ts +177 -0
- package/src/tool/bmpAPng/i18n/ru.ts +177 -0
- package/src/tool/bmpAPng/i18n/sv.ts +177 -0
- package/src/tool/bmpAPng/i18n/tr.ts +177 -0
- package/src/tool/bmpAPng/i18n/zh.ts +177 -0
- package/src/tool/bmpAPng/index.ts +13 -1
- package/src/tool/bmpAWebp/i18n/de.ts +178 -0
- package/src/tool/bmpAWebp/i18n/en.ts +2 -12
- package/src/tool/bmpAWebp/i18n/es.ts +2 -12
- package/src/tool/bmpAWebp/i18n/fr.ts +2 -12
- package/src/tool/bmpAWebp/i18n/id.ts +178 -0
- package/src/tool/bmpAWebp/i18n/it.ts +178 -0
- package/src/tool/bmpAWebp/i18n/ja.ts +178 -0
- package/src/tool/bmpAWebp/i18n/ko.ts +178 -0
- package/src/tool/bmpAWebp/i18n/nl.ts +178 -0
- package/src/tool/bmpAWebp/i18n/pl.ts +178 -0
- package/src/tool/bmpAWebp/i18n/pt.ts +178 -0
- package/src/tool/bmpAWebp/i18n/ru.ts +178 -0
- package/src/tool/bmpAWebp/i18n/sv.ts +178 -0
- package/src/tool/bmpAWebp/i18n/tr.ts +178 -0
- package/src/tool/bmpAWebp/i18n/zh.ts +178 -0
- package/src/tool/bmpAWebp/index.ts +13 -1
- package/src/tool/gifAJpg/i18n/de.ts +178 -0
- package/src/tool/gifAJpg/i18n/en.ts +2 -12
- package/src/tool/gifAJpg/i18n/es.ts +2 -12
- package/src/tool/gifAJpg/i18n/fr.ts +2 -12
- package/src/tool/gifAJpg/i18n/id.ts +178 -0
- package/src/tool/gifAJpg/i18n/it.ts +178 -0
- package/src/tool/gifAJpg/i18n/ja.ts +178 -0
- package/src/tool/gifAJpg/i18n/ko.ts +178 -0
- package/src/tool/gifAJpg/i18n/nl.ts +178 -0
- package/src/tool/gifAJpg/i18n/pl.ts +178 -0
- package/src/tool/gifAJpg/i18n/pt.ts +178 -0
- package/src/tool/gifAJpg/i18n/ru.ts +178 -0
- package/src/tool/gifAJpg/i18n/sv.ts +178 -0
- package/src/tool/gifAJpg/i18n/tr.ts +178 -0
- package/src/tool/gifAJpg/i18n/zh.ts +178 -0
- package/src/tool/gifAJpg/index.ts +13 -1
- package/src/tool/gifAPng/i18n/de.ts +178 -0
- package/src/tool/gifAPng/i18n/en.ts +2 -12
- package/src/tool/gifAPng/i18n/es.ts +2 -12
- package/src/tool/gifAPng/i18n/fr.ts +2 -12
- package/src/tool/gifAPng/i18n/id.ts +178 -0
- package/src/tool/gifAPng/i18n/it.ts +178 -0
- package/src/tool/gifAPng/i18n/ja.ts +178 -0
- package/src/tool/gifAPng/i18n/ko.ts +178 -0
- package/src/tool/gifAPng/i18n/nl.ts +178 -0
- package/src/tool/gifAPng/i18n/pl.ts +178 -0
- package/src/tool/gifAPng/i18n/pt.ts +178 -0
- package/src/tool/gifAPng/i18n/ru.ts +178 -0
- package/src/tool/gifAPng/i18n/sv.ts +178 -0
- package/src/tool/gifAPng/i18n/tr.ts +178 -0
- package/src/tool/gifAPng/i18n/zh.ts +178 -0
- package/src/tool/gifAPng/index.ts +12 -0
- package/src/tool/gifAWebp/i18n/de.ts +178 -0
- package/src/tool/gifAWebp/i18n/en.ts +2 -12
- package/src/tool/gifAWebp/i18n/es.ts +2 -12
- package/src/tool/gifAWebp/i18n/fr.ts +2 -12
- package/src/tool/gifAWebp/i18n/id.ts +178 -0
- package/src/tool/gifAWebp/i18n/it.ts +178 -0
- package/src/tool/gifAWebp/i18n/ja.ts +178 -0
- package/src/tool/gifAWebp/i18n/ko.ts +178 -0
- package/src/tool/gifAWebp/i18n/nl.ts +178 -0
- package/src/tool/gifAWebp/i18n/pl.ts +178 -0
- package/src/tool/gifAWebp/i18n/pt.ts +178 -0
- package/src/tool/gifAWebp/i18n/ru.ts +178 -0
- package/src/tool/gifAWebp/i18n/sv.ts +178 -0
- package/src/tool/gifAWebp/i18n/tr.ts +178 -0
- package/src/tool/gifAWebp/i18n/zh.ts +178 -0
- package/src/tool/gifAWebp/index.ts +12 -0
- package/src/tool/imagenBase64/i18n/de.ts +168 -0
- package/src/tool/imagenBase64/i18n/en.ts +2 -12
- package/src/tool/imagenBase64/i18n/es.ts +2 -12
- package/src/tool/imagenBase64/i18n/fr.ts +2 -12
- package/src/tool/imagenBase64/i18n/id.ts +168 -0
- package/src/tool/imagenBase64/i18n/it.ts +168 -0
- package/src/tool/imagenBase64/i18n/ja.ts +168 -0
- package/src/tool/imagenBase64/i18n/ko.ts +168 -0
- package/src/tool/imagenBase64/i18n/nl.ts +168 -0
- package/src/tool/imagenBase64/i18n/pl.ts +168 -0
- package/src/tool/imagenBase64/i18n/pt.ts +173 -0
- package/src/tool/imagenBase64/i18n/ru.ts +168 -0
- package/src/tool/imagenBase64/i18n/sv.ts +168 -0
- package/src/tool/imagenBase64/i18n/tr.ts +168 -0
- package/src/tool/imagenBase64/i18n/zh.ts +168 -0
- package/src/tool/imagenBase64/index.ts +12 -0
- package/src/tool/jpgAIco/i18n/de.ts +183 -0
- package/src/tool/jpgAIco/i18n/en.ts +8 -13
- package/src/tool/jpgAIco/i18n/es.ts +13 -18
- package/src/tool/jpgAIco/i18n/fr.ts +9 -14
- package/src/tool/jpgAIco/i18n/id.ts +183 -0
- package/src/tool/jpgAIco/i18n/it.ts +183 -0
- package/src/tool/jpgAIco/i18n/ja.ts +183 -0
- package/src/tool/jpgAIco/i18n/ko.ts +183 -0
- package/src/tool/jpgAIco/i18n/nl.ts +183 -0
- package/src/tool/jpgAIco/i18n/pl.ts +183 -0
- package/src/tool/jpgAIco/i18n/pt.ts +183 -0
- package/src/tool/jpgAIco/i18n/ru.ts +183 -0
- package/src/tool/jpgAIco/i18n/sv.ts +183 -0
- package/src/tool/jpgAIco/i18n/tr.ts +183 -0
- package/src/tool/jpgAIco/i18n/zh.ts +183 -0
- package/src/tool/jpgAIco/index.ts +12 -0
- package/src/tool/jpgAPng/i18n/de.ts +178 -0
- package/src/tool/jpgAPng/i18n/en.ts +2 -12
- package/src/tool/jpgAPng/i18n/es.ts +2 -12
- package/src/tool/jpgAPng/i18n/fr.ts +2 -12
- package/src/tool/jpgAPng/i18n/id.ts +178 -0
- package/src/tool/jpgAPng/i18n/it.ts +178 -0
- package/src/tool/jpgAPng/i18n/ja.ts +178 -0
- package/src/tool/jpgAPng/i18n/ko.ts +178 -0
- package/src/tool/jpgAPng/i18n/nl.ts +178 -0
- package/src/tool/jpgAPng/i18n/pl.ts +178 -0
- package/src/tool/jpgAPng/i18n/pt.ts +178 -0
- package/src/tool/jpgAPng/i18n/ru.ts +178 -0
- package/src/tool/jpgAPng/i18n/sv.ts +178 -0
- package/src/tool/jpgAPng/i18n/tr.ts +178 -0
- package/src/tool/jpgAPng/i18n/zh.ts +178 -0
- package/src/tool/jpgAPng/index.ts +13 -1
- package/src/tool/jpgAWebp/i18n/de.ts +178 -0
- package/src/tool/jpgAWebp/i18n/en.ts +2 -12
- package/src/tool/jpgAWebp/i18n/es.ts +2 -12
- package/src/tool/jpgAWebp/i18n/fr.ts +2 -12
- package/src/tool/jpgAWebp/i18n/id.ts +178 -0
- package/src/tool/jpgAWebp/i18n/it.ts +178 -0
- package/src/tool/jpgAWebp/i18n/ja.ts +178 -0
- package/src/tool/jpgAWebp/i18n/ko.ts +178 -0
- package/src/tool/jpgAWebp/i18n/nl.ts +178 -0
- package/src/tool/jpgAWebp/i18n/pl.ts +178 -0
- package/src/tool/jpgAWebp/i18n/pt.ts +178 -0
- package/src/tool/jpgAWebp/i18n/ru.ts +178 -0
- package/src/tool/jpgAWebp/i18n/sv.ts +178 -0
- package/src/tool/jpgAWebp/i18n/tr.ts +178 -0
- package/src/tool/jpgAWebp/i18n/zh.ts +178 -0
- package/src/tool/jpgAWebp/index.ts +12 -0
- package/src/tool/pngAIco/i18n/de.ts +183 -0
- package/src/tool/pngAIco/i18n/en.ts +8 -13
- package/src/tool/pngAIco/i18n/es.ts +19 -24
- package/src/tool/pngAIco/i18n/fr.ts +20 -25
- package/src/tool/pngAIco/i18n/id.ts +183 -0
- package/src/tool/pngAIco/i18n/it.ts +183 -0
- package/src/tool/pngAIco/i18n/ja.ts +183 -0
- package/src/tool/pngAIco/i18n/ko.ts +183 -0
- package/src/tool/pngAIco/i18n/nl.ts +183 -0
- package/src/tool/pngAIco/i18n/pl.ts +183 -0
- package/src/tool/pngAIco/i18n/pt.ts +183 -0
- package/src/tool/pngAIco/i18n/ru.ts +183 -0
- package/src/tool/pngAIco/i18n/sv.ts +183 -0
- package/src/tool/pngAIco/i18n/tr.ts +183 -0
- package/src/tool/pngAIco/i18n/zh.ts +183 -0
- package/src/tool/pngAIco/index.ts +12 -0
- package/src/tool/pngAJpg/i18n/de.ts +191 -0
- package/src/tool/pngAJpg/i18n/en.ts +2 -12
- package/src/tool/pngAJpg/i18n/es.ts +2 -12
- package/src/tool/pngAJpg/i18n/fr.ts +2 -12
- package/src/tool/pngAJpg/i18n/id.ts +191 -0
- package/src/tool/pngAJpg/i18n/it.ts +191 -0
- package/src/tool/pngAJpg/i18n/ja.ts +191 -0
- package/src/tool/pngAJpg/i18n/ko.ts +191 -0
- package/src/tool/pngAJpg/i18n/nl.ts +191 -0
- package/src/tool/pngAJpg/i18n/pl.ts +191 -0
- package/src/tool/pngAJpg/i18n/pt.ts +191 -0
- package/src/tool/pngAJpg/i18n/ru.ts +191 -0
- package/src/tool/pngAJpg/i18n/sv.ts +191 -0
- package/src/tool/pngAJpg/i18n/tr.ts +191 -0
- package/src/tool/pngAJpg/i18n/zh.ts +191 -0
- package/src/tool/pngAJpg/index.ts +13 -1
- package/src/tool/pngAWebp/i18n/de.ts +182 -0
- package/src/tool/pngAWebp/i18n/en.ts +2 -12
- package/src/tool/pngAWebp/i18n/es.ts +2 -12
- package/src/tool/pngAWebp/i18n/fr.ts +2 -12
- package/src/tool/pngAWebp/i18n/id.ts +182 -0
- package/src/tool/pngAWebp/i18n/it.ts +182 -0
- package/src/tool/pngAWebp/i18n/ja.ts +182 -0
- package/src/tool/pngAWebp/i18n/ko.ts +182 -0
- package/src/tool/pngAWebp/i18n/nl.ts +182 -0
- package/src/tool/pngAWebp/i18n/pl.ts +182 -0
- package/src/tool/pngAWebp/i18n/pt.ts +182 -0
- package/src/tool/pngAWebp/i18n/ru.ts +182 -0
- package/src/tool/pngAWebp/i18n/sv.ts +182 -0
- package/src/tool/pngAWebp/i18n/tr.ts +182 -0
- package/src/tool/pngAWebp/i18n/zh.ts +182 -0
- package/src/tool/pngAWebp/index.ts +12 -0
- package/src/tool/svgAJpg/i18n/de.ts +178 -0
- package/src/tool/svgAJpg/i18n/en.ts +8 -13
- package/src/tool/svgAJpg/i18n/es.ts +8 -13
- package/src/tool/svgAJpg/i18n/fr.ts +2 -12
- package/src/tool/svgAJpg/i18n/id.ts +178 -0
- package/src/tool/svgAJpg/i18n/it.ts +178 -0
- package/src/tool/svgAJpg/i18n/ja.ts +178 -0
- package/src/tool/svgAJpg/i18n/ko.ts +178 -0
- package/src/tool/svgAJpg/i18n/nl.ts +178 -0
- package/src/tool/svgAJpg/i18n/pl.ts +178 -0
- package/src/tool/svgAJpg/i18n/pt.ts +178 -0
- package/src/tool/svgAJpg/i18n/ru.ts +178 -0
- package/src/tool/svgAJpg/i18n/sv.ts +178 -0
- package/src/tool/svgAJpg/i18n/tr.ts +178 -0
- package/src/tool/svgAJpg/i18n/zh.ts +178 -0
- package/src/tool/svgAJpg/index.ts +12 -0
- package/src/tool/svgAPng/i18n/de.ts +178 -0
- package/src/tool/svgAPng/i18n/en.ts +8 -13
- package/src/tool/svgAPng/i18n/es.ts +31 -36
- package/src/tool/svgAPng/i18n/fr.ts +2 -12
- package/src/tool/svgAPng/i18n/id.ts +178 -0
- package/src/tool/svgAPng/i18n/it.ts +178 -0
- package/src/tool/svgAPng/i18n/ja.ts +178 -0
- package/src/tool/svgAPng/i18n/ko.ts +178 -0
- package/src/tool/svgAPng/i18n/nl.ts +178 -0
- package/src/tool/svgAPng/i18n/pl.ts +178 -0
- package/src/tool/svgAPng/i18n/pt.ts +178 -0
- package/src/tool/svgAPng/i18n/ru.ts +178 -0
- package/src/tool/svgAPng/i18n/sv.ts +178 -0
- package/src/tool/svgAPng/i18n/tr.ts +178 -0
- package/src/tool/svgAPng/i18n/zh.ts +178 -0
- package/src/tool/svgAPng/index.ts +12 -0
- package/src/tool/webpAIco/i18n/de.ts +183 -0
- package/src/tool/webpAIco/i18n/en.ts +8 -13
- package/src/tool/webpAIco/i18n/es.ts +9 -14
- package/src/tool/webpAIco/i18n/fr.ts +11 -16
- package/src/tool/webpAIco/i18n/id.ts +183 -0
- package/src/tool/webpAIco/i18n/it.ts +183 -0
- package/src/tool/webpAIco/i18n/ja.ts +183 -0
- package/src/tool/webpAIco/i18n/ko.ts +183 -0
- package/src/tool/webpAIco/i18n/nl.ts +183 -0
- package/src/tool/webpAIco/i18n/pl.ts +183 -0
- package/src/tool/webpAIco/i18n/pt.ts +183 -0
- package/src/tool/webpAIco/i18n/ru.ts +183 -0
- package/src/tool/webpAIco/i18n/sv.ts +183 -0
- package/src/tool/webpAIco/i18n/tr.ts +183 -0
- package/src/tool/webpAIco/i18n/zh.ts +183 -0
- package/src/tool/webpAIco/index.ts +12 -0
- package/src/tool/webpAJpg/i18n/de.ts +187 -0
- package/src/tool/webpAJpg/i18n/en.ts +9 -13
- package/src/tool/webpAJpg/i18n/es.ts +37 -42
- package/src/tool/webpAJpg/i18n/fr.ts +35 -40
- package/src/tool/webpAJpg/i18n/id.ts +182 -0
- package/src/tool/webpAJpg/i18n/it.ts +182 -0
- package/src/tool/webpAJpg/i18n/ja.ts +182 -0
- package/src/tool/webpAJpg/i18n/ko.ts +182 -0
- package/src/tool/webpAJpg/i18n/nl.ts +182 -0
- package/src/tool/webpAJpg/i18n/pl.ts +182 -0
- package/src/tool/webpAJpg/i18n/pt.ts +182 -0
- package/src/tool/webpAJpg/i18n/ru.ts +182 -0
- package/src/tool/webpAJpg/i18n/sv.ts +182 -0
- package/src/tool/webpAJpg/i18n/tr.ts +182 -0
- package/src/tool/webpAJpg/i18n/zh.ts +182 -0
- package/src/tool/webpAJpg/index.ts +12 -0
- package/src/tool/webpAPng/i18n/de.ts +182 -0
- package/src/tool/webpAPng/i18n/en.ts +8 -13
- package/src/tool/webpAPng/i18n/es.ts +35 -40
- package/src/tool/webpAPng/i18n/fr.ts +2 -12
- package/src/tool/webpAPng/i18n/id.ts +182 -0
- package/src/tool/webpAPng/i18n/it.ts +182 -0
- package/src/tool/webpAPng/i18n/ja.ts +182 -0
- package/src/tool/webpAPng/i18n/ko.ts +182 -0
- package/src/tool/webpAPng/i18n/nl.ts +182 -0
- package/src/tool/webpAPng/i18n/pl.ts +182 -0
- package/src/tool/webpAPng/i18n/pt.ts +182 -0
- package/src/tool/webpAPng/i18n/ru.ts +182 -0
- package/src/tool/webpAPng/i18n/sv.ts +182 -0
- package/src/tool/webpAPng/i18n/tr.ts +182 -0
- package/src/tool/webpAPng/i18n/zh.ts +182 -0
- package/src/tool/webpAPng/index.ts +12 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
|
+
import type { PngAWebpLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'png-den-webp-ye-donusturucu';
|
|
6
|
+
const title = 'PNG\'yi WebP\'ye Çevrimiçi ve Ücretsiz Dönüştürün';
|
|
7
|
+
const description =
|
|
8
|
+
'PNG görüntülerini tarayıcınızda WebP\'ye dönüştürün. %40\'a varan daha küçük dosya boyutu. Şeffaflığı korur. Dosya yüklemesi yok. Ücretsiz ve özel.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'PNG dosyalarını sürükleyin...',
|
|
12
|
+
convertText: 'Onları anında WebP\'ye dönüştürmek için',
|
|
13
|
+
selectFiles: 'Dosyaları seçin',
|
|
14
|
+
processedFiles: 'İşlenmiş dosyalar',
|
|
15
|
+
downloadAll: 'Tümünü İndir (.zip)',
|
|
16
|
+
pending: 'Bekliyor',
|
|
17
|
+
bibliographyTitle: 'Bibliyografik Referanslar',
|
|
18
|
+
faqTitle: 'Sıkça Sorulan Sorular',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: PngAWebpLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Neden PNG\'yi WebP\'ye dönüştürmeliyiz?',
|
|
24
|
+
answer:
|
|
25
|
+
'WebP, aynı kalitede PNG\'den %40\'a kadar daha iyi sıkıştırma sağlarken Alfa şeffaflığını da destekler. Google PageSpeed Insights tarafından önerilen formattır.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'İşlem sırasında şeffaflık kaybolur mu?',
|
|
29
|
+
answer:
|
|
30
|
+
'Hayır. WebP\'nin teknik uygulaması alfa kanalını destekler. Orijinal PNG\'nin şeffaflıkları yeni WebP dosyasında korunacaktır.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Görüntülerim herhangi bir sunucuya gidiyor mu?',
|
|
34
|
+
answer:
|
|
35
|
+
'Hayır. Kod yalnızca tarayıcınızda (İstemci Tarafı) çalışır. Dönüştürdüğünüz görüntüleri asla görmeyiz, kaydetmeyiz veya saklamayız.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: PngAWebpLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'PNG\'lerinizi yerleştirin',
|
|
42
|
+
text: 'Büyük PNG dosyalarınızı yükleme alanına bırakın veya geleneksel etkileşimli seçiciyi kullanın.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Kanal algılama',
|
|
46
|
+
text: 'Yerel oluşturma motoru, piksel kompozisyonunu algılayacak ve optimize edilmiş WebP formatına aktaracaktır.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Doğrudan İndirme',
|
|
50
|
+
text: 'Yüksek kaliteli sıkıştırılmış WebP dosyalarınızı tek tek indirin veya ZIP paketi dönüştürücüsünü kullanarak bir araya getirin.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: PngAWebpLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'Google: WebP Uygulama Detayları',
|
|
57
|
+
url: 'https://developers.google.com/speed/webp/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'W3C: Core Web Vitals Rehberi',
|
|
61
|
+
url: 'https://web.dev/vitals/',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'Mozilla Docs: Görüntü Formatları',
|
|
65
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const seo: PngAWebpLocaleContent['seo'] = [
|
|
70
|
+
{
|
|
71
|
+
type: 'title',
|
|
72
|
+
text: 'PNG\'den WebP\'ye Dönüştürücü: Web İçin Şeffaflık ve Modern Sıkıştırma',
|
|
73
|
+
level: 2,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'paragraph',
|
|
77
|
+
html: '<strong>PNG</strong>, onlarca yıldır şeffaflığa sahip web görüntüleri için referans format olmuştur — logolar, simgeler, kullanıcı arayüzü öğeleri, dekupe edilmiş arka planlara sahip ürün görüntüleri. Sorunu dosya boyutudur: kaliteyi garanti eden kayıpsız sıkıştırma aynı zamanda belirgin şekilde büyük dosyalar oluşturur. Google\'ın <strong>WebP</strong>\'si bu çelişkiyi çözer: alfa kanalını (şeffaflığı) destekler <em>ve</em> PNG\'den çok daha iyi sıkıştırır; bu da web sitenizde PNG\'den WebP\'ye geçişi hiçbir şeyden ödün vermeyen mükemmel bir optimizasyon haline getirir.',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'title',
|
|
81
|
+
text: 'PNG mi WebP mi? Her format ne zaman kullanılır',
|
|
82
|
+
level: 3,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'Uyumluluk kritik olduğunda <strong>PNG</strong> doğru format olmaya devam eder: Photoshop veya Figma gibi tasarım araçları, baskı iş akışları, eski masaüstü uygulamaları veya WebP desteğinin garanti edilmediği herhangi bir bağlam. Ayrıca, kayıpsız sıkıştırması her pikseli koruduğu için düzenleme süreçlerinde çalışma katmanlarını kaydetmek için ideal formattır. Maliyeti: WebP eşdeğerinden 3-8 kat daha fazla ağırlığa sahip olabilen dosyalar.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'paragraph',
|
|
90
|
+
html: '<strong>WebP</strong>, tüm modern web içerikleri için PNG\'nin doğal halefidir. Chrome, Firefox, Safari ve Edge web tarayıcılarının tamamı bunu yerel olarak destekler. Kayıpsız bir WebP görüntüsü, eşdeğer PNG\'den %26 daha küçüktür; kayıplı modda neredeyse ayırt edilemez görsel kalitede %40\'a kadar daha küçük olabilir. Ve web tasarımı için kritik olan: <strong>WebP, alfa şeffaflığını</strong> görsel bir taviz vermeden tıpkı PNG gibi korur.',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'title',
|
|
94
|
+
text: 'Karşılaştırma: Yerel ve Bulut Dönüştürme',
|
|
95
|
+
level: 3,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'comparative',
|
|
99
|
+
items: [
|
|
100
|
+
{
|
|
101
|
+
title: 'Bulut Dönüştürücüler',
|
|
102
|
+
description: 'Dosyalarınızı uzak bir sunucuya yükleyen araçlar.',
|
|
103
|
+
icon: 'mdi:cloud-upload',
|
|
104
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
105
|
+
points: [
|
|
106
|
+
'Yükleme ve indirmede ağ gecikmesi',
|
|
107
|
+
'Logolarınız ve görüntüleriniz üçüncü taraf sunucularda saklanır',
|
|
108
|
+
'Dosya boyutu sınırları ve günlük dönüştürme kotaları',
|
|
109
|
+
'Rahatsız edici reklamlar ve üçüncü taraf izleyiciler',
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
title: 'Yerel Mimarimiz',
|
|
114
|
+
description: 'Vanilla JS teknolojisini kullanarak doğrudan donanımınızda işleme.',
|
|
115
|
+
icon: 'mdi:laptop-mac',
|
|
116
|
+
highlight: true,
|
|
117
|
+
points: [
|
|
118
|
+
'Anında hız — sıfır ağ gecikmesi',
|
|
119
|
+
'Tam gizlilik — harici olarak gönderilen 0 bayt',
|
|
120
|
+
'MB sınırı veya dosya sayısı kısıtlaması yok',
|
|
121
|
+
'Temiz arayüz, reklam veya izleme yok',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
text: 'Teknik olarak nasıl çalışır',
|
|
129
|
+
level: 3,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'PNG yerel olarak yüklenir ve bellekteki bir <strong>HTML5 Canvas</strong>\'a çözülür. Canvas API\'si orijinal PNG\'deki alfa kanalını korur — tüm şeffaf ve yarı şeffaf pikseller RGBA piksel arabelleğinde sağlam tutulur. Ardından tuval, şeffaflık verilerini değiştirmeden daha kompakt bir dosya oluşturmak için tarayıcının (Google\'ın libwebp tabanlı) WebP codec bileşenini uygulayan <code>toDataURL(\'image/webp\')</code> çağrısı yapılarak dışa aktarılır.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'paragraph',
|
|
137
|
+
html: 'WebP iki sıkıştırma modu kullanır: her pikselin orijinaline tam olarak sadık kalması gereken görüntüler için kayıpsız mod ve küçük farklılıkların algılanamaz olduğu fotoğraflar ve öğeler için kayıplı mod. Kayıpsız mod, PNG\'den %26 daha küçük dosyalar üretir; kayıplı mod, mükemmel görsel kaliteyi korurken PNG\'ye kıyasla %40\'a varan azalmalar elde edebilir.',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
type: 'tip',
|
|
141
|
+
title: 'İpucu: WebP web üzerinde hem PNG\'yi hem de JPG\'yi yener',
|
|
142
|
+
html: 'Kayıpsız moddaki WebP, PNG\'den daha küçüktür. Kayıplı moddaki WebP, JPG\'den daha küçüktür. Bu, WebP\'yi web bağlamında <strong>her ikisinin de yerini alan tek format</strong> yapar. Şeffaf PNG\'lerinizi yüklemeden önce WebP\'ye dönüştürün: Google PageSpeed Insights bunu algılar ve "Modern formatlardaki görseller sunun" denetimlerinde olumlu puan verir.',
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
type: 'title',
|
|
146
|
+
text: 'Kullanım durumları ve uyumluluk',
|
|
147
|
+
level: 3,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'list',
|
|
151
|
+
icon: 'mdi:check-circle',
|
|
152
|
+
items: [
|
|
153
|
+
'Web siteleri ve uygulamalar için şeffaf arka plana sahip logolar ve simgeler.',
|
|
154
|
+
'E-ticaret mağazalarında dekupe arka planlı ürün görselleri.',
|
|
155
|
+
'Alfa şeffaflığına sahip CSS sprite\'ları ve kullanıcı arayüzü öğeleri.',
|
|
156
|
+
'Açılış sayfaları için rasterleştirilmiş çizimler ve vektör grafikleri.',
|
|
157
|
+
'Bloglarda ve haber portallarında şeffaf arka plana sahip makale küçük resimleri.',
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'title',
|
|
162
|
+
text: 'Sonuç',
|
|
163
|
+
level: 3,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: 'paragraph',
|
|
167
|
+
html: 'PNG\'den WebP\'ye geçiş, mevcut en eksiksiz web görüntüsü optimizasyonudur: görsel tasarımınız hakkında hiçbir şeyi değiştirmeden daha hafif dosyalar elde eder, şeffaflığı korur ve Core Web Vitals metriklerini iyileştirir. Bu araç bunu anında, ücretsiz ve tamamen gizli bir şekilde yapar — görüntüleriniz tarayıcınızda işlenir ve asla harici bir sunucuya gitmez.',
|
|
168
|
+
},
|
|
169
|
+
];
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
export const content: PngAWebpLocaleContent = {
|
|
173
|
+
slug,
|
|
174
|
+
title,
|
|
175
|
+
description,
|
|
176
|
+
ui,
|
|
177
|
+
seo,
|
|
178
|
+
faq,
|
|
179
|
+
bibliography,
|
|
180
|
+
howTo,
|
|
181
|
+
schemas: generateSchemas({ title, description, inLanguage: 'tr', faq, howTo }),
|
|
182
|
+
};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
|
+
import type { PngAWebpLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'png-to-webp-converter';
|
|
6
|
+
const title = '在线免费将 PNG 转换为 WebP';
|
|
7
|
+
const description =
|
|
8
|
+
'在浏览器中将 PNG 图像转换为 WebP。文件体积减少高达 40%。保留透明度。无需上传文件。免费且私密。';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: '拖拽 PNG 文件...',
|
|
12
|
+
convertText: '立即将它们转换为 WebP',
|
|
13
|
+
selectFiles: '选择文件',
|
|
14
|
+
processedFiles: '已处理文件',
|
|
15
|
+
downloadAll: '下载全部 (.zip)',
|
|
16
|
+
pending: '等待中',
|
|
17
|
+
bibliographyTitle: '参考文献',
|
|
18
|
+
faqTitle: '常见问题',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: PngAWebpLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: '为什么要将 PNG 转换为 WebP?',
|
|
24
|
+
answer:
|
|
25
|
+
'WebP 在保持相同画质的前提下, 压缩率比 PNG 高出多达 40%, 同时还支持 Alpha 透明度。它是 Google PageSpeed Insights 推荐的格式。',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: '转换过程中会丢失透明度吗?',
|
|
29
|
+
answer:
|
|
30
|
+
'不会。WebP 的技术实现支持 Alpha 通道。原始 PNG 的透明度将完美保留在新的 WebP 文件中。',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: '我的图片会上传到服务器吗?',
|
|
34
|
+
answer:
|
|
35
|
+
'不会。代码完全在您的浏览器(客户端)运行。我们从不查看、记录或保存您转换的图片。',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: PngAWebpLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: '放入您的 PNG',
|
|
42
|
+
text: '将您的大體積 PNG 文件拖入上传区域, 或使用传统的交互式选择器。',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: '通道检测',
|
|
46
|
+
text: '本地渲染引擎将检测像素组成并将其导出为优化后的 WebP 格式。',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: '直接下载',
|
|
50
|
+
text: '您可以单独下载高压缩率的 WebP 文件, 也可以使用 ZIP 打包转换器批量下载。',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: PngAWebpLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'Google: WebP 实现详情',
|
|
57
|
+
url: 'https://developers.google.com/speed/webp/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'W3C: Core Web Vitals 指南',
|
|
61
|
+
url: 'https://web.dev/vitals/',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'Mozilla Docs: 图像格式',
|
|
65
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types',
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const seo: PngAWebpLocaleContent['seo'] = [
|
|
70
|
+
{
|
|
71
|
+
type: 'title',
|
|
72
|
+
text: 'PNG 转 WebP 转换器: 为 Web 设计提供透明度与现代压缩技术',
|
|
73
|
+
level: 2,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'paragraph',
|
|
77
|
+
html: '<strong>PNG</strong> 几十年来一直是带透明度的 Web 图像的标准格式——标志、图标、UI 元素、抠图背景的产品图。其问题在于文件体积: 保证质量的无损压缩也会产生显著的大文件。Google 的 <strong>WebP</strong> 解决了这一矛盾: 它支持 Alpha 通道(透明度) <em>且</em> 压缩率远高于 PNG, 这使得在您的网站上将 PNG 切换为 WebP 成为一种不牺牲任何质量的完美优化。',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'title',
|
|
81
|
+
text: 'PNG 还是 WebP?何时使用各格式',
|
|
82
|
+
level: 3,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: '当兼容性至关重要时, <strong>PNG</strong> 仍然是正确的格式: 例如 Photoshop 或 Figma 等设计工具、打印工作流、旧式桌面应用程序或任何无法保证 WebP 支持的环境。它也是保存编辑流程中工作图层的理想格式, 因为其无损压缩保留了每一个像素。代价是: 文件体积可能是同等 WebP 的 3-8 倍。',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'paragraph',
|
|
90
|
+
html: '<strong>WebP</strong> 是所有现代 Web 内容中 PNG 的自然替代品。Chrome、Firefox、Safari 和 Edge 都原生支持它。无损 WebP 图像比同等 PNG 小 26%;在有损模式下, 它的体积可缩小高达 40%, 且视觉画质几乎无法区分。对于 Web 设计来说至关重要的一点是: <strong>WebP 像 PNG 一样保留 Alpha 透明度</strong>, 没有任何视觉权衡。',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'title',
|
|
94
|
+
text: '对比: 本地转换 vs 云端转换',
|
|
95
|
+
level: 3,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'comparative',
|
|
99
|
+
items: [
|
|
100
|
+
{
|
|
101
|
+
title: '云端转换器',
|
|
102
|
+
description: '将您的文件上传到远程服务器的工具。',
|
|
103
|
+
icon: 'mdi:cloud-upload',
|
|
104
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
105
|
+
points: [
|
|
106
|
+
'上传和下载时的网络延迟',
|
|
107
|
+
'您的徽标和图像存储在第三方服务器上',
|
|
108
|
+
'文件大小限制和每日转换配额',
|
|
109
|
+
'干扰性广告和第三方追踪器',
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
title: '我们的本地架构',
|
|
114
|
+
description: '使用 Vanilla JS 技术直接在您的硬件上进行处理。',
|
|
115
|
+
icon: 'mdi:laptop-mac',
|
|
116
|
+
highlight: true,
|
|
117
|
+
points: [
|
|
118
|
+
'即时处理——零网络延迟',
|
|
119
|
+
'完全私密——数据向外发送量为 0 字节',
|
|
120
|
+
'无 MB 限制或文件数量限制',
|
|
121
|
+
'界面简洁, 无广告或追踪',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
text: '技术原理',
|
|
129
|
+
level: 3,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'PNG 文件被本地加载并解码到内存中的 <strong>HTML5 Canvas</strong> 中。Canvas API 保留了原始 PNG 的 Alpha 通道——所有透明和半透明像素在 RGBA 像素缓冲区中保持原样。然后通过调用 <code>toDataURL(\'image/webp\')</code> 导出画布, 该方法应用浏览器的 WebP 编解码器 (基于 Google 的 libwebp) 来生成更紧凑的文件, 而不会改变透明度数据。',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'paragraph',
|
|
137
|
+
html: 'WebP 使用两种压缩模式: 无损模式适用于每一个像素都必须精确还原原始图像的情况;有损模式适用于照片和细微差异无法察觉的元素。无损模式产生的文件比 PNG 小 26%;有损模式在保持极佳视觉质量的同时, 体积可比 PNG 减少高达 40%。',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
type: 'tip',
|
|
141
|
+
title: '提示: 在 Web 端, WebP 同时超越了 PNG 和 JPG',
|
|
142
|
+
html: '无损模式下的 WebP 比 PNG 小。有损模式下的 WebP 比 JPG 小。这使得 WebP 成为 Web 环境下 <strong>唯一能够同时取代两者的格式</strong>。在上传之前将您的透明 PNG 转换为 WebP: Google PageSpeed Insights 会检测到这一点, 并在“以现代格式提供图像”审计中给出正面评分。',
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
type: 'title',
|
|
146
|
+
text: '应用场景与兼容性',
|
|
147
|
+
level: 3,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'list',
|
|
151
|
+
icon: 'mdi:check-circle',
|
|
152
|
+
items: [
|
|
153
|
+
'网站和应用中带透明背景的标志和图标。',
|
|
154
|
+
'电子商务商店中带抠图背景的产品图片。',
|
|
155
|
+
'带 Alpha 透明度的 CSS 精灵图和 UI 元素。',
|
|
156
|
+
'用于落地页的栅格化插图和矢量图形。',
|
|
157
|
+
'博客和新闻门户中带透明背景的文章缩略图。',
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'title',
|
|
162
|
+
text: '总结',
|
|
163
|
+
level: 3,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: 'paragraph',
|
|
167
|
+
html: '从 PNG 切换到 WebP 是目前最全面的 Web 图像优化手段: 您可以获得更轻量的文件、保留透明度, 并在不改变视觉设计的前提下改善 Core Web Vitals 指标。此工具由浏览器本地处理, 不会向任何服务器传输图片, 过程即时、免费且完全私密。',
|
|
168
|
+
},
|
|
169
|
+
];
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
export const content: PngAWebpLocaleContent = {
|
|
173
|
+
slug,
|
|
174
|
+
title,
|
|
175
|
+
description,
|
|
176
|
+
ui,
|
|
177
|
+
seo,
|
|
178
|
+
faq,
|
|
179
|
+
bibliography,
|
|
180
|
+
howTo,
|
|
181
|
+
schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
|
|
182
|
+
};
|
|
@@ -16,6 +16,18 @@ export const pngAWebp: ConvertersToolEntry<ImageConverterUI> = {
|
|
|
16
16
|
es: () => import('./i18n/es').then((m) => m.content),
|
|
17
17
|
en: () => import('./i18n/en').then((m) => m.content),
|
|
18
18
|
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
19
|
+
de: () => import('./i18n/de').then((m) => m.content),
|
|
20
|
+
id: () => import('./i18n/id').then((m) => m.content),
|
|
21
|
+
it: () => import('./i18n/it').then((m) => m.content),
|
|
22
|
+
ja: () => import('./i18n/ja').then((m) => m.content),
|
|
23
|
+
ko: () => import('./i18n/ko').then((m) => m.content),
|
|
24
|
+
nl: () => import('./i18n/nl').then((m) => m.content),
|
|
25
|
+
pl: () => import('./i18n/pl').then((m) => m.content),
|
|
26
|
+
pt: () => import('./i18n/pt').then((m) => m.content),
|
|
27
|
+
ru: () => import('./i18n/ru').then((m) => m.content),
|
|
28
|
+
sv: () => import('./i18n/sv').then((m) => m.content),
|
|
29
|
+
tr: () => import('./i18n/tr').then((m) => m.content),
|
|
30
|
+
zh: () => import('./i18n/zh').then((m) => m.content),
|
|
19
31
|
},
|
|
20
32
|
};
|
|
21
33
|
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
|
+
import type { SvgAJpgLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'svg-zu-jpg-konverter';
|
|
6
|
+
const title = 'SVG zu JPG Konverter Online und Kostenlos';
|
|
7
|
+
const description =
|
|
8
|
+
'Konvertieren Sie SVG-Vektordateien in Ihrem Browser in JPG. 2x hochauflösendes Rendering. Keine Dateiuploads. Kostenlos und 100 % privat.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'SVG-Dateien hierher ziehen...',
|
|
12
|
+
convertText: 'Um sie sofort in JPG zu konvertieren',
|
|
13
|
+
selectFiles: 'Dateien auswählen',
|
|
14
|
+
processedFiles: 'Verarbeitete Dateien',
|
|
15
|
+
downloadAll: 'Alles herunterladen (.zip)',
|
|
16
|
+
pending: 'Ausstehend',
|
|
17
|
+
bibliographyTitle: 'Literaturhinweise',
|
|
18
|
+
faqTitle: 'Häufig gestellte Fragen',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: SvgAJpgLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Warum SVG in JPG konvertieren?',
|
|
24
|
+
answer:
|
|
25
|
+
'JPG bietet maximale Kompatibilität auf allen Artern von Geräten. Die Konvertierung von SVG in JPG ist der beste Weg, um sicherzustellen, dass jeder Ihr Design ohne Darstellungsprobleme betrachten kann.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Was passiert mit der SVG-Transparenz?',
|
|
29
|
+
answer:
|
|
30
|
+
'Da JPG keine Transparenz unterstützt, wird Ihrer Vektorkomposition bei der Konvertierung automatisch ein opaker weißer Hintergrund hinzugefügt.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Welche Auflösung hat das resultierende JPG?',
|
|
34
|
+
answer:
|
|
35
|
+
'Das Tool rendert die SVG im doppelten Maßstab (2x), um eine hohe Auflösung zu garantieren, die für Retina-Bildschirme und den professionellen Einsatz geeignet ist.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: SvgAJpgLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Vektordateien einfügen',
|
|
42
|
+
text: 'Ziehen Sie Ihre SVG-Dateien in den oberen Bereich, um die Exportliste vorzubereiten.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Rasterung in JPG',
|
|
46
|
+
text: 'Das Tool wandelt die Vektoren in hochauflösende Pixel um und generiert sofort Ihr JPG.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Ergebnisse herunterladen',
|
|
50
|
+
text: 'Laden Sie Ihre JPG-Dateien einzeln oder als ZIP-Paket herunter.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: SvgAJpgLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'W3C SVG Spezifikation',
|
|
57
|
+
url: 'https://www.w3.org/TR/SVG/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'JPEG Standard-Übersicht',
|
|
61
|
+
url: 'https://jpeg.org/jpeg/',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: SvgAJpgLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'SVG zu JPG Konverter: Bringen Sie Ihre Vektoren auf jede Plattform',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: 'Das <strong>SVG</strong>-Format ist die Muttersprache des modernen Webs: leichtgewichtig, skalierbar, editierbar. Doch es gibt ganze Plattformen, die Vektoren einfach nicht verstehen. Soziale Medien, E-Mail-Clients, Word-Dokumente, Druckanwendungen und die überwiegende Mehrheit der Software in der realen Welt arbeiten mit gerasterten Bildern. <strong>JPG</strong> ist der universelle gemeinsame Nenner: überall akzeptiert, ohne Ausnahmen, ohne Plugins und ohne dass zusätzliche Konvertierungen erforderlich sind.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'SVG vs JPG: Wenn der Vektor zum Foto werden muss',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'SVG speichert das Bild als mathematische Anweisungen. Diese Vektornatur macht es perfekt für das Web, aber unsichtbar für die analoge Welt und ältere Software. Eine per E-Mail gesendete SVG-Datei kann im Client des Empfängers als unverständlicher XML-Text erscheinen. Eine an ein Word-Dokument angehängte SVG wird in älteren Office-Versionen möglicherweise gar nicht gerendert.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'JPG wandelt jedes Bild in eine Pixelmatrix um, deren Farbinformationen algorithmisch komprimiert werden. Da JPG keinen Alpha-Kanal unterstützt, verschmilzt der Konverter den Hintergrund automatisch mit solidem Weiß. Im Gegenzug erhalten Sie eine Datei, die auf <em>jedem Gerät auf dem Planeten</em> geöffnet werden kann: alte Mobiltelefone, Drucker, Smart-TVs, Bearbeitungs-Apps von vor zwanzig Jahren. Es ist das Format des kleinsten gemeinsamen Nenners und in vielen Kontexten das wertvollste.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'title',
|
|
90
|
+
text: 'Vergleich: Lokale vs Cloud Konvertierung',
|
|
91
|
+
level: 3,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'comparative',
|
|
95
|
+
items: [
|
|
96
|
+
{
|
|
97
|
+
title: 'Cloud Konverter',
|
|
98
|
+
description: 'Tools, die Ihre Dateien auf einen Remote-Server hochladen.',
|
|
99
|
+
icon: 'mdi:cloud-upload',
|
|
100
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
101
|
+
points: [
|
|
102
|
+
'Ihr SVG-Code (mit proprietären Designdaten) gelangt auf externe Server',
|
|
103
|
+
'Inkonsistentes Rendering von Schriften und Gradienten',
|
|
104
|
+
'Internetverbindung für jede Konvertierung erforderlich',
|
|
105
|
+
'JPG-Ausgabequalität nicht immer konfigurierbar',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Unsere lokale Architektur',
|
|
110
|
+
description: 'Direkte Verarbeitung auf Ihrer Hardware mittels Vanilla JS-Technologie.',
|
|
111
|
+
icon: 'mdi:laptop-mac',
|
|
112
|
+
highlight: true,
|
|
113
|
+
points: [
|
|
114
|
+
'Kein einziges Byte Ihrer SVG verlässt den Browser',
|
|
115
|
+
'Originalgetreues Rendering durch die native Browser-Engine',
|
|
116
|
+
'2x hochauflösende JPG für maximale Schärfe',
|
|
117
|
+
'Weißer Hintergrund wird gemäß JPG-Standard automatisch angewendet',
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: 'Wie es technisch funktioniert',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'paragraph',
|
|
129
|
+
html: 'Die SVG-Datei wird in ein Browser <strong>Image</strong>-Element geladen, das seine eigene Vektor-Rendering-Engine zur Interpretation des XML nutzt. Das visuelle Ergebnis wird auf ein <strong>HTML5 Canvas</strong> gezeichnet, das zuvor mit Weiß gefüllt wurde (erforderlich, da JPG keine Transparenz unterstützt), und zwar im doppelten Maßstab, um die Ausgabeauflösung zu maximieren.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Die Methode <code>toDataURL(\'image/jpeg\', 0.92)</code> wandelt die Canvas-Pixel in eine hochwertige JPG-Datei um. SVG-Farben können aufgrund der Farbraumkonvertierung bei der JPEG-Komprimierung leichte Abweichungen erfahren. Es ist daher ratsam, das Ergebnis vor der Verwendung in professionellen Druckaufträgen, bei denen chromatische Treue entscheidend ist, zu prüfen.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Tipp für den Druckeinsatz',
|
|
138
|
+
html: 'SVG-Hintergründe und Gradienten können in JPG aufgrund von Farbprofil-Unterschieden bei der JPEG-Komprimierung leicht anders aussehen. Prüfen Sie das Ergebnis immer, bevor Sie es an einen Drucker senden oder in gedruckten Marketingmaterialien verwenden, bei denen es auf exakte Markenfarbtreue ankommt.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Anwendungsfälle und Kompatibilität',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'list',
|
|
147
|
+
icon: 'mdi:check-circle',
|
|
148
|
+
items: [
|
|
149
|
+
'Teilen von SVG-Logos und Illustrationen auf Facebook, Twitter oder LinkedIn.',
|
|
150
|
+
'Anhängen von Vektorgrafiken in E-Mails über Outlook oder Gmail.',
|
|
151
|
+
'Einfügen von SVG-Designs in Word-Dokumente, Excel oder Präsentationen.',
|
|
152
|
+
'Veröffentlichen von Produktbildern in Online-Shops, die kein SVG unterstützen.',
|
|
153
|
+
'Vorbereiten von Dateien für Print-on-Demand-Dienste.',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Fazit',
|
|
159
|
+
level: 3,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'Die reale Welt spricht immer noch in Pixeln. Dieses Tool übersetzt Ihre SVG-Vektoren in Sekundenschnelle in die universelle Sprache von JPG – mit hochauflösendem Rendering und ohne dass Ihre proprietären Designs jemals Ihren Browser verlassen.',
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
export const content: SvgAJpgLocaleContent = {
|
|
169
|
+
slug,
|
|
170
|
+
title,
|
|
171
|
+
description,
|
|
172
|
+
ui,
|
|
173
|
+
seo,
|
|
174
|
+
faq,
|
|
175
|
+
bibliography,
|
|
176
|
+
howTo,
|
|
177
|
+
schemas: generateSchemas({ title, description, inLanguage: 'de', faq, howTo }),
|
|
178
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
1
|
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
3
|
import type { SvgAJpgLocaleContent } from '../index';
|
|
4
4
|
|
|
5
5
|
const slug = 'svg-to-jpg-converter';
|
|
@@ -164,17 +164,6 @@ const seo: SvgAJpgLocaleContent['seo'] = [
|
|
|
164
164
|
},
|
|
165
165
|
];
|
|
166
166
|
|
|
167
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
168
|
-
'@context': 'https://schema.org',
|
|
169
|
-
'@type': 'SoftwareApplication',
|
|
170
|
-
name: title,
|
|
171
|
-
description,
|
|
172
|
-
applicationCategory: 'UtilitiesApplication',
|
|
173
|
-
operatingSystem: 'Web',
|
|
174
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
175
|
-
inLanguage: 'en',
|
|
176
|
-
};
|
|
177
|
-
|
|
178
167
|
export const content: SvgAJpgLocaleContent = {
|
|
179
168
|
slug,
|
|
180
169
|
title,
|
|
@@ -184,5 +173,11 @@ export const content: SvgAJpgLocaleContent = {
|
|
|
184
173
|
faq,
|
|
185
174
|
bibliography,
|
|
186
175
|
howTo,
|
|
187
|
-
schemas:
|
|
176
|
+
schemas: generateSchemas({
|
|
177
|
+
title,
|
|
178
|
+
description,
|
|
179
|
+
inLanguage: 'en',
|
|
180
|
+
faq,
|
|
181
|
+
howTo,
|
|
182
|
+
}),
|
|
188
183
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
1
|
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
3
|
import type { SvgAJpgLocaleContent } from '../index';
|
|
4
4
|
|
|
5
5
|
const slug = 'convertidor-svg-a-jpg';
|
|
@@ -164,17 +164,6 @@ const seo: SvgAJpgLocaleContent['seo'] = [
|
|
|
164
164
|
},
|
|
165
165
|
];
|
|
166
166
|
|
|
167
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
168
|
-
'@context': 'https://schema.org',
|
|
169
|
-
'@type': 'SoftwareApplication',
|
|
170
|
-
name: title,
|
|
171
|
-
description,
|
|
172
|
-
applicationCategory: 'UtilitiesApplication',
|
|
173
|
-
operatingSystem: 'Web',
|
|
174
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
175
|
-
inLanguage: 'es',
|
|
176
|
-
};
|
|
177
|
-
|
|
178
167
|
export const content: SvgAJpgLocaleContent = {
|
|
179
168
|
slug,
|
|
180
169
|
title,
|
|
@@ -184,5 +173,11 @@ export const content: SvgAJpgLocaleContent = {
|
|
|
184
173
|
faq,
|
|
185
174
|
bibliography,
|
|
186
175
|
howTo,
|
|
187
|
-
schemas:
|
|
176
|
+
schemas: generateSchemas({
|
|
177
|
+
title,
|
|
178
|
+
description,
|
|
179
|
+
inLanguage: 'es',
|
|
180
|
+
faq,
|
|
181
|
+
howTo,
|
|
182
|
+
}),
|
|
188
183
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
1
|
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
3
|
import type { SvgAJpgLocaleContent } from '../index';
|
|
4
4
|
|
|
5
5
|
const slug = 'convertisseur-svg-en-jpg';
|
|
@@ -164,16 +164,6 @@ const seo: SvgAJpgLocaleContent['seo'] = [
|
|
|
164
164
|
},
|
|
165
165
|
];
|
|
166
166
|
|
|
167
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
168
|
-
'@context': 'https://schema.org',
|
|
169
|
-
'@type': 'SoftwareApplication',
|
|
170
|
-
name: title,
|
|
171
|
-
description,
|
|
172
|
-
applicationCategory: 'UtilitiesApplication',
|
|
173
|
-
operatingSystem: 'Web',
|
|
174
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
175
|
-
inLanguage: 'fr',
|
|
176
|
-
};
|
|
177
167
|
|
|
178
168
|
export const content: SvgAJpgLocaleContent = {
|
|
179
169
|
slug,
|
|
@@ -184,5 +174,5 @@ export const content: SvgAJpgLocaleContent = {
|
|
|
184
174
|
faq,
|
|
185
175
|
bibliography,
|
|
186
176
|
howTo,
|
|
187
|
-
schemas:
|
|
177
|
+
schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
|
|
188
178
|
};
|