37 lines
1.9 KiB
C++
37 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include <string> // Para string, basic_string
|
|
#include <utility> // 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
|