diff --git a/ryzom/client/src/string_manager_client.cpp b/ryzom/client/src/string_manager_client.cpp index 1ff55c54b..74f650b1e 100644 --- a/ryzom/client/src/string_manager_client.cpp +++ b/ryzom/client/src/string_manager_client.cpp @@ -1630,7 +1630,7 @@ const char *CStringManagerClient::getSPhraseLocalizedDescription(NLMISC::CSheetI const char *CStringManagerClient::getTitleLocalizedName(const string &titleId, bool women) { vector listInfos = getTitleInfos(titleId, women); - + if (!listInfos.empty()) { _TitleWords.push_back(listInfos[0]); @@ -1681,7 +1681,19 @@ vector CStringManagerClient::getTitleInfos(const string &titleId, bool w { if (titleId[0] != '#') { - listInfos[0] = getSpecialWord(listInfos[0], women); + // Check special case like SON_OF|jane|joe (with SON_OF = "Son of {1} and {2}") + vector titleReps; + splitString(listInfos[0], string("|"), titleReps); + if (titleReps.size() > 1) + { + listInfos[0] = getSpecialWord(titleReps[0], women); + for(uint i=1; i < titleReps.size(); ++i ) + { + while(strFindReplace(listInfos[0], toString("{%d}", i), titleReps[i])); + } + } + else + listInfos[0] = getSpecialWord(listInfos[0], women); } }