andaletech/laravel-browser-info

一个 Laravel 5 包,提供了一个简单的方法来从请求中获取有用的浏览器相关信息(如支持的语言、浏览器名称等)。

v3.0 2022-01-29 17:20 UTC

This package is auto-updated.

Last update: 2024-09-29 04:43:17 UTC


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 允许您轻松访问与浏览器相关的信息,例如支持的语言。以下是一些可用方法:

BrowserInfo::getLanguages()