Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 44 additions & 44 deletions zlang.inc
Original file line number Diff line number Diff line change
Expand Up @@ -698,32 +698,35 @@ stock Lang_ReturnCode(Lang:lang)

stock Lang_GetCodes(result[], const size = sizeof(result), const separator = '/', const bool:isuppercase = false)
{
new
lang,
i,
length,
sep[2];
static
Lang:lang,
pos,
i;

result[0] = '\0';
sep[0] = separator;
pos = 0;

for (lang = 0; lang < MAX_LANGS; lang += 1) {
strcat(result, gLangInfo[lang][e_zlCode], size);
strcat(result, sep, size);
for (lang = Lang:0; lang < Lang:MAX_LANGS; _:lang += 1) {
if (!Lang_IsValid(lang)) {
continue;
}

for (i = (MAX_LANG_CODE + 1) * lang; i < (MAX_LANG_CODE + 1) * (lang + 1) - 1; i += 1) {
if (isuppercase) {
result[i] = toupper(result[i]);
} else {
result[i] = tolower(result[i]);
}
for (i = 0; i < MAX_LANG_CODE && pos < size - 1; i += 1) {
result[pos] = isuppercase
? toupper(gLangInfo[_:lang][e_zlCode][i])
: tolower(gLangInfo[_:lang][e_zlCode][i]);
pos += 1;
}

if (pos < size - 1) {
result[pos] = separator;
pos += 1;
}
}

length = strlen(result);
if (length != 0) {
result[length - 1] = '\0';
if (pos != 0) {
pos -= 1;
}
result[pos] = '\0';
}
Comment on lines 699 to 730

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Операторы инкремента/декремента в этой библиотеке не используются.
  • Не правильное расположение { после for.
  • Нет смысла убирать инициализацию i вовнутрь цикла.
  • Вместо gLangInfo[lang][e_zlCode][i] != '\0' я бы предпочёл проверку i < MAX_LANG_CODE.
  • Предупреждения из-за неправильно использованных тегов:
    warning 213: tag mismatch: expected tag none ("_"), but found "Lang"
    


stock Lang_ReturnCodes(const separator = '/', const bool:isuppercase = false)
Expand Down Expand Up @@ -980,12 +983,9 @@ stock Lang_printf(const var[], lang_args<>)
stock Lang_printfex(Lang:lang, const var[], lang_args<>)
{
static
Lang:lang,
text[MAX_LANG_MFORMAT_STRING],
success;

lang = Lang_GetDefaultLang();

success = Lang_GetText(lang, var, text);

if (numargs() > 2) {
Expand Down Expand Up @@ -1063,21 +1063,21 @@ stock Lang_SendTextToAll(const var[], lang_args<>)
static
playerid,
Lang:lang,
text[Lang:MAX_LANGS][MAX_LANG_FORMAT_STRING + 1];
text[MAX_LANGS][MAX_LANG_FORMAT_STRING + 1];

for (lang = Lang:0; lang < Lang:MAX_LANGS; _:lang += 1) {
if (!Lang_IsValid(lang)) {
continue;
}

Lang_GetText(lang, var, text[lang]);
Lang_GetText(lang, var, text[_:lang]);

if (numargs() > 1) {
Lang_format(text[lang], sizeof(text[]), text[lang], lang_start<1>);
Lang_format(text[_:lang], sizeof(text[]), text[_:lang], lang_start<1>);
}

#if defined ENABLE_LANG_DYNAMIC_VARS
Lang_ProcessDynamicVars(lang, text[lang]);
Lang_ProcessDynamicVars(lang, text[_:lang]);
#endif
}

Expand All @@ -1093,7 +1093,7 @@ stock Lang_SendTextToAll(const var[], lang_args<>)
continue;
}
#endif
SendClientMessage(playerid, -1, text[Lang_GetPlayerLang(playerid)]);
SendClientMessage(playerid, -1, text[_:Lang_GetPlayerLang(playerid)]);
}
}

Expand All @@ -1102,26 +1102,26 @@ stock Lang_SendTextToPlayers(const players[], const var[], lang_args<>)
static
idx,
Lang:lang,
text[Lang:MAX_LANGS][MAX_LANG_FORMAT_STRING + 1];
text[MAX_LANGS][MAX_LANG_FORMAT_STRING + 1];

for (lang = Lang:0; lang < Lang:MAX_LANGS; _:lang += 1) {
if (!Lang_IsValid(lang)) {
continue;
}

Lang_GetText(lang, var, text[lang]);
Lang_GetText(lang, var, text[_:lang]);

if (numargs() > 2) {
Lang_format(text[lang], sizeof(text[]), text[lang], lang_start<2>);
Lang_format(text[_:lang], sizeof(text[]), text[_:lang], lang_start<2>);
}

#if defined ENABLE_LANG_DYNAMIC_VARS
Lang_ProcessDynamicVars(lang, text[lang]);
Lang_ProcessDynamicVars(lang, text[_:lang]);
#endif
}

for (idx = 0; players[idx] != INVALID_PLAYER_ID; idx += 1) {
SendClientMessage(players[idx], -1, text[Lang_GetPlayerLang(players[idx])]);
SendClientMessage(players[idx], -1, text[_:Lang_GetPlayerLang(players[idx])]);
}
}

Expand All @@ -1130,26 +1130,26 @@ stock Lang_SendTextToPlayersEx(const players[], const size = sizeof(players), co
static
idx,
Lang:lang,
text[Lang:MAX_LANGS][MAX_LANG_FORMAT_STRING + 1];
text[MAX_LANGS][MAX_LANG_FORMAT_STRING + 1];

for (lang = Lang:0; lang < Lang:MAX_LANGS; _:lang += 1) {
if (!Lang_IsValid(lang)) {
continue;
}

Lang_GetText(lang, var, text[lang]);
Lang_GetText(lang, var, text[_:lang]);

if (numargs() > 3) {
Lang_format(text[lang], sizeof(text[]), text[lang], lang_start<3>);
Lang_format(text[_:lang], sizeof(text[]), text[_:lang], lang_start<3>);
}

#if defined ENABLE_LANG_DYNAMIC_VARS
Lang_ProcessDynamicVars(lang, text[lang]);
Lang_ProcessDynamicVars(lang, text[_:lang]);
#endif
}

for (idx = 0; idx < size && players[idx] != INVALID_PLAYER_ID; idx += 1) {
SendClientMessage(players[idx], -1, text[Lang_GetPlayerLang(players[idx])]);
SendClientMessage(players[idx], -1, text[_:Lang_GetPlayerLang(players[idx])]);
}
}

Expand Down Expand Up @@ -1211,21 +1211,21 @@ stock Lang_GameTextForAll(time, style, const var[], lang_args<>)
static
playerid,
Lang:lang,
text[Lang:MAX_LANGS][MAX_LANG_FORMAT_STRING + 1];
text[MAX_LANGS][MAX_LANG_FORMAT_STRING + 1];

for (lang = Lang:0; lang < Lang:MAX_LANGS; _:lang += 1) {
if (!Lang_IsValid(lang)) {
continue;
}

Lang_GetText(lang, var, text[lang]);
Lang_GetText(lang, var, text[_:lang]);

if (numargs() > 3) {
Lang_format(text[lang], sizeof(text[]), text[lang], lang_start<3>);
Lang_format(text[_:lang], sizeof(text[]), text[_:lang], lang_start<3>);
}

#if defined ENABLE_LANG_DYNAMIC_VARS
Lang_ProcessDynamicVars(lang, text[lang]);
Lang_ProcessDynamicVars(lang, text[_:lang]);
#endif
}

Expand All @@ -1241,7 +1241,7 @@ stock Lang_GameTextForAll(time, style, const var[], lang_args<>)
continue;
}
#endif
GameTextForPlayer(playerid, text[Lang_GetPlayerLang(playerid)], time, style);
GameTextForPlayer(playerid, text[_:Lang_GetPlayerLang(playerid)], time, style);
}
}

Expand Down Expand Up @@ -1646,7 +1646,7 @@ static stock _Lang_ProcessVars(Lang:lang, strings_with_vars)
epos = strfind(varvalue, ")", true, spos);
if (epos == -1) {
next_iteration = false;
printf("Error: error with using language variables, example of usage: \\v(VARIABLE)");
printf("Error: invalid language variable found \"%s\" in \"%s\". Please use the following format: \\v(VARIABLE).", varvalue[spos + 3], varname);
break;
}

Expand Down Expand Up @@ -1683,7 +1683,7 @@ stock Lang_ProcessDynamicVars(Lang:lang, text[], const size = sizeof(text))
while ((spos = strfind(text, "\\v(", true)) != -1) {
epos = strfind(text, ")", true, spos);
if (epos == -1) {
printf("Error: error with using language variables, example of usage: \\v(VARIABLE)");
printf("Error: invalid language variable found \"%s\". Please use the following format: \\v(VARIABLE).", text[spos + 3]);
break;
}

Expand Down