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];