mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-04 23:17:41 +02:00
Code review fixes
This commit is contained in:
parent
65e63bdf69
commit
10eb19758a
@ -144,28 +144,59 @@ ui8 CMapHeader::levels() const
|
|||||||
|
|
||||||
void CMapHeader::registerMapStrings()
|
void CMapHeader::registerMapStrings()
|
||||||
{
|
{
|
||||||
auto language = CGeneralTextHandler::getPreferredLanguage();
|
//get supported languages. Assuming that translation containing most strings is the base language
|
||||||
JsonNode data;
|
std::set<std::string> mapLanguages, mapBaseLanguages;
|
||||||
|
int maxStrings = 0;
|
||||||
if(translations[language].isNull())
|
for(auto & translation : translations.Struct())
|
||||||
{
|
{
|
||||||
//english is preferrable
|
if(translation.first.empty() || !translation.second.isStruct() || translation.second.Struct().empty())
|
||||||
language = Languages::getLanguageOptions(Languages::ELanguages::ENGLISH).identifier;
|
continue;
|
||||||
std::list<Languages::Options> languages{Languages::getLanguageList().begin(), Languages::getLanguageList().end()};
|
|
||||||
while(translations[language].isNull() && !languages.empty())
|
|
||||||
{
|
|
||||||
language = languages.front().identifier;
|
|
||||||
languages.pop_front();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!translations[language].isNull())
|
if(translation.second.Struct().size() > maxStrings)
|
||||||
{
|
maxStrings = translation.second.Struct().size();
|
||||||
logGlobal->info("Map %s doesn't have any translation", name.toString());
|
mapLanguages.insert(translation.first);
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(maxStrings == 0 || mapBaseLanguages.empty())
|
||||||
|
{
|
||||||
|
logGlobal->info("Map %s doesn't have any supported translation", name.toString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//identifying base languages
|
||||||
|
for(auto & translation : translations.Struct())
|
||||||
|
{
|
||||||
|
if(translation.second.isStruct() && translation.second.Struct().size() == maxStrings)
|
||||||
|
mapBaseLanguages.insert(translation.first);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string baseLanguage, language;
|
||||||
|
//english is preferrable as base language
|
||||||
|
if(mapBaseLanguages.count(Languages::getLanguageOptions(Languages::ELanguages::ENGLISH).identifier))
|
||||||
|
baseLanguage = Languages::getLanguageOptions(Languages::ELanguages::ENGLISH).identifier;
|
||||||
|
else
|
||||||
|
baseLanguage = *mapBaseLanguages.begin();
|
||||||
|
|
||||||
for(auto & s : translations[language].Struct())
|
if(mapBaseLanguages.count(CGeneralTextHandler::getPreferredLanguage()))
|
||||||
|
{
|
||||||
|
language = CGeneralTextHandler::getPreferredLanguage(); //preferred language is base language - use it
|
||||||
|
baseLanguage = language;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(mapLanguages.count(CGeneralTextHandler::getPreferredLanguage()))
|
||||||
|
language = CGeneralTextHandler::getPreferredLanguage();
|
||||||
|
else
|
||||||
|
language = baseLanguage; //preferred language is not supported, use base language
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(!language.empty());
|
||||||
|
|
||||||
|
JsonNode data = translations[baseLanguage];
|
||||||
|
if(language != baseLanguage)
|
||||||
|
JsonUtils::mergeCopy(data, translations[language]);
|
||||||
|
|
||||||
|
for(auto & s : data.Struct())
|
||||||
registerString("map", TextIdentifier(s.first), s.second.String(), language);
|
registerString("map", TextIdentifier(s.first), s.second.String(), language);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ public:
|
|||||||
void saveInit(const ResourcePath & file);
|
void saveInit(const ResourcePath & file);
|
||||||
void campaignInit();
|
void campaignInit();
|
||||||
void countPlayers();
|
void countPlayers();
|
||||||
// TODO: Those must be on client-side
|
|
||||||
std::string getNameTranslated() const;
|
std::string getNameTranslated() const;
|
||||||
std::string getNameForList() const;
|
std::string getNameForList() const;
|
||||||
std::string getDescriptionTranslated() const;
|
std::string getDescriptionTranslated() const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user