andaletech / laravel-browser-info
一个 Laravel 5 包,提供了一个简单的方法来从请求中获取有用的浏览器相关信息(如支持的语言、浏览器名称等)。
v3.0
2022-01-29 17:20 UTC
Requires
- php: >=8.0.0
- illuminate/support: >=8.0
Requires (Dev)
- orchestra/testbench: ~6.7
- phpunit/phpunit: ^9.3
README
一个 Laravel 5 包,提供了一个简单的方法来从请求中获取有用的浏览器相关信息(如支持的语言、浏览器名称等)。下面将进行详细说明...
进行中...
安装
Composer
composer require andaletech/laravel-browser-info
在 config/app.php 中 将以下行添加到 aliases 部分
'BrowserInfo' => Andaletech\BrowserInfo\BrowserInfoFacade::class,
基本用法
$languages = BrowserInfo::getLanguages();
Log::info('Browser info:',
[
'agent' => BrowserInfo::getUserAgent(),
'languages' => $languages()->toArray(),
'support_en_not_strict' => $languages->supports('en'),
'support_en_strict' => $languages->supports('en', true),
'support_fr_not_strict' => $languages->supports('fr'),
'support_fr_strict' => $languages->supports('fr-FR', true),
]
);
将得到
{
"agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
"languages":[
{
"raw_language":"en-US",
"language":"en",
"country":"US",
"variant":"",
"q":1
},
{
"raw_language":"en",
"language":"en",
"country":"",
"variant":"",
"q":0.9
},
{
"raw_language":"fr",
"language":"fr",
"country":"",
"variant":"",
"q":0.8
}
],
"support_en_not_strict":true,
"support_en_strict":true,
"support_fr_not_strict":true,
"support_fr_strict":false
}
值得注意的类
AcceptedLanguage
封装了浏览器接受的单个语言。这个类允许您访问
- 两字符的国际语言代码(例如,en,fr,es).
- 两字符的国际国家代码(例如,US,FR,ES)
- 语言的首选项权重 q。.
示例
如果浏览器发送:accept-language: "en-US,en;q=0.9,fr;q=0.8"
那么
$languages = BrowserInfo::getLanguages(); $aLanguage = $languages->first(); Log::info('$aLanguage\'s language:', ['language' => $aLanguage->getLanguage()]); // en Log::info('$aLanguage\'s country:', ['country' => $aLanguage->getCountry()]); // US Log::info('$aLanguage\'s q:', ['language' => $aLanguage->getQ()]); // 1
语言
语言是一个继承自 Laravel 的 Illuminate\Support\Collection 的集合类。因此,它具有 Laravel 集合的所有相同方法,还有一些额外的功能。以下是一些方法:
supports(string $lang, $strict = false)
此方法接受一个 i18n 语言代码字符串(例如,'en','fr-FR','es-ES')作为参数,以确定浏览器是否支持该语言。默认情况下,当浏览器支持给定的语言,无论语言代码的国家和/或变体部分时,此方法返回 true。例如,接受语言:"en-US,en;q=0.9,fr;q=0.8"
示例
如果浏览器发送:accept-language: "en-US,en;q=0.9,fr;q=0.8"
那么
$languages = BrowserInfo::getLanguages(); Log::info('Supports French', ['output' => $languages->supports('fr')]); // true Log::info('Supports French', ['output' => $languages->supports('fr', true)]); // true Log::info('Supports French from France strict', ['output' => $languages->supports('fr-FR')]); // false Log::info('Supports Spanish (any)', ['output' => $languages->supports('es-ES')]); // true
可用的 Facade
BrowserInfo
BrowserInfo Facade 允许您轻松访问与浏览器相关的信息,例如支持的语言。以下是一些可用方法: