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 $textstring $lang可选: string $format [html|plain] (Default: "Plain") | 细绳 | 例外:如果文本无法翻译。 | 将给定的$text翻译为给定的$lang (语言) |
| 翻译到 | string $textarray $langs | 字符串(json) | 例外:如果不支持一种或多种语言。 | 将给定的$text翻译为多种$langs (语言) |
| 翻译数组 | array $textArraystring $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 $textstring $lang | 将给定的$text字符串翻译为给定的$lang (语言) |
Mirza仅由一个人(显然是我?)进行了测试,这意味着其他人可能会出现问题,如果您的Mirza安装出现问题或者您认为仍然缺少某些内容,请通过提交新问题让我知道。