#pragma once #include #include // Clase Locale: gestiona las traducciones del juego (singleton) // Las traducciones se cargan desde un fichero YAML en el inicio. // No se permite cambio de idioma en caliente. class Locale { public: static void init(const std::string& file_path); // Crea e inicializa el singleton static void destroy(); // Destruye el singleton static auto get() -> Locale*; // Devuelve el singleton // Devuelve la traducción de la clave dada. // Si la clave no existe, devuelve la propia clave como fallback. [[nodiscard]] auto get(const std::string& key) const -> std::string; private: Locale() = default; void loadFromFile(const std::string& file_path); void flatten(const void* node_ptr, const std::string& prefix); // Aplana nodos YAML anidados static Locale* instance; std::unordered_map strings_; };