Как создать такую фразу для Phrases файла

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Всем привет.
Имеется какой-то текст, который я вяз из keyValue структуры, там есть какая строка к примеру {GAMEMODE}
Необходимо сделать так, что плагин брал эту фразу {GAMEMODE} (это сделал)
Изменял её на то что я заменю через ReplaceString (это сделал)
И необходимо, чтобы фраза, которая заменилась в тексте, бралась из Phrases файла (LoadTranslations) (не знаю как реализовать)
Все что смог накатать (даже не знаю как выстроить алгоритм в данном случае)
PHP:
    else if (StrContains(szTextRU, "{GAMEMODE}", false) != -1)
    {
        char sGameMode[2];
        g_hGameMode.GetString(sGameMode, sizeof(sGameMode));
        switch (sGameMode)
        {
            case 'c': //ReplaceString(szTextEN, sizeof(szTextEN),
        }
        ...
        ...
    }
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
@Vit_ amin, ищешь {GAMEMODE}, потом в буфер получаешь её перевод, и в исходной строке заменяешь {GAMEMODE} на содержимое буфера
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
А как ведь тут надо вставлять %t и аргумент ...
--- Добавлено позже ---
Вместо {GAMEMODE} получается
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Вместо {GAMEMODE} получается
PHP:
	else if (StrContains(szTextRU, "{GAMEMODE}", false) != -1)
    {
        char sGameMode[2], translate[100];
        g_hGameMode.GetString(sGameMode, sizeof(sGameMode));
		FormatEx(translate, sizeof(translate), "%T", sGameMode, client);
		ReplaceStringEx(szTextRU, sizeof(szTextRU), "{GAMEMODE}", translate);
        ...
        ...
    }
Или Я не понял, что ты хочешь заменить и что будет служить ключевой фразой из файла перевода.
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Суть такая.
Плагин берет значение строки из консольной переменной, к примеру gamemode1
В файле перевода написано на пример
C-подобный:
"Gamemode1"
{
   "ru" "..."
   "en" "..."
}
Но при этом, когда берется текст из KeyValue структуры там не только один {GAMEMODE}, а еще какой то текст
P.S. Подумал может создать новый ключ типо такого: "translation_text" "{GAMEMODE}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
значение строки из консольной переменной
g_hGameMode.GetString(sGameMode, sizeof(sGameMode));
Этим? Это и есть искомая ключевая фраза для файла перевода?
там не только один {GAMEMODE}, а еще какой то текст
Текст не трогаем, заменяем лишь сам "тег", так? Тогда код выше это и делает. Оффтоп
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Нет к примеру есть у меня структура в KeyValue:
C-подобный:
        RU_text "Сервер работает только в режиме {GAMEMODE}"
        EN_text "Server is worked only in {GAMEMODE}"
Перед этим плагин берет, значение переменной, и там к примеру название mp_gamemode = gamemode1
Потом, необходимо поменять его на символ %t, и потом вывести в чат, при этом, необходимо извлечь переведенную фразу из Phrases файла
А так как я не могу вставить аргумент для PrintToChat, чтобы плагин понимал, при выводе что в %t, я не знаю как это сделать
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Потом, необходимо поменять его на символ %t
Кажется, начинаю понимать это... "извращение". :mosking:
Т.е., язык берётся именно из KeyValue и переводить нужно именно для него? А как берёшь, где тот самый буфер ru/en?
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
PHP:
PrintToChat(i, "%s %s", PLUGIN_PREFIX, GetClientLanguage(i) == GetLanguageByName("Russian") ? szTextRU : szTextEN);
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Это они и есть?
PHP:
	else if (StrContains(szTextRU, "{GAMEMODE}", false) != -1)
    {
        char sGameMode[2], translate[100], buuffer[192];
        g_hGameMode.GetString(sGameMode, sizeof(sGameMode));
		FormatEx(translate, sizeof(translate), "%T", sGameMode, client);
		strcopy(buffer, sizeof(buffer), GetClientLanguage(i) == GetLanguageByName("Russian") ? szTextRU : szTextEN);
		ReplaceStringEx(buffer, sizeof(buffer), "{GAMEMODE}", translate);
		PrintToChat(i, "%s %s", PLUGIN_PREFIX, buffer);
    }
Хоть бы подписал, что то глобальные переменные и изменению в данной функции не подлежат. А то догадывайся.
 
Сверху Снизу