sloveniangooner/locale-anywhere

Laravel Nova 工具。

该包的官方仓库似乎已消失,因此该包已被冻结。

dev-master 2019-12-16 09:30 UTC

This package is auto-updated.

Last update: 2024-06-16 19:53:00 UTC


README

Laravel Nova Locale Anywhere 工具

此工具提供了一个漂亮的下拉菜单,可以快速在区域之间切换(这些区域独立于 app()->getLocale() 的值,并存储在缓存中)。

它还提供了一个 Language 字段,可以显示特定资源上翻译的状态。

安装

composer require sloveniangooner/locale-anywhere

用法

要开始使用此工具,您必须首先在 NovaServiceProvider 中的工具下注册该工具。该工具使用 Spatie 的 Laravel Translatable 包。

public function tools()
{
    return [
        new LocaleAnywhere([
            "locales" => [
                "en" => "English",
                "de" => "German"
            ],
            "useFallback" => false,
        ])
    ];
}

定义字段

然后您可以在资源中定义该字段。

use Sloveniangooner\LocaleAnywhere\Language;

Language::make("Language)

扩展特质

您还必须在模型中重写 Spatie 的 HasTranslations 特质,以便切换回退区域并应用自定义区域,而不是 app()->getLocale()。别担心 - 该包的特质扩展了 Spatie 特质提供的所有功能。

use Sloveniangooner\LocaleAnywhere\HasTranslations;
use Illuminate\Database\Eloquent\Model;

class Content extends Model {
    use HasTranslations;

    public $useFallback = true; // Local setting to use the fallback locale or not
}

有关其他翻译相关选项,请参阅 Spatie 的包。(spatie/laravel-translatable)[https://github.com/spatie/laravel-translatable]

下拉菜单

该包提供了一个开关,您需要将其插入到 Nova 的布局文件中。您可以通过重写 layout.blade.php 文件并在用户下拉菜单之后插入它来完成此操作。

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

<locale-anywhere-dropdown class="ml-6"></locale-anywhere-dropdown>

删除翻译工具栏按钮

该包提供了一个自定义详细工具栏组件,您可以通过配置来切换。可选地,您也可以仅从包中获取 <delete-toolbar-button> 并将其粘贴到您自己的自定义详细工具栏中。

new LocaleAnywhere(
    [
        "locales" => [
            "en" => "English",
            "de" => "German"
        ],
        "useFallback" => false,
        "customDetailToolbar" => false
    ]
)