|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
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 |
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).
|
explicit |
Construit un catalogue vide.
| directory | Dossier contenant les fichiers <langue>.lang (pour les chargements par fichier). Optionnel : les tests peuvent injecter des tables en mémoire. |
|
inlinenodiscardnoexcept |
|
nodiscard |
Charge la langue par défaut depuis <directory>/<language>.lang et l'active.
| language | Identifiant de langue (nom de fichier sans extension). |
|
nodiscard |
Charge la langue active depuis <directory>/<language>.lang.
| language | Identifiant de langue (nom de fichier sans extension). |
|
staticnodiscard |
Analyse un contenu clé = valeur en table de traductions.
| content | Texte 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). |
|
staticnodiscardprivate |
Lit tout le contenu d'un fichier texte.
out en cas de succès. | 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.
| language | Identifiant de langue. |
| strings | Table de traductions déjà analysée. |
| 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.
| language | Identifiant de langue (ex. « fr »). |
| strings | Table de traductions déjà analysée. |
|
nodiscard |
Résout le texte associé à key.
| key | Clé de traduction (ex. « menu.quitter »). |
|
private |
|
private |
|
private |
|
private |
|
private |