translate method

  1. @override
String translate(
  1. String key, {
  2. Map<String, String>? args,
})
override

Méthode pour obtenir une traduction

Implementation

@override
String translate(String key, {Map<String, String>? args}) {
  final dynamic localization = Localizations.of(context, Object);

  if (localization == null) {
    return key;
  }

  try {
    // Vérifie si l'instance possède la clé sous forme de getter et l'appelle dynamiquement
    final dynamic translated = (localization as dynamic).noSuchMethod(
      Invocation.getter(Symbol(key)),
      returnValue: null,
    );

    if (translated is String) {
      String translation = translated;

      // Remplacement des variables dynamiques dans la traduction
      args?.forEach((argKey, argValue) {
        translation = translation.replaceAll('{$argKey}', argValue);
      });

      return translation;
    }
  } catch (e) {
    debugPrint("[DEBUG] Erreur lors de la récupération de la clé $key : $e");
  }

  return key; // Retourne la clé brute si aucune traduction n'est trouvée
}