Мирза Переводчик дает вам возможность легко переводить текст и манипулировать им с помощью API Яндекс.Переводчика.
Давайте настроим это очень быстро, всего за три шага!
Перейдите в папку установки Laravel через терминал/cmd и запустите composer require yak0d3/ Mirza_Yandex_Translator
или добавьте "yak0d3/ Mirza_Yandex_Translator ": "^1.0.0"
вручную в ваш composer.json
.
Опубликуйте файл конфигурации одним из следующих способов:
php artisan vendor:publish --provider="yak0d3 Mirza_Yandex_Translator TMirzaServiceProvider"
php artisan vendor:publish
и введите номер после yak0d3 Mirza_Yandex_Translator TMirzaServiceProvider
затем нажмите Enter
Добавьте переменную среды в ваш .env
файл с именем YANDEX_API
и установите ее значение в свой собственный ключ API Яндекс.Переводчика. ( например, YANDEX_API=MY_YANDEX_API_KEY
)
Примечание . Вы можете получить БЕСПЛАТНЫЙ API-ключ в Личном кабинете разработчика Яндекс.Переводчика.
Краткое руководство по использованию предназначено только для объяснения основных принципов использования этого пакета. Для получения списка методов и соответствующей информации (параметры, тип возвращаемого значения и т. д.) перейдите к разделу методов или перейдите к разделам директив, чтобы просмотреть список доступные директивы blade
.
Mirza::detectLanguage('Welcome');
en
Mirza::translate('Hello','es');
"Hola"
Mirza::translateTo('Hello World!',['es', 'tr', 'fr']')
{
" originalText ": " Hello World! " ,
"originalLanguage": "en",
"text": {
"es": " Hola Mundo! " ,
"tr": " Merhaba D u00fcnya ! " ,
"fr": " Bonjour Tout Le Monde!"
}
}
Примечание. Вы можете декодировать эту строку с помощью функции
json_decode
.
$textArray = ['Hello','My Dear','Friend'];
Mirza::translateArray($textArray,'fr');
[
{
" originalText ": "Hello",
"translatedText": "Bonjour"
},
{
"originalText": "My dear",
"translatedText": "Mon cher"
},
{
"originalText": "Friend",
"translatedText": " Ami"
}
]
Примечание. Вы можете декодировать эту строку с помощью функции
json_decode
.
Все еще не поняли? Взгляните на документацию ниже, и путаница исчезнет!
Давайте его администрировать, не каждому здесь будет легко начать использовать этот пакет, поэтому давайте попробуем понять, что происходит вместе. В этом разделе будет описано использование каждого метода, предоставляемого Мирзой Яндекс Переводчиком . Вот оглавление:
translate
translateArray
translateTo
detectLanguage
getSupportedLanguages
translateToAll
@translate
@yandex_rights
@languages_select
translate
Пример:
$ es_translation = Mirza::translate( ' Hello World! ' , 'es); //The first param is the text, the second one is the ISO code of the language
echo $es_translation; //This will output "Hola Mundo!"
translateArray
Обратите внимание , что все строки
json
необходимо декодировать с помощью функции PHPjson_decode
. Совет: Чтобы вернуть массив PHP, установите для второго аргументаjson_decode
значениеtrue
( например,json_decode($jsonString, true);
).
Если вы предпочитаете манипулироватьjson objects
, оставьте второй аргумент пустым или установите для него значениеfalse
.
Mirza::translateArray(['Hello', 'My Dear', 'Friend'],'fr');
этот метод переводит заданный массив текста, в который в нашем случае входит этот массив ['Hello', 'My Dear', 'Friend']
и переводит его на заданный язык, которым в нашем примере является французский.
Эта функция возвращает строку json encoded
, подобную следующей:
[
{
" originalText ": "Hello",
"translatedText": "Bonjour"
},
{
"originalText": "My dear",
"translatedText": "Mon cher"
},
{
"originalText": "Friend",
"translatedText": " Ami"
}
]
Как видите, выходная json string
находится в том же порядке, что и входной массив, теперь мы можем получить доступ к каждому из этих элементов, декодировав строку следующим образом:
$ jsonString = Mirza:: translateArray ([ ' Hello ' , ' My Dear ' , ' Friend ' ], ' fr ' ); //The json string
$ translationsArray = json_decode ( $ jsonString , true ); //Our PHP Array
$ first_translation = $ translationsArray [ 0 ][ ' translatedText ' ];
$ second_translation = $ translationsArray [ 1 ][ ' translatedText ' ];
$ third_translation = $ translationsArray [ 2 ][ ' translatedText ' ];
Легко, правда? Но это может стать проще, если вы установите для параметра $assoc значение true, чтобы вы могли получать доступ к переводам строк по их индексным именам (которые вы установили вручную). Здесь никто не запутается, вот пример:
$ textArray = [
' header ' => " Welcome to the Mirza Documentation Page " ,
' body ' => " The body is too long to be put in this item " ,
' footer ' => " Thank you for reading this! "
]; //Our associative text array
$ jsonString = Marzi:: translate ( $ textArray , ' es ' , true ); //Notice that i have set $assoc (third param) to `true`
$ translationsArray = json_decode ( $ jsonString , true );
//Now you can access the translations by their old index names
$ header = $ translationsArray [ ' header ' ][ ' translatedText ' ];
$ body = $ translationsArray [ ' body ' ][ ' translatedText ' ];
$ footer = $ translationsArray [ ' footer ' ][ ' translatedText ' ];
Примечание. Если вы установите
$assoc
значениеtrue
и предоставите последовательный массив, будет выдано исключение.
translateTo
: Этот метод (возможно) является обратной версией предыдущей функции: вместо того, чтобы брать array
строк, этот метод берет одну string
и переводит ее в массив языков. Пример:
$ jsonString = Mirza:: translateTo ( ' My awesome text ' , [ ' ar ' , ' tr ' , ' de ' ]);
Приведенный выше пример вернет json string
со следующей структурой:
[
{
" originalText ":"My awesome text",
"originalLanguage": "en",
"text":{
" ar":" u0628 u0644 u062f u064a u0627 u0644 u0646 u0635 u0631 u0647 u064a u0628 u0629 " ,
" tr":" M u00fcthi u015f metin",
" de " :"Meine wunderbare text"
}
}
]
Возможно, вы заметили, что некоторые символы имеют формат Unicode, не беспокойтесь, если вы
echo
их позже, они будут отображаться правильно.
Теперь мы можем легко декодировать эту json string
и получить доступ к нашим данным следующим образом:
$ translations = json_decode ( $ jsonString , true ); //Our PHP array
$ originalText = $ translations [ ' originalText ' ];
$ originalLanguage = $ translations [ ' originalLanguage ' ];
$ ar_translation = $ translations [ ' text ' ][ ' ar ' ];
$ tk_translation = $ translations [ ' text ' ][ ' tr ' ];
$ de_translation = $ translations [ ' text ' ][ ' de ' ];
detectLanguage
Иногда вам нужно определить, на каком языке написан текст, метод detectLanguage
создан именно для этого! Как указано в таблице методов, этот метод принимает один обязательный параметр и один необязательный. Необязательный параметр ( boolean $name
) позволяет нам переключаться между возвратом ISO-кода языка или имени языка.
Пример:
//Leave the $name param empty or set it to `false`
//To return the language ISO code
$ lang = Mirza:: detectLanguage ( ' Hello World! ' );
echo $ lang ; //Outputs "en"
//Setthe $name param to `true`
//To return the language ISO code
$ lang = Mirza:: detectLanguage ( ' Hello World! ' , true );
echo $ lang ; //Outputs "English"
getSupportedLanguages
.Этот метод не принимает никаких параметров (должен быть, но он будет добавлен в более поздней версии) и при выполнении возвращает список всех поддерживаемых языков.
Пример:
//Save the json encoded string to the `$supportedLanguages` variable
$ supportedLanguages = Mirza:: getSupportedLanguages ();
echo $ supportedLanguages ;
/* Outputs the json string in the following format:
[
{ 'lang_code' => 'lang_name' },
{ 'lang_code' => 'lang_name' },
]
*/
Я не хотел включать весь вывод, потому что он очень длинный, но если вам все еще интересно, я был к этому готов! Вот скриншот:
Давайте декодируем эту json string
и немного поиграем!
//Decode json string and wrap it into a PHP array
$ langsArray = json_decode ( $ supportedLanguages , true );
Допустим, у нас есть код языка, но мы не знаем, к какому языку он относится, в таком случае нам бы очень помогла эта строка:
echo $ langsArray [ ' tr ' ]; //Outputs "Turkish"
Теперь предположим, что у нас есть название языка, но мы не знаем код ISO: ЛЕГКО ЛЕГКО! Мы можем сделать это с помощью функции PHP array_flip
.
$ flippedArray = array_flip ( $ langsArray );
/* The values are now keys! Cool right? */
$ languageCode = $ flippedArray [ ' Sinhalese ' ];
echo $ languageCode ; //Outputs "si"
translateToAll
Пример:
//Save the json string to a variable
$ myStringInAllLanguages = Mirza:: translateToAll ( ' My string ' );
echo $ myStringInAllLanguages ;
/*Outputs a similar string to the `translateTo` method but
with all supported languages*/
@translate
: позволяет переводить заданный текст на заданный язык на ходу.
Пример:
@translate('Welcome', 'fr') <!-- Outputs "Bienvenue" -->
@yandex_rights
: Если вы читали требования Яндекс.Переводчика к использованию результатов перевода, то знаете, что эта директива будет очень полезна.
Вам необходимо указать color
в качестве первого аргумента и font-size
в качестве второго.
Пример:
@yandex_rights('black', '16px');
<!-- Output -->
< a href =' https://translate.yandex.com/ ' target =' _blank ' style =' font-size:16px;color:black; ' > Powered by Yandex.Translate </ a >
@languages_select
: генерирует HTML-код <select>
со списком всех поддерживаемых языков.Пример:
@languages_select
<!-- Output -->
< select >
< option value =" lang_code " > Lang_Name </ option >
< option value =" lang_code " > Lang_Name </ option >
< option value =" lang_code " > Lang_Name </ option >
</ select >
Все в Мирзе должно быть простым и читабельным, просто взглянув на исходный код, вы сразу поймете, что происходит. Но не волнуйтесь, я избавил вас от этой борьбы и составил таблицу, содержащую список методов, которые предоставляет Mirza Translator .
Метод | Параметры | Возврат | Броски | Описание |
---|---|---|---|---|
переводить | string $text string $lang Необязательно: string $format [html|plain] (Default: "Plain") | Нить | Исключение: если текст невозможно перевести. | Переводит заданный $text на заданный $lang (язык). |
перевести в | string $text array $langs | Строка (JSON) | Исключение: если один или несколько языков не поддерживаются. | Перевести заданный $text на несколько $langs (языков). |
перевестиМассив | array $textArray string $lang Необязательно: bool $assoc (Default: false) | Строка (JSON) | Исключение: 1. Если целевой язык не поддерживается. 2. Если для $assoc установлено значение true и данный массив не является ассоциативным. | Переводит $textArray (массив текста) в заданный $lang (язык).Примечание. Если для $assoc установлено значение true , возвращаемая строка json будет иметь те же имена индексов. |
обнаружить язык | string $text Необязательно: bool $langName | Нить | Исключение: 1. Если код языка не найден. 2. Если название языка не найдено | Определяет язык данного $text и возвращает код языка.Примечание. Если для $langName установлено значение true , вместо этого будет возвращено полное имя языка. |
getSupportedLanguages | Никто | Строка (JSON) | Исключение: если при попытке получить список поддерживаемых функций возникает неизвестная ошибка. | Возвращает строку json, содержащую список всех поддерживаемых языков. |
перевестиToAll | string $text | Строка (JSON) | Никто | Переводит строку ( $text ) на все поддерживаемые языки.Примечание. Это может занять некоторое время и вызвать PHP max_execution_time TIMEOUT Exception |
yandex_rights | Необязательно: string $color (Default: #fff) string $fontsize (Default: 14px) | Нить | Никто | Возвращает строку ссылки «На базе Яндекс.Переводчика». Также вызывается через директиву blade @yandex_rights .Примечание. Дополнительную информацию о размерах, цветах и требованиях к размещению см. в разделе «Яндекс.Переводчик: Требования к использованию результатов перевода». |
языки_выбрать | Никто | Нить | Никто | Возвращает строку HTML тега <select> со списком всех доступных языков.Также вызывается через директиву blade @languages_select |
Директива | Параметры | Описание |
---|---|---|
@yandex_rights | Необязательно: string $color (Default: #fff) string $fontsize (Default: 14px) | Генерирует HTML-ссылку на текст «Создано Яндекс.Переводчиком». |
@languages_select | Никто | Создает HTML тег <select> со списком всех доступных языков. |
@translate | string $text string $lang | Перевести данную строку $text в заданный $lang (язык) |
Мирзу тестировал только один человек (очевидно, я?), а это означает, что проблемы могут возникнуть и у других. Если что-то пошло не так с вашей установкой Мирзы или вы считаете, что чего-то еще не хватает, сообщите мне об этом, отправив новую проблему.