#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
# translation.py - Utilities for JSON translation support in manjaro-rescue
"""

import os
import json
import locale

def get_translation_fn():
    # 1. Rileva la lingua di sistema (es: it_IT.UTF-8 -> it)
    lang_code = 'en'
    try:
        default_lang = locale.getdefaultlocale()[0]
        if default_lang:
            lang_code = default_lang.split('_')[0]
    except:
        pass

    # Se è inglese, restituiamo la stringa originale (fallback)
    if lang_code == 'en':
        return lambda x: x

    # 2. Definisce i percorsi di ricerca per il file JSON
    # base_path punta alla cartella manjaro-rescue/
    base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    search_paths = [
        # Percorso per sviluppo locale (es. manjaro-rescue/locale/it/LC_MESSAGES/it.json)
        os.path.join(base_path, 'locale', lang_code, 'LC_MESSAGES', f'{lang_code}.json'),
    ]

    translations = {}
    for path in search_paths:
        if os.path.exists(path):
            try:
                with open(path, 'r', encoding='utf-8') as f:
                    data = json.load(f)
                    if lang_code in data and "messages" in data[lang_code]:
                        translations = data[lang_code]["messages"]
                        break
            except Exception as e:
                print(f"DEBUG: Error loading JSON at {path}: {e}") # Mantieni questo per debug
                continue
        else:
            print(f"DEBUG: Translation file not found at: {path}") # Mantieni questo per debug
    
    # Aggiungi il percorso di sistema come fallback solo se non è stato trovato nulla prima
    if not translations:
        search_paths.append(f'/usr/share/locale/{lang_code}/LC_MESSAGES/manjaro-rescue.json')

    def _(message):
        # Se la chiave esiste nel JSON, restituisce la traduzione
        if message in translations:
            msg_data = translations[message]
            if isinstance(msg_data, dict) and "*" in msg_data:
                return msg_data["*"][0]
        return message

    return _

_ = get_translation_fn()