PHPackages                             amzad/filament-translatable-group - 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. amzad/filament-translatable-group

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

amzad/filament-translatable-group
=================================

Simplifying managing json based translation columns using grouped fields

07PHPCI passing

Since May 9Pushed 1mo agoCompare

[ Source](https://github.com/amzad78692/filament-translatable-group)[ Packagist](https://packagist.org/packages/amzad/filament-translatable-group)[ RSS](/packages/amzad-filament-translatable-group/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Filament Translatable Group
===========================

[](#filament-translatable-group)

[![Latest Version on Packagist](https://camo.githubusercontent.com/148f535afad86c37d1541fb7fa5ce856137a1c12290dee02c47c036cf5425ba4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616d7a61642f66696c616d656e742d7472616e736c617461626c652d67726f75702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/amzad/filament-translatable-group)

Automatically generate side-by-side grouped fields for each locale — no tabs, just columns.

Works seamlessly with [spatie/laravel-translatable](https://github.com/spatie/laravel-translatable) and [lara-zeus/translatable-pro](https://larazeus.com/translatable-pro), but can be used standalone as well.

Installation
------------

[](#installation)

```
composer require amzad/filament-translatable-group
```

Then in any registered service provider `boot()` method configure the following:

```
use Amzad\FilamentTranslatableGroup\TranslatableGroup;

TranslatableGroup::configureUsing(function (TranslatableGroup $component) {
    $component
        ->localesLabels([
            'ar' => __('locales.ar'),
            'en' => __('locales.en'),
        ])
        ->locales(['ar', 'en']);
});
```

Usage
-----

[](#usage)

```
use Amzad\FilamentTranslatableGroup\TranslatableGroup;

// Single Field — via macro
TextInput::make('title')
    ->translatableGroup();

// Multiple Fields — via component
TranslatableGroup::make()
    ->schema([
        Forms\Components\TextInput::make('title'),
        Forms\Components\Textarea::make('content'),
    ]);
```

Each field is cloned for every locale and labelled `"{Original Label} ({Locale Label})"`. Fields are arranged in a 2-column grid by default (configurable via `->columns()`).

Customizations
--------------

[](#customizations)

### Modify fields per locale

[](#modify-fields-per-locale)

```
use Amzad\FilamentTranslatableGroup\TranslatableGroup;
use Filament\Forms\Components\Field;

$customizeField = function (Field $component, string $locale) {
    // ...
};

// Globally in boot method
TranslatableGroup::configureUsing(function (TranslatableGroup $component) use ($customizeField) {
    $component->modifyFieldsUsing($customizeField);
});

// Single Field
TextInput::make('title')
    ->translatableGroup(modifyFieldsUsing: $customizeField);

// Multiple Fields
TranslatableGroup::make()
    ->modifyFieldsUsing($customizeField)
    ->schema([
        Forms\Components\TextInput::make('title'),
        Forms\Components\Textarea::make('content'),
    ]);
```

### Override the default locales

[](#override-the-default-locales)

```
$localesFn = function () {
    return ['ar', 'en'];

    // Also with labels:
    return [
        'ar' => 'Arabic',
        'en' => 'English',
    ];
};

// Single Field
TextInput::make('title')
    ->translatableGroup(locales: $localesFn);

// Multiple Fields
TranslatableGroup::make()
    ->locales($localesFn)
    ->schema([
        Forms\Components\TextInput::make('title'),
        Forms\Components\Textarea::make('content'),
    ]);
```

### Override the column count

[](#override-the-column-count)

```
TranslatableGroup::make()
    ->columns(3)
    ->schema([...]);
```

Pre-made configurations
-----------------------

[](#pre-made-configurations)

### Direction by locale

[](#direction-by-locale)

Automatically sets `direction: rtl` for Arabic locales, `ltr` for all others:

```
TranslatableGroup::configureUsing(function (TranslatableGroup $component) {
    $component->addDirectionByLocale();
});
```

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 [our security policy](../../security/policy) on how to report security vulnerabilities.

License
-------

[](#license)

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

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance61

Regular maintenance activity

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/f72efe34b0691db73c33954b7f4884ae06bc920513f18f6861d91c75b7166eaa?d=identicon)[amzad78692](/maintainers/amzad78692)

---

Top Contributors

[![amzad78692](https://avatars.githubusercontent.com/u/71245144?v=4)](https://github.com/amzad78692 "amzad78692 (1 commits)")

### Embed Badge

![Health badge](/badges/amzad-filament-translatable-group/health.svg)

```
[![Health](https://phpackages.com/badges/amzad-filament-translatable-group/health.svg)](https://phpackages.com/packages/amzad-filament-translatable-group)
```

###  Alternatives

[php-translation/translator

Translator services

25224.8k5](/packages/php-translation-translator)[longman/laravel-multilang

Package to integrate multi language (multi locale) functionality in Laravel 5.x

5514.5k1](/packages/longman-laravel-multilang)[smmoosavi/php-gettext

Wrapper for php-gettext by danilo segan. This library provides PHP functions to read MO files even when gettext is not compiled in or when appropriate locale is not present on the system.

1926.6k1](/packages/smmoosavi-php-gettext)[amendozaaguiar/laraveles-spanish-for-jetstream

Archivos de traducción al español latinoamericano para Laravel con Jetstream (auth, pagination, passwords, validation + todas las cadenas de Jetstream).

1512.6k](/packages/amendozaaguiar-laraveles-spanish-for-jetstream)[laradevs/spanish

labels translated to spanish

166.7k](/packages/laradevs-spanish)

PHPackages © 2026

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