Mirza Translator を使用すると、Yandex.Translate API を使用してテキストを簡単に翻訳および操作できます。
たった3 つのステップで素早く設定してみましょう。
ターミナル/cmd 経由で Laravel インストールフォルダーに移動し、 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
を押しますYANDEX_API
という名前で.env
ファイルに環境変数を追加し、その値を独自の Yandex.Translate API キーに設定します。 (例: YANDEX_API=MY_YANDEX_API_KEY
)
注:無料の API キーは、Yandex.Translate 開発者ダッシュボードから取得できます。
クイック使用ガイドは、このパッケージの基本的な使用法を説明することだけを目的としています。メソッドのリストとその関連情報 (パラメータ、戻り値の型など) については、メソッド セクションにジャンプするか、ディレクティブ セクションにジャンプして、そのリストを表示してください。利用可能なblade
ディレクティブ。
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!"
}
}
注:この文字列は、
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
関数を使用してデコードできます。
まだわかりませんか?以下のドキュメントを参照すれば、混乱は解消されます。
管理しましょう。ここにいる誰もがこのパッケージを簡単に使い始めることができるわけではないので、何が起こっているのかを一緒に理解しましょう。このセクションでは、 Mirza Yandex Translatorが提供するすべてのメソッドの使用法について説明します。目次は次のとおりです。
translate
メソッドtranslateArray
メソッドtranslateTo
メソッドdetectLanguage
メソッドgetSupportedLanguages
メソッドtranslateToAll
メソッド@translate
ディレクティブ@yandex_rights
ディレクティブ@languages_select
ディレクティブtranslate
メソッド例:
$ 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
文字列は、PHP のjson_decode
関数を使用してデコードする必要があることに注意してください。ヒント: PHP 配列を返すには、json_decode
の 2 番目の引数をtrue
に設定します (例:json_decode($jsonString, true);
)。
json objects
を操作したい場合は、2 番目の引数を空のままにするか、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
を取得する代わりに 1 つの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 メソッドdetectLanguage
この問題のためだけに作成されています。メソッドの表で説明したように、このメソッドは 1 つの必須パラメーターと 1 つのオプションのパラメーターを受け取ります。オプションのパラメータ ( 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 コードがわからないと仮定します。EASY PEASY! 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
: 翻訳結果の使用に関する Yandex.Translate の要件を読んだことがあれば、このディレクティブが非常に役立つことがわかるでしょう。
最初の引数としてcolor
指定し、2 番目の引数として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のすべては簡単で読みやすいように設計されており、ソース コードを見るだけで何が起こっているのかすぐに理解できます。しかし、心配しないでください。私はあなたの苦労を省き、 Mirza Translator が提供するメソッドのリストを含む表を作成しました。
方法 | パラメータ | 返品 | 投げる | 説明 |
---|---|---|---|---|
翻訳する | string $text string $lang オプション: string $format [html|plain] (Default: "Plain") | 弦 | 例外:テキストを翻訳できなかった場合。 | 指定された$text 指定された$lang (言語) に翻訳します。 |
翻訳する | string $text array $langs | 文字列(json) | 例外: 1 つ以上の言語がサポートされていない場合。 | 指定された$text 複数の$langs (言語) に翻訳します。 |
配列の変換 | array $textArray string $lang オプション: bool $assoc (Default: false) | 文字列(json) | 例外: 1. ターゲット言語がサポートされていない場合。 2. $assoc がtrue に設定されており、指定された配列が連想配列ではない場合。 | $textArray (テキストの配列) を指定された$lang (言語) に変換します。注: $assoc がtrue に設定されている場合、返される json 文字列は同じインデックス名を持ちます。 |
言語を検出する | string $text オプション: bool $langName | 弦 | 例外: 1. 言語コードが見つからない場合。 2. 言語名が見つからない場合 | 指定された$text の言語を検出し、言語コードを返します。注: $langName がtrue に設定されている場合、代わりに言語の完全名が返されます。 |
getサポート対象言語 | なし | 文字列(json) | 例外:サポートされている関数のリストを取得しようとしたときに不明なエラーが発生した場合 | サポートされているすべての言語のリストを含む json 文字列を返します。 |
すべてに翻訳 | string $text | 文字列(json) | なし | 文字列 ( $text ) をサポートされているすべての言語に翻訳します。注:これには時間がかかり、 PHP max_execution_time TIMEOUT Exception 発生する場合があります。 |
yandex_rights | オプション: string $color (Default: #fff) string $fontsize (Default: 14px) | 弦 | なし | 「Powered By Yandex.Translate」リンク文字列の文字列を返します。 blade ディレクティブ@yandex_rights 経由でも呼び出されます。注:フォント サイズ、色、配置の要件の詳細については、「Yandex 翻訳: 翻訳結果の使用の要件」を参照してください。 |
言語選択 | なし | 弦 | なし | 使用可能なすべての言語のリストを含むHTML <select> タグの文字列を返します。blade ディレクティブ@languages_select 経由でも呼び出されます |
指令 | パラメータ | 説明 |
---|---|---|
@yandex_rights | オプション: string $color (Default: #fff) string $fontsize (Default: 14px) | 「Powered By Yandex.Translate」テキストの HTML リンクを生成します。 |
@languages_select | なし | 使用可能なすべての言語のリストを含むHTML <select> タグを生成します。 |
@translate | string $text string $lang | 指定された$text 列を指定された$lang (言語) に翻訳します。 |
Mirza は1 人 (もちろん私 ?) によってテストされています。つまり、他の人でも問題が発生する可能性があります。Mirzaのインストールで何か問題が発生した場合、または何かがまだ足りないと思われる場合は、新しい問題を送信して私に知らせてください。