tramuntana-studio/nova-locale-switcher

此包已被废弃且不再维护。作者建议使用 eolica/nova-locale-switcher 包。

一个没有具体本地化实现的简单Nova地区选择器

1.0.0 2020-10-29 19:11 UTC

This package is auto-updated.

Last update: 2024-03-18 11:24:59 UTC


README

此工具提供了一个简单的下拉菜单,用于快速切换地区。此工具没有任何具体实现,因此当从下拉菜单中选择地区时发生什么完全取决于您。

Nova Locale Switcher

安装

composer require eolica/nova-locale-switcher

如果您之前使用的是我们的 tramuntana-studio/nova-locale-switcher 包,请相应地进行修改。

使用方法

我们将通过一个简单的示例展示如何使用此工具。首先,您必须在 NovaServiceProvider 下的工具中注册该工具。

use Illuminate\Http\Request;

public function tools()
{
    return [
        \Eolica\NovaLocaleSwitcher\LocaleSwitcher::make()
            ->setLocales(config('nova.locales'))
            ->onSwitchLocale(function (Request $request) {
                $locale = $request->post('locale');

                if (array_key_exists($locale, config('nova.locales'))) {
                    $request->user()->update(['locale' => $locale]);
                }
            }),
    ];
}

setLocales 方法期望一个关联数组,键是地区代码,值是地区名称。在此示例中,我们从 nova.php 配置文件设置地区。

return [

    // Rest of Nova configuration

    ...

    /*
    |--------------------------------------------------------------------------
    | Nova Locales
    |--------------------------------------------------------------------------
    */

    'locales' => [
        'en' => 'English',
        'de' => 'Deutsch',
        'es' => 'Español',
    ],
];

对于处理地区切换,我们必须将一个 callable 传递给 onSwitchLocale 方法,在此示例中,我们使用从请求对象接收到的地区更新当前用户地区字段(这是一个我们添加到模型中的自定义字段)。

现在,对于设置应用程序地区,我们可以在 NovaServiceProviderboot 方法中使用 Nova::serving() 方法。

use Laravel\Nova\Events\ServingNova;

final class NovaServiceProvider extends NovaApplicationServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        parent::boot();

        Nova::serving(function (ServingNova $event) {
            $user = $event->request->user();

            if (array_key_exists($user->locale, config('nova.locales'))) {
                app()->setLocale($user->locale);
            }
        });
    }

    ...
}

最后一步是显示语言选择器。为此,我们必须 发布 Nova 的视图,执行以下命令

php artisan nova:publish

现在我们转到文件 /resources/views/vendor/nova/layout.blade.php,并在包含用户部分的下拉菜单之后添加 locale-switcher Vue 组件

<!-- Content -->
<div>
    ...

    <dropdown class="ml-auto h-9 flex items-center dropdown-right">
        @include('nova::partials.user')
    </dropdown>

    <!-- HERE! -->
    <locale-switcher></locale-switcher>
</div>

这样就完成了!

这是您可以使用的一种解决方案,重要的是您可以切换到其他类型的实现,而不依赖于外部包。

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

安全

如果您在此包中发现安全漏洞,请发送电子邮件至 dllobellmoya@gmail.com,而不是使用问题跟踪器。

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件