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>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
cdd2d5b676
commit
db2d5d6228
@@ -0,0 +1,41 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user