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安装出现问题或者您认为仍然缺少某些内容,请通过提交新问题让我知道。