auditmysite 1.7.2

Resource-efficient WCAG 2.2 AA Accessibility Checker in Rust
Documentation
use crate::audit::normalized::AuditContext;
use crate::i18n::I18n;
use crate::output::localized::is_english;
use crate::output::report_model::{AiTransparencyPresentation, ImageProvenanceFindingPresentation};

pub(super) fn build_ai_transparency_details(
    normalized: &AuditContext<'_>,
    i18n: &I18n,
) -> Option<AiTransparencyPresentation> {
    let en = is_english(i18n);
    normalized.raw_ai_transparency.map(|a| AiTransparencyPresentation {
        images_checked: a.images_checked,
        findings: a
            .findings
            .iter()
            .map(|f| {
                let provenance_label = if en {
                    match f.provenance {
                        crate::ai_transparency::AiProvenanceKind::TrainedAlgorithmicMedia => {
                            "AI-trained model (trainedAlgorithmicMedia)"
                        }
                        crate::ai_transparency::AiProvenanceKind::CompositeWithTrainedAlgorithmicMedia => {
                            "AI-assisted composite (compositeWithTrainedAlgorithmicMedia)"
                        }
                        crate::ai_transparency::AiProvenanceKind::CompositeSynthetic => {
                            "Composite with AI content (compositeSynthetic)"
                        }
                        crate::ai_transparency::AiProvenanceKind::VirtualRecording => {
                            "Virtual recording with AI content (virtualRecording)"
                        }
                        crate::ai_transparency::AiProvenanceKind::TrainedAlgorithmicData => {
                            "Algorithmically generated data (trainedAlgorithmicData)"
                        }
                    }
                } else {
                    match f.provenance {
                        crate::ai_transparency::AiProvenanceKind::TrainedAlgorithmicMedia => {
                            "KI-trainiertes Modell (trainedAlgorithmicMedia)"
                        }
                        crate::ai_transparency::AiProvenanceKind::CompositeWithTrainedAlgorithmicMedia => {
                            "KI-gestützte Komposition (compositeWithTrainedAlgorithmicMedia)"
                        }
                        crate::ai_transparency::AiProvenanceKind::CompositeSynthetic => {
                            "Komposition mit KI-Anteil (compositeSynthetic)"
                        }
                        crate::ai_transparency::AiProvenanceKind::VirtualRecording => {
                            "Virtuelle Aufzeichnung mit KI-Anteil (virtualRecording)"
                        }
                        crate::ai_transparency::AiProvenanceKind::TrainedAlgorithmicData => {
                            "Algorithmisch erzeugte Daten (trainedAlgorithmicData)"
                        }
                    }
                }
                .to_string();
                let validation_label = if en {
                    match f.validation {
                        crate::ai_transparency::ManifestValidation::Invalid => "not validated",
                        crate::ai_transparency::ManifestValidation::Valid => "valid",
                        crate::ai_transparency::ManifestValidation::Trusted => "trusted",
                    }
                } else {
                    match f.validation {
                        crate::ai_transparency::ManifestValidation::Invalid => "nicht validiert",
                        crate::ai_transparency::ManifestValidation::Valid => "gültig",
                        crate::ai_transparency::ManifestValidation::Trusted => "vertrauenswürdig",
                    }
                }
                .to_string();
                ImageProvenanceFindingPresentation {
                    image_url: f.image_url.clone(),
                    provenance_label,
                    validation_label,
                    generator: f.generator.clone(),
                    message: crate::ai_transparency::finding_message_text(&f.rule_id, en),
                }
            })
            .collect(),
    })
}