Mirza 翻譯器可讓您使用 Yandex.Translate API 輕鬆翻譯和操作文字。
讓我們只需三個步驟即可快速完成設定!
透過 Terminal/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
)
注意:您可以從 Yandex.Translate 開發人員儀表板取得免費的 API 金鑰
快速使用指南只是為了解釋這個套件的基本用法,方法清單及其相關資訊(參數,返回類型等)跳到方法部分或跳到指令部分查看清單可用的blade
指令。
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!"
}
}
注意:您可以使用
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
字串都需要使用 PHPjson_decode
函數進行解碼。提示:要傳回 PHP 數組,請將json_decode
的第二個參數設為true
(例如json_decode($jsonString, true);
)。
如果您喜歡操作json objects
,請將第二個參數留空或將其設為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
,而是採用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
方法就是為了這個問題而創建的!如方法表所述,此方法採用一個必需參數和一個可選參數。可選參數 ( 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
指定為第一個參數, 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 翻譯器提供的方法清單。
方法 | 參數 | 退貨 | 投擲 | 描述 |
---|---|---|---|---|
翻譯 | string $text string $lang 可選: string $format [html|plain] (Default: "Plain") | 細繩 | 例外:如果文字無法翻譯。 | 將給定的$text 翻譯為給定的$lang (語言) |
翻譯到 | string $text array $langs | 字串(json) | 例外:如果不支援一種或多種語言。 | 將給定的$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 ,則會傳回語言全名。 |
獲取支援的語言 | 沒有任何 | 字串(json) | 異常:如果嘗試取得支援的函數列表時發生未知錯誤 | 傳回包含所有支援語言清單的 json 字串 |
翻譯給所有人 | string $text | 字串(json) | 沒有任何 | 將字串 ( $text ) 翻譯為所有支援的語言。注意:這可能需要一段時間並導致 PHP max_execution_time TIMEOUT Exception |
yandex_權利 | 可選: 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僅由一個人(顯然是我?)進行了測試,這意味著其他人可能會出現問題,如果您的Mirza安裝出現問題或您認為仍然缺少某些內容,請透過提交新問題讓我知道。