void ObjectMgr::LoadQuestLocales() { QueryResult *result = WorldDatabase.Query("SELECT entry," "Title_loc1,Details_loc1,Objectives_loc1,OfferRewardText_loc1,RequestItemsText_loc1,EndText_loc1,ObjectiveText1_loc1,ObjectiveText2_loc1,ObjectiveText3_loc1,ObjectiveText4_loc1," "Title_loc2,Details_loc2,Objectives_loc2,OfferRewardText_loc2,RequestItemsText_loc2,EndText_loc2,ObjectiveText1_loc2,ObjectiveText2_loc2,ObjectiveText3_loc2,ObjectiveText4_loc2," "Title_loc3,Details_loc3,Objectives_loc3,OfferRewardText_loc3,RequestItemsText_loc3,EndText_loc3,ObjectiveText1_loc3,ObjectiveText2_loc3,ObjectiveText3_loc3,ObjectiveText4_loc3," "Title_loc4,Details_loc4,Objectives_loc4,OfferRewardText_loc4,RequestItemsText_loc4,EndText_loc4,ObjectiveText1_loc4,ObjectiveText2_loc4,ObjectiveText3_loc4,ObjectiveText4_loc4," "Title_loc5,Details_loc5,Objectives_loc5,OfferRewardText_loc5,RequestItemsText_loc5,EndText_loc5,ObjectiveText1_loc5,ObjectiveText2_loc5,ObjectiveText3_loc5,ObjectiveText4_loc5," "Title_loc6,Details_loc6,Objectives_loc6,OfferRewardText_loc6,RequestItemsText_loc6,EndText_loc6,ObjectiveText1_loc6,ObjectiveText2_loc6,ObjectiveText3_loc6,ObjectiveText4_loc6," "Title_loc7,Details_loc7,Objectives_loc7,OfferRewardText_loc7,RequestItemsText_loc7,EndText_loc7,ObjectiveText1_loc7,ObjectiveText2_loc7,ObjectiveText3_loc7,ObjectiveText4_loc7" " FROM locales_quest" ); if(!result) { barGoLink bar(1); bar.step(); sLog.outString(""); sLog.outString(">> Loaded 0 Quest locale strings. DB table `locales_quest` is empty."); return; } barGoLink bar(result->GetRowCount()); do { Field *fields = result->Fetch(); bar.step(); uint32 entry = fields[0].GetUInt32(); QuestLocale& data = mQuestLocaleMap[entry]; for(int i = 1; i < 8; ++i) { std::string str0 = fields[1+10*(i-1)].GetCppString(); if(!str0.empty()) { int idx = GetOrNewIndexForLocale(LocaleConstant(i)); if(idx >= 0) { if(data.Title.size() <= idx) data.Title.resize(idx+1); data.Title[idx] = str0; if (entry==90) printf("Put string: '%s' at idx %d for %d\nsize is now %d\n",data.Title[idx].c_str(),idx,i,data.Title.size()); } } ... Produces this: >> Loaded 22857 Item locale strings [Put string: 'Kébab de loup assaisonné' at idx 0 for 2 size is now 1 [**************************************************] 100% void PlayerMenu::SendQuestGiverQuestDetails( Quest const *pQuest, uint64 npcGUID, bool ActivateAccept ) { WorldPacket data(SMSG_QUESTGIVER_QUEST_DETAILS, 100); // guess size std::string Title = pQuest->GetTitle(); std::string Details = pQuest->GetDetails(); std::string Objectives = pQuest->GetObjectives(); std::string EndText = pQuest->GetEndText(); int loc_idx = pSession->GetSessionLocaleIndex(); if (loc_idx >= 0) { printf("Got loc_idx %d\n", loc_idx); QuestLocale const *ql = objmgr.GetQuestLocale(pQuest->GetQuestId()); if (ql) { printf("Got a localized data for quest %u\n",pQuest->GetQuestId()); printf("Vector size is %d\n",ql->Title.size()); if (ql->Title.size() > loc_idx && !ql->Title[loc_idx].empty()) Title=ql->Title[loc_idx]; if (ql->Details.size() > loc_idx && !ql->Details[loc_idx].empty()) Details=ql->Details[loc_idx]; if (ql->Objectives.size() > loc_idx && !ql->Objectives[loc_idx].empty()) Objectives=ql->Objectives[loc_idx]; } } ... } This produces this: Mangos>Got loc_idx 0 Got localized data for quest 90 Vector size is 0