diff --git a/src/help/topic_text_generators.cpp b/src/help/topic_text_generators.cpp index 42486c3b9b6f..c5343836de92 100644 --- a/src/help/topic_text_generators.cpp +++ b/src/help/topic_text_generators.cpp @@ -462,10 +462,17 @@ std::string unit_topic_generator::generate() const int must_have_nameless_traits = 0; for(const config& trait : traits) { - std::string trait_name = trait["male_name"].str(); - if (trait_name.empty()) trait_name = trait["female_name"].str(); - if (trait_name.empty()) trait_name = trait["name"].str(); - if (trait_name.empty()) continue; // Hidden trait + const std::string& male_name = trait["male_name"].str(); + const std::string& female_name = trait["female_name"].str(); + std::string trait_name; + if (type_.has_gender_variation(unit_race::MALE) && ! male_name.empty()) + trait_name = male_name; + else if (type_.has_gender_variation(unit_race::FEMALE) && ! female_name.empty()) + trait_name = female_name; + else if (! trait["name"].str().empty()) + trait_name = trait["name"].str(); + else + continue; // Hidden trait std::string lang_trait_name = translation::gettext(trait_name.c_str()); if(lang_trait_name.empty() && trait["availability"].str() == "musthave") {