TenantAtlas/apps/platform/lang/en/localization.php
ahmido 3aeb0d04b8 Auto: 266-tenant-dashboard-productization-v1 → platform-dev (#322)
Automated PR created by Copilot per user request. Branch pushed: 266-tenant-dashboard-productization-v1

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #322
2026-05-03 14:03:46 +00:00

675 lines
47 KiB
PHP

<?php
declare(strict_types=1);
return [
'locales' => [
'en' => 'English',
'de' => 'German',
],
'source' => [
'explicit_override' => 'session override',
'user_preference' => 'personal preference',
'workspace_default' => 'workspace default',
'workspace_override' => 'workspace override',
'system_default' => 'system default',
],
'shell' => [
'language' => 'Language',
'current_language' => 'Current language',
'language_source' => 'Source: :source',
'temporary_override' => 'Temporary override',
'switch_language' => 'Switch language',
'clear_override' => 'Use inherited language',
'personal_preference' => 'Personal preference',
'save_preference' => 'Save preference',
'inherit_workspace' => 'Use workspace default',
'workspace' => 'Workspace',
'choose_workspace' => 'Choose workspace',
'switch_workspace' => 'Switch workspace',
'workspace_home' => 'Workspace Home',
'tenant_scope' => 'Tenant scope',
'select_tenant' => 'Select tenant',
'selected_tenant' => 'Selected tenant',
'no_tenant_selected' => 'No tenant selected',
'switch_tenant' => 'Switch tenant',
'clear_tenant_scope' => 'Clear tenant scope',
'context_unavailable' => 'Context unavailable',
'context_unavailable_workspace' => 'The requested scope could not be restored. The shell is showing a valid workspace state instead.',
'context_unavailable_no_workspace' => 'Choose a workspace to continue with a valid admin context.',
'no_active_tenants' => 'No active tenants are available for the standard operating context in this workspace.',
'view_managed_tenants' => 'View managed tenants',
'workspace_wide_available' => 'No tenant selected. Workspace-wide pages remain available, and choosing a tenant only sets the normal active operating context.',
'search_tenants' => 'Search tenants...',
'choose_workspace_first' => 'Choose a workspace first.',
],
'workspace' => [
'title' => 'Workspace settings',
'save' => 'Save',
'reset' => 'Reset',
'no_manage_permission' => 'You do not have permission to manage workspace settings.',
'no_workspace_override' => 'No workspace override to reset.',
'last_modified_by' => ':description - Last modified by :user, :time.',
'section' => 'Localization settings',
'section_description' => 'Workspace default used by users without a personal language preference.',
'default_locale_label' => 'Default language',
'default_locale_placeholder' => 'Unset (uses system default)',
'default_locale_helper_unset' => 'Unset. Effective language: :locale (:source).',
'default_locale_helper_set' => 'Effective language: :locale.',
],
'auth' => [
'microsoft_not_configured' => 'Microsoft sign-in is not configured.',
'sign_in_microsoft' => 'Sign in with Microsoft',
'tenant_admin_membership_required' => 'Tenant Admin access requires a tenant membership.',
],
'navigation' => [
'findings' => 'Findings',
'settings' => 'Settings',
'integrations' => 'Integrations',
'manage_workspaces' => 'Manage workspaces',
'operations' => 'Operations',
'audit_log' => 'Audit Log',
'alerts' => 'Alerts',
'governance' => 'Governance',
'monitoring' => 'Monitoring',
'dashboard' => 'Dashboard',
],
'dashboard' => [
'tenant_title' => 'Tenant dashboard',
'system_title' => 'System dashboard',
'more_actions' => 'More',
'request_support' => 'Request support',
'support_request_heading' => 'Request support',
'support_request_description' => 'Share a concise summary and TenantAtlas will attach redacted context from existing records.',
'support_request_run_description' => 'Share a concise summary and TenantAtlas will attach redacted context from the current run.',
'submit_request' => 'Submit support request',
'primary_context' => 'Primary context',
'included_context' => 'Included context',
'latest_external_handoff' => 'Latest external handoff',
'latest_external_handoff_none' => 'No support request has been submitted for this context yet.',
'latest_external_handoff_internal_only' => 'Latest support reference :reference is TenantPilot only. No external ticket is linked yet.',
'latest_external_handoff_linked' => 'Latest support reference :reference is linked to external ticket :external.',
'latest_external_handoff_failed' => 'Latest support reference :reference has no external ticket because handoff failed: :failure',
'external_handoff_mode' => 'External handoff',
'handoff_mode_internal_only' => 'TenantPilot only',
'handoff_mode_create_external_ticket' => 'Create external ticket',
'handoff_mode_link_existing_ticket' => 'Link existing ticket',
'external_handoff_mode_helper_available' => 'Choose whether this request stays internal, creates an external ticket, or links an existing one.',
'external_handoff_mode_helper_unavailable' => 'No external support desk target is configured. This request will stay internal.',
'handoff_mutation_scope' => 'Mutation scope',
'mutation_scope_internal_only' => 'TenantPilot only. No external support desk ticket will be created or linked.',
'mutation_scope_external_create' => 'TenantPilot + external support desk. TenantPilot creates the internal support request first, then creates one external ticket.',
'mutation_scope_external_link' => 'TenantPilot + external support desk. TenantPilot stores the external ticket reference you provide and does not create a duplicate ticket.',
'external_ticket_reference' => 'External ticket reference',
'external_ticket_reference_helper' => 'Use the existing desk ticket key, for example PSA-12345.',
'external_ticket_url' => 'External ticket URL',
'external_ticket_url_helper' => 'Optional HTTP or HTTPS link to the existing external ticket.',
'severity' => 'Severity',
'summary' => 'Summary',
'reproduction_notes' => 'Reproduction notes',
'contact_name' => 'Contact name',
'contact_email' => 'Contact email',
'support_request_submitted' => 'Support request submitted',
'support_request_submitted_internal_only' => 'Support reference :reference was created. No external ticket is linked yet.',
'support_request_submitted_created' => 'Support reference :reference was created and external ticket :external was created.',
'support_request_submitted_linked' => 'Support reference :reference was created and linked to external ticket :external.',
'support_request_submitted_failed' => 'Support reference :reference was created, but external handoff failed: :failure',
'open_external_ticket' => 'Open external ticket',
'open_support_diagnostics' => 'Open support diagnostics',
'support_diagnostics' => 'Support diagnostics',
'support_diagnostics_description' => 'Redacted tenant context from existing records.',
'close' => 'Close',
'time_window' => 'Time window',
'window' => 'Window',
'enter_break_glass' => 'Enter break-glass mode',
'exit_break_glass' => 'Exit break-glass',
'recovery_mode_enabled' => 'Recovery mode enabled',
'recovery_mode_ended' => 'Recovery mode ended',
'overview' => [
'page_subheading' => 'Tenant governance overview',
'context_workspace' => 'Current workspace',
'context_no_tenant' => 'No tenant selected',
'context_workspace_chip' => 'Workspace: :workspace',
'context_provider_chip' => ':provider tenant',
'context_latest_activity_chip' => 'Latest activity: :time',
'status_unavailable' => 'Unavailable',
'status_blocked' => 'Blocked',
'status_action_needed' => 'Action needed',
'status_calm' => 'Calm',
'status_not_ready' => 'Not ready',
'status_evidence_available' => 'Evidence available',
'status_needs_action' => 'Needs attention',
'tenant_context_unavailable_headline' => 'Tenant context is not available.',
'tenant_context_unavailable_summary' => 'Select a tenant to view the decision-first dashboard overview.',
'posture_blocked_headline' => 'Provider permissions are blocking tenant workflows.',
'posture_blocked_summary' => 'Required application permissions are missing, so provider-backed operations cannot be treated as healthy readiness.',
'posture_calm_headline' => 'No immediate tenant blocker is visible.',
'posture_calm_summary' => 'Current findings, permissions, recovery posture, and recent operations do not show an urgent follow-up path.',
'posture_action_needed_fallback_summary' => 'The tenant still needs operator follow-up before the landing page can stay calm.',
'section_recommended_actions' => 'Recommended next actions',
'section_governance_status' => 'Governance status',
'section_readiness' => 'Review & evidence readiness',
'section_recent_operations' => 'Recent operations',
'header_primary_focus' => 'Primary focus',
'priority_label' => 'Priority :priority',
'label_reason' => 'Reason',
'label_impact' => 'Impact',
'empty_recommended_actions_headline' => 'No immediate action is waiting.',
'empty_recommended_actions_summary' => 'The tenant currently looks calm. Use the status and readiness sections below to confirm what is healthy and what is simply unavailable.',
'empty_recent_operations_headline' => 'No recent operations yet.',
'empty_recent_operations_summary' => 'Once tenant operations run, the most recent execution context will appear here without taking over the first decision layer.',
'kpi_high_severity_label' => 'High severity findings',
'kpi_high_severity_description' => 'High or critical findings still needing review.',
'kpi_high_severity_tendency' => ':count active now',
'kpi_high_severity_tendency_window' => ':count active · :window new in 7d',
'kpi_high_severity_tendency_none' => 'No active pressure',
'kpi_overdue_label' => 'Overdue findings',
'kpi_overdue_description' => 'Open workflow items that are already overdue.',
'kpi_overdue_tendency' => ':count overdue now',
'kpi_overdue_tendency_none' => 'None overdue',
'kpi_missing_permissions_label' => 'Missing permissions',
'kpi_missing_permissions_description' => 'Provider-required permissions currently missing for this tenant.',
'kpi_missing_permissions_tendency_split' => ':app app · :delegated delegated missing',
'kpi_missing_permissions_tendency_app_only' => ':count app missing',
'kpi_missing_permissions_tendency_delegated_only' => ':count delegated missing',
'kpi_missing_permissions_tendency_none' => 'Permission set complete',
'kpi_active_operations_label' => 'Active operations',
'kpi_active_operations_description' => 'Stale or terminal operation runs needing operator follow-up.',
'kpi_active_operations_tendency' => ':count need follow-up',
'kpi_active_operations_tendency_window' => ':count need follow-up · :window in 7d',
'kpi_active_operations_tendency_none' => 'No follow-up queued',
'action_review_findings' => 'Review findings',
'action_open_overdue_findings' => 'Open overdue findings',
'action_open_required_permissions' => 'Open required permissions',
'action_review_risks' => 'Review risks',
'action_review_recovery_posture' => 'Review recovery posture',
'action_view_all_operations' => 'View all operations',
'action_open_governance_inbox' => 'Open governance inbox',
'action_continue_review' => 'Continue review',
'action_open_baseline_compare' => 'Open Baseline Compare',
'action_open_evidence' => 'Open evidence',
'action_open_backup_posture' => 'Open backup posture',
'action_view_export_artifacts' => 'View export artifacts',
'action_open_customer_workspace' => 'Open customer workspace',
'action_open_review_pack' => 'Open review pack',
'action_open_review' => 'Open review',
'action_open_reviews' => 'Open reviews',
'reason_missing_application_permissions' => ':count application permission(s) are still missing.',
'impact_missing_application_permissions' => 'Provider-backed inventory, verification, and reporting flows stay blocked until consent is restored.',
'reason_missing_delegated_permissions' => ':count delegated permission(s) still need attention.',
'impact_missing_delegated_permissions' => 'The tenant stays partially ready until delegated permissions are reviewed and granted where needed.',
'reason_high_severity_findings' => ':count high severity finding(s) still need operator review.',
'impact_high_severity_findings' => 'Severe drift stays unresolved until those findings are triaged or remediated.',
'reason_overdue_findings' => ':count finding(s) are already overdue.',
'impact_overdue_findings' => 'Workflow delay can hide the tenant\'s current risk posture until overdue items are cleared.',
'reason_risk_exceptions' => ':count risk exception(s) or accepted-risk governance item(s) need follow-up.',
'impact_risk_exceptions' => 'Accepted-risk statements stop being trustworthy when their exception history is no longer current.',
'impact_recovery_posture' => 'Recovery readiness should be checked before customer-safe claims rely on backup or restore confidence.',
'reason_terminal_operations' => ':count operation run(s) finished blocked, partial, or failed.',
'impact_terminal_operations' => 'Terminal run outcomes need follow-up before the tenant can be treated as calm.',
'reason_continue_review' => 'Customer-safe output is not fully ready yet.',
'impact_continue_review' => 'Review output stays partial until the review, evidence, and pack surfaces line up cleanly.',
'governance_baseline_compare_label' => 'Baseline compare',
'governance_baseline_compare_description' => 'Current compare posture for the tenant baseline.',
'governance_evidence_coverage_label' => 'Evidence coverage',
'governance_review_freshness_label' => 'Review freshness',
'governance_provider_permissions_label' => 'Provider permissions',
'governance_backup_posture_label' => 'Backup posture',
'governance_backup_posture_unavailable_description' => 'Recovery readiness is not yet available.',
'readiness_current_review_title' => 'Current review',
'readiness_current_review_empty_status' => 'No active review',
'readiness_current_review_empty_description' => 'There is currently no review in progress for this tenant.',
'readiness_current_review_updated_label' => 'Last updated',
'readiness_current_review_findings_progress_label' => 'Findings with outcome',
'readiness_current_review_completion_progress_label' => 'Review completion',
'readiness_customer_safe_output_title' => 'Customer-safe output',
'readiness_customer_safe_output_empty_status' => 'No customer-safe output available',
'readiness_customer_safe_output_empty_description' => 'Generate a review pack once review and evidence are ready for handoff.',
'readiness_customer_safe_output_evidence_label' => 'Evidence snapshot',
'readiness_customer_safe_output_review_pack_label' => 'Review pack',
'readiness_risk_exceptions_title' => 'Risk exceptions',
'readiness_risk_exceptions_active_label' => 'Accepted risks',
'readiness_risk_exceptions_expiring_label' => 'Expiring soon',
'readiness_risk_exceptions_pending_label' => 'Pending approval',
'readiness_provider_health_title' => 'Provider Health',
'readiness_provider_health_empty_status' => 'Provider status unavailable',
'readiness_provider_health_empty_description' => 'No provider health snapshot is currently available for this tenant.',
'readiness_provider_health_last_check_label' => 'Last check',
'readiness_provider_health_permissions_label' => 'Missing permissions',
'readiness_provider_health_snapshot_label' => 'Permissions snapshot',
'readiness_provider_health_degraded_description' => 'The latest provider health check reported warnings for this tenant.',
'readiness_provider_health_blocked_description' => 'The provider health check is currently blocked for this tenant.',
'readiness_provider_health_error_description' => 'The provider health check failed for this tenant.',
'readiness_provider_health_pending_description' => 'The latest provider health check is still pending.',
'readiness_provider_health_unknown_description' => 'No provider health check has been recorded yet.',
'helper_findings_requires_permissions' => 'You can see the tenant posture, but opening findings requires additional permissions.',
'helper_risk_exceptions_requires_permissions' => 'You can see the summary, but opening risk exceptions requires additional permissions.',
'helper_review_requires_permissions' => 'You can see the summary, but opening review detail requires additional permissions.',
'helper_continue_review_requires_manage' => 'You can inspect the current review state, but only review managers can continue the review workflow.',
'helper_evidence_requires_permissions' => 'You can see the summary, but opening evidence detail requires additional permissions.',
'helper_customer_workspace_requires_permissions' => 'Customer-safe output is summarized here, but opening the underlying review surfaces requires additional permissions.',
'helper_required_permissions_unavailable' => 'You can see the summary, but opening the required-permissions detail is not available for this actor.',
'helper_operations_unavailable' => 'You can see the summary, but opening operations detail is not available for this actor.',
'helper_baseline_compare_requires_permissions' => 'You can see the summary, but opening baseline compare requires additional permissions.',
'helper_backup_posture_requires_permissions' => 'You can see the summary, but opening backup posture detail requires additional permissions.',
'evidence_unavailable_description' => 'No evidence snapshot is currently available for customer-safe output.',
'evidence_generated_prefix' => 'Latest evidence snapshot generated :time.',
'review_unavailable_description' => 'No tenant review is currently available for this tenant.',
'review_updated_prefix' => 'Latest review updated :time.',
'provider_permissions_ready' => 'Ready',
'provider_permissions_blocked' => 'Blocked',
'provider_permissions_needs_attention' => 'Needs attention',
'provider_permissions_complete_description' => 'Required permissions currently look complete.',
'provider_permissions_stale_suffix' => 'The verification snapshot is stale.',
'review_pack_updated_prefix' => 'Latest review pack updated :time.',
'review_pack_evidence_available_description' => 'Evidence exists, but a customer-safe review pack is not ready yet.',
'review_pack_unavailable_description' => 'No customer-safe output is currently ready for handoff.',
'risk_exceptions_need_action_status' => ':count need action',
'risk_exceptions_active_status' => ':count active',
'risk_exceptions_pending_description' => 'Pending, expiring, or expired exceptions still need governance follow-up.',
'risk_exceptions_active_description' => 'Accepted-risk exceptions exist but do not currently need urgent review.',
'risk_exceptions_calm_description' => 'No risk exceptions currently need attention.',
'recent_operation_fallback_summary' => 'Recent operation context for this tenant.',
],
],
'review' => [
'reporting' => 'Reporting',
'customer_reviews' => 'Customer reviews',
'customer_review_workspace' => 'Customer Review Workspace',
'customer_safe_review_workspace' => 'Customer-safe governance package index',
'customer_workspace_intro' => 'Review the executive-ready governance package status for each entitled tenant and open the customer-safe detail when follow-up is needed.',
'customer_workspace_canonical_note' => 'Each row is an index entry: open the review detail to inspect package status, the executive entrypoint, supporting evidence, current risks, and the next customer-safe action.',
'customer_workspace_mapping_version' => 'Control readiness interpretation uses :version for this workspace.',
'customer_workspace_non_certification_disclosure' => 'This workspace summarizes current review evidence for service delivery. It does not replace a formal audit opinion, certification, or legal attestation.',
'reviews' => 'Reviews',
'clear_filters' => 'Clear filters',
'tenant' => 'Tenant',
'latest_review' => 'Latest review',
'review_status' => 'Review status',
'status' => 'Status',
'control' => 'Control',
'control_interpretation' => 'Control readiness interpretation',
'control_readiness' => 'Control readiness',
'assessment_status' => 'Assessment status',
'review_recommended' => 'Review recommended',
'recommended_next_action' => 'Recommended next action',
'customer_safe' => 'Customer-safe',
'interpretation_version_short' => 'Interpretation version: :version',
'additional_controls' => '+:count more control(s)',
'control_limitations_summary' => 'Limitations: :limitations.',
'control_readiness_unmapped' => 'No mapped controls',
'control_readiness_unmapped_description' => 'No canonical controls are mapped in this released review. Treat the control view as partial until evidence references can be mapped.',
'control_evidence_unmapped' => 'No mapped evidence basis is available.',
'control_evidence_unavailable' => 'Evidence basis unavailable.',
'control_recommendation_unmapped' => 'Review unmapped evidence before customer delivery.',
'proof_access_state' => 'Proof access',
'key_findings' => 'Key findings',
'accepted_risks' => 'Accepted risks',
'evidence_proof' => 'Evidence proof',
'evidence_status' => 'Evidence',
'published' => 'Published',
'review_pack' => 'Review pack',
'open_latest_review' => 'Open latest review',
'open' => 'Open',
'open_review' => 'Open review',
'last_review' => 'Last review',
'primary_action' => 'Primary action',
'download_review_pack' => 'Download review pack',
'download_current_review_pack' => 'Download current review pack',
'download_governance_package' => 'Download governance package',
'governance_package' => 'Governance package',
'governance_decisions' => 'Governance decisions',
'governance_package_delivery_note' => 'This governance package is delivered through the current export review pack for the released review.',
'executive_entrypoint' => 'Executive entrypoint',
'executive_entrypoint_description' => 'Start with executive-summary.md in the downloaded package.',
'auditor_appendix' => 'Structured auditor appendix',
'auditor_appendix_description' => 'metadata.json, summary.json, and sections.json remain included as the secondary structured appendix.',
'governance_package_available' => 'Governance package available',
'governance_package_available_description' => 'The current export review pack is ready for stakeholder delivery from this released review.',
'governance_package_partial' => 'Governance package partial',
'governance_package_partial_description' => 'The current export review pack is ready, but the supporting review basis remains partial or limitation-aware.',
'governance_package_unavailable' => 'Governance package unavailable',
'governance_package_unavailable_description' => 'No current export review pack is attached to this released review yet.',
'governance_package_not_ready_description' => 'The current export review pack is not ready for stakeholder delivery yet.',
'governance_package_expired' => 'Governance package expired',
'governance_package_expired_description' => 'The current export review pack has expired and cannot be downloaded from this released review.',
'governance_package_blocked' => 'Governance package blocked',
'governance_package_blocked_description' => 'This account can read the released review but cannot download the current export review pack.',
'no_entitled_tenants' => 'No entitled tenants match this view',
'no_released_customer_reviews' => 'No released customer reviews match this view',
'no_released_customer_reviews_description' => 'Publish a tenant review before it appears in the customer-safe workspace.',
'clear_filters_description' => 'Clear the current filters to return to the full customer review workspace for your entitled tenants.',
'adjust_filters_description' => 'Adjust filters to return to the full customer review workspace for your entitled tenants.',
'no_published_review' => 'No published review',
'no_published_review_available' => 'No published review available yet',
'no_findings_recorded' => 'No findings recorded in the published review.',
'findings_count_summary' => ':count findings summarized in the published review.',
'findings_count_with_outcomes' => ':count findings. Terminal outcomes: :outcomes.',
'no_accepted_risks_recorded' => 'No accepted risks recorded.',
'accepted_risks_need_follow_up' => ':warnings accepted risks need governance follow-up (:total total).',
'accepted_risks_governed' => ':count accepted risks are governed.',
'accepted_risks_on_record' => ':count accepted risks are on record.',
'accepted_risk_accountable' => 'Accountable: :name.',
'accepted_risk_accountable_until' => 'Accountable: :name. Re-review by :date.',
'accepted_risk_reason' => 'Reason: :reason.',
'accepted_risk_partial_accountability' => 'Accountability is partially recorded; review owner details are not fully available.',
'unavailable' => 'Unavailable',
'available' => 'Available',
'partial' => 'Partial',
'blocked' => 'Blocked',
'expired' => 'Expired',
'restricted' => 'Restricted',
'review_pack_available' => 'Current review pack available',
'no_current_review_pack' => 'No current review pack available yet',
'review_pack_access_unavailable' => 'Review pack access is unavailable for this actor',
'review_pack_unavailable' => 'Review pack is not ready yet',
'review_pack_expired' => 'Review pack expired',
'evidence_proof_available' => 'Proof summary available',
'evidence_proof_absent' => 'No proof summary linked yet',
'evidence_proof_access_unavailable' => 'Proof access is unavailable for this actor',
'evidence_proof_expired' => 'Proof summary expired',
'evidence_available' => 'Evidence available',
'evidence_pending' => 'Evidence pending',
'evidence_restricted' => 'Evidence restricted',
'evidence_expired' => 'Evidence expired',
'assessment_basis' => 'Assessment basis',
'assessment_basis_description' => 'These assessment areas explain how the package statements are supported by the current review evidence.',
'review_completed' => 'Review completed',
'review_requires_attention' => 'Review required',
'ready_for_release' => 'Ready for release',
'accepted_risk_status' => 'Accepted risk status',
'accepted_risk_none' => 'None on record',
'accepted_risk_on_record' => ':count on record',
'accepted_risk_follow_up' => 'Follow-up required',
'customer_review_pack_unavailable' => 'The current review pack cannot be downloaded from this customer-safe flow.',
'customer_review_pack_missing' => 'No current review pack is attached to this released review yet.',
'customer_review_pack_not_ready' => 'The attached review pack is not ready for download yet.',
'customer_review_pack_expired' => 'The attached review pack has expired.',
'customer_review_pack_forbidden' => 'This account can read the review but cannot download the current review pack.',
'released_governance_record' => 'Released governance record',
'released_governance_record_available' => 'This released review is available for customer-safe governance consumption.',
'outcome_summary' => 'Outcome summary',
'review' => 'Review',
'review_date' => 'Review date',
'completeness' => 'Completeness',
'evidence_snapshot' => 'Evidence snapshot',
'current_export' => 'Current export',
'executive_posture' => 'Executive posture',
'sections' => 'Sections',
'details' => 'Details',
'export_executive_pack' => 'Export executive pack',
'outcome' => 'Outcome',
'export' => 'Export',
'next_step' => 'Next step',
'workspace_next_step_evidence_review' => 'Review evidence',
'workspace_next_step_review_open' => 'Open review',
'workspace_next_step_package_review' => 'Review package',
'workspace_next_step_control_mapping' => 'Review control mapping',
'no_tenant_reviews_yet' => 'No tenant reviews yet',
'create_first_review_description' => 'Create the first review from an anchored evidence snapshot to start the recurring review history for this tenant.',
'create_first_review' => 'Create first review',
'create_review' => 'Create review',
'evidence_basis' => 'Evidence basis',
'evidence_basis_helper' => 'Choose the anchored evidence snapshot for this review.',
'unable_create_missing_context' => 'Unable to create review - missing context.',
'select_valid_evidence_snapshot' => 'Select a valid evidence snapshot.',
'unable_create_review' => 'Unable to create review',
'review_already_available' => 'Review already available',
'review_already_available_body' => 'A matching mutable review already exists for this evidence basis.',
'view_review' => 'View review',
'open_operation' => 'Open operation',
'review_composing_background' => 'The review is being composed in the background.',
'unable_export_missing_context' => 'Unable to export review - missing context.',
'export_already_queued_body' => 'An executive pack export is already queued or running for this review.',
'executive_pack_export_unavailable' => 'Executive pack export unavailable',
'unable_export_executive_pack' => 'Unable to export executive pack',
'executive_pack_already_available' => 'Executive pack already available',
'executive_pack_already_available_body' => 'A matching executive pack already exists for this review.',
'view_pack' => 'View pack',
'executive_pack_generating_background' => 'The executive pack is being generated in the background.',
'review_explanation' => 'Review explanation',
'reason_owner' => 'Reason owner',
'platform_core' => 'Platform core',
'platform_reason_family' => 'Platform reason family',
'compatibility' => 'Compatibility',
'highlights' => 'Highlights',
'next_actions' => 'Next actions',
'related_context' => 'Related context',
'publication_readiness' => 'Publication readiness',
'ready_for_publication' => 'This review is ready for publication and executive-pack export.',
'internal_only' => 'This review is currently safe for internal use only.',
'needs_follow_up' => 'This review still needs follow-up before publication.',
'key_entries' => 'Key entries',
'entry' => 'Entry',
'follow_up' => 'Follow-up',
'diagnostics' => 'Diagnostics',
'result_meaning' => 'Result meaning',
'result_trust' => 'Result trust',
'artifact_truth' => 'Artifact truth',
'no_action_needed' => 'No action needed',
'count' => 'Count',
'guidance' => 'Guidance',
'findings' => 'Findings',
'reports' => 'Reports',
'operations' => 'Operations',
'pending_verification' => 'Pending verification',
'verified_cleared' => 'Verified cleared',
'terminal_outcomes' => 'Terminal outcomes',
'pending' => 'Pending',
'operation' => 'Operation',
'operation_description' => 'Inspect the latest review composition or refresh run.',
'executive_pack' => 'Executive pack',
'view_executive_pack' => 'View executive pack',
'executive_pack_description' => 'Open the current export that belongs to this review.',
'customer_workspace' => 'Customer workspace',
'open_customer_workspace' => 'Open customer workspace',
'customer_workspace_description' => 'Open the customer-safe review workspace prefiltered to this tenant.',
'view_evidence_snapshot' => 'View evidence snapshot',
'evidence_snapshot_description' => 'Return to the evidence basis behind this review.',
],
'findings' => [
'all' => 'All',
'needs_action' => 'Needs action',
'overdue' => 'Overdue',
'risk_accepted' => 'Risk accepted',
'resolved' => 'Resolved',
'actions' => 'Actions',
'open_approval_queue' => 'Open approval queue',
],
'policy' => [
'common' => [
'policy' => 'Policy',
'policies' => 'Policies',
'type' => 'Type',
'visibility' => 'Visibility',
'category' => 'Category',
'restore' => 'Restore',
'platform' => 'Platform',
'settings' => 'Settings',
'external_id' => 'External ID',
'last_synced' => 'Last synced',
'snapshot' => 'Snapshot',
'version' => 'Version',
'actor' => 'Actor',
'created' => 'Created',
'captured' => 'Captured',
'platform_label_windows' => 'Windows',
'platform_label_android' => 'Android',
'platform_label_ios' => 'iOS',
'platform_label_macos' => 'macOS',
'platform_label_all' => 'All',
'platform_label_mobile' => 'Mobile',
'open_operation' => 'Open operation',
'more' => 'More',
'backup_name' => 'Backup name',
'backup_name_default_prefix' => 'Backup',
'source_microsoft_intune' => 'Source: Microsoft Intune',
'type_delete_to_confirm' => 'Type DELETE to confirm',
'type_delete_to_confirm_validation' => 'Please type DELETE to confirm.',
'preview_only_dry_run' => 'Preview only (dry-run)',
],
'resource' => [
'sync_action_primary' => 'Sync policies',
'sync_action_secondary' => 'Sync',
'sync_modal_heading' => 'Sync policy inventory',
'sync_modal_description' => 'This queues a background sync operation for supported policy types in the current tenant.',
'sync_permission_tooltip' => 'You do not have permission to sync policies.',
'capture_snapshot_action' => 'Capture snapshot',
'capture_snapshot_modal_heading' => 'Capture snapshot now',
'capture_snapshot_modal_subheading' => 'This queues a background job that fetches the latest configuration from Microsoft Graph and stores a new policy version.',
'capture_snapshot_include_assignments' => 'Include assignments',
'capture_snapshot_include_assignments_helper' => 'Captures assignment include/exclude targeting and filters.',
'capture_snapshot_include_scope_tags' => 'Include scope tags',
'capture_snapshot_include_scope_tags_helper' => 'Captures policy scope tag IDs.',
'capture_snapshot_unavailable_title' => 'Snapshot capture unavailable',
'capture_snapshot_in_progress_title' => 'Snapshot already in progress',
'capture_snapshot_in_progress_body' => 'An active run already exists for this policy. Opening run details.',
'capture_snapshot_permission_tooltip' => 'You do not have permission to capture policy snapshots.',
'visibility_source_unavailable_description' => 'The connected source did not return this policy or is currently unavailable. Historical restore remains available.',
'visibility_source_unavailable_backup_items' => 'The connected source did not return this policy or is currently unavailable. Historical backup items remain available for restore selection.',
'details_section' => 'Policy details',
'tab_general' => 'General',
'tab_json' => 'JSON',
'general_field_name' => 'Name',
'general_field_platforms' => 'Platforms',
'general_field_technologies' => 'Technologies',
'general_field_template_reference' => 'Template reference',
'general_field_setting_count' => 'Setting count',
'general_field_version' => 'Version',
'general_field_last_modified' => 'Last modified',
'general_field_created' => 'Created',
'general_field_description' => 'Description',
'general_empty_state' => 'No general metadata available.',
'general_fallback_field' => 'Field',
'template_fallback' => 'Template',
'settings_empty_state' => 'No policy snapshot available yet.',
'settings_empty_state_helper' => 'This policy has been inventoried but no configuration snapshot has been captured yet.',
'snapshot_metadata_only_helper' => 'Graph returned :status for this policy type. Only local metadata was saved; settings and restore are unavailable until Graph works again.',
'graph_error_fallback' => 'an error',
'snapshot_json_section' => 'Policy snapshot (JSON)',
'payload_size' => 'Payload size',
'large_payload_warning' => 'Large payload (:size KB) - may impact performance',
'settings_available' => 'Available',
'settings_missing' => 'Missing',
'filter_active' => 'Active',
'filter_ignored' => 'Ignored locally',
'filter_source_unavailable' => 'Source unavailable',
'filter_all' => 'All',
'export_to_backup' => 'Export to backup',
'current_backup_unavailable' => 'Current backup unavailable',
'restore_action' => 'Restore',
'restore_bulk_action' => 'Restore policies',
'restore_permission_tooltip' => 'You do not have permission to restore policies.',
'policy_restored' => 'Policy restored',
'ignore_action' => 'Ignore',
'ignore_bulk_action' => 'Ignore policies',
'ignore_permission_tooltip' => 'You do not have permission to ignore policies.',
'policy_ignored' => 'Policy ignored',
'empty_state_heading' => 'No policies in inventory yet',
'empty_state_description' => 'Run a sync to build this tenant\'s policy inventory, including versions, restore readiness, and governance evidence.',
'delete_queued_body' => 'Queued deletion for :count policies.',
],
'versions' => [
'backup_quality_section' => 'Backup quality',
'related_context_section' => 'Related context',
'diff_tab' => 'Diff',
'backup_quality' => 'Backup quality',
'snapshot_mode_full' => 'Full',
'snapshot_mode_metadata_only' => 'Metadata only',
'assignment_quality' => 'Assignment quality',
'next_action' => 'Next action',
'integrity_note' => 'Integrity note',
'boundary' => 'Boundary',
'quality_highlight_metadata_only' => 'Metadata only',
'quality_highlight_assignment_fetch_failed' => 'Assignment fetch failed',
'quality_highlight_assignments_captured_separately' => 'Assignments captured separately',
'quality_highlight_orphaned_assignments' => 'Orphaned assignments',
'quality_highlight_integrity_warning' => 'Integrity warning',
'quality_highlight_unknown_quality' => 'Unknown quality',
'compact_summary_full_payload' => 'Full payload',
'compact_summary_unknown_quality' => 'Unknown quality',
'compact_summary_no_degradations_detected' => 'No degradations detected',
'summary_full_no_degradations' => 'No degradations were detected from the captured snapshot and assignment metadata.',
'summary_unknown_quality' => 'Quality is unknown because this record lacks enough completeness metadata to justify a stronger claim.',
'summary_no_degradations' => 'No degradations were detected.',
'next_action_open_version_detail' => 'Open the version detail if you need raw settings or diff context.',
'next_action_prefer_stronger_version' => 'Prefer a stronger version or inspect the version detail before restore.',
'raw_diff_advanced' => 'Raw diff (advanced)',
'prune_versions' => 'Prune versions',
'prune_modal_description' => 'Only versions captured more than the specified retention window (in days) are eligible. Newer versions will be skipped.',
'retention_days' => 'Retention days',
'retention_days_helper' => 'Versions captured within the last N days will be skipped.',
'manage_permission_tooltip' => 'You do not have permission to manage policy versions.',
'restore_versions' => 'Restore versions',
'restore_versions_modal_heading' => 'Restore :count policy versions?',
'restore_versions_modal_description' => 'Archived versions will be restored back to the active list. Active versions will be skipped.',
'force_delete_versions' => 'Force delete versions',
'force_delete_versions_modal_heading' => 'Force delete :count policy versions?',
'force_delete_versions_modal_description' => 'This is permanent. Only archived versions will be permanently deleted; active versions will be skipped.',
'restore_via_wizard' => 'Restore via wizard',
'restore_via_wizard_modal_heading' => 'Restore version :version via wizard?',
'restore_via_wizard_modal_subheading' => 'Creates a 1-item backup set from this snapshot and opens the restore run wizard prefilled.',
'restore_run_permission_tooltip' => 'You do not have permission to create restore runs.',
'metadata_only_tooltip' => 'Disabled for metadata-only snapshots (Graph did not provide policy settings).',
'restore_disabled_metadata_title' => 'Restore disabled for metadata-only snapshot',
'restore_disabled_metadata_body' => 'This snapshot only contains metadata; Graph did not provide policy settings to restore.',
'different_tenant_title' => 'Policy version belongs to a different tenant',
'missing_policy_title' => 'Policy could not be found for this version',
'backup_set_name' => 'Policy version restore - :policy - v:version',
'archive' => 'Archive',
'archived_title' => 'Policy version archived',
'force_delete' => 'Force delete',
'force_deleted_title' => 'Policy version permanently deleted',
'restored_title' => 'Policy version restored',
'empty_state_heading' => 'No policy versions',
'empty_state_description' => 'Capture or sync policy snapshots to build a version history.',
'open_backup_sets' => 'Open backup sets',
'related_entry_current_policy_version' => 'Current policy version',
'related_entry_policy' => 'Policy',
'related_entry_policy_version' => 'Policy version',
'related_action_view_policy' => 'View policy',
'related_action_view_policy_version' => 'View policy version',
'reference_policy_number' => 'Policy #:id',
'reference_version_number' => 'Version :version',
'related_record_fallback' => 'Open related record',
'assignment_fetch_failed_orphaned' => 'Assignment fetch failed and orphaned targets were detected.',
'assignment_fetch_failed' => 'Assignment fetch failed during capture.',
'assignment_orphaned' => 'Orphaned assignment targets were detected.',
'assignment_no_issues' => 'No assignment issues were detected from captured metadata.',
'fallback_display_name' => 'Version :version',
],
'relation' => [
'restore_to_microsoft_intune' => 'Restore to Microsoft Intune',
'restore_heading' => 'Restore version :version to Microsoft Intune?',
'restore_subheading' => 'Creates a restore run using this policy version snapshot.',
'missing_context_title' => 'Missing tenant or user context.',
'restore_run_failed_title' => 'Restore run failed to start',
'restore_run_started_title' => 'Restore run started',
'no_versions_captured' => 'No versions captured',
'no_versions_captured_description' => 'Capture or sync this policy again to create version history entries.',
],
'badges' => [
'active' => 'Active',
'ignored_locally' => 'Ignored locally',
'source_unavailable' => 'Source unavailable',
'ignored_source_unavailable' => 'Ignored + source unavailable',
],
'taxonomy' => [
'policies' => 'Policies',
],
],
'notifications' => [
'locale_override_saved' => 'Language override applied.',
'locale_override_cleared' => 'Language override cleared.',
'user_preference_saved' => 'Language preference saved.',
'user_preference_cleared' => 'Language preference cleared.',
'workspace_settings_saved' => 'Workspace settings saved',
'workspace_settings_unchanged' => 'No settings changes to save',
'workspace_setting_reset' => 'Workspace setting reset to default',
'setting_already_default' => 'Setting already uses default',
],
'validation' => [
'unsupported_locale' => 'Choose a supported language.',
],
];