tablet-app-new/lib/Components/ai_generated_badge.dart
Thomas Fransolet bac086f1e1 Studio lot 6 : mention « image générée par IA » chez le visiteur
Une reconstitution n'est pas une photographie d'archive, et rien dans l'image ne le dit :
la mention est due au visiteur. Elle est posée au-dessus des trois branches de rendu
(réseau, cache hors ligne, URL externe) plutôt qu'à chacune, pour qu'aucun point
d'affichage ne puisse l'oublier.

Traduite dans les onze langues publiées : l'app visiteur n'a pas d'infrastructure de
traduction pour ses propres libellés.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 17:33:55 +02:00

50 lines
1.8 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import 'package:manager_api_new/api.dart';
/// Mention « image générée par IA » posée sur une image produite par le Studio (lot 6).
///
/// Elle est due au visiteur, pas au client : une reconstitution n'est pas une photographie
/// d'archive, et rien dans l'image ne le dit. Le texte suit la langue de visite — l'app
/// visiteur n'a pas d'infrastructure de traduction pour ses propres libellés, les dix
/// langues publiées sont donc portées ici.
class AiGeneratedBadge extends StatelessWidget {
const AiGeneratedBadge({Key? key, required this.language}) : super(key: key);
final String? language;
static const _labels = {
'FR': 'Image générée par IA',
'NL': 'Beeld gegenereerd door AI',
'EN': 'AI-generated image',
'DE': 'KI-generiertes Bild',
'ES': 'Imagen generada por IA',
'IT': 'Immagine generata dallIA',
'PL': 'Obraz wygenerowany przez SI',
'CN': '人工智能生成的图像',
'AR': 'صورة من إنتاج الذكاء الاصطناعي',
'UK': 'Зображення, створене ШІ',
'LB': 'Bild generéiert vun der KI',
};
/// Une image générée doit porter la mention ; une image téléversée, jamais.
static bool isGenerated(ResourceDTO? resource) =>
resource?.origin == ResourceOrigin.Generated;
@override
Widget build(BuildContext context) {
final label = _labels[(language ?? 'FR').toUpperCase()] ?? _labels['FR']!;
return Container(
padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3),
decoration: BoxDecoration(
color: Colors.black.withValues(alpha: 0.72),
borderRadius: BorderRadius.circular(4),
),
child: Text(
label,
style: const TextStyle(color: Colors.white, fontSize: 9, letterSpacing: 0.2),
),
);
}
}