@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-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% 더 나은 압축률을 제공하는 동시에 알파 투명도를 지원합니다. Google PageSpeed Insights에서 권장하는 형식입니다.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: '변환 과정에서 투명도가 손실되나요?',
|
|
29
|
+
answer:
|
|
30
|
+
'아니요. WebP의 기술적 구현은 알파 채널을 지원합니다. 원본 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 to WebP 변환기: 웹을 위한 투명도 및 현대적인 압축 기술',
|
|
73
|
+
level: 2,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'paragraph',
|
|
77
|
+
html: '<strong>PNG</strong>는 로고, 아이콘, UI 요소, 누끼 컷 제품 이미지 등 투명도가 필요한 웹 이미지의 표준 형식이었습니다. 문제는 파일 크기입니다. 품질을 보장하는 무손실 압축은 파일 용량을 상당히 크게 만듭니다. Google의 <strong>WebP</strong>는 이 모순을 해결합니다. 알파 채널(투명도)을 지원하면서도 PNG보다 훨씬 더 효과적으로 압축하므로, 웹사이트에서 PNG를 WebP로 전환하는 것은 시각적 품질을 희생하지 않으면서도 완벽한 최적화를 이루는 방법입니다.',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'title',
|
|
81
|
+
text: 'PNG와 WebP 중 무엇을 선택해야 할까요?',
|
|
82
|
+
level: 3,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: 'Photoshop이나 Figma와 같은 디자인 도구, 인쇄 작업 흐름, 레거시 데스크톱 애플리케이션 또는 WebP 지원을 보장할 수 없는 환경과 같이 호환성이 중요한 경우에는 여전히 <strong>PNG</strong>가 적합한 형식입니다. 또한 무손실 압축이 모든 픽셀을 보존하므로 편집 파이프라인에서 작업 레이어를 저장하는 데 이상적인 형식입니다. 하지만 파일 용량이 WebP보다 3~8배 더 무거울 수 있다는 단점이 있습니다.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'paragraph',
|
|
90
|
+
html: '<strong>WebP</strong>는 모든 현대적인 웹 콘텐츠에서 PNG를 대체할 수 있는 자연스러운 선택입니다. Chrome, Firefox, Safari 및 Edge는 모두 이를 기본적으로 지원합니다. 무손실 WebP 이미지는 동일한 PNG보다 26% 더 작으며, 손실 모드에서는 시각적으로 거의 차이가 없으면서도 최대 40%까지 더 작아질 수 있습니다. 그리고 웹 디자인에서 중요한 점은 <strong>WebP가 PNG와 똑같이 알파 투명도를 보존</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
|
+
'용량 제한이나 파일 개수 제한 없음',
|
|
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의 알파 채널을 보존하여 모든 투명 및 반투명 픽셀이 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: '팁: 웹에서는 WebP가 PNG와 JPG를 모두 능가합니다',
|
|
142
|
+
html: '무손실 모드의 WebP는 PNG보다 작습니다. 손실 모드의 WebP는 JPG보다 작습니다. 이로 인해 WebP는 웹 환경에서 <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
|
+
'알파 투명도가 있는 CSS 스프라이트 및 UI 요소.',
|
|
156
|
+
'랜딩 페이지용 래스터화된 일러스트레이션 및 벡터 그래픽.',
|
|
157
|
+
'블로그 및 뉴스 포털의 투명 배경 기사 썸네일.',
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'title',
|
|
162
|
+
text: '결론',
|
|
163
|
+
level: 3,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: 'paragraph',
|
|
167
|
+
html: 'PNG에서 WebP로의 전환은 가장 완벽한 웹 이미지 최적화 방법입니다. 시각적 디자인을 변경하지 않고도 파일 용량을 줄이고 투명도를 유지하며 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: 'ko', 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-naar-webp-converter';
|
|
6
|
+
const title = 'Converteer PNG naar WebP Online en Gratis';
|
|
7
|
+
const description =
|
|
8
|
+
'Converteer PNG-afbeeldingen naar WebP in je browser. Tot 40% kleinere bestandsgrootte. Behoudt transparantie. Geen bestandsuploads. Gratis en privé.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Sleep PNG-bestanden...',
|
|
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: PngAWebpLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Waarom PNG naar WebP converteren?',
|
|
24
|
+
answer:
|
|
25
|
+
'WebP biedt tot 40% betere compressie dan PNG bij dezelfde kwaliteit, terwijl het ook Alpha-transparantie ondersteunt. Het is het formaat dat wordt aanbevolen door Google PageSpeed Insights.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Gaat transparantie verloren tijdens het proces?',
|
|
29
|
+
answer:
|
|
30
|
+
'Nee. De technische implementatie van WebP ondersteunt het alfakanaal. De transparanties van de originele PNG blijven behouden in het nieuwe WebP-bestand.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Gaan mijn afbeeldingen naar een server?',
|
|
34
|
+
answer:
|
|
35
|
+
'Nee. De code draait exclusief in je browser (Client-Side). We bekijken, registreren of bewaren de afbeeldingen die je converteert nooit.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: PngAWebpLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Voeg je PNG\'s toe',
|
|
42
|
+
text: 'Sleep je grote PNG-bestanden naar het uploadgedeelte of gebruik de traditionele interactieve kiezer.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Kanaaldetectie',
|
|
46
|
+
text: 'De lokale rendering-engine detecteert en exporteert de pixelcompositie naar het geoptimaliseerde WebP-formaat.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Directe Download',
|
|
50
|
+
text: 'Download je sterk gecomprimeerde WebP-bestanden afzonderlijk of bundel ze samen met de ZIP-pakketconverter.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: PngAWebpLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'Google: WebP Implementatiedetails',
|
|
57
|
+
url: 'https://developers.google.com/speed/webp/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'W3C: Core Web Vitals Richtlijnen',
|
|
61
|
+
url: 'https://web.dev/vitals/',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'Mozilla Docs: Beeldformaten',
|
|
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 naar WebP Converter: Transparantie en moderne compressie voor het web',
|
|
73
|
+
level: 2,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'paragraph',
|
|
77
|
+
html: '<strong>PNG</strong> is decennialang het referentieformaat geweest voor webafbeeldingen met transparantie — logo\'s, pictogrammen, UI-elementen, productafbeeldingen op uitgesneden achtergronden. Het probleem is de bestandsgrootte: de verliesvrije compressie die kwaliteit garandeert, genereert ook merkbaar grote bestanden. Google\'s <strong>WebP</strong> lost deze tegenstrijdigheid op: het ondersteunt het alfakanaal (transparantie) <em>en</em> comprimeert veel beter dan PNG, waardoor de overstap van PNG naar WebP op je website een perfecte optimalisatie is die niets opoffert.',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'title',
|
|
81
|
+
text: 'PNG of WebP? Wanneer je elk formaat moet gebruiken',
|
|
82
|
+
level: 3,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: '<strong>PNG</strong> blijft het juiste formaat wanneer compatibiliteit cruciaal is: ontwerptools zoals Photoshop of Figma, printworkflows, verouderde desktopapplicaties of elke context waarin WebP-ondersteuning niet gegarandeerd is. Het is ook het ideale formaat voor het opslaan van werklagen in bewerkingspipelines, aangezien de verliesvrije compressie elke pixel behoudt. De kosten: bestanden die 3–8 keer meer kunnen wegen dan hun WebP-equivalent.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'paragraph',
|
|
90
|
+
html: '<strong>WebP</strong> is de natuurlijke vervanger van PNG voor alle moderne webinhoud. Chrome, Firefox, Safari en Edge ondersteunen het allemaal standaard. Een verliesvrije WebP-afbeelding is 26% kleiner dan de equivalente PNG; in de lossy-modus kan deze tot 40% kleiner zijn met vrijwel onwaarneembare visuele kwaliteit. En cruciaal voor webdesign: <strong>WebP behoudt alfa-transparantie</strong> precies zoals PNG, zonder visueel compromis.',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'title',
|
|
94
|
+
text: 'Vergelijking: Lokale vs Cloud-conversie',
|
|
95
|
+
level: 3,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'comparative',
|
|
99
|
+
items: [
|
|
100
|
+
{
|
|
101
|
+
title: 'Cloud Converters',
|
|
102
|
+
description: 'Tools die je bestanden uploaden naar een externe server.',
|
|
103
|
+
icon: 'mdi:cloud-upload',
|
|
104
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
105
|
+
points: [
|
|
106
|
+
'Netwerklatentie bij uploaden en downloaden',
|
|
107
|
+
'Je logo\'s en afbeeldingen opgeslagen op servers van derden',
|
|
108
|
+
'Limieten voor bestandsgrootte en dagelijkse conversiequota',
|
|
109
|
+
'Opdringerige advertenties en trackers van derden',
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
title: 'Onze Lokale Architectuur',
|
|
114
|
+
description: 'Directe verwerking op je eigen hardware met Vanilla JS-technologie.',
|
|
115
|
+
icon: 'mdi:laptop-mac',
|
|
116
|
+
highlight: true,
|
|
117
|
+
points: [
|
|
118
|
+
'Onmiddellijke snelheid — geen netwerklatentie',
|
|
119
|
+
'Volledige privacy — 0 bytes extern verzonden',
|
|
120
|
+
'Geen MB-limieten of beperkingen op aantal bestanden',
|
|
121
|
+
'Schone interface, geen advertenties of tracking',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
text: 'Hoe het technisch werkt',
|
|
129
|
+
level: 3,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'De PNG wordt lokaal geladen en gedecodeerd in een in-memory <strong>HTML5 Canvas</strong>. De Canvas API behoudt het alfakanaal van de originele PNG — alle transparante en semi-transparante pixels blijven intact in de RGBA-pixelbuffer. Het canvas wordt vervolgens geëxporteerd door <code>toDataURL(\'image/webp\')</code> aan te roepen, wat de WebP-codec van de browser (gebaseerd op Google\'s libwebp) toepast om een compacter bestand te genereren zonder de transparantiegegevens te wijzigen.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'paragraph',
|
|
137
|
+
html: 'WebP gebruikt twee compressiemodi: lossless-modus voor afbeeldingen waarbij elke pixel exact trouw aan het origineel moet zijn, en lossy-modus voor foto\'s en elementen waarbij kleine verschillen onmerkbaar zijn. Lossless-modus produceert bestanden die 26% kleiner zijn dan PNG; lossy-modus kan reducties tot 40% bereiken in vergelijking met PNG met behoud van uitstekende visuele kwaliteit.',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
type: 'tip',
|
|
141
|
+
title: 'Tip: WebP verslaat zowel PNG als JPG op het web',
|
|
142
|
+
html: 'WebP in lossless-modus is kleiner dan PNG. WebP in lossy-modus is kleiner dan JPG. Dit maakt WebP het <strong>enige formaat dat beide vervangt</strong> in de webcontext. Converteer je transparante PNG\'s naar WebP voordat je ze uploadt: Google PageSpeed Insights detecteert het en scoort het positief in audits voor "Afbeeldingen in moderne formaten aanbieden".',
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
type: 'title',
|
|
146
|
+
text: 'Toepassingen en compatibiliteit',
|
|
147
|
+
level: 3,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'list',
|
|
151
|
+
icon: 'mdi:check-circle',
|
|
152
|
+
items: [
|
|
153
|
+
'Logo\'s en pictogrammen met transparante achtergronden voor websites en apps.',
|
|
154
|
+
'Productafbeeldingen met uitgesneden achtergronden in e-commerce winkels.',
|
|
155
|
+
'CSS-sprites en UI-elementen met alfa-transparantie.',
|
|
156
|
+
'Gerasterde illustraties en vectorafbeeldingen voor landingspagina\'s.',
|
|
157
|
+
'Artikelminiaturen met transparante achtergronden in blogs en nieuwsportalen.',
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'title',
|
|
162
|
+
text: 'Conclusie',
|
|
163
|
+
level: 3,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: 'paragraph',
|
|
167
|
+
html: 'De overstap van PNG naar WebP is de meest complete webafbeeldingsoptimalisatie die beschikbaar is: je krijgt lichtere bestanden, behoudt transparantie en verbetert Core Web Vitals-metrieken zonder iets aan je visuele ontwerp te veranderen. Deze tool doet het onmiddellijk, gratis en volledig privé — je afbeeldingen worden verwerkt in je browser en gaan nooit naar een externe server.',
|
|
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: 'nl', 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 = 'konwerter-png-na-webp';
|
|
6
|
+
const title = 'Konwertuj PNG na WebP Online i Za Darmo';
|
|
7
|
+
const description =
|
|
8
|
+
'Konwertuj obrazy PNG na WebP w swojej przeglądarce. Do 40% mniejszy rozmiar pliku. Zachowuje przezroczystość. Bez przesyłania plików. Za darmo i prywatnie.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageConverterUI = {
|
|
11
|
+
dragText: 'Przeciągnij pliki PNG...',
|
|
12
|
+
convertText: 'Aby błyskawicznie przekonwertować je na WebP',
|
|
13
|
+
selectFiles: 'Wybierz pliki',
|
|
14
|
+
processedFiles: 'Przetworzone pliki',
|
|
15
|
+
downloadAll: 'Pobierz wszystko (.zip)',
|
|
16
|
+
pending: 'Oczekujące',
|
|
17
|
+
bibliographyTitle: 'Bibliografia',
|
|
18
|
+
faqTitle: 'Często Zadawane Pytania',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const faq: PngAWebpLocaleContent['faq'] = [
|
|
22
|
+
{
|
|
23
|
+
question: 'Dlaczego warto konwertować PNG na WebP?',
|
|
24
|
+
answer:
|
|
25
|
+
'WebP oferuje do 40% lepszą kompresję niż PNG przy tej samej jakości, jednocześnie obsługując przezroczystość alfa. Jest to format zalecany przez Google PageSpeed Insights.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Czy podczas procesu tracona jest przezroczystość?',
|
|
29
|
+
answer:
|
|
30
|
+
'Nie. Techniczna implementacja WebP obsługuje kanał alfa. Przezroczystość oryginalnego pliku PNG zostanie zachowana w nowym pliku WebP.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Czy moje obrazy trafiają na jakikolwiek serwer?',
|
|
34
|
+
answer:
|
|
35
|
+
'Nie. Kod działa wyłącznie w Twojej przeglądarce (po stronie klienta). Nigdy nie widzimy, nie rejestrujemy ani nie zapisujemy obrazów, które konwertujesz.',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const howTo: PngAWebpLocaleContent['howTo'] = [
|
|
40
|
+
{
|
|
41
|
+
name: 'Wstaw swoje pliki PNG',
|
|
42
|
+
text: 'Upuść duże pliki PNG w obszarze przesyłania lub użyj tradycyjnego interaktywnego selektora.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'Wykrywanie kanałów',
|
|
46
|
+
text: 'Lokalny silnik renderujący wykryje i wyeksportuje kompozycję pikseli do zoptymalizowanego formatu WebP.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Bezpośrednie pobieranie',
|
|
50
|
+
text: 'Pobierz swoje wysoko skompresowane pliki WebP pojedynczo lub spakuj je razem za pomocą konwertera ZIP.',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const bibliography: PngAWebpLocaleContent['bibliography'] = [
|
|
55
|
+
{
|
|
56
|
+
name: 'Google: Szczegóły implementacji WebP',
|
|
57
|
+
url: 'https://developers.google.com/speed/webp/',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'W3C: Wskazówki dotyczące Core Web Vitals',
|
|
61
|
+
url: 'https://web.dev/vitals/',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'Mozilla Docs: Formaty obrazów',
|
|
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: 'Konwerter PNG na WebP: Przezroczystość i nowoczesna kompresja dla sieci',
|
|
73
|
+
level: 2,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'paragraph',
|
|
77
|
+
html: '<strong>PNG</strong> od dziesięcioleci był formatem referencyjnym dla obrazów internetowych z przezroczystością — logo, ikon, elementów interfejsu użytkownika, zdjęć produktów na wyciętych tłach. Problemem jest rozmiar pliku: kompresja bezstratna, która gwarantuje jakość, generuje również zauważalnie duże pliki. <strong>WebP</strong> od Google rozwiązuje tę sprzeczność: obsługuje kanał alfa (przezroczystość) <em>i</em> kompresuje znacznie lepiej niż PNG, co sprawia, że przejście z PNG na WebP na Twojej stronie internetowej jest idealną optymalizacją, która nie wymaga żadnych poświęceń.',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'title',
|
|
81
|
+
text: 'PNG czy WebP? Kiedy używać każdego formatu',
|
|
82
|
+
level: 3,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'paragraph',
|
|
86
|
+
html: '<strong>PNG</strong> pozostaje właściwym formatem, gdy kluczowa jest kompatybilność: narzędzia do projektowania, takie jak Photoshop czy Figma, procesy drukowania, starsze aplikacje desktopowe lub dowolny kontekst, w którym obsługa WebP nie jest gwarantowana. Jest to również idealny format do zapisywania warstw roboczych w procesach edycji, ponieważ kompresja bezstratna zachowuje każdy piksel. Koszt: pliki, które mogą ważyć 3–8 razy więcej niż ich odpowiednik w WebP.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'paragraph',
|
|
90
|
+
html: '<strong>WebP</strong> jest naturalnym następcą PNG dla wszystkich nowoczesnych treści internetowych. Chrome, Firefox, Safari i Edge obsługują go natywnie. Obraz WebP bezstratny jest o 26% mniejszy niż odpowiedni plik PNG; w trybie stratnym może być do 40% mniejszy przy praktycznie nieodróżnialnej jakości wizualnej. Co kluczowe dla projektowania stron internetowych: <strong>WebP zachowuje przezroczystość alfa</strong> dokładnie tak jak PNG, bez wizualnych kompromisów.',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'title',
|
|
94
|
+
text: 'Porównanie: Konwersja lokalna vs w chmurze',
|
|
95
|
+
level: 3,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'comparative',
|
|
99
|
+
items: [
|
|
100
|
+
{
|
|
101
|
+
title: 'Konwertery w chmurze',
|
|
102
|
+
description: 'Narzędzia, które przesyłają pliki na zdalny serwer.',
|
|
103
|
+
icon: 'mdi:cloud-upload',
|
|
104
|
+
pointIcon: 'mdi:close-circle-outline',
|
|
105
|
+
points: [
|
|
106
|
+
'Opóźnienia sieciowe podczas przesyłania i pobierania',
|
|
107
|
+
'Twoje logo i obrazy przechowywane na serwerach osób trzecich',
|
|
108
|
+
'Limity rozmiaru plików i dzienne limity konwersji',
|
|
109
|
+
'Intruzywne reklamy i skrypty śledzące osób trzecich',
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
title: 'Nasza lokalna architektura',
|
|
114
|
+
description: 'Bezpośrednie przetwarzanie na Twoim sprzęcie przy użyciu technologii Vanilla JS.',
|
|
115
|
+
icon: 'mdi:laptop-mac',
|
|
116
|
+
highlight: true,
|
|
117
|
+
points: [
|
|
118
|
+
'Błyskawiczna prędkość — zero opóźnień sieciowych',
|
|
119
|
+
'Pełna prywatność — 0 bajtów wysłanych na zewnątrz',
|
|
120
|
+
'Brak limitów MB lub ograniczeń liczby plików',
|
|
121
|
+
'Czysty interfejs, bez reklam i śledzenia',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
text: 'Jak to działa technicznie',
|
|
129
|
+
level: 3,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Plik PNG jest ładowany lokalnie i dekodowany do <strong>HTML5 Canvas</strong> w pamięci. Interfejs API Canvas zachowuje kanał alfa z oryginalnego pliku PNG — wszystkie przezroczyste i półprzezroczyste piksele zostają zachowane w nienaruszonym stanie w buforze pikseli RGBA. Następnie płótno jest eksportowane przez wywołanie <code>toDataURL(\'image/webp\')</code>, co powoduje zastosowanie kodeka WebP przeglądarki (opartego na libwebp firmy Google) w celu wygenerowania bardziej zwartego pliku bez zmiany danych o przezroczystości.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'paragraph',
|
|
137
|
+
html: 'WebP wykorzystuje dwa tryby kompresji: tryb bezstratny dla obrazów, w których każdy piksel musi być dokładnie wierny oryginałowi, oraz tryb stratny dla zdjęć i elementów, w których małe różnice są niezauważalne. Tryb bezstratny generuje pliki o 26% mniejsze niż PNG; tryb stratny pozwala uzyskać oszczędności do 40% w porównaniu z PNG przy zachowaniu doskonałej jakości wizualnej.',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
type: 'tip',
|
|
141
|
+
title: 'Wskazówka: WebP pokonuje zarówno PNG, jak i JPG w internecie',
|
|
142
|
+
html: 'WebP w trybie bezstratnym jest mniejszy niż PNG. WebP w trybie stratnym jest mniejszy niż JPG. Dzięki temu WebP jest <strong>jedynym formatem, który zastępuje oba</strong> w kontekście internetowym. Konwertuj swoje przezroczyste pliki PNG na WebP przed przesłaniem: Google PageSpeed Insights wykrywa to i ocenia pozytywnie w audytach "Serwuj obrazy w nowoczesnych formatach".',
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
type: 'title',
|
|
146
|
+
text: 'Zastosowania i kompatybilność',
|
|
147
|
+
level: 3,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'list',
|
|
151
|
+
icon: 'mdi:check-circle',
|
|
152
|
+
items: [
|
|
153
|
+
'Logo i ikony z przezroczystym tłem dla stron internetowych i aplikacji.',
|
|
154
|
+
'Zdjęcia produktów na wyciętych tłach w sklepach e-commerce.',
|
|
155
|
+
'Sprite\'y CSS i elementy interfejsu z przezroczystością alfa.',
|
|
156
|
+
'Ilustracje rastrowe i grafika wektorowa dla stron docelowych.',
|
|
157
|
+
'Miniatury artykułów z przezroczystym tłem na blogach i portalach informacyjnych.',
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'title',
|
|
162
|
+
text: 'Podsumowanie',
|
|
163
|
+
level: 3,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: 'paragraph',
|
|
167
|
+
html: 'Przejście z PNG na WebP to najbardziej kompletna optymalizacja obrazów internetowych: otrzymujesz lżejsze pliki, zachowujesz przezroczystość i poprawiasz wskaźniki Core Web Vitals bez żadnych zmian w projekcie wizualnym. To narzędzie robi to natychmiastowo, za darmo i całkowicie prywatnie — Twoje zdjęcia są przetwarzane w przeglądarce i nigdy nie trafiają na żaden zewnętrzny serwer.',
|
|
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: 'pl', faq, howTo }),
|
|
182
|
+
};
|