1.1 --- a/core/smn_lang.cpp Sat Jul 14 00:47:30 2007 +0000
1.2 +++ b/core/smn_lang.cpp Sat Jul 14 01:04:15 2007 +0000
1.3 @@ -16,6 +16,7 @@
1.4 #include "Translator.h"
1.5 #include "LibrarySys.h"
1.6 #include "sm_stringutil.h"
1.7 +#include "PlayerManager.h"
1.8
1.9 static cell_t sm_LoadTranslations(IPluginContext *pCtx, const cell_t *params)
1.10 {
1.11 @@ -48,9 +49,50 @@
1.12 return 1;
1.13 }
1.14
1.15 -REGISTER_NATIVES(langNativeS)
1.16 +static cell_t sm_GetClientLanguage(IPluginContext *pContext, const cell_t *params)
1.17 +{
1.18 + CPlayer *player = g_Players.GetPlayerByIndex(params[1]);
1.19 + if (!player || !player->IsConnected())
1.20 + {
1.21 + return pContext->ThrowNativeError("Invalid client index %d", params[1]);
1.22 + }
1.23 +
1.24 + return g_Translator.GetClientLanguage(params[1]);
1.25 +}
1.26 +
1.27 +static cell_t sm_GetServerLanguage(IPluginContext *pContext, const cell_t *params)
1.28 +{
1.29 + return g_Translator.GetServerLanguage();
1.30 +}
1.31 +
1.32 +static cell_t sm_GetLanguageCount(IPluginContext *pContext, const cell_t *params)
1.33 +{
1.34 + return g_Translator.GetLanguageCount();
1.35 +}
1.36 +
1.37 +static cell_t sm_GetLanguageInfo(IPluginContext *pContext, const cell_t *params)
1.38 +{
1.39 + const char *code;
1.40 + const char *name;
1.41 +
1.42 + if (!g_Translator.GetLanguageInfo(params[1], &code, &name))
1.43 + {
1.44 + return pContext->ThrowNativeError("Invalid language number %d", params[1]);
1.45 + }
1.46 +
1.47 + pContext->StringToLocalUTF8(params[2], params[3], code, NULL);
1.48 + pContext->StringToLocalUTF8(params[4], params[5], name, NULL);
1.49 +
1.50 + return 1;
1.51 +}
1.52 +
1.53 +REGISTER_NATIVES(langNatives)
1.54 {
1.55 {"LoadTranslations", sm_LoadTranslations},
1.56 {"SetGlobalTransTarget", sm_SetGlobalTransTarget},
1.57 + {"GetClientLanguage", sm_GetClientLanguage},
1.58 + {"GetServerLanguage", sm_GetServerLanguage},
1.59 + {"GetLanguageCount", sm_GetLanguageCount},
1.60 + {"GetLanguageInfo", sm_GetLanguageInfo},
1.61 {NULL, NULL},
1.62 };