'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; }