Mirza Translator le brinda la posibilidad de traducir y manipular texto fácilmente utilizando la API Yandex.Translate.
¡Configuremos esto muy rápido en solo tres simples pasos!
Navegue a su carpeta de instalación de Laravel a través de terminal/cmd y ejecute composer require yak0d3/ Mirza_Yandex_Translator
o agregue "yak0d3/ Mirza_Yandex_Translator ": "^1.0.0"
manualmente a su composer.json
.
Publique el archivo de configuración utilizando uno de los siguientes métodos:
php artisan vendor:publish --provider="yak0d3 Mirza_Yandex_Translator TMirzaServiceProvider"
php artisan vendor:publish
y escriba el número detrás de yak0d3 Mirza_Yandex_Translator TMirzaServiceProvider
y luego presione Enter
Agregue una variable de entorno a su archivo .env
con el nombre YANDEX_API
y establezca su valor en su propia clave API Yandex.Translate. ( por ejemplo, YANDEX_API=MY_YANDEX_API_KEY
)
Nota : Puede obtener su clave API GRATUITA desde el Panel de desarrolladores de Yandex.Translate
La guía de uso rápido solo está destinada a explicar el uso básico de este paquete, para la lista de métodos y su información relativa (Parámetros, Tipo de retorno, etc.), salte a la sección de métodos o salte a las secciones de directivas para ver la lista de directivas blade
disponibles.
Mirza::detectLanguage('Welcome');
en
: es 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: Puede decodificar esta cadena utilizando la función
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: Puede decodificar esta cadena utilizando la función
json_decode
.
¿Aún no lo entiendes? ¡Eche un vistazo a la documentación a continuación y la confusión desaparecerá!
Administremoslo, no a todos aquí les resultará fácil comenzar a usar este paquete, así que intentemos entender qué está sucediendo juntos. Esta sección cubrirá el uso de todos y cada uno de los métodos proporcionados por Mirza Yandex Translator ; aquí está la tabla de contenidos:
translate
translateArray
translateTo
detectLanguage
getSupportedLanguages
translateToAll
@translate
@yandex_rights
@languages_select
translate
Ejemplo:
$ 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
Tenga en cuenta que todas las cadenas
json
deben decodificarse utilizando la función PHPjson_decode
. Consejo: Para devolver una matriz PHP, establezca el segundo argumento dejson_decode
entrue
( por ejemplo,json_decode($jsonString, true);
).
Si prefiere manipularjson objects
, deje el segundo argumento vacío o configúrelo enfalse
.
Mirza::translateArray(['Hello', 'My Dear', 'Friend'],'fr');
este método traduce una matriz de texto determinada, que en nuestro caso es esta matriz ['Hello', 'My Dear', 'Friend']
y la traduce a un idioma determinado, que en nuestro ejemplo es el francés.
Esta función devuelve una cadena json encoded
como la siguiente:
[
{
" originalText ": "Hello",
"translatedText": "Bonjour"
},
{
"originalText": "My dear",
"translatedText": "Mon cher"
},
{
"originalText": "Friend",
"translatedText": " Ami"
}
]
Como puede ver, la json string
de salida está en el mismo orden que la matriz de entrada, ahora podemos acceder a cada uno de estos elementos decodificando la cadena de esta manera:
$ 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, ¿verdad? Pero podría ser más fácil si configura el parámetro $assoc en verdadero para poder acceder a las traducciones de sus cadenas por sus nombres de índice (que ha configurado manualmente). Nadie se confunde aquí, aquí hay un ejemplo:
$ 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: Si configura
$assoc
entrue
y proporciona una matriz secuencial, se generará una excepción.
translateTo
: Este método es (quizás) la versión inversa de la función anterior; en lugar de tomar una array
de cadenas, este método toma una string
y la traduce a una serie de idiomas. Ejemplo:
$ jsonString = Mirza:: translateTo ( ' My awesome text ' , [ ' ar ' , ' tr ' , ' de ' ]);
El ejemplo anterior devolverá json string
con la siguiente estructura:
[
{
" 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"
}
}
]
Es posible que hayas notado que algunos de los caracteres están en formato Unicode; no te preocupes, si los
echo
más adelante, se mostrarán correctamente.
Ahora podemos decodificar fácilmente esta json string
y acceder a nuestros datos de esta manera:
$ 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
A veces es necesario detectar en qué idioma está escrito un texto, ¡el método detectLanguage
está hecho solo para este asunto! Como se menciona en la tabla de métodos, este método toma un parámetro obligatorio y otro opcional. El parámetro opcional ( boolean $name
) nos permite cambiar entre devolver el código ISO del idioma o el nombre del idioma.
Ejemplo:
//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
Este método no toma parámetros (debería hacerlo, pero se agregarán en una versión posterior) y, si se ejecuta, devuelve la lista de todos los idiomas admitidos.
Ejemplo:
//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' },
]
*/
No quería incluir el resultado completo porque es muy largo, pero si todavía tienes curiosidad, ¡estaba preparado para esto! Aquí hay una captura de pantalla:
¡Decodifiquemos esta json string
y juguemos un poco!
//Decode json string and wrap it into a PHP array
$ langsArray = json_decode ( $ supportedLanguages , true );
Digamos que tenemos un código de idioma, pero no sabemos a qué idioma se refiere, esta línea nos ayudaría mucho en tal caso:
echo $ langsArray [ ' tr ' ]; //Outputs "Turkish"
Ahora supongamos que tenemos el nombre de un idioma, pero no conocemos el código ISO, ¡FÁCIL! Podemos hacerlo con la función PHP array_flip
$ flippedArray = array_flip ( $ langsArray );
/* The values are now keys! Cool right? */
$ languageCode = $ flippedArray [ ' Sinhalese ' ];
echo $ languageCode ; //Outputs "si"
translateToAll
Ejemplo:
//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
: le permite traducir un texto determinado a un idioma determinado mientras viaja
Ejemplo:
@translate('Welcome', 'fr') <!-- Outputs "Bienvenue" -->
@yandex_rights
: si ha leído los requisitos de Yandex.Translate para el uso de resultados de traducción, sabrá que esta directiva será muy útil.
Debe especificar el color
como primer argumento y el font-size
como segundo.
Ejemplo:
@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
: Genera un HTML <select>
con la lista de todos los idiomas admitidos.Ejemplo:
@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 >
Todo en Mirza está destinado a ser fácil y legible, con solo echar un vistazo al código fuente comprenderás lo que está sucediendo en poco tiempo. Pero no te preocupes, te ahorré la lucha y creé una tabla que contiene la lista de métodos que proporciona Mirza Translator .
Método | Parámetros | Devoluciones | Lanza | Descripción |
---|---|---|---|---|
traducir | string $text string $lang Opcional: string $format [html|plain] (Default: "Plain") | Cadena | Excepción: si el texto no se pudo traducir. | Traduce un $text determinado a un $lang (idioma) determinado |
traducir a | string $text array $langs | Cadena (json) | Excepción: si uno o más idiomas no son compatibles. | Traducir un $text determinado a múltiples $langs (idiomas) |
traducirArray | array $textArray string $lang Opcional: bool $assoc (Default: false) | Cadena (json) | Excepción: 1. Si el idioma de destino no es compatible. 2. Si $assoc se establece en true y la matriz dada no es asociativa. | Traduce un $textArray (matriz de texto) a un $lang (idioma) determinadoNota: Si $assoc se establece en true , la cadena json devuelta tendrá los mismos nombres de índice |
detectar idioma | string $text Opcional: bool $langName | Cadena | Excepción: 1. Si no se encuentra el código de idioma. 2. Si no se encuentra el nombre del idioma | Detecta el idioma de un $text determinado y devuelve el código de idiomaNota: Si $langName se establece en true , se devolverá el nombre completo del idioma. |
obtener idiomas admitidos | Ninguno | Cadena (json) | Excepción: si se produce un error desconocido al intentar obtener la lista de funciones admitidas | Devuelve una cadena json que contiene la lista de todos los idiomas admitidos. |
traducir a todos | string $text | Cadena (json) | Ninguno | Traduce una cadena ( $text ) a todos los idiomas admitidos.Nota: Esto puede tardar un poco y provocar una PHP max_execution_time TIMEOUT Exception |
yandex_rights | Opcional: string $color (Default: #fff) string $fontsize (Default: 14px) | Cadena | Ninguno | Devuelve la cadena de enlace "Desarrollado por Yandex.Translate". También se llama a través de la directiva blade @yandex_rights .Nota: consulte Yandex Translate: Requisitos para el uso de resultados de traducción para obtener más información sobre el tamaño de fuente, el color y los requisitos de ubicación. |
idiomas_seleccionar | Ninguno | Cadena | Ninguno | Devuelve la cadena de una etiqueta HTML <select> con la lista de todos los idiomas disponibles.También llamado a través de la directiva blade @languages_select |
Directiva | Parámetros | Descripción |
---|---|---|
@yandex_rights | Opcional: string $color (Default: #fff) string $fontsize (Default: 14px) | Genera un enlace HTML para el texto "Desarrollado por Yandex.Translate". |
@languages_select | Ninguno | Genera una etiqueta HTML <select> con la lista de todos los idiomas disponibles. |
@translate | string $text string $lang | Traducir una cadena $text determinada a un $lang (idioma) determinado |
Mirza ha sido probado solo por una persona (¿obviamente yo?), lo que significa que pueden ocurrir problemas con otras personas. Si algo salió mal con su instalación de Mirza o cree que todavía falta algo, hágamelo saber enviando un nuevo problema.