Add multi-language audio tracks and self-hosted flag-icons

Introduce per-video language support and multiple audio tracks
(VideoAudioTrack model + migrations for language, description, title),
a reusable language-select component, and a track-editor form. Bundle
the self-hosted flag-icons v7.2.3 library and a NAS auto-sync command.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
This commit is contained in:
ghassanandClaude Opus 4.7 committed 2026-05-22 21:32:52 +03:00
1 parent f8d13457fa
commit 66fd78c10f
314 files changed
+16507 -3172

No files matched your search

+3 -5
View File
@@ -10,10 +10,8 @@ class Countries
*/
public static function all(): array
{
// Generate flag emoji from ISO2 (two regional indicator letters)
$f = fn(string $c): string =>
mb_chr(0x1F1E6 + ord($c[0]) - 65) .
mb_chr(0x1F1E6 + ord($c[1]) - 65);
// Return lowercase ISO2 code — used as the fi fi-{code} CSS class (flag-icons library)
$f = fn(string $c): string => strtolower($c);
return [
@@ -305,7 +303,7 @@ class Countries
$location = $dtze->getLocation();
$countryCode = strtoupper($location['country_code'] ?? '');
$countryData = $countries[$countryCode] ?? null;
$flag = $countryData ? $countryData['flag'] : '🌐';
$flag = $countryData ? $countryData['flag'] : '';
$countryName = $countryData ? $countryData['name'] : '';
$parts = explode('/', $tz);