Half-Life и Adrenaline Gamer форум
http://www.aghl.ru/forum/

AMX Plugins Translator
http://www.aghl.ru/forum/viewtopic.php?f=38&t=3303
Страница 1 из 1

Автор:  Glaster [ 30 янв 2023, 07:01 ]
Заголовок сообщения:  AMX Plugins Translator

Описание:


Утилита анализирует исходный код плагина, заменяет хардкод на ссылки на словарь там, где это необходимо, создает файл словаря и переводи полученные строки на другие языки.


Утилита обрабатывает строки, содержащие следующие функции:


Код:

            client_print
            client_print_color
            console_print
            engclient_print
            server_print
            show_hudmessage
            show_dhudmessage
            log_message
            log_amx
            log_to_file
            menu_create
            menu_additem


Список поддерживаемых языков их сокращения:


Изображение


Как использовать?


Утилита поддерживает 2 режима работы:


1) Стандартный режим: на вход подаются только путь до плагина и язык хардкода (например en). В таком случае утилита переведёт плагин на все доступные на данный момент 26 языков. Запуск будет выглядеть следующим образом


Код:

AMX-Plugins-Translator.exe myplugin.sma en



2) Режим с выбором языков перевода: на вход подаются только путь к плагину и список языков, на которые он будет переведён, в формате "ru, en, de, ua". Запуск выглядит следующим образом:


Код:

AMX-Plugins-Translator.exe myplugin.sma en "ru, de, fr"



Модифицированный плагин и словарь к нему мы найдём в папке с исходным плагином.




Пример работы утилиты:


Плагин до обработки:


Код:
#include <amxmodx>
#define PLUGIN "Plugin for Translator Test"
#define VERSION "1.0"
#define AUTHOR "Glaster"
public plugin_init() {
    register_clcmd("say /menu", "NewMenu");
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_clcmd("say /test_prints", "print_stuff");
}

public print_stuff(id) {
    new name[32];
    //client_print example
    get_user_name(id, name, 32);
    client_print(id, print_chat, "Hello Player with Name: %s", name);
    client_print(id, print_center, "Hello Dude!");
    client_print(id, print_console, "Test Value");
    //Hud example. Is valid also for dhud
    set_hudmessage(64, 0, 128, -1.0, 0.0, 0, 6.0, 6.0, 0.1, 0.2, -1)
    show_hudmessage(0, "Hello Player!")
}

//Menu exaple
public NewMenu(id) {
    new i_Menu = menu_create("\wOur Server Menu", "NewMenu_handler");
    menu_additem(i_Menu, "\wItem 1", "1", 0);
    menu_additem(i_Menu, "\wItem 2", "2", 0);
    menu_additem(i_Menu, "\wItem 3", "3", 0);
    menu_setprop(i_Menu, MPROP_NEXTNAME, "\rNext!");
    menu_setprop(i_Menu, MPROP_BACKNAME, "\rBack");
    menu_setprop(i_Menu, MPROP_EXITNAME, "\rExit");
    menu_display(id, i_Menu, 0)
}

public NewMenu_handler(id, menu, item) {
    if (item < 0) return PLUGIN_CONTINUE;
    new cmd[3], access, callback;
    menu_item_getinfo(menu, item, access, cmd, 2, _, _, callback);
    return PLUGIN_HANDLED;
}       


Плагин после обработки

Код:
//Plugins was translated with AMX Plugin Translator: https://github.com/mrglaster/AMX-Plugin-Translator
#include <amxmodx>
#define PLUGIN "Plugin for Translator Test"
#define VERSION "1.0"
#define AUTHOR "Glaster"

public plugin_init() {
    register_dictionary("test_plugin.txt");
    register_clcmd("say /menu", "NewMenu");
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_clcmd("say /test_prints", "print_stuff");
}

public print_stuff(id) {
    new name[32];
    //client_print example
    get_user_name(id, name, 32);
    client_print(id, print_chat, "%L", LANG_PLAYER, "HELLO_PLAYER_WITH_NAME", name);
    client_print(id, print_center, "%L", LANG_PLAYER, "HELLO_DUDE");
    client_print(id, print_console, "%L", LANG_PLAYER, "TEST_VALUE");
    //Hud example. Is valid also for dhud
    set_hudmessage(64, 0, 128, -1.0, 0.0, 0, 6.0, 6.0, 0.1, 0.2, -1)
    show_hudmessage(0, "%L", LANG_PLAYER, "HELLO_PLAYER")
}

//Menu exaple
public NewMenu(id) {
    new szStringBuf[64]
    formatex(szStringBuf, charsmax(szStringBuf), "%L", LANG_PLAYER, "WOUR_SERVER_MENU");
    new i_Menu = menu_create(szStringBuf, "NewMenu_handler");
    formatex(szStringBuf, charsmax(szStringBuf), "%L", LANG_PLAYER, "WITEM_1");
    menu_additem(i_Menu, szStringBuf, "1", 0);
    formatex(szStringBuf, charsmax(szStringBuf), "%L", LANG_PLAYER, "WITEM_2");
    menu_additem(i_Menu, szStringBuf, "2", 0);
    formatex(szStringBuf, charsmax(szStringBuf), "%L", LANG_PLAYER, "WITEM_3");
    menu_additem(i_Menu, szStringBuf, "3", 0);
    menu_setprop(i_Menu, MPROP_NEXTNAME, "\rNext!");
    menu_setprop(i_Menu, MPROP_BACKNAME, "\rBack");
    menu_setprop(i_Menu, MPROP_EXITNAME, "\rExit");
    menu_display(id, i_Menu, 0)
}

public NewMenu_handler(id, menu, item) {
    if (item < 0) return PLUGIN_CONTINUE;
    new cmd[3], access, callback;
    menu_item_getinfo(menu, item, access, cmd, 2, _, _, callback);
    return PLUGIN_HANDLED;
}

Сгенерированный словарь

Код:

[en]
HELLO_PLAYER_WITH_NAME = Hello Player with Name: %s
HELLO_DUDE = Hello Dude!
TEST_VALUE = Test Value
HELLO_PLAYER = Hello Player!
WOUR_SERVER_MENU = Our Server Menu
WITEM_1 = Item 1
WITEM_2 = Item 2
WITEM_3 = Item 3

[ru]
HELLO_PLAYER_WITH_NAME = Привет, игрок с именем: %s
HELLO_DUDE = Привет, чувак!
TEST_VALUE = Тестовое значение
HELLO_PLAYER = Привет Игрок!
WOUR_SERVER_MENU = Меню нашего сервера
WITEM_1 = Пункт 1
WITEM_2 = Пункт 2
WITEM_3 = Пункт 3

[de]
HELLO_PLAYER_WITH_NAME = Hallo Spieler mit Namen: %s
HELLO_DUDE = Hallo Alter!
TEST_VALUE = Testwert
HELLO_PLAYER = Hallo Spieler!
WOUR_SERVER_MENU = Unser Servermenü
WITEM_1 = Punkt 1
WITEM_2 = Punkt 2
WITEM_3 = Punkt 3


Скриншоты из игры


Изображение
Изображение

Установка и настройка

1) Установите .NET 6.0 Desktop Runtime (https://dotnet.microsoft.com/en-us/download/dotnet/6.0)
2) Скачайте архив с GitHub
3) Разархивируйте
4) Приложение готово к использованию:


ССЫЛКА: https://github.com/mrglaster/AMX-Plugins-Translator

Автор:  abdobiskra [ 04 фев 2023, 02:53 ]
Заголовок сообщения:  Re: AMX Plugins Translator

"AR" Arabe? :)

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/