JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
hmi::Localization Class Reference

Catalogue de traduction (i18n) : associe des clés stables à des chaînes selon la langue active, avec repli sur la langue par défaut. More...

#include <Localization.h>

Public Member Functions

 Localization (std::filesystem::path directory={})
 Construit un catalogue vide.
void setDefaultCatalog (std::string language, std::unordered_map< std::string, std::string > strings)
 Définit la langue par défaut (source de repli) et l'active dessus.
void setActiveCatalog (std::string language, std::unordered_map< std::string, std::string > strings)
 Définit la langue active à partir d'une table déjà analysée.
bool loadDefaultLanguage (const std::string &language)
 Charge la langue par défaut depuis <directory>/<language>.lang et l'active.
bool loadLanguage (const std::string &language)
 Charge la langue active depuis <directory>/<language>.lang.
std::string text (std::string_view key) const
 Résout le texte associé à key.
const std::string & activeLanguage () const noexcept

Static Public Member Functions

static std::unordered_map< std::string, std::string > parseCatalog (std::string_view content)
 Analyse un contenu clé = valeur en table de traductions.

Static Private Member Functions

static bool readFile (const std::filesystem::path &path, std::string &out)
 Lit tout le contenu d'un fichier texte.

Private Attributes

std::filesystem::path _directory
std::string _defaultLanguage
std::string _activeLanguage
std::unordered_map< std::string, std::string > _defaultStrings
std::unordered_map< std::string, std::string > _activeStrings

Detailed Description

Catalogue de traduction (i18n) : associe des clés stables à des chaînes selon la langue active, avec repli sur la langue par défaut.

Tous les textes affichés passent par une clé (EX-REN-033) : le code ne contient aucun libellé en dur. Les traductions sont chargées depuis un fichier par langue (<langue>.lang, format clé = valeur, UTF-8), ce qui rend l'ajout d'une langue trivial. La résolution suit un repli déterministe : langue active, puis langue par défaut, puis la clé elle-même — jamais de plantage (EX-NFR-040). Le catalogue est une logique pure, sans fenêtre ni GPU, donc testable en isolation (EX-NFR-010).

Constructor & Destructor Documentation

◆ Localization()

hmi::Localization::Localization ( std::filesystem::path directory = {})
explicit

Construit un catalogue vide.

Parameters
directoryDossier contenant les fichiers <langue>.lang (pour les chargements par fichier). Optionnel : les tests peuvent injecter des tables en mémoire.

Member Function Documentation

◆ activeLanguage()

const std::string & hmi::Localization::activeLanguage ( ) const
inlinenodiscardnoexcept
Returns
L'identifiant de la langue active.

◆ loadDefaultLanguage()

bool hmi::Localization::loadDefaultLanguage ( const std::string & language)
nodiscard

Charge la langue par défaut depuis <directory>/<language>.lang et l'active.

Parameters
languageIdentifiant de langue (nom de fichier sans extension).
Returns
true si le fichier a été lu ; false (récupérable) s'il est absent ou illisible.

◆ loadLanguage()

bool hmi::Localization::loadLanguage ( const std::string & language)
nodiscard

Charge la langue active depuis <directory>/<language>.lang.

Parameters
languageIdentifiant de langue (nom de fichier sans extension).
Returns
true si le fichier a été lu ; false (récupérable) s'il est absent ou illisible — la langue active précédente est alors conservée.

◆ parseCatalog()

std::unordered_map< std::string, std::string > hmi::Localization::parseCatalog ( std::string_view content)
staticnodiscard

Analyse un contenu clé = valeur en table de traductions.

Parameters
contentTexte source (UTF-8). Les lignes vides et les lignes débutant par # (commentaires) sont ignorées ; les espaces autour de = sont retirés ; un = présent dans la valeur est conservé (seul le premier sépare).
Returns
La table clé → valeur.

◆ readFile()

bool hmi::Localization::readFile ( const std::filesystem::path & path,
std::string & out )
staticnodiscardprivate

Lit tout le contenu d'un fichier texte.

Returns
true et remplit out en cas de succès.

◆ setActiveCatalog()

void hmi::Localization::setActiveCatalog ( std::string language,
std::unordered_map< std::string, std::string > strings )

Définit la langue active à partir d'une table déjà analysée.

Parameters
languageIdentifiant de langue.
stringsTable de traductions déjà analysée.

◆ setDefaultCatalog()

void hmi::Localization::setDefaultCatalog ( std::string language,
std::unordered_map< std::string, std::string > strings )

Définit la langue par défaut (source de repli) et l'active dessus.

Parameters
languageIdentifiant de langue (ex. « fr »).
stringsTable de traductions déjà analysée.

◆ text()

std::string hmi::Localization::text ( std::string_view key) const
nodiscard

Résout le texte associé à key.

Parameters
keyClé de traduction (ex. « menu.quitter »).
Returns
La chaîne de la langue active, sinon celle de la langue par défaut, sinon la clé.

Member Data Documentation

◆ _activeLanguage

std::string hmi::Localization::_activeLanguage
private

◆ _activeStrings

std::unordered_map<std::string, std::string> hmi::Localization::_activeStrings
private

◆ _defaultLanguage

std::string hmi::Localization::_defaultLanguage
private

◆ _defaultStrings

std::unordered_map<std::string, std::string> hmi::Localization::_defaultStrings
private

◆ _directory

std::filesystem::path hmi::Localization::_directory
private

The documentation for this class was generated from the following files:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Localization/Localization.h
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Localization/Localization.cpp