<?php
declare(strict_types=1);

/**
 * H11.0-P1 — Executive Language Catalog
 *
 * Visible application wording must come from this catalog or an approved
 * domain-specific language catalog. Technical implementation terms must
 * never be shown to executive users.
 */
final class ExecutiveLanguage
{
    private const TEXT = [
        'en' => [
            'executive_summary' => 'Executive Summary',
            'key_findings' => 'Key Findings',
            'detailed_analysis' => 'Detailed Analysis',
            'performance_overview' => 'Performance Overview',
            'report_settings' => 'Report Settings',
            'update_view' => 'Update View',
            'current_year' => 'Current Year',
            'comparison_year' => 'Comparison Year',
            'top_contributors' => 'Top Contributors',
            'all_specialties' => 'All Specialties',
            'total' => 'Total',
            'data_unavailable' => 'Data is temporarily unavailable',
            'no_data' => 'No data is available for the selected period',
            'decision_support' => 'Decision Support',
        ],
        'ar' => [
            'executive_summary' => 'الملخص التنفيذي',
            'key_findings' => 'أبرز النتائج',
            'detailed_analysis' => 'التحليل التفصيلي',
            'performance_overview' => 'نظرة عامة على الأداء',
            'report_settings' => 'إعدادات التقرير',
            'update_view' => 'تحديث العرض',
            'current_year' => 'السنة الحالية',
            'comparison_year' => 'سنة المقارنة',
            'top_contributors' => 'أعلى المساهمات',
            'all_specialties' => 'جميع التخصصات',
            'total' => 'الإجمالي',
            'data_unavailable' => 'البيانات غير متاحة مؤقتًا',
            'no_data' => 'لا توجد بيانات للفترة المحددة',
            'decision_support' => 'دعم القرار',
        ],
    ];

    public static function get(string $key, ?string $language = null): string
    {
        $language = $language ?: (function_exists('current_lang') ? current_lang() : 'en');
        $language = $language === 'ar' ? 'ar' : 'en';

        return self::TEXT[$language][$key]
            ?? self::TEXT['en'][$key]
            ?? $key;
    }

    public static function all(): array
    {
        return self::TEXT;
    }
}

if (!function_exists('exec_lang')) {
    function exec_lang(string $key): string
    {
        return ExecutiveLanguage::get($key);
    }
}
