Описание:
Утилита анализирует исходный код плагина, заменяет хардкод на ссылки на словарь там, где это необходимо, создает файл словаря и переводи полученные строки на другие языки.
Утилита обрабатывает строки, содержащие следующие функции:
Код: 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
|