Fix traductions FR serveur-wide : reparer m_availableDbcLocaleMask

Le masque des locales disponibles etait initialise a 0 et JAMAIS renseigne
(cablage perdu dans ce fork custom) -> World::GetAvailableDbcLocale()
retombait toujours sur enUS -> GetSessionDbcLocale() forcait enUS ->
les hotfix de broadcast_text (dialogues PNJ, corps de gossip) etaient
pousses en ANGLAIS par-dessus les donnees FR natives du client.

Fix : DB2Manager::LoadStores expose le masque reel des locales (fichiers
disque + locales chargees depuis la base hotfix quand DB2.Hotfix.LoadAllLocales
est actif, broadcast_text_locale faisant foi), branche dans World apres
LoadStores. Necessite aussi DB2.Hotfix.LoadAllLocales=1 dans worldserver.conf.

Valide en jeu : tous les dialogues PNJ de l Ile Vagabonde passent en francais.
Portee : serveur entier (tout texte resolu via le systeme de hotfix).
This commit is contained in:
SylvaniaCore deploy
2026-08-11 08:33:19 +00:00
parent 7b361ef483
commit 2830420cf5
3 changed files with 23 additions and 0 deletions
+20
View File
@@ -1341,6 +1341,26 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
exit(1);
}
// Masque des locales reellement disponibles (fichiers disque + locales chargees
// depuis la base hotfix quand DB2.Hotfix.LoadAllLocales est actif). Sans ca,
// m_availableDbcLocaleMask restait a 0 -> GetSessionDbcLocale forcait enUS et les
// hotfix de broadcast_text etaient pousses en anglais par-dessus les donnees FR
// du client. [fix Sylvania]
availableDb2Locales |= (1 << LOCALE_enUS);
if (sConfigMgr->GetBoolDefault("DB2.Hotfix.LoadAllLocales", false))
{
if (QueryResult localesResult = HotfixDatabase.Query("SELECT DISTINCT locale FROM broadcast_text_locale"))
{
do
{
LocaleConstant lc = GetLocaleByName((*localesResult)[0].GetString());
if (lc != LOCALE_none)
availableDb2Locales |= (1 << lc);
} while (localesResult->NextRow());
}
}
_availableLocalesMask = availableDb2Locales;
TC_LOG_INFO("server.loading", ">> Initialized " SZFMTD " DB2 data stores in %u ms", _stores.size(), GetMSTimeDiffToNow(oldMSTime));
}
+2
View File
@@ -292,6 +292,8 @@ public:
static DB2Manager& Instance();
void LoadStores(std::string const& dataPath, uint32 defaultLocale);
uint32 GetAvailableLocalesMask() const { return _availableLocalesMask; }
uint32 _availableLocalesMask = (1 << LOCALE_enUS);
DB2StorageBase const* GetStorage(uint32 type) const;
void LoadHotfixData();
+1
View File
@@ -1835,6 +1835,7 @@ void World::SetInitialWorldSettings()
TC_LOG_INFO("server.loading", "Initialize data stores...");
///- Load DB2s
sDB2Manager.LoadStores(m_dataPath, m_defaultDbcLocale);
m_availableDbcLocaleMask = sDB2Manager.GetAvailableLocalesMask(); // [fix Sylvania] cf DB2Stores
TC_LOG_INFO("misc", "Loading hotfix blobs...");
sDB2Manager.LoadHotfixBlob();
TC_LOG_INFO("misc", "Loading hotfix info...");