Задать вопрос
@glu-dimaz

Какой метод локализации(перевода) сайта более эффектинвый (не фреймворк)?

Появилась необходимость реализовать версию сайта на англ. языке. Сайт - самописный, имеет очень много текстовой информации. Изначально, задумка следующая:
  • JS парсит все элементы на странице
  • Извлекается содержимое каждого элемента (childNodes)
  • Если у элемента childNodes.length <= 3 и у него есть text с кириллицей -> записываем в массив
  • Собранный массив с тексом передаем с помощью ajax в скрипт, который обрабатывает и возвращает обратно json уже с переведенным текстом


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);
				}
			}
		});
	}
});


Есть вопросы к обработчку. Изначально пробовал Яндекс переводчик, но стоимость перевода 1 страницы составила примерно 10-15 рублей. Дороговато, но скорость обработки - удовлетворила.

Решил попробовать подключить Python к данному вопросу. То есть php отправляет на питон json, питон переводит и возвращает обратно json. Пробовал поработать с deep_translator (GoogleTranslator) - очень медленно обрабатывает перевод. Одна страница занимает +- 30-90 секунд. Сейчас нашел transformers (MarianMTModel, MarianTokenizer) в целом - качество перевода +- удовлетворительное, но скорость тоже оставляет желать лучшего.

Кто работал в данном направлении, какие есть эффективные и +- не дорогие(лучше бесплатные) сервисы которые интегрируются в Python, PHP или работают по API

UPD:
Какие способы есть быстро и эффективно проштрудировать .php файлы на наличии в нем кириллицы и задать блокам-родителям уникальные идентификаторы(к примеру data-translate="a += 1")
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
У вас есть по сути 2 варианта: извращаться с переводом "налету" (что дорого и относительно медленно), или сразу создать мультиязычное окружение на уровне кода. В первом случае на каждый запрос вы будете тратить время и деньги, но при этом в коде потребуются минимальные изменения.
Во втором случае затраты будут лишь на перевод конкретного итема в момент добавления, и все остальные показы будут "бесплатны". Ну и один раз поработать с переводом интерфейса. Дополнительным плюсом будет то, что все свойства вбитые в интерфейсе уже будут переведены, и перевод понадобится только для пользовательских полей типа описания или комментариев.

В качестве переводчика гораздо лучше подойдет АПИ чатГПТ или джемени, стоит не дорого, а переводит на порядок лучше онлайн переводчиков, так как хорошо учитывает контекст всего текста, а не предложений отдельно.

Какие способы есть быстро и эффективно проштрудировать .php файлы на наличии в нем кириллицы и задать блокам-родителям уникальные идентификаторы(к примеру data-translate="a += 1")
Думаю что вариант с маркировкой блоков заведомо кривой, я бы искал регуляркой по русским символам и в местах текста менял бы на что-то типа <?=_t('найденный текст');?>, ну и 'найденный текст' использовал бы в качестве ключа к переводу фразы в структуре переводов. И с бэкенда уже все приходило бы в нужном языке (что позволяет вообще практически не менять фронт). Это исходя из того что сайт самописный, на какой-нибудь ларе есть куча готовых мультиязычных решений.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы