#pragma once #include // Para string, basic_string #include // Para move // --- Namespace Lang: gestión de idiomas y textos --- namespace Lang { // --- Enums --- enum class Code : int { SPANISH = 0, // Español VALENCIAN = 1, // Valenciano ENGLISH = 2 // Inglés }; // --- Estructuras --- 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)) {} }; // --- Funciones --- auto loadFromFile(const std::string& file_path) -> bool; // Carga los textos desde el fichero JSON especificado auto getText(const std::string& key) -> std::string; // Obtiene el texto por clave auto getNextLangCode(Code current_lang) -> Code; // Obtiene el código del siguiente idioma (circular) auto getLanguage(Code code) -> Language; // Obtiene el idioma correspondiente al código proporcionado auto getCodeFromName(const std::string& name) -> Code; // Devuelve el código de un idioma a partir de un nombre auto getNameFromCode(Code code) -> std::string; // Devuelve el nombre de un idioma a partir de un código void updateLanguageNames(); // Actualiza los nombres de los idiomas auto getLanguageFileName(Code code) -> std::string; // Obtiene el nombre del fichero de textos asociado a un código de idioma void setLanguage(Code code); // Establece el idioma actual auto getLangFile(Code code) -> std::string; // Obtiene una fichero a partir de un Code auto getLangName(Code code) -> std::string; // Obtiene una cadena a partir de un Code } // namespace Lang