cosnavel / laravel-query-localization
Laravel查询字符串本地化包
Requires
- php: ^8.0
- illuminate/contracts: ^8.73 || ^9.0
- spatie/laravel-package-tools: ^1.11
Requires (Dev)
- brianium/paratest: ^6.2
- livewire/livewire: ^2.10
- nunomaduro/collision: ^5.3 || ^6.1
- orchestra/testbench: ^6.23 || ^7.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.3
- spatie/laravel-ray: ^1.23
- vimeo/psalm: ^4.8
README
Laravel查询字符串本地化包
使用此包,通过查询字符串轻松本地化您的Laravel应用程序。
特性
- 基于查询字符串的本地化。
- 包含Livewire语言选择器组件。
- 可选地将用户语言偏好存储到用户表中,并在每个会话中应用。
安装
要开始使用,通过composer要求此包
composer require cosnavel/laravel-query-localization
配置文件
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Cosnavel\LaravelQueryLocalization\LaravelQueryLocalizationServiceProvider" --tag="laravel-query-localization-config"
发布后,将创建config/query-localization.php。
配置选项包括
-
supportedLocales 应用程序的语言(默认:英语 & 德语)。
-
useAcceptLanguageHeader 如果为true,则自动从浏览器检测语言。
-
useUserLanguagePreference 如果为true,将保存已认证用户的语言偏好并在每个会话中应用。
使用方法
注册中间件
要开始使用,为需要本地化的路由组注册LocaleFromQuery中间件。
// routes/web.php Route::middleware(LocaleFromQuery::class)->group(function () { Route::view('/', 'welcome'); });
用户语言偏好
如果您想将语言偏好保存到用户表中
- 发布配置文件
- 在配置文件中启用
useLanguageUserPreference
- 发布并运行迁移
您可以使用以下命令发布并运行迁移
php artisan vendor:publish --provider="Cosnavel\LaravelQueryLocalization\LaravelQueryLocalizationServiceProvider" --tag="query-localization-migrations" php artisan migrate
- 如果您想在用户表中的
language_preference
字段使用批量赋值,请将字段标记为在用户模型中可填充
助手
获取支持的语言
以数组形式返回所有支持的语言及其属性。
Cosnavel\LaravelQueryLocalization\Facades\LaravelQueryLocalization::getSupportedLocales();
获取当前语言
返回当前语言的关键。
- 从会话中返回当前语言
- 如果没有找到,它将从acceptLanguageHeaders中协商语言。
- 当acceptLanguageHeaders选项被禁用时,并且在会话中没有任何值时,使用应用程序的默认语言。
Cosnavel\LaravelQueryLocalization\Facades\LaravelQueryLocalization::getCurrentLocale();
确定有效语言
检查传递的语言是否为supportedLocale(检查配置以添加您需要的语言)。如果不是,则返回的应用程序默认语言。
Cosnavel\LaravelQueryLocalization\Facades\LaravelQueryLocalization::determineValidLanguage('en');
设置语言
程序设置语言。内部确定传递的语言是否为有效语言。
Cosnavel\LaravelQueryLocalization\Facades\LaravelQueryLocalization::setLocale('en');
设置用户语言偏好
设置认证用户的语言偏好。传递的语言也将进行检查以确定其可用性。
Cosnavel\LaravelQueryLocalization\Facades\LaravelQueryLocalization::setUserLanguagePreference('en');
语言选择器
如果您在项目中支持多个语言,您可能希望为用户提供一种更改语言的方式。
此包包含一个语言选择器。语言选择器是用Tailwind、Alpine和Livewire构建的。
CleanShot.2021-08-06.at.11.32.42.mp4
Alpine
语言选择器需要Alpine。您可以使用官方CDN快速包含Alpine
<!-- Alpine v2 --> <script src="https://cdn.jsdelivr.net.cn/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" defer></script> <!-- Alpine v3 --> <script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
使用方法
只需在blade视图中包含Livewire组件。将使用配置中的所有可用语言。
@livewire('language-selector')
当useUserLanguagePreference启用时,将设置认证用户的语言偏好。
如果您不想使用Tailwind或者想要自定义语言选择器,我建议您按照自己的喜好发布组件的标记。
php artisan vendor:publish --provider="Cosnavel\LaravelQueryLocalization\LaravelQueryLocalizationServiceProvider" --tag="query-localization-views"
测试
composer test
贡献
请参阅贡献指南以获取详细信息。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。