- •Курсовая работа
- •3 Разработка основных модулей приложения 7
- •1. Техническое Задание
- •2.Описание и обоснование
- •2.1 Выбор технологии разработки приложение
- •3 Разработка основных модулей приложения
- •3.1 Модуль работы с сервисом перевода текста
- •3.2 Модуль работы с сервисом словаря
- •3.3 Модуль работы с базой данных
- •4 Разработка основного функционала
3 Разработка основных модулей приложения
Для полноценной реализации переводчика, нужны модули, отвечающие за:
Модуль работы с сервисом перевода текста (API Яндекс Переводчик)
Модуль работы с сервисом словаря (API Яндекс Словарь)
Модуль работы с базой данных (SQLite)
3.1 Модуль работы с сервисом перевода текста
Для перевода текста используется сервис (API Яндекс Переводчик).
При переводе текста отправляется GET или POST запрос с синтаксисом:
https://translate.yandex.net/api/v1.5/tr.json/translate ?
key=<API-ключ>
& text=<переводимый текст>
& lang=<направление перевода>
& [format=<формат текста>]
& [options=<опции перевода>]
& [callback=<имя callback-функции>]
Ответ возвращается в формате JSON. Если задан параметр callback, JSON-объект оборачивается в функцию, с названием, указанным в этом параметре (JSONP).
В модуле отвечающим за перевод текста имеется всего один метод.
Метод translate имеющий аргументы:
Text - Текст перевода
Lang - Язык перевода. Пример (ru-en,ru)
Callback - Возвращение результата перевода
errorCallback - Возвращение ошибки перевода
Листинг модуля:
public class Translator { private final Context context; public Translator (Context context) //Конструктор класса принимающий контекст приложения { this.context = context; } /** Yandex Translator Api KEY */ private static final String apiKey = "trnsl.1.1.20170319T102022Z.3c57ab893ab2ff9d.7790251552d1ad674f87d15327e4175ee8de83da"; /** Языки перевода */ public final static String[] langsCode = {"en", "ru", "az", "sq", "am", "ar", "hy", "af", "eu", "ba", "be", "bn", "bg", "bs", "cy", "hu", "vi", "ht", "gl", "nl", "mrj", "el", "ka", "gu", "da", "he", "yi", "id", "ga", "it", "is", "es", "kk", "kn", "ca", "ky", "zh", "ko", "xh", "la", "lv", "lt", "lb", "mg", "ms", "ml", "mt", "mk", "mi", "mr", "mhr", "mn", "de", "ne", "no", "pa", "pap", "fa", "pl", "pt", "ro", "ceb", "sr", "si", "sk", "sl", "sw", "su", "tg", "th", "tl", "ta", "tt", "te", "tr", "udm", "uz", "uk", "ur", "fi", "fr", "hi", "hr", "cs", "sv", "gd", "et", "eo", "jv", "ja"};
/** * Метод перевода текста * @param text Текст перевода * @param lang Язык перевода. Пример (ru-en,ru) * @param callback Возвращение результата перевода * @param errorCallback Возвращение ошибки перевода */ public void translate(String text,String lang,Response.Listener<String> callback, Response.ErrorListener errorCallback) { RequestQueue queue = Volley.newRequestQueue(context); /** Новый запрос */ queue.cancelAll(new RequestQueue.RequestFilter() { //Stop all request @Override public boolean apply(Request<?> request) { return true; } }); /** Отмена всех запросов */ String url = String.format("https://translate.yandex.net/api/v1.5/tr.json/translate?key=%s&text=%s&lang=%s" ,apiKey, Uri.encode(text),lang); /** Создание URL запроса */ StringRequest stringRequest = new StringRequest(Request.Method.GET, url,callback,errorCallback); queue.add(stringRequest); /** Добавление в очередь */ } }
