PHPackages                             pixelpeter/filament-language-tabs - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Localization &amp; i18n](/categories/localization)
4. /
5. pixelpeter/filament-language-tabs

ActiveLibrary[Localization &amp; i18n](/categories/localization)

pixelpeter/filament-language-tabs
=================================

Group multilingual fields into tabs

v3.0.0(10mo ago)138.7k↓86.7%7[1 issues](https://github.com/pixelpeter/filament-language-tabs/issues)[3 PRs](https://github.com/pixelpeter/filament-language-tabs/pulls)MITPHPPHP ^8.2|^8.3|^8.4

Since Apr 2Pushed 5mo ago1 watchersCompare

[ Source](https://github.com/pixelpeter/filament-language-tabs)[ Packagist](https://packagist.org/packages/pixelpeter/filament-language-tabs)[ Docs](https://github.com/pixelpeter/filament-language-tabs)[ RSS](/packages/pixelpeter-filament-language-tabs/feed)WikiDiscussions main Synced 2d ago

READMEChangelog (4)Dependencies (17)Versions (9)Used By (0)

[![](https://camo.githubusercontent.com/e6be630255def931bcd595970b62e82ca501722d2073037ee12b35d00710a32e/68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f46696c616d656e742532304c616e6775616765253230546162732e706e673f7468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d706978656c706574657225324666696c616d656e742d6c616e67756167652d74616273267061747465726e3d617263686974656374267374796c653d7374796c655f31266465736372697074696f6e3d47726f75702b6d756c74696c696e6775616c2b6669656c64732b696e746f2b74616273266d643d312673686f7757617465726d61726b3d3026666f6e7453697a653d313030707826696d616765733d7472616e736c617465)](https://camo.githubusercontent.com/e6be630255def931bcd595970b62e82ca501722d2073037ee12b35d00710a32e/68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f46696c616d656e742532304c616e6775616765253230546162732e706e673f7468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d706978656c706574657225324666696c616d656e742d6c616e67756167652d74616273267061747465726e3d617263686974656374267374796c653d7374796c655f31266465736372697074696f6e3d47726f75702b6d756c74696c696e6775616c2b6669656c64732b696e746f2b74616273266d643d312673686f7757617465726d61726b3d3026666f6e7453697a653d313030707826696d616765733d7472616e736c617465)

Group multilingual fields into tabs
===================================

[](#group-multilingual-fields-into-tabs)

[![Latest Version on Packagist](https://camo.githubusercontent.com/4d7817ae8f785066767f1b15be0c9287f11fd84a1751a76530f96e15c7c52c4c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f706978656c70657465722f66696c616d656e742d6c616e67756167652d746162732e7376673f7374796c653d666c61742d73717561726526743d313233)](https://packagist.org/packages/pixelpeter/filament-language-tabs)[![Total Downloads](https://camo.githubusercontent.com/523a3b3f971954518296b67d348ed0989f0433c812a50750f8771208e3fb2b01/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f706978656c70657465722f66696c616d656e742d6c616e67756167652d746162732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/pixelpeter/filament-language-tabs)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)[![Coverage Status](https://camo.githubusercontent.com/dcd12ffa2f9c240f89b0c8aa8145327c8d97e0a8a1807c7c4aaf35b8485c6c0a/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f706978656c70657465722f66696c616d656e742d6c616e67756167652d746162732f62616467652e7376673f6272616e63683d6d61696e)](https://coveralls.io/github/pixelpeter/filament-language-tabs?branch=main)[![Tests](https://github.com/pixelpeter/filament-language-tabs/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/pixelpeter/filament-language-tabs/actions/workflows/run-tests.yml)[![Fix PHP code style issues](https://github.com/pixelpeter/filament-language-tabs/actions/workflows/fix-php-code-style-issues.yml/badge.svg)](https://github.com/pixelpeter/filament-language-tabs/actions/workflows/fix-php-code-style-issues.yml)[![PHPStan](https://github.com/pixelpeter/filament-language-tabs/actions/workflows/phpstan.yml/badge.svg)](https://github.com/pixelpeter/filament-language-tabs/actions/workflows/phpstan.yml)[![dependabot-auto-merge](https://github.com/pixelpeter/filament-language-tabs/actions/workflows/dependabot-auto-merge.yml/badge.svg)](https://github.com/pixelpeter/filament-language-tabs/actions/workflows/dependabot-auto-merge.yml)

This package is a Filament plugin that allows you to group multilingual fields into tabs. It can be configured which languages are required to be filled out.

[![](images/filament-language-tabs-example.de.png)](images/filament-language-tabs-example.de.png)

Compatibility
-------------

[](#compatibility)

Filamentbranch/tagv4.xmainv3.xv2.xv2.xv1.xInstallation
------------

[](#installation)

Install the package via composer:

```
composer require pixelpeter/filament-language-tabs
```

Publish the config file with:

```
php artisan vendor:publish --tag="filament-language-tabs-config"
```

Optionally, publish the view:

```
php artisan vendor:publish --tag="filament-language-tabs-views"
```

This is the contents of the published config file:

```
return [
    /*
    |--------------------------------------------------------------------------
    | Default Locales
    |--------------------------------------------------------------------------
    |
    | These are the locales this package will use generate the tabs
    |
    */
    'default_locales' => ['de', 'en', 'fr'],
    /*
    |--------------------------------------------------------------------------
    | Required Locales
    |--------------------------------------------------------------------------
    |
    | These are the locales this package will use to set the field as required
    | This can be used if one translation or language is optional
    |
    */
    'required_locales' => ['de', 'en'],
];
```

Prerequisites
-------------

[](#prerequisites)

### Install spatie-translatable

[](#install-spatie-translatable)

```
composer require spatie/laravel-translatable
```

#### Create a model and make it translatable

[](#create-a-model-and-make-it-translatable)

```
// Models/Post.php
class Post extends Model
{
    use HasFactory, HasTranslations;

    public $translatable = ['headline', 'body', 'slug'];

    protected $casts = [
        'headline' => 'array',
        'body' => 'array',
        'slug' => 'array',
    ];

    protected $guarded = ['id'];
}
```

#### Create a migration for the model

[](#create-a-migration-for-the-model)

```
// database/migrations
...
public function up(): void
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->json('headline');
            $table->json('slug');
            $table->json('body');
            $table->timestamps();
        });
    }
...
```

Setup &amp; configuration
-------------------------

[](#setup--configuration)

#### FilamentPHP V4.x

[](#filamentphp-v4x)

##### Method 1 (preferred): Add the LanguageTabs component to the PostForm schema

[](#method-1-preferred-add-the-languagetabs-component-to-the-postform-schema)

```
// app/Filament/Resources/Posts/Schemas/PostForm.php
...
use Pixelpeter\FilamentLanguageTabs\Forms\Components\LanguageTabs;

class PostForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema
            ->components([
                LanguageTabs::make([
                    TextInput::make('headline')->label('headline')->required(),
                    TextInput::make('slug')->label('slug'),
                    MarkdownEditor::make('body')->label('body'),
                ]),
            ]);
    }
}
```

##### Method 2: Add the LanguageTabs component directly to the Filament resource

[](#method-2-add-the-languagetabs-component-directly-to-the-filament-resource)

```
// app/Filament/Resources/PostResource.php
...
use Pixelpeter\FilamentLanguageTabs\Forms\Components\LanguageTabs;

class PostResource extends Resource
{
    public static function form(Form $form): Form
    {
        return $form
            ->components([
                LanguageTabs::make([
                    Forms\Components\TextInput::make('headline')->label('headline')->required(),
                    Forms\Components\TextInput::make('slug')->label('slug'),
                    Forms\Components\MarkdownEditor::make('body')->label('body'),
                ]),
            ]);
    }
```

#### FilamentPHP V3.x

[](#filamentphp-v3x)

##### Add the LanguageTabs component to your Filament resource

[](#add-the-languagetabs-component-to-your-filament-resource)

```
// app/Filament/Resources/PostResource.php
...
use Pixelpeter\FilamentLanguageTabs\Forms\Components\LanguageTabs;

class PostResource extends Resource
{
    public static function form(Form $form): Form
    {
        return $form
            ->schema([
                LanguageTabs::make([
                    Forms\Components\TextInput::make('headline')->label('headline')->required(),
                    Forms\Components\TextInput::make('slug')->label('slug'),
                    Forms\Components\MarkdownEditor::make('body')->label('body'),
                ]),
            ]);
    }
```

#### Configure which languages to add to the tabs

[](#configure-which-languages-to-add-to-the-tabs)

```
// config/filament-language-tabs.php
return [
    'default_locales' => ['de', 'en', 'fr'],
]
```

#### Configure for which languages a field is required

[](#configure-for-which-languages-a-field-is-required)

If a field is defined as `required`

```
...
->schema([
    Forms\Components\TextInput::make('headline')->label('headline')->required(),
    ...
]),
...
```

it will only be set as required for the languages configured in `required_locals`

```
// config/filament-language-tabs.php
return [
    'required_locales' => ['de', 'en'],
]
```

[![](images/filament-language-tabs-example.fr.png)](images/filament-language-tabs-example.fr.png)*The `headline` is not (marked as) required for French language*

Testing
-------

[](#testing)

```
./vendor/bin/pest
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [the security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [pixelpeter](https://github.com/pixelpeter)
- Thanks to [ralphjsmit](https://github.com/ralphjsmit) for the inspiration of creating a [TestableForm](https://github.com/ralphjsmit/laravel-filament-components/blob/main/tests/Support/TestableForm.php)to help with testing this component
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance61

Regular maintenance activity

Popularity33

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 63.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~33 days

Total

5

Last Release

323d ago

Major Versions

v1.x-dev → v2.0.02025-04-05

v2.x-dev → v3.0.02025-08-14

PHP version history (2 changes)v1.0.0PHP ^8.1|^8.2|^8.3|^8.4

v2.0.0PHP ^8.2|^8.3|^8.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/6502630?v=4)[pixelpeter](/maintainers/pixelpeter)[@pixelpeter](https://github.com/pixelpeter)

---

Top Contributors

[![pixelpeter](https://avatars.githubusercontent.com/u/6502630?v=4)](https://github.com/pixelpeter "pixelpeter (37 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (16 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (5 commits)")

---

Tags

laravelpixelpeterfilament-language-tabs

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/pixelpeter-filament-language-tabs/health.svg)

```
[![Health](https://phpackages.com/badges/pixelpeter-filament-language-tabs/health.svg)](https://phpackages.com/packages/pixelpeter-filament-language-tabs)
```

###  Alternatives

[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3914.6k](/packages/rawilk-profile-filament-plugin)[stephenjude/filament-jetstream

A Laravel starter kit built with Filament inspired by Jetstream.

17760.2k3](/packages/stephenjude-filament-jetstream)[stephenjude/filament-debugger

About

104162.2k2](/packages/stephenjude-filament-debugger)[stephenjude/filament-two-factor-authentication

Filament Two Factor Authentication: Google 2FA + Passkey Authentication

84215.9k9](/packages/stephenjude-filament-two-factor-authentication)[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3891.8k](/packages/codewithdennis-larament)[marcelweidum/filament-passkeys

Use passkeys in your filamentphp app

6649.5k1](/packages/marcelweidum-filament-passkeys)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
