Mirza Translator vous donne la possibilité de traduire et de manipuler facilement du texte à l'aide de l'API Yandex.Translate.
Mettons cela en place très rapidement en seulement trois étapes !
Accédez à votre dossier d'installation Laravel via le terminal/cmd et exécutez composer require yak0d3/ Mirza_Yandex_Translator ou ajoutez "yak0d3/ Mirza_Yandex_Translator ": "^1.0.0" manuellement à votre composer.json .
Publiez le fichier de configuration à l'aide de l'une des méthodes suivantes :
php artisan vendor:publish --provider="yak0d3 Mirza_Yandex_Translator TMirzaServiceProvider"php artisan vendor:publish et tapez le numéro derrière yak0d3 Mirza_Yandex_Translator TMirzaServiceProvider puis appuyez Enter Ajoutez une variable d'environnement à votre fichier .env avec le nom YANDEX_API et définissez sa valeur sur votre propre clé API Yandex.Translate. ( par exemple YANDEX_API=MY_YANDEX_API_KEY )
Remarque : Vous pouvez obtenir votre clé API GRATUITE à partir du tableau de bord des développeurs Yandex.Translate.
Le guide d'utilisation rapide est uniquement destiné à expliquer l'utilisation de base de ce package, pour la liste des méthodes et ses informations relatives (paramètres, type de retour, etc.), passez à la section méthodes ou passez aux sections directives pour afficher la liste des directives blade disponibles.
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!"
}
}Remarque : Vous pouvez décoder cette chaîne à l'aide de la fonction
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"
}
]Remarque : Vous pouvez décoder cette chaîne à l'aide de la fonction
json_decode.
Vous ne comprenez toujours pas ? Jetez un œil à la documentation ci-dessous et la confusion disparaîtra !
Gérons-le, tout le monde ici ne trouvera pas facile de commencer à utiliser ce package, essayons donc de comprendre ce qui se passe ensemble. Cette section couvrira l'utilisation de chaque méthode fournie par Mirza Yandex Translator , voici la table des matières :
translatetranslateArraytranslateTodetectLanguagegetSupportedLanguagestranslateToAll@translate@yandex_rights@languages_selecttranslateExemple:
$ 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!"translateArrayNotez que toutes les chaînes
jsondoivent être décodées à l'aide de la fonction PHPjson_decode. Astuce : pour renvoyer un tableau PHP, définissez le deuxième argument dejson_decodesurtrue( par exemplejson_decode($jsonString, true);).
Si vous préférez manipulerjson objects, laissez le deuxième argument vide ou définissez-le surfalse.
Mirza::translateArray(['Hello', 'My Dear', 'Friend'],'fr'); cette méthode traduit un tableau donné de texte dans lequel se trouve dans notre cas ce tableau ['Hello', 'My Dear', 'Friend'] et le traduit dans une langue donnée qui est le français dans notre exemple.
Cette fonction renvoie une chaîne json encoded comme celle-ci :
[
{
" originalText ": "Hello",
"translatedText": "Bonjour"
},
{
"originalText": "My dear",
"translatedText": "Mon cher"
},
{
"originalText": "Friend",
"translatedText": " Ami"
}
] Comme vous pouvez le voir, la json string de sortie est dans le même ordre que le tableau d'entrée, nous pouvons maintenant accéder à chacun de ces éléments en décodant la chaîne comme ceci :
$ 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 ' ];Facile, non ? Mais cela pourrait devenir plus facile si vous définissez le paramètre $assoc sur true afin de pouvoir accéder à vos traductions de chaînes par leurs noms d'index (que vous avez définis manuellement). Personne ne s’y trompe, voici un exemple :
$ 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 ' ];Remarque : Si vous définissez
$assocsurtrueet fournissez un tableau séquentiel, une exception sera levée.
translateTo : Cette méthode est (peut-être) la version inverse de la fonction précédente, au lieu de prendre un array de chaînes, cette méthode prend une string et la traduit dans un tableau de langues. Exemple:
$ jsonString = Mirza:: translateTo ( ' My awesome text ' , [ ' ar ' , ' tr ' , ' de ' ]); L'exemple ci-dessus renverra json string avec la structure suivante :
[
{
" 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"
}
}
]Vous avez peut-être remarqué que certains caractères sont au format Unicode, pas de soucis si vous
echoplus tard, ils s'afficheront correctement.
Nous pouvons maintenant facilement décoder cette json string et accéder à nos données comme ceci :
$ 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 Il faut parfois détecter dans quelle langue un texte est écrit, la méthode detectLanguage est faite justement pour ça ! Comme mentionné dans le tableau des méthodes, cette méthode prend un paramètre obligatoire et un facultatif. Le paramètre facultatif ( boolean $name ) nous permet de basculer entre le renvoi du code ISO de la langue ou le nom de la langue.
Exemple:
//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"getSupportedLanguagesCette méthode ne prend aucun paramètre (elle devrait, mais cela sera ajouté dans une version ultérieure) et si elle est exécutée, elle renvoie la liste de toutes les langues prises en charge.
Exemple:
//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' },
]
*/Je ne voulais pas inclure l'intégralité du résultat car il est trop long, mais si vous êtes toujours curieux à ce sujet, j'étais préparé à cela ! Voici une capture d'écran :
Décodeons cette json string et jouons un peu !
//Decode json string and wrap it into a PHP array
$ langsArray = json_decode ( $ supportedLanguages , true );Disons que nous avons un code de langue, mais que nous ne savons pas à quelle langue il fait référence, cette ligne nous aiderait beaucoup dans un tel cas :
echo $ langsArray [ ' tr ' ]; //Outputs "Turkish" Supposons maintenant que nous ayons un nom de langue, mais que nous ne connaissions pas le code ISO, EASY PEASY ! Nous pouvons le faire avec la fonction PHP array_flip
$ flippedArray = array_flip ( $ langsArray );
/* The values are now keys! Cool right? */
$ languageCode = $ flippedArray [ ' Sinhalese ' ];
echo $ languageCode ; //Outputs "si"translateToAllExemple:
//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 : vous permet de traduire un texte donné dans une langue donnée en déplacement
Exemple:
@translate('Welcome', 'fr') <!-- Outputs "Bienvenue" --> @yandex_rights : Si vous avez lu les exigences de Yandex.Translate pour l'utilisation des résultats de traduction, vous savez que cette directive sera très utile.
Vous devez spécifier la color comme premier argument et la font-size comme second.
Exemple:
@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 : Génère un HTML <select> avec la liste de toutes les langues prises en charge.Exemple:
@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 > Tout dans Mirza est censé être facile et lisible, en jetant simplement un coup d'œil au code source, vous comprendrez ce qui se passe en un rien de temps. Mais ne vous inquiétez pas, je vous ai épargné la lutte et créé un tableau contenant la liste des méthodes fournies par Mirza Translator .
| Méthode | Paramètres | Retours | Jetés | Description |
|---|---|---|---|---|
| traduire | string $textstring $langFacultatif : string $format [html|plain] (Default: "Plain") | Chaîne | Exception : si le texte n'a pas pu être traduit. | Traduit un $text donné en un $lang (langue) donné |
| traduireVers | string $textarray $langs | Chaîne (json) | Exception : si une ou plusieurs langues ne sont pas prises en charge. | Traduire un $text donné en plusieurs $langs (langues) |
| traduireArray | array $textArraystring $langFacultatif : bool $assoc (Default: false) | Chaîne (json) | Exception: 1. Si la langue cible n'est pas prise en charge. 2. Si $assoc est défini sur true et que le tableau donné n'est pas associatif. | Traduit un $textArray (tableau de texte) en un $lang (langue) donnéRemarque : Si $assoc est défini sur true , la chaîne json renvoyée aura les mêmes noms d'index |
| détecterLangue | string $textFacultatif : bool $langName | Chaîne | Exception: 1. Si le code de langue n'est pas trouvé. 2. Si le nom de la langue n'est pas trouvé | Détecte la langue d'un $text donné et renvoie le code de langueRemarque : Si $langName est défini sur true , le nom complet de la langue sera renvoyé à la place. |
| getSupportedLanguages | Aucun | Chaîne (json) | Exception : si une erreur inconnue se produit lors de la tentative de récupération de la liste des fonctions prises en charge | Renvoie une chaîne json contenant la liste de toutes les langues prises en charge |
| traduireVersTout | string $text | Chaîne (json) | Aucun | Traduit une chaîne ( $text ) dans toutes les langues prises en charge.Remarque : Cela peut prendre un certain temps et provoquer une PHP max_execution_time TIMEOUT Exception |
| yandex_rights | Facultatif : string $color (Default: #fff)string $fontsize (Default: 14px) | Chaîne | Aucun | Renvoie la chaîne de la chaîne de lien "Powered By Yandex.Translate". Également appelé via la directive blade @yandex_rights .Remarque : Veuillez vous référer à Yandex Translate : Conditions requises pour l'utilisation des résultats de traduction pour en savoir plus sur les exigences en matière de taille de police, de couleur et de placement. |
| langues_select | Aucun | Chaîne | Aucun | Renvoie la chaîne d'une balise HTML <select> avec la liste de toutes les langues disponibles.Également appelé via la directive blade @languages_select |
| Directif | Paramètres | Description |
|---|---|---|
@yandex_rights | Facultatif : string $color (Default: #fff)string $fontsize (Default: 14px) | Génère un lien HTML pour le texte "Powered By Yandex.Translate". |
@languages_select | Aucun | Génère une balise HTML <select> avec la liste de toutes les langues disponibles. |
@translate | string $textstring $lang | Traduire une chaîne $text donnée en un $lang (langue) donné |
Mirza a été testé par une seule personne (évidemment moi ?), ce qui signifie que des problèmes peuvent survenir avec d'autres, si quelque chose ne va pas avec votre installation Mirza ou si vous pensez qu'il manque encore quelque chose, faites-le-moi savoir en soumettant un nouveau problème.