Мирза Переводчик дает вам возможность легко переводить текст и манипулировать им с помощью 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.
Все еще не поняли? Взгляните на документацию ниже, и путаница исчезнет!
Давайте его администрировать, не каждому здесь будет легко начать использовать этот пакет, поэтому давайте попробуем понять, что происходит вместе. В этом разделе будет описано использование каждого метода, предоставляемого Мирзой Яндекс Переводчиком . Вот оглавление:
translatetranslateArraytranslateTodetectLanguagegetSupportedLanguagestranslateToAll@translate@yandex_rights@languages_selecttranslateПример:
$ 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 $textstring $langНеобязательно: string $format [html|plain] (Default: "Plain") | Нить | Исключение: если текст невозможно перевести. | Переводит заданный $text на заданный $lang (язык). |
| перевести в | string $textarray $langs | Строка (JSON) | Исключение: если один или несколько языков не поддерживаются. | Перевести заданный $text на несколько $langs (языков). |
| перевестиМассив | array $textArraystring $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 $textstring $lang | Перевести данную строку $text в заданный $lang (язык) |
Мирзу тестировал только один человек (очевидно, я?), а это означает, что проблемы могут возникнуть и у других. Если что-то пошло не так с вашей установкой Мирзы или вы считаете, что чего-то еще не хватает, сообщите мне об этом, отправив новую проблему.