AMX Plugins Translator

AMX Plugins Translator 1.2

Нет прав для скачивания
Сообщения
133
Реакции
154
Islingiton_G добавил(а) новый ресурс:

AMX Plugins Translator - Заменяет хардкод на ссылки на словарь, переводит плагин на другие языки

Описание:

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

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

Код:
           client_print
            client_print_color
            console_print
            engclient_print
            server_print
            show_hudmessage
            show_dhudmessage...
Узнать больше об этом ресурсе...
 
Сообщения
272
Реакции
282
Помог
2 раз(а)
Делал я чутка похожее по тематике... переводчик самих LANG файлов на все возможные языки, отложил на долгий ящик. :hunter:

1674814782220.png1674814759876.png1674814841727.png1674815364229.png
 
Последнее редактирование:
Сообщения
133
Реакции
154
Вопрос к форумчанам: у кого есть идеи, как добавить поддержку кастомных строк?

Например, в одном плагине встретил такое. С завода утилита такое не возьмёт
Код:
lota_register_skill("吸血灵气", "恢复伤害的10%x等级血量", 4)
Вот как сделать ссылку на словарь тут? Через formatex и две переменных, аналогично menu_additem?

Также встает вопрос, как подобные вещи добавлять извне, ибо каждый раз добавлять новый элемент в массив утилиты и пересобирать её - не лучшее решение. На ум приходит пока следующее: мы храним все кастомные строки в отдельном json файле, где ключи - названия функции, а значения - массивы, указывающие, какие элементы нам надо переводить. Например,

Код:
{
   "lota_register_skill" : [True, True, False],
    ...
}
Или можно что-то получше придумать?
 
Сообщения
893
Реакции
149
Помог
25 раз(а)
Вопрос, будет ли добавление поддержки других языков?
UPD. Не дочитал до конца описание, отмена вопроса.
 
Сообщения
893
Реакции
149
Помог
25 раз(а)
Например, в одном плагине встретил такое. С завода утилита такое не возьмёт
C++:
lota_register_skill("吸血灵气", "恢复伤害的10%x等级血量", 4)
Вот как сделать ссылку на словарь тут? Через formatex и две переменных, аналогично menu_additem?
А что, если заменять не на кастомную, а попробовать заменять кастомную на дефолтную?
 
Сообщения
133
Реакции
154
ImmortalAmxx, встает вопрос универсальности такого метода, попадётся что-то совсем экзотичное, то тут могут возникнуть проблемы.
27 Янв 2023
Arni, мне нравится этот GUI. На чем делал, если не секрет?
 
Сообщения
893
Реакции
149
Помог
25 раз(а)
И ещё вопрос, оно генерит тхт файл и новый код в ту же папку, где и софтина?
 
Сообщения
272
Реакции
282
Помог
2 раз(а)
Islingiton_G, WPF + C#.

Используй regex для поиска выражений, где кастомные выражения... custom("text", atr1, atr2).
Первым вхождением находишь сами строки, а вторым отдельно атрибуты текста и переменных. А насчет базы, используй классы или словари (dictionary) Dictionary<Key, Value>, Ключом может выступать текст (или любой удобный уникальный идентификатор для ссылочности к тексту), а значением может выступать как массив, так и список.

Это всё, если ты переводишь через код, а не отдельно файлом. Я использовал парсер переводчика (нет никакого лимита на перевод, api платные обычно). Остальные детали опущу...
 
Последнее редактирование:
Сообщения
1,578
Реакции
663
Помог
5 раз(а)
Islingiton_G,

C#:
sourceLanguage = sourceLangI;
Debug.WriteLine("There is no user-given output languages list, so we'll use DEFAULT setting: ALL SUPPORTED LANGS");
this.fileName = fileNameI;
this.sourceLanguage = sourceLangI;
нету никакой логической ошибки?
Код:
sourceLanguage = sourceLangI;
потом
this.sourceLanguage = sourceLangI;
Я иногда в своих плагинах тоже дважды устанавливаю переменную для уверенности иногда помогает:))))
27 Янв 2023
И прогресс всегда 0%


Код:
Translating plugin to: lv

Progress: 0%

Translating plugin to: hr

Progress: 0%

Translating plugin to: bs

Progress: 0%

Dictionary Was Successfully Generated!
27 Янв 2023

Islingiton_G, мой говна плагин не переверило или я что-то не так сделал....
27 Янв 2023
Шото не то :)

c:\Users\Karaul0v\Downloads\AMX-Plugins-Translator.1.1>AMX-Plugins-Translator.exe C:\Projects\amxmodx\scripting\unreal_megashit\unreal_megashit.sma ru
 

Download all Attachments

Последнее редактирование:
Сообщения
133
Реакции
154
karaulov, тут проблема не в плагине, проблема в утилите. Нашёл ещё пару багов. Как пофиксю - отпишу сюда. Чую, засяду за это только ближе к вечеру
 
Последнее редактирование:
Сообщения
212
Реакции
334
Помог
3 раз(а)
Список поддерживаемых функций стоит расширить. К примеру, для новой системы меню есть еще некоторые функции, которые могли бы использовать словарь:

menu_item_setname
menu_addtext
menu_addtext2
menu_setprop (c MPROP_BACKNAME, MPROP_NEXTNAME, MPROP_EXITNAME, MPROP_TITLE)

Можно пошерстить доки и посмотреть, какими еще функциями можно дополнить поддержку
 
Сообщения
1,578
Реакции
663
Помог
5 раз(а)
Да вариантов очень много может быть, может проще вообще все строки обрабатывать:) или как-то дать выбрать какие менять строки а какие нет

Ну то есть через тот же formateх может тоже готовится строка для отображения которую надо преобразовать, а может и нет. Может быть надо какой-то отдельный режим который будет все строки обрабатывать спрашивая подтверждение у юзера
 
  • Нравится
Реакции: Arni
Сообщения
272
Реакции
282
Помог
2 раз(а)
karaulov, использовать 2 варианта сразу. Пускай пользователь переведёт сперва в автономном режиме всё, если не понравится, то использовать метод с уточнением у пользователя.
 
Сообщения
31
Реакции
6
Предупреждения
8
Вопрос к форумчанам: у кого есть идеи, как добавить поддержку кастомных строк?

Например, в одном плагине встретил такое. С завода утилита такое не возьмёт
Код:
lota_register_skill("吸血灵气", "恢复伤害的10%x等级血量", 4)
Вот как сделать ссылку на словарь тут? Через formatex и две переменных, аналогично menu_additem?

Также встает вопрос, как подобные вещи добавлять извне, ибо каждый раз добавлять новый элемент в массив утилиты и пересобирать её - не лучшее решение. На ум приходит пока следующее: мы храним все кастомные строки в отдельном json файле, где ключи - названия функции, а значения - массивы, указывающие, какие элементы нам надо переводить. Например,

Код:
{
   "lota_register_skill" : [True, True, False],
    ...
}
Или можно что-то получше придумать?
Почему бы просто не перевести все, что находится между двумя "" и не является комментарием, но исключить такие вещи, как register_event, register_message, hooks и т.д. и т.п. гораздо проще исключить то, что не нужно переводить, чем включать все пользовательские функции, которые вы найдете в исходниках
 
Последнее редактирование:
Сообщения
1,055
Реакции
212
Предупреждения
9
Помог
6 раз(а)
kappabiawbi, а если в «» запрос к бд…
 
  • Нравится
Реакции: Arni
Сообщения
272
Реакции
282
Помог
2 раз(а)
BiZaJe, их можно занести в исключение.
29 Янв 2023
в целом, создать список правил, куда сам юзер может вносить свои правила
 
Сообщения
1,578
Реакции
663
Помог
5 раз(а)
BiZaJe, ну вот если у меня 50 строк в коде, мне проще что бы программа выводила их по очередно и я дал Y/N, в случае если утилита консольная, а если графическая оболочка есть, то там ещё проще, выделил нужные строки нажал "преобразовать" и все.
29 Янв 2023
Я могу сделать такую же утилиту за полчаса на c# но с графической оболочкой, там то вообще строк 10 кода займет если не делать никаких проверок и т.п а пользователь сам выберет нужные строки. Если автор не захочет :)
 
Сообщения
272
Реакции
282
Помог
2 раз(а)
karaulov, только учти, что если использовать переводчики, нужно прорабатывать этот момент... Он может "съесть" %d %.1f.
Мы же не хотим потом вручную исправлять это...
 
Сообщения
1,578
Реакции
663
Помог
5 раз(а)
Arni, а что в Ланг файле не роботают %d и %.1f??
 
Сообщения
272
Реакции
282
Помог
2 раз(а)
@karaulov,причем тут Lang файл, я про translate.google.com translate.yandex.ru deepl.com/translator
29 Янв 2023
1674984022727.png1674984094725.png1674984111626.png
 

Download all Attachments

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу