b2in/dev/immobilien 07-05-2026/inject-ui-block.php

167 lines
7.7 KiB
PHP

<?php
declare(strict_types=1);
/**
* Insert (or refresh) the `ui` block into the Azizi real-estate language
* files. The block holds every German UI label that previously lived
* hardcoded inside the dev Blade templates.
*/
$files = [
__DIR__.'/../../resources/lang/de/immobilien-azizi.json',
__DIR__.'/../../resources/lang/en/immobilien-azizi.json',
];
$ui = [
'intro_eyebrow' => 'Kuratiert statt katalogisiert',
'featured_label' => 'Headline-Projekt',
'featured_marcel_heading' => 'Marcels Einschätzung',
'featured_stat_price' => 'Preis',
'featured_stat_handover' => 'Übergabe',
'featured_cta_detail' => ':title im Detail ansehen',
'featured_default_alt' => 'Headline-Projekt',
'districts_eyebrow' => 'Stadtteil-Kontext',
'grid_eyebrow' => 'Projektgrid',
'grid_title' => ':count Projekte im Vergleich',
'grid_intro' => 'Das Headline-Projekt steht bewusst als Flaggschiff oben. Die übrigen Adressen lassen sich nach Käuferlogik oder nach Stadtteil sortieren - so finden Sie schnell die Auswahl, die zu Ihrer Strategie passt.',
'filter_categories' => 'Kategorien',
'filter_districts' => 'Stadtteile',
'filter_summary' => ':categories Kategorien · :districts Stadtteil-Cluster',
'filter_count' => ':count Projekte',
'card_label_buyer' => 'Geeignet für',
'card_label_price' => 'Preis / Verfügbarkeit',
'card_label_unit' => 'Typ',
'card_cta' => 'Details ansehen',
'card_aria_open' => 'Details zu :title öffnen',
'back_to_top' => 'Zurück zum Anfang der Projektübersicht',
'back_to_top_short' => 'Zurück zum Anfang',
'mindset_positive_pill' => 'Passt gut',
'mindset_negative_pill' => 'Lieber vorsichtig',
'mindset_positive_title' => 'Dubai als Wachstumsentscheidung',
'mindset_negative_title' => 'Dubai braucht Entscheidungskraft',
'sidebar' => [
'toggle_open' => 'Sektionsübersicht öffnen',
'toggle_close' => 'Sektionsübersicht schließen',
'progress_label' => 'Lesefortschritt',
'sections' => [
['id' => 'intro', 'label' => 'Marcels Einordnung'],
['id' => 'featured', 'label' => 'Headline-Projekt'],
['id' => 'stadtteile', 'label' => 'Stadtteile'],
['id' => 'projekte', 'label' => 'Projekte'],
['id' => 'markt', 'label' => 'Marktkontext'],
['id' => 'prozess', 'label' => 'Kaufprozess'],
['id' => 'mindset', 'label' => 'Mindset-Check'],
['id' => 'einrichtung', 'label' => 'Einrichtung'],
['id' => 'kontakt', 'label' => 'Kontakt'],
],
],
'modal' => [
'header' => 'Projektdetails',
'close' => 'Projektfenster schließen',
'stat_price' => 'Preis / Verfügbarkeit',
'stat_handover' => 'Übergabe',
'stat_units' => 'Einheiten',
'section_investment' => 'Investment Case',
'official_description_label' => 'Aus dem offiziellen Azizi-Exposé (übersetzt)',
'gallery_heading' => 'Galerie',
'gallery_count_word' => 'Bilder',
'gallery_image_word' => 'Galerie Bild',
'gallery_zoom_suffix' => 'groß ansehen',
'for_whom' => 'Für wen eignet sich das Projekt?',
'hard_facts' => 'Harte Punkte für die Einordnung',
'source_heading' => 'Projektquelle',
'source_text' => 'Offizieller Azizi-Link als Projektanker. Preise und Verfügbarkeit werden vor Beratung aktuell geprüft.',
'azizi_link' => 'Azizi-Projektseite',
'seo_link' => 'SEO-Detailseite öffnen',
'next_step_heading' => 'Nächster Schritt',
'next_step_text' => 'Marcel prüft aktive Einheiten, aktuellen Zahlungsplan, Floor Plans und ob Resale oder Off-Plan für Ihre Strategie sinnvoller ist. Nutzen Sie dafür die Anfrage direkt unterhalb dieser Detailansicht.',
'request_eyebrow' => 'Direkte Anfrage',
'request_heading' => 'Verfügbarkeit prüfen lassen',
'request_text' => 'Senden Sie Ihre Anfrage direkt zu diesem Projekt. Wir prüfen Verfügbarkeit, Zahlungsplan und passende Einheit.',
'request_submit' => 'Anfrage absenden',
],
'lightbox' => [
'label' => 'Galeriebild groß ansehen',
'close' => 'Galerie schließen',
'previous' => 'Vorheriges Bild',
'next' => 'Nächstes Bild',
],
'show_page' => [
'default_meta_description' => 'Kuratierte Dubai-Immobilie von Azizi Developments.',
'default_title' => 'Projekt',
'back_to_overview' => 'Zurück zur Projektübersicht',
'stat_price' => 'Preis / Verfügbarkeit',
'stat_price_fallback' => 'Auf Anfrage',
'stat_handover' => 'Übergabe',
'stat_handover_fallback' => 'Phase abhängig',
'stat_units' => 'Einheiten',
'stat_units_fallback' => 'Aktuell prüfen',
'stat_data_confidence' => 'Datenstand',
'stat_data_confidence_fallback' => 'Prüfen',
'section_investment' => 'Investment Case',
'for_whom' => 'Für wen eignet sich das Projekt?',
'hard_facts' => 'Harte Punkte für die Einordnung',
'source_heading' => 'Projektquelle',
'source_text' => 'Offizieller Azizi-Link als Projektanker. Preise und Verfügbarkeit werden vor Beratung aktuell geprüft.',
'azizi_link' => 'Azizi-Projektseite',
'next_step_heading' => 'Nächster Schritt',
'next_step_text' => 'Marcel prüft aktive Einheiten, aktuellen Zahlungsplan, Floor Plans und ob Resale oder Off-Plan für Ihre Strategie sinnvoller ist.',
'request_cta' => 'Verfügbarkeit anfragen',
'process_title' => 'Wie B2in dieses Projekt prüft',
'process_intro' => 'Diese Preview trennt redaktionelle Einordnung von beweglichen Vertriebsdaten. Der Live-Stand wird immer vor einer konkreten Empfehlung geprüft.',
'process_steps' => [
['title' => '1. Strategische Passung', 'text' => 'Cashflow, Eigennutzung, Wertzuwachs oder Trophy Asset.'],
['title' => '2. Aktive Verfügbarkeit', 'text' => 'Einheiten, Etagen, Views, Zahlungsplan und Resale-Angebote.'],
['title' => '3. Exit-Logik', 'text' => 'Vermietbarkeit, Haltezeit, Zielgruppe und Wiederverkauf.'],
],
'interest_heading' => 'Interesse an :title?',
'interest_default_title' => 'diesem Projekt',
'interest_text' => 'Fragen Sie keine Broschüre an. Fragen Sie eine Einordnung an: Passt dieses Projekt zu Ihrer Strategie, Ihrem Budget und Ihrem Zeithorizont?',
'interest_cta_consult' => 'Beratung anfragen',
'interest_cta_more' => 'Weitere Projekte ansehen',
],
'status_labels' => [
'ready' => 'Sofort verfügbar',
'construction' => 'Im Bau',
'offplan' => 'Off-Plan',
],
'confidence_labels' => [
'green' => 'Direkt belegt',
'yellow' => 'Vor Livegang final prüfen',
'red' => 'Nur als Anfragewert nutzen',
],
'fallbacks' => [
'handover' => 'Phase abhängig',
'project_default' => 'Projekt',
],
];
foreach ($files as $file) {
if (! is_file($file)) {
echo 'Skip (nicht gefunden): '.$file.PHP_EOL;
continue;
}
$json = json_decode(file_get_contents($file), true, 512, JSON_THROW_ON_ERROR);
$ordered = [];
foreach ($json as $k => $v) {
if ($k === 'ui') {
continue; // skip existing block - we'll re-insert it after meta
}
$ordered[$k] = $v;
if ($k === 'meta') {
$ordered['ui'] = $ui;
}
}
if (! isset($ordered['ui'])) {
$ordered = ['ui' => $ui] + $ordered;
}
file_put_contents(
$file,
json_encode($ordered, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)."\n"
);
echo basename(dirname($file)).'/'.basename($file).': ui-Block eingefügt/aktualisiert'.PHP_EOL;
}