pardalsalcap/linter-translations

Translation manager for Linter-based Laravel applications.
3
Install
composer require pardalsalcap/linter-translations
Latest Version:5.0.0
PHP:^8.2
Maintainer: pardalsalcap

Linter Translations

pardalsalcap/linter-translations extrae a package reusable el gestor de traducciones para aplicaciones Laravel basadas en Linter / Filament.

v5 supports Filament 5

Qué resuelve

  • Persistencia de traducciones en tabla language_lines
  • Sincronización desde lang/{locale}/*.php, lang/{locale}.json y lang/vendor/*/{locale}/*.php
  • Prioridad de base de datos sobre ficheros en runtime
  • Soporte para grupos locales y vendor namespace como demo::panel
  • Recurso Filament reutilizable para editar traducciones

Instalación

composer require pardalsalcap/linter-translations
php artisan migrate

Si quieres publicar la configuración:

php artisan vendor:publish --tag="linter-translations-config"

Registro en Filament

Registra el plugin en tu panel:

use Pardalsalcap\LinterTranslations\Filament\LinterTranslationsPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            LinterTranslationsPlugin::make(),
        ]);
}

Configuración

Archivo: config/linter-translations.php

Opciones principales:

  • locales: lista explícita de idiomas. Acepta ['en', 'es'] o ['en' => 'English', 'es' => 'Español'].
  • locales_config: clave de config alternativa desde la que leer los idiomas si locales está vacío.
  • navigation_group: grupo de navegación del recurso Filament.
  • model: modelo usado por spatie/laravel-translation-loader.
  • translation_manager: manager runtime que da prioridad a BD.
  • export_command: comando opcional para exponer una acción de exportación en el recurso.
  • export_role: rol requerido para ver la acción de exportación si está habilitada.

Sincronización

El package expone:

php artisan linter-translations:sync

También mantiene el alias:

php artisan app:translations-sync

Comportamiento por defecto:

  • crea claves nuevas
  • rellena idiomas faltantes
  • no sobrescribe valores ya existentes en language_lines

Para forzar sobreescritura:

php artisan linter-translations:sync --overwrite

Para limitar idiomas:

php artisan linter-translations:sync --locale=es --locale=en

Runtime

Cuando una traducción existe tanto en fichero como en language_lines, prevalece la de base de datos. Eso permite editar textos desde el CMS sin tocar el repositorio.

Testing

El package incluye tests de integración con orchestra/testbench para cubrir:

  • sync desde ficheros PHP, JSON y vendor namespace
  • comportamiento conservador sin --overwrite
  • sobreescritura explícita con --overwrite
  • prioridad de BD en runtime, incluyendo namespaces vendor

Ejecutar:

composer test