Merge pull request #229 from Arkshine/feature/trans-format-and-native

Add %l format specifier and SetTranslationTarget() native (bug 6331)
This commit is contained in:
Vincent Herbet
2015-03-26 22:54:11 +01:00
3 changed files with 36 additions and 4 deletions

View File

@ -4418,6 +4418,14 @@ static cell AMX_NATIVE_CALL LookupLangKey(AMX *amx, cell *params)
return 1;
};
// SetGlobalTransTarget(client)
static cell AMX_NATIVE_CALL SetGlobalTransTarget(AMX *amx, cell *params)
{
g_langMngr.SetDefLang(params[1]);
return 1;
};
// has_map_ent_class(const classname[])
static cell AMX_NATIVE_CALL has_map_ent_class(AMX *amx, cell *params)
{
@ -4615,6 +4623,7 @@ AMX_NATIVE_INFO amxmodx_Natives[] =
{"GetLangTransKey", GetLangTransKey},
{"LibraryExists", LibraryExists},
{"LookupLangKey", LookupLangKey},
{"SetGlobalTransTarget", SetGlobalTransTarget},
{"PrepareArray", PrepareArray},
{"ShowSyncHudMsg", ShowSyncHudMsg},
{"is_rukia_a_hag", is_rukia_a_hag},

View File

@ -650,16 +650,26 @@ reswitch:
arg++;
break;
case 'L':
case 'l':
{
CHECK_ARGS(1);
cell addr = params[arg++];
cell target;
if (ch == 'L')
{
CHECK_ARGS(1);
target = params[arg++];
}
else
{
CHECK_ARGS(0);
target = g_langMngr.GetDefLang();
}
int len;
const char *key = get_amxstring(amx, params[arg++], 3, len);
const char *def = translate(amx, addr, key);
const char *def = translate(amx, target, key);
if (!def)
{
static char buf[255];
UTIL_Format(buf, sizeof(buf)-1, "ML_NOTFOUND: %s", key);
UTIL_Format(buf, sizeof(buf) - 1, "ML_NOTFOUND: %s", key);
def = buf;
}
size_t written = atcprintf(buf_p, llen, def, amx, params, &arg);