Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 28 мар 2024, 17:49

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: AMX Plugins Translator
СообщениеДобавлено: 30 янв 2023, 07:01 
Не в сети
Аватара пользователя
Зарегистрирован:
27 дек 2019, 17:59
Последнее посещение:
26 мар 2024, 13:29
Сообщения: 273
Откуда: Иркутск
Описание:


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


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


Код:

            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

_________________
ВК: https://vk.com/pristavka2013
GitHub: https://github.com/mrglaster
Почта: [email protected]

Есть объективная реальность, а есть печенье.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: AMX Plugins Translator
СообщениеДобавлено: 04 фев 2023, 02:53 
Не в сети
Аватара пользователя
Зарегистрирован:
22 окт 2014, 19:26
Последнее посещение:
20 мар 2024, 19:47
Сообщения: 1018
"AR" Arabe? :)

_________________
https://vk.com/kgbaghl


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB