char.cpp in void CHARACTER::ChatPacket
this:
#ifdef ENABLE_MULTILANGUAGE
std::string sTranslateText;
if (type != CHAT_TYPE_COMMAND)
{
if (GetLang() > MAX_LANGUAGES)
sTranslateText = LC_TEXT(DEFAULT_LANGUAGE, format);
else
sTranslateText = LC_TEXT(GetLang(), format);
}
#endif
and this a little under:
#ifdef ENABLE_MULTILANGUAGE
int len = vsnprintf(chatbuf, sizeof(chatbuf), format, args);
if (type != CHAT_TYPE_COMMAND)
len = vsnprintf(chatbuf, sizeof(chatbuf), sTranslateText.c_str(), args);
#else
Is just not needed at all and makes this problem. Every shout, party, info etc chat would go to LC_TEXT what adds a "@0949" to the message if translation not found in in locale.cpp's locale_find (it's hidden but you can see in /n for example or if you write messages to console) and that "@0949" makes accents bad plus you get a syserr each time somebody shout or party or guild chat etc.
So you can delete this 2 ifdef if you already set every LC_TEXT(DEFAULT_LANGUAGE.. / LC_TEXT(ch->GetLang().. and I'm sure you did because LC_TEXT's new first attribute is mandatory so if you didn't then you couldn't compile the game. So that's why I said this is just not needed at all and can be removed.
Edit: LC_TEXT(TRANSLATE_LANGUAGE will not work. Use LC_TEXT(ch->GetLang()..
(Sorry for bumping old topic but I wanted to share the fix)