diff --git a/core/sm_stringutil.cpp b/core/sm_stringutil.cpp index 6af95646..5fbab016 100644 --- a/core/sm_stringutil.cpp +++ b/core/sm_stringutil.cpp @@ -33,16 +33,23 @@ return 0; \ } -inline bool TryServerLanguage(const char *serverlang, unsigned int *langid) +size_t CorePlayerTranslate(int client, char *buffer, size_t maxlength, const char *phrase, void **params) { - if (!g_Translator.GetLanguageByCode(serverlang, langid)) + Translation pTrans; + TransError err; + + err = g_pCorePhrases->GetTranslation(phrase, g_Translator.GetServerLanguage(), &pTrans); + if (err != Trans_Okay && g_Translator.GetServerLanguage() != LANG_ENGLISH) { - if (!g_Translator.GetLanguageByCode("en", langid)) - { - return false; - } + err = g_pCorePhrases->GetTranslation(phrase, LANG_ENGLISH, &pTrans); } - return true; + + if (err != Trans_Okay) + { + return UTIL_Format(buffer, maxlength, "%s", phrase); + } + + return g_Translator.Translate(buffer, maxlength, params, &pTrans); } inline bool TryTranslation(CPlugin *pl, const char *key, unsigned int langid, unsigned int langcount, Translation *pTrans) diff --git a/core/sm_stringutil.h b/core/sm_stringutil.h index 2515dd1c..77cfbac9 100644 --- a/core/sm_stringutil.h +++ b/core/sm_stringutil.h @@ -32,5 +32,6 @@ size_t gnprintf(char *buffer, size_t maxlen, const char *format, void **args); size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...); size_t UTIL_FormatArgs(char *buffer, size_t maxlength, const char *fmt, va_list ap); char *sm_strdup(const char *str); +size_t CorePlayerTranslate(int client, char *buffer, size_t maxlength, const char *phrase, void **params); #endif // _INCLUDE_SOURCEMOD_STRINGUTIL_H_