@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,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-to-webp-converter';
|
|
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に移行することで、重いアニメーションが排除され、Webスピードが飛躍的に向上します。',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: '元の画像は透明のままですか?',
|
|
29
|
+
answer:
|
|
30
|
+
'はい。JPEGとは異なり、WebPコンテナは複雑なアルファチャンネルを尊重します。すべてのシルエットは元のまま完璧に保たれます。',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'ファイルはどこにアップロードされますか?',
|
|
34
|
+
answer:
|
|
35
|
+
'アップロードは行われません。処理はブラウザのJavascriptによってPC上で完全に行われ、外部への送信は一切ありません。',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: GifAWebpLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'アニメーションを開始',
|
|
42
|
+
text: '外部接続なしで、数十のGIFをデリミタゾーンに移動してドロップします。',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: '見えない大きな変化を目撃',
|
|
46
|
+
text: 'ローカルキャンバスデコーダーが出力を生成する間、ミリ秒単位で変化するプログレスインジケーターを確認してください。',
|
|
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 to WebP コンバーター:重いアニメーションに代わる現代的な選択肢',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: 'アニメーションGIFは現代のWebコンテンツにおける恐竜のようなものです。不釣り合いな帯域幅を消費し、あらゆるページのPageSpeedを低下させ、数千のWebサイトにおける総重量の大部分を占めています。典型的な5MBのアニメーションGIFは、同じ視覚的品質を維持しながら1MB未満のWebPアニメーションに変換できます。WebPは、Web上のGIFを置き換えるためにGoogleが特別に設計した後継形式です。',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'GIF vs WebP:Webの過去と現在のギャップ',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'GIFはもともとアニメーション用に設計されていない1987年の形式です。アニメーション機能は後からの「ハック」として追加されました。256色のパレット、非効率な圧縮、オーディオ処理の不可などは、これがもはや旧式の形式であることを示しています。2010年にGoogleによって開発されたWebPは、損失あり・なしの両方で優れた圧縮を提供し、ネイティブのアニメーションサポートと完全なアルファチャンネルを備えています。',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'Web開発者にとって、ページ上のGIFをWebPに置き換えることは、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 to 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は完全なアルファチャンネルをサポートしているため、背景を追加することなく、生成されたWebPでGIFの透明度が維持されます。WebPの圧縮アルゴリズムはGIFやPNGよりも大幅に効率的であり、これが最終的な出力のファイルサイズが劇的に減少する理由です。',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: '確実なPageSpeed改善',
|
|
138
|
+
html: '5MBのアニメーションGIFは、1MB未満のWebPになる可能性があります。Webサイトのページに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
|
+
'PageSpeedスコアを改善するためにWebページ上のGIFを置き換える。',
|
|
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: 'Webサイトのすべての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: 'ja', 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 = 'gif-to-webp-converter';
|
|
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는 구글의 압축 표준입니다. 매우 가벼우며 투명도를 깔끔하게 유지합니다. GIF에서 WebP로 전환하면 무거운 애니메이션이 제거되고 웹 속도가 획기적으로 향상됩니다.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: '원본의 투명도가 그대로 유지되나요?',
|
|
29
|
+
answer:
|
|
30
|
+
'네, JPEG와 달리 WebP 컨테이너는 복잡한 알파 채널을 지원합니다. 모든 실루엣이 원래 그대로 완벽하게 유지됩니다.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: '파일은 어디로 업로드되나요?',
|
|
34
|
+
answer:
|
|
35
|
+
'업로드는 발생하지 않습니다. 모든 처리는 사용자의 PC에서 브라우저의 자바스크립트에 의해 로컬로 수행되며 외부 서버로 전송되지 않습니다.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: GifAWebpLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: '애니메이션 파일 준비',
|
|
42
|
+
text: '수십 개의 짤방(meme)을 외부 연결 없이 지정된 영역으로 옮기고 놓으세요.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: '보이지 않는 위대한 변화 확인',
|
|
46
|
+
text: '로컬 캔버스 디코더가 결과물을 생성하는 동안 매 밀리초마다 바뀌는 진행 표시기를 확인하세요.',
|
|
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: '구글 WebP 문서',
|
|
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 변환기: 무거운 애니메이션을 위한 최신 대안',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: '애니메이션 GIF는 현대 웹 콘텐츠의 공룡과 같습니다. 불균형하게 많은 대역폭을 소비하고 모든 페이지의 PageSpeed를 저하시키며, 수천 개의 웹사이트에서 전체 용량의 상당 부분을 차지합니다. 일반적인 5MB 애니메이션 GIF는 동일한 시각적 품질을 유지하면서 1MB 미만의 WebP 애니메이션으로 변환될 수 있습니다. WebP는 구글이 웹에서 GIF를 대체하기 위해 특별히 설계한 현대적인 후계자입니다.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'GIF vs WebP: 웹의 과거와 현재 사이의 간극',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'GIF는 원래 애니메이션용으로 설계되지 않은 1987년 형식입니다. 애니메이션 기능은 나중에 추가된 임시방편이었습니다. 256색 팔레트, 비효율적인 압축, 오디오 처리 불가 등은 이제 구식 형식이 되었음을 의미합니다. 2010년 구글이 개발한 WebP는 손실 및 무손실 압축 모두에서 우수한 성능을 제공하며, 네이티브 애니메이션 지원과 완전한 알파 채널을 갖추고 있습니다.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: '웹 개발자에게 페이지의 GIF를 WebP로 교체하는 것은 구글 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 to 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는 완전한 알파 채널을 지원하므로 배경을 추가할 필요 없이 결과물인 WebP에서도 GIF의 투명도가 유지됩니다. WebP 압축 알고리즘은 GIF나 PNG보다 훨씬 효율적이어서 최종 출력물의 파일 크기가 획기적으로 줄어듭니다.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: '확실한 PageSpeed 개선',
|
|
138
|
+
html: '5MB 애니메이션 GIF는 1MB 미만의 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
|
+
'PageSpeed 점수 개선을 위해 웹 페이지의 GIF 교체.',
|
|
150
|
+
'디스코드, 슬랙 및 현대적 플랫폼용으로 최적화된 아바타 및 스티커.',
|
|
151
|
+
'디지털 마케팅 캠페인용 배너 및 비주얼.',
|
|
152
|
+
'프로그레시브 웹 앱(PWA)의 애니메이션.',
|
|
153
|
+
'크롬, 엣지, 파이어폭스, 사파리 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: 'ko', 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 = 'gif-naar-webp-converteren';
|
|
6
|
+
const title = 'GIF naar statische WebP Online Converteren';
|
|
7
|
+
const description =
|
|
8
|
+
'Converteer geanimeerde GIF\'s naar statische WebP. Behoudt transparantie. Geen server nodig. Lokaal verwerkt in je browser. Gratis.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Sleep GIF-bestanden hierheen...',
|
|
12
|
+
convertText: 'Om ze direct naar WebP te converteren',
|
|
13
|
+
selectFiles: 'Bestanden selecteren',
|
|
14
|
+
processedFiles: 'Verwerkte bestanden',
|
|
15
|
+
downloadAll: 'Alles downloaden (.zip)',
|
|
16
|
+
pending: 'In afwachting',
|
|
17
|
+
bibliographyTitle: 'Bibliografische Referenties',
|
|
18
|
+
faqTitle: 'Veelgestelde Vragen',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: GifAWebpLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Waarom een geanimeerd bestand bevriezen naar het moderne statische WebP-formaat?',
|
|
24
|
+
answer:
|
|
25
|
+
'WebP is de compressiestandaard van Google; het is opmerkelijk lichtgewicht en behoudt transparantie op een schone manier. De overstap van GIF naar WebP elimineert de zware animatie en zorgt voor een enorme winst in websnelheid.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Blijft de originele avatar transparant?',
|
|
29
|
+
answer:
|
|
30
|
+
'Ja, in tegenstelling tot JPEG respecteert de WebP-container het complexe alfakanaal. Alle contouren blijven perfect zoals ze van nature waren.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Waar worden de bestanden naar geüpload?',
|
|
34
|
+
answer:
|
|
35
|
+
'Er is geen upload. De verwerking wordt volledig uitgevoerd door de JavaScript van de browser op je eigen pc, zonder enige verzending op afstand.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: GifAWebpLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Start een geanimeerde lawine',
|
|
42
|
+
text: 'Verplaats en drop tientallen memes in de gemarkeerde zone zonder externe verbinding.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Getuige van de grote onzichtbare verandering',
|
|
46
|
+
text: 'Bekijk hoe een voortgangsindicator elke milliseconde verandert terwijl de lokale canvas-decoder de output genereert.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Sla je schone verzameling resultaten op',
|
|
50
|
+
text: 'Neem de geëxtraheerde bestanden afzonderlijk op of druk op Download Zip om alles te verpakken.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: GifAWebpLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'GIF89a Specificatie',
|
|
57
|
+
url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Google WebP Documentatie',
|
|
61
|
+
url: 'https://developers.google.com/speed/webp',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const seo: GifAWebpLocaleContent['seo'] = [
|
|
66
|
+
{
|
|
67
|
+
type: 'title',
|
|
68
|
+
text: 'GIF naar WebP Converter: De moderne vervanger voor zware animaties',
|
|
69
|
+
level: 2,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
html: 'Geanimeerde GIF\'s zijn de dinosaurussen van de moderne webcontent: ze verbruiken buitensporige bandbreedte, verslechteren de PageSpeed van elke pagina en zijn verantwoordelijk voor een aanzienlijk percentage van het totale gewicht op duizenden websites. Een typische geanimeerde GIF van 5 MB kan een WebP-animatie van minder dan 1 MB worden met dezelfde visuele kwaliteit. WebP is de moderne opvolger die Google specifiek heeft ontworpen om GIF op het web te vervangen.',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
text: 'GIF vs WebP: De kloof tussen het verleden en het heden van het web',
|
|
78
|
+
level: 3,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'paragraph',
|
|
82
|
+
html: 'GIF is een formaat uit 1987 dat oorspronkelijk niet bedoeld was voor animaties – die functie kwam later als een hack. Het palet van 256 kleuren, de inefficiënte compressie en het onvermogen om audio te verwerken maken het een verouderd formaat. WebP, ontwikkeld door Google in 2010, biedt superieure compressie (zowel met als zonder verlies), systeemeigen ondersteuning voor animaties en een volledig alfakanaal.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'Voor een webontwikkelaar kan het vervangen van GIF\'s door WebP op pagina\'s een verbetering van 10 tot 30 punten in de Google PageSpeed score betekenen. Minder paginagewicht betekent betere Core Web Vitals, betere SEO-rankings en lagere bandbreedtekosten op servers. Het is niet alleen een esthetische verbetering – het is een technische architectuurbeslissing.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'title',
|
|
90
|
+
text: 'Architectuurvergelijking: Lokaal vs Cloud',
|
|
91
|
+
level: 3,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'comparative',
|
|
95
|
+
items: [
|
|
96
|
+
{
|
|
97
|
+
title: 'Cloud Converters',
|
|
98
|
+
description: 'Platforms die je GIF\'s op externe servers verwerken.',
|
|
99
|
+
icon: 'mdi:cloud-upload',
|
|
100
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
101
|
+
points: [
|
|
102
|
+
'Je animaties reizen over het internet naar servers van derden',
|
|
103
|
+
'Wachttijd door netwerklatentie bij upload en download',
|
|
104
|
+
'Groottebeperkingen (grote GIF\'s worden vaak geweigerd)',
|
|
105
|
+
'Risico op bewaring en analyse van bestanden',
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: 'Onze Lokale Architectuur',
|
|
110
|
+
description: 'Directe verwerking op je eigen hardware met Vanilla JS-technologie.',
|
|
111
|
+
icon: 'mdi:laptop-mac',
|
|
112
|
+
highlight: true,
|
|
113
|
+
points: [
|
|
114
|
+
'De GIF verlaat nooit je apparaat',
|
|
115
|
+
'Directe conversie zonder netwerkwachttijd',
|
|
116
|
+
'Geen groottebeperkingen: verwerk GIF\'s van elk gewicht',
|
|
117
|
+
'Totale privacy: 0 bytes worden extern verzonden',
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: 'Hoe de lokale GIF naar WebP conversie werkt',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'paragraph',
|
|
129
|
+
html: 'De lokale conversie maakt gebruik van de HTML5 Canvas API. De GIF wordt geladen als een systeemeigen browser Image-element. Door het op een canvas te tekenen, legt de grafische engine het eerste animatieframe vast met alle transparantie-informatie. De methode <code>toDataURL(\'image/webp\')</code> exporteert het frame direct in het RAM-geheugen als WebP.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'WebP ondersteunt een volledig alfakanaal, dus GIF-transparanties blijven behouden in de resulterende WebP zonder dat er een achtergrond hoeft te worden toegevoegd. WebP-compressiealgoritmen zijn aanzienlijk efficiënter dan GIF of PNG, wat de drastische vermindering van de bestandsgrootte van de uiteindelijke output verklaart.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'tip',
|
|
137
|
+
title: 'Gegarandeerde verbetering van de PageSpeed',
|
|
138
|
+
html: 'Een geanimeerde GIF van 5 MB kan een WebP van minder dan 1 MB worden. Als je GIF\'s op je website hebt, kan het vervangen ervan door WebP onmiddellijk je Largest Contentful Paint (LCP) en Total Blocking Time (TBT) verbeteren, wat direct invloed heeft op je SEO-rankings.',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Gebruiksscenario\'s en compatibiliteit van de resulterende WebP',
|
|
143
|
+
level: 3,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'list',
|
|
147
|
+
icon: 'mdi:check-circle',
|
|
148
|
+
items: [
|
|
149
|
+
'Vervangen van GIF\'s op webpagina\'s om de PageSpeed-scores te verbeteren.',
|
|
150
|
+
'Geoptimaliseerde avatars en stickers voor Discord, Slack en moderne platforms.',
|
|
151
|
+
'Banners en visuals voor digitale marketingcampagnes.',
|
|
152
|
+
'Animaties in progressive web applications (PWA).',
|
|
153
|
+
'Compatibel met Chrome, Edge, Firefox, Safari 14+ en alle moderne browsers.',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Conclusie: migreer je GIF\'s naar de 21e eeuw',
|
|
159
|
+
level: 3,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'Elke GIF op je website is een gemiste kans voor optimalisatie. Onze tool converteert GIF\'s direct, privé en zonder beperkingen naar WebP, rechtstreeks in je browser. Het resultaat: bestanden die tot 5 keer kleiner zijn, perfecte transparantie en compatibiliteit met alle moderne browsers.',
|
|
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: 'nl', faq, howTo }),
|
|
178
|
+
};
|