Files
hugo-theme-stack/i18n/be.toml
T
4ad88a327e feat: add GDPR cookie consent banner (#1216)
* feat: add GDPR cookie consent banner

Add a GDPR-compliant cookie consent banner that gates analytics (Google
Analytics) and functional cookies (comments) until user consent is given.

Features:
- Theme-consistent styling using CSS variables (light/dark mode)
- Settings panel with category toggles (necessary, analytics, functional)
- Consent stored in cookie for 365 days
- Google Analytics only loads after analytics consent
- Comments only load after functional consent
- Translations for all 32 supported languages
- Accessible with proper ARIA attributes and focus management

Configuration in hugo.yaml:
  params:
    cookies:
      enabled: true
      categories:
        analytics: true
        functional: true

When cookies.enabled is false, scripts load normally without consent gating.

Closes #412

* refactor: move consent-gated GA to cookies/analytics.html

Move Google Analytics consent logic to avoid shadowing Hugo's internal
`_internal/google_analytics.html` template.

Changes:
- Rename google_analytics.html → cookies/analytics.html
- Update head.html to conditionally load:
  - cookies.enabled=true: cookies/analytics.html (consent-gated)
  - cookies.enabled=false: Hugo's _internal/google_analytics.html
- Align cookies/analytics.html with Hugo's internal template:
  - Support Privacy.GoogleAnalytics.Disable setting
  - Support Privacy.GoogleAnalytics.RespectDoNotTrack setting
  - Add UA- prefix deprecation warning

Note: Custom JS is required for consent-gated GA because Hugo templates
render at build time, but consent happens at runtime. We cannot call
Hugo's internal template after the user grants consent - we must
dynamically inject the GA script via JavaScript.

* style: indent cookies/analytics.html

* refactor: don't use default, put default configurations in params.toml

* fix: don't use `description` as translation key because it's reserved and will throw error

* fix: remove footer/components/custom-font.html call

* fix: banner showSettings key

* style: indent comments/include

* Add missing article.alert translation back

* style: format i18n toml files

* style: indent head/head.html

* style adjustment

* style: add missing -

* style: format demo/config/params.toml

* style: remove redundant comments from cookies.scss

* style: update box-shadow for cookie banner content

---------

Co-authored-by: delize <4028612+delize@users.noreply.github.com>
Co-authored-by: Jimmy Cai <jimmy@cai.im>
2026-02-19 17:21:25 +01:00

77 lines
3.0 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
toggleMenu = "Паказаць/схаваць меню"
darkMode = "Цёмны рэжым"
[list]
section = "Раздзел"
[list.page]
one = "{{ .Count }} старонка"
few = "{{ .Count }} старонкі"
many = "{{ .Count }} старонак"
other = "{{ .Count }} старонкі"
[list.subsection]
one = "Падраздзел"
few = "Падраздзелы"
many = "Падраздзелы"
other = "Падраздзелы"
[article]
back = "Назад"
relatedContent = "Таксама рэкамендуем"
lastUpdatedOn = "Абноўлена"
tableOfContents = "Змест"
readingTime = "Час чытання: {{ .Count }} хв."
[article.alert]
note = "Заўвага"
tip = "Парада"
important = "Важна"
warning = "Папярэджанне"
caution = "Асцярога"
[notFound]
title = "Не знойдзена"
subtitle = "Запытваемая старонка не існуе"
[widget]
[widget.archives]
title = "Архівы"
more = "Яшчэ"
[widget.tagCloud]
title = "Тэгі"
[search]
title = "Пошук"
placeholder = "Увядзіце нешта..."
resultTitle = "Знайдзена #PAGES_COUNT старонак (за #TIME_SECONDS с.)"
[footer]
builtWith = "Створана пры дапамозе {{ .Generator }}"
designedBy = "Тэма {{ .Theme }}, дызайн {{ .DesignedBy }}"
[cookies]
title = "Згода на файлы cookie"
text = "Мы выкарыстоўваем файлы cookie для паляпшэння вашага досведу і аналізу трафіку сайта."
acceptAll = "Прыняць усё"
deny = "Адхіліць"
managePreferences = "Кіраваць налады"
settingsTitle = "Налады файлаў cookie"
savePreferences = "Захаваць налады"
cancel = "Скасаваць"
footerLink = "Налады файлаў cookie"
commentsDisabled = "Каментары адключаны, пакуль вы не прымеце функцыянальныя файлы cookie."
[cookies.necessary]
title = "Неабходныя"
text = "Гэтыя файлы cookie неабходныя для працы сайта і не могуць быць адключаны."
[cookies.analytics]
title = "Аналітыка"
text = "Гэтыя файлы cookie дапамагаюць нам зразумець, як наведвальнікі ўзаемадзейнічаюць з нашым сайтам."
[cookies.functional]
title = "Функцыянальныя"
text = "Гэтыя файлы cookie ўключаюць такія функцыі, як каментары і ўбудаваны кантэнт."