Найти тему
Кузница стартапов

Как перевести OpenCart на 4 языка за 5 минут (Часть 1)

Оглавление
Вылитый я
Вылитый я

Возникла у меня для одного интернет-магазина необходимость сделать перевод на четыре языка стран СНГ - азербайджанский, армянский, киргизский и казахский. Погуглив, я не обнаружил ни платных, ни бесплатных решений. Уже отчаявшись я чуть не начал переводить все вручную с помощью google translate, но мания автоматизировать все что можно и нельзя заставила меня вспомнить о наших крутых соотечественниках: у Яндекс.Перевочдчика есть вполне нормальный и условно бесплатный API.

Условно бесплатный, потому что есть ограничения, превышая которые придется отдать какую-то денежку:

2.3. Яндекс оставляет за собой право устанавливать любые лимиты и ограничения, включая далее перечисленное, но не ограничиваясь этим:
на объем переводимого текста - в размере до 1 000 000 символов в сутки, но не более 10 000 000 символов месяц.

В общем, задача ясна: нужно перевести сайт с русского языка на 4 других, не превысив лимит в миллион символов в сутки и 10 миллионов символов в месяц. Ну что ж, была не была!

API-ключ

Для начала нам нужно вооружиться API ключом для общения с переводчиком. Идем сюда, и создаем ключ:

Страница создания ключа для API Яндекс.Переводчика
Страница создания ключа для API Яндекс.Переводчика

JSON- и JSONP-интерфейсы

Прежде чем начать непосредственную работу с API, следует изучить ответ функции translate, которая, собственно, и переводит нужный нам текст в нужный нам язык:

Ответ возвращается в формате JSON. Если задан параметр callback, JSON-объект оборачивается в функцию, с названием, указанным в этом параметре (JSONP).

Синтаксис запроса
https://translate.yandex.net/api/v1.5/tr.json/translate
? [key=<API-ключ>]
& [text=<переводимый текст>]
& [lang=<направление перевода>]
& [format=<формат текста>]
& [options=<опции перевода>]
& [callback=<имя callback-функции>]

Нам, в принципе, хватит и этого. За подробной документаций нужно нужно перейти по ссылке.

Мы будем отправлять запрос с тремя параметрами:

1. key - наш ключ, который мы создали ранее

2. lang - с какого языка на какой нужно перевести текст (например ru-en)

3. format - формат текста. Мы будем использовать plain

Тестовая функция переводчика

Давайте набросаем тестовую функцию, которая будет переводить фразу "Привет, мир!" на английский язык.

Немного поигравшись с API выяснилось, что в ответ на запрос Яндекс.Переводчик присылает следующие данные:

1. code - в случае успеха будет 200

2. lang - информация о переводе

3. text - переведенный текст

Реализуем простую функцию перевода фразы "Привет, мир!" на английский язык:

Функция перевода фразы "Привет, мир!" на английский язык
Функция перевода фразы "Привет, мир!" на английский язык

Здесь ничего сложного. С помощью UriBuilder собираем наш url для запроса, создаем запрос с помощью WebRequest.Create() и выполняем его методом GetResponse(). Ну и считываем полученные данные, конечно же.

Давайте заюзаем нашу функцию:

Вызываем нашу функцию из Main и выводим в консоль
Вызываем нашу функцию из Main и выводим в консоль

И посмотрим, что из этого вышло:

Вернул json ответ с переведенной фразой
Вернул json ответ с переведенной фразой

Отлично! Мы получили ответ в формате JSON с кодом 200 и переведенной фразой.

На этом первая часть статьи подошла к концу. В следующей части мы посмотрим структуру локализации движка OpenCart, попытаемся ее распарсить и перевести в автоматическом режиме.

Нажмите "Понравилось" - мы будем знать, что написать для вас в следующий раз
Подпишитесь на канал - наши статьи для вас будут попадаться чаще
Подпишитесь на наш паблик ВК - потому как там все самое интересное
Поделитесь с друзьями - это может быть интересно другим!