· 4 years ago · Mar 16, 2021, 01:10 PM
1<?php
2
3/**
4 * Class for sending get requests using CURL
5 */
6class CURLRequest
7{
8 /**
9 * Method to make get request
10 *
11 * @param string $endpoint url to send request
12 * @param array $data associative array of request parameters
13 *
14 * @return void
15 */
16 public static function get($endpoint, $data)
17 {
18 $params = http_build_query($data);
19 $url = $endpoint . '?'. $params;
20 $ch = curl_init($url);
21
22 $opts = [
23 CURLOPT_RETURNTRANSFER => true,
24 CURLOPT_SSL_VERIFYPEER => false,
25 CURLOPT_HEADER => false
26 ];
27
28 curl_setopt_array($ch, $opts);
29
30 $response = curl_exec($ch);
31 curl_close($ch);
32
33 return $response;
34 }
35}
36
37
38/**
39 * Class for translate text using Yandex Translator API
40 */
41class Translation
42{
43 /** @constant BASE_URL Yandex Translator API endpoint */
44 const BASE_URL = 'https://translate.yandex.net/api/v1.5/tr.json/';
45
46 /** @var string $key Yandex Translator API key */
47 private $key = 'API_KEY_HERE';
48
49
50 /**
51 * Class constructor
52 */
53 public function __construct()
54 {
55 if (empty($this->key)) {
56 throw new Exception('API Key is required!');
57 }
58 }
59
60
61 /**
62 * Method to get base api url
63 *
64 * @return string api url
65 */
66 public function getBaseUrl()
67 {
68 return self::BASE_URL;
69 }
70
71
72 /**
73 * Method to translate text $text in $lang language
74 *
75 * @param string $text text to translate
76 * @param string $lang language code (ISO_639-1)
77 * @param format $format text format (default: 'plain' for plain text)
78 */
79 public function translateText($text, $lang, $format='plain')
80 {
81
82 $url = $this->getBaseUrl() . 'translate';
83
84 $values = [
85 'key' => $this->key,
86 'text' => $text,
87 'lang' => $lang,
88 'format' => $format
89 ];
90
91 $response = json_decode(CURLRequest::get($url, $values));
92
93 if ($response->code == 200) {
94 return $response->text;
95 } else {
96 return $response->message;
97 }
98 }
99}
100
101
102// using
103$t = new Translation();
104$result = $t->translateText('Text', 'en');
105echo $result;