NyashniyVladya / Translator3000

Automatic translator of games made on Ren'Py engine.
https://nyashniyvladya.github.io/
GNU General Public License v3.0
121 stars 18 forks source link

У меня есть предложение! #1

Closed Astner-zets closed 4 years ago

Astner-zets commented 4 years ago

Вы проделали невероятную работу с Translator3000, но у программы есть серьёзный минус! Она переводит игру только в режиме реального времени что вызывает лаги! Было бы очень здорово если бы скрипт мог всё перевести заранее! Спасибо за внимание!

NyashniyVladya commented 4 years ago

Я думал об этом ещё когда делал софтину. Программно-то тут сложностей нет: запустить цикл основным методом по объектам Translate (или как он там зовётся) и профит. Тут вопрос в том, чтобы "Гугл" не забанил айпишник; т. к. сей софт работает не на api, а имитирует работу браузера - последовательная "бомбардировка" запросами явно даст понять "Гуглу", что запросы идут не от человека; а увеличение времени между запросами сделает загрузку игры непозволительно долгой. В любом случае, я предложение услышал: подумаю, что можно сотворить. P.S.: Прошу прощения за крайне несвоевременный ответ. По некоторым причинам личного характера, последние две недели не было возможности сесть за ПК. P.P.S.: Все ответы сервера кэшируются, так что если конкретная фраза уже была когда либо переведена (в предыдущем прохождении, либо вообще в другой игре), - результат вернётся из БД, без обращения к серверу и следующим из этого лагов.

Astner-zets commented 4 years ago

Благодарю вас за ответ! Я не очень хорошо разбираюсь, но я думаю что возможно можно добавить код который будет создавать небольшую паузу между переводом строк и тогда возможно гугл не заметит подвоха из-за уменьшения частоты запросов. Я сделал такой вывод так как при использовании клавиши ''пропуск'' и параллельном переводе через скрипт гугл не забанил мой ip несмотря на продолжительное использование данного метода. К сожалению это довольно неудобно и муторно! И поэтому я подумал что если бы он мог переводить весь скрипт а не только одну ветку развития в игре это было довольно удобно!

Astner-zets commented 4 years ago

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

NyashniyVladya commented 4 years ago

Добавил в настройки опцию, которая включит параллельный поток, переводящий всю игру при запуске. Но, т.к. есть таймаут между обращениями к серверу, суммарное время перевода может быть продолжительным, в зависимости от количества строк.

Инструкция и файл.

Astner-zets commented 4 years ago

Это очень здорово, я обязательно попробую и отпишусь! спасибо вам!

Astner-zets commented 4 years ago

Это работает! Но я не уверен как это складывается с кэшированием! В любом случае большое вам спасибо!

NyashniyVladya commented 4 years ago

Кэширование будет произведено по окончанию перевода всех строк игры; так же оно производится в момент вывода на экран ещё непереведённой строки, при её переводе. Кэш един, для всех RenPy игр; так что если строка была переведена в другой игре - второго обращения к серверу с этой строкой не будет.

Astner-zets commented 4 years ago

То есть если это новелла выходящая сборками то я смогу быстро с кэшированием перевести строки прошлого билда? И нужен ли для этого тот самый самый файл который использовался тогда или они хранятся где-то отдельно?

NyashniyVladya commented 4 years ago

То есть если это новелла выходящая сборками то я смогу быстро с кэшированием перевести строки прошлого билда?

Если они не были изменены авторами - да.

И нужен ли для этого тот самый самый файл который использовался тогда или они хранятся где-то отдельно?

Файл не нужен. Кэш находится в папке %userprofile%\vladya's projects database\GoogleTranslateModule\1.1

Astner-zets commented 4 years ago

Ещё раз спасибо! Я также заметил что он переводит не все новеллы! Это связано с тем что структура диалогов Ren'Py может отличаться?

NyashniyVladya commented 4 years ago

Полагаю, связано с тем, что версия Ren'Py старше 6.99.14, т.к. в них ещё не реализован TLS, нужный для работы с сервисом перевода. Если есть желание выяснить точнее - можно развернуть исходники в конкретной игре, включить режим дебага и почитать трейсы.

Astner-zets commented 4 years ago

Не думаю что это необходимо, просто хотел узнать причину. Ещё раз спасибо думаю я закрою вопрос.