У меня возникла необходимость создать англоязычную версию самописного сайта, который содержит большое количество текстовой информации. Я изначально планировал следующее: <br/> <br/> <pre><code class="javascript">const textNodes = document.querySelectorAll('body *:not(script):not(style)'); textNodes.forEach(element => { if (element.childNodes.length <= 3) { element.childNodes.forEach(child => { if (child.nodeType === Node.TEXT_NODE) { const text = child.nodeValue.trim(); if (text && /[а-яА-ЯЁё]/.test(text)) { results.push({ text: text, // parent: element }); parents.push(element); } } }); } });</code></pre> <br/> <br/> У меня есть вопросы по обработке текста. Ранее я пробовал использовать Яндекс переводчик, но стоимость перевода одной страницы составила около 10-15 рублей, что показалось немного дорого, хотя скорость обработки была удовлетворительной. <br/> <br/> Я решил использовать Python для решения этой задачи: PHP отправляет JSON на Python, который затем выполняет перевод и возвращает JSON обратно. Я тестировал библиотеку <b>deep_translator (GoogleTranslator)</b>, но перевод осуществляется очень медленно и занимает около 30-90 секунд на одну страницу. Также я нашел <b>transformers (MarianMTModel, MarianTokenizer)</b>, и, хотя качество перевода приемлемое, скорость также оставляет желать лучшего. <br/> <br/> Кто имеет опыт в этом вопросе? Какие существуют эффективные и желательно недорогие (предпочтительно бесплатные) сервисы, которые могут быть интегрированы с Python, PHP или работают через API?
Процесс локализации сайта может быть сложным, особенно если речь идет о большом объеме текста. Вот несколько подходов и инструментов, которые могут помочь вам в этом процессе: ### 1. Использование API для перевода **Бесплатные или более дешевые API:** - **LibreTranslate**: Это бесплатный и открытый переведчик, который поддерживает несколько языков. Хотя качество перевода может быть не таким высококачественным, как у коммерческих решений, он может стать хорошей альтернативой. - **Microsoft Translator Text API**: Microsoft предлагает ограниченное бесплатное использование своей службы перевода. Вы можете получить кредиты на бесплатный уровень и использовать их в соответствии с вашими нуждами. - **OpenAI GPT**: Некоторые версии GPT могут использоваться для перевода текста, хотя это менее целенаправленно, чем другие API. ### 2. Локальная обработка перевода Если вы ищете более эффективный локальный вариант, то: - **MarianMT**: Если вы уже пробовали использовать `transformers`, вы можете оптимизировать локальную установку модели. Попробуйте использовать менее ресурсоемкие модели или сокращать запросы, чтобы избежать больших задержек. - **Hugging Face Datasets**: Можете попробовать использовать уже обученные модели для конкретных языков, возможно, они будут более эффективными. ### 3. Кэширование переводов Если вы обрабатываете одно и то же содержание часто, рассмотрите возможность кэширования переводов. Это можно сделать с использованием баз данных или файловой системы. Таким образом, вы сможете избежать повторного перевода одного и того же текста, что существенно повысит скорость и уменьшит затраты. ### 4. Пакетный перевод Если возможно, на ботах, работающих с локализацией, делайте пакетный перевод. Соберите все текстовые строки и отправляйте их единым потоком. Все API, как правило, быстрее обрабатывают большие объемы текста, чем по одному предложению. ### 5. Ручная корректура После автоматического перевода много текста может нуждаться в редактуре. Если у вас есть доступ к носителям языка, качество перевода можно всегда улучшить за счет их работы. ### 6. Обратная связь и последующий анализ Используйте пользовательские отзывы для улучшения качества перевода на сайте — это может быть полезным как для поиска ошибок, так и для определения наиболее часто встречающихся фраз для улучшения их переводов. ### Итоги Наилучший подход в вашем случае зависит от бюджета, требований к скорости и качеству перевода и объемов текста. Возможно, вам стоит попробовать интегрировать несколько разных инструментов и сравнить полученные результаты по скорости и качеству.
У вас есть по сути 2 варианта: извращаться с переводом "налету" (что дорого и относительно медленно), или сразу создать мультиязычное окружение на уровне кода. В первом случае на каждый запрос вы будете тратить время и деньги, но при этом в коде потребуются минимальные изменения.
Во втором случае затраты будут лишь на перевод конкретного итема в момент добавления, и все остальные показы будут "бесплатны". Ну и один раз поработать с переводом интерфейса. Дополнительным плюсом будет то, что все свойства вбитые в интерфейсе уже будут переведены, и перевод понадобится только для пользовательских полей типа описания или комментариев.
В качестве переводчика гораздо лучше подойдет чатГПТ или джемени, стоит не дорого, а переводит на порядок лучше онлайн переводчиков, так как хорошо учитывает контекст всего текста, а не предложений отдельно.
Какие способы есть быстро и эффективно проштрудировать .php файлы на наличии в нем кириллицы и задать блокам-родителям уникальные идентификаторы(к примеру data-translate="a += 1")Думаю что вариант с маркировкой блоков заведомо кривой, я бы искал регуляркой по русским символам и в местах текста менял бы на что-то типа<?=_t('найденный текст');?>
? ну и 'найденный текст' использовал бы в качестве ключа к переводу фразы в структуре переводов.