- home: map 9/12 gallery items to real filenames (Wohnzimmer-1 -> wohnzimmer2.png, Badezimmer-1 -> Bad.jpg, etc.); remove 3 items whose source images are missing - home: hero-bg.jpg -> Außenansicht-2.webp (file exists) - home: floorplan image -> /bilder/grundrisse/<name>.png (subdir + correct name) - layout: og:image fallback Aussenansicht-2.webp (ASCII) -> Außenansicht-2.png (UTF-8) - layout: hero-bg.jpg fallback -> Außenansicht-2.png (UTF-8) - Controller::render(): add $forceLocale param for legal pages - ImpressumController / DatenschutzController: force 'de' (TMG §5 / GDPR) so <html lang=de> is emitted regardless of cookie
29 lines
1.1 KiB
PHP
29 lines
1.1 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
namespace App\Controllers;
|
||
|
||
use App\Core\I18n;
|
||
use App\Core\Locale;
|
||
|
||
class DatenschutzController extends Controller
|
||
{
|
||
public function index(): void
|
||
{
|
||
// Legal pages (Datenschutzerklärung) must be served in German only by GDPR / German law.
|
||
// Force German locale for render() so <html lang="de"> + German meta are emitted
|
||
// regardless of cookie/Accept-Language.
|
||
$this->render('datenschutz/index', [
|
||
'pageTitle' => I18n::t('legal.privacy_h1', [], 'de') . ' – ' . I18n::t('site.title', [], 'de'),
|
||
'pageDescription' => I18n::t('legal.privacy_h1', [], 'de') . ' – ' . I18n::t('site.title', [], 'de'),
|
||
'robots' => 'noindex',
|
||
'canonical' => I18n::t('site.canonical_base', [], 'de') . '/datenschutz',
|
||
'ogLocale' => Locale::toOgLocale('de'),
|
||
'ogUrl' => I18n::t('site.canonical_base', [], 'de') . '/datenschutz',
|
||
'ogTitle' => I18n::t('legal.privacy_h1', [], 'de'),
|
||
'ogDescription' => I18n::t('legal.privacy_h1', [], 'de'),
|
||
], 'main', 'de');
|
||
}
|
||
}
|