#pragma once #include // Para string, basic_string #include namespace Lang { // --- Códigos de idioma soportados --- enum class Code : int { SPANISH = 0, VALENCIAN = 1, ENGLISH = 2 }; // Estructura que representa un idioma struct Language { Code code; // Código que identifica al idioma std::string name; // Nombre que identifica el idioma std::string file_name; // Nombre del fichero con los textos Language(Code c, std::string n, std::string fn) : code(c), name(std::move(n)), file_name(std::move(fn)) {} }; // Carga los textos desde el fichero JSON especificado auto loadFromFile(const std::string &file_path) -> bool; // Obtiene el texto por clave auto getText(const std::string &key) -> std::string; // Obtiene el código del siguiente idioma (circular) auto getNextLangCode(Code current_lang) -> Code; // Obtiene el idioma correspondiente al código proporcionado auto getLanguage(Code code) -> Language; // Devuelve el código de un idioma a partir de un nombre auto getCodeFromName(const std::string &name) -> Code; // Devuelve el nombre de un idioma a partir de un código auto getNameFromCode(Code code) -> std::string; // Actualiza los nombres de los idiomas void updateLanguageNames(); // Obtiene el nombre del fichero de textos asociado a un código de idioma auto getLanguageFileName(Code code) -> std::string; // Establece el idioma actual void setLanguage(Code lang); } // namespace Lang