@jjlmoya/utils-converters 1.15.0 → 1.18.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 +8 -4
- package/scripts/clean_titles.py +95 -0
- package/scripts/postinstall.mjs +27 -0
- package/src/category/i18n/de.ts +1 -1
- package/src/category/i18n/fr.ts +9 -9
- package/src/category/i18n/ru.ts +1 -1
- package/src/category/i18n/sv.ts +1 -1
- package/src/data.ts +0 -21
- package/src/layouts/PreviewLayout.astro +2 -1
- package/src/pages/[locale]/[slug].astro +28 -12
- package/src/tests/diacritics_density.test.ts +118 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tests/pagespeed_best_practices.test.ts +198 -0
- package/src/tests/script_density.test.ts +94 -0
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tool/avifAJpg/bibliography.ts +12 -0
- package/src/tool/avifAJpg/entry.ts +2 -0
- package/src/tool/avifAJpg/i18n/de.ts +2 -12
- 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 +11 -21
- package/src/tool/avifAJpg/i18n/id.ts +2 -12
- package/src/tool/avifAJpg/i18n/it.ts +2 -12
- package/src/tool/avifAJpg/i18n/ja.ts +1 -11
- package/src/tool/avifAJpg/i18n/ko.ts +1 -11
- package/src/tool/avifAJpg/i18n/nl.ts +2 -12
- package/src/tool/avifAJpg/i18n/pl.ts +2 -12
- package/src/tool/avifAJpg/i18n/pt.ts +2 -12
- package/src/tool/avifAJpg/i18n/ru.ts +7 -17
- package/src/tool/avifAJpg/i18n/sv.ts +2 -12
- package/src/tool/avifAJpg/i18n/tr.ts +1 -11
- package/src/tool/avifAJpg/i18n/zh.ts +4 -14
- package/src/tool/avifAJpg/seo.astro +2 -1
- package/src/tool/avifAPng/bibliography.ts +12 -0
- package/src/tool/avifAPng/entry.ts +2 -0
- package/src/tool/avifAPng/i18n/de.ts +4 -14
- package/src/tool/avifAPng/i18n/en.ts +4 -14
- package/src/tool/avifAPng/i18n/es.ts +4 -14
- package/src/tool/avifAPng/i18n/fr.ts +10 -20
- package/src/tool/avifAPng/i18n/id.ts +4 -14
- package/src/tool/avifAPng/i18n/it.ts +1 -11
- package/src/tool/avifAPng/i18n/ja.ts +1 -11
- package/src/tool/avifAPng/i18n/ko.ts +1 -11
- package/src/tool/avifAPng/i18n/nl.ts +4 -14
- package/src/tool/avifAPng/i18n/pl.ts +4 -14
- package/src/tool/avifAPng/i18n/pt.ts +4 -14
- package/src/tool/avifAPng/i18n/ru.ts +5 -15
- package/src/tool/avifAPng/i18n/sv.ts +4 -14
- package/src/tool/avifAPng/i18n/tr.ts +1 -11
- package/src/tool/avifAPng/i18n/zh.ts +3 -13
- package/src/tool/avifAPng/seo.astro +2 -1
- package/src/tool/avifAWebp/bibliography.ts +12 -0
- package/src/tool/avifAWebp/entry.ts +2 -0
- package/src/tool/avifAWebp/i18n/de.ts +6 -16
- package/src/tool/avifAWebp/i18n/en.ts +6 -16
- package/src/tool/avifAWebp/i18n/es.ts +6 -16
- package/src/tool/avifAWebp/i18n/fr.ts +13 -23
- package/src/tool/avifAWebp/i18n/id.ts +6 -16
- package/src/tool/avifAWebp/i18n/it.ts +1 -11
- package/src/tool/avifAWebp/i18n/ja.ts +1 -11
- package/src/tool/avifAWebp/i18n/ko.ts +2 -12
- package/src/tool/avifAWebp/i18n/nl.ts +6 -16
- package/src/tool/avifAWebp/i18n/pl.ts +6 -16
- package/src/tool/avifAWebp/i18n/pt.ts +6 -16
- package/src/tool/avifAWebp/i18n/ru.ts +7 -17
- package/src/tool/avifAWebp/i18n/sv.ts +6 -16
- package/src/tool/avifAWebp/i18n/tr.ts +2 -12
- package/src/tool/avifAWebp/i18n/zh.ts +6 -16
- package/src/tool/avifAWebp/seo.astro +2 -1
- package/src/tool/bmpAJpg/bibliography.ts +12 -0
- package/src/tool/bmpAJpg/entry.ts +2 -0
- package/src/tool/bmpAJpg/i18n/de.ts +1 -11
- package/src/tool/bmpAJpg/i18n/en.ts +1 -11
- package/src/tool/bmpAJpg/i18n/es.ts +1 -11
- package/src/tool/bmpAJpg/i18n/fr.ts +9 -19
- package/src/tool/bmpAJpg/i18n/id.ts +1 -11
- package/src/tool/bmpAJpg/i18n/it.ts +1 -11
- package/src/tool/bmpAJpg/i18n/ja.ts +1 -11
- package/src/tool/bmpAJpg/i18n/ko.ts +1 -11
- package/src/tool/bmpAJpg/i18n/nl.ts +1 -11
- package/src/tool/bmpAJpg/i18n/pl.ts +1 -11
- package/src/tool/bmpAJpg/i18n/pt.ts +1 -11
- package/src/tool/bmpAJpg/i18n/ru.ts +5 -15
- package/src/tool/bmpAJpg/i18n/sv.ts +1 -11
- package/src/tool/bmpAJpg/i18n/tr.ts +1 -11
- package/src/tool/bmpAJpg/i18n/zh.ts +1 -11
- package/src/tool/bmpAJpg/seo.astro +2 -1
- package/src/tool/bmpAPng/bibliography.ts +12 -0
- package/src/tool/bmpAPng/entry.ts +2 -0
- package/src/tool/bmpAPng/i18n/de.ts +2 -12
- package/src/tool/bmpAPng/i18n/en.ts +3 -13
- package/src/tool/bmpAPng/i18n/es.ts +2 -12
- package/src/tool/bmpAPng/i18n/fr.ts +12 -22
- package/src/tool/bmpAPng/i18n/id.ts +2 -12
- package/src/tool/bmpAPng/i18n/it.ts +2 -12
- package/src/tool/bmpAPng/i18n/ja.ts +1 -11
- package/src/tool/bmpAPng/i18n/ko.ts +1 -11
- package/src/tool/bmpAPng/i18n/nl.ts +2 -12
- package/src/tool/bmpAPng/i18n/pl.ts +2 -12
- package/src/tool/bmpAPng/i18n/pt.ts +2 -12
- package/src/tool/bmpAPng/i18n/ru.ts +9 -19
- package/src/tool/bmpAPng/i18n/sv.ts +2 -12
- package/src/tool/bmpAPng/i18n/tr.ts +1 -11
- package/src/tool/bmpAPng/i18n/zh.ts +1 -11
- package/src/tool/bmpAPng/seo.astro +2 -1
- package/src/tool/bmpAWebp/bibliography.ts +12 -0
- package/src/tool/bmpAWebp/entry.ts +2 -0
- package/src/tool/bmpAWebp/i18n/de.ts +8 -18
- package/src/tool/bmpAWebp/i18n/en.ts +8 -18
- package/src/tool/bmpAWebp/i18n/es.ts +8 -18
- package/src/tool/bmpAWebp/i18n/fr.ts +13 -23
- package/src/tool/bmpAWebp/i18n/id.ts +8 -18
- package/src/tool/bmpAWebp/i18n/it.ts +8 -18
- package/src/tool/bmpAWebp/i18n/ja.ts +7 -17
- package/src/tool/bmpAWebp/i18n/ko.ts +7 -17
- package/src/tool/bmpAWebp/i18n/nl.ts +8 -18
- package/src/tool/bmpAWebp/i18n/pl.ts +8 -18
- package/src/tool/bmpAWebp/i18n/pt.ts +8 -18
- package/src/tool/bmpAWebp/i18n/ru.ts +10 -20
- package/src/tool/bmpAWebp/i18n/sv.ts +8 -18
- package/src/tool/bmpAWebp/i18n/tr.ts +8 -18
- package/src/tool/bmpAWebp/i18n/zh.ts +8 -18
- package/src/tool/bmpAWebp/seo.astro +2 -1
- package/src/tool/gifAJpg/bibliography.ts +12 -0
- package/src/tool/gifAJpg/entry.ts +2 -0
- package/src/tool/gifAJpg/i18n/de.ts +1 -11
- package/src/tool/gifAJpg/i18n/en.ts +1 -11
- package/src/tool/gifAJpg/i18n/es.ts +1 -11
- package/src/tool/gifAJpg/i18n/fr.ts +9 -19
- package/src/tool/gifAJpg/i18n/id.ts +1 -11
- package/src/tool/gifAJpg/i18n/it.ts +1 -11
- package/src/tool/gifAJpg/i18n/ja.ts +1 -11
- package/src/tool/gifAJpg/i18n/ko.ts +1 -11
- package/src/tool/gifAJpg/i18n/nl.ts +1 -11
- package/src/tool/gifAJpg/i18n/pl.ts +1 -11
- package/src/tool/gifAJpg/i18n/pt.ts +1 -11
- package/src/tool/gifAJpg/i18n/ru.ts +2 -12
- package/src/tool/gifAJpg/i18n/sv.ts +1 -11
- package/src/tool/gifAJpg/i18n/tr.ts +1 -11
- package/src/tool/gifAJpg/i18n/zh.ts +1 -11
- package/src/tool/gifAJpg/seo.astro +2 -1
- package/src/tool/gifAPng/bibliography.ts +12 -0
- package/src/tool/gifAPng/entry.ts +2 -0
- package/src/tool/gifAPng/i18n/de.ts +2 -12
- package/src/tool/gifAPng/i18n/en.ts +3 -13
- package/src/tool/gifAPng/i18n/es.ts +2 -12
- package/src/tool/gifAPng/i18n/fr.ts +11 -21
- package/src/tool/gifAPng/i18n/id.ts +2 -12
- package/src/tool/gifAPng/i18n/it.ts +2 -12
- package/src/tool/gifAPng/i18n/ja.ts +1 -11
- package/src/tool/gifAPng/i18n/ko.ts +1 -11
- package/src/tool/gifAPng/i18n/nl.ts +2 -12
- package/src/tool/gifAPng/i18n/pl.ts +3 -13
- package/src/tool/gifAPng/i18n/pt.ts +2 -12
- package/src/tool/gifAPng/i18n/ru.ts +3 -13
- package/src/tool/gifAPng/i18n/sv.ts +3 -13
- package/src/tool/gifAPng/i18n/tr.ts +1 -11
- package/src/tool/gifAPng/i18n/zh.ts +2 -12
- package/src/tool/gifAPng/seo.astro +2 -1
- package/src/tool/gifAWebp/bibliography.ts +12 -0
- package/src/tool/gifAWebp/entry.ts +2 -0
- package/src/tool/gifAWebp/i18n/de.ts +3 -13
- package/src/tool/gifAWebp/i18n/en.ts +3 -13
- package/src/tool/gifAWebp/i18n/es.ts +1 -11
- package/src/tool/gifAWebp/i18n/fr.ts +11 -21
- package/src/tool/gifAWebp/i18n/id.ts +3 -13
- package/src/tool/gifAWebp/i18n/it.ts +1 -11
- package/src/tool/gifAWebp/i18n/ja.ts +1 -11
- package/src/tool/gifAWebp/i18n/ko.ts +1 -11
- package/src/tool/gifAWebp/i18n/nl.ts +3 -13
- package/src/tool/gifAWebp/i18n/pl.ts +3 -13
- package/src/tool/gifAWebp/i18n/pt.ts +3 -13
- package/src/tool/gifAWebp/i18n/ru.ts +7 -17
- package/src/tool/gifAWebp/i18n/sv.ts +3 -13
- package/src/tool/gifAWebp/i18n/tr.ts +1 -11
- package/src/tool/gifAWebp/i18n/zh.ts +4 -14
- package/src/tool/gifAWebp/seo.astro +2 -1
- package/src/tool/imagenBase64/bibliography.ts +12 -0
- package/src/tool/imagenBase64/component.astro +0 -301
- package/src/tool/imagenBase64/entry.ts +2 -0
- package/src/tool/imagenBase64/i18n/de.ts +7 -17
- package/src/tool/imagenBase64/i18n/en.ts +7 -17
- package/src/tool/imagenBase64/i18n/es.ts +7 -17
- package/src/tool/imagenBase64/i18n/fr.ts +17 -27
- package/src/tool/imagenBase64/i18n/id.ts +7 -17
- package/src/tool/imagenBase64/i18n/it.ts +6 -16
- package/src/tool/imagenBase64/i18n/ja.ts +1 -11
- package/src/tool/imagenBase64/i18n/ko.ts +1 -11
- package/src/tool/imagenBase64/i18n/nl.ts +7 -17
- package/src/tool/imagenBase64/i18n/pl.ts +7 -17
- package/src/tool/imagenBase64/i18n/pt.ts +7 -17
- package/src/tool/imagenBase64/i18n/ru.ts +9 -19
- package/src/tool/imagenBase64/i18n/sv.ts +7 -17
- package/src/tool/imagenBase64/i18n/tr.ts +2 -12
- package/src/tool/imagenBase64/i18n/zh.ts +7 -17
- package/src/tool/imagenBase64/image-to-base64-converter.css +299 -0
- package/src/tool/imagenBase64/seo.astro +2 -1
- package/src/tool/jpgAIco/bibliography.ts +12 -0
- package/src/tool/jpgAIco/entry.ts +2 -0
- package/src/tool/jpgAIco/i18n/de.ts +9 -19
- package/src/tool/jpgAIco/i18n/en.ts +9 -19
- package/src/tool/jpgAIco/i18n/es.ts +7 -17
- package/src/tool/jpgAIco/i18n/fr.ts +13 -23
- package/src/tool/jpgAIco/i18n/id.ts +9 -19
- package/src/tool/jpgAIco/i18n/it.ts +3 -13
- package/src/tool/jpgAIco/i18n/ja.ts +2 -12
- package/src/tool/jpgAIco/i18n/ko.ts +2 -12
- package/src/tool/jpgAIco/i18n/nl.ts +9 -19
- package/src/tool/jpgAIco/i18n/pl.ts +9 -19
- package/src/tool/jpgAIco/i18n/pt.ts +9 -19
- package/src/tool/jpgAIco/i18n/ru.ts +11 -21
- package/src/tool/jpgAIco/i18n/sv.ts +9 -19
- package/src/tool/jpgAIco/i18n/tr.ts +3 -13
- package/src/tool/jpgAIco/i18n/zh.ts +9 -19
- package/src/tool/jpgAIco/seo.astro +2 -1
- package/src/tool/jpgAPng/bibliography.ts +12 -0
- package/src/tool/jpgAPng/entry.ts +2 -0
- package/src/tool/jpgAPng/i18n/de.ts +7 -17
- package/src/tool/jpgAPng/i18n/en.ts +9 -19
- package/src/tool/jpgAPng/i18n/es.ts +7 -17
- package/src/tool/jpgAPng/i18n/fr.ts +13 -23
- package/src/tool/jpgAPng/i18n/id.ts +7 -17
- package/src/tool/jpgAPng/i18n/it.ts +5 -15
- package/src/tool/jpgAPng/i18n/ja.ts +3 -13
- package/src/tool/jpgAPng/i18n/ko.ts +3 -13
- package/src/tool/jpgAPng/i18n/nl.ts +7 -17
- package/src/tool/jpgAPng/i18n/pl.ts +7 -17
- package/src/tool/jpgAPng/i18n/pt.ts +7 -17
- package/src/tool/jpgAPng/i18n/ru.ts +10 -20
- package/src/tool/jpgAPng/i18n/sv.ts +7 -17
- package/src/tool/jpgAPng/i18n/tr.ts +6 -16
- package/src/tool/jpgAPng/i18n/zh.ts +8 -18
- package/src/tool/jpgAPng/seo.astro +2 -1
- package/src/tool/jpgAWebp/bibliography.ts +12 -0
- package/src/tool/jpgAWebp/entry.ts +2 -0
- package/src/tool/jpgAWebp/i18n/de.ts +10 -20
- package/src/tool/jpgAWebp/i18n/en.ts +10 -20
- package/src/tool/jpgAWebp/i18n/es.ts +4 -14
- package/src/tool/jpgAWebp/i18n/fr.ts +16 -26
- package/src/tool/jpgAWebp/i18n/id.ts +10 -20
- package/src/tool/jpgAWebp/i18n/it.ts +6 -16
- package/src/tool/jpgAWebp/i18n/ja.ts +2 -12
- package/src/tool/jpgAWebp/i18n/ko.ts +3 -13
- package/src/tool/jpgAWebp/i18n/nl.ts +10 -20
- package/src/tool/jpgAWebp/i18n/pl.ts +10 -20
- package/src/tool/jpgAWebp/i18n/pt.ts +10 -20
- package/src/tool/jpgAWebp/i18n/ru.ts +10 -20
- package/src/tool/jpgAWebp/i18n/sv.ts +10 -20
- package/src/tool/jpgAWebp/i18n/tr.ts +5 -15
- package/src/tool/jpgAWebp/i18n/zh.ts +9 -19
- package/src/tool/jpgAWebp/seo.astro +2 -1
- package/src/tool/pngAIco/bibliography.ts +12 -0
- package/src/tool/pngAIco/entry.ts +2 -0
- package/src/tool/pngAIco/i18n/de.ts +8 -18
- package/src/tool/pngAIco/i18n/en.ts +8 -18
- package/src/tool/pngAIco/i18n/es.ts +8 -18
- package/src/tool/pngAIco/i18n/fr.ts +14 -24
- package/src/tool/pngAIco/i18n/id.ts +8 -18
- package/src/tool/pngAIco/i18n/it.ts +4 -14
- package/src/tool/pngAIco/i18n/ja.ts +2 -12
- package/src/tool/pngAIco/i18n/ko.ts +2 -12
- package/src/tool/pngAIco/i18n/nl.ts +8 -18
- package/src/tool/pngAIco/i18n/pl.ts +8 -18
- package/src/tool/pngAIco/i18n/pt.ts +8 -18
- package/src/tool/pngAIco/i18n/ru.ts +11 -21
- package/src/tool/pngAIco/i18n/sv.ts +8 -18
- package/src/tool/pngAIco/i18n/tr.ts +7 -17
- package/src/tool/pngAIco/i18n/zh.ts +8 -18
- package/src/tool/pngAIco/seo.astro +2 -1
- package/src/tool/pngAJpg/bibliography.ts +12 -0
- package/src/tool/pngAJpg/entry.ts +2 -0
- package/src/tool/pngAJpg/i18n/de.ts +1 -11
- package/src/tool/pngAJpg/i18n/en.ts +1 -11
- package/src/tool/pngAJpg/i18n/es.ts +1 -11
- package/src/tool/pngAJpg/i18n/fr.ts +3 -13
- package/src/tool/pngAJpg/i18n/id.ts +1 -11
- package/src/tool/pngAJpg/i18n/it.ts +1 -11
- package/src/tool/pngAJpg/i18n/ja.ts +1 -11
- package/src/tool/pngAJpg/i18n/ko.ts +1 -11
- package/src/tool/pngAJpg/i18n/nl.ts +1 -11
- package/src/tool/pngAJpg/i18n/pl.ts +7 -17
- package/src/tool/pngAJpg/i18n/pt.ts +1 -11
- package/src/tool/pngAJpg/i18n/ru.ts +9 -19
- package/src/tool/pngAJpg/i18n/sv.ts +1 -11
- package/src/tool/pngAJpg/i18n/tr.ts +1 -11
- package/src/tool/pngAJpg/i18n/zh.ts +6 -16
- package/src/tool/pngAJpg/seo.astro +2 -1
- package/src/tool/pngAWebp/bibliography.ts +16 -0
- package/src/tool/pngAWebp/entry.ts +2 -0
- package/src/tool/pngAWebp/i18n/de.ts +7 -21
- package/src/tool/pngAWebp/i18n/en.ts +7 -21
- package/src/tool/pngAWebp/i18n/es.ts +6 -20
- package/src/tool/pngAWebp/i18n/fr.ts +13 -27
- package/src/tool/pngAWebp/i18n/id.ts +7 -21
- package/src/tool/pngAWebp/i18n/it.ts +3 -17
- package/src/tool/pngAWebp/i18n/ja.ts +2 -16
- package/src/tool/pngAWebp/i18n/ko.ts +2 -16
- package/src/tool/pngAWebp/i18n/nl.ts +7 -21
- package/src/tool/pngAWebp/i18n/pl.ts +7 -21
- package/src/tool/pngAWebp/i18n/pt.ts +6 -20
- package/src/tool/pngAWebp/i18n/ru.ts +8 -22
- package/src/tool/pngAWebp/i18n/sv.ts +7 -21
- package/src/tool/pngAWebp/i18n/tr.ts +6 -20
- package/src/tool/pngAWebp/i18n/zh.ts +6 -20
- package/src/tool/pngAWebp/seo.astro +2 -1
- package/src/tool/svgAJpg/bibliography.ts +12 -0
- package/src/tool/svgAJpg/entry.ts +2 -0
- package/src/tool/svgAJpg/i18n/de.ts +2 -12
- package/src/tool/svgAJpg/i18n/en.ts +1 -11
- package/src/tool/svgAJpg/i18n/es.ts +1 -11
- package/src/tool/svgAJpg/i18n/fr.ts +6 -16
- package/src/tool/svgAJpg/i18n/id.ts +1 -11
- package/src/tool/svgAJpg/i18n/it.ts +1 -11
- package/src/tool/svgAJpg/i18n/ja.ts +1 -11
- package/src/tool/svgAJpg/i18n/ko.ts +1 -11
- package/src/tool/svgAJpg/i18n/nl.ts +1 -11
- package/src/tool/svgAJpg/i18n/pl.ts +1 -11
- package/src/tool/svgAJpg/i18n/pt.ts +1 -11
- package/src/tool/svgAJpg/i18n/ru.ts +3 -13
- package/src/tool/svgAJpg/i18n/sv.ts +1 -11
- package/src/tool/svgAJpg/i18n/tr.ts +1 -11
- package/src/tool/svgAJpg/i18n/zh.ts +1 -11
- package/src/tool/svgAJpg/seo.astro +2 -1
- package/src/tool/svgAPng/bibliography.ts +12 -0
- package/src/tool/svgAPng/entry.ts +2 -0
- package/src/tool/svgAPng/i18n/de.ts +3 -13
- package/src/tool/svgAPng/i18n/en.ts +3 -13
- package/src/tool/svgAPng/i18n/es.ts +1 -11
- package/src/tool/svgAPng/i18n/fr.ts +9 -19
- package/src/tool/svgAPng/i18n/id.ts +3 -13
- package/src/tool/svgAPng/i18n/it.ts +3 -13
- package/src/tool/svgAPng/i18n/ja.ts +1 -11
- package/src/tool/svgAPng/i18n/ko.ts +1 -11
- package/src/tool/svgAPng/i18n/nl.ts +3 -13
- package/src/tool/svgAPng/i18n/pl.ts +3 -13
- package/src/tool/svgAPng/i18n/pt.ts +3 -13
- package/src/tool/svgAPng/i18n/ru.ts +5 -15
- package/src/tool/svgAPng/i18n/sv.ts +3 -13
- package/src/tool/svgAPng/i18n/tr.ts +3 -13
- package/src/tool/svgAPng/i18n/zh.ts +3 -13
- package/src/tool/svgAPng/seo.astro +2 -1
- package/src/tool/webpAIco/bibliography.ts +12 -0
- package/src/tool/webpAIco/entry.ts +2 -0
- package/src/tool/webpAIco/i18n/de.ts +1 -11
- package/src/tool/webpAIco/i18n/en.ts +1 -11
- package/src/tool/webpAIco/i18n/es.ts +1 -11
- package/src/tool/webpAIco/i18n/fr.ts +5 -15
- package/src/tool/webpAIco/i18n/id.ts +1 -11
- package/src/tool/webpAIco/i18n/it.ts +1 -11
- package/src/tool/webpAIco/i18n/ja.ts +1 -11
- package/src/tool/webpAIco/i18n/ko.ts +1 -11
- package/src/tool/webpAIco/i18n/nl.ts +1 -11
- package/src/tool/webpAIco/i18n/pl.ts +1 -11
- package/src/tool/webpAIco/i18n/pt.ts +1 -11
- package/src/tool/webpAIco/i18n/ru.ts +3 -13
- package/src/tool/webpAIco/i18n/sv.ts +1 -11
- package/src/tool/webpAIco/i18n/tr.ts +1 -11
- package/src/tool/webpAIco/i18n/zh.ts +1 -12
- package/src/tool/webpAIco/seo.astro +2 -1
- package/src/tool/webpAJpg/bibliography.ts +16 -0
- package/src/tool/webpAJpg/entry.ts +2 -0
- package/src/tool/webpAJpg/i18n/de.ts +3 -17
- package/src/tool/webpAJpg/i18n/en.ts +3 -17
- package/src/tool/webpAJpg/i18n/es.ts +1 -15
- package/src/tool/webpAJpg/i18n/fr.ts +10 -24
- package/src/tool/webpAJpg/i18n/id.ts +3 -17
- package/src/tool/webpAJpg/i18n/it.ts +2 -16
- package/src/tool/webpAJpg/i18n/ja.ts +1 -15
- package/src/tool/webpAJpg/i18n/ko.ts +1 -15
- package/src/tool/webpAJpg/i18n/nl.ts +2 -16
- package/src/tool/webpAJpg/i18n/pl.ts +3 -17
- package/src/tool/webpAJpg/i18n/pt.ts +3 -17
- package/src/tool/webpAJpg/i18n/ru.ts +7 -21
- package/src/tool/webpAJpg/i18n/sv.ts +3 -17
- package/src/tool/webpAJpg/i18n/tr.ts +2 -16
- package/src/tool/webpAJpg/i18n/zh.ts +2 -16
- package/src/tool/webpAJpg/seo.astro +2 -1
- package/src/tool/webpAPng/bibliography.ts +16 -0
- package/src/tool/webpAPng/entry.ts +2 -0
- package/src/tool/webpAPng/i18n/de.ts +3 -17
- package/src/tool/webpAPng/i18n/en.ts +3 -17
- package/src/tool/webpAPng/i18n/es.ts +1 -15
- package/src/tool/webpAPng/i18n/fr.ts +9 -23
- package/src/tool/webpAPng/i18n/id.ts +3 -17
- package/src/tool/webpAPng/i18n/it.ts +3 -17
- package/src/tool/webpAPng/i18n/ja.ts +1 -15
- package/src/tool/webpAPng/i18n/ko.ts +1 -15
- package/src/tool/webpAPng/i18n/nl.ts +3 -17
- package/src/tool/webpAPng/i18n/pl.ts +3 -17
- package/src/tool/webpAPng/i18n/pt.ts +3 -17
- package/src/tool/webpAPng/i18n/ru.ts +4 -18
- package/src/tool/webpAPng/i18n/sv.ts +3 -17
- package/src/tool/webpAPng/i18n/tr.ts +2 -17
- package/src/tool/webpAPng/i18n/zh.ts +3 -17
- package/src/tool/webpAPng/seo.astro +2 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ImagenBase64LocaleContent } from '../index';
|
|
2
3
|
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
4
|
import type { ImageToBase64UI } from '../index';
|
|
@@ -60,17 +61,6 @@ const howTo: ImagenBase64LocaleContent['howTo'] = [
|
|
|
60
61
|
},
|
|
61
62
|
];
|
|
62
63
|
|
|
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 Encoding RFC 4648',
|
|
70
|
-
url: 'https://datatracker.ietf.org/doc/html/rfc4648',
|
|
71
|
-
},
|
|
72
|
-
];
|
|
73
|
-
|
|
74
64
|
const seo: ImagenBase64LocaleContent['seo'] = [
|
|
75
65
|
{
|
|
76
66
|
type: 'title',
|
|
@@ -79,7 +69,7 @@ const seo: ImagenBase64LocaleContent['seo'] = [
|
|
|
79
69
|
},
|
|
80
70
|
{
|
|
81
71
|
type: 'paragraph',
|
|
82
|
-
html: 'Base64 是一种编码技术, 它将二进制数据 (如图片) 转换为纯 ASCII 文本字符串。结果是一个 Data URI: 一个以 <code>data:image/png;base64,...</code> 开头的自包含 URL, 包含整个编码后的图片。通过将此代码直接嵌入 HTML、CSS 或 JSON, 图片无需任何额外的服务器 HTTP
|
|
72
|
+
html: 'Base64 是一种编码技术, 它将二进制数据 (如图片) 转换为纯 ASCII 文本字符串。结果是一个 Data URI: 一个以 <code>data:image/png;base64,...</code> 开头的自包含 URL, 包含整个编码后的图片。通过将此代码直接嵌入 HTML、CSS 或 JSON, 图片无需任何额外的服务器 HTTP 请求即可加载-零网络延迟, 即时加载。',
|
|
83
73
|
},
|
|
84
74
|
{
|
|
85
75
|
type: 'title',
|
|
@@ -88,7 +78,7 @@ const seo: ImagenBase64LocaleContent['seo'] = [
|
|
|
88
78
|
},
|
|
89
79
|
{
|
|
90
80
|
type: 'paragraph',
|
|
91
|
-
html: '支持 Base64 的主要理由是消除网络请求。网页上的每张图片都意味着一次 HTTP 请求, 带有连接、DNS、TLS
|
|
81
|
+
html: '支持 Base64 的主要理由是消除网络请求。网页上的每张图片都意味着一次 HTTP 请求, 带有连接、DNS、TLS 握手和延迟的开销。对于非常小的关键图片-主应用程序图标、favicon、UI 图标-在 CSS 或 HTML 中以 Base64 嵌入可以消除该成本, 并保证它们即使在浏览器缓存任何内容之前也能立即显示。',
|
|
92
82
|
},
|
|
93
83
|
{
|
|
94
84
|
type: 'paragraph',
|
|
@@ -117,12 +107,12 @@ const seo: ImagenBase64LocaleContent['seo'] = [
|
|
|
117
107
|
},
|
|
118
108
|
{
|
|
119
109
|
type: 'paragraph',
|
|
120
|
-
html: '当您选择或拖动图片时, 浏览器的 <code>FileReader</code> API 直接从磁盘读取图片作为 RAM 中的二进制数据。 <code>readAsDataURL()</code> 方法使用 RFC 4648 算法将这些二进制字节转换为其 Base64
|
|
110
|
+
html: '当您选择或拖动图片时, 浏览器的 <code>FileReader</code> API 直接从磁盘读取图片作为 RAM 中的二进制数据。 <code>readAsDataURL()</code> 方法使用 RFC 4648 算法将这些二进制字节转换为其 Base64 表示形式-原始数据的每 3 个字节表示为 Base64 字母表中的 4 个 ASCII 字符。结果包含自动检测到的正确 MIME 类型。',
|
|
121
111
|
},
|
|
122
112
|
{
|
|
123
113
|
type: 'tip',
|
|
124
114
|
title: '仅对小图片使用 (10 KB 以下)',
|
|
125
|
-
html: 'Base64 会使文件大小增加约 33%: 10 KB 的图片变成约 13.3 KB 的文本。对于小图标和徽标, 此成本很小, 而消除 HTTP 请求可以弥补这一点。对于照片或大图片,
|
|
115
|
+
html: 'Base64 会使文件大小增加约 33%: 10 KB 的图片变成约 13.3 KB 的文本。对于小图标和徽标, 此成本很小, 而消除 HTTP 请求可以弥补这一点。对于照片或大图片, 大小开销非常大-对于大图片, 请务必使用 CDN。',
|
|
126
116
|
},
|
|
127
117
|
{
|
|
128
118
|
type: 'title',
|
|
@@ -131,7 +121,7 @@ const seo: ImagenBase64LocaleContent['seo'] = [
|
|
|
131
121
|
},
|
|
132
122
|
{
|
|
133
123
|
type: 'tip',
|
|
134
|
-
title: '大图片请避免使用 Base64
|
|
124
|
+
title: '大图片请避免使用 Base64: 请改用 CDN',
|
|
135
125
|
html: '如果图片大于 10-20 KB, Base64 会损害性能: 它会使 HTML/CSS 大小膨胀, 阻止浏览器独立缓存图片, 并在解析器处理巨型字符串时阻塞渲染。对于大图片, 请务必使用带有适当缓存头的 CDN 服务。',
|
|
136
126
|
},
|
|
137
127
|
{
|
|
@@ -141,7 +131,7 @@ const seo: ImagenBase64LocaleContent['seo'] = [
|
|
|
141
131
|
},
|
|
142
132
|
{
|
|
143
133
|
type: 'paragraph',
|
|
144
|
-
html: 'Data URI 兼容 100% 的现代浏览器和大多数电子邮件客户端。我们的工具通过 FileReader API
|
|
134
|
+
html: 'Data URI 兼容 100% 的现代浏览器和大多数电子邮件客户端。我们的工具通过 FileReader API 在本地处理所有内容-您的图片绝不会离开您的设备。这使其适用于公司内部图片、私人截图或您需要转换为 Base64 的任何机密视觉内容。',
|
|
145
135
|
},
|
|
146
136
|
{
|
|
147
137
|
type: 'title',
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
.base64-container {
|
|
2
|
+
width: 100%;
|
|
3
|
+
margin-bottom: 2rem;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.base64-card {
|
|
7
|
+
background: var(--bg-surface);
|
|
8
|
+
border: 1px solid var(--border-base);
|
|
9
|
+
border-radius: 20px;
|
|
10
|
+
|
|
11
|
+
--card-shadow: rgba(0, 0, 0, 0.04);
|
|
12
|
+
--card-shadow-blur: 20px;
|
|
13
|
+
--card-shadow-y: 4px;
|
|
14
|
+
|
|
15
|
+
box-shadow: 0 var(--card-shadow-y) var(--card-shadow-blur) var(--card-shadow);
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@media (min-width: 800px) {
|
|
22
|
+
.base64-card {
|
|
23
|
+
flex-direction: row;
|
|
24
|
+
min-height: 550px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.upload-section {
|
|
28
|
+
width: 40%;
|
|
29
|
+
border-right: 1px solid var(--border-base);
|
|
30
|
+
background: var(--bg-muted);
|
|
31
|
+
padding: 3rem 2rem;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.result-section {
|
|
35
|
+
flex: 1;
|
|
36
|
+
padding: 3rem 2rem;
|
|
37
|
+
display: flex;
|
|
38
|
+
flex-direction: column;
|
|
39
|
+
gap: 2rem;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.upload-section {
|
|
44
|
+
display: flex;
|
|
45
|
+
flex-direction: column;
|
|
46
|
+
justify-content: center;
|
|
47
|
+
padding: 2rem;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.result-section {
|
|
51
|
+
padding: 2rem;
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-direction: column;
|
|
54
|
+
gap: 1.5rem;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.drop-zone {
|
|
58
|
+
position: relative;
|
|
59
|
+
border: 2px dashed var(--border-base);
|
|
60
|
+
border-radius: 16px;
|
|
61
|
+
background: var(--bg-surface);
|
|
62
|
+
padding: 2rem 1rem;
|
|
63
|
+
text-align: center;
|
|
64
|
+
cursor: pointer;
|
|
65
|
+
transition: all 0.2s ease;
|
|
66
|
+
display: flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
justify-content: center;
|
|
69
|
+
min-height: 300px;
|
|
70
|
+
height: 100%;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.drop-zone:hover {
|
|
74
|
+
border-color: var(--accent);
|
|
75
|
+
background: var(--bg-muted);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.drop-content {
|
|
79
|
+
display: flex;
|
|
80
|
+
flex-direction: column;
|
|
81
|
+
align-items: center;
|
|
82
|
+
gap: 0.5rem;
|
|
83
|
+
pointer-events: none;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.upload-icon {
|
|
87
|
+
width: 40px;
|
|
88
|
+
height: 40px;
|
|
89
|
+
color: var(--text-muted);
|
|
90
|
+
margin-bottom: 0.5rem;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.drop-content h3 {
|
|
94
|
+
margin: 0;
|
|
95
|
+
font-size: 1.05rem;
|
|
96
|
+
font-weight: 700;
|
|
97
|
+
color: var(--text-base);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.drop-content p {
|
|
101
|
+
margin: 0;
|
|
102
|
+
font-size: 0.85rem;
|
|
103
|
+
color: var(--text-muted);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.file-input-native {
|
|
107
|
+
margin-top: 1.5rem;
|
|
108
|
+
padding: 0.5rem;
|
|
109
|
+
font-size: 0.85rem;
|
|
110
|
+
color: var(--text-muted);
|
|
111
|
+
background: var(--bg-surface);
|
|
112
|
+
border: 1px solid var(--border-base);
|
|
113
|
+
border-radius: 8px;
|
|
114
|
+
max-width: 100%;
|
|
115
|
+
cursor: pointer;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.drop-zone .file-input-native {
|
|
119
|
+
pointer-events: auto;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.preview-container {
|
|
123
|
+
position: absolute;
|
|
124
|
+
inset: 0;
|
|
125
|
+
background: var(--bg-surface);
|
|
126
|
+
z-index: 10;
|
|
127
|
+
display: flex;
|
|
128
|
+
flex-direction: column;
|
|
129
|
+
align-items: center;
|
|
130
|
+
justify-content: center;
|
|
131
|
+
padding: 1.25rem;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.preview-container.hidden {
|
|
135
|
+
display: none;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
#b64-image-preview {
|
|
139
|
+
max-width: 100%;
|
|
140
|
+
max-height: 250px;
|
|
141
|
+
object-fit: contain;
|
|
142
|
+
border-radius: 8px;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.clear-btn {
|
|
146
|
+
position: absolute;
|
|
147
|
+
top: 1rem;
|
|
148
|
+
right: 1rem;
|
|
149
|
+
background: var(--bg-surface);
|
|
150
|
+
border: 1px solid var(--border-base);
|
|
151
|
+
border-radius: 50%;
|
|
152
|
+
width: 32px;
|
|
153
|
+
height: 32px;
|
|
154
|
+
display: flex;
|
|
155
|
+
align-items: center;
|
|
156
|
+
justify-content: center;
|
|
157
|
+
color: var(--text-muted);
|
|
158
|
+
cursor: pointer;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.image-info {
|
|
162
|
+
position: absolute;
|
|
163
|
+
bottom: 1rem;
|
|
164
|
+
display: flex;
|
|
165
|
+
background: var(--bg-muted);
|
|
166
|
+
padding: 0.4rem 0.8rem;
|
|
167
|
+
border-radius: 8px;
|
|
168
|
+
border: 1px solid var(--border-base);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.info-pill {
|
|
172
|
+
font-size: 0.7rem;
|
|
173
|
+
font-weight: 600;
|
|
174
|
+
color: var(--text-muted);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.name-pill {
|
|
178
|
+
max-width: 120px;
|
|
179
|
+
overflow: hidden;
|
|
180
|
+
text-overflow: ellipsis;
|
|
181
|
+
white-space: nowrap;
|
|
182
|
+
padding-right: 0.5rem;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.size-pill {
|
|
186
|
+
color: var(--accent);
|
|
187
|
+
padding-left: 0.5rem;
|
|
188
|
+
border-left: 1px solid var(--border-base);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.output-group {
|
|
192
|
+
display: flex;
|
|
193
|
+
flex-direction: column;
|
|
194
|
+
gap: 0.5rem;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.output-header {
|
|
198
|
+
display: flex;
|
|
199
|
+
justify-content: space-between;
|
|
200
|
+
align-items: center;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.output-header label {
|
|
204
|
+
font-weight: 700;
|
|
205
|
+
color: var(--text-base);
|
|
206
|
+
font-size: 0.95rem;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.copy-btn {
|
|
210
|
+
background: var(--bg-surface);
|
|
211
|
+
border: 1px solid var(--border-base);
|
|
212
|
+
color: var(--text-base);
|
|
213
|
+
padding: 0.35rem 0.75rem;
|
|
214
|
+
border-radius: 6px;
|
|
215
|
+
font-size: 0.8rem;
|
|
216
|
+
font-weight: 700;
|
|
217
|
+
cursor: pointer;
|
|
218
|
+
transition: all 0.2s;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.copy-btn:hover {
|
|
222
|
+
background: var(--accent);
|
|
223
|
+
color: var(--text-on-primary);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.code-wrapper {
|
|
227
|
+
background: var(--bg-muted);
|
|
228
|
+
border: 1px solid var(--border-base);
|
|
229
|
+
border-radius: 12px;
|
|
230
|
+
padding: 1rem;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
textarea {
|
|
234
|
+
width: 100%;
|
|
235
|
+
min-height: 120px;
|
|
236
|
+
background: transparent;
|
|
237
|
+
border: none;
|
|
238
|
+
color: var(--text-base);
|
|
239
|
+
font-size: 0.85rem;
|
|
240
|
+
line-height: 1.5;
|
|
241
|
+
resize: none;
|
|
242
|
+
outline: none;
|
|
243
|
+
word-break: break-all;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.toast {
|
|
247
|
+
position: fixed;
|
|
248
|
+
bottom: 2rem;
|
|
249
|
+
left: 50%;
|
|
250
|
+
transform: translateX(-50%) translateY(20px);
|
|
251
|
+
background: var(--text-base);
|
|
252
|
+
color: var(--bg-surface);
|
|
253
|
+
padding: 0.75rem 1.5rem;
|
|
254
|
+
border-radius: 50px;
|
|
255
|
+
font-weight: 700;
|
|
256
|
+
font-size: 0.9rem;
|
|
257
|
+
display: flex;
|
|
258
|
+
align-items: center;
|
|
259
|
+
gap: 0.5rem;
|
|
260
|
+
|
|
261
|
+
--toast-shadow: rgba(0, 0, 0, 0.2);
|
|
262
|
+
--toast-shadow-y: 10px;
|
|
263
|
+
--toast-shadow-blur: 30px;
|
|
264
|
+
|
|
265
|
+
box-shadow: 0 var(--toast-shadow-y) var(--toast-shadow-blur) var(--toast-shadow);
|
|
266
|
+
opacity: 0;
|
|
267
|
+
pointer-events: none;
|
|
268
|
+
transition: all 0.2s;
|
|
269
|
+
z-index: 100;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.toast.show {
|
|
273
|
+
opacity: 1;
|
|
274
|
+
transform: translateX(-50%) translateY(0);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
@media (max-width: 600px) {
|
|
278
|
+
.card-section {
|
|
279
|
+
padding: 1rem;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.drop-zone {
|
|
283
|
+
min-height: 280px;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
@media (max-width: 768px) {
|
|
288
|
+
.card-section {
|
|
289
|
+
padding: 1.5rem;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.drop-zone {
|
|
293
|
+
min-height: 250px;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
textarea {
|
|
297
|
+
height: 120px;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
@@ -9,6 +9,7 @@ interface Props {
|
|
|
9
9
|
|
|
10
10
|
const { locale = 'es' } = Astro.props;
|
|
11
11
|
const content = await imagenBase64.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
12
13
|
---
|
|
13
14
|
|
|
14
|
-
{content && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BibliographyEntry } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const bibliography: BibliographyEntry[] = [
|
|
4
|
+
{
|
|
5
|
+
name: 'ICO Ikonografische Struktur und Systemnutzung',
|
|
6
|
+
url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
name: 'JPEG.org Standards',
|
|
10
|
+
url: 'https://jpeg.org/',
|
|
11
|
+
},
|
|
12
|
+
];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
3
|
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
4
|
import type { JpgAIcoLocaleContent } from '../index';
|
|
@@ -51,17 +52,6 @@ const howTo: JpgAIcoLocaleContent['howTo'] = [
|
|
|
51
52
|
},
|
|
52
53
|
];
|
|
53
54
|
|
|
54
|
-
const bibliography: JpgAIcoLocaleContent['bibliography'] = [
|
|
55
|
-
{
|
|
56
|
-
name: 'ICO Ikonografische Struktur und Systemnutzung',
|
|
57
|
-
url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
name: 'JPEG.org Standards',
|
|
61
|
-
url: 'https://jpeg.org/',
|
|
62
|
-
},
|
|
63
|
-
];
|
|
64
|
-
|
|
65
55
|
const seo: JpgAIcoLocaleContent['seo'] = [
|
|
66
56
|
{
|
|
67
57
|
type: 'title',
|
|
@@ -70,7 +60,7 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
70
60
|
},
|
|
71
61
|
{
|
|
72
62
|
type: 'paragraph',
|
|
73
|
-
html: 'Das <strong>ICO</strong>-Format ist der Microsoft-Standard für Symbole in Windows-Anwendungen und Favicons von Websites. Im Gegensatz zum einfachen Umbenennen eines JPG in .ico erfordert eine echte ICO-Datei eine spezifische binäre Struktur mit 22-Byte-Headern und einem eingebetteten Bildverzeichnis. <strong>JPG</strong> ist der am häufigsten gewählte Ausgangspunkt für die Erstellung dieser Icons
|
|
63
|
+
html: 'Das <strong>ICO</strong>-Format ist der Microsoft-Standard für Symbole in Windows-Anwendungen und Favicons von Websites. Im Gegensatz zum einfachen Umbenennen eines JPG in .ico erfordert eine echte ICO-Datei eine spezifische binäre Struktur mit 22-Byte-Headern und einem eingebetteten Bildverzeichnis. <strong>JPG</strong> ist der am häufigsten gewählte Ausgangspunkt für die Erstellung dieser Icons - ein Firmenlogo, ein Profilfoto oder jedes Bild, das Sie zum visuellen Erkennungsmerkmal Ihrer Anwendung oder Website machen möchten.',
|
|
74
64
|
},
|
|
75
65
|
{
|
|
76
66
|
type: 'title',
|
|
@@ -79,11 +69,11 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
79
69
|
},
|
|
80
70
|
{
|
|
81
71
|
type: 'paragraph',
|
|
82
|
-
html: '<strong>JPG</strong> ist ein Quellformat, kein Zielformat für Symbole. Es eignet sich hervorragend für Fotografien und Banner, ist jedoch inkompatibel mit Systemen, die Icons erfordern: Windows Explorer, die Lesezeichenleiste des Browsers, Desktop-Verknüpfungen oder PWA-Anwendungsmanifeste. Ein Betriebssystem oder Browser, der nach einem Icon sucht, erwartet das ICO-Format
|
|
72
|
+
html: '<strong>JPG</strong> ist ein Quellformat, kein Zielformat für Symbole. Es eignet sich hervorragend für Fotografien und Banner, ist jedoch inkompatibel mit Systemen, die Icons erfordern: Windows Explorer, die Lesezeichenleiste des Browsers, Desktop-Verknüpfungen oder PWA-Anwendungsmanifeste. Ein Betriebssystem oder Browser, der nach einem Icon sucht, erwartet das ICO-Format - und wenn es dieses nicht findet, wird ein generisches Symbol oder ein fehlerhaftes Quadrat angezeigt.',
|
|
83
73
|
},
|
|
84
74
|
{
|
|
85
75
|
type: 'paragraph',
|
|
86
|
-
html: 'Das <strong>ICO</strong>-Format wurde entwickelt, um mehrere Auflösungen in einer einzigen Datei zu speichern: <strong>16×16</strong> für die Lesezeichenleiste, <strong>32×32</strong> für Verknüpfungen, <strong>48×48</strong> für den Datei-Explorer und <strong>256×256</strong> für hochauflösende Displays. Browser und Betriebssysteme wählen automatisch die passende Auflösung basierend auf dem Anzeigekontext aus
|
|
76
|
+
html: 'Das <strong>ICO</strong>-Format wurde entwickelt, um mehrere Auflösungen in einer einzigen Datei zu speichern: <strong>16×16</strong> für die Lesezeichenleiste, <strong>32×32</strong> für Verknüpfungen, <strong>48×48</strong> für den Datei-Explorer und <strong>256×256</strong> für hochauflösende Displays. Browser und Betriebssysteme wählen automatisch die passende Auflösung basierend auf dem Anzeigekontext aus - der Benutzer muss nichts weiter tun.',
|
|
87
77
|
},
|
|
88
78
|
{
|
|
89
79
|
type: 'title',
|
|
@@ -111,8 +101,8 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
111
101
|
icon: 'mdi:laptop-mac',
|
|
112
102
|
highlight: true,
|
|
113
103
|
points: [
|
|
114
|
-
'Sofortige Geschwindigkeit
|
|
115
|
-
'Vollständige Privatsphäre
|
|
104
|
+
'Sofortige Geschwindigkeit - keine Netzwerklatenz',
|
|
105
|
+
'Vollständige Privatsphäre - 0 Byte werden extern gesendet',
|
|
116
106
|
'Keine Megabyte-Limits oder Dateianzahlbeschränkungen',
|
|
117
107
|
'Saubere Benutzeroberfläche, keine Werbung oder Tracking',
|
|
118
108
|
],
|
|
@@ -126,16 +116,16 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
126
116
|
},
|
|
127
117
|
{
|
|
128
118
|
type: 'paragraph',
|
|
129
|
-
html: 'Das JPG wird dekodiert und auf ein im Speicher befindliches <strong>HTML5 Canvas</strong> gezeichnet. Da das ICO-Format ein quadratisches Bild erfordert, erkennt die Engine automatisch, ob das JPG rechteckig ist, und schneidet es zu, indem sie den relevantesten Teil zentriert. Anschließend wird der Standard-Microsoft-ICO-Header mit der korrekten Magic Number (<code>00 00 01 00</code>), dem Bildverzeichnis und den kodierten Pixeldaten erstellt. Das Ergebnis ist eine echte binäre .ico-Datei
|
|
119
|
+
html: 'Das JPG wird dekodiert und auf ein im Speicher befindliches <strong>HTML5 Canvas</strong> gezeichnet. Da das ICO-Format ein quadratisches Bild erfordert, erkennt die Engine automatisch, ob das JPG rechteckig ist, und schneidet es zu, indem sie den relevantesten Teil zentriert. Anschließend wird der Standard-Microsoft-ICO-Header mit der korrekten Magic Number (<code>00 00 01 00</code>), dem Bildverzeichnis und den kodierten Pixeldaten erstellt. Das Ergebnis ist eine echte binäre .ico-Datei - kein umbenanntes PNG.',
|
|
130
120
|
},
|
|
131
121
|
{
|
|
132
122
|
type: 'paragraph',
|
|
133
|
-
html: 'Da JPG kein Alpha-Kanal besitzt, wird das resultierende ICO ebenfalls keine Transparenz aufweisen
|
|
123
|
+
html: 'Da JPG kein Alpha-Kanal besitzt, wird das resultierende ICO ebenfalls keine Transparenz aufweisen - es wird einen soliden Hintergrund haben, der vom Originalfoto übernommen wurde. Wenn Sie ein Favicon mit transparentem Hintergrund benötigen (zum Beispiel zur Anpassung an dunkle oder helle Lesezeichenleisten), ist der empfohlene Arbeitsablauf: Hintergrund in einem Editor entfernen, als PNG speichern und den PNG zu ICO Konverter verwenden.',
|
|
134
124
|
},
|
|
135
125
|
{
|
|
136
126
|
type: 'tip',
|
|
137
127
|
title: 'Tipp: Mehrere Auflösungen in einer einzigen ICO Datei',
|
|
138
|
-
html: 'ICO-Dateien können <strong>mehrere Auflösungen</strong> in einer einzigen Datei packen
|
|
128
|
+
html: 'ICO-Dateien können <strong>mehrere Auflösungen</strong> in einer einzigen Datei packen - der Browser oder das Betriebssystem wählt automatisch die passendste für den jeweiligen Kontext aus. Für das bestmögliche Ergebnis verwenden Sie ein quadratisches JPG mit mindestens <strong>256×256 Pixeln</strong> als Quelle: Dies gibt dem Konverter genügend Informationen, um scharfe 16×16, 32×32 und 48×48 Größen ohne Verpixelung zu generieren.',
|
|
139
129
|
},
|
|
140
130
|
{
|
|
141
131
|
type: 'title',
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
3
|
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
4
|
import type { JpgAIcoLocaleContent } from '../index';
|
|
@@ -51,17 +52,6 @@ const howTo: JpgAIcoLocaleContent['howTo'] = [
|
|
|
51
52
|
},
|
|
52
53
|
];
|
|
53
54
|
|
|
54
|
-
const bibliography: JpgAIcoLocaleContent['bibliography'] = [
|
|
55
|
-
{
|
|
56
|
-
name: 'ICO Iconographic Structure and System Usage',
|
|
57
|
-
url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
name: 'JPEG.org Standards',
|
|
61
|
-
url: 'https://jpeg.org/',
|
|
62
|
-
},
|
|
63
|
-
];
|
|
64
|
-
|
|
65
55
|
const seo: JpgAIcoLocaleContent['seo'] = [
|
|
66
56
|
{
|
|
67
57
|
type: 'title',
|
|
@@ -70,7 +60,7 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
70
60
|
},
|
|
71
61
|
{
|
|
72
62
|
type: 'paragraph',
|
|
73
|
-
html: 'The <strong>ICO</strong> format is Microsoft\'s standard for Windows application icons and website favicons. Unlike simply renaming a JPG as .ico, a genuine ICO file requires a specific binary structure with 22-byte headers and an embedded image directory. <strong>JPG</strong> is the most common starting point for creating these icons
|
|
63
|
+
html: 'The <strong>ICO</strong> format is Microsoft\'s standard for Windows application icons and website favicons. Unlike simply renaming a JPG as .ico, a genuine ICO file requires a specific binary structure with 22-byte headers and an embedded image directory. <strong>JPG</strong> is the most common starting point for creating these icons - a company logo, a profile photo, or any image you want to turn into the visual icon of your application or website.',
|
|
74
64
|
},
|
|
75
65
|
{
|
|
76
66
|
type: 'title',
|
|
@@ -79,11 +69,11 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
79
69
|
},
|
|
80
70
|
{
|
|
81
71
|
type: 'paragraph',
|
|
82
|
-
html: '<strong>JPG</strong> is a source format, not a destination for icons. Perfect for photographs and banners, but incompatible with systems that require icons: Windows Explorer, the browser\'s bookmark bar, desktop shortcuts, or PWA application manifests. An operating system or browser looking for an icon expects the ICO format
|
|
72
|
+
html: '<strong>JPG</strong> is a source format, not a destination for icons. Perfect for photographs and banners, but incompatible with systems that require icons: Windows Explorer, the browser\'s bookmark bar, desktop shortcuts, or PWA application manifests. An operating system or browser looking for an icon expects the ICO format - and if it doesn\'t find it, it will display a generic icon or a broken square.',
|
|
83
73
|
},
|
|
84
74
|
{
|
|
85
75
|
type: 'paragraph',
|
|
86
|
-
html: 'The <strong>ICO</strong> format was designed to contain multiple resolutions in a single file: <strong>16×16</strong> for the bookmark bar, <strong>32×32</strong> for shortcuts, <strong>48×48</strong> for the file explorer, and <strong>256×256</strong> for high-density displays. Browsers and operating systems automatically select the appropriate resolution based on the display context
|
|
76
|
+
html: 'The <strong>ICO</strong> format was designed to contain multiple resolutions in a single file: <strong>16×16</strong> for the bookmark bar, <strong>32×32</strong> for shortcuts, <strong>48×48</strong> for the file explorer, and <strong>256×256</strong> for high-density displays. Browsers and operating systems automatically select the appropriate resolution based on the display context - the user doesn\'t have to manage anything.',
|
|
87
77
|
},
|
|
88
78
|
{
|
|
89
79
|
type: 'title',
|
|
@@ -111,8 +101,8 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
111
101
|
icon: 'mdi:laptop-mac',
|
|
112
102
|
highlight: true,
|
|
113
103
|
points: [
|
|
114
|
-
'Instant speed
|
|
115
|
-
'Complete privacy
|
|
104
|
+
'Instant speed - zero network latency',
|
|
105
|
+
'Complete privacy - 0 bytes sent externally',
|
|
116
106
|
'No MB limits or file count restrictions',
|
|
117
107
|
'Clean interface, no ads or tracking',
|
|
118
108
|
],
|
|
@@ -126,16 +116,16 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
126
116
|
},
|
|
127
117
|
{
|
|
128
118
|
type: 'paragraph',
|
|
129
|
-
html: 'The JPG is decoded and drawn onto an in-memory <strong>HTML5 Canvas</strong>. Since the ICO format requires a square image, the engine automatically detects if the JPG is rectangular and crops it by centering the most relevant part. It then builds the standard Microsoft ICO header with the correct magic number (<code>00 00 01 00</code>), the image directory, and the encoded pixel data. The result is a genuine binary .ico file
|
|
119
|
+
html: 'The JPG is decoded and drawn onto an in-memory <strong>HTML5 Canvas</strong>. Since the ICO format requires a square image, the engine automatically detects if the JPG is rectangular and crops it by centering the most relevant part. It then builds the standard Microsoft ICO header with the correct magic number (<code>00 00 01 00</code>), the image directory, and the encoded pixel data. The result is a genuine binary .ico file - not a renamed PNG.',
|
|
130
120
|
},
|
|
131
121
|
{
|
|
132
122
|
type: 'paragraph',
|
|
133
|
-
html: 'Since JPG lacks an alpha channel, the resulting ICO will also have no transparency
|
|
123
|
+
html: 'Since JPG lacks an alpha channel, the resulting ICO will also have no transparency - it will have a solid background inherited from the original photograph. If you need a favicon with a transparent background (for example, to adapt to dark or light bookmark bars), the recommended workflow is: remove the background in an editor, save as PNG, and use the PNG to ICO converter.',
|
|
134
124
|
},
|
|
135
125
|
{
|
|
136
126
|
type: 'tip',
|
|
137
127
|
title: 'Tip: multiple resolutions in a single ICO',
|
|
138
|
-
html: 'ICO files can pack <strong>multiple resolutions</strong> into a single file
|
|
128
|
+
html: 'ICO files can pack <strong>multiple resolutions</strong> into a single file - the browser or OS automatically picks the most appropriate one for each context. For the best possible result, use a square JPG of at least <strong>256×256 pixels</strong> as your source: this gives the converter enough information to generate sharp 16×16, 32×32, and 48×48 sizes without pixelation.',
|
|
139
129
|
},
|
|
140
130
|
{
|
|
141
131
|
type: 'title',
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
|
|
2
3
|
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
3
4
|
import type { JpgAIcoLocaleContent } from '../index';
|
|
@@ -51,17 +52,6 @@ const howTo: JpgAIcoLocaleContent['howTo'] = [
|
|
|
51
52
|
},
|
|
52
53
|
];
|
|
53
54
|
|
|
54
|
-
const bibliography: JpgAIcoLocaleContent['bibliography'] = [
|
|
55
|
-
{
|
|
56
|
-
name: 'Estructura Iconográfica y Uso en Sistemas ICO',
|
|
57
|
-
url: 'https://en.wikipedia.org/wiki/ICO_(file_format)',
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
name: 'JPEG.org Standards',
|
|
61
|
-
url: 'https://jpeg.org/',
|
|
62
|
-
},
|
|
63
|
-
];
|
|
64
|
-
|
|
65
55
|
const seo: JpgAIcoLocaleContent['seo'] = [
|
|
66
56
|
{
|
|
67
57
|
type: 'title',
|
|
@@ -70,7 +60,7 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
70
60
|
},
|
|
71
61
|
{
|
|
72
62
|
type: 'paragraph',
|
|
73
|
-
html: 'El formato <strong>ICO</strong> es el estándar de Microsoft para iconos de Windows y favicons de páginas web. A diferencia de simplemente renombrar un JPG como .ico, un archivo ICO genuino requiere una estructura binaria específica con cabeceras de 22 bytes y un directorio de imágenes embebido. El <strong>JPG</strong> es el punto de partida más común para crear estos iconos
|
|
63
|
+
html: 'El formato <strong>ICO</strong> es el estándar de Microsoft para iconos de Windows y favicons de páginas web. A diferencia de simplemente renombrar un JPG como .ico, un archivo ICO genuino requiere una estructura binaria específica con cabeceras de 22 bytes y un directorio de imágenes embebido. El <strong>JPG</strong> es el punto de partida más común para crear estos iconos - un logotipo de empresa, una fotografía de perfil o cualquier imagen que quieras convertir en el icono visual de tu aplicación o sitio web.',
|
|
74
64
|
},
|
|
75
65
|
{
|
|
76
66
|
type: 'title',
|
|
@@ -79,7 +69,7 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
79
69
|
},
|
|
80
70
|
{
|
|
81
71
|
type: 'paragraph',
|
|
82
|
-
html: 'El <strong>JPG</strong> es el formato de origen, no el destino. Perfectamente adecuado para fotografías y banners, pero incompatible con los sistemas que exigen iconos: Windows Explorer, la barra de favoritos del navegador, los accesos directos del escritorio o los manifest de aplicaciones PWA. Un sistema operativo o navegador que busca un icono espera el formato ICO
|
|
72
|
+
html: 'El <strong>JPG</strong> es el formato de origen, no el destino. Perfectamente adecuado para fotografías y banners, pero incompatible con los sistemas que exigen iconos: Windows Explorer, la barra de favoritos del navegador, los accesos directos del escritorio o los manifest de aplicaciones PWA. Un sistema operativo o navegador que busca un icono espera el formato ICO - y si no lo encuentra, mostrará un icono genérico o un cuadrado roto.',
|
|
83
73
|
},
|
|
84
74
|
{
|
|
85
75
|
type: 'paragraph',
|
|
@@ -111,8 +101,8 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
111
101
|
icon: 'mdi:laptop-mac',
|
|
112
102
|
highlight: true,
|
|
113
103
|
points: [
|
|
114
|
-
'Velocidad instantánea
|
|
115
|
-
'Privacidad total
|
|
104
|
+
'Velocidad instantánea - cero latencia de red',
|
|
105
|
+
'Privacidad total - 0 bytes enviados al exterior',
|
|
116
106
|
'Sin límites de MB ni de número de archivos',
|
|
117
107
|
'Interfaz limpia, sin anuncios ni rastreos',
|
|
118
108
|
],
|
|
@@ -130,12 +120,12 @@ const seo: JpgAIcoLocaleContent['seo'] = [
|
|
|
130
120
|
},
|
|
131
121
|
{
|
|
132
122
|
type: 'paragraph',
|
|
133
|
-
html: 'Dado que el JPG carece de canal alfa, el ICO resultante tampoco tendrá transparencia
|
|
123
|
+
html: 'Dado que el JPG carece de canal alfa, el ICO resultante tampoco tendrá transparencia - tendrá un fondo sólido heredado de la fotografía original. Si necesitas un favicon con fondo transparente (por ejemplo, para que se adapte a barras de favoritos oscuras o claras), el flujo recomendado es: elimina el fondo en un editor, guarda como PNG und usa el convertidor de PNG a ICO.',
|
|
134
124
|
},
|
|
135
125
|
{
|
|
136
126
|
type: 'tip',
|
|
137
127
|
title: 'Consejo: resoluciones múltiples en un solo ICO',
|
|
138
|
-
html: 'Los archivos ICO pueden empaquetar <strong>varias resoluciones</strong> en un único fichero
|
|
128
|
+
html: 'Los archivos ICO pueden empaquetar <strong>varias resoluciones</strong> en un único fichero - el navegador o el sistema operativo elige automáticamente la más adecuada según el contexto. Para el mejor resultado posible, usa como fuente un JPG cuadrado de al menos <strong>256×256 píxeles</strong>: así el convertidor tendrá suficiente información para generar con nitidez los tamaños 16×16, 32×32 und 48×48 sin pixelado.',
|
|
139
129
|
},
|
|
140
130
|
{
|
|
141
131
|
type: 'title',
|