marcnewton/laravel-alsl

检测用户在Accept-Language请求头中的语言偏好,从其语言偏好的顺序;尝试找到并设置在Laravel的resources/lang目录中可用的匹配区域设置。

资助包维护!
marcnewton

1.0.0 2021-01-09 20:24 UTC

This package is auto-updated.

Last update: 2024-09-19 02:06:08 UTC


README

添加对il8n检测的支持。

迭代用户的语言偏好,这些偏好是在Accept-Language请求头中设置的,使用用户网络浏览器中的语言偏好顺序;尝试找到在Laravel resources/lang目录中可用的匹配区域设置。

  • 尝试回退到大陆语言,尊重用户的首选。
  • 如果设置了,则从认证用户User::locale恢复保存的用户偏好。
  • 否则回退到Laravel配置app.localeen(英语)。

Laravel ALSL

安装

composer require marcnewton/laravel-alsl

使用信息

app()->getLocale()将返回用户的网络浏览器语言偏好的值或认证用户locale属性(如果存在),只要在resources/lang目录中找到匹配的ISO即可,否则将使用app.locale配置值。

语言变体

为了支持变体,在resources/lang中创建语言翻译文件夹。

例如,为了支持英语(美国)英语(英国);除了创建en(英语)外,还创建以下目录:en-USen-GB

检测如何工作。

网络浏览器在安装时默认设置为系统用户的语言偏好,然后用户可以在浏览器中进一步配置回退偏好,这些信息通过名为Accept-Language的头部发送,这是一个广泛支持的规范,通常被忽视。

处理该头部并检测与Laravel语言目录的最佳匹配,并使用Laravel内置的区域功能设置。

以下是一个示例,说明了一个偏好为墨西哥西班牙语(西班牙语墨西哥人 es-MX)且次要回退为美国西班牙语(美国西班牙语 es-US)的个人的一些不同场景。

如果用户只指定了西班牙语,那么这将匹配es,但如果服务器只有en,则将显示en

然而,如果用户首先指定了西班牙语的偏好,然后是一个西班牙语变体,es将首先匹配,而不是变体的其他选择,除非服务器没有es语言文件夹,否则变体文件夹将匹配,然后回退到配置默认值。

下划线Accept-Language头部转换为短横线,以与PHP和JavaScript本地化方法的用法保持一致。

部署

当在resources/lang中添加或删除语言支持时,您应确保运行php artisan cache:forget resources.languages以清除缓存。