Как перевести большое количество html файлов

Как переводить html файлы в python с помощью Google translate api

Попался мне недавно один очень интересный запрос. Нужно переводить большое количество html-страниц, массово, каким-то скриптом. Основная проблема, что кроме контента некоторые данные для перевода находятся внутри тегов. Пожелание было в том, чтобы не использовать google api.

Много проверил модулей, без google api сложно. Либо сами библиотеки завязаны на нем, либо переводит часть. Поэтому использовал апи от гугл. Сам скрипт несложный, но подготовка занимает время и вызывает вопросы.

Настройка google cloud translation api

Как я писал, больше всего проблем вызывает подготовка. Нужно на сайте гугл создать проект, разрешить перевод по апи, сохранить файл с правами доступа. Инструкция есть на сайте https://cloud.google.com/translate/docs/setup , опишу свои действия пошагово.

Создаем проект в google cloud
  1. Переходим в Google Cloud Platform. Нажимаем Создать проект (Create project). Кстати, русский язык в некоторых разделах больше не будет поддерживаться гуглом.

    Нажимаем создать проект в гугл клауд платформе
    Нажимаем создать проект в гугл клауд
  2. Пишем Название, только английские буквы, цифры, одинарные кавычки, дефисы, пробелы и восклицательные знаки.

    Создание проекта в google cloud platform для перевода
    Создание проекта в google cloud platform. Настройка перед скриптом
  3. Ждем создания… Дальше переходим в проект и копируем Номер проекта. Он нам понадобится потом.

    Номер проекта в google cloud platform
    Копируем Номер проекта в google cloud platform
Включаем Cloud Translation API для проекта
  1. Переходим в Api и сервисы, нажимаем Включить API и Сервисы.

    Как включить Cloud Translation API гугл
    Включаем Cloud Translation API для перевода html файлов и текста
  2. В поле для поиска вставляем Cloud Translation API.

    Ищем Cloud Translation API и включаем
    Ищем Cloud Translation API
  3. Нажимаем Включить. Может потребовать «Необходимо включить оплату». Переходим, дальше нужно создать платежный аккаунт. Это очень выходить за тему статьи, проблем вызвать не должно.
    Если привязать карту для Вашего региона обязательно, привяжите с лимитом оплаты. Карта не проверяется, дают 300 баксов от гугла на 90 дней для теста. При использовании мною скрипта (около 500 запросов сделал) на счету ничего не изменилось.
Создание учетных записей для Cloud
  1. Заходим Учетные данные (раздел тот же, API и сервисы).
  2. Выбираем Cloud Translation API, ниже я выбрал что не использую API для App Engine или Compute Engine.

    Настройка Cloud Translation API для скрипта питон
    Настройка учетных данных для доступа по Cloud Translation API
  3. Создаем Сервисный аккаунт. Вводим название, выбираем роль Администратор Cloud Translation API. Продолжить. Готово.

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

    Создаем json ключ для доступа к google cloud platform
    Создаем json ключ для доступа к google cloud platform
  5. Если все правильно, будет скачан файл. Мы уже близко, подготовка готова на 80%. Держитесь.
Установка google cloud SDK

Дальше нам нужно установить google cloud SDK на Ваш компьютер.

  1. Откройте Powershell и выполните следующую команду:

    Буден скачан и запустится Установщик Google Cloud SDK.
  2. Логинимся с того гугл аккаунта, где создавали проект в Google Cloud Platform.
  3. Выбираем созданный проект в консоли.

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

Дальше в ход идет сам скрипт на python.

Скрипт на python для перевода html файлов

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

Установка необходимых компонентов

Ставим через pip google-cloud-translate (для скрипта перевода) и google-cloud-storage (для доступа к cloud translation api).

И пример кода. Комментарии на английском сохранил с документации, добавил свои на русском.

Протестировал скрипт 13.02.2021, работает. Пользуетесь — поблагодарите меня через форму справа «На развитие блога bdseo.ru«. Мне будет очень приятно.

Особенности скрипта для перевода файлов

Главный плюс такого решения — оно решало мои задачи (и запрос). Переводило контент, переводило данные в тегах (title=, alt=). Но было несколько нюансов. Не переводило некоторые тексты в meta тегах в head-блоке; а также часть html-комментариев, например:

Возможно, это зависит от языков перевода. Бывают нюансы, как же без них, дополнительная проверка файлов не помешает.

Что касается перевода текстов подобным образом. Если это небольшие части контента, есть другие решения. Это контент html страницы — все зависит от размера текста. Когда текста на тысячи или десятки тысяч символов, то гугл может возвращать ошибку что слишком большой объем. С текстом («mime_type»: «text/plain») такое часто, а с html-файлами ошибку по лимиту не встречал.

При большом количестве файлов используем цикл. Есть вопросы — пишем в комментарии.

0 Comments

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *