Merge branch 'live-tv'

# Conflicts:
#	lib/i18n/strings.g.dart
#	lib/i18n/strings_de.g.dart
#	lib/i18n/strings_en.g.dart
#	lib/i18n/strings_es.g.dart
#	lib/i18n/strings_fr.g.dart
#	lib/i18n/strings_it.g.dart
#	lib/i18n/strings_ko.g.dart
#	lib/i18n/strings_nl.g.dart
#	lib/i18n/strings_sv.g.dart
#	lib/i18n/strings_zh.g.dart
#	lib/screens/main_screen.dart
#	lib/services/plex_client.dart
#	lib/widgets/video_controls/desktop_video_controls.dart
This commit is contained in:
edde746
2026-02-14 22:29:16 +01:00
49 changed files with 6343 additions and 266 deletions
+88 -2
View File
@@ -65,6 +65,7 @@ class TranslationsFr with BaseTranslations<AppLocale, Translations> implements T
@override late final _TranslationsLogsFr logs = _TranslationsLogsFr._(_root);
@override late final _TranslationsLicensesFr licenses = _TranslationsLicensesFr._(_root);
@override late final _TranslationsNavigationFr navigation = _TranslationsNavigationFr._(_root);
@override late final _TranslationsLiveTvFr liveTv = _TranslationsLiveTvFr._(_root);
@override late final _TranslationsCollectionsFr collections = _TranslationsCollectionsFr._(_root);
@override late final _TranslationsPlaylistsFr playlists = _TranslationsPlaylistsFr._(_root);
@override late final _TranslationsWatchTogetherFr watchTogether = _TranslationsWatchTogetherFr._(_root);
@@ -762,6 +763,53 @@ class _TranslationsNavigationFr implements TranslationsNavigationEn {
// Translations
@override String get libraries => 'Bibliothèques';
@override String get downloads => 'Téléchargements';
@override String get liveTv => 'TV en direct';
}
// Path: liveTv
class _TranslationsLiveTvFr implements TranslationsLiveTvEn {
_TranslationsLiveTvFr._(this._root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get title => 'TV en direct';
@override String get channels => 'Chaînes';
@override String get guide => 'Guide';
@override String get recordings => 'Enregistrements';
@override String get subscriptions => 'Règles d\'enregistrement';
@override String get scheduled => 'Programmés';
@override String get noChannels => 'Aucune chaîne disponible';
@override String get noDvr => 'Aucun DVR configuré sur les serveurs';
@override String get tuneFailed => 'Impossible de syntoniser la chaîne';
@override String get loading => 'Chargement des chaînes...';
@override String get nowPlaying => 'En cours de lecture';
@override String get record => 'Enregistrer';
@override String get recordSeries => 'Enregistrer la série';
@override String get cancelRecording => 'Annuler l\'enregistrement';
@override String get deleteSubscription => 'Supprimer la règle d\'enregistrement';
@override String get deleteSubscriptionConfirm => 'Voulez-vous vraiment supprimer cette règle d\'enregistrement ?';
@override String get subscriptionDeleted => 'Règle d\'enregistrement supprimée';
@override String get noPrograms => 'Aucune donnée de programme disponible';
@override String get noRecordings => 'Aucun enregistrement programmé';
@override String get noSubscriptions => 'Aucune règle d\'enregistrement';
@override String channelNumber({required Object number}) => 'Ch. ${number}';
@override String get live => 'EN DIRECT';
@override String get hd => 'HD';
@override String get premiere => 'NOUVEAU';
@override String get reloadGuide => 'Recharger le guide';
@override String get guideReloaded => 'Données du guide rechargées';
@override String get allChannels => 'Toutes les chaînes';
@override String get now => 'Maintenant';
@override String get today => 'Aujourd\'hui';
@override String get midnight => 'Minuit';
@override String get overnight => 'Nuit';
@override String get morning => 'Matin';
@override String get daytime => 'Journée';
@override String get evening => 'Soirée';
@override String get lateNight => 'Nuit tardive';
@override String get whatsOn => 'En ce moment';
@override String get watchChannel => 'Regarder la chaîne';
}
// Path: collections
@@ -1636,6 +1684,44 @@ extension on TranslationsFr {
'licenses.licensesCount' => ({required Object count}) => '${count} licences',
'navigation.libraries' => 'Bibliothèques',
'navigation.downloads' => 'Téléchargements',
'navigation.liveTv' => 'TV en direct',
'liveTv.title' => 'TV en direct',
'liveTv.channels' => 'Chaînes',
'liveTv.guide' => 'Guide',
'liveTv.recordings' => 'Enregistrements',
'liveTv.subscriptions' => 'Règles d\'enregistrement',
'liveTv.scheduled' => 'Programmés',
'liveTv.noChannels' => 'Aucune chaîne disponible',
'liveTv.noDvr' => 'Aucun DVR configuré sur les serveurs',
'liveTv.tuneFailed' => 'Impossible de syntoniser la chaîne',
'liveTv.loading' => 'Chargement des chaînes...',
'liveTv.nowPlaying' => 'En cours de lecture',
'liveTv.record' => 'Enregistrer',
'liveTv.recordSeries' => 'Enregistrer la série',
'liveTv.cancelRecording' => 'Annuler l\'enregistrement',
'liveTv.deleteSubscription' => 'Supprimer la règle d\'enregistrement',
'liveTv.deleteSubscriptionConfirm' => 'Voulez-vous vraiment supprimer cette règle d\'enregistrement ?',
'liveTv.subscriptionDeleted' => 'Règle d\'enregistrement supprimée',
'liveTv.noPrograms' => 'Aucune donnée de programme disponible',
'liveTv.noRecordings' => 'Aucun enregistrement programmé',
'liveTv.noSubscriptions' => 'Aucune règle d\'enregistrement',
'liveTv.channelNumber' => ({required Object number}) => 'Ch. ${number}',
'liveTv.live' => 'EN DIRECT',
'liveTv.hd' => 'HD',
'liveTv.premiere' => 'NOUVEAU',
'liveTv.reloadGuide' => 'Recharger le guide',
'liveTv.guideReloaded' => 'Données du guide rechargées',
'liveTv.allChannels' => 'Toutes les chaînes',
'liveTv.now' => 'Maintenant',
'liveTv.today' => 'Aujourd\'hui',
'liveTv.midnight' => 'Minuit',
'liveTv.overnight' => 'Nuit',
'liveTv.morning' => 'Matin',
'liveTv.daytime' => 'Journée',
'liveTv.evening' => 'Soirée',
'liveTv.lateNight' => 'Nuit tardive',
'liveTv.whatsOn' => 'En ce moment',
'liveTv.watchChannel' => 'Regarder la chaîne',
'collections.title' => 'Collections',
'collections.collection' => 'Collection',
'collections.empty' => 'La collection est vide',
@@ -1643,6 +1729,8 @@ extension on TranslationsFr {
'collections.deleteCollection' => 'Supprimer la collection',
'collections.deleteConfirm' => ({required Object title}) => 'Êtes-vous sûr de vouloir supprimer "${title}" ? Cette action ne peut pas être annulée.',
'collections.deleted' => 'Collection supprimée',
_ => null,
} ?? switch (path) {
'collections.deleteFailed' => 'Échec de la suppression de la collection',
'collections.deleteFailedWithError' => ({required Object error}) => 'Échec de la suppression de la collection: ${error}',
'collections.failedToLoadItems' => ({required Object error}) => 'Échec du chargement des éléments de la collection: ${error}',
@@ -1681,8 +1769,6 @@ extension on TranslationsFr {
'playlists.errorCreating' => 'Échec de la création de playlist',
'playlists.errorDeleting' => 'Échec de suppression de playlist',
'playlists.errorLoading' => 'Échec de chargement de playlists',
_ => null,
} ?? switch (path) {
'playlists.errorAdding' => 'Échec d\'ajout dans la playlist',
'playlists.errorReordering' => 'Échec de réordonnacement d\'élément de playlist',
'playlists.errorRemoving' => 'Échec de suppression depuis la playlist',