@jjlmoya/utils-converters 1.6.0 → 1.8.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/ImageConverter.astro +2 -1
- 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/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,178 @@
|
|
|
1
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
|
+
import type { GifAWebpLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'gif-den-webp-ye-donusturucu';
|
|
6
|
+
const title = 'GIF\'i Statik WebP\'ye Online Dönüştür';
|
|
7
|
+
const description =
|
|
8
|
+
'Hareketli GIF\'leri statik WebP\'ye dönüştürün. Şeffaflığı korur. Sunucu yok. Tarayıcınızda yerel olarak işlenir. Ücretsiz.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'GIF dosyalarını sürükleyin...',
|
|
12
|
+
convertText: 'Anında WebP\'ye dönüştürmek için',
|
|
13
|
+
selectFiles: 'Dosyaları seçin',
|
|
14
|
+
processedFiles: 'İşlenen dosyalar',
|
|
15
|
+
downloadAll: 'Tümünü indir (.zip)',
|
|
16
|
+
pending: 'Bekliyor',
|
|
17
|
+
bibliographyTitle: 'Bibliyografik Referanslar',
|
|
18
|
+
faqTitle: 'Sıkça Sorulan Sorular',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: GifAWebpLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Neden hareketli bir dosyayı modern statik WebP formatına dondurmalıyım?',
|
|
24
|
+
answer:
|
|
25
|
+
'WebP, Google\'ın sıkıştırma standardıdır; oldukça hafiftir ve şeffaflığı temiz bir şekilde korur. GIF\'ten WebP\'ye geçmek, ağır animasyonu ortadan kaldırır ve web hızında muazzam bir kazanç sağlar.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Orijinal avatar şeffaf kalacak mı?',
|
|
29
|
+
answer:
|
|
30
|
+
'Evet, JPEG\'in aksine WebP kapsayıcısı karmaşık Alpha kanalına saygı duyar. Tüm silüetleri orijinalindeki gibi mükemmel kalacaktır.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Dosyalar nereye yüklenecek?',
|
|
34
|
+
answer:
|
|
35
|
+
'Yükleme yok. İşleme, bilgisayarınızdaki tarayıcının Javascript\'i tarafından tamamen yerel olarak gerçekleştirilir, uzaktan gönderim sıfırdır.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: GifAWebpLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Hareketli bir çığ başlatın',
|
|
42
|
+
text: 'Düzinelerce memeyi uzaktan bağlantı olmadan sınırlı bölgeye taşıyın ve bırakın.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Büyük görünmez değişime tanık olun',
|
|
46
|
+
text: 'Yerel canvas kod çözücü çıktıyı oluştururken milisaniye başına değişen ilerleme göstergesini izleyin.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Temiz sonuç arsenalini kaydedin',
|
|
50
|
+
text: 'Çıkarılan dosyaları tek tek alın veya her şeyi paketlemek için Zip İndir düğmesine basın.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: GifAWebpLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'GIF89a Spesifikasyonu',
|
|
57
|
+
url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Google WebP Dokümantasyonu',
|
|
61
|
+
url: 'https://developers.google.com/speed/webp',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: GifAWebpLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'GIF to WebP Dönüştürücü: Ağır Animasyonlar İçin Modern Alternatif',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: 'Hareketli GIF\'ler modern web içeriğinin dinozorlarıdır: Orantısız bant genişliği tüketirler, her sayfanın PageSpeed değerini düşürürler ve binlerce web sitesindeki toplam ağırlığın önemli bir yüzdesinden sorumludurlar. Tipik bir 5 MB hareketli GIF, aynı görsel kalite ile 1 MB\'ın altında bir WebP animasyonuna dönüşebilir. WebP, Google tarafından web\'de GIF\'in yerini alması için özel olarak tasarlanmış modern bir pillettir.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'GIF vs WebP: Web\'in geçmişi ve bugünü arasındaki uçurum',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'GIF, aslen animasyonlar için tasarlanmamış 1987 yapımı bir formattır; bu özellik daha sonra bir "hack" olarak eklenmiştir. 256 renk paleti, verimsiz sıkıştırması ve sesi işleyememesi onu eski bir format haline getirir. Google tarafından 2010 yılında geliştirilen WebP, hem kayıplı hem de kayıpsız üstün sıkıştırma, yerel animasyon desteği ve tam alfa kanalı sunar.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'Bir web geliştiricisi için, sayfalardaki GIF\'leri WebP ile değiştirmek, Google PageSpeed puanında 10 ila 30 puanlık bir iyileşme anlamına gelebilir. Daha az sayfa ağırlığı, daha iyi Core Web Vitals, daha iyi SEO sıralamaları ve sunucularda daha düşük bant genişliği maliyetleri demektir. Bu sadece estetik bir iyileştirme değil, teknik bir mimari karardır.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'title',
|
|
90
|
+
text: 'Mimari Karşılaştırması: Yerel vs Bulut',
|
|
91
|
+
level: 3,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'comparative',
|
|
95
|
+
items: [
|
|
96
|
+
{
|
|
97
|
+
title: 'Bulut Dönüştürücüler',
|
|
98
|
+
description: 'GIF\'lerinizi uzak sunucularda işleyen platformlar.',
|
|
99
|
+
icon: 'mdi:cloud-upload',
|
|
100
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
101
|
+
points: [
|
|
102
|
+
'Animasyonlarınız internet üzerinden üçüncü taraf sunuculara seyahat eder',
|
|
103
|
+
'Yükleme ve indirme sırasında ağ gecikmesi nedeniyle bekleme süresi',
|
|
104
|
+
'Boyut sınırları (büyük GIF\'ler genellikle reddedilir)',
|
|
105
|
+
'Dosya saklama ve analiz riski',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Bizim Yerel Mimarimiz',
|
|
110
|
+
description: 'Vanilla JS teknolojisini kullanarak doğrudan donanımınızda işleme.',
|
|
111
|
+
icon: 'mdi:laptop-mac',
|
|
112
|
+
highlight: true,
|
|
113
|
+
points: [
|
|
114
|
+
'GIF asla cihazınızdan ayrılmaz',
|
|
115
|
+
'Ağ bekleyişi olmadan anında dönüşüm',
|
|
116
|
+
'Boyut sınırı yok: Her ağırlıktaki GIF\'leri işleyin',
|
|
117
|
+
'Tam gizlilik: Harici olarak 0 bayt gönderilir',
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: 'Yerel GIF to WebP dönüşümü nasıl çalışır?',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'paragraph',
|
|
129
|
+
html: 'Yerel dönüşüm HTML5 Canvas API\'sini kullanır. GIF, yerel bir tarayıcı Image öğesi olarak yüklenir. Bir tuvale çizilerek, grafik motoru tüm şeffaflık bilgileriyle birlikte ilk animasyon karesini yakalar. <code>toDataURL(\'image/webp\')</code> yöntemi, kareyi doğrudan RAM\'de WebP olarak dışa aktarır.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'WebP tam alfa kanalını destekler, bu nedenle GIF şeffaflıkları, bir arka plan eklemeye gerek kalmadan sonuçtaki WebP\'de korunur. WebP sıkıştırma algoritmaları GIF veya PNG\'den önemli ölçüde daha verimlidir, bu da nihai çıktının dosya boyutundaki radikal azalmayı açıklar.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Garantili PageSpeed iyileştirmesi',
|
|
138
|
+
html: '5 MB\'lık hareketli bir GIF, 1 MB\'ın altında bir WebP olabilir. Web sitenizin sayfalarında GIF\'ler varsa, bunları WebP ile değiştirmek Largest Contentful Paint (LCP) ve Total Blocking Time (TBT) değerlerinizi anında iyileştirerek SEO sıralamalarını doğrudan etkileyebilir.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Sonuç WebP\'nin kullanım durumları ve uyumluluğu',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'list',
|
|
147
|
+
icon: 'mdi:check-circle',
|
|
148
|
+
items: [
|
|
149
|
+
'PageSpeed puanlarını artırmak için web sayfalarındaki GIF\'lerin değiştirilmesi.',
|
|
150
|
+
'Discord, Slack ve modern platformlar için optimize edilmiş avatarlar ve çıkartmalar.',
|
|
151
|
+
'Dijital pazarlama kampanyaları için bannerlar ve görseller.',
|
|
152
|
+
'Progresif web uygulamalarındaki (PWA) animasyonlar.',
|
|
153
|
+
'Chrome, Edge, Firefox, Safari 14+ ve tüm modern tarayıcılarla uyumludur.',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Sonuç: GIF\'lerinizi 21. yüzyıla taşıyın',
|
|
159
|
+
level: 3,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'Web sitenizdeki her GIF, kaçırılmış bir optimizasyon fırsatıdır. Aracımız GIF\'leri anında, özel olarak ve sınırsız bir şekilde doğrudan tarayıcınızda WebP\'ye dönüştürür. Sonuç: 5 kata kadar daha küçük dosyalar, mükemmel şeffaflık ve tüm modern tarayıcılarla uyumluluk.',
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
export const content: GifAWebpLocaleContent = {
|
|
169
|
+
slug,
|
|
170
|
+
title,
|
|
171
|
+
description,
|
|
172
|
+
ui,
|
|
173
|
+
seo,
|
|
174
|
+
faq,
|
|
175
|
+
bibliography,
|
|
176
|
+
howTo,
|
|
177
|
+
schemas: generateSchemas({ title, description, inLanguage: 'tr', faq, howTo }),
|
|
178
|
+
};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
|
+
import type { GifAWebpLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'convert-gif-to-webp';
|
|
6
|
+
const title = '在线将 GIF 转换为静态 WebP';
|
|
7
|
+
const description =
|
|
8
|
+
'将动态 GIF 转换为静态 WebP。保留透明度。无需服务器。在浏览器中本地处理。免费。';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: '拖入 GIF 文件...',
|
|
12
|
+
convertText: '立即将其转换为 WebP',
|
|
13
|
+
selectFiles: '选择文件',
|
|
14
|
+
processedFiles: '已处理文件',
|
|
15
|
+
downloadAll: '下载全部 (.zip)',
|
|
16
|
+
pending: '等待中',
|
|
17
|
+
bibliographyTitle: '参考文献',
|
|
18
|
+
faqTitle: '常见问题',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: GifAWebpLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: '为什么要将动态文件切换为现代静态 WebP 格式?',
|
|
24
|
+
answer:
|
|
25
|
+
'WebP 是 Google 的压缩标准;它非常轻量且能干净地保留透明度。从 GIF 切换到 WebP 可以消除沉重的动画,并获得巨大的网页速度提升。',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: '原始头像会保持透明吗?',
|
|
29
|
+
answer:
|
|
30
|
+
'是的,与 JPEG 不同,WebP 容器遵循复杂的 Alpha 通道。所有的轮廓都将像原生一样保持完美。',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: '文件会上传到哪里?',
|
|
34
|
+
answer:
|
|
35
|
+
'没有上传。处理完全由您 PC 上的浏览器 Javascript 执行,零远程发送。',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: GifAWebpLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: '启动动态文件处理',
|
|
42
|
+
text: '在没有远程连接的情况下,将数十个表情包移动并放入划定区域。',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: '见证伟大的隐形变化',
|
|
46
|
+
text: '当本地 Canvas 解码器生成输出时,观察每毫秒变化的进度指示器。',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: '保存您干净的结果集',
|
|
50
|
+
text: '单独获取提取的文件,或按“下载 Zip”打包所有内容。',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: GifAWebpLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'GIF89a 规范',
|
|
57
|
+
url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Google WebP 文档',
|
|
61
|
+
url: 'https://developers.google.com/speed/webp',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: GifAWebpLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'GIF 转 WebP 转换器:沉重动画的现代替代方案',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: '动态 GIF 是现代网络内容的恐龙:它们消耗不成比例的带宽,降低任何页面的 PageSpeed,并且在成千上万个网站的总重量中占有相当大的比例。一个典型的 5 MB 动态 GIF 在保持相同视觉质量的情况下可以变成 1 MB 以下的 WebP 动画。WebP 是 Google 专门为在网络上取代 GIF 而设计的现代继任者。',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'GIF vs WebP:网络过去与现状之间的鸿沟',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'GIF 是一种 1987 年的格式,最初并非为动画设计——该功能是后来作为一种“黑客”手段加入的。它的 256 色调色板、低效率的压缩以及无法处理音频,使其成为一种过时的格式。WebP 由 Google 在 2010 年开发,提供卓越的有损和无损压缩、原生动画支持以及完整的 Alpha 通道。',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: '对于 Web 开发人员来说,在页面上用 WebP 取代 GIF 可能意味着 Google PageSpeed 分数提高 10 到 30 分。更轻的页面重量意味着更好的 Core Web Vitals、更好的 SEO 排名以及更低的服务器带宽成本。这不仅仅是美学上的提升——它是一项技术架构决策。',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'title',
|
|
90
|
+
text: '架构比较:本地 vs 云端',
|
|
91
|
+
level: 3,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'comparative',
|
|
95
|
+
items: [
|
|
96
|
+
{
|
|
97
|
+
title: '云端转换器',
|
|
98
|
+
description: '在远程服务器上处理您的 GIF 的平台。',
|
|
99
|
+
icon: 'mdi:cloud-upload',
|
|
100
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
101
|
+
points: [
|
|
102
|
+
'您的动画通过互联网传输到第三方服务器',
|
|
103
|
+
'由于上传和下载时的网络延迟造成的等待时间',
|
|
104
|
+
'大小限制(大的 GIF 经常被拒绝)',
|
|
105
|
+
'文件保留和分析的风险',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: '我们的本地架构',
|
|
110
|
+
description: '使用 Vanilla JS 技术直接在您的硬件上进行处理。',
|
|
111
|
+
icon: 'mdi:laptop-mac',
|
|
112
|
+
highlight: true,
|
|
113
|
+
points: [
|
|
114
|
+
'GIF 永远不会离开您的设备',
|
|
115
|
+
'即时转换,无需网络等待',
|
|
116
|
+
'无大小限制:处理任何重量的 GIF',
|
|
117
|
+
'绝对隐私:0 字节向外发送',
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: '本地 GIF 转 WebP 转换的工作原理',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'paragraph',
|
|
129
|
+
html: '本地转换使用 HTML5 Canvas API。GIF 被加载为原生的浏览器 Image 元素。通过将其绘制到画布上,图形引擎会捕捉包含所有透明度信息的第一帧动画。<code>toDataURL(\'image/webp\')</code> 方法直接在 RAM 中将该帧导出为 WebP。',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'WebP 支持完整的 Alpha 通道,因此 GIF 的透明度保留在生成的 WebP 中,无需添加背景。WebP 压缩算法的效率明显高于 GIF 或 PNG,这解释了最终输出文件大小的大幅降低。',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: '保证网页速度提升',
|
|
138
|
+
html: '一个 5 MB 的动态 GIF 可以变成 1 MB 以下的 WebP。如果您的网站页面上有 GIF,用 WebP 替换它们可以立即改善您的 Largest Contentful Paint (LCP) 和 Total Blocking Time (TBT),直接影响 SEO 排名。',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: '生成的 WebP 的使用案例和兼容性',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'list',
|
|
147
|
+
icon: 'mdi:check-circle',
|
|
148
|
+
items: [
|
|
149
|
+
'替换网页上的 GIF 以提高 PageSpeed 分数。',
|
|
150
|
+
'为 Discord、Slack 和现代平台优化的头像和贴纸。',
|
|
151
|
+
'用于数字营销活动的横幅和视觉效果。',
|
|
152
|
+
'渐进式 Web 应用程序 (PWA) 中的动画。',
|
|
153
|
+
'兼容 Chrome、Edge、Firefox、Safari 14+ 以及所有现代浏览器。',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: '结论:将您的 GIF 迁移到 21 世纪',
|
|
159
|
+
level: 3,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: '您网站上的每一个 GIF 都是一次错失的优化机会。我们的工具直接在您的浏览器中即时、私密且无限制地将 GIF 转换为 WebP。结果:文件缩小高达 5 倍、完美的透明度,并与所有现代浏览器兼容。',
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
export const content: GifAWebpLocaleContent = {
|
|
169
|
+
slug,
|
|
170
|
+
title,
|
|
171
|
+
description,
|
|
172
|
+
ui,
|
|
173
|
+
seo,
|
|
174
|
+
faq,
|
|
175
|
+
bibliography,
|
|
176
|
+
howTo,
|
|
177
|
+
schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
|
|
178
|
+
};
|
|
@@ -16,6 +16,18 @@ export const gifAWebp: 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,168 @@
|
|
|
1
|
+
import type { ImagenBase64LocaleContent } from '../index';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
|
+
import type { ImageToBase64UI } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'bild-zu-base64-konverter';
|
|
6
|
+
const title = 'Bild zu Base64 Konverter Online';
|
|
7
|
+
const description =
|
|
8
|
+
'Konvertieren Sie jedes Bild direkt in Ihrem Browser in Base64-Code und Data URI. Keine Dateiuploads. Kostenlos, privat und sofort.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageToBase64UI = {
|
|
11
|
+
dragTitle: 'Ziehen Sie Ihr Bild hierher',
|
|
12
|
+
dragSubtext: 'oder klicken Sie, um Ihre Dateien zu durchsuchen',
|
|
13
|
+
formatBadge: 'Unterstützt JPG, PNG, WEBP, SVG, GIF',
|
|
14
|
+
dataUriLabel: 'Data URI (Bereit für CSS / HTML src="")',
|
|
15
|
+
base64Label: 'Nur Base64 (Reiner kodierter Text)',
|
|
16
|
+
copyBtn: 'Kopieren',
|
|
17
|
+
dataUriPlaceholder: 'Laden Sie ein Bild hoch, um den Data-URI-Code zu sehen...',
|
|
18
|
+
base64Placeholder: 'Laden Sie ein Bild hoch, um den reinen Base64-Code zu sehen...',
|
|
19
|
+
toastMessage: 'Code in die Zwischenablage kopiert!',
|
|
20
|
+
invalidImageAlert: 'Bitte laden Sie eine gültige Bilddatei hoch.',
|
|
21
|
+
bibliographyTitle: 'Literaturhinweise',
|
|
22
|
+
faqTitle: 'Häufig gestellte Fragen',
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const faq: ImagenBase64LocaleContent['faq'] = [
|
|
26
|
+
{
|
|
27
|
+
question: 'Was ist Base64 und wofür wird es in der Webentwicklung verwendet?',
|
|
28
|
+
answer:
|
|
29
|
+
'Base64 ist ein Kodierungssystem, das Binärdaten in eine ASCII-Textzeichenfolge umwandelt. In der Webentwicklung wird es verwendet, um Bilder über Data URIs direkt in HTML- oder CSS-Dateien einzubetten, wodurch die Anzahl der HTTP-Anfragen an den Server reduziert wird.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
question: 'Ist es sicher, meine Bilder hier in Base64 zu konvertieren?',
|
|
33
|
+
answer:
|
|
34
|
+
'Absolut sicher und privat. Unser Tool arbeitet zu 100 % lokal in Ihrem Browser. Ihre Bilder werden niemals auf einen externen Server hochgeladen oder dort verarbeitet.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
question: 'Welche Bildformate unterstützt der Base64-Konverter?',
|
|
38
|
+
answer:
|
|
39
|
+
'Das Tool ist kompatibel mit JPG, PNG, GIF, WebP und sogar SVG-Vektordateien. Beim Laden des Bildes wird automatisch der MIME-Typ erkannt, um den exakten Data-URI-Code zu generieren.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
question: 'Wann sollte ich Base64-Bilder NICHT verwenden?',
|
|
43
|
+
answer:
|
|
44
|
+
'Sie sollten Base64-Bilder nicht für große Fotos oder hochauflösende Bilder verwenden. Base64-Code beansprucht etwa 33 % mehr Speicherplatz als die ursprüngliche Binärdatei, was Ihre CSS-Stylesheets oder HTML-Dokumente übermäßig aufblähen kann.',
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
const howTo: ImagenBase64LocaleContent['howTo'] = [
|
|
49
|
+
{
|
|
50
|
+
name: 'Bild ziehen oder auswählen',
|
|
51
|
+
text: 'Verschieben Sie ein beliebiges Bild (JPG, PNG, WebP, SVG, GIF) in den Upload-Bereich, um die Konvertierung zu starten.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'Generierten Code kopieren',
|
|
55
|
+
text: 'Sie sehen zwei Textfelder: die vollständige Data URI (bereit zur Verwendung in src="" oder CSS) und das reine Base64 für andere Zwecke.',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Code in Ihrem Projekt verwenden',
|
|
59
|
+
text: 'Fügen Sie die Data URI direkt in den src-Attribut eines img-Tags oder in Ihr CSS als background-image ein, ohne externe Dateien zu benötigen.',
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const bibliography: ImagenBase64LocaleContent['bibliography'] = [
|
|
64
|
+
{
|
|
65
|
+
name: 'MDN Web Docs: Data URIs',
|
|
66
|
+
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'Base64 Kodierung RFC 4648',
|
|
70
|
+
url: 'https://datatracker.ietf.org/doc/html/rfc4648',
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
const seo: ImagenBase64LocaleContent['seo'] = [
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'Bild-zu-Base64-Konverter: Bilder ohne HTTP-Anfragen einbetten',
|
|
78
|
+
level: 2,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'Base64 ist eine Kodierungstechnik, die Binärdaten – wie ein Bild – in eine reine ASCII-Textzeichenfolge transformiert. Das Ergebnis ist eine Data URI: eine in sich geschlossene URL, die mit <code>data:image/png;base64,...</code> beginnt und das gesamte kodierte Bild enthält. Durch das direkte Einbetten dieses Codes in Ihr HTML, CSS oder JSON wird das Bild ohne zusätzliche HTTP-Anfrage an den Server geladen – null Netzwerklatenz, sofortiges Laden.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'title',
|
|
86
|
+
text: 'Wann man Base64-Bilder verwendet',
|
|
87
|
+
level: 3,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: 'paragraph',
|
|
91
|
+
html: 'Das Hauptargument für Base64 ist die Eliminierung von Netzwerkanfragen. Jedes Bild auf einer Webseite bedeutet eine HTTP-Anfrage mit dem entsprechenden Overhead für Verbindung, DNS, TLS-Handshake und Latenz. Bei sehr kleinen, kritischen Bildern – dem Hauptlogo der Anwendung, dem Favicon oder einem UI-Icon – eliminiert das Einbetten in Base64 in CSS oder HTML diese Kosten und garantiert eine sofortige Anzeige, noch bevor der Browser etwas zwischengespeichert hat.',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'paragraph',
|
|
95
|
+
html: 'Diese Technik ist besonders leistungsfähig in SPA-Anwendungen (Single Page Application), bei denen das JavaScript- und CSS-Bundle zur Build-Zeit generiert wird: Das Einbetten kleiner Bilder im Bundle garantiert, dass sie zusammen mit dem Code ohne zusätzliche Anfragen geladen werden. Es ist auch unverzichtbar für HTML-E-Mails, bei denen E-Mail-Clients externe Bilder blockieren, aber eingebettete Data URIs fast immer anzeigen.',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'title',
|
|
99
|
+
text: 'Anwendungsfälle für Base64-Bilder',
|
|
100
|
+
level: 3,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: 'list',
|
|
104
|
+
icon: 'mdi:check-circle',
|
|
105
|
+
items: [
|
|
106
|
+
'HTML-Inline: <code><img src="data:image/png;base64,..."></code> für kritische Icons.',
|
|
107
|
+
'CSS-Hintergrund: <code>background-image: url("data:image/svg+xml;base64,...")</code> für UI-SVGs.',
|
|
108
|
+
'JSON und REST-APIs: Senden von Bildern als Textdaten in JSON-Payloads.',
|
|
109
|
+
'HTML-E-Mails: Eingebettete Bilder, die auch dann angezeigt werden, wenn der Client externe URLs blockiert.',
|
|
110
|
+
'SVG-Einbettung: Einbetten von Rasterbildern in SVG-Dateien als Inline-Daten.',
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'title',
|
|
115
|
+
text: 'Wie die Konvertierung im Browser funktioniert',
|
|
116
|
+
level: 3,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'paragraph',
|
|
120
|
+
html: 'Wenn Sie ein Bild auswählen oder ziehen, liest die <code>FileReader</code>-API des Browsers es direkt von der Festplatte als Binärdaten in den RAM. Die Methode <code>readAsDataURL()</code> konvertiert diese Binärbytes mithilfe des RFC 4648-Algorithmus in ihre Base64-Darstellung – alle 3 Bytes der Originaldaten werden als 4 ASCII-Zeichen aus dem Base64-Alphabet dargestellt. Das Ergebnis enthält den automatisch erkannten korrekten MIME-Typ.',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'tip',
|
|
124
|
+
title: 'Nur für kleine Bilder verwenden (unter 10 KB)',
|
|
125
|
+
html: 'Base64 erhöht die Dateigröße um etwa 33 %: Ein 10 KB großes Bild wird zu ca. 13,3 KB Text. Bei kleinen Icons und Logos ist dieser Aufwand minimal, und die Eliminierung der HTTP-Anfrage gleicht dies aus. Bei Fotos oder großen Bildern ist der Größen-Overhead signifikant – verwenden Sie für große Bilder immer ein CDN.',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'title',
|
|
129
|
+
text: 'Wann Base64 NICHT verwendet werden sollte',
|
|
130
|
+
level: 3,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'tip',
|
|
134
|
+
title: 'Vermeiden Sie Base64 für große Bilder – nutzen Sie ein CDN',
|
|
135
|
+
html: 'Wenn Sie Bilder haben, die größer als 10-20 KB sind, schadet Base64 der Performance: Es bläht die HTML/CSS-Größe auf, verhindert, dass der Browser das Bild unabhängig zwischenspeichert, und blockiert das Rendering, während der Parser den riesigen String verarbeitet. Für große Bilder sollten Sie immer ein CDN mit entsprechenden Cache-Headern verwenden.',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'title',
|
|
139
|
+
text: 'Kompatibilität und Datenschutz',
|
|
140
|
+
level: 3,
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'paragraph',
|
|
144
|
+
html: 'Data URIs sind mit 100 % der modernen Browser und den meisten E-Mail-Clients kompatibel. Unser Tool verarbeitet alles lokal über die FileReader-API – Ihre Bilder verlassen niemals Ihr Gerät. Damit eignet es sich für Unternehmensbilder, private Screenshots oder alle vertraulichen visuellen Inhalte, die Sie in Base64 konvertieren müssen.',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'title',
|
|
148
|
+
text: 'Fazit: Das schnellste und privateste Einbettungs-Tool',
|
|
149
|
+
level: 3,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'paragraph',
|
|
153
|
+
html: 'Das Konvertieren von Bildern in Base64 ist eine gezielte, aber sehr leistungsfähige Technik, wenn sie richtig angewendet wird. Verwenden Sie sie für kleine, kritische Bilder, bei denen null HTTP-Anfragen einen Unterschied machen, und vermeiden Sie sie für große Bilder, bei denen ein CDN immer gewinnt. Mit unserem Tool erhalten Sie die Data URI im Handumdrehen, ohne etwas auf einen Server hochzuladen.',
|
|
154
|
+
},
|
|
155
|
+
];
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
export const content: ImagenBase64LocaleContent = {
|
|
159
|
+
slug,
|
|
160
|
+
title,
|
|
161
|
+
description,
|
|
162
|
+
ui,
|
|
163
|
+
seo,
|
|
164
|
+
faq,
|
|
165
|
+
bibliography,
|
|
166
|
+
howTo,
|
|
167
|
+
schemas: generateSchemas({ title, description, inLanguage: 'de', faq, howTo }),
|
|
168
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
1
|
import type { ImagenBase64LocaleContent } from '../index';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
3
|
import type { ImageToBase64UI } from '../index';
|
|
4
4
|
|
|
5
5
|
const slug = 'image-to-base64-converter';
|
|
@@ -154,16 +154,6 @@ const seo: ImagenBase64LocaleContent['seo'] = [
|
|
|
154
154
|
},
|
|
155
155
|
];
|
|
156
156
|
|
|
157
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
158
|
-
'@context': 'https://schema.org',
|
|
159
|
-
'@type': 'SoftwareApplication',
|
|
160
|
-
name: title,
|
|
161
|
-
description,
|
|
162
|
-
applicationCategory: 'UtilitiesApplication',
|
|
163
|
-
operatingSystem: 'Web',
|
|
164
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
165
|
-
inLanguage: 'en',
|
|
166
|
-
};
|
|
167
157
|
|
|
168
158
|
export const content: ImagenBase64LocaleContent = {
|
|
169
159
|
slug,
|
|
@@ -174,5 +164,5 @@ export const content: ImagenBase64LocaleContent = {
|
|
|
174
164
|
faq,
|
|
175
165
|
bibliography,
|
|
176
166
|
howTo,
|
|
177
|
-
schemas:
|
|
167
|
+
schemas: generateSchemas({ title, description, inLanguage: 'en', faq, howTo }),
|
|
178
168
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
1
|
import type { ImagenBase64LocaleContent } from '../index';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
3
|
import type { ImageToBase64UI } from '../index';
|
|
4
4
|
|
|
5
5
|
const slug = 'convertidor-imagen-base64';
|
|
@@ -154,16 +154,6 @@ const seo: ImagenBase64LocaleContent['seo'] = [
|
|
|
154
154
|
},
|
|
155
155
|
];
|
|
156
156
|
|
|
157
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
158
|
-
'@context': 'https://schema.org',
|
|
159
|
-
'@type': 'SoftwareApplication',
|
|
160
|
-
name: title,
|
|
161
|
-
description,
|
|
162
|
-
applicationCategory: 'UtilitiesApplication',
|
|
163
|
-
operatingSystem: 'Web',
|
|
164
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
165
|
-
inLanguage: 'es',
|
|
166
|
-
};
|
|
167
157
|
|
|
168
158
|
export const content: ImagenBase64LocaleContent = {
|
|
169
159
|
slug,
|
|
@@ -174,5 +164,5 @@ export const content: ImagenBase64LocaleContent = {
|
|
|
174
164
|
faq,
|
|
175
165
|
bibliography,
|
|
176
166
|
howTo,
|
|
177
|
-
schemas:
|
|
167
|
+
schemas: generateSchemas({ title, description, inLanguage: 'es', faq, howTo }),
|
|
178
168
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
1
|
import type { ImagenBase64LocaleContent } from '../index';
|
|
2
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
3
|
import type { ImageToBase64UI } from '../index';
|
|
4
4
|
|
|
5
5
|
const slug = 'convertisseur-image-base64';
|
|
@@ -154,16 +154,6 @@ const seo: ImagenBase64LocaleContent['seo'] = [
|
|
|
154
154
|
},
|
|
155
155
|
];
|
|
156
156
|
|
|
157
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
158
|
-
'@context': 'https://schema.org',
|
|
159
|
-
'@type': 'SoftwareApplication',
|
|
160
|
-
name: title,
|
|
161
|
-
description,
|
|
162
|
-
applicationCategory: 'UtilitiesApplication',
|
|
163
|
-
operatingSystem: 'Web',
|
|
164
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
165
|
-
inLanguage: 'fr',
|
|
166
|
-
};
|
|
167
157
|
|
|
168
158
|
export const content: ImagenBase64LocaleContent = {
|
|
169
159
|
slug,
|
|
@@ -174,5 +164,5 @@ export const content: ImagenBase64LocaleContent = {
|
|
|
174
164
|
faq,
|
|
175
165
|
bibliography,
|
|
176
166
|
howTo,
|
|
177
|
-
schemas:
|
|
167
|
+
schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
|
|
178
168
|
};
|