"""Carga de archivos JSON de un directorio de locales."""

import json
import os


def load_translations(locales_dir: str) -> dict[str, dict]:
    """Carga todos los archivos JSON de un directorio de locales.

    Cada archivo `{locale}.json` se carga como diccionario y se indexa
    por el nombre del archivo sin extension (el locale).

    Args:
        locales_dir: Ruta al directorio que contiene los archivos JSON de locales.

    Returns:
        Diccionario {locale: dict_de_traducciones}. Retorna {} si el directorio
        no existe o no contiene archivos JSON.

    Raises:
        OSError: Si el directorio no es accesible.
        json.JSONDecodeError: Si un archivo JSON esta malformado.

    Example:
        >>> # locales/en.json = {"greeting": "Hello"}
        >>> # locales/es.json = {"greeting": "Hola"}
        >>> translations = load_translations("locales/")
        >>> translations["en"]["greeting"]
        'Hello'
        >>> translations["es"]["greeting"]
        'Hola'
    """
    translations: dict[str, dict] = {}

    if not os.path.isdir(locales_dir):
        return translations

    for filename in os.listdir(locales_dir):
        if not filename.endswith(".json"):
            continue
        locale = filename[:-5]  # quitar ".json"
        filepath = os.path.join(locales_dir, filename)
        with open(filepath, encoding="utf-8") as f:
            translations[locale] = json.load(f)

    return translations
