<?php

if (!defined('ABSPATH')) {
    exit;
}

final class Aysa_AI_Visibility_I18n {
    public static function normalize($language) {
        $language = str_replace('_', '-', trim((string) $language));
        return $language !== '' ? $language : 'ro';
    }

    public static function cached_agent8_language() {
        if (function_exists('aysa_get_interface_language')) {
            return self::normalize(aysa_get_interface_language());
        }
        $user_id = get_current_user_id();
        $site_host = strtolower((string) wp_parse_url(home_url('/'), PHP_URL_HOST));
        if ($user_id <= 0 || $site_host === '') {
            return 'ro';
        }
        $key = 'aysa_agent8_session_' . intval($user_id) . '_' . md5($site_host);
        $session = get_user_meta($user_id, $key, true);
        if (!is_array($session)) {
            return 'ro';
        }
        $language = $session['conversation_language']
            ?? $session['state']['meta']['language']
            ?? 'ro';
        return self::normalize($language);
    }

    public static function strings(array $english, $language) {
        $base = strtolower(explode('-', self::normalize($language))[0]);
        if ($base !== 'ro') {
            return $english;
        }
        return array_replace_recursive($english, self::romanian_strings());
    }

    public static function shell($language) {
        $english = array(
            'description' => 'Measure how answer engines mention, recommend, cite and describe your brand.',
            'askAgent8' => 'Ask Agent8',
            'sections' => 'AI Visibility sections',
            'overview' => 'Overview',
            'measurement' => 'New measurement',
            'trends' => 'Trends',
            'conversations' => 'Conversations & evidence',
            'signals' => 'Signals',
            'contentAnalyzer' => 'Content Analyzer',
            'commerce' => 'Commerce',
            'correlation' => 'Source correlation',
            'knowledgeBase' => 'Knowledge Base',
            'actionPlan' => 'Action Plan',
            'impact' => 'Impact',
            'setup' => 'Setup',
            'advanced' => 'Advanced',
            'currentMeasurement' => 'Current measurement',
            'selectedMeasurement' => 'Selected measurement',
            'chooseMeasurement' => 'Choose measurement',
            'latestResult' => 'Latest result',
            'selectedResult' => 'Selected result',
            'sample' => 'Sample',
            'actualCost' => 'Actual cost',
            'engine' => 'Engine',
            'scenarios' => 'Scenarios',
            'scenarioSingular' => 'scenario',
            'additionalEligible' => '{count} more eligible conversation(s) are needed to reach the minimum sample of {minimum}.',
            'additionalEligibleOne' => '1 more eligible conversation is needed to reach the minimum sample of {minimum}.',
            'credits' => 'credits',
            'completedAt' => 'Completed',
            'methodology' => 'Methodology',
            'cohort' => 'Cohort',
            'comparison' => 'Comparison',
            'comparisonComparable' => 'This measurement can be compared with results from the same cohort contract.',
            'comparisonBaselineMissing' => 'This is the first measurement for this cohort, so no earlier comparable baseline exists.',
            'comparisonMethodologyChanged' => 'The measurement methodology changed; compare this result only within the new series.',
            'comparisonCohortChanged' => 'The measurement cohort changed; this result starts a new comparison series.',
            'comparisonUnavailable' => 'Comparable trend context is not available for this measurement.',
            'technicalReason' => 'Technical reason',
            'engineTechnicalKey' => 'Engine key',
            'exploratoryData' => 'Exploratory data — at least one metric does not yet meet its evidence threshold.',
            'exploratoryMetricSummary' => '{sufficient} of {total} metrics meet the evidence threshold. Still exploratory: {metrics}.',
            'reportableData' => 'The available metrics meet the configured sample threshold.',
            'noMeasurementContext' => 'No completed measurement context is available yet.',
            'baselineCurrent' => 'Recommendations use the latest measurement as their baseline.',
            'baselineDifferent' => 'These recommendations use measurement #{baseline}; the latest measurement is #{latest}.',
            'baselineDifferentSelected' => 'These recommendations use measurement #{baseline}; you are viewing measurement #{selected}.',
            'baselineMultiple' => 'Recommendations from multiple measurement baselines are shown. Select items from only one baseline.',
            'verdictNoMeasurement' => 'Run your first measurement to see how answer engines describe the business.',
            'verdictNoMetrics' => 'The measurement has no publishable metric snapshot yet.',
            'verdictExploratory' => 'The engine completed successfully, but the sample is still exploratory.',
            'verdictRecommended' => 'The business was recommended in this measurement.',
            'verdictCitedNotRecommended' => 'The site was cited, but the business was not recommended.',
            'verdictMentionedNotRecommended' => 'The business was mentioned, but it was not recommended.',
            'verdictNotVisible' => 'The business was not visible in the eligible conversations measured.',
            'nextActions' => 'Next actions',
            'openActions' => 'Open Actions',
            'evidenceCount' => 'evidence items',
            'baseline' => 'Baseline',
            'metric' => 'Metric',
            'currentValue' => 'Current',
            'targetValue' => 'Target',
            'targetPage' => 'Target page',
            'notRecorded' => 'Not recorded',
            'targetToConfirm' => 'To be confirmed in the canonical workflow',
            'proposalOnlyState' => 'Recommendation only — no changes applied',
            'costBeforeApproval' => 'Cost is calculated before approval',
            'checkingTitle' => 'Checking configuration…',
            'checkingCopy' => 'This check does not run a provider or use credits.',
            'metrics' => 'AI Visibility metrics',
            'answerEngines' => 'Answer engines',
            'setupHint' => 'Confirm the brand profile, personas, topics, scenarios, competitors and claims before starting a paid measurement.',
        );
        $romanian = array(
            'description' => 'Măsoară cum menționează, recomandă, citează și descriu motoarele de răspuns brandul tău.',
            'askAgent8' => 'Întreabă Agent8',
            'sections' => 'Secțiuni Vizibilitate AI',
            'overview' => 'Prezentare generală',
            'measurement' => 'Măsurare nouă',
            'trends' => 'Tendințe',
            'conversations' => 'Conversații și dovezi',
            'signals' => 'Semnale',
            'contentAnalyzer' => 'Analizor de conținut',
            'commerce' => 'Comerț',
            'correlation' => 'Corelarea surselor',
            'knowledgeBase' => 'Bază de cunoștințe',
            'actionPlan' => 'Plan de acțiune',
            'impact' => 'Impact',
            'setup' => 'Configurare',
            'advanced' => 'Avansat',
            'currentMeasurement' => 'Măsurarea curentă',
            'selectedMeasurement' => 'Măsurarea selectată',
            'chooseMeasurement' => 'Alege măsurarea',
            'latestResult' => 'Cel mai recent rezultat',
            'selectedResult' => 'Rezultatul selectat',
            'sample' => 'Eșantion',
            'actualCost' => 'Cost efectiv',
            'engine' => 'Motor',
            'scenarios' => 'Scenarii',
            'scenarioSingular' => 'scenariu',
            'additionalEligible' => 'Mai sunt necesare {count} conversații eligibile pentru a atinge eșantionul minim de {minimum}.',
            'additionalEligibleOne' => 'Mai este necesară 1 conversație eligibilă pentru a atinge eșantionul minim de {minimum}.',
            'credits' => 'credite',
            'completedAt' => 'Finalizată',
            'methodology' => 'Metodologie',
            'cohort' => 'Cohortă',
            'comparison' => 'Comparabilitate',
            'comparisonComparable' => 'Această măsurare poate fi comparată cu rezultate din aceeași configurație de cohortă.',
            'comparisonBaselineMissing' => 'Aceasta este prima măsurare pentru cohortă, deci nu există încă o bază comparabilă anterioară.',
            'comparisonMethodologyChanged' => 'Metodologia s-a schimbat; compară rezultatul numai în cadrul noii serii.',
            'comparisonCohortChanged' => 'Configurația cohortei s-a schimbat; rezultatul începe o nouă serie de comparație.',
            'comparisonUnavailable' => 'Contextul comparabil pentru tendințe nu este disponibil la această măsurare.',
            'technicalReason' => 'Motiv tehnic',
            'engineTechnicalKey' => 'Cheie motor',
            'exploratoryData' => 'Date exploratorii — cel puțin o metrică nu atinge încă pragul propriu de dovezi.',
            'exploratoryMetricSummary' => '{sufficient} din {total} metrici ating pragul de dovezi. Încă exploratorii: {metrics}.',
            'reportableData' => 'Metricile disponibile ating pragul configurat pentru eșantion.',
            'noMeasurementContext' => 'Nu există încă un context de măsurare finalizată.',
            'baselineCurrent' => 'Recomandările folosesc cea mai recentă măsurare ca bază.',
            'baselineDifferent' => 'Aceste recomandări folosesc măsurarea #{baseline}; cea mai recentă este #{latest}.',
            'baselineDifferentSelected' => 'Aceste recomandări folosesc măsurarea #{baseline}; tu vizualizezi măsurarea #{selected}.',
            'baselineMultiple' => 'Sunt afișate recomandări din mai multe măsurări de bază. Selectează elemente dintr-o singură bază.',
            'verdictNoMeasurement' => 'Rulează prima măsurare pentru a vedea cum descriu motoarele de răspuns afacerea.',
            'verdictNoMetrics' => 'Măsurarea nu are încă un snapshot publicabil de metrici.',
            'verdictExploratory' => 'Motorul a răspuns cu succes, dar eșantionul este încă exploratoriu.',
            'verdictRecommended' => 'Afacerea a fost recomandată în această măsurare.',
            'verdictCitedNotRecommended' => 'Site-ul a fost citat, dar afacerea nu a fost recomandată.',
            'verdictMentionedNotRecommended' => 'Afacerea a fost menționată, dar nu a fost recomandată.',
            'verdictNotVisible' => 'Afacerea nu a fost vizibilă în conversațiile eligibile măsurate.',
            'nextActions' => 'Acțiuni următoare',
            'openActions' => 'Deschide Acțiuni',
            'evidenceCount' => 'dovezi',
            'baseline' => 'Bază',
            'metric' => 'Metrică',
            'currentValue' => 'Valoare curentă',
            'targetValue' => 'Țintă',
            'targetPage' => 'Pagină țintă',
            'notRecorded' => 'Neînregistrat',
            'targetToConfirm' => 'Se confirmă în fluxul canonic',
            'proposalOnlyState' => 'Doar recomandare — nu s-a aplicat nicio modificare',
            'costBeforeApproval' => 'Costul este calculat înainte de aprobare',
            'checkingTitle' => 'Se verifică configurația…',
            'checkingCopy' => 'Această verificare nu rulează un furnizor și nu consumă credite.',
            'metrics' => 'Metrici de Vizibilitate AI',
            'answerEngines' => 'Motoare de răspuns',
            'setupHint' => 'Confirmă profilul brandului, persoanele, subiectele, scenariile, competitorii și afirmațiile înainte de o măsurare plătită.',
        );
        return strtolower(explode('-', self::normalize($language))[0]) === 'ro' ? $romanian : $english;
    }

    private static function romanian_strings() {
        return array(
            'checkingTitle' => 'Se verifică configurația…',
            'checkingCopy' => 'Nu se rulează niciun furnizor și nu se consumă credite.',
            'unavailableTitle' => 'Vizibilitatea AI este momentan indisponibilă',
            'retry' => 'Reîncearcă',
            'timeout' => 'Verificarea configurației a durat prea mult.',
            'failed' => 'Configurația nu a putut fi încărcată.',
            'available' => 'Vizibilitatea AI este disponibilă',
            'notConfigured' => 'Vizibilitatea AI nu este încă configurată',
            'temporarilyUnavailable' => 'Vizibilitatea AI este temporar indisponibilă',
            'noRuns' => 'Nu a fost rulată încă nicio măsurare de Vizibilitate AI.',
            'runInProgress' => 'Măsurare în desfășurare',
            'runComplete' => 'Ultima măsurare este finalizată',
            'runPartial' => 'Ultima măsurare s-a încheiat cu acoperire parțială',
            'runFailed' => 'Ultima măsurare necesită atenție',
            'insufficientData' => 'Date insuficiente',
            'moreEligibleNeeded' => 'Mai sunt necesare {count} conversații eligibile (minimum {minimum}).',
            'metricRequirementMissing' => 'O cerință suplimentară a metricii nu este îndeplinită; verifică Detaliile tehnice.',
            'additionalMetrics' => 'Metrici suplimentare',
            'viewLoading' => 'Se încarcă {module}…',
            'viewSlow' => '{module} durează mai mult decât era estimat. Poți aștepta sau reîncerca manual dacă încărcarea eșuează.',
            'viewFailed' => '{module} nu a putut fi încărcat.',
            'moduleLabels' => array(
                'measurement' => 'Măsurare nouă',
                'evidence' => 'Dovezi',
                'trends' => 'Tendințe',
                'signals' => 'Semnale',
                'content_analyzer' => 'Analizor de conținut',
                'actions' => 'Acțiuni',
                'impact' => 'Impact',
                'setup' => 'Configurare',
                'commerce' => 'Comerț',
                'correlation' => 'Corelarea surselor',
                'knowledge_base' => 'Bază de cunoștințe',
            ),
            'noEvidence' => 'Nu există încă dovezi din conversații.',
            'question' => 'Întrebare',
            'answerExcerpt' => 'Dovada din răspuns',
            'interpretation' => 'Ce înseamnă',
            'sources' => 'Surse',
            'technicalDetails' => 'Detalii tehnice',
            'evidenceRecommended' => 'Afacerea a fost recomandată explicit în acest răspuns.',
            'evidenceCited' => 'Site-ul a fost citat, fără o recomandare explicită.',
            'evidenceMentioned' => 'Afacerea a fost menționată, fără recomandare explicită sau citare a sursei proprii.',
            'evidenceNoSignal' => 'Nu a fost detectată nicio mențiune eligibilă, recomandare sau citare a sursei proprii.',
            'ownershipLabels' => array(
                'first_party' => 'Sursă proprie',
                'competitor' => 'Sursă competitor',
                'third_party' => 'Sursă terță',
                'unknown' => 'Sursă neclasificată',
            ),
            'recommendationLabels' => array(
                'explicit_best_choice' => 'Recomandare explicită',
                'included_in_recommended_set' => 'Inclusă în opțiunile recomandate',
                'mentioned_not_recommended' => 'Menționată, nerecomandată',
            ),
            'testTypeLabels' => array(
                'discovery' => 'Descoperire',
                'recommendation' => 'Recomandare',
                'comparison' => 'Comparație',
                'fact_check' => 'Verificare factuală',
                'citation' => 'Citare',
                'recommendation_journey' => 'Parcurs de recomandare',
                'brand_perception' => 'Percepția brandului',
                'competitive_comparison' => 'Comparație competitivă',
                'brand_fact_check' => 'Verificarea informațiilor despre brand',
            ),
            'setupChecklist' => 'Pregătirea configurării',
            'setupReady' => 'Pregătit',
            'setupNeedsAttention' => 'Necesită atenție',
            'setupRecommended' => 'Recomandat',
            'profileDraft' => 'Draft salvat automat — confirmarea explicită este încă necesară.',
            'profileConfirmedState' => 'Profil confirmat explicit.',
            'entityQualityHint' => 'Persoanele fac întrebările mai realiste, competitorii permit comparații valide, iar afirmațiile confirmate permit verificarea acurateții factuale.',
            'setupBrand' => 'Profilul brandului',
            'setupTopics' => 'Subiecte confirmate',
            'setupScenarios' => 'Scenarii confirmate',
            'setupCompetitors' => 'Competitori confirmați',
            'setupClaims' => 'Afirmații confirmate',
            'setupEngines' => 'Motoare pregătite',
            'entityStatusLabels' => array(
                'confirmed' => 'Confirmat',
                'proposed' => 'Draft',
                'waiting_for_confirmation' => 'Așteaptă confirmarea',
            ),
            'competitorClassLabels' => array(
                'unconfirmed' => 'Neconfirmat',
                'direct' => 'Competitor direct',
                'indirect' => 'Competitor indirect',
                'marketplace' => 'Marketplace',
                'publisher' => 'Publicație',
                'sub_brand' => 'Sub-brand',
            ),
            'commerceMetricLabels' => array(
                'product_visibility' => 'Vizibilitatea produselor',
                'product_recommendation_rate' => 'Rata recomandării produselor',
                'product_recommendation_coverage' => 'Acoperirea recomandării produselor',
                'product_share_of_voice' => 'Cota de voce a produselor',
            ),
            'commerceReadinessLabels' => array(
                'product_schema' => 'Schema Product randată',
                'offer_schema' => 'Schema Offer randată',
                'identifiers' => 'Identificatori de produs',
                'price_consistency' => 'Consecvența prețului',
                'availability_consistency' => 'Consecvența disponibilității',
                'crawlability_rendering' => 'Accesare și randare',
                'merchant_policies' => 'Politici comerciale',
                'shipping_returns' => 'Livrare și retururi',
                'product_feed' => 'Feed de produse',
                'purchase_steps' => 'Pașii de cumpărare',
            ),
            'readinessStatusLabels' => array(
                'pass' => 'Pregătit',
                'partial' => 'Parțial pregătit',
                'missing' => 'Nepregătit',
            ),
            'ucpStatusLabels' => array(
                'verified_capability_evidence' => 'Dovada capabilității este verificată',
                'not_verified' => 'Capabilitatea nu este verificată',
            ),
            'commerceObservationLabels' => array(
                'recommended' => 'Recomandat',
                'mentioned' => 'Menționat',
            ),
            'commerceInsufficientReasonLabels' => array(
                'minimum_sample_size_not_met' => 'Sunt necesare mai multe conversații eligibile despre produse.',
                'competitor_set_required' => 'Confirmă un set de produse competitoare înainte de calcularea cotei de voce.',
            ),
            'correlationDirectionLabels' => array(
                'unknown' => 'Nu există încă o comparație',
                'increased' => 'A crescut',
                'decreased' => 'A scăzut',
                'unchanged' => 'Neschimbat',
            ),
            'correlationMetricLabels' => array(
                'ai_visibility' => 'Vizibilitate AI',
                'first_party_citations' => 'Citări din surse proprii',
                'gsc_impressions' => 'Afișări Search Console',
                'gsc_clicks' => 'Clickuri Search Console',
                'ga_sessions' => 'Sesiuni Analytics',
                'ga_conversions' => 'Conversii Analytics',
                'identifiable_ai_referrals' => 'Sesiuni AI cu referrer identificabil',
                'gbp_visibility' => 'Vizibilitate Business Profile',
                'gbp_actions' => 'Acțiuni Business Profile',
            ),
            'correlationSourceLabels' => array(
                'ai_visibility' => 'Vizibilitate AI AYSA',
                'first_party_citations' => 'Vizibilitate AI AYSA',
                'gsc_impressions' => 'Google Search Console',
                'gsc_clicks' => 'Google Search Console',
                'ga_sessions' => 'Google Analytics',
                'ga_conversions' => 'Google Analytics',
                'identifiable_ai_referrals' => 'Dovezi de referral din Google Analytics',
                'gbp_visibility' => 'Google Business Profile',
                'gbp_actions' => 'Google Business Profile',
            ),
            'correlationStatusLabels' => array(
                'not_available' => 'Nu există observație salvată',
                'baseline_only' => 'Există o observație; sunt necesare două pentru comparație',
                'comparison_available' => 'Sunt disponibile observații comparabile',
            ),
            'correlationScopeLabels' => array(
                'referrer_identified_only' => 'Numai sesiuni cu referrer identificabil',
                'source_metric_only' => 'Citită separat în sursa sa; fără atribuire între surse',
            ),
            'knowledgeSourceTypeLabels' => array(
                'wordpress_snapshot' => 'Snapshot al conținutului WordPress publicat',
                'manual_claim_source' => 'Informații despre brand introduse manual',
                'url_snapshot' => 'Snapshot controlat al unui URL',
                'document' => 'Document încărcat',
                'snippet' => 'Fragment text introdus manual',
            ),
            'knowledgeVerificationLabels' => array(
                'official_source_review_required' => 'Sursă oficială — este necesară verificarea factuală',
                'proposed' => 'Propus — este necesar review-ul',
                'verified' => 'Verificat',
            ),
            'contentScoreLabels' => array(
                'brand_favorability' => 'Favorabilitatea brandului',
                'question_coverage' => 'Acoperirea întrebărilor',
                'citation_standing' => 'Pregătirea pentru citare',
                'brand_fit' => 'Potrivirea brandului cu subiectul',
            ),
            'contentCheckLabels' => array(
                'answer_first' => 'Răspuns direct aproape de început',
                'question_coverage' => 'Întrebările au răspunsuri directe',
                'citation_standing' => 'Surse cu autoritate',
                'brand_fit' => 'Identificarea clară a brandului',
                'geo_structure' => 'Structură potrivită pentru răspunsuri',
                'readability' => 'Propoziții ușor de citit',
                'findability' => 'Pagină canonică ușor de găsit',
                'schema_rendered_output' => 'Schema randată și verificată',
                'entity_clarity' => 'Relație clară între brand și ofertă',
                'factual_support' => 'Afirmațiile factuale au surse',
                'content_elements' => 'Titluri, tabele sau FAQ-uri utile',
                'intent_fit' => 'Conținut potrivit intenției selectate',
                'data_freshness' => 'Informații și date actuale',
                'trust_signals' => 'Semnale Autor, Despre noi și Contact',
                'cannibalization' => 'Fără pagini țintă concurente',
                'target_page_fit' => 'Pagină țintă confirmată',
                'internal_linking' => 'Legături interne relevante',
                'external_authority' => 'Referințe externe primare',
                'knowledge_base_consistency' => 'Consecvență cu informațiile confirmate ale brandului',
            ),
            'contentCheckGuidance' => array(
                'answer_first' => 'Pune un răspuns factual și concis imediat după titlul principal.',
                'question_coverage' => 'Oferă fiecărei întrebări selectate un răspuns direct susținut de dovezi.',
                'citation_standing' => 'Susține afirmațiile importante cu surse primare sau cu autoritate.',
                'brand_fit' => 'Numește natural brandul canonic și leagă-l de subiectul paginii.',
                'geo_structure' => 'Folosește secțiuni descriptive, răspunsuri concise și un tabel sau FAQ util.',
                'readability' => 'Scurtează propozițiile lungi și păstrează o idee principală pe paragraf.',
                'findability' => 'Confirmă URL-ul canonic, titlul, descrierea și indexabilitatea.',
                'schema_rendered_output' => 'Validează datele structurate pe pagina randată în Technical SEO.',
                'entity_clarity' => 'Spune cine oferă produsul sau serviciul, unde și pentru cine.',
                'factual_support' => 'Atașează o sursă oficială fiecărei afirmații factuale importante.',
                'content_elements' => 'Adaugă numai titluri, tabele, FAQ-uri și răspunsuri directe utile.',
                'intent_fit' => 'Aliniază pagina la subiectul confirmat și intenția utilizatorului.',
                'data_freshness' => 'Verifică informațiile sensibile la timp și notează ultima actualizare.',
                'trust_signals' => 'Conectează dovezi reale despre autor, companie și contact.',
                'cannibalization' => 'Consolidează sau remapează paginile care concurează pentru aceeași intenție.',
                'target_page_fit' => 'Confirmă o singură destinație canonică sau creeaz-o prin Planul de conținut.',
                'internal_linking' => 'Conectează paginile relevante prin sursă, ancoră și țintă.',
                'external_authority' => 'Citează surse primare pentru informațiile externe importante.',
                'knowledge_base_consistency' => 'Rezolvă conflictele față de informațiile confirmate înainte de publicare.',
            ),
            'contentCheckStatusLabels' => array(
                'pass' => 'Trecut',
                'needs_improvement' => 'Necesită îmbunătățiri',
            ),
            'contentImpactLabels' => array(
                'maintain' => 'De menținut',
                'low' => 'Impact redus',
                'medium' => 'Impact mediu',
                'high' => 'Impact ridicat',
            ),
            'passedChecks' => 'verificări trecute',
            'checksNeedImprovement' => 'verificări ce necesită îmbunătățiri',
            'evidenceLabel' => 'Dovadă',
            'impactOutcomeLabels' => array(
                'improved' => 'Îmbunătățire',
                'regressed' => 'Regresie',
                'no_material_change' => 'Fără schimbare semnificativă',
                'insufficient_data' => 'Nu există suficiente date comparabile',
            ),
            'impactStatementLabels' => array(
                'improved' => 'A fost observată o îmbunătățire într-o cohortă comparabilă; aceasta nu dovedește singură cauzalitatea.',
                'regressed' => 'A fost observată o regresie într-o cohortă comparabilă; aceasta nu dovedește singură cauzalitatea.',
                'no_material_change' => 'Nu a fost observată o schimbare semnificativă în cohorta comparabilă.',
                'insufficient_data' => 'Impactul nu poate fi încă evaluat deoarece datele comparabile lipsesc sau sunt insuficiente.',
            ),
            'interventionStatusLabels' => array(
                'proposal_dispatched' => 'Propunere trimisă pentru review',
                'proposals_dispatched' => 'Propuneri trimise pentru review',
                'applied_verified' => 'Aplicat și verificat',
                'monitoring' => 'Monitorizare',
                'applied_monitoring' => 'Aplicat — impactul este monitorizat',
            ),
            'riskLabels' => array(
                'low' => 'Redus',
                'medium' => 'Mediu',
                'high' => 'Ridicat',
            ),
            'canonicalProposalFor' => 'Propunere canonică pentru {lane}',
            'verificationRequired' => 'Este necesar readback verificat înainte de finalizare.',
            'rollbackAvailable' => 'Fluxul canonic păstrează o cale de rollback sau recuperare.',
            'seriesBreakLabels' => array(
                'baseline_missing' => 'Prima observație din această serie de comparație',
                'methodology_version_changed' => 'Metodologia s-a schimbat — aici începe o serie nouă',
                'cohort_hash_changed' => 'Cohorta s-a schimbat — aici începe o serie nouă',
                'scenario_set_hash_changed' => 'Setul de scenarii s-a schimbat — aici începe o serie nouă',
                'engine_set_hash_changed' => 'Setul de motoare s-a schimbat — aici începe o serie nouă',
                'locale_location_hash_changed' => 'Limba sau locația s-a schimbat — aici începe o serie nouă',
                'eligibility_policy_version_changed' => 'Politica de eligibilitate s-a schimbat — aici începe o serie nouă',
            ),
            'trendNotComparable' => 'Ultimele două observații nu sunt comparabile, deci delta nu este afișată.',
            'recordedMetric' => 'Metrică înregistrată',
            'recordedSource' => 'Sursă înregistrată',
            'recordedItem' => 'Element înregistrat',
            'recordedRecommendation' => 'Recomandare înregistrată',
            'recordedWorkflow' => 'Flux canonic',
            'additionalConversationsShort' => 'Mai sunt necesare {count} conversații eligibile pentru a atinge pragul {minimum}.',
            'conversationSingular' => 'conversație',
            'baselineLabel' => 'Bază',
            'baselineDate' => 'Dată',
            'baselineSample' => 'Eșantion',
            'baselineCohort' => 'Cohortă',
            'baselineMethodology' => 'Metodologie',
            'baselineContextUnavailable' => 'Contextul măsurării de bază nu mai este disponibil pentru această măsurare deținută.',
            'notRecorded' => 'Neînregistrat',
            'technicalReason' => 'Motiv tehnic',
            'recommendationOnlyState' => 'Doar recomandare — nu a fost aplicată nicio modificare.',
            'costQuotedBeforeApproval' => 'Orice cost de execuție este calculat înainte de aprobare.',
            'groundingLabels' => array(
                'grounded_correct' => 'Susținut de dovezile confirmate ale afacerii',
                'grounded_incorrect' => 'Contrazice dovezile confirmate ale afacerii',
                'not_grounded' => 'Nu a fost încă verificat față de dovezile confirmate ale afacerii',
            ),
            'sentimentLabels' => array(
                'positive' => 'Pozitiv',
                'neutral' => 'Neutru',
                'negative' => 'Negativ',
            ),
            'factClassificationLabels' => array(
                'supported' => 'Susținut',
                'contradicted' => 'Contrazis',
                'indecisive' => 'Nu există suficiente dovezi',
            ),
            'signalMethodLabels' => array(
                'provider_annotation' => 'Interogare observată la furnizor',
                'response_extraction' => 'Extras din răspunsul salvat',
            ),
            'measurementNotReady' => 'Configurarea măsurării nu este pregătită.',
            'measurementNotReadyHint' => 'Confirmă cel puțin un scenariu și configurează un motor de răspuns.',
            'measurementTitle' => 'Pregătește estimarea exactă a măsurării',
            'measurementHint' => 'Verifică exact cohorta, prompturile și costul maxim înainte de rularea plătită.',
            'scenarios' => 'Scenarii',
            'answerEngines' => 'Motoare de răspuns',
            'recordedEngine' => 'Motor de răspuns înregistrat',
            'engineLabels' => array('google_ai_mode' => 'Google AI Mode', 'dataforseo_ai_mode' => 'Google AI Mode', 'dataforseo_chatgpt' => 'ChatGPT', 'dataforseo_gemini' => 'Gemini', 'chatgpt' => 'ChatGPT', 'gemini' => 'Gemini', 'chatgpt_api' => 'API ChatGPT', 'gemini_api' => 'API Gemini'),
            'errorLabels' => array(
                'ai_visibility_engine_multi_turn_unsupported' => 'Motorul selectat nu acceptă scenariile conversaționale cu mai multe schimburi. Alege ChatGPT sau Gemini ori deselectează scenariile multi-turn.',
                'ai_visibility_ai_mode_multi_turn_unsupported' => 'Google AI Mode acceptă momentan numai scenarii cu o singură întrebare. Deselectează scenariile multi-turn.',
                'ai_visibility_insufficient_credits' => 'Nu există suficiente credite disponibile pentru această măsurare.',
                'ai_visibility_wallet_snapshot_unavailable' => 'Soldul curent nu a putut fi verificat. Recalculează estimarea înainte de pornire.',
            ),
            'multiTurnEngineUnsupported' => 'Acest motor nu acceptă scenariile multi-turn selectate și a fost deselectat.',
            'availabilityLabels' => array('ready' => 'Pregătit', 'not_configured' => 'Neconfigurat', 'partial' => 'Configurare incompletă', 'unsupported' => 'Neimplementat încă', 'temporarily_unavailable' => 'Temporar indisponibil', 'unavailable' => 'Indisponibil'),
            'channelLabels' => array('licensed_serp_provider' => 'Furnizor SERP licențiat', 'official_api' => 'API oficial'),
            'replicates' => 'Repetări',
            'location' => 'Locație',
            'calculateExactQuote' => 'Calculează estimarea exactă',
            'measurementSelectionRequired' => 'Alege cel puțin un scenariu și un motor de răspuns.',
            'calculatingQuote' => 'Se compilează prompturile și costul exact…',
            'exactQuote' => 'Estimare exactă',
            'turns' => 'schimburi',
            'dataPreview' => 'Datele exacte trimise furnizorilor',
            'policyReady' => 'Politica Monitoring canonică și domeniul exact sunt pregătite.',
            'policyRequired' => 'Aprobă un buget Monitoring exclusiv manual și acest domeniu exact înainte de pornire.',
            'noChargeForQuote' => 'Această estimare nu a apelat un furnizor și nu a consumat credite.',
            'availableCredits' => 'Credite disponibile',
            'insufficientCreditsForRun' => 'Această măsurare necesită cel mult {required} credite, dar sunt disponibile numai {available}. Adaugă credite și recalculează estimarea.',
            'openAgent8ForApproval' => 'Deschide Monitoring în Agent8',
            'monthlyBudget' => 'Buget Monitoring lunar',
            'perRunCap' => 'Număr maxim de credite pentru această rulare',
            'preparePolicyApproval' => 'Verifică aprobarea Monitoring',
            'confirmPolicyApproval' => 'Confirmă politica Monitoring exclusiv manuală',
            'policyApprovalNotice' => 'Aceasta autorizează numai măsurări manuale și nu activează o programare.',
            'monitoringActivationRequired' => 'Politica este aprobată, dar Monitoring trebuie activat în Agent8 înaintea unei rulări manuale.',
            'confirmRunCost' => 'Aprob această cohortă exactă și costul maxim.',
            'startMeasurement' => 'Pornește măsurarea',
            'startingMeasurement' => 'Se creează rularea persistentă…',
            'measurementQueued' => 'Măsurarea a fost pusă în coadă. Procesarea va continua în fundal.',
            'cancelMeasurement' => 'Anulează măsurarea',
            'cancelMeasurementConfirm' => 'Anulezi măsurarea? Procesarea nouă se va opri. Rezultatele deja finalizate rămân înregistrate și pot conta la consumul real.',
            'cancellingMeasurement' => 'Se anulează măsurarea…',
            'measurementCancelled' => 'Măsurare anulată',
            'reviewRetry' => 'Verifică elementele ce pot fi reluate',
            'checkingRetry' => 'Se verifică elementele ce pot fi reluate…',
            'noRetryableWork' => 'Nu există elemente eșuate care pot fi reluate în siguranță.',
            'retryMeasurementConfirm' => 'Adaugi o încercare pentru {count} sarcini? Răspunsurile finalizate vor fi reutilizate. Este posibil consum nou numai dacă se produce un rezultat nou.',
            'reviewReprocess' => 'Verifică reprocesarea extragerii',
            'checkingReprocess' => 'Se verifică dovezile sursă…',
            'reprocessConfirm' => 'Creezi {count} candidați de extragere numai pentru review, de la {source} la {target}? Furnizorul și portofelul nu vor fi apelate, iar metricile nu se schimbă.',
            'reprocessQueued' => 'Candidații versionați au fost puși în coadă pentru review. Metricile curente nu s-au schimbat.',
            'scheduleTitle' => 'Programare automată Vizibilitate AI',
            'scheduleHint' => 'Folosește frecvența Monitoring canonică, cohorta exactă și bugetul lunar aprobat. Utilizatorii existenți nu sunt înscriși automat.',
            'reviewSchedule' => 'Verifică programarea automată',
            'scheduleConsent' => 'Autorizez măsurări plătite recurente pentru această cohortă, frecvență și buget.',
            'confirmSchedule' => 'Confirmă programarea automată',
            'scheduleConfirmed' => 'Programarea automată a fost confirmată.',
            'scheduleFrequency' => 'Frecvență',
            'nextScheduledRun' => 'Următoarea rulare programată',
            'scheduleActive' => 'Programare activă',
            'schedulePaused' => 'Programare întreruptă — este necesară reconfirmarea',
            'disableSchedule' => 'Dezactivează programarea',
            'disableScheduleConfirm' => 'Dezactivezi programarea? Măsurările și dovezile existente rămân neschimbate.',
            'scheduleDisabled' => 'Programarea a fost dezactivată. Rezultatele existente au fost păstrate.',
            'exportCsv' => 'Exportă CSV',
            'printReport' => 'Tipărește / Salvează PDF',
            'noTrends' => 'Nu există încă date pentru tendințe.',
            'measurements' => 'măsurări',
            'noSignals' => 'Nu există încă semnale extrase.',
            'noSignalsInGroup' => 'Nu există semnale în această rulare.',
            'perceptions' => 'Percepții',
            'facts' => 'Verificări factuale',
            'competitorMentions' => 'Mențiuni ale competitorilor',
            'citations' => 'Citări',
            'queryExpansions' => 'Extinderi ale interogării',
            'contentAnalyzerTitle' => 'Analizor de conținut AEO/GEO',
            'contentAnalyzerHint' => 'Analizează un snapshot controlat al paginii. Nu preia URL-ul, nu apelează furnizori, nu consumă credite și nu modifică WordPress.',
            'analyzeContent' => 'Analizează snapshotul de conținut',
            'analyzingContent' => 'Se analizează snapshotul furnizat…',
            'contentUrl' => 'URL canonic al paginii',
            'contentTitle' => 'Titlul paginii',
            'contentMeta' => 'Meta descriere',
            'contentBody' => 'Conținut randat sau snapshot text',
            'contentQuestions' => 'Întrebări, câte una pe rând',
            'contentAnswers' => 'Răspunsuri directe, câte unul pe rând',
            'contentKeywords' => 'Termeni țintă, câte unul pe rând',
            'needsImprovement' => 'Necesită îmbunătățiri',
            'whyItMatters' => 'De ce contează',
            'recommendedChange' => 'Modificare recomandată',
            'estimatedImpact' => 'Impact estimat',
            'addSelectedToPlan' => 'Adaugă recomandările selectate în Planul de acțiune',
            'addingToPlan' => 'Se adaugă recomandările ca propuneri…',
            'addedToPlan' => 'Recomandările au fost adăugate în Planul de acțiune. Verifică-le și aprobă-le acolo.',
            'baselineRequired' => 'Finalizează o măsurare înainte de a adăuga recomandări în Planul de acțiune.',
            'commerceTitle' => 'Vizibilitatea produselor și pregătirea comercială',
            'commerceHint' => 'Analizează catalogul WooCommerce publicat față de o măsurare finalizată. Nu se apelează furnizori, nu se consumă credite și nu se modifică produse.',
            'analyzeCommerce' => 'Analizează catalogul WooCommerce curent',
            'analyzingCommerce' => 'Se analizează catalogul față de dovezile existente…',
            'commerceBaselineRequired' => 'Finalizează o măsurare înainte de analiza vizibilității produselor.',
            'commerceCatalog' => 'Produse din catalog',
            'commerceObservations' => 'Observații despre produse',
            'commerceConfusions' => 'Posibile confuzii privind produsul, prețul sau disponibilitatea',
            'commerceReadiness' => 'Verificări de pregătire comercială',
            'correlationTitle' => 'Corelarea surselor',
            'correlationHint' => 'Compară separat observațiile salvate din Vizibilitate AI, citări, Search Console, Analytics, referral identificabil și Business Profile, fără a pretinde atribuire completă.',
            'correlationCaveat' => 'Mișcarea comună nu înseamnă cauzalitate. Datele lipsă rămân explicit indisponibile.',
            'knowledgeBaseTitle' => 'Bază de cunoștințe',
            'knowledgeBaseHint' => 'Păstrează snapshoturi versionate ale surselor proprii pentru Agent8. Conținutul complet este criptat și nu devine automat adevăr factual confirmat.',
            'syncWordPressKnowledge' => 'Sincronizează conținutul WordPress publicat',
            'syncingKnowledge' => 'Se creează și se criptează un snapshot read-only…',
            'knowledgeReviewRequired' => 'Sursă oficială — necesită verificare factuală',
            'knowledgeEmpty' => 'Nu există încă surse active în Baza de cunoștințe.',
            'setupProposal' => 'Verifică valorile propuse înainte de confirmare.',
            'previous' => 'Înapoi', 'next' => 'Înainte', 'confirmProfile' => 'Confirmă profilul',
            'autosaveHint' => 'Modificările sunt salvate automat ca draft.',
            'brandRequired' => 'Numele brandului este obligatoriu.', 'saving' => 'Se salvează…', 'saved' => 'Salvat.',
            'profileConfirmed' => 'Profil confirmat.', 'setupEntities' => 'Configurarea persoanelor, subiectelor și dovezilor',
            'showArchived' => 'Arată arhivate', 'saveEntity' => 'Salvează elementul', 'clear' => 'Golește', 'edit' => 'Editează',
            'archive' => 'Arhivează', 'restore' => 'Restaurează', 'noEntities' => 'Nu există încă elemente.', 'target' => 'Țintă',
            'bundlePreview' => 'Previzualizare pachet pentru aprobare', 'bundleVersion' => 'Versiune', 'risk' => 'Risc', 'credits' => 'credite',
            'targetMissing' => 'Pagina țintă trebuie confirmată', 'verification' => 'Verificare', 'rollback' => 'Revenire',
            'prepareApproval' => 'Pregătește aprobarea',
            'proposalOnly' => 'Aprobarea creează propuneri în fluxurile canonice AYSA; nu aplică modificări.',
            'preparingApproval' => 'Se pregătește aprobarea exactă…', 'approvalReady' => 'Pachetul exact este pregătit pentru aprobare.',
            'approveBundle' => 'Aprobă pachetul de propuneri', 'approvalConfirm' => 'Aprobi acest pachet exact? Nu se aplică încă modificări.',
            'bundleApproved' => 'Pachet aprobat pentru trimiterea propunerilor.',
            'noApplyPerformed' => 'Nu s-a efectuat nicio operațiune de furnizor, portofel sau aplicare.',
            'noInsights' => 'Nu există încă recomandări susținute de dovezi.',
            'runFirst' => 'Finalizează o măsurare pentru a genera Planul de acțiune.',
            'recommendations' => 'Recomandări susținute de dovezi',
            'selectRecommendations' => 'Selectează recomandări pentru un singur pachet versionat.',
            'buildBundle' => 'Construiește pachetul de aprobare', 'evidenceRefs' => 'referințe de dovezi',
            'selectAtLeastOne' => 'Selectează cel puțin o recomandare.', 'singleBaseline' => 'Alege recomandări dintr-o singură măsurare de bază.',
            'buildingBundle' => 'Se construiește pachetul exact…', 'createProposals' => 'Creează propuneri canonice',
            'creatingProposals' => 'Se creează propunerile canonice pentru review…', 'proposalsCreated' => 'Propunerile canonice au fost create pentru review.',
            'noInterventions' => 'Nu există încă nicio intervenție verificată.',
            'interventionHint' => 'Impactul apare după finalizarea aplicării și verificării în fluxul canonic.',
            'intervention' => 'Intervenție', 'waitingImpact' => 'Se așteaptă o rulare ulterioară comparabilă.',
            'assessLatest' => 'Evaluează ultima rulare comparabilă', 'assessing' => 'Se evaluează metricile persistente…',
            'metricVisibility' => 'Vizibilitate AI', 'metricRecommendationRate' => 'Rata recomandărilor AI',
            'metricRecommendationCoverage' => 'Acoperirea recomandărilor AI', 'metricShareOfVoice' => 'Cota de voce AI',
            'metricCitationRate' => 'Rata citărilor surselor proprii', 'metricFactAccuracy' => 'Acuratețe factuală',
            'insightLabels' => array(
                'critical_visibility_gap' => 'Deficit critic de vizibilitate',
                'recommendation_gap' => 'Deficit de recomandare',
                'citation_authority_gap' => 'Deficit de autoritate a citărilor',
                'brand_fact_gap' => 'Deficit de informații despre brand',
            ),
            'insightExplanations' => array(
                'critical_visibility_gap' => 'Vizibilitatea este sub ținta configurată.',
                'recommendation_gap' => 'Brandul este recomandat în prea puține conversații eligibile.',
                'citation_authority_gap' => 'Motoarele de răspuns citează rar o sursă proprie.',
                'brand_fact_gap' => 'Informațiile confirmate despre brand sunt contrazise sau lipsesc.',
            ),
            'laneLabels' => array(
                'content_plan' => 'Plan de conținut', 'on_page' => 'SEO On-Page',
                'off_page_adverlink' => 'Off-Page / AdverLink', 'technical_seo' => 'SEO tehnic',
                'monitoring' => 'Monitorizare',
            ),
            'priorityLabels' => array('high' => 'Prioritate ridicată', 'medium' => 'Prioritate medie', 'low' => 'Prioritate redusă'),
            'conversations' => 'conversații', 'confidenceInterval' => 'IC 95%',
            'fieldBrand' => 'Brand', 'fieldDomain' => 'Domeniu canonic', 'fieldCategory' => 'Categorie',
            'fieldPrimaryLanguage' => 'Limbă principală', 'fieldDescription' => 'Descriere', 'fieldProducts' => 'Produse',
            'fieldServices' => 'Servicii', 'fieldDifferentiators' => 'Diferențiatori', 'fieldMarkets' => 'Piețe',
            'fieldLocations' => 'Locații', 'fieldLanguages' => 'Limbi', 'fieldClaim' => 'Afirmație', 'fieldName' => 'Nume',
            'fieldCompetitorDomain' => 'Domeniul competitorului', 'fieldClassification' => 'Clasificare',
            'fieldPriority' => 'Prioritate 0–100', 'fieldTopic' => 'Subiect', 'fieldPersona' => 'Persoană',
            'fieldTestType' => 'Tip de test', 'confirmed' => 'Confirmat', 'entityAliases' => 'Aliasuri',
            'entityPersonas' => 'Persoane', 'entityTopics' => 'Subiecte', 'entityScenarios' => 'Scenarii',
            'entityCompetitors' => 'Competitori', 'entityClaims' => 'Afirmații',
        );
    }
}
