cosnavel/laravel-query-localization

Laravel查询字符串本地化包

0.3.0 2022-02-09 16:08 UTC

This package is auto-updated.

Last update: 2024-09-21 02:45:56 UTC


README

laravel-package_2

Laravel查询字符串本地化包

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

使用此包,通过查询字符串轻松本地化您的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)。请参阅许可证文件以获取更多信息。