Mirza Translator oferece a capacidade de traduzir e manipular texto facilmente usando a API Yandex.Translate.
Vamos configurar isso bem rápido em apenas três etapas!
Navegue até a pasta de instalação do Laravel através do terminal/cmd e execute composer require yak0d3/ Mirza_Yandex_Translator ou adicione "yak0d3/ Mirza_Yandex_Translator ": "^1.0.0" manualmente ao seu composer.json .
Publique o arquivo de configuração usando um dos seguintes métodos:
php artisan vendor:publish --provider="yak0d3 Mirza_Yandex_Translator TMirzaServiceProvider"php artisan vendor:publish e digite o número atrás de yak0d3 Mirza_Yandex_Translator TMirzaServiceProvider e pressione Enter Adicione uma variável de ambiente ao seu arquivo .env com o nome YANDEX_API e defina seu valor para sua própria chave de API Yandex.Translate. ( por exemplo, YANDEX_API=MY_YANDEX_API_KEY )
Observação : você pode obter sua chave de API GRATUITA no painel de desenvolvedores do Yandex.Translate
O guia de uso rápido serve apenas para explicar o uso básico deste pacote, para a lista de métodos e suas informações relativas (Parâmetros, Tipo de Retorno etc..) vá para a seção de métodos ou vá para as seções de diretivas para ver a lista de diretivas blade disponíveis.
Mirza::detectLanguage('Welcome');en : 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!"
}
}Nota: Você pode decodificar esta string usando a função
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"
}
]Nota: Você pode decodificar esta string usando a função
json_decode.
Ainda não entendeu? Dê uma olhada na documentação abaixo e a confusão desaparecerá!
Vamos administrá-lo, nem todos aqui acharão fácil começar a usar este pacote, então vamos tentar entender o que está acontecendo juntos. Esta seção cobrirá o uso de cada método fornecido pelo Mirza Yandex Translator . Aqui está o índice:
translatetranslateArraytranslateTodetectLanguagegetSupportedLanguagestranslateToAll@translate diretiva@yandex_rights@languages_selecttranslateExemplo:
$ 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!"translateArrayObserve que todas as strings
jsonprecisam ser decodificadas usando a função PHPjson_decode. Dica: Para retornar um array PHP defina o segundo argumento dejson_decodecomotrue( por exemplo,json_decode($jsonString, true);).
Se você preferir manipularjson objects, deixe o segundo argumento vazio ou defina-o comofalse.
Mirza::translateArray(['Hello', 'My Dear', 'Friend'],'fr'); este método traduz um determinado array de texto para o qual é no nosso caso este array ['Hello', 'My Dear', 'Friend'] e o traduz para um determinado idioma que é o francês em nosso exemplo.
Esta função retorna uma string json encoded como a seguinte:
[
{
" originalText ": "Hello",
"translatedText": "Bonjour"
},
{
"originalText": "My dear",
"translatedText": "Mon cher"
},
{
"originalText": "Friend",
"translatedText": " Ami"
}
] Como você pode ver, a json string de saída está na mesma ordem do array de entrada, agora podemos acessar cada um desses elementos decodificando a string da seguinte forma:
$ 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 ' ];Fácil, certo? Mas poderia ficar mais fácil se você definir o parâmetro $assoc como true para poder acessar suas traduções de strings por seus nomes de índice (que você definiu manualmente). Ninguém está ficando confuso aqui, aqui está um exemplo:
$ 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 ' ];Nota: Se você definir
$assoccomotruee fornecer um array sequencial, uma exceção será lançada.
translateTo : Este método é (talvez) a versão reversa da função anterior, em vez de pegar um array de strings, este método pega uma string e a traduz para um array de idiomas. Exemplo:
$ jsonString = Mirza:: translateTo ( ' My awesome text ' , [ ' ar ' , ' tr ' , ' de ' ]); O exemplo acima retornará json string com a seguinte estrutura:
[
{
" 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"
}
}
]Você deve ter notado que alguns dos caracteres estão no formato Unicode, não se preocupe se você
echomais tarde, ele será exibido corretamente.
Agora podemos decodificar facilmente essa json string e acessar nossos dados assim:
$ 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 Às vezes você precisa detectar em qual idioma um texto está escrito, o método detectLanguage é feito justamente para esse assunto! Conforme mencionado na tabela de métodos, este método utiliza um parâmetro obrigatório e um opcional. O parâmetro opcional ( boolean $name ) nos permite alternar entre retornar o código ISO do idioma ou o nome do idioma.
Exemplo:
//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"getSupportedLanguagesEste método não aceita parâmetros (deveria, mas serão adicionados em uma versão posterior) e se executado retorna a lista de todos os idiomas suportados.
Exemplo:
//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' },
]
*/Não quis incluir o resultado completo porque é muito longo, mas se você ainda estiver curioso, estava preparado para isso! Aqui está uma captura de tela:
Vamos decodificar essa json string e brincar um pouco!
//Decode json string and wrap it into a PHP array
$ langsArray = json_decode ( $ supportedLanguages , true );Digamos que temos um código de idioma, mas não sabemos a que idioma ele se refere, esta linha nos ajudaria muito nesse caso:
echo $ langsArray [ ' tr ' ]; //Outputs "Turkish" Agora, supondo que temos um nome de idioma, mas não sabemos o código ISO, EASY PEASY! Podemos fazer isso com a função PHP array_flip
$ flippedArray = array_flip ( $ langsArray );
/* The values are now keys! Cool right? */
$ languageCode = $ flippedArray [ ' Sinhalese ' ];
echo $ languageCode ; //Outputs "si"translateToAllExemplo:
//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 : permite traduzir um determinado texto para um determinado idioma em qualquer lugar
Exemplo:
@translate('Welcome', 'fr') <!-- Outputs "Bienvenue" --> @yandex_rights : Se você leu os requisitos do Yandex.Translate para o uso de resultados de tradução, sabe que esta diretiva será muito útil.
Você deve especificar a color como o primeiro argumento e o font-size como o segundo.
Exemplo:
@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 : Gera um HTML <select> com a lista de todos os idiomas suportados.Exemplo:
@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 > Tudo no Mirza foi feito para ser fácil e legível, bastando dar uma olhada no código-fonte você entenderá o que está acontecendo rapidamente. Mas não se preocupe, eu poupei você da luta e fiz uma tabela contendo a lista de métodos que o Mirza Translator oferece.
| Método | Parâmetros | Devoluções | Lança | Descrição |
|---|---|---|---|---|
| traduzir | string $textstring $langOpcional: string $format [html|plain] (Default: "Plain") | Corda | Exceção: se o texto não puder ser traduzido. | Traduz um determinado $text para um determinado $lang (idioma) |
| traduzir para | string $textarray $langs | Cadeia de caracteres (json) | Exceção: se um ou mais idiomas não forem suportados. | Traduzir um determinado $text para vários $langs (idiomas) |
| traduzirArray | array $textArraystring $langOpcional: bool $assoc (Default: false) | Cadeia de caracteres (json) | Exceção: 1. Se o idioma de destino não for compatível. 2. Se $assoc estiver definido como true e o array fornecido não for associativo. | Traduz um $textArray (matriz de texto) para um determinado $lang (idioma)Nota: Se $assoc estiver definido como true , a string json retornada terá os mesmos nomes de índice |
| detectarIdioma | string $textOpcional: bool $langName | Corda | Exceção: 1. Se o código do idioma não for encontrado. 2. Se o nome do idioma não for encontrado | Detecta o idioma de um determinado $text e retorna o código do idiomaNota: Se $langName estiver definido como true , o nome completo do idioma será retornado. |
| getSupportedLanguages | Nenhum | Cadeia de caracteres (json) | Exceção: se ocorrer um erro desconhecido ao tentar buscar a lista de funções suportadas | Retorna uma string json contendo a lista de todos os idiomas suportados |
| traduzirToAll | string $text | Cadeia de caracteres (json) | Nenhum | Traduz uma string ( $text ) para todos os idiomas suportados.Nota: Isso pode demorar um pouco e causar uma PHP max_execution_time TIMEOUT Exception |
| direitos_yandex | Opcional: string $color (Default: #fff)string $fontsize (Default: 14px) | Corda | Nenhum | Retorna a string do link "Powered By Yandex.Translate". Também chamado via diretiva blade @yandex_rights .Observação: consulte Yandex Translate: Requisitos para o uso de resultados de tradução para saber mais sobre tamanho da fonte, cor e requisitos de posicionamento. |
| idiomas_selecionar | Nenhum | Corda | Nenhum | Retorna a string de uma tag HTML <select> com a lista de todos os idiomas disponíveis.Também chamado pela diretiva blade @languages_select |
| Diretiva | Parâmetros | Descrição |
|---|---|---|
@yandex_rights | Opcional: string $color (Default: #fff)string $fontsize (Default: 14px) | Gera um link HTML para o texto "Powered By Yandex.Translate". |
@languages_select | Nenhum | Gera uma tag HTML <select> com a lista de todos os idiomas disponíveis. |
@translate | string $textstring $lang | Traduzir uma determinada string $text para um determinado $lang (idioma) |
O Mirza foi testado por apenas uma pessoa (obviamente eu?), o que significa que podem ocorrer problemas com outras pessoas. Se algo deu errado com a instalação do Mirza ou você acha que algo ainda está faltando, avise-me enviando um novo problema.