maggomann/filament-model-translator

此包使用当前指定的翻译文件将Eloquent模型进行翻译。Eloquent模型在[filament的](https://filamentphp.com/) Resources和RelationManagers内部用于翻译。此包为Resources和RelationManagers提供了用于翻译的特性

v1.1.0 2024-05-05 08:46 UTC

This package is auto-updated.

Last update: 2024-09-05 09:29:14 UTC


README

filament v3.x 版本的 Filament 模型翻译包

此包专为 Filament Admin Panel v3.x 量身定制。

在继续安装之前,请确保您已经安装了管理面板。您可以在此处查看文档

该包使用当前指定的翻译文件将Eloquent模型进行翻译。Eloquent模型在filament的 Resources和RelationManagers内部用于翻译。此包为Resources和RelationManagers提供了用于自动翻译它们的特性。

支持的版本

安装

您可以通过composer安装此包

composer require maggomann/filament-model-translator

将插件添加到您想要的Filament面板

use Maggomann\FilamentModelTranslator\FilamentModelTranslatorServicePlugin;

class AdminPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            ...
            ->plugins([
                FilamentModelTranslatorServicePlugin::make()
            ]);
    }
}

如何使用它?

语言文件

当前翻译是从filament-model.php翻译文件中调用的,该文件必须位于以下目录结构中

lang
    de
        filament-model.php
    en
        filament-model.php

包内的filament-model.php文件作为翻译的结构化语言文件。它允许为各种实体(如模型、它们的属性和导航元素)定义翻译。

<?php

return [
    /*
    |--------------------------------------------------------------------------
    | Models
    |--------------------------------------------------------------------------
    */

    'models' => [
        'calculation_type' => 'Calculation type|Calculation types',
        'federation' => 'Association|Associations',
        'league' => 'League|Leagues',
    ],

    /*
    |--------------------------------------------------------------------------
    | Attribute
    |--------------------------------------------------------------------------
    */

    'attributes' => [
        'federation' => [
            'name' => 'Name',
            'slug' => 'Slug',
            'calculation_type_id' => 'Calculation type',
            'created_at' => 'Created at',
            'updated_at' => 'Updated at',
            'deleted_at' => 'Deleted at',
        ],
        'league' => [
            'name' => 'Name',
            'slug' => 'Slug',
            'created_at' => 'Created at',
            'updated_at' => 'Updated at',
            'deleted_at' => 'Deleted at',
        ],
        'calculation_type' => [
            'name' => 'Name',
            'description' => 'Description',
            'created_at' => 'Created at',
            'updated_at' => 'Updated at',
            'deleted_at' => 'Deleted at',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Navigation
    |--------------------------------------------------------------------------
    */

    'navigation_group' => [
        'federation' => [
            'name' => 'Seasons & Tournaments',
        ],
        'league' => [
            'name' => 'Seasons & Tournaments',
        ],
        'calculation_type' => [
            'name' => 'Seasons & Tournaments',
        ],
    ],
];

此文件为组织应用程序各个方面语言翻译提供了一种结构化的方式

  • 模型:在这里,您可以定义单数和复数形式下模型名称的翻译。
  • 属性:包含每个模型的属性翻译。例如,您可以设置名称、slug、created_at等属性的翻译。
  • 导航:定义与模型关联的导航组的翻译。在这种情况下,每个模型的导航组设置为'季节 & 赛事'。

为资源类提供的 HasTranslateableResources 特性

HasTranslateableResources 特性内部自动翻译方法调用

public static function getModelLabel(): string;

public static function getPluralModelLabel(): string;

protected static function getNavigationGroup(): ?string;

示例

<?php

namespace Maggomann\YourPackageFolder\Resources;

use Filament\Resources\Resource;
use Maggomann\FilamentModelTranslator\Contracts\TranslateableResources;
use Maggomann\FilamentModelTranslator\Traits\HasTranslateableResources;

class TranslateableResource extends Resource implements TranslateableResources
{
    use HasTranslateableResources;

    protected static ?string $translateableKey = 'your-package-name::';

    public function transPackageKey(): ?string
    {
        return static::$translateableKey;
    }
}

class LeagueResource extends TranslateableResource
{
    protected static ?string $model = League::class;

class FederationResource extends TranslateableResource
{
    protected static ?string $model = Federation::class;

<?php

namespace Maggomann\YourPackageFolder\Resources;

use Filament\Resources\Resource;
use Maggomann\FilamentModelTranslator\Contracts\TranslateableResources;
use Maggomann\FilamentModelTranslator\Traits\HasTranslateableResources;

class LeagueResource  extends Resource implements TranslateableResources
{
    use HasTranslateableResources;

    protected static ?string $translateableKey = 'your-package-name::';

    public function transPackageKey(): ?string
    {
        return static::$translateableKey;
    }

    protected static ?string $model = League::class;
<?php

namespace Maggomann\YourPackageFolder\Resources;

use Filament\Resources\Resource;
use Maggomann\FilamentModelTranslator\Contracts\TranslateableResources;
use Maggomann\FilamentModelTranslator\Traits\HasTranslateableResources;

class FederationResource extends Resource implements TranslateableResources
{
    use HasTranslateableResources;

    protected static ?string $translateableKey = 'your-package-name::';

    public function transPackageKey(): ?string
    {
        return static::$translateableKey;
    }

    protected static ?string $model = Federation::class;

为关系类提供的 HasTranslateableRelationManager 特性

HasTranslateableRelationManager 特性内部自动翻译方法调用

public static function getModelLabel(): string;

public static function getPluralModelLabel(): string;

您可以使用以下方式使用HasTranslateableRelationManager特性

示例

<?php

namespace Maggomann\YourPackageFolder\Resources;

use Filament\Resources\RelationManagers\RelationManager;
use Maggomann\FilamentModelTranslator\Contracts\Translateable;
use Maggomann\FilamentModelTranslator\Traits\HasTranslateableRelationManager;

class TranslateableRelationManager extends RelationManager implements Translateable
{
    use HasTranslateableRelationManager;

    protected static ?string $translateablePackageKey = 'your-package-name::';
}
<?php

namespace Maggomann\YourPackageFolder\Resources\FederationResource\RelationManagers;


use Maggomann\YourPackageFolder\Resources\TranslateableRelationManager;

class LeaguesRelationManager extends TranslateableRelationManager
{

<?php

namespace Maggomann\YourPackageFolder\Resources\FederationResource\RelationManagers;


use Filament\Resources\RelationManagers\RelationManager;
use Maggomann\FilamentModelTranslator\Contracts\Translateable;
use Maggomann\FilamentModelTranslator\Traits\HasTranslateableRelationManager;

class LeaguesRelationManager extends RelationManager implements Translateable
{
    use HasTranslateableRelationManager;

    protected static ?string $translateablePackageKey = 'your-package-name::';

为 Eloquent 类提供的 HasTranslateableModel 特性

使用HasTranslateableModel特性,以下方法调用可用

<?php
EloquentModel::transAttribute('your_attributes_key');

// Example
TextInput::make('name')
    ->label(Federation::transAttribute('name'))
    ->required();

您可以使用以下方式使用HasTranslateableModel特性

示例

<?php

namespace Maggomann\YourPackageFolder\Models;

use Illuminate\Database\Eloquent\Model;
use Maggomann\FilamentModelTranslator\Traits\HasTranslateableModel;

class TranslateableModel extends Model
{
    use HasTranslateableModel;

    protected static ?string $translateablePackageKey = 'your-package-name::';
}
<?php

namespace Maggomann\YourPackageFolder\Models;

class Federation extends TranslateableModel
{

<?php

namespace Maggomann\YourPackageFolder\Models;

use Illuminate\Database\Eloquent\Model;
use Maggomann\FilamentModelTranslator\Traits\HasTranslateableModel;

class Federation extends Model
{
    use HasTranslateableModel;

    protected static ?string $translateablePackageKey = 'your-package-name::';

测试

composer test

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全漏洞

请审查我们的安全策略,了解如何报告安全漏洞。

鸣谢

许可证

麻省理工学院许可证(MIT)。请参阅许可证文件以获取更多信息。

免责声明

请注意,这些Filament的包不由Filament官方运营,也不提供Filament团队的支持或保修。使用这些包的风险由您自行承担。

该项目代表Filament的非官方扩展,并由一个独立的开发者社区维护。我们努力保持与当前版本的Filament的兼容性,但我们不能保证这些包能够完美运行或与Filament的将来版本兼容。

我们建议用户在使用这些包之前创建项目备份并彻底测试它们。如果您有任何问题、问题或建议,我们可以协助您。但是,请注意,我们无法为这些包提供官方支持。

我们想强调,Filament是一个独立于本项目的开发者社区。有关Filament的更多信息,请参阅官方Filament网站。

请阅读许可条款,了解使用这些包的条件。