core/sm_stringutil.cpp
changeset 663 b526b82e256e
parent 661 5c0988b9bf0c
child 669 ce01c2eb020c
     1.1 --- a/core/sm_stringutil.cpp	Thu Apr 05 03:16:03 2007 +0000
     1.2 +++ b/core/sm_stringutil.cpp	Thu Apr 05 05:25:11 2007 +0000
     1.3 @@ -73,24 +73,9 @@
     1.4  try_serverlang:
     1.5  	if (target == LANG_SERVER)
     1.6  	{
     1.7 -		langname = g_Translator.GetServerLanguageCode();
     1.8 -		if (!TryServerLanguage(langname ? langname : "en", &langid))
     1.9 -		{
    1.10 -			pCtx->ThrowNativeError("Translation failure: English language not found");
    1.11 -			goto error_out;
    1.12 -		}
    1.13 -	} else if ((target >= 1) && (target <= g_Players.GetMaxClients())) {
    1.14 -		langname = g_Translator.GetServerLanguageCode(); /* :TODO: read player's lang */
    1.15 -		if (!langname || !g_Translator.GetLanguageByCode(langname, &langid))
    1.16 -		{
    1.17 -			if (langname && !strcmp(langname, "en"))
    1.18 -			{
    1.19 -				pCtx->ThrowNativeError("Translation failure: English language not found");
    1.20 -				goto error_out;
    1.21 -			}
    1.22 -			target = LANG_SERVER;
    1.23 -			goto try_serverlang;
    1.24 -		}
    1.25 +		langid = g_Translator.GetServerLanguageCode();
    1.26 + 	} else if ((target >= 1) && (target <= g_Players.GetMaxClients())) {
    1.27 +		langid = g_Translator.GetServerLanguageCode();
    1.28  	} else {
    1.29  		pCtx->ThrowNativeErrorEx(SP_ERROR_PARAM, "Translation failed: invalid client index %d", target);
    1.30  		goto error_out;
    1.31 @@ -102,9 +87,8 @@
    1.32  		{
    1.33  			target = LANG_SERVER;
    1.34  			goto try_serverlang;
    1.35 -		} else {
    1.36 -			if (!g_Translator.GetLanguageByCode("en", &langid)
    1.37 -				|| !TryTranslation(pl, key, langid, langcount, &pTrans))
    1.38 +		} else if (langid != LANGUAGE_ENGLISH) {
    1.39 +			if (!TryTranslation(pl, key, LANGUAGE_ENGLISH, langcount, &pTrans))
    1.40  			{
    1.41  				pCtx->ThrowNativeErrorEx(SP_ERROR_PARAM, "Language phrase \"%s\" not found", key);
    1.42  				goto error_out;
    1.43 @@ -900,6 +884,19 @@
    1.44  	}
    1.45  }
    1.46  
    1.47 +size_t UTIL_FormatArgs(char *buffer, size_t maxlength, const char *fmt, va_list ap)
    1.48 +{
    1.49 +	size_t len = vsnprintf(buffer, maxlength, fmt, ap);
    1.50 +
    1.51 +	if (len >= maxlength)
    1.52 +	{
    1.53 +		buffer[maxlength - 1] = '\0';
    1.54 +		return (maxlength - 1);
    1.55 +	} else {
    1.56 +		return len;
    1.57 +	}
    1.58 +}
    1.59 +
    1.60  char *sm_strdup(const char *str)
    1.61  {
    1.62  	char *ptr = new char[strlen(str)+1];