Робота з api яндекс перекладача - програмування на c, c # і java

Навчимося роботі з API на мові програмування C #. У цьому уроці ми напишемо програму в Visual Studio на Windows Forms, яка буде перекладати текст з російської мови на англійську і назад за допомогою веб-запитів до API Яндекс Перекладача. Також можна завантажити исходник, розробленої програми.







Що таке API?

API (скорочення від англійського Application Programming Interface) - це інтерфейс програмування додатків. Інтернет-сервіси, бібліотеки, операційна система і ін. Надають розробникам інтерфейси для взаємодії зі своїми наборами готових класів, методів і даних. В результаті цього ми можемо в своїх додатках використовувати функції інших інтернет-сервісів.

Чому Яндекс, а не Google?

Яндекс Перекладач надає безкоштовне API, а в Google Translate - воно платне: 20 $ за кожен мільйон перекладаються символів.

Робота з api яндекс перекладача - програмування на c, c # і java

Варто сказати, що є демо період. Так що якщо цікавитеся, то можливість спробувати є.

Отримання API-ключа

Насамперед нам необхідно отримати ключ. який дозволить працювати з API Яндекс Перекладача. В інших сервісах ключ може називатися токеном доступу.

Робота з api яндекс перекладача - програмування на c, c # і java

Потім ключ буде успішно створений:

Робота з api яндекс перекладача - програмування на c, c # і java

Скопіюйте його собі і збережіть, потім він нам знадобиться. Нікому не кажіть свій ключ. Буде погано, якщо хтось ним скористається. Якщо все-таки це сталося - є можливість його заблокувати, а потім отримати новий.

На безкоштовний ключ, який ми тільки що отримали, існують обмеження Яндекса (далі цитата з Правил користування) "на обсяг тексту, що перекладається - в розмірі до 1 000 000 символів на добу, але не більше 10 000 000 символів місяць". Якщо потрібно більше - то для цього існують платні тарифи на API.

Проектування інтерфейсу програми

На початку давайте домовимося про направлення перекладу: програма буде виконувати переклад з російської мови на англійську і назад.

Створіть в Visual Studio новий проект Windows Forms на мові програмування C #.

Як і в класичному інтерфейсі перекладача, знайомого кожному з нас, нам знадобиться: два текстових поля (TextBox) і кнопка (Button) "Перевести". Крім того, помістимо на форму елемент управління GroupBox і в нього додамо два перемикача RadioButton - тим самим ми забезпечимо їх узгоджену роботу (обраним завжди залишається тільки один). Ось, що повинне вийти:







Робота з api яндекс перекладача - програмування на c, c # і java

Розмір шрифту ми встановили рівним 11 пунктів. В контролі TextBox параметр Multiline зробили рівним true - це дозволить виконувати в текстом поле перенесення рядка.

Створення інтерфейсу програми для роботи через API завершено.

написання коду

Створимо клас, який буде виконувати роботу з Яндекс API Перекладача за допомогою web-запитів. Назвемо клас YandexTranslator.

Клас містить єдиний метод public string Translate (string s, string lang). Метод приймає в качетве аргементов: рядок s - вихідний текст для перекладу, рядок lang - напрямок перекладу (наприклад, ru-en - російсько-англійський). Повертає метод рядок з переведеним текстом.

Код класу YandexTranslator:

Написання програми для роботи з API Яндекс Перекладача на Windows Forms і мовою C # завершено!

Завантажити исходник програми або перейти до головного сховища на GitHub:

Структура web-запиту до API

Запит до API перекладача містить ряд обов'язкових параметрів - це: key = text =<переводимый текст> lang =<направление перевода>. Необов'язкові параметри, такі як формат і опції перекладу, ми використовувати не стали.

Запит до Яндекс API повертає відповідь у вигляді структури JSON.

Повна інформація про запити до API Яндекс Перекладача, їх параметрах і відповідях сервера є в офіційній документації.

десеріалізацію JSON

JSON можна десеріалізовать (розпарсити), наприклад, за допомогою класів з бібліотеки Newtonsoft.Json на C # (в прикладі програми з даної статті так і зроблено). Бібліотеку ви можете завантажити і підключити до проекту за допомогою системи управління пакетами NuGet в Visual Studio. Для цього на вирішенні натисніть правою кнопкою миші і виберіть "Управління пакетами NuGet для вирішення ...":

Робота з api яндекс перекладача - програмування на c, c # і java

Потім в рядку пошуку введіть ім'я бібліотеки "Newtonsoft.Json" і з результатів пошуку встановіть компонент Json.NET.

Робота з api яндекс перекладача - програмування на c, c # і java

Також в коді потрібно за допомогою директиви using підключити відповідний простір імен.

Привіт, можливо ви допоможете або підкажіть в який бік рити. У випадках, коли перекладаю в російської на англійську приходить помилка 400 від сервера Яндекса.
Як можна виправити?
На Java застосовуємо URLEncoder.encode (text, "UTF-8"), а ось на C #?

Можливо текст містить неприпустимі символи. Або на Java все нормально, проблеми з C #? Текст великого розміру переводите?

Я намагаюся перевести "Привіт", справа в тому що в Вашому коді немає приведення кодування, коли Ви переводите російські символи, вони не підтримуються.
Тому треба додати Uncoder.
Це ж саме мені відповіли на підтримку Яндекса

Щоб поміняти кодування спробуйте використовувати вираз:

Де s - це потрібний рядок.

Замість Unicode можна також вибирати: ASCII, UTF32, UTF7, UTF8 та Default.

а чому при скопійованому тексті будь-якої довжини і переведення його відбувається помилка 400 (An unhandled exception of type 'System.Net.WebException' occurred in System.dll

Additional information: Віддалений сервер повернув помилку: (400) Неприпустимий запит.)

Швидше за все це відбувається через те, що перекладається текст містить неприпустимі символи.

Спасибі за відмінний приклад.
По всій видимості, це єдине повністю робочий рішення з обробкою JSON на C #, яке можна взяти за основу для вивчення.







Схожі статті