1
0
forked from Mirrors/RGSX
- fix error messages in history
This commit is contained in:
retrogamesets
2025-09-17 12:40:56 +02:00
parent fa394ecc15
commit 9861afb9fb
3 changed files with 35 additions and 19 deletions

View File

@@ -13,7 +13,7 @@ except Exception:
pygame = None # type: ignore
# Version actuelle de l'application
app_version = "2.2.2.4"
app_version = "2.2.2.5"
def get_application_root():

View File

@@ -924,38 +924,44 @@ def draw_history_list(screen):
progress = entry.get("progress", 0)
progress = max(0, min(100, progress)) # Clamp progress between 0 and 100
# Precompute provider prefix once
provider_prefix = entry.get("provider_prefix") or (entry.get("provider") + ":" if entry.get("provider") else "")
# Compute status text (optimized version without redundant prefix for errors)
if status in ["Téléchargement", "downloading"]:
status_text = _("history_status_downloading").format(progress)
provider_prefix = entry.get("provider_prefix") or (entry.get("provider") + ":" if entry.get("provider") else "")
# Coerce to string and prefix provider when relevant
status_text = str(status_text or "")
if provider_prefix and not status_text.startswith(provider_prefix):
status_text = f"{provider_prefix} {status_text}"
elif status == "Extracting":
status_text = _("history_status_extracting").format(progress)
provider_prefix = entry.get("provider_prefix") or (entry.get("provider") + ":" if entry.get("provider") else "")
status_text = str(status_text or "")
if provider_prefix and not status_text.startswith(provider_prefix):
status_text = f"{provider_prefix} {status_text}"
elif status == "Download_OK":
# Completed: no provider prefix (per requirement)
status_text = _("history_status_completed")
status_text = str(status_text or "")
elif status == "Erreur":
# Prefer friendly mapped message now stored in 'message'
status_text = entry.get('message')
if not status_text:
# Some legacy entries might have only raw in result[1] or auxiliary field
status_text = entry.get('raw_error_realdebrid') or entry.get('error') or 'Échec'
# Coerce to string early for safe operations
status_text = str(status_text or "")
# Strip redundant prefixes if any
for prefix in ["Erreur :", "Erreur:", "Error:", "Error :"]:
if status_text.startswith(prefix):
status_text = status_text[len(prefix):].strip()
break
provider_prefix = entry.get("provider_prefix") or (entry.get("provider") + ":" if entry.get("provider") else "")
if provider_prefix and not status_text.startswith(provider_prefix):
status_text = f"{provider_prefix} {status_text}"
elif status == "Canceled":
status_text = _("history_status_canceled")
status_text = str(status_text or "")
else:
status_text = status
status_text = str(status or "")
# Determine color dedicated to status (independent from selection for better readability)
if status == "Erreur":
@@ -971,7 +977,7 @@ def draw_history_list(screen):
platform_text = truncate_text_end(platform, config.small_font, col_platform_width - 10)
game_text = truncate_text_end(game_name, config.small_font, col_game_width - 10)
size_text = truncate_text_end(size_text, config.small_font, col_size_width - 10)
status_text = truncate_text_middle(status_text, config.small_font, col_status_width - 10, is_filename=False)
status_text = truncate_text_middle(str(status_text or ""), config.small_font, col_status_width - 10, is_filename=False)
y_pos = rect_y + margin_top_bottom + header_height + idx * line_height + line_height // 2
platform_surface = config.small_font.render(platform_text, True, color)

View File

@@ -68,19 +68,29 @@ def load_language(lang_code=None):
return False
def get_text(key, default=None):
"""Récupère la traduction correspondant à la clé."""
if not translations:
load_language()
if key in translations:
return translations[key]
# Si la clé n'existe pas, retourner la valeur par défaut ou la clé elle-même
if default is not None:
return default
logger.warning(f"Clé de traduction '{key}' non trouvée dans la langue {current_language}")
return key
"""Récupère la traduction correspondant à la clé en garantissant une chaîne.
- Ne retourne jamais None: fallback vers default (si fourni) sinon la clé.
- Si la valeur traduite n'est pas une chaîne (liste/dict/etc.), fallback similaire.
"""
try:
if not translations:
load_language()
# Valeur brute potentielle
val = translations.get(key) if isinstance(translations, dict) else None
if isinstance(val, str) and val:
return val
# Fallback: utiliser default si fourni
if isinstance(default, str) and default:
return default
# Dernier recours: retourner la clé elle-même (stringifiée)
return str(key)
except Exception as e:
try:
logger.warning(f"get_text fallback for key={key}: {e}")
except Exception:
pass
return str(default) if default is not None else str(key)
def get_available_languages():
"""Récupère la liste des langues disponibles."""