Как сделать переводчик на python

Добавил пользователь Дмитрий К.
Обновлено: 10.09.2024

Пост создан для рассмотрения небольшого примера возможностей языка python. Мы не станем углубляться в сложные темы языка, например, такие как объектно-ориентированное программирование и связанные с ним классы. Да, они являются мощным инструментом для создания сложных приложений, но нам этого пока не требуется.

Цель: создать англо-русский, русско-английский словарь с возможностью вносить в него новые, пользовательские значения. Первое, что приходи на ум — словари языка python.

Словарь в питоне — неупорядоченная последовательность пар ключ — значение. Что, собственно, и требовалось, верно?

Пример первый

Итак, первый файл должен содержать сам словарь с некоторыми значениями.

Создадим его. Назовём words.py

Теперь нужно как-то спросить у пользователя, перевод какого именно слова он хотел бы найти и вывести значение на экран. Кроме того, не стоит забывать, что наш словарь работает в двух направлениях: он должен не только переводить с английского на русский, но и наоборот!

Создадим стартовый файл с функциями, запускающими в зависимости от предпочтений пользователя тот или иной вариант перевода.

Отлично! Разберём построчно:

from words import words — импортируем из файла words.py сам словарь — words

Пишем две функции: eng и rus без параметров.

eng_words=dict([[v, k] for k,v in words.items()]) — это словарь "наоборот" для перевода русских слов на английские, теперь ключи стали значениями, а значения — ключами!

find_word=input('Enter word ' '') - просим пользователя ввести искомое слово

print(eng_words.get(find_word) or print('No such key')) — выводим на экран ответ с помощью функции print , получаем значение ( get ). В противном случае, отвечаем, что не смогли отыскать нужное слово.

Функция rus() работает так же, но без инвертирования словаря.

Вы уже догадались: наш словарь "наоборот" нужен для того, чтобы не приходилось писать два словаря — мы просто меняем ключи и значения местами.

Попробуйте запустить mydictionary.py и насладитесь результатом.

Что сейчас делает наша программа?

Спрашивает искомое слово, выводит ответ. Но осталось ощущение, что всё слишком просто и чего-то не хватает. Давайте немного усложним задачу: создадим базу данных для словаря и дадим пользователю возможность добавлять свои значения.

Пример второй

Создание базы данных. Файл words_db.py

База данных создаётся при помощи модуля shelve , импортируем его. Далее укажем входной файл: db_file , он открывается, в него записываются данные — теперь именно это наш словарь. Файл words.py , используемый в первом примере, нам больше не нужен.

После записи значений, базу данных нужно закрыть — db.close() . Создайте нашу базу данных — db_file :

Восстановление базы данных из файла db_file

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

Мы импортировали модуль shelve и открыли нашу базу данных, содержащую словарь

Далее создали функцию, которая будет искать в файле db_file значение ключа. В случае с функцией eng() — значения в словаре инвертируются.

Кроме того, нужно дать пользователю внести свои значения - дополнить словарь, если он не нашёл в нём перевода нужного слова.

За это отвечает функция newRecord() , которая предлагает ввести новые ключ и значение, а затем записывает их в базу данных и обновляет её.

Что означает последняя запись? Она работает, когда запускается программа и предлагает различные варианты. Если пользователь ввёл в ответ 'y' — ищет перевод русского слова на английский, если 'n' — ищет перевод английского слова на русский, если 'u' (update) — позволяет внести свои значения.

Наш словарь отрабатывает один раз и программа закрывается. Можно спрашивать о действиях снова и снова, для этого достаточно заключить инструкции в цикл while . Можно добавить графическое представление программы или "веб-морду". Но это уже совсем другая история и для примера простой программы она не подойдёт.


Программа-переводчик
import requests def get_translation(text,lang): URL =.

Программа переводчик в простом виде
Требуется создать программу переводчик в простом виде. Сначала нужно создать словарь с переводом.


Программа переводчик API ошибка с r.json()
Программа переводчик с русского на английский import requests URL_AUTH =.

Решение

Создайте программу переводчик
Создайте программу переводчик с русского на китайский

Переводчик
import requests import json print("Введите слово!") text = input("Enter: ") url =.

Переводчик без морфоанализатора
Здравствуйте! Помогите пожалуйста! Хочу на питоне реализовать следующую задачу: имеется словарь.


Переводчик на python через google translate
Делаю скрипт который бы переводил текст используя google translate и столкнулся с такой проблемой.

Бот-переводчик с записью и отправкой файла
Хочу сделать бота для своих нужд. Суть заключается в следующем, в текстовом файле записано.

Перевод текста с помощью Google Translate API в Python


Если вы не прятались под скалой, вы, вероятно, много раз использовали Google Translate. Всякий раз, когда вы пытаетесь перевести слово или предложение с определенного языка на другой, именно API Google Translate предоставляет вам желаемые результаты в фоновом режиме. Хотя вы можете переводить что угодно, просто перейдя на веб-страницу Google Translate, вы также можете интегрировать Google Translate API в свои веб-приложения или программы для ПК. Самое лучшее в API — это то, что он чрезвычайно прост в настройке и использовании.

На самом деле вы можете многое сделать с помощью Google Translate API, начиная от определения языков и заканчивая простым переводом текста, настройкой исходного и целевого языков и переводом целых списков текстовых фраз. В этой статье вы узнаете, как работать с Google Translate API на языке программирования Python.

Установка Google Translate API

Прежде чем вы сможете работать с Google Translate API в Python, вам нужно будет установить его. Существует два разных способа установки API. Первый способ прост. Просто зайдите в терминал и используйте pip для установки API, как и для любой другой библиотеки Python. Для этого введите в своем терминале следующую команду:

Нажмите Enter и модуль Python для Google Translate API будет установлен в вашей системе.

Если вы установили дистрибутив Python для Anaconda, вы можете установить API с помощью Anaconda Prompt. В этом конкретном методе вы замените в приведенной выше команде pip на conda , как показано в следующем фрагменте кода:

Теперь, когда вы установили API, мы увидим его в действии с помощью нескольких примеров.

Список поддерживаемых языков

Google Translate API поддерживает множество языков. Чтобы вывести список всех поддерживаемых языков, запустите следующий скрипт:

В приведенном выше примере вы используете ключевое слово import для импорта модуля googletrans . Впоследствии вы можете перечислить все названия языков, напечатав атрибут LANGUAGES модуля googletrans .

При выполнении вышеприведенный фрагмент кода перечислит имена всех поддерживаемых языков вместе с их сокращенной записью. Вот как будет выглядеть вывод:

Основное использование

Основное использование Google Translate API — это, конечно, перевод слов или предложений с одного языка на другой. Для этого мы должны импортировать класс Translator из модуля googletrans .

Далее вы должны создать объект класса Translator .

Как только объект класса Translator создан, вы передадите текст на исходном языке в качестве параметра методу translate() объекта класса Translator() , как показано ниже:

В приведенном выше сценарии мы передаем финский текст методу translate() .

Метод translate() возвращает объект, содержащий информацию о переводе текста, источника и назначения языков и произношения текста. По умолчанию метод translate() возвращает английский перевод текста, переданного ему. В нашем случае объект, возвращаемый методом translate() , сохраняется в переменной result .

Объект, возвращаемый методом translate() , имеет следующие атрибуты:

Давайте напечатаем все вышеперечисленные атрибуты и посмотрим, что мы получим

Выходные данные показывают, что исходный язык — финский (fi), а язык назначения — английский (en). Переведенное предложение можно распечатать через атрибут text .

В приведенном выше примере мы не указали исходный язык. Поэтому Google Translate API пытается определить исходный язык. Аналогично, мы также не указали ни одного языка назначения, и поэтому API перевел исходный язык на язык по умолчанию, английский. Но что, если вы хотите указать исходный и целевой языки?

Указание исходного и целевого языков

На самом деле, очень легко указать язык назначения и исходный язык в Google Translate API. Вот код, который вы будете использовать для передачи только исходного языка:

Чтобы добавить только целевой язык, вы должны добавить атрибут dest , за которым следует код языка:

Вы также можете передать исходный и целевой языки одновременно:

Давайте теперь переведем финское предложение на французский, а затем напечатаем исходный и целевой языки, а также переведенный текст. На этот раз мы укажем исходный и целевой языки.

Приведенный выше фрагмент кода даст следующий результат.

Перевод списка фраз

Также можно перевести список текстовых фраз с помощью Google Translate API. Основной процесс такой же, как описано выше. Вам просто нужно передать список, содержащий фразы, в качестве параметра метода translate() . Это полезно для того, чтобы пакет фраз переводился отдельно, но все в одном вызове API.

Давайте создадим список строк, содержащих некоторые фразы из французского языка.

Теперь пришло время вызвать метод translate() и передать в качестве параметров список, исходный язык и язык назначения.

В приведенном выше сценарии исходный язык — французский, а язык назначения — суахили.

Метод translate() возвращает список объектов, если вы передаете список фраз к нему. Каждый объект в списке, возвращаемый методом translate() , соответствует каждой фразе в списке ввода, который должен быть переведен. Лучший способ найти перевод каждой входной фразы в списке — это перебрать список выходных объектов. Затем вы можете использовать text , origin , src и другие атрибуты отдельных объектов, чтобы увидеть перевод отдельных фраз в списке ввода.

В приведенном ниже сценарии мы перебираем список объектов, возвращаемых методом translate() , а затем печатаем источник и переведенный текст:

Следующий результат будет отображаться на экране.

Перевод текстовых документов

Вы также можете переводить текстовые документы через Google Translate API. Все, что вам нужно сделать, это прочитать текстовый файл в Python, используя метод open , прочитать текст и передать его в метод translate() .

Далее вы можете использовать метод f.read() для чтения содержимого файла. Содержимое файла может быть сохранено в любой переменной. В нашем случае имя переменной будет contents .

Мы также напечатаем переменную contents , чтобы проверить, правильно ли Python читает текстовый файл:

Вот вывод содержимого файла:

Убедитесь, что у вас есть вышеуказанный контент в вашем текстовом файле, если вы хотите следовать нашему примеру.

Мы убедились, что Python обращается к текстовому файлу и читает его. Теперь мы переведем результат, импортировав тот же старый класс Translate , что и раньше.

Следующим шагом является передача переменной contents , содержащей входной текст, в функцию translate() . Наконец, напечатайте атрибут text объекта, возвращенного методом translate() , и вы получите переведенную строку.

Вывод должен выглядеть следующим образом:

В приведенном выше примере мы использовали менеджер контекста with для автоматического открытия и закрытия потока записи. Во-вторых, мы открыли файл в режиме записи. Наконец, мы использовали метод write() для записи переведенной строки в новый файл.

Вывод

Google Translate — это инструмент с API, который помогает вам выполнять множество различных функций, связанных с переводом. Мы только поцарапали поверхность с приведенными выше примерами. Вам предлагается практиковать API, а также изучать и понимать, как использовать его в реальных приложениях.

Пишем консольный переводчик для *nix на Python

Здравствуйте. Наверняка Вам встречались незнакомые английские слова или фразы, и Вам постоянно приходилось лезть в браузер, открывать сайт с онлайн переводчиком и переводить, при этом думая как хорошо было бы, если это было реализовано бы в виде софта под *nix.

Под операционные системы семейства Windows существует уже давно много переводчиков, а вот для unix систем, лично я, пока не встречал.

На старт!

После того как скачали, можете либо установить в систему, либо положить папку simplesjon расположенную в архиве рядом с нашим исполняемым python файлом.

Раздобыли simplejson? Теперь создадим файл translate.py и перейдём от теории к практике.
Программировать можно в чём угодно, хоть в nano, но я предпочитаю редактор Geany.

  • ..
  • simplejson/
  • __init__.py
  • decoder.py
  • encoder.py
  • scanner.py
  • tool.py

Библиотеку мы трогать не будем, поэтому переходим к файлу translate.py:
Делаем импорт необходимых нам библиотек:

Самая главная и единственная функция

На всякий случай опубликую весь код целиком:

На этом разработка программной части закончена. Можете проверить и запустить файл таким образом:
python translate.py en привет — переведёт текст на английский
python translate.py ru hello — переведёт текст на русский

Решение

Возьмём папку с проектом и переместим её какую нибудь директорию например в /usr/share
и получится у нас /usr/share/translate

Затем в вашем BINDIR’e (у меня на debian — /usr/bin) создадим 2 файла, en и ru:

Сожержимое файла /usr/bin/ru:
Сожержимое файла /usr/bin/en:

python /usr/share/translate/translate.py en $$*

Итого:

В нашей системе теперь появилось 2 новые команды: en и ru соответственно.
Теперь пользоваться стало на много удобнее: en текст для перевода или же ru текст для перевода

Можно заюзать еще вот так:

Минусы:

Практически у любой программы есть свои минусы: у этой — это отсутствие локальной базы данных, весь перевод осуществляется через интернет. Но в век интернет-технологий, когда интернет в каждом доме — я думаю это не проблема.

Спасибо за внимание.

UPD: Я никому не навязываю своё мнение, я показал как реализовал это я

Если вы не прятались под камнем, вы, вероятно, использовали Google Translate много раз в своей жизни. Всякий раз, когда вы пытаетесь перевести слово или предложение с одного языка на другой, именно API Google Translate дает вам желаемые результаты в фоновом режиме. Хотя вы можете перевести что угодно, просто перейдя на веб-страницу Google Translate, вы также можете интегрировать Google Translate API в свои веб-приложения или настольные программы. Самое лучшее в API - это то, что его чрезвычайно легко настроить и использовать.

На самом деле вы можете делать много вещей с помощью Google Translate API, начиная от определения языков и заканчивая простым переводом текста, настройкой исходного и целевого языков и переводом целых списков текстовых фраз. В этой статье вы увидите, как работать с Google Translate API на языке программирования Python.

Установка Google Translate API

Прежде чем вы сможете работать с Google Translate API в Python, вам необходимо установить его. Есть два разных метода установки API. Первый метод прост. Просто перейдите в терминал и используйте pip для установки API, как и для любой другой библиотеки Python. Для этого введите в терминале следующую команду:

Нажмите [Enter,] и модуль Python для Google Translate API будет установлен в вашей системе.

Если вы установили дистрибутив Python для Anaconda, вы можете установить API с помощью Anaconda Prompt. В этом конкретном методе вы замените pip в приведенной выше команде на conda , как показано в следующем фрагменте кода:

Теперь, когда вы установили API, мы увидим его в действии на нескольких примерах.

Список поддерживаемых языков

Google Translate API поддерживает множество языков. Чтобы вывести список всех поддерживаемых языков, запустите следующий скрипт:

В приведенном выше примере вы используете import ключевого слова для импорта модуля googletrans Впоследствии, вы можете перечислить имена всех языков, напечатав LANGUAGES атрибут googletrans модуля.

При выполнении приведенный выше фрагмент кода перечислит все имена поддерживаемых языков вместе с их сокращенной нотацией. Вот как будет выглядеть результат:

Основное использование

Основное использование Google Translate API - это, конечно, перевод слов или предложений с одного языка на другой. Для этого нам нужно импортировать класс Translator из модуля googletrans

Далее вам необходимо создать объект класса Translator

После того , как объект класса Translator будет создан, вы будете передавать текст в исходном языке в качестве параметра для translate() метод в Translator() объекта класса, как показано ниже:

В приведенном выше скрипте мы передаем финский текст методу translate()

Метод translate() возвращает объект, содержащий информацию о переведенном тексте, исходном и целевом языках, а также о произношении текста. По умолчанию метод translate() возвращает английский перевод переданного ему текста. В нашем случае объект, возвращаемый методом translate() сохраняется в переменной result

Объект, возвращаемый методом translate() имеет следующие атрибуты:

Давайте распечатаем все указанные выше атрибуты и посмотрим, какой результат мы получим:

Выход:

Выходные данные показывают, что исходным языком является финский (fi), а языком назначения - английский (en). Переведенное предложение можно распечатать с помощью атрибута text

В приведенном выше примере мы не указали исходный язык. Таким образом, Google Translate API пытается сам определить исходный язык. Точно так же мы не указали какой-либо целевой язык, и, таким образом, API перевел исходный язык на английский язык по умолчанию. Но что, если вы хотите указать как исходный, так и целевой языки?

Указание исходного и целевого языков

На самом деле очень легко указать как целевой, так и исходный языки в Google Translate API. Вот код, который вы будете использовать для передачи только исходного языка:

Чтобы добавить только целевой язык, вам нужно добавить dest , за которым следует код языка:

Вы также можете передать исходный и целевой языки одновременно:

Давайте теперь переведем финское предложение на французский, а затем распечатаем исходный и целевой языки, а также переведенный текст. На этот раз мы укажем исходный и целевой языки.

Приведенный выше фрагмент кода даст следующий результат.

Перевод списка фраз

Также можно перевести список текстовых фраз с помощью Google Translate API. Основной процесс такой же, как описано выше. Вам просто нужно передать список, содержащий фразы, в качестве параметра методу translate() Это полезно, если пакет фраз переводится отдельно, но все в одном вызове API.

Создадим список строк, содержащих фразы из французского языка.

Теперь пора вызвать метод translate() и передать список, исходный язык и целевой язык в качестве параметров.

В приведенном выше сценарии исходным языком является французский, а языком назначения - суахили.

Метод translate() возвращает список объектов, если вы передаете ему список фраз. Каждый объект в списке, возвращаемом методом translate() соответствует каждой фразе во входном списке, которую нужно перевести. Лучший способ найти перевод каждой входной фразы в списке - перебрать список выходных объектов. Затем вы можете использовать text , origin , src и другие атрибуты отдельных объектов, чтобы увидеть перевод отдельных фраз в списке ввода.

В приведенном ниже скрипте мы перебираем список объектов, возвращаемых методом translate() а затем печатаем исходный и переведенный текст:

На экране отобразится следующий результат.

Перевод текстовых документов

Вы также можете переводить текстовые документы с помощью Google Translate API. Все, что вам нужно сделать, это прочитать текстовый файл в Python с помощью open , прочитать текст и передать его методу translate()

Затем вы можете использовать метод f.read() для чтения содержимого файла. Содержимое файла можно сохранить в любой переменной. В нашем случае имя переменной будет contents.

Мы также распечатаем contents чтобы проверить, правильно ли Python читает текстовый файл:

Вот вывод содержимого файла:

Убедитесь, что в вашем текстовом файле есть указанное выше содержимое, если вы хотите следовать нашему примеру.

Мы убедились, что Python обращается к текстовому файлу и читает его. Теперь мы переведем результат, импортировав тот же старый Translate раньше.

Следующим шагом является передача contents содержащей вводимый текст, в функцию translate() Наконец, распечатайте text атрибут объекта, возвращенный методом translate() и вы получите переведенную строку.

Результат должен выглядеть следующим образом:

В приведенном выше примере мы использовали диспетчер контекста with чтобы автоматически открывать и закрывать поток записи. Во-вторых, мы открыли файл в режиме записи. Наконец, мы использовали метод write() для записи переведенной строки в новый файл.

Заключение

Google Translate - это инструмент с API, который помогает вам выполнять множество различных функций, связанных с переводом. Приведенные выше примеры коснулись лишь поверхности. Вам предлагается попрактиковаться в API, а также изучить и понять, как его использовать в реальных приложениях.

Довольно давно возникла необходимость в мультиязычном онлайн переводчике при закрытом браузере.

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

Яндекс.переводчик для Linux на Python GUI Python, Linux, Gui, Habr, Длиннопост

Translate-shell вещь достаточно удобная, особненно, если пишешь, допустим, в Vi/vim. Переключился в соседнюю консоль и переводи.

Ключи простейшие и запоминаются легко.

Яндекс.переводчик для Linux на Python GUI Python, Linux, Gui, Habr, Длиннопост

Но этого как обычно было мало. Захотелось графики.

Работа в SublimeText и Zeal несколько удобней, нежели голая консоль.

Яндекс.переводчик для Linux на Python GUI Python, Linux, Gui, Habr, Длиннопост

Хм… Подумал-подумал, и решил прикрутить переводчик на горячую клавишу.

Выбор пал на gxmessage. Zenity меня не устроил, уж и не помню почему.

Был написан код:

Яндекс.переводчик для Linux на Python GUI Python, Linux, Gui, Habr, Длиннопост

Некоторое время меня это устраивало. На "контрол+1" с английского, "контрол+2" на английский. Хорошо.

Яндекс.переводчик для Linux на Python GUI Python, Linux, Gui, Habr, Длиннопост

Но тут translate-shell начал давать сбои.

Яндекс.переводчик для Linux на Python GUI Python, Linux, Gui, Habr, Длиннопост

Не знаю, что произошло у разрабов, но меня это совсем огорчило.

Я решил, пора, давно на питоне не писал.

Недолгие поиски в гугл привели меня к Yandex.API, Python и GTK+ 3 в виде модуля gi.

Почему gi, ведь обычно писал на PyQt5? Он на моей машине работает значительно быстрее. Машина не новая, памяти тоже(по современным меркам) не ахти.

Яндекс.переводчик для Linux на Python GUI Python, Linux, Gui, Habr, Длиннопост

Модуль GTK+ 3 для python был для меня вновинку. Целый вечер разбирался с синтаксисом на сайтах раз, два и три.

В итоге имею автопереводчик на горячей клавише.

Всем спасибо за внимание.


Программирование на python

233 поста 7.8K подписчиков

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!

Приветствуется:

• уважение к читателям и авторам

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт

Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

Иллюстрация к комментарию

Кстати, хороший пример, когда пост можно добавить в 2 сообщества "программирование на Python" и "IT проекты Пикабушников". @admin запилите уже этот функционал

Кстати, тоже нуждаюсь в этой фиче и давно хочу найти время и допилить свой лаунчер программ на qt, чтоб он не только запускал программы и считал на калькуляторе, но ещё и умел переводить, конвертировать валюты, гуглить и т.д.


Разработчик предложил устроить коммунистическую революцию в Python, объединив все классы и сделать их равными

Разработчик предложил устроить коммунистическую революцию в Python, объединив все классы и сделать их равными Habr, Python, Программирование, IT юмор


Как случайно написать Web-GUI для Haproxy

Как случайно написать Web-GUI для Haproxy Системное администрирование, IT, Linux, Gui, Nginx, Web, Истории из жизни, Длиннопост

Как случайно написать Web-GUI для Haproxy Системное администрирование, IT, Linux, Gui, Nginx, Web, Истории из жизни, Длиннопост

Ручки зачесались, глазки загорелись и я приступил. Точнее начал думать на чем писать, вспоминать давно-давным забытый PHP, как-то не хотелось, да и казалось, что он не совсем подходит для этого дела. В итоге выбор пал на Python, в будущем точно пригодится подумал я и началось впитывание информации.

В начале задачи стояли не такие уж и сложные: возможность редактировать конфиги из веб интерфейса из одной точки входа, сохранения предыдущих версий конфигов. Данный, не особо большой функционал получилось реализовать достаточно быстро, но тут во мне взыграла то ли админская лень, то ли пресловутый перфекционизм и мне этого показалось конечно же мало. И тут начали появляться такие фичи как: сравнение двух конфигов, логирование всех действий связанных с конфигами, Runtime API и добавления секций, через web.

Как случайно написать Web-GUI для Haproxy Системное администрирование, IT, Linux, Gui, Nginx, Web, Истории из жизни, Длиннопост

И как порядочный UNIX администратор живущий за счет свободного ПО я решил поделится с миром, а в друг кому-то пригодится? Но для этого надо было сделать все так, чтобы не приходилось лазить в код, но максимум в конфиг приклады(Сейчас большинство настроек переехало в базу. Как по мне их стало удобней редактировать и при обновлении не будет ошибок из-за отсутствия в конфиге какого-либо параметра).

Читайте также: