Files
hugo-theme-stack/i18n/tr.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

79 lines
2.3 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 = "Menüyü Gizle"
darkMode = "Koyu Mod"
[list]
section = "Bölüm"
[list.page]
one = "{{ .Count }} makale"
other = "{{ .Count }} makale"
[list.subsection]
one = "Alt bölüm"
other = "Alt bölümler"
[article]
back = "Geri"
tableOfContents = "İçindekiler"
relatedContent = "Benzer içerikler"
lastUpdatedOn = "Son güncelleme"
[article.readingTime]
one = "{{ .Count }} dakika okuma süresi"
other = "{{ .Count }} dakika okuma süresi"
[article.alert]
note = "Not"
tip = "İpucu"
important = "Önemli"
warning = "Uyarı"
caution = "Dikkat"
[notFound]
title = "Bulunamadı"
subtitle = "Aradığınız sayfa mevcut değil."
[widget]
[widget.archives]
title = "Arşiv"
more = "Daha fazla"
[widget.tagCloud]
title = "Etiketler"
[widget.categoriesCloud]
title = "Kategoriler"
[search]
title = "Arama"
placeholder = "Birşeyler yazın..."
resultTitle = "#PAGES_COUNT sayfa (#TIME_SECONDS saniye)"
[footer]
builtWith = "{{ .Generator }} ile oluşturuldu."
designedBy = "{{ .Theme }} teması {{ .DesignedBy }} tarafından tasarlandı"
[cookies]
title = "Çerez Onayı"
text = "Tarayıcı deneyiminizi iyileştirmek ve site trafiğini analiz etmek için çerezler kullanıyoruz."
acceptAll = "Tümünü Kabul Et"
deny = "Reddet"
managePreferences = "Tercihleri yönet"
settingsTitle = "Çerez Tercihleri"
savePreferences = "Tercihleri kaydet"
cancel = "İptal"
footerLink = "Çerez ayarları"
commentsDisabled = "İşlevsel çerezleri kabul edene kadar yorumlar devre dışıdır."
[cookies.necessary]
title = "Gerekli"
text = "Bu çerezler web sitesinin çalışması için gereklidir ve devre dışı bırakılamaz."
[cookies.analytics]
title = "Analitik"
text = "Bu çerezler, ziyaretçilerin web sitemizle nasıl etkileşimde bulunduğunu anlamamıza yardımcı olur."
[cookies.functional]
title = "İşlevsel"
text = "Bu çerezler, yorumlar ve gömülü içerik gibi özellikleri etkinleştirir."