core/Translator.cpp
changeset 669 ce01c2eb020c
parent 665 74fa35a4c27c
child 670 92a082085cbe
     1.1 --- a/core/Translator.cpp	Thu Apr 05 07:59:27 2007 +0000
     1.2 +++ b/core/Translator.cpp	Thu Apr 05 10:55:40 2007 +0000
     1.3 @@ -580,11 +580,11 @@
     1.4   ** MAIN TRANSLATOR CODE **
     1.5   **************************/
     1.6  
     1.7 -Translator::Translator()
     1.8 +Translator::Translator() : m_ServerLang(LANGUAGE_ENGLISH)
     1.9  {
    1.10  	m_pStringTab = new BaseStringTable(2048);
    1.11  	m_pLCodeLookup = sm_trie_create();
    1.12 -	strncopy(m_ServerLangCode, "en", sizeof(m_ServerLangCode));
    1.13 +	strncopy(m_InitialLang, "en", sizeof(m_InitialLang));
    1.14  }
    1.15  
    1.16  Translator::~Translator()
    1.17 @@ -620,10 +620,12 @@
    1.18  				UTIL_Format(error, maxlength, "Language code \"%s\" is not registered", value);
    1.19  				return ConfigResult_Reject;
    1.20  			}
    1.21 +
    1.22 +			m_ServerLang = index;
    1.23 +		} else {
    1.24 +			strncopy(m_InitialLang, value, sizeof(m_InitialLang));
    1.25  		}
    1.26  
    1.27 -		strncopy(m_ServerLangCode, value, sizeof(m_ServerLangCode));
    1.28 -
    1.29  		return ConfigResult_Accept;
    1.30  	}
    1.31  
    1.32 @@ -712,6 +714,18 @@
    1.33  		g_Logger.LogError("[SM] Parse error (line %d, column %d): %s", line, col, str_err);
    1.34  	}
    1.35  
    1.36 +	void *serverLang;
    1.37 +
    1.38 +	if (!sm_trie_retrieve(m_pLCodeLookup, m_InitialLang, &serverLang))
    1.39 +	{
    1.40 +		g_Logger.LogError("Server language was set to bad language \"%s\" -- reverting to English", m_InitialLang);
    1.41 +
    1.42 +		strncopy(m_InitialLang, "en", sizeof(m_InitialLang));
    1.43 +		m_ServerLang = LANGUAGE_ENGLISH;
    1.44 +	}
    1.45 +
    1.46 +	m_ServerLang = reinterpret_cast<unsigned int>(serverLang);
    1.47 +
    1.48  	if (!m_Languages.size())
    1.49  	{
    1.50  		g_Logger.LogError("[SM] Fatal error, no languages found! Translation will not work.");
    1.51 @@ -829,15 +843,11 @@
    1.52  	}
    1.53  
    1.54  	/* Using server lang temporarily until client lang stuff is implemented */
    1.55 -	unsigned int serverLang;
    1.56 -	if (!sm_trie_retrieve(m_pLCodeLookup, m_ServerLangCode, (void **)&serverLang))
    1.57 -	{
    1.58 -		return Trans_BadLanguage;
    1.59 -	}
    1.60 +	unsigned int serverLang = GetServerLanguage();
    1.61  
    1.62  	Translation trans;
    1.63  	TransError err;
    1.64 -	if ((err=g_pCorePhrases->GetTranslation(phrase, serverLang, &trans)) != Trans_Okay)
    1.65 +	if ((err=g_pCorePhrases->GetTranslation(phrase, m_ServerLang, &trans)) != Trans_Okay)
    1.66  	{
    1.67  		return err;
    1.68  	}
    1.69 @@ -852,20 +862,7 @@
    1.70  	return Trans_Okay;
    1.71  }
    1.72  
    1.73 -unsigned int Translator::GetServerLanguageCode()
    1.74 +unsigned int Translator::GetServerLanguage()
    1.75  {
    1.76 -	void *serverLang;
    1.77 -
    1.78 -	/* :TODO: there is absolutely no reason this shouldn't be cached
    1.79 -	 * I don't even know why it was returning a string originally
    1.80 -	 */
    1.81 -
    1.82 -	if (!sm_trie_retrieve(m_pLCodeLookup, m_ServerLangCode, &serverLang))
    1.83 -	{
    1.84 -		g_Logger.LogError("Server language was set to bad language \"%s\" -- reverting to English", m_ServerLangCode);
    1.85 -		strncopy(m_ServerLangCode, "en", sizeof(m_ServerLangCode));
    1.86 -		return LANGUAGE_ENGLISH;
    1.87 -	}
    1.88 -
    1.89 -	return (unsigned int)serverLang;
    1.90 +	return m_ServerLang;
    1.91  }