PHPackages                             sepremex/filament-translation-editor - 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. sepremex/filament-translation-editor

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

sepremex/filament-translation-editor
====================================

Manage language files with ease.

1.0.6(11mo ago)052MITPHPPHP ^8.1

Since Jun 9Pushed 11mo agoCompare

[ Source](https://github.com/Sepremex/filament-translation-editor)[ Packagist](https://packagist.org/packages/sepremex/filament-translation-editor)[ Docs](https://github.com/sepremex/filament-translation-editor)[ RSS](/packages/sepremex-filament-translation-editor/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (1)Versions (4)Used By (0)

Filament Translation Editor
===========================

[](#filament-translation-editor)

🔤 A real translation manager for Laravel 12 + Filament 3 — zero migrations, zero excuses.

---

🔧 Auto-Translation Setup
------------------------

[](#-auto-translation-setup)

### 🆓 **LibreTranslate (Recommended for Development)**

[](#-libretranslate-recommended-for-development)

**Local Docker (Free):**

```
docker run -d -p 5000:5000 --name libretranslate libretranslate/libretranslate:latest
```

**Configuration:**

```
FILAMENT_TRANSLATION_AUTO_TRANSLATE=true
FILAMENT_TRANSLATION_PROVIDER=libretranslate
LIBRETRANSLATE_URL=http://localhost:5000
# API key optional for most instances
LIBRETRANSLATE_API_KEY=
```

### 💰 **Microsoft Translator (2M chars/month free)**

[](#-microsoft-translator-2m-charsmonth-free)

1. Create Azure account
2. Create Translator resource
3. Get API key and region

```
FILAMENT_TRANSLATION_PROVIDER=microsoft
MICROSOFT_TRANSLATOR_KEY=your_key_here
MICROSOFT_TRANSLATOR_REGION=eastus
```

### 💸 **Google Translate (Paid, no free tier)**

[](#-google-translate-paid-no-free-tier)

1. Create Google Cloud account
2. Enable Translation API
3. Get API key

```
FILAMENT_TRANSLATION_PROVIDER=google
GOOGLE_TRANSLATE_KEY=your_api_key_here
```

### ⚠️ **Translation Provider Warnings:**

[](#️-translation-provider-warnings)

- **LibreTranslate**: May be slower, quality varies by language pair
- **Microsoft**: Free tier has monthly limits, then charges apply
- **Google**: No free tier, charges from first character
- **All providers**: May fail due to network issues, quotas, or API changes

\---# Filament Translation Editor

🔤 A real translation manager for Laravel 12 + Filament 3 — zero migrations, zero excuses.

> ⚠️ **EARLY RELEASE WARNING**: This is an early version under active development. While extensively tested in development environments, **use with caution in production**. Always backup your translation files before use. See [Production Usage](#-production-usage-warning) below.

---

🚨 Production Usage Warning
--------------------------

[](#-production-usage-warning)

### ⚠️ **IMPORTANT DISCLAIMER**

[](#️-important-disclaimer)

This plugin is in **early development** and, while functional, may contain bugs or edge cases not yet discovered. **I am not responsible for any data loss, corruption, or issues** that may arise from using this plugin.

### 🛡️ **Before Using in Production:**

[](#️-before-using-in-production)

1. **BACKUP EVERYTHING** — Your entire `/lang/` directory and any vendor translation files
2. **Test thoroughly** in a development environment first
3. **Start small** — Test with non-critical translation files
4. **Monitor logs** — Check `storage/logs/laravel.log` for translation service errors
5. **Have a rollback plan** — Know how to restore from backups quickly

### 🔥 **Known Potential Issues:**

[](#-known-potential-issues)

- **API quotas** — Translation providers have limits that may be exceeded
- **Network failures** — External APIs may be unreachable
- **File permissions** — Ensure Laravel can write to language directories
- **Large files** — Very large translation files may timeout
- **Concurrent edits** — Multiple users editing same files simultaneously

### 💡 **Recommended Production Setup:**

[](#-recommended-production-setup)

```
// Enable backups (strongly recommended)
'create_backup' => true,

// Disable auto-save for more control
'auto_save_changes' => false,

// Consider disabling auto-translate initially
'auto_translate' => ['enabled' => false],
```

**You have been warned. Use at your own risk.** 🫡

---

🧩 Core Features
---------------

[](#-core-features)

- ✅ Manage **core** translation files (`/lang/{locale}`, `/lang/{locale}.json`)
- ✅ Supports **package translations** in `/lang/vendor/{package}/{locale}`
- ✅ JSON support (core only — packages use PHP only)
- ✅ Nested arrays using custom `` notation (e.g., `validationbetweenstring`)
- ✅ Real-time search &amp; pagination
- ✅ Auto-save mode (optional)
- ✅ **Auto-translate with multiple providers** — LibreTranslate, Microsoft, Google
- ✅ **Auto-sync keys across languages** — add once, sync everywhere
- ✅ **Smart array cleanup** — removes empty parent arrays automatically
- ✅ **Graceful fallback** — if translation fails, returns original text
- ✅ 80+ languages with native names
- ✅ No database, no models, no crying

---

🙅 What it doesn't do (yet)
--------------------------

[](#-what-it-doesnt-do-yet)

Just to set expectations:

- ❌ Does not create backup language files
- ❌ Does not create new language files
- ❌ Does not delete files
- ❌ Does not sync missing keys (you forgot them, not me), I have another package for that.
- ❌ Does not generate Excel reports, pay taxes, or make you coffee
- ❌ Does not guarantee your translation provider won't hit quotas/limits
- ❌ Does not fix bad life choices (like not searching before adding keys)

---

🚀 Installation
--------------

[](#-installation)

```
composer require sepremex/filament-translation-editor
```

Add it to your Filament panel:

```
->plugin(\Sepremex\FilamentTranslationEditor\FilamentTranslationEditorPlugin::make())
```

---

🛠 Publishing Resources
----------------------

[](#-publishing-resources)

### Everything

[](#everything)

```
php artisan vendor:publish --provider="Sepremex\FilamentTranslationEditor\FilamentTranslationEditorServiceProvider"
```

### Config only

[](#config-only)

```
php artisan vendor:publish --tag=filament-translation-editor-config
```

### Views

[](#views)

```
php artisan vendor:publish --tag=filament-translation-editor-views
```

### Translations

[](#translations)

```
php artisan vendor:publish --tag=filament-translation-editor-translations
```

---

⚙️ Config Overview
------------------

[](#️-config-overview)

Available at: `config/filament-translation-editor.php`

```
'path' => 'lang',
'auto_save' => false,
'key_separator' => '', // not in use from config yet...
'per_page' => 20, // secret for next stage...
'search_enabled' => true,
'include_vendor_languages' => true,
'vendor_namespace' => 'vendor',
'default_locale' => 'en',
```

---

🎯 Best Practices (Or: How Not to Break Things)
----------------------------------------------

[](#-best-practices-or-how-not-to-break-things)

### 🔍 Search Before You Add

[](#-search-before-you-add)

**Golden Rule**: Always search for a key before adding it.

```
❌ Don't: Add `user.name` when `user` already exists as a string
✅ Do: Search "user" first, then decide wisely

```

The plugin will auto-sync your new keys across all languages, but it won't fix your poor life choices.

### 🧠 Nested Arrays 101

[](#-nested-arrays-101)

Use `` for nested structures:

```
✅ Good: validationemailrequired → 'validation' => ['email' => ['required' => 'value']]
❌ Bad: validation.email.required → 'validation.email.required' => 'value'

```

Dots (`.`) are **literal** — they're part of the key, not separators. Don't be that person.

### ⚡ Auto-Sync Magic

[](#-auto-sync-magic)

When you add/remove keys, they automatically sync to other languages:

- **Adding**: Creates the key in all languages (if it doesn't exist)
- **Removing**: Removes from all languages + cleans empty parent arrays
- **Existing keys**: Won't overwrite — we're smart like that

### 🚨 Common Gotchas

[](#-common-gotchas)

1. **Mixed Types**: Don't mix strings and arrays for the same key across languages
2. **Empty Search**: Use the search box — it's there for a reason
3. **Backup First**: Do it manually
4. **Case Sensitivity**: `User` ≠ `user` — Laravel cares, so should you
5. **API Limits**: Translation providers have quotas — monitor your usage
6. **Network Dependencies**: Auto-translate requires internet — have a backup plan

### 🔧 Pro Workflow

[](#-pro-workflow)

1. **🔍 Search** for existing keys first
2. **📝 Add** only what doesn't exist
3. **👀 Review** auto-translations (they're not perfect)
4. **💾 Save** (or enable auto-save for YOLO mode)
5. **📊 Monitor** logs for translation service issues
6. **🎉 Enjoy** your magically synced translations

Remember: The plugin is smarter than your average developer, but it can't fix stupidity or API outages.

---

❤️ Disclaimer
-------------

[](#️-disclaimer)

> I wanted it clean and elegant...
> But Filament had other plans.
> So here we are — custom pages, magical readers, zero database migrations, auto-sync wizardry, and translation APIs that may or may not work when you need them most.
> You're welcome... and you're warned.

Use it. Abuse it. Translate responsibly. **Backup religiously.**
Built with sarcasm, auto-sync magic, questionable life choices, and ❤️ by \[Sepremex\].

### ⚖️ Legal Stuff

[](#️-legal-stuff)

This software is provided "as is" without warranty of any kind. The author is not responsible for:

- Lost translations
- Corrupted files
- Exceeded API quotas
- Existential crises caused by bad translations
- Your production going down at 3 AM
- Angry users complaining about "Hello world" being translated to "Goodbye universe"

**Use at your own risk. Backup your stuff. Test before deploying.**

### Thanks for being a brave early adopter

[](#thanks-for-being-a-brave-early-adopter)

---

📄 License
---------

[](#-license)

MIT — porque lo bueno se comparte, excepto la responsabilidad legal.

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance52

Moderate activity, may be stable

Popularity8

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 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.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

336d ago

### Community

Maintainers

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

---

Top Contributors

[![Sepremex](https://avatars.githubusercontent.com/u/24325545?v=4)](https://github.com/Sepremex "Sepremex (8 commits)")

---

Tags

laravellocalizationmultilingualfilament

### Embed Badge

![Health badge](/badges/sepremex-filament-translation-editor/health.svg)

```
[![Health](https://phpackages.com/badges/sepremex-filament-translation-editor/health.svg)](https://phpackages.com/packages/sepremex-filament-translation-editor)
```

###  Alternatives

[themsaid/laravel-langman

Manage language files with ease.

871307.5k11](/packages/themsaid-laravel-langman)[kenepa/translation-manager

Manage your application's translation strings in Filament.

14583.6k2](/packages/kenepa-translation-manager)

PHPackages © 2026

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