AMX Plugins Translator

tools AMX Plugins Translator 1.2

Нет прав для скачивания
Автор
Islingiton_G (aka Glaster)
Требования
Описание:

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

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

Код:
            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
Список поддерживаемых языков их сокращения:

supported_langs.png



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

Утилита поддерживает 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
Скриншоты из игры

example_menu.png
example_print_center_new.png
Автор
Islingiton_G
Скачиваний
84
Просмотры
1K
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя Islingiton_G

Последние обновления

  1. Обновление 1.2

    1) Исправлена ошибка генерации ключа для словаря в случаях, когда язык хардкода плагина не...
Сверху Снизу