Files
coffee_crisis_arcade_edition/source/lang.h
2025-07-19 22:25:46 +02:00

51 lines
1.5 KiB
C++

#pragma once
#include <string> // Para string, basic_string
#include <utility>
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