1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-06 09:09:40 +02:00

All translatable strings now have language identifier

This commit is contained in:
Ivan Savenko
2023-02-09 15:03:49 +02:00
parent 84fa19dadf
commit 623cae7d47
16 changed files with 178 additions and 103 deletions

View File

@@ -638,6 +638,12 @@ CModInfo::CModInfo(std::string identifier,const JsonNode & local, const JsonNode
vcmiCompatibleMin = Version::fromString(config["compatibility"]["min"].String());
vcmiCompatibleMax = Version::fromString(config["compatibility"]["max"].String());
}
if (!config["language"].isNull())
baseLanguage = config["language"].String();
else
baseLanguage = "english";
loadLocalData(local);
}
@@ -1090,7 +1096,12 @@ void CModHandler::loadModFilesystems()
}
}
std::set<TModID> CModHandler::getModDependencies(TModID modId, bool & isModFound)
std::string CModHandler::getModLanguage(TModID modId) const
{
return allMods.at(modId).baseLanguage;
}
std::set<TModID> CModHandler::getModDependencies(TModID modId, bool & isModFound) const
{
auto it = allMods.find(modId);
isModFound = (it != allMods.end());
@@ -1099,7 +1110,7 @@ std::set<TModID> CModHandler::getModDependencies(TModID modId, bool & isModFound
return it->second.dependencies;
logMod->error("Mod not found: '%s'", modId);
return std::set<TModID>();
return {};
}
void CModHandler::initializeConfig()
@@ -1110,13 +1121,24 @@ void CModHandler::initializeConfig()
void CModHandler::loadTranslation(TModID modName)
{
auto const & mod = allMods[modName];
std::string language = VLC->generaltexth->getInstalledLanguage();
std::string preferredLanguage = VLC->generaltexth->getPreferredLanguage();
std::string modBaseLanguage = allMods[modName].baseLanguage;
for (auto const & config : mod.config["translations"].Vector())
VLC->generaltexth->loadTranslationOverrides(JsonNode(ResourceID(config.String(), EResType::TEXT)));
{
JsonNode json(ResourceID(config.String(), EResType::TEXT));
json.setMeta(modName);
for (auto const & config : mod.config[language]["translations"].Vector())
VLC->generaltexth->loadTranslationOverrides(JsonNode(ResourceID(config.String(), EResType::TEXT)));
VLC->generaltexth->loadTranslationOverrides(modBaseLanguage, json);
}
for (auto const & config : mod.config[preferredLanguage]["translations"].Vector())
{
JsonNode json(ResourceID(config.String(), EResType::TEXT));
json.setMeta(modName);
VLC->generaltexth->loadTranslationOverrides(preferredLanguage, json);
}
}
void CModHandler::load()