Files
BauIN/app/Console/Commands/ApplyProjectTranslations.php
ChristophandClaude Opus 5.5 db2d5d6228 Mehrsprachigkeit der Oberfläche (Deutsch Standard, Englisch wählbar)
- Sprache je Benutzer (users.locale), Middleware SetLocale, Auswahl unter
  Einstellungen → Darstellung; angebotene Sprachen in config/app.php
- Übersetzungen über Laravel Lang (lang/de.json, lang/de/*.php), Seitentitel
  aus #[Title] werden übersetzt
- Eigene Texte und Korrekturen in lang/project/de.json, übernommen mit
  `artisan lang:apply-project` (überstehen `lang:update`)
- Tests: jede im Code verwendete Übersetzung ist vorhanden, eigene
  Übersetzungen sind übernommen, Sprachwahl und Standardsprache;
  SecurityTest prüft Texte sprachunabhängig über __()
- lang/ von Pint ausgenommen (erzeugte Dateien)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:52:20 +02:00

42 lines
1.5 KiB
PHP

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Filesystem\Filesystem;
/**
* Überträgt die eigenen Übersetzungen aus lang/project/{locale}.json in lang/{locale}.json.
*
* lang/{locale}.json wird von Laravel Lang erzeugt; `lang:update` setzt dabei geänderte Paket-Texte
* zurück. Eigene Texte und Korrekturen stehen deshalb in lang/project/ und haben Vorrang.
*/
class ApplyProjectTranslations extends Command
{
protected $signature = 'lang:apply-project';
protected $description = 'Eigene Übersetzungen aus lang/project/ in lang/{locale}.json übernehmen';
public function handle(Filesystem $files): int
{
foreach ($files->glob(lang_path('project/*.json')) as $projectFile) {
$locale = pathinfo($projectFile, PATHINFO_FILENAME);
$target = lang_path("{$locale}.json");
$translations = $files->exists($target)
? json_decode($files->get($target), true, flags: JSON_THROW_ON_ERROR)
: [];
$project = json_decode($files->get($projectFile), true, flags: JSON_THROW_ON_ERROR);
$files->put($target, json_encode(
array_merge($translations, $project),
JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR,
).PHP_EOL);
$this->components->info(count($project)." Übersetzungen nach lang/{$locale}.json übernommen.");
}
return self::SUCCESS;
}
}