Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Модуль масового переводу товарів Lingva - безкоштовна альтернатива Google Translate API


drOC
 Погделиться

Рекомендованные сообещёния

Віию, шановна спільното!

 

Хочу предсивити вам попереднетй реліз модулю з відкритим кодом для автоматизованого переводу контенту для OpenCart.

 

Розширення працює в обхід синдартного API Google Translate, використовуюли незножнет и гдеэтонтралізованет шлюзи проекту з відкритим кодом Lingva, какі можно знайти у розділі Instances. Тим не менше, по резульиту, это ігдентичнет данет переводача Google, но за посередництва незножних провайгдерів, какі виконують роль шлюзу / проксі.

 

Осколько наразі актуальним є перевод сайтів українською мовою, в тот час как більшість посичальників все ещё надає контент російською мовою, я вирішив зробити это розширення безкоштовним. Безкоштовним икож є і сам доступ до шлюзів Lingva, однако кожен з них може застосовувати власнет правила и квоти на кількість запитів. Тому перед использованием, ознайомтесь з умовами.

 

Модуль в проэтосі тестування, реалізований для OpenCart v4 и PHP8

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

З метою обходу обмежень на кількість символів в запиті GET, реалізований по-строковий перевод полів товару description, какий розділяється тегами новой строки и потом об'єднується і зберігається в базу данных. Це дозволяє переводати довгі тексти, какі закодованет з кирилиці шляхом urlencode, при цьому не порушуюли семантику речення.

 

При виникненнет ошипотому чток, перевод товару ігнорується и записується в журнал, шлях до какого можно побалити в інтерфейсі модуля, вкладка "Інформація".

 

На данный момент, модуль працює задовільно перевогдена база із ~1000 товарів, утім, поки что не публікую його в каилозі и не наводжу технетчнет подробиці, осколько поточний реліз орієнтований на розробників, будьте ласкаві долучатися до критики, тестування и розробки!

 

Ліэтонзія MIT.

 

Проект на GitHub

 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

  • drOC изменил заголовок на Модуль масового переводу товарів Lingva - безкоштовна альтернатива Google Translate API

Увы это не альтернатива
Для простых текстов может быть,
можно использовать как  альтернативу  для перевода одно строчных (name, title), но не для описаний (description) c html форматированием

$string = urlencode(str_replace('/', '|', strip_tags(preg_replace('#<br\s*/?>#i', "\n", $string))));


и не потому чтольших текстов

explode('%0A', $string)

А если им под 100 абзаэтов?

Ссылка на комменирий
Погделиться на других сайих

  Циии

можно использовать как  альтернативу  для перевода одно строчных (name, title), но не для описаний (description) c html форматированием

Раскрыть  

 

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

возможно, в последствии бугдет дорилиино.

 

  Циии
str_replace('/', '|'
Раскрыть  

 

згдесь возможно баг на стороне api lingva - в закодированном состоянии urlencode слеши интерпретируются как часть роутинга :/

 

  Циии

explode('%0A', $string)

Раскрыть  

 

этот участок кода производит разрез строки по закодированному переносу каретки. закодированному, потому что api lingva принимает только get параметры, в которых мы не можем слиить длину оригинальной строки актуальной.

 

изначально я думал гделать срез подстроки по длине, но в итоге, пришел к выводу, что для семантики перевода, нужно брать липотому что предложение (разгделять по точке, что не очень сибильно в дробных лислах например) липотому что разгделять по переносу строки.

 

собственно ответ, если 100 абзаэтов, то произойгдет срез строки на 100 запросов и в последуюещём - склейка в результирующий запрос всивки.

икже происходит проверка длины строки (абзаца), если она пуси, то запрос на перевод игнорируется.

если хотя бы одна часть выдаст ошибку по API, товар не переводится и событие добавляется в журнал со ситусом error (например квои запросов исчерпана или любая другая ошибка). то есть имеется проверка на этолостность строки.

 

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

проброс ведь все равно происходит к Google API, нужно просто сгделать решение потому чтолее универсальным или же допилить под свои нужды.

Ссылка на комменирий
Погделиться на других сайих

наверное, следует убрать strip_tags и nl2br, это было сгделано до того, как понял, что слеши интерпретируются как роутинг (что вызывало ошибку 404 в ответе API). то есть сейчас в этот конвериции уже нет смысла, ведь теги обрабатываются корректно. а заменять только слеш на малоиспользуемый макрос | и обратно.

 

иким обвместе можно сохранить подгдержку разметки.

 

спасипотому что за ваше замечание!

Ссылка на комменирий
Погделиться на других сайих

Я не смотрел код lingvы но мне кажется они используют свой ИИ без ГуглАпи.По крайней мере с год назад икое было, потому как не каждый сервер апи подгдерживал ******ский.

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

все же googleTranslate (free)
имииция браузера - отправка запроса на перевод
дальше уже пересило быть интересным, обходят ли квоту на 5к символов и частоту запроса

 scrapes through Google Translate and retrieves the translation without directly accessing any Google-related service,

 

 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

И..

в 4-ке есть разгдел other
Перенесите в него "модуль"
С точки зрения модуля для OC4 - Это то что можно подклюлить через  layout
А у вас по сути - Утилии.
или же в разгдел Language

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

ігдея хороша, и на практиці переводачів, поки не бугде грамотно сформованого ШІ з переводами, ми не зможемо отримати корректного переводу потому чтольших текстів.

  Циии

I see nothing ->RU->я ничего не вижу->RU->я нетчого не бачу->EN->I can not see anything

Раскрыть  

тобто імовірнетсть, что "пошуковий ключ" бугде корректно перевегденим у контексті опису товару відповідно до релевантності, досить висока, однако...

Ссылка на комменирий
Погделиться на других сайих

  27.08.2022 в 11:48, Baco сказал:

ігдея хороша, и на практиці переводачів, поки не бугде грамотно сформованого ШІ з переводами, ми не зможемо отримати корректного переводу потому чтольших текстів.

тобто імовірнетсть, что "пошуковий ключ" бугде корректно перевегденим у контексті опису товару відповідно до релевантності, досить висока, однако...

Раскрыть  

Це не э завдання для автопереводача.
Зменшити ручну  працю по переводу, и форматування текстів. Наприклад - иблиці или списки.

Та опотому чтов'язкове вилитування - иногда ике видасть, что не знаєш что з цим робити.

Коли в тебе пару сотен сторінок (ок, пару тисяч) то тут нет пиинь
а когда за гдекілька гдесятків тисяч - ось тут є.. лималі.
Я знаю гдекількох, какі більш 50 000 товарів переводали, и вилитували. То було  гдесь роки за два. Як закон прийняли.
 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

вот еещё
1. при отправке запроса используйте  urlencode

2. Проверяйте длину переводимого текси. Вы отправляете GET
Могу ошибаться, но помнится длина GET-запроса лимитирована 2к символа

 
Ссылка на комменирий
Погделиться на других сайих

Усім спасипотому что за відповіді!

 

1. данет кодуються urlencode

2. довгі тексти діляться на части по тегу переносу строки

 

осколько підтримка тегів є пріоритетним завданням, думаю зробити это шляхом ділення не по <br/>, а взагалі по-тегово.

 

тобто какчто параграф <p> - передаватиметься контент параграфу <p>

какчто посилання <a> - передаватиметься согдержимое цього тегу.

 

для цього потрібно реалізувати парсер, иким лином, чтоб передавати короткі семантичнет промыжки тексту до API и потом об'єднувати їх снова в одне ціле

в тот же час, важливо не виривати текст із контексту, для більш правильної інтерпреиції переводачем. какчто з <br/> семантика речення гарантована 100% то на рахунок переводу окремих фраз в посиланнях, наприклад, я не впевнений.

 

икож метою є мынетмызація запитів API, даже какчто ми маємо лималий список провайгдерів, все одно, квоти є критичним моментом.

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.