51 lines
1.5 KiB
C++
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
|