ТЗ на автоперевод сайта
Сайту 25 лет
Кастомная CMS на php, БД Phpmysql
Ок 300 статей, 500+ новостей.
Мобильная версия прописана в шаблоне отдельной разметкой, стилями (не адаптивная).
Два шаблона: для главной страницы и второстепенных.
Нужно сделать перевод сайта и контента на анг язык.
Бюджет 30 000р. Срок 10-14 дней.
Работать это должно так:
Сайт проверяет установленный язык посетителя, если рус. то ничего не происходит, по умолчанию ему показывают сайт на рус языке. Если нет, тогда анг версию.
Но при этом, должна быть иконка с флагом, для принудительного выбора перевода на рус/анг. Как в ПК, так и для моб версии.
В моб версии кнопку перевода вставить между Звонком и Поиском
CHATGPT предложил так и я с ним в целом согласен:
Переводить статьи/новости через API автопереводом, если перевод есть, брать из кэша. А меню (горизонтальное и вертикальное), подвал отдельно держать переведенным страницу (шаблон).
RU как оригинал, EN как машинно переведённая и кэшированная версия, плюс явный переключатель РУС / ENG.
Сделать на сайте два режима:
русская версия
английская версия
или:
Лучше /en/, если сможете аккуратно добавить rewrite.
Переключатель:
<a href="?lang=ru">РУС</a>
<a href="?lang=en">ENG</a>
Но в реальности лучше не просто ?lang=, а сохранять выбор в cookie/session:
<?php
$supported = ['ru', 'en'];
if (isset($_GET['lang']) && in_array($_GET['lang'], $supported, true)) {
$lang = $_GET['lang'];
setcookie('site_lang', $lang, time() + 3600 * 24 * 365, '/');
} elseif (!empty($_COOKIE['site_lang']) && in_array($_COOKIE['site_lang'], $supported, true)) {
$lang = $_COOKIE['site_lang'];
} else {
$lang = 'ru';
}
?>
И в шаблоне:
<a href="<?= htmlspecialchars($_SERVER['PHP_SELF']) ?>?lang=ru">РУС</a>
<a href="<?= htmlspecialchars($_SERVER['PHP_SELF']) ?>?lang=en">ENG</a>
________________________________________
1. Как переводить контент
Вариант 1 быстро и дёшево: переводить при первом запросе и кэшировать
При первом открытии английской версии берёте русский текст из MySQL, отправляете его в API перевода, сохраняете результат в отдельную таблицу и дальше показываете уже сохранённый перевод.
Логика:
1. Пользователь выбрал ENG.
2. PHP берёт русское поле, например news.title или news.body.
3. Считает hash русского текста.
4. Проверяет, есть ли перевод в таблице translations.
5. Если есть показывает его.
6. Если нет отправляет текст в DeepL / Google Cloud Translation API.
7. Сохраняет перевод.
8. Показывает перевод.
Google Cloud Translation официально имеет PHP-клиент и предназначен для программной интеграции перевода в сайты и приложения. DeepL также предоставляет API и официальный PHP-клиент; для русского → английского часто качество DeepL бывает лучше, но это надо проверить на вашем контенте.
________________________________________