Помогите по поводу переводом

globalyt1

Участник
Сообщения
32
Реакции
1
Скажите как нормально перевести код.
Загрузку перевод вводил
C-подобный:
LoadTranslations("retakevotehs.phrases");
C-подобный:
public Action FVoteHs(int client,int args)
{
    if (args > 0)
        return Plugin_Handled;
    if(!IsActive)
    {
        IsActive = true;
        CPrintToChatAll("%s" "Activated",PREFIX);
    }
    else
    {
        IsActive = false;
        CPrintToChatAll("%s" "Disabled",PREFIX);
    }
return Plugin_Handled;
}
Перевод

Перевод:
"Phrases"
{
    "Activated"
    {
        "en"            "Only HeadShot will be Activated! next round"
        "ru"            "Только HeadShot будет Активирован! следующем раунде"
    }
    
    "Disabled"
    {
        "en"            "Only HeadShot will be Disabled! next round"
        "ru"            "Только HeadShot будет Отключён! следующем раунде"
    }
}

На сервере пишется в чате Disabled, то есть перевод не загружается
 

Rabb1t

Амбассадор
Сообщения
2,968
Реакции
1,429
  • Команда форума
  • #2
Код:
C-подобный:
public Action FVoteHs(int client,int args)
{
    if (args > 0)
        return Plugin_Handled;
    if(!IsActive)
    {
        IsActive = true;
        CPrintToChatAll("%s%t",PREFIX, "Activated");
    }
    else
    {
        IsActive = false;
        CPrintToChatAll("%s%t",PREFIX, "Disabled");
    }
return Plugin_Handled;
}

Вот так будет.
 

globalyt1

Участник
Сообщения
32
Реакции
1
Потому что ты неправильно написал, смотри тему еще раз https://hlmod.ru/threads/fajly-perevoda-v-sourcepawn.12961/
Сто раз её читал
C-подобный:
PrintToChat(client, "[NoWay] %s", "Disabled");
В чём проблема, я не знаю
Сообщения автоматически склеены:

Код:
C-подобный:
public Action FVoteHs(int client,int args)
{
    if (args > 0)
        return Plugin_Handled;
    if(!IsActive)
    {
        IsActive = true;
        CPrintToChatAll("%s%t",PREFIX, "Activated");
    }
    else
    {
        IsActive = false;
        CPrintToChatAll("%s%t",PREFIX, "Disabled");
    }
return Plugin_Handled;
}

Вот так будет.
Спасибо
 

Rabb1t

Амбассадор
Сообщения
2,968
Реакции
1,429
  • Команда форума
  • #5
В чём проблема, я не знаю
В том, что если Вам нужно использовать фразу, вы должны передать %t, а затем в качестве аргумента имя фразы. Тему посоветовал бы перечитать внимательно.
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Сто раз её читал
C-подобный:
PrintToChat(client, "[NoWay] %s", "Disabled");
В чём проблема, я не знаю
Сообщения автоматически склеены:


Спасибо
Прочтите правила форматирования текста, что бы брало данные с файла перевода, нужно указывать не %s, a %t или %T
 

globalyt1

Участник
Сообщения
32
Реакции
1
Прочтите правила форматирования текста, что бы брало данные с файла перевода, нужно указывать не %s, a %t или %T
Спасибо, а можете сказать что бы с <colors> можно было переводить, как это сделать?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
C-подобный:
public Action FVoteHs(int client, int args)
{
    CPrintToChatAll("%s%t", PREFIX, IsActive ? "Disabled" : "Activated");
    IsActive = !IsActive;
    return Plugin_Handled;
}
 

globalyt1

Участник
Сообщения
32
Реакции
1
Разве работает? Функция в инклюде же заменяет текст, а %t и %T преобразовываются уже в самом PrintToChat[All].
У меня ещё одна проблема которая связана с форматом

Ошибка:
//// RetakesVoteHS.sp
//
// C:\Users\islam\Desktop\scripting\RetakesVoteHS.sp(91) : error 017: undefined symbol "szBuffer"
// C:\Users\islam\Desktop\scripting\RetakesVoteHS.sp(91) : error 072: "sizeof" operator is invalid on "function" symbols
// C:\Users\islam\Desktop\scripting\RetakesVoteHS.sp(91) : warning 215: expression has no effect
// C:\Users\islam\Desktop\scripting\RetakesVoteHS.sp(91) : warning 215: expression has no effect
// C:\Users\islam\Desktop\scripting\RetakesVoteHS.sp(91) : error 001: expected token: ";", but found ")"
// C:\Users\islam\Desktop\scripting\RetakesVoteHS.sp(91) : fatal error 190: too many error messages on one line
//
C-подобный:
Format(szBuffer, sizeof(szBuffer), "%s%t%i", PREFIX, WantActivate, WantToActivate, (1+(CurrentPlayersAmount / 2)));
        CPrintToChat(client,"%s%t", PREFIX, "%i" "WantActivate" WantToActivate, (1+(CurrentPlayersAmount / 2)));
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Можно просто использовать CCProcessor в связке с нативным PrintToChat
 

globalyt1

Участник
Сообщения
32
Реакции
1
Можно просто использовать CCProcessor в связке с нативным PrintToChat
Что на счёт это ошибки, не могу разобраться

Ошибка:
// C:\Users\islam\Desktop\scripting\RetakesVoteHS.sp(91) : error 001: expected token: ",", but found "-string-"
// C:\Users\pc\Desktop\scripting\RetakesVoteHS.sp(91) : warning 215: expression has no effect
// C:\Users\pc\Desktop\scripting\RetakesVoteHS.sp(91) : error 001: expected token: ";", but found "-identifier-"
// C:\Users\pc\Desktop\scripting\RetakesVoteHS.sp(91) : warning 215: expression has no effect
// C:\Users\pc\Desktop\scripting\RetakesVoteHS.sp(91) : warning 215: expression has no effect
// C:\Users\pc\Desktop\scripting\RetakesVoteHS.sp(91) : error 001: expected token: ";", but found ")"
// C:\Users\pc\Desktop\scripting\RetakesVoteHS.sp(91) : fatal error 190: too many error messages on one line
//
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
test.sp:
#pragma newdecls required

bool bEnabled;

public void OnPluginStart()
{
    RegConsoleCmd("sm_test", cmdUse);

    LoadTranslations("test.phrases");
}

public Action cmdUse(int iClient, int args)
{
    // Просто пример, не стоит так делать
    static const char szPhraseKeys[][] = { "disabled", "enabled" };
    static const char szPhraseKeys2[][] = { "disabled_a", "enabled_a" };
    static const char szPhraseKeys3[][] = { "disabled_b", "enabled_b" };
 
    if(iClient && IsClientInGame(iClient))
    {
        bEnabled = !bEnabled;

        // Без аргументов
        PrintToChat(iClient, "%t", szPhraseKeys[view_as<int>(bEnabled)]);

        // С аргументами
#define PREFIX "[SM]"
        PrintToChat(iClient, "%t", szPhraseKeys2[view_as<int>(bEnabled)], PREFIX);

        // Другой вариант
        PrintToChat(iClient, "%t", "some_phrase", PREFIX, szPhraseKeys3[view_as<int>(bEnabled)]);
    }

    return Plugin_Handled;
}

test.phrases:
"Phrases"
{
    // Example 1
    "disabled"
    {
        "ru"            "{W}Вы что-то выключено"
        "en"            "You are disabled an apple"
    }

    "enabled"
    {
        "ru"            "{W}Вы что-то включили"
        "en"            "{W}You are enabled an apple"
    }

    // Example 2
    "disabled_a"
    {
        // Это наш префикс
        "#format"       "{1:s}"

        "ru"            "{G}{1} {W}Вы что-то выключено"
        "en"            "{G}{1} {W}You are disabled an apple"
    }

    "enabled_a"
    {
        // Это наш префикс
        "#format"       "{1:s}"

        "ru"            "{G}{1} {W}Вы что-то включили"
        "en"            "{G}{1} {W}You are enabled an apple"
    }

    // Example 3
    "disabled_b"
    {
        "ru"            "выключен"
        "en"            "disabled"
    }

    "enabled_b"
    {
        "ru"            "включен"
        "en"            "enabled"
    }

    "some_phrase"
    {
        "#format"           "{1:s},{2:t}"

        "ru"            "{G}{1} {W}Ваш тег {G}{2}"
        "en"            "{G}{1} {W}Your tag is {G}{2}"
    }
}
 
Сверху Снизу