22
Februar
2024
19:30

Перевод текстовых файлов markdown с помощью утилиты md_translate

22 Februar 2024 19:30

Перевод текстовых файлов с использованием он-лайн сервиса Microsoft Bing и приложения mb_translate.

Введение

Для создания многоязычных сайтов нужен перевод страниц, которые хранятся на сервере. Одним из способов перевода текста на другой язык является использование он-лайн Переводчиков Яндекс, Google или Bing. Для этих переводчиков разработана утилита md_translate.

Исходные текстовые файлы на локальном ПК могут быть как в формате TXT (в кодировке Unicode UTF-8), так и в формате Markdown. Данная утилита передает текстовый файл по абзацам на сайт переводчика и собирает результаты локально в выходной файл с приставкой "_translated" и исходным расширением - .txt или .md.

Яндекс и Google предприняли средства защиты от использования их переводчика в автоматическом режиме (динамически меняют названия элементов формы, id элементы и имена классов). К счастью, переводчик Bing ещё работает.

Документация к утилите md_translate находится на сайте: https://pypi.org/project/md_translate/

1. Установка браузера Google Chrome

Для работы md_translate необходим браузер Chrome, с помощью которого выполняется обращение к порталу для перевода текста на сайте Bing. Устанавливал я браузер Google Chrome из пакета DEB, который находится на официальном сайте: Загрузить Google Chrome. (Другие браузеры не работают из-за использования компонента selenium, который запускает и использует приложение "/usr/bin/google-chrome-stable").

Дополнение: установка Google Chrome с помощью репозитория:
1) загрузить и добавить GPG ключ для репозитория

wget  -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub |  gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/google-chrome.gpg   > /dev/null

2) создать файл /etc/apt/sources.list.d/google-chrome.list с содержимым:

deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main

3) установка браузера Google Chrome

sudo apt update
sudo apt install google-chrome-stable

2. Установка md_translate в Linux Ubuntu

2.1 Способ установки с помощью git-репозитория

Более простой способ см. п. 2.3

1) Установка пакета языка python3 (нужна версия <4.0, >=3.10)

sudo apt update && sudo apt upgrade
sudo apt install python3
python3 --version

Если установилась python 3.10 оставляем его и переходим к пункту 2 "клонирование репозитория".
Если python 3.8 (в Ubuntu 20.04), выполняем шаги:

По умолчанию в Ubuntu 20.04 используется python 3.8.
Мягкие символьные ссылки должны существовать:

ls /usr/bin/python*

/usr/bin/python -> /usr/bin/python3.8
/usr/bin/python2 -> /usr/bin/python2.7
/usr/bin/python3 -> /usr/bin/python3.8

Если ошибочно удалили ссылки /usr/bin/python и /usr/bin/python3, их можно восстановить командами:
sudo ln -s /usr/bin/python3.8 /usr/bin/python3
sudo ln -s /usr/bin/python2.7 /usr/bin/python2
sudo ln -s /usr/bin/python3.8 /usr/bin/python

По умолчанию, т.е. "из коробки" в Ubuntu 20.04 используется python 3.8.
Но для приложения md_translate нужен python версии 3.10.

1.1) Установка пакета языка python3.10 (нужна версия <4.0, >=3.10)

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa    
sudo apt install python3.10

Смотрим альтернативы:

update-alternatives --list python    

Если альтернатив нет: установка новых ссылок (в /usr/local/bin/python3):

sudo update-alternatives --install /usr/local/bin/python python /usr/bin/python3.10 0
sudo update-alternatives --install /usr/local/bin/python3 python3 /usr/bin/python3.8 1
sudo update-alternatives --install /usr/local/bin/python3 python3 /usr/bin/python3.10 2
sudo update-alternatives --list python
sudo update-alternatives --list python3

Закрыл и открыл терминал снова.

python --version
python3 --version

Выводится версия 3.10, что и требуется.

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

sudo apt install python3.10-distutils

Установка pip 24.0 в /usr/local/bin для версии python 3.10

curl -sS https://bootstrap.pypa.io/get-pip.py | python3

whereis pip
ls -l /usr/local/bin/pip*

Программа установилась: исполнимый файл /usr/local/bin/pip3.10

1.2) Разрешение на pip запись в локальный кеш

Для предотвращения ошибки "WARNING: The directory '/home/user/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag. "

sudo chown -R $USER:$USER ~/.cache/

Предупреждение о разрешениях папки ~/.cache исчезает.

1.3) Обновление pip в системе

sudo pip install --upgrade --root-user-action=ignore pip


2) Клонирование репозитория md_translate автора ilyachch

sudo apt install git
cd ~
rm -rf md_docs-trans-app
git clone https://github.com/ilyachch/md_docs-trans-app.git

3) Переход в папку с программой

cd ~/md_docs-trans-app

4) Установка md_translate

pip3 install .    

Установка md_translate выполнена.

5) Редактирование ~/.bashrc с целью добавления пути к программе md_translate:

nano ~/.bashrc

в конец файла добавил (исправить username на своё имя):

export PATH="$PATH:/home/username/.local/bin"

Ctrl+O, Ctrl+X

Закрытие и открытие терминала. Далее см. раздел 3.

2.2 Способ установки md_translate с помощью pipx

Данный способ описан на странице libraries.io/pypi/md-translate.
Установится версия 3.0.4.

sudo apt install pipx
rm /home/$USER/.local/bin/md-translate
pipx install md-translate

Также в конце файла .bashrc с целью запуска из командной строки без пути, добавляем путь к локальному приложению mb_translate.
nano ~/.bashrc

В конец файла добавил (исправить username на своё имя):

export PATH="/home/username/.local/bin:$PATH"

2.3 Способ установки md-translate из файла WHL

Файлы WHL знакомы по программе chirp.
Загрузка последней версии md-translate 3.4.0 - по ссылке GIThub -> ilyachch -> md_docs-trans-app -> releases -> 3.4.0. Скачиваем файл md_translate-3.4.0-py3-none-any.whl.

sudo apt install pipx
rm /home/$USER/.local/bin/md-translate
cd Загрузки
pipx install ./md_translate-3.4.0-py3-none-any.whl

Результат:
installed package md_translate 3.4.0, installed using Python 3.10.12
These apps are now globally available

  • md-translate
    done! ✨ 🌟 ✨

Путь, который следует добавить в .bashrc другой:

nano ~/.bashrc 

export PATH="$PATH:/home/user/.local/pipx/venvs/md-translate/bin"

Ctrl+O, Ctrl+X

(Где user - имя пользователя в системе).

Завершаем сессию Linux, заходим и тестируем md-translate. 😅

3. Использование md-translate для перевода текстовых файлов

Создал простой тестовый файл ( echo "Проверка" > ./file.md ).
Запустил приложения для перевода текста:

md-translate ./file.md -F ru -T en -P bing -N -v 

где:
./file.md - исходный текстовый файл
-F код - код языка исходного файла (ru)
-T код - код языка файла назначения (перевода - en)
-P bing - используемый портал для перевода
-N - создавать рядом новый файл с переводом (не перезаписывать исходный файл)
-v - выводить дополнительную информацию о ходе выполнения

Результат: создан файл file_translated.md с переводом:

Открыл перевод в текстовом редакторе. В файле с результатом, параграфы дублируются - сначала идёт оригинал, затем перевод. Это удобно для сравнения предложений на двух языках и уточнения текста машинного перевода. По окончанию исправления перевода исходные тексты параграфов на языке оригинала необходимо удалить из файла *_translated.md.

4. Ошибки выполнения mb_translate 3.2.0

В 2025 году программа у меня работать перестала. :(

ОШИБКА №1: OSError: [Errno 8] Exec format error: '/home/user/.wdm/drivers/chromedriver/linux64/135.0.7049.84/chromedriver-linux64/THIRD_PARTY_NOTICES.chromedriver'

При запуске выдается ошибка, заканчивающая текстом "THIRD_PARTY_NOTICES.chromedriver":

traceback (most recent call last):
File "/home/vladimir/.local/bin/md-translate", line 8, in
sys.exit(main())
...
File "/usr/lib/python3.10/subprocess.py", line 1863, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: '/home/vladimir/.wdm/drivers/chromedriver/linux64/135.0.7049.84/chromedriver-linux64/THIRD_PARTY_NOTICES.chromedriver'

Решение:

1) Удалить папку .wdm с временными файлами, созданными webdriver-manager

rm -rf ~/.wdm

И переустановить webdriver-manager:

pip uninstall webdriver-manager
pip install webdriver-manager

Источник решения - stackoverflow.com

Теперь при запуске md-translate test.md -F RU -T EN -P bing -v программа дойдёт до этапа перевода.

ОШИБКА №2: paragraphs = data.split('\n') AttributeError: 'NoneType' object has no attribute 'split'

Ошибка означает, что из управляемого chromedriver не возвращается результат перевода - текст. При выполнении оператора paragraphs = data.split('\n') в "data" ничего нет.

ERROR:md_translate.application:'NoneType' object has no attribute 'split'
Traceback (most recent call last):
...
File "/home/vladimir/.local/lib/python3.10/site-packages/md_translate/translators/_selenium_base.py", line 156, in clear
paragraphs = data.split('\n')
AttributeError: 'NoneType' object has no attribute 'split'

Решение:

  • переход на переводчик Яндекс

    md-translate test.md -F RU -T EN -P yandex -v

  • или libretranslate.

    md-translate test.md -F RU -T EN -P libretranslate -v

Разработчик не советует Yandex из-за возможных проблем с запросом капчи.

Исходный файл без ключа -N будет затерт.

ОШИБКА №3: программа запускается, но ничего не делает.

Решение не найдено.

ОШИБКА №4

Fatal error from pip prevented installation. Full pip output in file:
/home/user/.local/pipx/logs/cmd_2025-04-11_11.13.40_pip_errors.log

Some possibly relevant errors from pip install:
ERROR: Could not find a version that satisfies the requirement md-translate-3-4-0-py3-none-any-whl (from versions: none)
ERROR: No matching distribution found for md-translate-3-4-0-py3-none-any-whl

Error installing md-translate-3-4-0-py3-none-any-whl.

Решение: перед установкой md_translate, необходимо обновить pip и pipx.

pipx uninstall md-translate
pip install --upgrade pip
pip install --upgrade pipx
pipx install md_translate-3.4.0-py3-none-any.whl 

4. Отключение создания дубликатов

md-translate test.md -F ru -T en -P yandex -v -D

При использовании ключа -D приложение md-translate не будет создавать дубликатов переводимых параграфов - вместо исходного и конечного текста будет только конечный результат.

Например, при переводе с русского языка на английский вместо

"Пример"
"Example"

В файле будет только результат перевода

"Example".

Замечание. В 2025 году перевод md_translate фактически не работает. Надеюсь, что автор приложения возобновит обновление проекта md-translate: https://github.com/ilyachch/md_docs-trans-app.

5. Таблица кодов языков переводчика Bing

Язык код
Bhojpuri bho
Bodo brx
Chhattisgarhi hne
Chinese (Literary) lzh
Dogri doi
Ganda lug
Inuinnaqtun ikt
Inuktitut (Latin) iu-Latn
Kashmiri ks
Konkani gom
Mongolian (Cyrillic) mn-Cyrl
Mongolian (Traditional) mn-Mong
Nyanja nya
Rundi run
Sesotho st
Sesotho sa Leboa nso
Setswana tn
Азербайджанский az
Албанский sq
Амхарский am
Английский en
Арабский ar
Армянский hy
Ассамский as
Африкаанс af
Баскский eu
Башкирский ba
Бенгальский bn
Бирманский my
Болгарский bg
Боснийский bs
Валлийский cy
Венгерский hu
Верхнелужицкий hsb
Вьетнамский vi
Гаитянский ht
Галисийский gl
Греческий el
Грузинский ka
Гуджарати gu
Дари prs
Датский da
Зулу zu
Иврит he
Игбо ig
Индонезийский id
Инуктитут iu
Ирландский ga
Исландский is
Испанский es
Итальянский it
Йоруба yo
Казахский kk
Каннада kn
Кантонский (Традиционная Китайская) yue
Каталанский ca
Киньяруанда rw
Киргизский ky
Китайский (Традиционная Китайская) zh-Hant
Китайский (Упрощенная Китайская) zh-Hans
Клингонский (Латиница) tlh-Latn
Корейский ko
Коса xh
Курдский (Северная) kmr
Курдский (Центральная) ku
Кхмерский km
Лаосский lo
Латышский lv
Лингала ln
Литовский lt
Майтхили mai
Македонский mk
Малагасийский mg
Малайский ms
Малаялам ml
Мальдивский dv
Мальтийский mt
Маори mi
Маратхи mr
Немецкий de
Непальский ne
Нидерландский nl
Нижнелужицкий dsb
Норвежский Букмол nb
Ория or
Отоми (Керетаро) otq
Панджаби pa
Персидский fa
Польский pl
Португальский (Бразилия) pt
Португальский (Португалия) pt-PT
Пушту ps
Румынский ro
Русский ru
Самоанский sm
Сербский (Кириллица) sr-Cyrl
Сербский (Латиница) sr-Latn
Сингальский si
Синдхи sd
Словацкий sk
Словенский sl
Сомали so
Суахили sw
Таитянский ty
Тайский th
Тамильский ta
Татарский tt
Телугу te
Тибетский bo
Тигринья ti
Тонганский to
Турецкий tr
Туркменский tk
Узбекский uz
Уйгурский ug
Украинский uk
Урду ur
Фарерский fo
Фиджи fj
Филиппинский fil
Финский fi
Французский fr
Французский (Канада) fr-CA
Хауса ha
Хинди hi
Хмонг mww
Хорватский hr
Чешский cs
Шведский sv
Шона sn
Эстонский et
Юкатекский Майя yua
Японский ja

См. также:

Последнее изменение: 10.05.2025.



Verwandte Veröffentlichungen