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 :
translate
translateArray
translateTo
detectLanguage
getSupportedLanguages
translateToAll
@translate
@yandex_rights
@languages_select
translate
Exemple:
$ 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
Notez que toutes les chaînes
json
doivent être décodées à l'aide de la fonction PHPjson_decode
. Astuce : pour renvoyer un tableau PHP, définissez le deuxième argument dejson_decode
surtrue
( 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
$assoc
surtrue
et 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
echo
plus 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"
getSupportedLanguages
Cette 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"
translateToAll
Exemple:
//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 $text string $lang Facultatif : 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 $text array $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 $textArray string $lang Facultatif : 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 $text Facultatif : 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 $text string $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.