Files
iptvnator/apps/web/src/assets/i18n/fr.json
T
4grayandClaude Fable 5 4bcd4bd390 feat(dashboard): add TMDB "Because you watched" recommendations rail (#1419)
* feat(dashboard): add TMDB "Because you watched" recommendations rail

TMDB has no account-free "for you" endpoint, so the rail seeds per-title
recommendations from up to 3 recently watched movies/series. Seeds resolve
through the enrichment facade via a shared lookup-attempt builder (extracted
from the hero service), and recommendations already ride in every cached
details payload, so watched seeds cost zero network. Per-seed lists are
interleaved round-robin, deduplicated by id and normalized title, stripped
of watched/favorited titles, and matched against imported libraries with one
batched DB_MATCH_TITLES request; only year-compatible matches render and
fewer than 5 cards hides the rail. Loads are keyed by the seed set, and a
load where no seed resolved retries instead of latching.

The header names the seed ("Because you watched X") when exactly one seed
contributed, else falls back to the generic "Recommended for you". New
dashboardRails.tmdbRecommendations toggle (default on) in Settings ->
Dashboard; 4 new i18n keys translated across all 19 locales.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): harden recommendations rail reload semantics

Address Codex review findings: the load latch is now keyed by the seed
set PLUS the watched/favorited exclusion set, so favoriting a recommended
title re-filters the rail instead of being ignored by the seed-only memo;
an emptied watch history clears the root-provided service's items and
seed titles instead of leaving a stale rail; and a load requested while
one is in flight is queued and re-run afterwards, so a mid-flight history
change cannot commit results for an obsolete seed set. The dashboard
effect now also tracks favorites. Three regression tests added.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): catalog-aware invalidation, no empty latch, original-title aliases

Address Codex round-2 findings: the load key now includes the
imported-playlist id set, so importing or deleting a playlist re-runs the
catalog matching instead of leaving dead links or hiding fresh matches; a
below-threshold (or transiently failed) match result hides the rail
WITHOUT latching, mirroring the trending rail's retry-on-empty semantics,
since matchTitles maps worker failures to an empty list; and matching plus
watched/favorited exclusion now work through both the localized TMDB title
and the original-title alias, so a catalog named in the original language
still matches while cards keep displaying the localized form. Regression
tests added for all three.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): reset latch on hide, alias-year fallback, language-keyed loads

Address Codex round-3 findings: hiding the rail below the match threshold
now also resets the saved load key, so returning to a previously
successful input set (un-favoriting, restoring a playlist) reloads instead
of dying on the equality guard; alias matching picks the first alias whose
match is also year-compatible, so a same-named different-year row hit by
the localized title no longer vetoes the correct original-title match; and
the load key now includes the effective TMDB language (exposed on the
enrichment facade), so switching the app language re-localizes the cards
instead of keeping the previous language all session. Regression tests
added for all three.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): two-tier watched-title exclusion, drop ES2019 flatMap

Address the Codex round-4 finding: a provider stores whatever the panel
named the file, so a watched "Inception 2010" never matched TMDB's
canonical "Inception" by exact key. Exclusion now runs on two tiers —
exact normalized title plus a year-gated base tier — so the year-suffixed
shape is caught while a stored "Blade Runner 2049" still cannot swallow
the 1982 film. An unknown year on either side counts as agreeing, since
re-recommending something already watched is the worse failure.

Also replaces the alias query builder's flatMap with a loop: the web app
compiles this lib against lib: es2018, where Array.prototype.flatMap does
not exist, which broke the web build and every job downstream of it.
Both exclusion tiers are pinned by mutation-verified regression tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): index recommendation exclusions the way TMDB looks them up

Address Codex round-5 findings. The watched/favorited exclusion index is
now built through the same lookup-attempt builder the seeds and the hero
use, so an activity row is indexed under the media type the detail view
enriched with rather than its routing verdict — a Stalker embedded-VOD
series routes as 'movie' but is a show to TMDB, so its recommendation
looked up series: and sailed past a movie:-only entry — and under its
stored original-language title (info.o_name), which a translated
recommendation shares no key with. Only the builder's PRIMARY attempt is
indexed: the second is a fallback guess, and indexing it would let a
watched film exclude the same-named show.

Adds Electron E2E for the new setting: the toggle now appears in the
disabled-when-dashboard-off assertion (with the trending toggle, which
was also missing), plus a restart-persistence test. Rail rendering stays
unit-covered — it needs the TMDB opt-in, live TMDB data and catalog
matches, which would make an E2E network-dependent and flaky.

All three new unit tests are mutation-verified, including one that was
passing vacuously before this round.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): keep every catalog row until the year gate has chosen

Address the Codex round-6 finding: buildTitleMatchIndex collapses to one
row per key before the candidate's year is known, so a catalog holding
both "Dune 1984" and "Dune 2021" keeps whichever the worker returned
first and a 2021 recommendation then fails the year check with the right
row already discarded. The rail now groups the rows per key itself and
lets the year gate pick, still preferring an exact-title match over a
year-stripped one so the shared helper's precedence is preserved.
Mutation-verified regression test.

The trending rail shares the same collapse-then-check shape and is
unaffected by this PR; flagged separately as a follow-up.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): survive a failed refresh, document the new rail

Address Codex round-7 findings.

A refresh that cannot reach TMDB no longer leaves the rail untouched, but
it does not blank it either: a failed request is not a verdict that there
is nothing to recommend, and removing still-valid cards is the worse
answer for an offline user. What the failure cannot excuse is a card the
user has since watched or favorited, so the retained cards are re-filtered
against the fresh exclusion index and the rail hides if too few survive.
The key stays unlatched, so the next visit still retries.

Also documents the rail in the two canonical dashboard docs I missed:
the surface diagram and render rules in docs/architecture/workspace-dashboard.md
and the rail list in the feature README. Both had also never mentioned the
sibling trending rail, so that gap is closed in the same pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): year-aware exclusions, remake-safe dedupe, key reset

Address Codex round-8 findings.

The exclusion index now records each row's release year (Stalker's
info.releasedate, else a year read off the title) with every key, and both
tiers gate on it, so a watched 1954 "Godzilla" no longer excludes the 2014
one. A row that states no year records null and keeps excluding
unconditionally, so the conservative behaviour survives where nothing is
known.

Candidate dedupe is by TMDB id only; title collisions are resolved after
matching, by the catalog row a candidate resolved to. Same-titled remakes
("Dune" 1984 and 2021) are different films and must both reach the
matcher — collapsing them beforehand let whichever arrived first fail the
year gate on behalf of the one the library actually holds — while two
candidates landing on one row would render as duplicate cards.

The offline re-filter now clears the saved load key, so restoring those
exact inputs (un-favoriting the title) rebuilds the rail instead of
hitting the equality guard.

Splits the pure helpers and data shapes into dashboard-recommendations.util.ts:
the service had crossed the 400-line production limit. All three fixes are
mutation-verified, including one test that only became real after the
mutation showed it passing on the wrong ordering.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): do not latch a partially resolved seed set

Address the Codex round-9 finding: when several seeds load and only some
resolve, latching marked the whole set complete, so a seed that failed
transiently lost its recommendations for the rest of the session. The load
now latches only once every seed has answered.

A seed with no TMDB match never resolves either, so that user's rail
re-runs on each dashboard visit. That is bounded work — the enrichment
misses are cached and the catalog match is one batched worker call — and
it matches the rail's existing policy of not latching on uncertainty.
Mutation-verified regression test, plus one pinning that a fully resolved
set still latches.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): trust only stated years on the exact exclusion tier

Address Codex round-10 findings.

The first is a regression I introduced last round: recording a
title-inferred year with the exact exclusion key meant a watched
"Blade Runner 2049" carried year 2049, disagreed with TMDB's actual 2017,
and stopped excluding the very film the user had just watched. The exact
tier now gates only on a year the row STATES in a metadata field
(Stalker's info.releasedate) — the rule releaseTagYear already documents:
on a whole-title match a trailing number belongs to the name and nothing
can settle it. The base tier keeps its stripped trailing year, which is a
suffix by construction, so the Godzilla 1954/2014 case still holds.

The offline re-filter also drops cards whose playlist has been deleted.
That path is the only one that can reach retained cards without the
catalog key rebuilding the rail, so those cards would otherwise navigate
to a dead route.

Both fixes are mutation-verified.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): resolved media type replaces the routing one; prefer year-tagged rows

Address Codex round-11 findings.

The exclusion index no longer indexes an activity row under BOTH its
routing type and its resolved media type. A Stalker embedded-VOD series
routes as 'movie' on positive series evidence, so keeping that key made a
watched show exclude an unrelated film of the same name — and, with no
release date to gate on, unconditionally. The resolved type now replaces
the routing one; a row the builder cannot classify keeps its routing type,
which is then the only thing known.

Catalog matching now prefers a row whose stripped year IS the candidate's
over an untagged one: an untagged "Dune" row could be either cut, so
linking a 2021 recommendation to it while "Dune 2021" also exists throws
away the better evidence. Untagged rows stay next in precedence, which is
also the only tier reachable when the candidate's year is unknown.

Both mutation-verified.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): no TV retry for catalog-classified Xtream rows

Address the Codex round-12 finding: the movie -> tv lookup retry exists
because a Stalker embedded-VOD series is stored as a 'movie' activity row,
but an Xtream row's type comes from a catalog that files movies and series
apart, so there 'movie' is evidence rather than a default. The retry let a
same-titled show answer for a film — the mirror of the existing rule that
a 'tv' verdict never retries as 'movie'.

The lookup item type had dropped the `source` field that distinguishes
them; restoring it is enough to gate the retry. This also tightens the
hero rail, which shares the builder. Mutation-verified.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): confirmed movies skip the TV retry; key by the whole attempt chain

Address Codex round-13 findings, both consequences of last round's change.

A stored Stalker `info.tmdb_id` is never a provider claim — the contract
says its only source is a match this app already gated, under that very
media type — so such a row's 'movie' verdict is no longer the ambiguous
default the TV retry exists for. Retrying it let a same-titled show answer
for a film whenever the movie lookup transiently returned null. The retry
now runs only for rows nothing has confirmed.

The lookup key is now the whole attempt sequence rather than the primary
attempt alone: two rows can share title, year and id yet differ in whether
a TV fallback follows, and callers cache by this key — the hero's
root-level memo would otherwise serve a Stalker row's TV answer as an
Xtream movie's metadata, and selectSeeds() would collapse two seeds that
do not perform the same lookup.

Both mutation-verified. One existing hero test asserted the retry for a
fixture that carries a stored id; it now pins the confirmed-identity
behaviour instead, with a separate test for the id-less retry it used to
cover.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(dashboard): rank catalog matches by year evidence across aliases

Address the Codex round-14 finding: match selection returned as soon as
any alias had a compatible row, so an untagged row under the localized
title beat a row the original-title alias found carrying the candidate's
own year — the wrong remake when both cuts exist. Compatible rows from
every alias now form one pool ranked by evidence, with alias order kept
only as the tiebreaker inside a tier. The nested loop collapses into a
single pass in the process. Mutation-verified.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 07:39:43 +02:00

1574 lines
95 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"CANCEL": "Annuler",
"CLEAR": "Effacer",
"CLOSE": "Fermer",
"BACK": "Retour",
"SHOW_MORE": "Plus",
"SHOW_LESS": "Moins",
"PLAYLISTS": "Listes de lecture",
"HOME": {
"TITLE": "IPTVnator",
"SUBTITLE": "Choisissez une liste de lecture, ou ajoutez en une nouvelle via un transfert de fichier ou via une URL",
"TABS": {
"RECENTLY_ADDED": "Récemment ajoutés",
"FILE_UPLOAD": "Ajouter un fichier",
"URL_UPLOAD": "Ajouter une URL",
"TEXT_IMPORT": "Importer sous forme de texte",
"XTREME_IMPORT": "Ajouter Xtreme Code",
"STALKER_PORTAL_IMPORT": "Ajouter un portail Stalker"
},
"PLAYLISTS": {
"NO_PLAYLISTS": "Aucune liste de lecture n'a été ajoutée",
"ADD_FIRST": "Veuillez ajouter votre première liste de lecture depuis un autre onglet",
"WELCOME_TITLE": "Bienvenue sur IPTVnator",
"WELCOME_DESCRIPTION": "Commencez votre voyage de streaming en ajoutant votre première liste de lecture. Connectez-vous à votre service IPTV préféré et profitez de la télévision en direct, des films et des séries.",
"ADD_YOUR_FIRST": "Ajouter votre première liste",
"FEATURE_M3U": "Fichiers M3U/M3U8",
"FEATURE_XTREAM": "Xtream Codes",
"FEATURE_STALKER": "Portail Stalker",
"FEATURE_M3U_LABEL": "Add an M3U file or URL",
"FEATURE_XTREAM_LABEL": "Connect via Xtream Codes",
"FEATURE_STALKER_LABEL": "Connect to a Stalker portal",
"VALUE_PROPS_LABEL": "What you can do",
"VALUE_PROP_LIVE": "Live TV with EPG",
"VALUE_PROP_VOD": "Movies & Series",
"VALUE_PROP_MULTISOURCE": "Multi-source library",
"VALUE_PROP_OFFLINE": "Offline downloads",
"DASHBOARD_WELCOME_TAGLINE": "Your IPTV library, in one place.",
"DASHBOARD_WELCOME_DESCRIPTION": "Connect M3U files, Xtream Codes, or Stalker portals — then enjoy live TV, movies and series on every screen.",
"FEATURE_LIVE_TITLE": "Live TV",
"FEATURE_LIVE_DESC": "Stream live channels with full schedule.",
"FEATURE_VOD_TITLE": "Movies & Series",
"FEATURE_VOD_DESC": "On-demand library with covers and details.",
"FEATURE_EPG_TITLE": "EPG & Catch-up",
"FEATURE_EPG_DESC": "Program guide and time-shifted playback.",
"FEATURE_OFFLINE_TITLE": "Offline downloads",
"FEATURE_OFFLINE_DESC": "Save movies and episodes for later.",
"SOURCES_WELCOME_TITLE": "Add your first playlist",
"SOURCES_WELCOME_BODY": "Pick a source type below to get started.",
"SOURCE_M3U_NEEDS": "Local file or URL pointing to an M3U/M3U8 playlist.",
"SOURCE_M3U_ADD": "Add M3U",
"SOURCE_XTREAM_NEEDS": "Username, password and server URL from your provider.",
"SOURCE_XTREAM_ADD": "Add Xtream",
"SOURCE_STALKER_NEEDS": "Portal URL and MAC address (Ministra-compatible).",
"SOURCE_STALKER_ADD": "Add Stalker",
"CONTENT_LIVE": "Live",
"CONTENT_VOD": "Movies",
"CONTENT_SERIES": "Series",
"CONTENT_EPG": "EPG",
"NO_RESULTS_TITLE": "Aucune liste trouvée",
"NO_RESULTS_DESCRIPTION": "Aucune liste ne correspond à votre recherche. Essayez d'ajuster vos termes de recherche ou effacez le filtre pour voir toutes les listes.",
"ADDED_VIA_URL": "Ajouté par URL. URL :",
"ADDED_VIA_FILE": "Ajouté par transfert de fichier",
"XTREAM_PLAYLIST": "Liste Xtream",
"STALKER_PORTAL": "Portail Stalker",
"CHANNELS": "Chaînes",
"ADDED": "Ajouté",
"SHOW_DETAILS": "Afficher les détails de la liste de lecture",
"REMOVE": "Retirer la liste de lecture",
"SEARCH_PLAYLISTS": "Rechercher des listes par titre",
"INFO_DIALOG": {
"PLAYLIST_DETAILS": "Détails de la liste de lecture",
"TITLE": "Titre",
"FROM_URL": "Ajouté par URL",
"IMPORT_DATE": "Date d'importation",
"CHANNELS": "Nombre de chaînes",
"CLOSE": "Fermer",
"SAVE": "Enregistrer",
"USER_AGENT": "Agent utilisateur",
"ORIGINAL_FILENAME": "Nom du fichier d'origine",
"FILE_PATH": "Chemin du fichier",
"UPDATE_FAILED": "Échec de la dernière mise à jour de liste de lecture",
"AUTO_UPDATE": "Mise à jour automatique",
"AUTO_UPDATE_DESCRIPTION": "Si la fonction de mise à jour automatique est activée, la liste de lecture sera mise à jour automatiquement à chaque fois que l'app est lancée.",
"CUSTOM_USER_AGENT": "Certains fournisseurs d'IPTV requièrent un agent utilisateur spécifique afin de lire leur liste de lecture.",
"EXPORT_PLAYLIST": "Exporter la liste de lecture en m3u",
"SERVER_URL": "URL du serveur",
"USERNAME": "Nom d'utilisateur",
"PASSWORD": "Mot de passe",
"MAC_ADDRESS": "Adresse Mac",
"PLAYLIST_EXPORT_SUCCESS": "La liste de lecture a été exportée avec succès.",
"PLAYLIST_EXPORT_ERROR": "Erreur : Échec de l'exportation de la liste de lecture.",
"COPY_URL": "Copier l'URL dans le presse-papiers",
"URL_COPIED": "URL copiée dans le presse-papiers"
},
"REMOVE_DIALOG": {
"TITLE": "Retirer la liste de lecture",
"MESSAGE": "Êtes-vous certain de vouloir complètement retirer cette liste de lecture ?",
"SUCCESS": "La liste de lecture a été supprimée avec succès",
"IN_PROGRESS": "Suppression de la liste de lecture…",
"DELETING_FAVORITES": "Suppression des favoris…",
"DELETING_RECENT": "Suppression des éléments récemment consultés…",
"DELETING_PROGRESS": "Suppression de la progression de lecture…",
"DELETING_DOWNLOADS": "Suppression des téléchargements…",
"DELETING_CONTENT": "Suppression du contenu en cache…",
"DELETING_CATEGORIES": "Suppression des catégories…",
"DELETING_PLAYLIST": "Suppression de l'enregistrement de la liste de lecture…"
},
"UPDATED": "Mis à jour",
"REFRESH": "Mettre à jour la liste de lecture",
"REFRESH_XTREAM": "Actualiser la liste Xtream depuis le serveur",
"REFRESH_XTREAM_DIALOG": {
"TITLE": "Actualiser la liste Xtream",
"MESSAGE": "Cela supprimera le cache Xtream local et réimportera les catégories et les flux depuis le serveur distant. Les favoris, les éléments récemment consultés, la visibilité des catégories masquées et la progression de lecture seront restaurés après une réimportation réussie si le contenu correspondant existe toujours. Si le serveur est inaccessible, la restauration restera en attente jusqu'à une prochaine actualisation réussie. Continuer ?",
"STARTED": "Actualisation démarrée. Navigation vers la liste de lecture...",
"ERROR": "Échec de l'actualisation de la liste de lecture. Veuillez réessayer.",
"IN_PROGRESS": "Actualisation de la liste de lecture…",
"COLLECTING_DATA": "Collecte des favoris et des éléments récemment consultés…",
"DELETING_CONTENT": "Suppression du contenu en cache…",
"DELETING_CATEGORIES": "Suppression des catégories en cache…"
},
"GLOBAL_FAVORITES": "Favoris globaux",
"GLOBAL_FAVORITES_DESCRIPTION": "Liste de lecture générée automatiquement avec les favoris agrégés de toutes les listes",
"MY_PLAYLISTS": "Mes listes de lecture",
"MY_PLAYLISTS_SUBTITLE": "toutes les listes disponibles",
"PLAYLIST_UPDATE_SUCCESS": "Succès ! La liste de lecture a été mise à jour avec succès.",
"PLAYLIST_UPDATE_ERROR": "Erreur lors de la mise à jour des détails de la liste.",
"PLAYLIST_UPDATE_FILE_NOT_FOUND": "Échec de l'actualisation de la liste de lecture. Le fichier local n'est plus disponible. Vérifiez le chemin du fichier ou réimportez la liste de lecture.",
"PLAYLIST_UPDATE_FILE_ACCESS_ERROR": "Échec de l'actualisation de la liste de lecture. L'application ne peut plus accéder au fichier local.",
"AUTO_REFRESH_UPDATE_SUCCESS": "Succès ! Les listes de lecture ont été mises à jour avec succès",
"AUTO_REFRESH_UPDATE_PARTIAL": "Actualisation automatique incomplète : {{updated}} listes de lecture sur {{total}} mises à jour, {{failed}} en échec.",
"AUTO_REFRESH_UPDATE_PARTIAL_WITH_SKIPPED": "Actualisation automatique incomplète : {{updated}} listes de lecture sur {{total}} mises à jour, {{failed}} en échec, {{skipped}} ignorées (aucune URL ni chemin de fichier).",
"AUTO_REFRESH_UPDATE_FAILED": "Échec de l'actualisation automatique. Aucune des {{total}} listes de lecture n'a pu être mise à jour.",
"AUTO_REFRESH_UPDATE_SKIPPED": "Actualisation automatique des listes de lecture : {{updated}} sur {{total}} mises à jour, {{skipped}} ignorées (aucune URL ni chemin de fichier).",
"AUTO_REFRESH_ENABLED": "Actualisation automatique activée"
},
"ADD_PLAYLIST": {
"PICK_METHOD": "Choisissez comment vous souhaitez vous connecter. Vous pourrez renommer la liste plus tard.",
"METHOD_URL_LABEL": "URL M3U",
"METHOD_URL_SUB": "Collez un lien vers un fichier .m3u ou .m3u8 distant",
"METHOD_FILE_LABEL": "Fichier M3U",
"METHOD_FILE_SUB": "Téléversez une liste de lecture depuis votre ordinateur",
"METHOD_XTREAM_LABEL": "Identifiants Xtream",
"METHOD_XTREAM_SUB": "Connectez-vous avec hôte, nom d'utilisateur et mot de passe",
"METHOD_STALKER_LABEL": "Portail Stalker",
"METHOD_STALKER_SUB": "Adresse MAC et URL du portail",
"METHOD_TEXT_LABEL": "Texte m3u brut",
"METHOD_TEXT_SUB": "Pour les listes ponctuelles ou quand vous n'avez que du texte"
},
"FILE_UPLOAD": {
"DRAG_DROP": "Glissez un fichier ici",
"OR": "ou",
"CHOOSE_PLAYLIST": "Choisir une liste de lecture",
"BROWSE": "Parcourir les fichiers",
"REJECTED": "Le fichier a été rejeté, format de fichier non pris en charge {{filename}}.",
"OPEN_FAILED": "Impossible d’ouvrir \"{{filename}}\"."
},
"URL_UPLOAD": {
"PLAYLIST_URL": "URL de la liste de lecture (m3u, m3u8)",
"ADD_PLAYLIST": "Ajouter la liste de lecture",
"CORS_NOTE": "Remarque : Pour éviter les problèmes CORS, l'application utilise un service proxy CORS public. Si vous souhaitez télécharger une liste avec des données sensibles, il est plus sûr de l'importer depuis un fichier.",
"ERROR_FETCH_FAILED": "Échec de la récupération de la liste de lecture. Veuillez vérifier l'URL et réessayer.",
"ERROR_403": "Accès refusé (403) : le serveur a refusé la requête. L'URL peut nécessiter une authentification ou la liste de lecture est restreinte.",
"ERROR_404": "Liste de lecture introuvable (404) : l'URL ne pointe pas vers une liste de lecture valide. Veuillez vérifier l'URL.",
"ERROR_401": "Non autorisé (401) : une authentification est requise pour accéder à cette liste de lecture.",
"ERROR_INVALID_TLS": "Certificate for this playlist host is invalid.",
"ERROR_TLS_HOST_UNKNOWN": "Could not determine the playlist host. Please retry manually.",
"TRUST_TLS_HOST": "Trust host",
"TRUST_TLS_HOST_TITLE": "Trust invalid certificate?",
"TRUST_TLS_HOST_WARNING": "Only continue if you trust this playlist host. IPTVnator will allow invalid TLS certificates for this host, but other hosts still require valid certificates."
},
"TEXT_IMPORT": {
"LABEL": "Insérer la liste m3u(8) sous forme de texte",
"BUTTON_LABEL": "Importer"
},
"XTREAM_PLAYLIST": {
"TITLE": "Titre de la liste",
"SERVER_URL": "URL du serveur",
"USERNAME": "Nom d'utilisateur",
"PASSWORD": "Mot de passe",
"ADD": "Ajouter",
"TEST_CREDENTIALS": "Tester les identifiants",
"URL_VALIDATION_ERROR": "Doit être une URL valide avec un protocole (par exemple http://example.com ou https://example.com:4324)"
},
"STALKER_PORTAL": {
"TITLE": "Titre",
"MAC_ADDRESS": "Adresse Mac",
"MAC_ADDRESS_HINT": "Format 00:1A:79:XX:XX:XX. Les tirets, les points et les minuscules sont corrigés automatiquement.",
"MAC_ADDRESS_OUI_HINT": "Cette adresse ne fait pas partie de la plage 00:1A:79 d'Infomir. La plupart des portails n'acceptent que cette plage et rejettent toute autre adresse sans en indiquer la raison.",
"MAC_ADDRESS_ERROR": "Saisissez une adresse MAC de 12 caractères hexadécimaux, par exemple 00:1A:79:12:34:56.",
"SERIAL_NUMBER": "Numéro de série (optionnel)",
"SERIAL_NUMBER_HINT": "À utiliser si déjà enregistré auprès du fournisseur",
"DEVICE_ID_1": "ID d'appareil 1 (optionnel)",
"DEVICE_ID_2": "ID d'appareil 2 (optionnel)",
"DEVICE_ID_HINT": "64 caractères hexadécimaux — à utiliser si le fournisseur exige un ID d'appareil spécifique",
"DERIVE_DEVICE_IDS": "Générer les ID d'appareil à partir de l'adresse MAC",
"DERIVE_DEVICE_IDS_HINT": "Produit la même valeur que StbEmu (SHA-256 de l'adresse MAC). Le portail mémorise définitivement le premier ID d'appareil qu'il reçoit et refuse tous les suivants. N'activez donc cette option que pour une adresse MAC que le portail n'a jamais vue, ou pour une adresse MAC que vous utilisez déjà avec un ID généré par StbEmu.",
"DEVICE_ID_PINNED_WARNING": "Le portail a déjà enregistré un ID d'appareil pour cette adresse MAC. Le modifier ou l'effacer bloquera l'accès à cette source, car le portail n'accepte que l'ID d'appareil qu'il a vu en premier.",
"SIGNATURE_1": "Signature 1 (optionnelle)",
"SIGNATURE_2": "Signature 2 (optionnelle)",
"SIGNATURE_HINT": "64 caractères hexadécimaux — à utiliser si le fournisseur exige des signatures de vérification d'appareil",
"SERVER_URL": "URL du serveur",
"URL_HINT": "Saisissez un hôte ou une adresse se terminant par /c, portal.php ou server/load.php.",
"URL_VALIDATION_ERROR": "Saisissez une URL valide commençant par http:// ou https://.",
"ADD": "Ajouter",
"VALIDATING": "Validation du portail…",
"CREDENTIALS_HINT": "Nécessaire uniquement lorsque le portail demande un identifiant et un mot de passe",
"AUTH_FAILED": "Échec de l'authentification auprès du portail. Vérifiez l'URL et l'adresse MAC.",
"EDIT_UNREACHABLE": "Le portail n'a pas répondu. Aucune modification n'a été enregistrée. Vérifiez l'URL et réessayez.",
"LOGIN_REQUIRED": "Ce portail nécessite un identifiant et un mot de passe. Renseignez les champs nom d'utilisateur et mot de passe, puis réessayez.",
"LOGIN_REJECTED": "Le portail a rejeté l'identifiant et le mot de passe.",
"PORTAL_REFUSED": "Le portail a refusé l'accès pour cet appareil.",
"DEVICE_CONFLICT": "Le portail a enregistré un autre ID d'appareil pour cette adresse MAC.",
"PORTAL_MESSAGE": "Le portail a signalé : {{message}}"
},
"FILTER_BY_NAME": "Filtrer par nom",
"FILTER_AND_SORT": "Filtrer et trier",
"SORT_PLAYLISTS": "Trier les listes",
"SORT_OPTIONS": {
"NAME_ASC": "Nom (A-Z)",
"NAME_DESC": "Nom (Z-A)",
"NEWEST": "Date d'ajout (Plus récent)",
"OLDEST": "Date d'ajout (Plus ancien)",
"CUSTOM_ORDER": "Ordre personnalisé (Drag & Drop)"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (local, URL, texte)",
"XTREAM": "Xtream",
"STALKER": "Stalker"
},
"IMPORTED_AS_TEXT": "Importé sous forme de texte",
"PARSING_ERROR": "Erreur : échec de l'analyse, liste de lecture non valide :"
},
"SETTINGS": {
"TITLE": "Paramètres",
"GENERAL": "Général",
"GENERAL_SUBTITLE": "Modifier la configuration de l'application",
"PLAYBACK": "Lecture",
"EPG_SOURCES": "Sources EPG",
"EPG_SOURCES_DESCRIPTION": "Ajoutez une ou plusieurs URL comme sources EPG",
"PLAYLIST_EPG_SOURCES_AUTO_SELECTED": "{{enabled}} of {{detected}} detected playlist EPG sources were auto-selected for import.",
"EPG_EMPTY_TITLE": "No EPG sources yet",
"EPG_EMPTY_HINT": "Add a URL to fetch program data for your channels.",
"PREFER_UPLOADED_EPG_TITLE": "Préférer vos sources EPG pour les playlists Xtream",
"PREFER_UPLOADED_EPG_HINT": "Par défaut, les playlists Xtream utilisent le guide des programmes de votre fournisseur, et vos sources EPG ne comblent que les chaînes manquantes. Activez cette option pour utiliser d'abord votre EPG.",
"DATA": "Données",
"BACKUP": "Backup",
"BACKUP_DESCRIPTION": "Export your library as a snapshot, or restore from a previous backup.",
"RESET": "Reset",
"RESET_DESCRIPTION": "Permanently delete content stored in this app.",
"ABOUT": "À propos",
"NAV_GENERAL": "Général",
"NAV_PLAYBACK": "Lecture",
"NAV_EPG": "EPG",
"NAV_REMOTE": "Télécommande",
"NAV_DATA": "Données",
"NAV_BACKUP": "Backup",
"NAV_RESET": "Reset",
"NAV_ABOUT": "À propos",
"NAV_TMDB": "Métadonnées",
"TMDB": "Métadonnées (TMDB)",
"TMDB_DESCRIPTION": "Enrichir les détails des films et séries avec les données de The Movie Database",
"TMDB_ENABLE": "Activer les métadonnées TMDB",
"TMDB_ENABLE_DESCRIPTION": "Améliore les synopsis, la distribution, les notes et les visuels dans les vues détaillées. Lorsque cette option est activée, les titres des films et séries sont envoyés à TMDB.",
"TMDB_API_KEY": "Clé API TMDB (optionnelle)",
"TMDB_API_KEY_DESCRIPTION": "Utiliser votre propre clé API TMDB au lieu de celle intégrée",
"TMDB_GET_KEY_HINT": "Obtenez une clé API gratuite sur themoviedb.org",
"TMDB_TEST_BUTTON": "Vérifier la clé",
"TMDB_TEST_SUCCESS": "La clé fonctionne — TMDB a répondu avec succès",
"TMDB_TEST_FAILED": "Échec de la vérification — TMDB a rejeté la clé ou est injoignable",
"TMDB_CACHE": "Cache des métadonnées",
"TMDB_CACHE_DESCRIPTION": "Les métadonnées téléchargées sont stockées localement pour que les pages de détails s'ouvrent instantanément. Après le vidage, l'application récupérera des données fraîches.",
"TMDB_CACHE_SIZE": "{{entries}} entrées · {{size}}",
"TMDB_CACHE_CLEAR": "Vider le cache",
"TMDB_CACHE_ERROR": "Impossible de lire le cache — réessayez",
"TMDB_CREDITS": "Métadonnées",
"TMDB_ATTRIBUTION": "Ce produit utilise l'API TMDB mais n'est ni approuvé ni certifié par TMDB.",
"APP_PREFERENCES": "Préférences de l'application",
"HERO_EYEBROW": "Paramètres de l'espace de travail",
"HERO_TITLE": "Façonnez l'expérience IPTVnator",
"HERO_DESCRIPTION": "Réglez la lecture, les guides, l'accès distant et la gestion des données depuis un seul endroit, sans perdre le style actuel de l'espace de travail.",
"SUBTITLE": "Modifiez la configuration de l'application",
"DESCRIPTION": "Changez les options de la liste ci-dessous et enregistrez vos modifications.",
"EPG_URL_LABEL": "URL du EPG (*.xml ou *.xml.gz)",
"EPG_URL_PLACEHOLDER": "Saisir une URL",
"REFRESH_EPG": "Mise à jour de l'EPG",
"REFRESH_ALL_EPG": "Tout actualiser",
"REMOVE_EPG_SOURCE": "Supprimer la source EPG",
"EPG_STATUS_FRESH": "À jour",
"EPG_STATUS_STALE": "À actualiser",
"EPG_STATUS_ERROR": "Échec",
"VIDEO_PLAYER_LABEL": "Lecteur vidéo",
"PLAYER_HTML5": "Lecteur vidéo HTML5",
"PLAYER_VIDEOJS": "Lecteur Video.js",
"PLAYER_ARTPLAYER": "ArtPlayer",
"PLAYER_EMBEDDED_MPV": "MPV intégré (expérimental)",
"PLAYER_MPV": "Lecteur MPV",
"PLAYER_VLC": "VLC",
"VIDEO_PLAYER_PLACEHOLDER": "Choisir une option",
"VERSION": "Version",
"SAVE_CHANGES": "Enregistrer les modifications",
"UNSAVED_CHANGES": "Vous avez des modifications non enregistrées",
"DISCARD_CHANGES": "Annuler les modifications",
"UNSAVED_DIALOG_TITLE": "Modifications non enregistrées",
"UNSAVED_DIALOG_MESSAGE": "Vous avez des modifications non enregistrées dans les paramètres. Voulez-vous les enregistrer avant de quitter ?",
"UNSAVED_DIALOG_SAVE": "Enregistrer et quitter",
"UNSAVED_DIALOG_DISCARD": "Quitter sans enregistrer",
"UNSAVED_DIALOG_STAY": "Continuer la modification",
"UNSAVED_DIALOG_INVALID_HINT": "Certains champs sont invalides, les modifications ne peuvent donc pas encore être enregistrées.",
"BACK_TO_HOME": "Retourner à l'accueil",
"NEW_VERSION_AVAILABLE": "Une nouvelle version est disponible",
"LATEST_VERSION": "Vous utilisez la dernière version",
"STREAM_FORMAT": "Format du flux",
"OPEN_EXTERNAL_PLAYER_ON_DOUBLE_CLICK": "Lancer MPV/VLC par double-clic",
"OPEN_EXTERNAL_PLAYER_ON_DOUBLE_CLICK_DESCRIPTION": "Exiger un double-clic sur les lignes de chaînes avant de lancer la lecture avec MPV ou VLC.",
"LANGUAGE": "Langue",
"SETTINGS_SAVED": "La configuration a été enregistrée avec succès.",
"SETTINGS_SAVE_FAILED": "Les paramètres n'ont pas pu être enregistrés. Vos modifications seront perdues au redémarrage de l'application.",
"SETTINGS_LOAD_FAILED": "Les paramètres enregistrés n'ont pas pu être chargés — les valeurs par défaut sont affichées. Vérifiez qu'aucune autre copie de l'application n'est ouverte.",
"THEME": "Thème",
"SHOW_CAPTIONS": "Afficher les sous-titres",
"SHOW_DASHBOARD": "Afficher le tableau de bord",
"SHOW_DASHBOARD_DESCRIPTION": "Garde le tableau de bord disponible dans le rail de l'espace de travail. Lorsqu'il est désactivé, Sources devient la première page de l'espace de travail.",
"ADD_EPG_SOURCE": "Ajouter une source EPG",
"CLEAR_EPG_DATA": "Effacer les données EPG",
"CLEAR_EPG_DIALOG": {
"TITLE": "Effacer les données EPG",
"MESSAGE": "Êtes-vous sûr de vouloir supprimer toutes les données EPG (Guide électronique des programmes) de la base de données ? Cela supprimera tous les programmes mis en cache."
},
"EPG_DATA_CLEARED": "Les données EPG ont été effacées",
"EPG_DATA_CLEAR_FAILED": "Échec de l'effacement des données EPG. Veuillez réessayer.",
"CLEARING_EPG_DATA": "Effacement…",
"EPG_URL_ERROR": "La valeur n'est pas une URL valide",
"VIDEO_PLAYER_DESCRIPTION": "Sélectionnez le lecteur vidéo par défaut",
"WEB_PLAYER_SHARED_CONTROLS": "Commandes unifiées pour les lecteurs web (expérimental)",
"WEB_PLAYER_SHARED_CONTROLS_DESCRIPTION": "Utilise les commandes partagées d’IPTVnator dans HTML5, Video.js et ArtPlayer.",
"PLAYER_AMBIENT_MODE": "Mode ambiant",
"PLAYER_AMBIENT_MODE_DESCRIPTION": "Remplit l'espace autour du lecteur avec une affiche floue et assombrie au lieu de barres noires simples.",
"PLAYER_UP_NEXT_RAIL": "Rail d'épisodes « À suivre »",
"PLAYER_UP_NEXT_RAIL_DESCRIPTION": "Sur les fenêtres larges, ancre le lecteur de séries à gauche et affiche les épisodes à venir à côté.",
"STREAM_FORMAT_DESCRIPTION": "Sélectionnez le format de flux par défaut (xtream)",
"LANGUAGE_DESCRIPTION": "Sélectionnez la langue de l'application",
"THEME_DESCRIPTION": "Sélectionnez le thème visuel de l'application",
"COVER_SIZE": "Taille des affiches",
"COVER_SIZE_DESCRIPTION": "Ajustez la taille des cartes affiches dans les grilles et les rails. Les grandes tailles sont plus faciles à voir sur les téléviseurs ; les petites tailles affichent plus de contenu par ligne sur les grands écrans.",
"COVER_SIZE_SMALL": "Petite",
"COVER_SIZE_MEDIUM": "Moyenne",
"COVER_SIZE_LARGE": "Grande",
"EPG_VIEW_MODE": "Vue du guide",
"EPG_VIEW_MODE_DESCRIPTION": "Choisissez comment le guide des programmes sous le lecteur est affiché : une frise chronologique horizontale ou une liste verticale d'une seule journée.",
"EPG_VIEW_MODE_TIMELINE": "Chronologie",
"EPG_VIEW_MODE_LIST": "Liste",
"STARTUP_BEHAVIOR": "Vue de démarrage",
"STARTUP_BEHAVIOR_DESCRIPTION": "Choisissez si IPTVnator ouvre la première vue disponible de l'espace de travail ou restaure votre dernière vue de section. Première vue signifie Tableau de bord lorsqu'il est activé, sinon Sources.",
"STARTUP_BEHAVIOR_FIRST_VIEW": "Première vue disponible",
"STARTUP_BEHAVIOR_RESTORE_LAST_VIEW": "Restaurer la dernière vue",
"SHOW_CAPTIONS_DESCRIPTION": "Afficher ou masquer les sous-titres par défaut",
"SHOW_EXTERNAL_PLAYBACK_BAR": "Afficher le pied de page de lecture en cours",
"SHOW_EXTERNAL_PLAYBACK_BAR_DESCRIPTION": "Garde la barre d'état du lecteur externe visible en bas de l'espace de travail sur ordinateur.",
"STRIP_COUNTRY_PREFIX": "Retirer les préfixes de pays des noms de chaînes",
"STRIP_COUNTRY_PREFIX_DESCRIPTION": "Supprime les préfixes de pays ou de groupe comme \"US | \" ou \"UK - \" des noms des chaînes en direct dans toute l'application.",
"VERSION_DESCRIPTION": "Version actuelle de l'application",
"ABOUT_SUBTITLE": "Version, liens du projet et façons de soutenir IPTVnator.",
"EMBEDDED_MPV_NOTICE_TITLE": "Runtime MPV intégré",
"EMBEDDED_MPV_NOTICE_DESCRIPTION": "Les versions desktop peuvent inclure les bibliothèques libmpv et FFmpeg empaquetées pour le lecteur MPV intégré expérimental. Les utilisateurs n'ont pas besoin d'installer l'application MPV séparément ; les lecteurs externes MPV et VLC restent disponibles comme lecteurs de secours.",
"COMMUNITY": "Projet et communauté",
"COMMUNITY_DESCRIPTION": "Mettez une étoile au dépôt, lisez le blog ou rejoignez le groupe Telegram pour les actualités et l'aide.",
"LINK_BLOG": "Blog",
"LINK_GITHUB_DESCRIPTION": "Mettez une étoile au dépôt, ouvrez un ticket ou contribuez",
"LINK_BLOG_DESCRIPTION": "Notes de version, astuces et actualités du projet",
"LINK_TELEGRAM_DESCRIPTION": "Annonces, communauté et support",
"SUPPORT_TITLE": "Soutenir le projet",
"SUPPORT_DESCRIPTION": "IPTVnator est libre et open source, développé en toute transparence. S'il fait partie de votre quotidien, une petite contribution aide à maintenir le projet en vie et à façonner la suite — merci.",
"SUPPORT_SPONSORS_HINT": "Récurrent ou ponctuel",
"SUPPORT_KOFI_HINT": "Offrez-moi un café",
"EPG_NOTE": "Actuellement, l'EPG n'est disponible que dans la version Electron d'IPTVnator.",
"EPG_NOTE_URL_TEXT": "Vérifiez-le ici",
"IMPORT_EXPORT_DATA": "Importer/exporter des listes de lecture",
"IMPORT_EXPORT_DATA_DESCRIPTION": "Exportez ou importez des listes au format JSON utilisé dans l'application.",
"IMPORT_DATA": "Importer",
"EXPORT_DATA": "Exporter",
"EXPORTING_DATA": "Exportation…",
"REMOVE_ALL": "Delete all playlists and playlist data",
"REMOVE_ALL_BUTTON": "Delete all",
"REMOVE_ALL_DESCRIPTION": "Delete every M3U, Xtream, and Stalker playlist stored in the app.",
"REMOVE_DIALOG": {
"TITLE": "Delete all playlists?",
"MESSAGE": "Delete all {{count}} playlists from the app. This also removes stored playlist data on this device.",
"SUMMARY_TITLE": "Playlist sources",
"CONSEQUENCES_TITLE": "This also removes",
"CONSEQUENCE_FAVORITES": "Favorites saved for these playlists",
"CONSEQUENCE_RECENTLY_VIEWED": "Recently viewed history",
"CONSEQUENCE_PLAYBACK": "Saved playback positions",
"CONSEQUENCE_DOWNLOADS": "Download history entries linked to those playlists",
"CONSEQUENCE_XTREAM_CACHE": "Imported Xtream categories and locally cached content",
"BACKUP_HINT": "Use Export first if you want a restorable backup before deleting.",
"CONFIRM": "Delete everything"
},
"IMPORT_ERROR": "Erreur d'importation, veuillez essayer avec un autre fichier.",
"PLAYLISTS_REMOVED": "All playlists and playlist data were removed.",
"MPV_PLAYER_PATH_LABEL": "Chemin mpv",
"MPV_PLAYER_PATH_DESCRIPTION": "Définissez le chemin vers MPV. Sur macOS, vous pouvez utiliser le bundle de l’app MPV, comme /Applications/mpv.app, ou le chemin de l’exécutable.",
"MPV_COMPATIBLE_PLAYER_TIP": "IINA peut être lancé comme lecteur compatible MPV sur macOS, mais utilisez son chemin exécutable, comme /Applications/IINA.app/Contents/MacOS/iina-cli ou /Applications/IINA.app/Contents/MacOS/IINA. Les contrôles IPTVnator, le suivi de position et la réutilisation d’instance ne sont garantis qu’avec MPV IPC.",
"MPV_PLAYER_PATH": "Chemin du lecteur mpv",
"MPV_PLAYER_ARGUMENTS_LABEL": "mpv command-line arguments",
"MPV_PLAYER_ARGUMENTS_DESCRIPTION": "Optional arguments passed to mpv when IPTVnator starts a new external player process.",
"MPV_PLAYER_ARGUMENTS": "mpv arguments",
"MPV_REUSE_INSTANCE_LABEL": "Réutiliser l'instance MPV",
"MPV_REUSE_INSTANCE_DESCRIPTION": "Lorsqu'elle est activée, la même fenêtre MPV sera réutilisée pour lire différents flux. Lorsqu'elle est désactivée, chaque flux s'ouvre dans une nouvelle fenêtre MPV.",
"RECORDING_FOLDER_LABEL": "Dossier d’enregistrement",
"RECORDING_FOLDER_DESCRIPTION": "Dossier des enregistrements de flux en direct depuis MPV intégré. Laissez vide pour utiliser le dossier Téléchargements du système.",
"RECORDING_FOLDER": "Dossier d’enregistrement",
"RECORDING_FOLDER_SELECT": "Choisir le dossier d’enregistrement",
"VLC_PLAYER_PATH_LABEL": "Chemin VLC",
"VLC_PLAYER_PATH_DESCRIPTION": "Définissez le chemin vers VLC. Sur macOS, vous pouvez utiliser le bundle de l’app VLC, comme /Applications/VLC.app, ou le chemin de l’exécutable.",
"VLC_PLAYER_PATH": "Chemin du lecteur VLC",
"VLC_PLAYER_ARGUMENTS_LABEL": "VLC command-line arguments",
"VLC_PLAYER_ARGUMENTS_DESCRIPTION": "Optional arguments passed to VLC when IPTVnator starts a new external player process.",
"VLC_PLAYER_ARGUMENTS": "VLC arguments",
"EXTERNAL_PLAYER_ARGUMENTS_HINT": "Use one argument per line. These values are applied before stream-specific IPTVnator options.",
"VLC_REUSE_INSTANCE_LABEL": "Réutiliser l'instance VLC",
"VLC_REUSE_INSTANCE_DESCRIPTION": "Lorsqu'elle est activée, la même fenêtre VLC sera réutilisée pour lire différents flux. Lorsqu'elle est désactivée, chaque flux s'ouvre dans une nouvelle fenêtre VLC.",
"REMOTE_CONTROL": "Télécommande",
"REMOTE_CONTROL_DESCRIPTION": "Activer la télécommande de l'application.",
"REMOTE_CONTROL_PORT": "Port de télécommande",
"REMOTE_CONTROL_PORT_DESCRIPTION": "Port utilisé pour la télécommande de l'application. Le port 8765 est utilisé par défaut.",
"REMOTE_CONTROL_URL": "URL de la télécommande",
"REMOTE_CONTROL_URL_DESCRIPTION": "Accédez à la télécommande depuis un autre appareil sur le même réseau.",
"SHOW_QR_CODE": "Afficher le QR code",
"STATUS_ENABLED": "Activé",
"STATUS_DISABLED": "Désactivé",
"SOURCE_SINGULAR": "source",
"SOURCE_PLURAL": "sources",
"PORT_RANGE_LABEL": "Port (1-65535)",
"PORT_REQUIRED": "Le port est requis",
"PORT_MIN": "Le port doit être au moins 1",
"PORT_MAX": "Le port doit être au plus 65535",
"PORT_PATTERN": "Seuls les chiffres sont autorisés",
"REMOVE_ALL_IN_PROGRESS": "Deleting playlist data…",
"REMOVE_ALL_PROGRESS": "Deleting playlist data… {{current}} / {{total}}",
"PLAYLISTS_REMOVE_FAILED": "Could not delete playlists. Please try again.",
"NAV_DASHBOARD": "Dashboard",
"DASHBOARD": "Dashboard",
"DASHBOARD_SUBTITLE": "Choose which dashboard rails are shown in the workspace.",
"DASHBOARD_HERO": "Hero banner",
"DASHBOARD_HERO_DESCRIPTION": "Show the large top banner for your most recent item.",
"DASHBOARD_RAIL_CONTINUE": "Continue Watching",
"DASHBOARD_RAIL_CONTINUE_DESCRIPTION": "Show recently watched movies and series as cover cards.",
"DASHBOARD_RAIL_LIVE_FAVORITES": "Live now on your favorites",
"DASHBOARD_RAIL_LIVE_FAVORITES_DESCRIPTION": "Show favorite live channels with current EPG progress.",
"DASHBOARD_RAIL_RECENT_LIVE": "Recently watched live TV",
"DASHBOARD_RAIL_RECENT_LIVE_DESCRIPTION": "Show live channels you opened recently with current EPG progress.",
"DASHBOARD_RAIL_FAVORITE_VOD": "Favorite movies & series",
"DASHBOARD_RAIL_FAVORITE_VOD_DESCRIPTION": "Show favorited movies and series as cover cards.",
"DASHBOARD_RAIL_SOURCES": "Recently used sources",
"DASHBOARD_RAIL_SOURCES_DESCRIPTION": "Show shortcuts to your most recently used playlists and portals.",
"DASHBOARD_RAIL_TMDB_TRENDING": "Tendances de la semaine (TMDB)",
"DASHBOARD_RAIL_TMDB_TRENDING_DESCRIPTION": "Afficher les films et séries en tendance hebdomadaire de TMDB, mis en correspondance avec vos bibliothèques. Nécessite l'activation des métadonnées TMDB.",
"DASHBOARD_RAIL_TMDB_RECOMMENDATIONS": "Recommandations pour vous (TMDB)",
"DASHBOARD_RAIL_TMDB_RECOMMENDATIONS_DESCRIPTION": "Afficher des recommandations basées sur les films et séries récemment regardés, mises en correspondance avec vos bibliothèques. Nécessite l'activation des métadonnées TMDB.",
"DASHBOARD_RAIL_XTREAM_ADDED": "Recently added on Xtream",
"DASHBOARD_RAIL_XTREAM_ADDED_DESCRIPTION": "Show the newest Xtream movies, series, and channels.",
"APP_UPDATE_TITLE": "Application update",
"APP_UPDATE_DESCRIPTION": "Check GitHub Releases for desktop app updates.",
"APP_UPDATE_IDLE": "Ready to check for updates",
"APP_UPDATE_CHECKING": "Checking for updates…",
"APP_UPDATE_AVAILABLE": "Version {{version}} is available",
"APP_UPDATE_NOT_AVAILABLE": "You are using the latest version",
"APP_UPDATE_DOWNLOADING": "Downloading version {{version}}…",
"APP_UPDATE_DOWNLOADED": "Version {{version}} is ready to install",
"APP_UPDATE_MANUAL_AVAILABLE": "Version {{version}} is available for manual installation",
"APP_UPDATE_ERROR": "Update check failed",
"APP_UPDATE_CHECK": "Check again",
"APP_UPDATE_DOWNLOAD": "Update",
"APP_UPDATE_INSTALL": "Restart application",
"APP_UPDATE_OPEN_RELEASE": "Open GitHub release",
"APP_UPDATE_RELEASE_NOTES": "What's new",
"EMBEDDED_MPV_FRAME_COPY": "Embedded MPV : moteur frame-copy (expérimental)",
"EMBEDDED_MPV_FRAME_COPY_DESCRIPTION": "La vidéo est rendue sur le canevas de l'application, les menus et boîtes de dialogue s'affichent donc au-dessus.",
"EMBEDDED_MPV_FRAME_COPY_RESTART": "Prend effet après le redémarrage de l'application.",
"VOD_AUTO_FAILOVER": "Changer de source automatiquement en cas d'erreur de lecture",
"VOD_AUTO_FAILOVER_DESCRIPTION": "Lorsqu'un film ne parvient pas à démarrer et que le même film existe dans une autre liste de lecture, bascule automatiquement vers celle-ci en conservant la position de lecture. Désactivé par défaut ; le changement est toujours annoncé, car une autre source peut proposer un doublage différent."
},
"THEMES": {
"DARK_THEME": "Sombre",
"LIGHT_THEME": "Clair",
"SYSTEM_THEME": "Système"
},
"AUDIO_PLAYER": {
"PLAY": "Lecture",
"PAUSE": "Pause",
"PREVIOUS_STATION": "Station précédente",
"NEXT_STATION": "Station suivante",
"MUTE": "Muet",
"UNMUTE": "Activer le son",
"VOLUME": "Volume"
},
"EMBEDDED_MPV": {
"PLAYER": {
"BACK": "Retour",
"RETRY": "Réessayer",
"STALLED": "Ce flux met plus de temps que prévu à démarrer.",
"PLAYBACK_FAILED": "Échec de la lecture avec MPV intégré.",
"CHECKING_SUPPORT": "Vérification de la prise en charge de MPV intégré...",
"NOT_AVAILABLE": "MPV intégré n'est pas disponible dans cet environnement.",
"LOADING_STREAM": "Chargement du flux…",
"PLAY": "Lecture",
"PAUSE": "Pause",
"PREVIOUS_EPISODE": "Épisode précédent",
"NEXT_EPISODE": "Épisode suivant",
"BACK_10_SECONDS": "Reculer de 10 secondes",
"FORWARD_10_SECONDS": "Avancer de 10 secondes",
"LIVE_STREAM": "Diffusion en direct",
"PLAYBACK_POSITION": "Position de lecture",
"MUTE": "Muet",
"UNMUTE": "Activer le son",
"MUTED": "Son coupé",
"VOLUME": "Volume",
"VOLUME_LABEL": "Volume {{percent}} %",
"AUDIO_TRACKS": "Pistes audio",
"SUBTITLES": "Sous-titres",
"SUBTITLES_OFF": "Désactivés",
"TRACK_DEFAULT": "Par défaut",
"AUDIO_TRACK_FALLBACK": "Audio {{index}}",
"SUBTITLE_TRACK_FALLBACK": "Sous-titre {{index}}",
"PLAYBACK_SPEED": "Vitesse de lecture",
"SPEED_TOOLTIP": "Vitesse : {{speed}}",
"ASPECT_RATIO": "Format d'image",
"ASPECT_TOOLTIP": "Format : {{aspect}}",
"ASPECT_DEFAULT": "Par défaut",
"START_RECORDING": "Démarrer l'enregistrement",
"STOP_RECORDING": "Arrêter l'enregistrement",
"RECORDING": "Enregistrement",
"RECORDING_SAVED": "Enregistrement sauvegardé",
"RECORDING_FAILED": "Échec de l'enregistrement",
"RECORDING_FAILED_TO_START": "L'enregistrement n'a pas pu démarrer.",
"RECORDING_FAILED_TO_STOP": "L'enregistrement n'a pas pu s'arrêter.",
"SAVED_TO": "Enregistré dans {{path}}",
"ENTER_PICTURE_IN_PICTURE": "Activer le mode image dans l’image",
"EXIT_PICTURE_IN_PICTURE": "Quitter le mode image dans l’image",
"ENTER_FULLSCREEN": "Passer en plein écran",
"EXIT_FULLSCREEN": "Quitter le plein écran"
}
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "The browser player may not decode this container inline. Copy the stream URL and open it in an external player such as MPV, VLC, or IINA for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the browser player may not decode. Copy the stream URL and open it in an external player such as MPV, VLC, or IINA."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"BROWSER_ACCESS_ERROR": {
"TITLE": "The browser player could not access this stream",
"DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. MPV or VLC can often bypass browser-player access limits.",
"PWA_DESCRIPTION": "The request may be blocked by CORS, mixed content, or provider header/proxy restrictions. The PWA cannot launch external players directly; use the Copy stream URL action and open it manually in MPV, VLC, IINA, or another player."
},
"UNTRANSFERABLE_DESCRIPTION": "This protected stream requires playback configuration that cannot be transferred with the stream URL.",
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"NATIVE_FALLBACK_TITLE": "Open it in a native player instead",
"INLINE_FAILURE_TITLE": "Copy the URL or try again",
"UNTRANSFERABLE_FAILURE_TITLE": "Protected playback could not continue",
"RECOMMENDATIONS_LABEL": "Actions de récupération recommandées",
"ACTION_TRY_PLAYER": "Essayer {{player}}",
"ACTION_TRY_PLAYER_HINT": "Temporaire pour cet élément ; votre lecteur enregistré reste inchangé",
"REASON_RETRY_TRANSIENT_FAILURE": "Réessayer avec le même lecteur après un échec temporaire de chargement",
"REASON_RETRY_UNKNOWN_FAILURE": "Réessayer, car l’erreur n’a identifié aucun autre lecteur compatible",
"REASON_ALTERNATIVE_SOURCE_AVAILABLE": "Essayer une autre source disponible pour le même contenu",
"REASON_DIFFERENT_ENGINE_FAMILY": "Ce lecteur utilise un autre moteur de lecture du navigateur",
"REASON_EXTERNAL_CODEC_OR_CONTAINER_SUPPORT": "Les lecteurs natifs prennent en charge davantage de codecs et de conteneurs",
"REASON_EXTERNAL_BROWSER_ACCESS": "Un lecteur natif peut contourner les restrictions d’accès du navigateur",
"REASON_COMPATIBLE_DRM_PATH": "Cette cible est compatible avec les données de chiffrement disponibles",
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_OPENING_MPV": "Opening MPV…",
"ACTION_OPENING_VLC": "Opening VLC…",
"ACTION_REOPEN_MPV": "Open MPV again",
"ACTION_REOPEN_VLC": "Open VLC again",
"ACTION_RETRY_MPV": "Try MPV again",
"ACTION_RETRY_VLC": "Try VLC again",
"EXTERNAL_OPENING": "Opening player…",
"EXTERNAL_STARTED": "Player started",
"EXTERNAL_PLAYING": "Playing",
"EXTERNAL_FAILED": "External player error",
"ACTION_OPEN_MPV_HINT": "configured player",
"ACTION_OPEN_VLC_HINT": "configured player",
"ACTION_COPY_URL": "Copy URL",
"ACTION_RETRY": "Retry",
"DETAILS_SUMMARY": "Technical details",
"CODEC_HINT": "Detected {{codecs}}. Chromium/Electron browser players often have limited support for these codecs.",
"DETAIL_CODE": "Diagnostic code",
"DETAIL_PLAYER": "Player",
"DETAIL_SOURCE": "Source",
"DETAIL_CONTAINER": "Container",
"DETAIL_MIME_TYPE": "MIME type",
"DETAIL_VIDEO_CODECS": "Video codecs",
"DETAIL_AUDIO_CODECS": "Audio codecs",
"DETAIL_NATIVE_ERROR_CODE": "Native error code",
"DETAIL_NATIVE_ERROR_MESSAGE": "Native error message",
"DETAIL_ERROR_DETAILS": "Error details"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Masquer la liste des chaînes",
"SHOW_CHANNELS_LIST": "Afficher la liste des chaînes",
"TOGGLE_SIDEBAR_TOOLTIP": "Basculer la liste des chaînes (⌘/Ctrl+B)"
},
"CHANNELS": {
"UPLOAD_OR_SELECT_OTHER_PLAYLIST": "Transférer ou choisir une autre liste de lecture",
"ALL_CHANNELS": "Toutes les chaînes",
"GROUPS": "Groupes",
"MANAGE_GROUPS": "Gérer les groupes",
"MANAGE_GROUPS_HINT": "Utilisez la gestion des groupes pour réafficher les groupes.",
"NO_VISIBLE_GROUPS": "Aucun groupe visible",
"SEARCH_GROUPS": "Rechercher des groupes",
"UNGROUPED": "Non-groupé",
"UNNAMED_CHANNEL": "Chaîne sans nom",
"FAVORITES": "Favoris",
"NO_FAVORITES": "Aucun favoris",
"USE_STAR_TO_FAVORITE": "Veuillez utiliser l'icône 'étoile' pour ajouter une chaîne aux favoris.",
"REMOVE_FAVORITE": "Retirer des favoris",
"ADD_FAVORITE": "Ajouter aux favoris",
"SHOW_DETAILS": "Afficher les détails de la chaîne",
"MAP_EPG": "Associer une chaîne EPG",
"FAVORITES_UPDATED": "Les favoris ont été mis à jour !",
"SELECT_CHANNEL_PLAYBACK": "Veuillez sélectionner une chaîne pour démarrer la lecture",
"SORT_BY": "Trier par",
"SORT_BY_DATE": "Trier par date d'ajout (Plus récent)",
"SORT_BY_RATING": "Trier par note",
"SORT_BY_NAME": "Trier par nom (A-Z)",
"LOAD_MORE": "Charger plus",
"REMAINING": "restantes",
"LOADING": "Chargement des chaînes…",
"LOADING_MORE": "Chargement…",
"NO_SEARCH_RESULTS": "Aucune chaîne trouvée",
"NO_CHANNELS_FOUND": "Aucune chaîne trouvée",
"NO_GROUPS_FOUND": "Aucun groupe trouvé",
"CATCHUP_AVAILABLE": "Catchup disponible",
"CATCHUP_AVAILABLE_DAYS": "Catchup disponible — {{days}} jours",
"TRY_DIFFERENT_SEARCH": "Essayez un autre terme de recherche",
"DETAILS_DIALOG": {
"TITLE": "Détails de la chaîne",
"DESCRIPTION": "Métadonnées en lecture seule extraites du fichier de la liste de lecture.",
"SUMMARY": "Résumé",
"TVG": "Métadonnées TVG",
"CATCHUP": "Catchup",
"HTTP": "En-têtes HTTP",
"NAME": "Nom",
"CHANNEL_ID": "ID de la chaîne",
"STREAM_URL": "URL du flux",
"GROUP": "Groupe",
"RADIO": "Radio",
"CATCHUP_AVAILABLE": "Catchup disponible",
"WINDOW": "Fenêtre d'archivage",
"PLAYBACK_SUPPORTED": "Lecture prise en charge",
"EPG_PARAMS": "Paramètres EPG",
"TIMESHIFT": "Timeshift",
"TVG_ID": "TVG ID",
"TVG_NAME": "Nom TVG",
"TVG_URL": "URL TVG",
"TVG_LOGO": "Logo TVG",
"TVG_REC": "TVG rec",
"CATCHUP_TYPE": "Type de Catchup",
"CATCHUP_SOURCE": "Source du Catchup",
"CATCHUP_DAYS": "Jours de Catchup",
"HTTP_ORIGIN": "Origin",
"HTTP_REFERRER": "Referrer",
"HTTP_USER_AGENT": "User-Agent",
"EMPTY": "Non fourni",
"NOT_AVAILABLE": "Non disponible",
"DAYS_ONE": "1 jour",
"DAYS_OTHER": "{{count}} jours"
},
"GROUP_MANAGEMENT": {
"TITLE": "Gérer les groupes",
"SELECTED": "Sélectionnés",
"SELECT_ALL": "Tout sélectionner",
"DESELECT_ALL": "Tout désélectionner",
"SEARCH_PLACEHOLDER": "Rechercher des groupes…",
"NO_RESULTS": "Aucun groupe correspondant trouvé",
"SAVE": "Enregistrer"
}
},
"TOP_MENU": {
"OPEN_MULTI_EPG": "Ouvrir la vue Multi-EPG"
},
"EPG": {
"NEXT_DAY": "Jour suivant",
"PREVIOUS_DAY": "Jour précédent",
"ZOOM_IN": "Zoom avant",
"ZOOM_OUT": "Zoom arrière",
"FILTER_CHANNELS": "Filtrer les chaînes",
"CLOSE_FILTER": "Fermer le filtre",
"SEARCH_PROGRAMS": "Rechercher des programmes",
"CLOSE_PROGRAM_SEARCH": "Fermer la recherche de programmes",
"LIVE_STREAM": "Diffusion en direct",
"ARCHIVE_PLAYBACK_UNAVAILABLE_TITLE": "Lecture des archives indisponible",
"ARCHIVE_PLAYBACK_UNAVAILABLE_DESCRIPTION": "Ce fournisseur expose l'historique des programmes pour la chaîne, mais n'expose pas la lecture archive/catch-up.",
"EPG_NOT_AVAILABLE_CHANNEL_DESCRIPTION": "Veuillez ajouter/modifier l'URL de la liste EPG dans les réglages de l'application.",
"FETCH_EPG": "Récupération des données EPG...",
"ERROR": "L'EPG n'a pas pu être chargé.",
"DOWNLOAD_SUCCESS": "L'EPG a été téléchargé avec succès.",
"NO_PROGRAM_INFO": "Aucune information sur le programme disponible",
"PROGRAM_DIALOG": {
"PROGRAM_DETAILS": "Détails du programme TV",
"TITLE": "Titre",
"CATEGORY": "Catégorie",
"PARENTAL_RATING_SYSTEM": "Système de classification du contenu télévisé",
"DESCRIPTION": "Description",
"LANGUAGE": "Langue",
"SHOW_PROGRAM_DETAILS": "Afficher les détails de ce programme",
"EPISODE": "Épisode",
"DURATION": "Durée"
},
"FETCH_SUCCESS": "L'EPG a été récupéré avec succès",
"IMPORT_PROGRESS": "Importation EPG",
"CHANNELS": "chaînes",
"PROGRAMS": "programmes",
"LOADING": "Chargement",
"QUEUED": "En file d'attente",
"TOTAL_CHANNELS": "Total des chaînes",
"TOTAL_PROGRAMS": "Total des programmes",
"UP_TO_DATE": "L'EPG est à jour, aucune synchronisation nécessaire",
"RETRY": "Réessayer",
"ALLOW_PRIVATE_SOURCE": "Allow source",
"ALLOW_PRIVATE_SOURCE_TITLE": "Allow private-network EPG source?",
"ALLOW_PRIVATE_SOURCE_WARNING": "Only allow this if you trust the EPG source. IPTVnator will let this exact EPG URL connect to private or local network addresses.",
"TRUST_TLS_HOST": "Trust host",
"TRUST_TLS_HOST_TITLE": "Trust invalid certificate?",
"TRUST_TLS_HOST_WARNING": "Only continue if you trust this host. IPTVnator will allow invalid TLS certificates for this host, but other hosts still require valid certificates.",
"CURRENT_PROGRAM": "Current program",
"ARCHIVE_PLAYBACK": "Lecture archive",
"COLLAPSE_PANEL": "Collapse EPG panel",
"EXPAND_PANEL": "Expand EPG panel",
"TIMELINE": {
"TODAY": "Aujourd'hui",
"NOW": "Maintenant",
"JUMP_NOW": "Aller à maintenant",
"RETURN_TO_LIVE": "Retour au direct",
"ON_NOW": "En ce moment",
"MINUTES_LEFT": "min restantes",
"FROM_ARCHIVE": "Depuis les archives",
"WATCH": "Regarder",
"WATCH_LIVE": "Regarder en direct",
"WATCH_FROM_START": "Regarder depuis le début",
"ARCHIVE_UNAVAILABLE_NOTE": "Lecture indisponible — ce fournisseur n'expose pas d'archive.",
"CATCHUP_FAILED": "Impossible de démarrer la lecture archive pour ce programme",
"SCHEDULE_ONLY_NOTICE": "Programme uniquement. Ce fournisseur expose l'historique des programmes mais pas le catch-up — les programmes passés ne peuvent pas être lus.",
"EMPTY_DAY_TITLE": "Aucun programme pour ce jour",
"EMPTY_DAY_DESCRIPTION": "Le programme du jour sélectionné n'est pas encore arrivé. D'autres jours ont des données.",
"JUMP_TODAY": "Aller à aujourd'hui",
"JUMP_NEAREST": "Jour le plus proche avec programme",
"CHANNEL_UNMAPPED_TITLE": "Aucun programme pour cette chaîne",
"CHANNEL_UNMAPPED_DESCRIPTION": "Cette chaîne n'est pas associée à la source EPG (aucun tvg-id trouvé). Les autres chaînes ne sont pas affectées.",
"PROVIDER_NO_EPG_TITLE": "Le fournisseur ne fournit pas de guide",
"PROVIDER_NO_EPG_DESCRIPTION": "Cette source n'expose de guide TV pour aucune chaîne. Si vous avez besoin d'un programme, demandez à votre fournisseur.",
"M3U_SETUP_TITLE": "Connecter un guide des programmes",
"M3U_SETUP_DESCRIPTION": "Les listes M3U nécessitent une source EPG externe (XMLTV). Ajoutez un lien url-tvg et le programme apparaîtra ici.",
"OPEN_EPG_SETTINGS": "Ouvrir les paramètres EPG",
"ERROR_TITLE": "Impossible de charger le guide",
"ERROR_DESCRIPTION": "La source EPG n'a pas répondu. Vérifiez votre connexion ou actualisez la source.",
"RETRY": "Réessayer",
"MINUTES_SHORT": "min",
"ZOOM": "Zoom",
"ZOOM_DAY": "Vue de la journée",
"ZOOM_HOURS": "Par heure",
"ZOOM_DETAIL": "Détaillé",
"GROUP_SHORT": "progr. courts",
"GROUP_EXPAND": "afficher ›"
}
},
"EPG_MAPPING_DIALOG": {
"TITLE": "Associer une chaîne EPG",
"SUBTITLE": "Sélectionner manuellement une chaîne EPG pour « {{channelName}} »",
"SEARCH_PLACEHOLDER": "Rechercher des chaînes EPG...",
"CURRENT_MAPPING": "Association actuelle",
"NO_MAPPING": "Aucune association EPG définie",
"SAVE": "Enregistrer l'association",
"REMOVE": "Supprimer l'association",
"CLOSE": "Fermer",
"NO_RESULTS": "Aucune chaîne EPG trouvée",
"SEARCH_HINT": "Saisissez au moins {{min}} caractères pour rechercher",
"SAVED": "Association EPG enregistrée",
"REMOVED": "Association EPG supprimée",
"SAVE_FAILED": "Impossible de mettre à jour l'association EPG"
},
"LANGUAGES": {
"ARABIC": "العربية",
"MOROCCAN_ARABIC": "العربية (اللهجة المغربية)",
"ENGLISH": "English",
"KOREAN": "한국어",
"RUSSIAN": "Русский",
"GERMAN": "Deutsch",
"SPANISH": "Español",
"CHINESE": "简体中文",
"TRADITIONAL_CHINESE": "繁體中文",
"FRENCH": "Français",
"ITALIAN": "Italiano",
"TURKISH": "Türkçe",
"JAPANESE": "日本語",
"DUTCH": "Nederlands",
"BELARUSIAN": "Беларуская",
"POLISH": "Polski",
"PORTUGUESE": "Português",
"GREEK": "Ελληνικά",
"HUNGARIAN": "Magyar"
},
"YES": "Oui",
"NO": "Non",
"MENU": {
"OPEN": "Ouvrir le menu",
"SUPPORT_ARIA": "Soutenir IPTVnator sur GitHub",
"SETTINGS_ARIA": "Ouvrir les paramètres",
"BUG_REPORT": "Signaler un bug",
"WHAT_IS_NEW": "Nouveautés",
"ABOUT": "À propos",
"ABOUT_ARIA": "À propos de l'application",
"SUPPORT_PROJECT": "Soutenir le projet"
},
"ABOUT": {
"TITLE": "À propos d'IPTVnator",
"DESCRIPTION": "Application lecteur IPTV multiplateforme avec de nombreuses fonctionnalités, comme la prise en charge des listes m3u et m3u8, les favoris, le guide TV, les archives TV/rattrapage et plus encore.",
"VERSION": "Version",
"GITHUB_TOOLTIP": "Dépôt IPTVnator sur GitHub",
"BUY_ME_A_COFFEE_TOOLTIP": "Offrez-moi un café",
"TWITTER_TOOLTIP": "Partager sur Twitter"
},
"UPDATE_AVAILABLE": "Mise à jour disponible",
"REFRESH": "Actualiser",
"XTREAM": {
"PLAY": "Lire",
"OPENING_PLAYER": "Ouverture du lecteur…",
"NAME": "Nom",
"RELEASE_DATE": "Date de sortie",
"GENRE": "Genre",
"COUNTRY": "Pays",
"ACTORS": "Acteurs",
"DIRECTOR": "Réalisateur",
"SIMILAR": "Similaires",
"CREW_JOB_DIRECTOR": "Réalisateur",
"CREW_JOB_CREATOR": "Créateur",
"ACTOR_FILMOGRAPHY": "Filmographie",
"ACTOR_FILTER_ALL": "Tout",
"ACTOR_SCOPE_THIS_PORTAL": "Ce portail",
"ACTOR_SCOPE_ALL_PORTALS": "Tous les portails",
"ACTOR_NO_RESULTS": "Aucun résultat pour ce filtre",
"ACTOR_IN_LIBRARY": "Dans votre bibliothèque",
"ACTOR_SEARCH_IN_PORTAL": "Rechercher dans le portail",
"ACTOR_BORN": "Naissance :",
"ACTOR_DIED": "Décédé",
"SERIES_STATUS_RETURNING": "En cours",
"SERIES_STATUS_PLANNED": "Planifiée",
"SERIES_STATUS_IN_PRODUCTION": "En production",
"SERIES_STATUS_ENDED": "Terminée",
"SERIES_STATUS_CANCELED": "Annulée",
"SERIES_STATUS_PILOT": "Pilote",
"DURATION": "Durée",
"CAST": "Distribution",
"EPISODE_RUN_TIME": "Durée de l'épisode",
"RATING": "Note",
"IMDB_RATING": "Note IMDB",
"KINOPOISK_RATING": "Note Kinopoisk",
"DESCRIPTION": "Description",
"YEAR": "Année",
"AGE": "Âge",
"YOUTUBE_TRAILER": "Bande-annonce YouTube",
"EPISODE": "Épisode",
"RESUME": "Reprendre",
"RESTART": "Recommencer",
"CONTINUE_WATCHING": "Reprendre la lecture",
"PLAY_FIRST_EPISODE": "Lire le premier épisode",
"PLAY_EPISODE": "Lire l'épisode {{episode}}",
"RESUME_EPISODE": "Reprendre l'épisode",
"PLAY_NEXT_EPISODE": "Lire l'épisode suivant",
"SERIES_WATCHED": "Série vue",
"WATCHED": "Vu",
"IN_PROGRESS": "En cours",
"MARK_WATCHED": "Marquer comme vu",
"MARK_UNWATCHED": "Marquer comme non vu",
"EPISODES_WATCHED": "{{count}} sur {{total}} épisodes vus",
"DETAIL_FALLBACK": {
"STATUS": "Métadonnées du portail indisponibles",
"NOTE": "Les métadonnées étendues n'ont pas été fournies par ce portail.",
"STREAM_ID": "ID du flux",
"CATEGORY": "Catégorie",
"CONTAINER": "Format",
"SOURCE_TITLE": "Titre source"
},
"ACCOUNT_INFO": {
"TITLE": "Informations du compte",
"USER_INFO": "Informations utilisateur",
"STATUS": "Statut",
"USERNAME": "Nom d'utilisateur",
"ACTIVE_CONNECTIONS": "Connexions actives",
"CREATED": "Créé le",
"EXPIRES": "Expire le",
"TRIAL_ACCOUNT": "Compte d'essai",
"YES": "Oui",
"NO": "Non",
"ALLOWED_FORMATS": "Formats autorisés",
"SERVER_INFO": "Informations du serveur",
"LIVE_TV": "TV en direct",
"MOVIES": "Films",
"TV_SERIES": "Séries TV",
"URL": "URL",
"PROTOCOL": "Protocole",
"TIMEZONE": "Fuseau horaire",
"SERVER_TIME": "Heure du serveur",
"PORTS": "Ports",
"HTTP_PORT": "HTTP",
"HTTPS_PORT": "HTTPS",
"RTMP_PORT": "RTMP"
},
"CATEGORY_MANAGEMENT": {
"TITLE": "Gérer les catégories",
"LOADING": "Chargement des catégories…",
"SELECTED": "Sélectionnées",
"SELECT_ALL": "Tout sélectionner",
"DESELECT_ALL": "Tout désélectionner",
"SEARCH_PLACEHOLDER": "Rechercher des catégories…",
"NO_RESULTS": "Aucune catégorie correspondante trouvée",
"NO_CATEGORIES": "Aucune catégorie disponible",
"SAVE": "Enregistrer"
}
},
"PORTALS": {
"ALL_CATEGORIES": "Toutes les catégories",
"MY_FAVORITES": "Mes favoris",
"ADD_TO_FAVORITES": "Ajouter aux favoris",
"REMOVE_FROM_FAVORITES": "Retirer des favoris",
"REMOVED_FROM_FAVORITES": "Retiré des favoris",
"ADDED_TO_FAVORITES": "Ajouté aux favoris",
"FAVORITES": "Favoris",
"RECENTLY_VIEWED": "Récemment consultés",
"THIS_PLAYLIST": "Cette liste de lecture",
"ALL_PLAYLISTS": "Toutes les listes de lecture",
"LIVE_TV": "TV en direct",
"MOVIES": "Films",
"SERIES": "Séries",
"SEARCH": "Rechercher",
"NO_FAVORITES": "Aucun favori pour le moment",
"NO_RECENT_ITEMS": "Aucun élément récemment consulté",
"REMOVE_FROM_RECENT": "Retirer des éléments récemment consultés",
"BROWSE_ALL_MOVIES": "Parcourir tous les films",
"BROWSE_ALL_SERIES": "Parcourir toutes les séries",
"BROWSE_ALL_LIVE": "Parcourir toute la TV en direct",
"SIDEBAR": {
"MAIN": "Principal",
"MOVIES": "Films",
"LIVE_TV": "TV en direct",
"SERIES": "Séries",
"LIBRARY": "Bibliothèque",
"SEARCH": "Rechercher",
"RECENT": "Récent",
"RECENTLY_ADDED": "Récemment ajoutés",
"FAVORITES": "Favoris"
},
"ERROR_VIEW": {
"IMPORT_CANCELLED": {
"TITLE": "Importation annulée",
"DESCRIPTION": "L'importation de la liste de lecture a été annulée. Réessayez quand vous voudrez poursuivre le chargement de cette source."
},
"ACCOUNT_EXPIRED": {
"TITLE": "Compte expiré",
"DESCRIPTION": "Ce compte a expiré. Veuillez vérifier les identifiants dans les paramètres de la liste ou la supprimer."
},
"ACCOUNT_INACTIVE": {
"TITLE": "Compte inactif",
"DESCRIPTION": "Ce compte est inactif. Veuillez vérifier les identifiants dans les paramètres de la liste de lecture ou la supprimer."
},
"UNAUTHORIZED": {
"TITLE": "Non autorisé",
"DESCRIPTION": "Veuillez vérifier les identifiants dans les paramètres de la liste ou la supprimer."
},
"NOT_FOUND": {
"TITLE": "Portail non trouvé",
"DESCRIPTION": "Veuillez vérifier les identifiants et l'URL du portail dans les paramètres de la liste ou la supprimer."
},
"PORTAL_UNAVAILABLE": {
"TITLE": "Portail indisponible",
"DESCRIPTION": "Le portail n'a pas pu être joint. Vérifiez l'URL du serveur ou réessayez quand la source sera de nouveau disponible."
},
"EMPTY_CATEGORY": {
"TITLE": "Catégorie vide",
"DESCRIPTION": "Cette catégorie n'a pas de contenu, veuillez sélectionner une autre catégorie ou modifier le type de contenu"
},
"UNKNOWN_ERROR": {
"TITLE": "Une erreur s'est produite",
"DESCRIPTION": "Erreur inconnue, veuillez réessayer plus tard"
},
"NO_CATEGORY_SELECTED": {
"TITLE": "Aucune catégorie sélectionnée",
"DESCRIPTION": "Veuillez sélectionner une catégorie pour voir le contenu"
},
"STALKER_LOGIN_REQUIRED": "Le portail nécessite un identifiant et un mot de passe. Importez à nouveau le portail et renseignez les champs nom d'utilisateur et mot de passe.",
"STALKER_DEVICE_CONFLICT": "Le portail a enregistré un autre ID d'appareil pour cette adresse MAC. Rétablissez l'ID d'appareil que vous avez utilisé en premier, ou demandez à votre fournisseur de réinitialiser l'appareil enregistré pour cette adresse MAC.",
"PLAYLIST_SETTINGS": "Paramètres de la liste",
"HOME": "Accueil",
"DELETE": "Supprimer"
},
"EMPTY_LIST_VIEW": {
"TITLE": "Aucun résultat trouvé",
"NO_SEARCH_RESULTS": "Rien trouvé, essayez de modifier votre recherche"
},
"SEARCH_VIEW": {
"INITIAL_TITLE": "Rechercher du contenu",
"INITIAL_DESCRIPTION": "Saisissez au moins 3 caractères pour effectuer une recherche dans la TV en direct, les films et les séries.",
"RESULTS_FOUND": "{{count}} résultats trouvés",
"NO_RESULTS_FOR": "Aucun résultat trouvé pour \"{{term}}\"",
"GROUP_BY_PLAYLIST": "Grouper les résultats par liste de lecture",
"VISIBLE_CATEGORIES_ONLY": "Catégories visibles uniquement",
"GLOBAL_SEARCH_SOURCE_NOTE": "Global search includes results from Xtream and M3U playlists.",
"GLOBAL_INITIAL_DESCRIPTION": "Enter at least 2 characters to search across Xtream and M3U playlists.",
"LOADING_MORE_RESULTS": "Loading more results..."
},
"STREAM_URL_COPIED": "URL du flux copiée dans le presse-papiers",
"COPY_STREAM_URL": "Copier l'URL du flux",
"NOW_PLAYING": "En cours de lecture",
"UP_NEXT": "À suivre",
"CLOSE_PLAYER": "Fermer le lecteur",
"ABOUT": "À propos",
"SEASONS_AND_EPISODES": "Saisons et épisodes",
"SEASON_TAB": "Saison {{number}}",
"BACK_TO_PLAYING_EPISODE": "Retour à l'épisode en cours",
"GRID_VIEW": "Vue en grille",
"LIST_VIEW": "Vue en liste",
"NO_EPISODES_AVAILABLE": "Aucun épisode disponible",
"NO_EPISODES_AVAILABLE_MESSAGE": "Cette série est répertoriée par votre fournisseur, mais aucune saison ni épisode n'est disponible à la lecture.",
"SEASON_EMPTY": "Cette saison est vide",
"SEASON_EMPTY_MESSAGE": "Cette saison est répertoriée par votre fournisseur, mais aucun épisode lisible n'est disponible.",
"EPISODE_INFO": "Détails de l'épisode",
"SELECT_CATEGORY": "Sélectionner une catégorie",
"PAGE": "Page",
"CONTENT_NOT_AVAILABLE": "Ce contenu n'est pas disponible sur ce serveur",
"PLAYBACK_ERROR": "Échec de l'obtention de l'URL de lecture",
"LOADING_SEASONS": "Chargement des saisons…",
"LOADING_ALL_CHANNELS": "Chargement de la liste complète des chaînes…",
"REFRESH_CHANNEL_LIST": "Actualiser la liste des chaînes",
"NO_CHANNELS_IN_CATEGORY": "Aucune chaîne dans cette catégorie",
"ITEM": "élément",
"ITEMS": "éléments",
"NO_EPISODES": "Aucun épisode disponible",
"ALL_RADIO": "Toutes les radios",
"MULTI_SOURCE": {
"SOURCES": "Sources",
"SOURCE": "Source",
"SOURCES_FOR": "Sources pour « {{title}} »",
"OPEN_SOURCES": "Afficher les autres sources",
"MATCHED_BY_TMDB": "correspondance trouvée via TMDB",
"MATCHED_BY_TITLE": "correspondance trouvée d'après le titre",
"MATCH_BY_TITLE": "par titre",
"PLAYING": "En lecture",
"CURRENT": "Actuelle",
"PLAY_FROM_SOURCE": "Lire depuis cette source",
"PIN_SOURCE": "Définir comme source principale",
"UNPIN_SOURCE": "Ne plus utiliser comme source principale",
"CHECK": "vérifier",
"CHECK_TOOLTIP": "Vérifier la disponibilité",
"PROBE_OK": "disponible",
"PROBE_FAIL": "indisponible",
"PROBE_CHECKING": "vérification",
"AUTO_FAILOVER": "Bascule automatique en cas d'erreur",
"PLAYING_FROM": "Lecture depuis :",
"SWITCH_TITLE": "Source indisponible — bascule vers {{playlist}}",
"SWITCH_DETAIL": "reprise à {{timecode}}",
"SWITCH_AUDIO_WARNING": "le doublage peut être différent",
"SWITCHED_TO": "Basculé vers {{playlist}}",
"UNDO": "Annuler",
"CHOOSE_OTHER": "Choisir une autre source",
"TRY_ANOTHER_SOURCE": "Essayer une autre source",
"ERROR_HAS_ALTERNATIVES": "{{playlist}} ne diffuse pas ce flux. Ce film est présent dans vos autres listes de lecture :",
"RESUME_KEPT": "la position de lecture sera conservée · {{timecode}}",
"ALL_SOURCES_TRIED": "Toutes les sources ont été essayées.",
"ALSO_FOUND_IN_ONE": "— également disponible dans une autre liste de lecture",
"ALSO_FOUND_IN_OTHER": "— également disponible dans {{count}} autres listes de lecture",
"CHECK_ALL": "tout vérifier",
"FILTER_PLACEHOLDER": "Filtrer par liste de lecture",
"NO_MATCHES": "Aucune liste de lecture ne correspond à ce filtre",
"COPIES": "{{count}} copies dans cette liste de lecture",
"MORE_SOURCES": "+{{count}} dans la liste des sources",
"FILTER_ALL": "Toutes",
"FILTER_AVAILABLE": "Disponibles",
"FILTER_HD": "HD+",
"ALL_LANGUAGES": "Toutes les langues",
"SAME_AS_ABOVE": "identique à la ligne au-dessus",
"SHOWING_OF_TOTAL": "{{visible}} sur {{total}}"
},
"GRID": {
"LOADING_MORE": "Chargement de la suite…",
"LOAD_MORE_FAILED": "Impossible de charger plus d'éléments",
"RETRY": "Réessayer"
}
},
"INFORMATION": "Information",
"DOWNLOADS": {
"TITLE": "Téléchargements",
"DOWNLOAD": "Télécharger",
"PLAY_LOCAL": "Lire local",
"DOWNLOAD_SEASON": "Télécharger la saison ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Télécharger la saison, {{count}} épisodes disponibles",
"ADDING_TO_QUEUE": "Ajout à la file d’attente…",
"EPISODE_DOWNLOAD_ARIA": "Télécharger {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} est déjà dans la file d’attente des téléchargements",
"EPISODE_DOWNLOAD_FAILED": "L’épisode n’a pas pu être ajouté aux téléchargements.",
"SEASON_QUEUE_RESULT": "Ajoutés {{added}} · Ignorés {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Ajoutés {{added}} · Ignorés {{skipped}} · Échoués {{failed}}",
"EMPTY": "Aucun téléchargement",
"EMPTY_HINT": "Téléchargez des films et épisodes pour les regarder hors ligne",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
"NO_PLAYLISTS_BODY": "Once you add a playlist, you can save movies and episodes here for offline playback.",
"NO_ITEMS_BODY": "Use the download button on any movie or episode to save it for offline playback.",
"NO_FILTER_MATCH": "No downloads match the current filter",
"NO_FILTER_MATCH_HINT": "Try a different search term",
"NOT_AVAILABLE": "Téléchargements non disponibles",
"DESKTOP_ONLY": "Cette fonctionnalité n'est disponible que dans l'application de bureau",
"NO_FOLDER": "Aucun dossier de téléchargement sélectionné",
"CHANGE_FOLDER": "Changer de dossier",
"CLEAR_COMPLETED": "Effacer terminés",
"CLEAR_COMPLETED_DIALOG": {
"TITLE": "Effacer les téléchargements terminés",
"MESSAGE": "Cela retire les entrées terminées, échouées et annulées de la vue actuelle des téléchargements. Cela ne supprime aucun fichier déjà téléchargé sur le disque."
},
"SOURCE_PLAYLIST_MISSING": "Ce téléchargement ne peut plus être ouvert dans la bibliothèque car sa liste de lecture source a été supprimée.",
"FILE_NOT_FOUND": "Ce fichier téléchargé n'est plus disponible sur le disque.",
"FILE_ACTION_ERROR": "L'action sur le fichier n'a pas pu être effectuée.",
"ACTION_FAILED": "Échec de l'action",
"PAUSE": "Mettre en pause",
"RESUME": "Reprendre",
"CANCEL": "Annuler",
"DOWNLOADED_REVEAL": "Téléchargé — afficher dans le dossier",
"DOWNLOADING_PERCENT": "Téléchargement… {{percent}} %",
"CANCEL_CONFIRM_TITLE": "Annuler le téléchargement",
"CANCEL_CONFIRM_MESSAGE": "Arrêter ce téléchargement ? Le fichier partiellement téléchargé sera supprimé.",
"RETRY": "Réessayer",
"REMOVE": "Supprimer",
"PLAY": "Lire",
"REVEAL": "Afficher dans le dossier",
"COPY_URL": "Copier l'URL de téléchargement",
"URL_COPIED": "URL de téléchargement copiée dans le presse-papiers",
"URL_COPY_FAILED": "Échec de la copie de l'URL dans le presse-papiers",
"STATUS": {
"QUEUED": "En attente",
"DOWNLOADING": "En cours",
"COMPLETED": "Terminé",
"FAILED": "Échec",
"CANCELED": "Annulé",
"PAUSED": "En pause",
"FILE_MISSING": "File missing"
},
"ACTIVE_COUNT": "{{count}} active",
"TRACKED_DOWNLOADS": "Tracked downloads",
"CLEAR_FINISHED": "Clear finished",
"DOWNLOADING_NOW": "Downloading now",
"NEEDS_ATTENTION": "Needs attention",
"READY_TO_WATCH": "Ready to watch",
"OFFLINE": "Offline",
"OFFLINE_BADGE": "Offline",
"FILTER": {
"LABEL": "Filter downloads",
"ALL": "All",
"MOVIES": "Movies",
"SERIES": "Series",
"IN_PROGRESS": "In progress"
},
"REMOVE_FROM_MANAGER": "Remove from manager",
"REMOVE_COMPLETED_DIALOG": {
"TITLE": "Remove from manager?",
"MESSAGE": "This removes the entry from IPTVnator. The downloaded media file remains on disk."
},
"REMOVE_PARTIAL_DIALOG": {
"TITLE": "Remove partial download?",
"MESSAGE": "This removes the entry and any retained partial download. It can no longer be resumed."
},
"CLEAR_FINISHED_DIALOG": {
"TITLE": "Clear finished downloads?",
"MESSAGE": "Completed media files remain on disk. Retained partial data for failed or canceled entries is deleted."
},
"ARTWORK_UNAVAILABLE": "Artwork unavailable",
"EPISODE_COUNT_ONE": "1 episode",
"EPISODE_COUNT_OTHER": "{{count}} episodes",
"MORE_ACTIONS": "More actions",
"MOVIE": "Movie",
"EPISODE": "Episode",
"SERIES": "Series",
"OPEN_ARTWORK": "Open {{title}}",
"OPEN_DETAILS": "Open details",
"OPEN_EPISODES": "Open downloaded episodes",
"SEASON": "Season {{season}}",
"SEASON_RANGE": "Seasons {{first}}–{{last}}",
"DOWNLOADED_EPISODES": "Downloaded episodes",
"OFFLINE_DETAIL": {
"AVAILABLE": "Available offline",
"PLAY": "Play offline",
"VIEW_IN_PORTAL": "View in portal",
"VIEW_IN_PORTAL_UNAVAILABLE": "The source item is no longer available",
"DOWNLOADED_EPISODES": "{{count}} downloaded episodes",
"FILE_SIZE": "{{size}}",
"NOT_FOUND_TITLE": "Download not found",
"NOT_FOUND_BODY": "This download is no longer available.",
"BACK": "Back to Downloads"
},
"ARIA": {
"OPEN": "Open {{title}}",
"POSTER_UNAVAILABLE": "Artwork unavailable for {{title}}",
"PROGRESS": "Download progress for {{title}}",
"PAUSE": "Pause {{title}}",
"CANCEL": "Cancel {{title}}",
"RESUME": "Resume {{title}}",
"REMOVE": "Remove {{title}} from manager",
"RETRY": "Retry {{title}}",
"MORE_ACTIONS": "More actions for {{title}}",
"COPY_URL": "Copy download URL for {{title}}",
"DOWNLOAD_AGAIN": "Download {{title}} again"
},
"DOWNLOAD_AGAIN": "Download again"
},
"REMOTE_CONTROL": {
"TITLE": "Télécommande",
"SUBTITLE": "Contrôlez votre lecteur IPTV à distance",
"UP_CHANNEL": "Chaîne précédente",
"DOWN_CHANNEL": "Chaîne suivante",
"HEADER": "Télécommande IPTVNator",
"FOOTER": "Télécommande IPTVNator"
},
"WORKSPACE": {
"FAVORITES_ONLY": "Favoris uniquement",
"SORT_CUSTOM": "Ordre personnalisé",
"SORT_DATE_DESC": "Date d'ajout (plus récents en premier)",
"SORT_DATE_ASC": "Date d'ajout (plus anciens en premier)",
"SORT_NAME_ASC": "Nom A-Z",
"SORT_NAME_DESC": "Nom Z-A",
"SORT_TOP_RATED": "Top rated",
"SORT_LOWEST_RATED": "Lowest rated first",
"REFINE_ACTION": "Refine",
"REFINE_SORT_SECTION": "Sort by",
"REFINE_RATING_SECTION": "Minimum rating",
"REFINE_CLEAR_RATING": "Clear {{value}}.0 and higher rating filter",
"FILTER_RATING": "Filter by rating",
"FILTER_RATING_ANY": "Any rating",
"FILTER_RATING_MIN": "{{value}}.0 and higher",
"SORT_LABEL": "Trier : ",
"SORT_SERVER": "Ordre du serveur",
"CATEGORY_SORT_ARIA": "Trier les catégories",
"DASHBOARD": {
"CONTINUE_WATCHING": "Reprendre la lecture",
"LIVE_FAVORITES": "En direct sur vos favoris",
"LIVE_RECENT": "Reprendre la TV en direct",
"REMAINING_SECONDS": "Il reste {{seconds}} s",
"REMAINING_MINUTES": "Il reste {{minutes}} min",
"REMAINING_HOURS": "Il reste {{hours}} h",
"REMAINING_HOURS_MINUTES": "Il reste {{hours}} h {{minutes}} min",
"PERCENT_WATCHED": "{{value}}% regardé",
"UNTITLED_SOURCE": "Source sans titre",
"GLOBAL_FAVORITES": "Favoris globaux",
"REMOVE_FROM_HISTORY": "Retirer de l'historique",
"RECENT_SOURCES": "Sources récemment utilisées",
"MANAGE_ALL": "Tout gérer",
"SEE_ALL": "Voir tout",
"SEE_ALL_COUNT": "Voir les {{count}}",
"RECENTLY_WATCHED": "Récemment regardés",
"XTREAM_RECENTLY_ADDED": "Récemment ajoutés sur Xtream",
"TMDB_TRENDING": "Tendances de la semaine",
"TMDB_RECOMMENDED": "Recommandations pour vous",
"TMDB_RECOMMENDED_BECAUSE": "Parce que vous avez regardé {{title}}",
"NO_HISTORY": "Aucun élément trouvé pour ce filtre.",
"NO_HISTORY_HINT": "Votre historique de visionnage apparaîtra ici une fois que vous aurez commencé à lire du contenu depuis vos listes de lecture.",
"XTREAM": "Xtream",
"STALKER": "Stalker",
"M3U": "M3U",
"STALKER_PORTAL": "Portail Stalker",
"PROVIDER": "Fournisseur",
"TYPE_LIVE": "Direct",
"TYPE_MOVIE": "Film",
"TYPE_SERIES": "Série",
"SEASON_EPISODE_BADGE": "S{{season}}·E{{episode}}",
"NOT_YET_SYNCED": "Pas encore synchronisé",
"RECENTLY_WATCHED_LIVE_TV": "Recently watched live TV",
"FAVORITE_MOVIES_AND_SERIES": "Favorite movies & series",
"SOURCE_EXPIRES_IN_DAYS": "Expire dans {{days}} j",
"SOURCE_EXPIRED": "Expiré"
},
"SHELL": {
"BRAND_ALT": "IPTVnator",
"RAIL_DASHBOARD": "Tableau de bord",
"OPEN_DASHBOARD": "Ouvrir le tableau de bord",
"RAIL_SOURCES": "Sources",
"OPEN_SOURCES": "Ouvrir les sources",
"RAIL_GLOBAL_FAVORITES": "Favoris",
"RAIL_GLOBAL_RECENT": "Récemment consultés",
"RAIL_GLOBAL_SEARCH": "Global search",
"RAIL_SETTINGS": "Paramètres",
"OPEN_SETTINGS": "Ouvrir les paramètres",
"RAIL_LIBRARY": "Bibliothèque",
"RAIL_MOVIES": "Films",
"RAIL_LIVE": "TV en direct",
"RAIL_SERIES": "Séries",
"RAIL_RECENTLY_ADDED": "Récemment ajoutés",
"RAIL_SEARCH": "Recherche avancée",
"RAIL_RECENT": "Récemment consultés",
"RAIL_FAVORITES": "Favoris",
"RAIL_DOWNLOADS": "Téléchargements",
"EXTERNAL_PLAYBACK_CLOSE": "Close player",
"EXTERNAL_PLAYBACK_DISMISS": "Dismiss",
"EXTERNAL_PLAYBACK_OPENING": "Opening player…",
"EXTERNAL_PLAYBACK_STARTED": "Player started",
"EXTERNAL_PLAYBACK_PLAYING": "Playing",
"EXTERNAL_PLAYBACK_FAILED": "External player error",
"EXTERNAL_PLAYBACK_CLOSED": "Closed",
"RAIL_ALL_CHANNELS": "Toutes les chaînes",
"RAIL_GROUPS": "Groupes",
"RAIL_CONTEXT_ACTIONS": "Actions de section",
"SEARCH_LABEL": "Rechercher",
"SEARCH_SOURCES_PLACEHOLDER": "Rechercher des sources (toutes les listes)…",
"SEARCH_GLOBAL_PLACEHOLDER": "Search all playlists...",
"SEARCH_PLAYLIST_PLACEHOLDER": "Rechercher dans cette liste de lecture…",
"SEARCH_SECTION_PLACEHOLDER": "Rechercher dans cette section…",
"FILTER_SECTION_PLACEHOLDER": "Filtrer cette section…",
"SEARCH_STATUS_LOADED_ONLY": "Chaînes chargées uniquement",
"COMMAND_PALETTE_SHORTCUT": "Palette de commandes (Ctrl/Cmd+K)",
"OPEN_COMMAND_PALETTE": "Ouvrir la palette de commandes",
"CONTEXT_DRAWER_CATEGORIES_TOGGLE": "Afficher ou masquer le panneau des catégories",
"CONTEXT_DRAWER_CATEGORIES_TOOLTIP": "Catégories",
"CONTEXT_DRAWER_FILTERS_TOGGLE": "Afficher ou masquer le panneau des filtres",
"CONTEXT_DRAWER_FILTERS_TOOLTIP": "Filtres",
"CONTEXT_DRAWER_SETTINGS_TOGGLE": "Afficher ou masquer le panneau des sections des paramètres",
"CONTEXT_DRAWER_SETTINGS_TOOLTIP": "Sections des paramètres",
"ADD_PLAYLIST_ALL": "Ajouter une liste de lecture",
"ADD_PLAYLIST": "Ajouter une liste de lecture",
"OPEN_DOWNLOADS": "Ouvrir les téléchargements",
"OPEN_CONTEXT_ACTIONS": "Ouvrir les actions de section",
"NO_SECTION_ACTIONS": "Aucune action pour cette section",
"PLAYLIST_INFO": "Infos de la liste de lecture",
"ACCOUNT_INFO": "Infos du compte",
"REFRESH_PLAYLIST": "Actualiser la liste de lecture",
"CLEAR_COMPLETED_DOWNLOADS_ALL": "Effacer les téléchargements terminés (toutes les listes)",
"CLEAR_COMPLETED_DOWNLOADS_ALL_ARIA": "Effacer les téléchargements terminés pour toutes les listes de lecture",
"CLEAR_COMPLETED_DOWNLOADS_THIS_PLAYLIST": "Effacer les téléchargements terminés (cette liste)",
"CLEAR_COMPLETED_DOWNLOADS_THIS_PLAYLIST_ARIA": "Effacer les téléchargements terminés pour cette liste de lecture",
"CLEAR_RECENTLY_VIEWED_SECTION": "Effacer les éléments récemment consultés",
"CLEAR_RECENTLY_VIEWED_SECTION_ARIA": "Effacer les éléments récemment consultés pour cette section",
"CLEAR_RECENTLY_VIEWED_TYPE": "Effacer les {{type}} récemment consultés",
"CLEAR_RECENTLY_VIEWED_DIALOG_TITLE": "Effacer les {{type}} récemment consultés ?",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE_PLAYLIST": "Tous les éléments {{type}} de cette liste de lecture seront retirés de votre historique récemment consulté. Cette action est irréversible.",
"CLEAR_RECENTLY_VIEWED_DIALOG_MESSAGE_ALL": "Tous les éléments {{type}} de toutes les listes de lecture seront retirés de votre historique récemment consulté. Cette action est irréversible.",
"CLEAR_FAVORITES_TYPE": "Effacer les favoris {{type}}",
"CLEAR_FAVORITES_DIALOG_TITLE": "Retirer tous les favoris {{type}} ?",
"CLEAR_FAVORITES_DIALOG_MESSAGE_PLAYLIST": "Tous les favoris {{type}} de cette liste de lecture seront retirés. Cette action est irréversible.",
"CLEAR_FAVORITES_DIALOG_MESSAGE_ALL": "Tous les favoris {{type}} de toutes les listes de lecture seront retirés. Cette action est irréversible.",
"XTREAM_CODE": "Xtream Code",
"STALKER_PORTAL": "Portail Stalker",
"CHANNELS_COUNT": "{{count}} chaînes",
"NO_SOURCES_AVAILABLE": "Aucune source disponible",
"ONE_SOURCE_AVAILABLE": "1 source disponible",
"SOURCES_AVAILABLE": "{{count}} sources disponibles",
"GO_TO_DASHBOARD": "Back to dashboard",
"GO_TO_SOURCES": "Go to Sources",
"DROP_OVERLAY_TITLE": "Drop to add playlist",
"DROP_OVERLAY_BODY": "Release an .m3u or .m3u8 file anywhere in the workspace to import it.",
"DROP_OVERLAY_REJECTED_BODY": "Please drop an .m3u or .m3u8 file. Press Esc to dismiss.",
"DROP_OVERLAY_REJECTED_UNSUPPORTED": "Unsupported file type",
"DROP_OVERLAY_REJECTED_EMPTY": "That file is empty",
"DROP_OVERLAY_REJECTED_READ_ERROR": "Could not read that file",
"DROP_IMPORT_SUCCESS": "Importing \"{{title}}\"…",
"XTREAM_IMPORT_TITLE": "Synchronisation de la liste de lecture",
"XTREAM_IMPORT_REMOTE_BADGE": "Source distante",
"XTREAM_IMPORT_LOCAL_BADGE": "Bibliothèque locale",
"XTREAM_IMPORT_DETAIL_REMOTE": "En attente de la réponse du fournisseur.",
"XTREAM_IMPORT_DETAIL_LOCAL": "Préparation d'une bascule plus rapide entre listes de lecture pour la prochaine visite.",
"XTREAM_IMPORT_DETAIL_CACHED": "Lecture depuis la bibliothèque locale — aucune donnée n'est téléchargée depuis le fournisseur.",
"XTREAM_IMPORT_PREPARING": "Préparation de la bibliothèque locale…",
"XTREAM_IMPORT_LOADING_CACHED": "Chargement du catalogue sauvegardé de cet appareil…",
"XTREAM_IMPORT_LOADING": "Récupération des données de la liste depuis la source…",
"XTREAM_IMPORT_SAVING": "Enregistrement des données de la liste localement…",
"XTREAM_IMPORT_RESTORING_FAVORITES": "Restauration des favoris depuis la bibliothèque locale…",
"XTREAM_IMPORT_RESTORING_RECENT": "Restauration des éléments récemment consultés depuis la bibliothèque locale…",
"XTREAM_IMPORT_PROGRESS": "{{type}} importé : {{current}} / {{total}}",
"XTREAM_IMPORT_CANCEL": "Arrêter la synchronisation",
"XTREAM_IMPORT_CANCELLING": "Arrêt de la synchronisation…",
"COMMANDS": {
"GLOBAL_SEARCH_LABEL": "Search all playlists",
"GLOBAL_SEARCH_DESCRIPTION": "Open global search",
"PLAYLIST_SEARCH_LABEL": "Recherche avancée dans cette liste de lecture",
"PLAYLIST_SEARCH_DESCRIPTION": "Ouvrir la recherche avancée de la liste de lecture",
"OPEN_GLOBAL_FAVORITES_LABEL": "Ouvrir les favoris globaux",
"OPEN_GLOBAL_FAVORITES_DESCRIPTION": "Naviguer vers les favoris agrégés",
"OPEN_DOWNLOADS_LABEL": "Ouvrir les téléchargements",
"OPEN_DOWNLOADS_DESCRIPTION": "Naviguer vers la vue des téléchargements",
"OPEN_GLOBAL_RECENT_LABEL": "Ouvrir les éléments récemment consultés",
"OPEN_GLOBAL_RECENT_DESCRIPTION": "Ouvrir la page globale des éléments récemment consultés",
"OPEN_SETTINGS_LABEL": "Ouvrir les paramètres",
"OPEN_SETTINGS_DESCRIPTION": "Naviguer vers les paramètres de l'application",
"OPEN_SOURCES_LABEL": "Gérer les sources",
"OPEN_SOURCES_DESCRIPTION": "Naviguer vers la gestion des sources",
"OPEN_DASHBOARD_LABEL": "Ouvrir le tableau de bord",
"OPEN_DASHBOARD_DESCRIPTION": "Naviguer vers le tableau de bord",
"ADD_PLAYLIST_LABEL": "Ajouter une nouvelle source",
"ADD_PLAYLIST_DESCRIPTION": "Ouvrir la fenêtre d'ajout de liste de lecture",
"ADD_PLAYLIST_M3U_LABEL": "Add M3U playlist",
"ADD_PLAYLIST_M3U_DESCRIPTION": "Open add dialog on the M3U file or URL tab",
"ADD_PLAYLIST_XTREAM_LABEL": "Add Xtream Codes playlist",
"ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab",
"ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal",
"ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab",
"REFRESH_PLAYLIST_LABEL": "Actualiser la liste de lecture",
"REFRESH_PLAYLIST_DESCRIPTION": "Resynchroniser les données depuis la source distante",
"PLAYLIST_INFO_LABEL": "Détails de la liste de lecture",
"PLAYLIST_INFO_DESCRIPTION": "Afficher les informations de la liste de lecture en cours",
"ACCOUNT_INFO_LABEL": "Infos du compte",
"ACCOUNT_INFO_DESCRIPTION": "Afficher les détails du compte du serveur Xtream",
"OPEN_VIEW_DESCRIPTION": "Naviguer vers {{view}}",
"CLEAR_CURRENT_VIEW_DESCRIPTION": "Effacer tous les éléments {{type}} visibles dans cette vue",
"OPEN_MULTI_EPG_DESCRIPTION": "Ouvrir la vue EPG multi-chaînes",
"GO_TO_VOD_LABEL": "Films",
"GO_TO_VOD_DESCRIPTION": "Aller à la section films",
"GO_TO_LIVE_LABEL": "TV en direct",
"GO_TO_LIVE_DESCRIPTION": "Aller à la section TV en direct",
"GO_TO_SERIES_LABEL": "Séries",
"GO_TO_SERIES_DESCRIPTION": "Aller à la section séries",
"SWITCH_PLAYER_LABEL": "Basculer le lecteur sur {{name}}",
"SWITCH_PLAYER_DESCRIPTION": "Définir {{name}} comme lecteur vidéo actif",
"SWITCH_PLAYER_FEEDBACK": "Lecteur défini sur {{name}}",
"ACCOUNT_INFO_DESCRIPTION_STALKER": "Afficher les informations du compte du portail Stalker"
},
"XTREAM_REFRESH_TITLE": "Actualisation de la playlist",
"XTREAM_REFRESH_COLLECTING_DATA": "Préservation des données de votre bibliothèque...",
"XTREAM_REFRESH_DELETING_CONTENT": "Suppression des flux en cache...",
"XTREAM_REFRESH_DELETING_CATEGORIES": "Suppression des catégories en cache...",
"XTREAM_REFRESH_DETAIL_LOCAL": "Les favoris, l’historique de lecture, les catégories masquées et la progression sont préparés pour être restaurés après la synchronisation.",
"XTREAM_REFRESH_PROGRESS": "Enregistrements locaux traités : {{current}} / {{total}}",
"RAIL_RADIO": "Radio"
},
"SOURCES": {
"TITLE": "Sources",
"SUBTITLE": "Filtrer et trier les listes de lecture",
"TYPE": "Type",
"ALL": "Toutes",
"M3U_PLAYLISTS": "Listes de lecture M3U",
"XTREAM_PLAYLISTS": "Listes de lecture Xtream",
"STALKER_PLAYLISTS": "Listes de lecture Stalker",
"ALL_PLAYLISTS": "Toutes les listes de lecture",
"PLAYLIST_COUNT_ONE": "1 liste de lecture",
"PLAYLIST_COUNT_OTHER": "{{count}} listes de lecture"
},
"CONTEXT": {
"CATEGORIES": "Catégories",
"MOVIE_CATEGORIES": "Catégories de films",
"SERIES_CATEGORIES": "Catégories de séries",
"LIVE_CATEGORIES": "Catégories en direct",
"XTREAM_SYNCING_MOVIES": "Synchronisation des catégories de films…",
"XTREAM_SYNCING_SERIES": "Synchronisation des catégories de séries…",
"XTREAM_SYNCING_LIVE": "Synchronisation des catégories en direct…",
"XTREAM_SOURCE": "Source Xtream",
"STALKER_PORTAL": "Portail Stalker",
"MANAGE_CATEGORIES": "Gérer les catégories",
"LOAD_CATEGORIES_ERROR": "Impossible de charger les catégories",
"LOAD_CATEGORIES_ERROR_HINT": "Veuillez réessayer ou vérifier les paramètres du portail.",
"FILTER_BY_TYPE": "Filtrer par type",
"ITEM_COUNT_ONE": "1 élément",
"ITEM_COUNT_OTHER": "{{count}} éléments",
"SEARCH": "Rechercher",
"SEARCH_CATEGORIES": "Rechercher des catégories",
"RADIO_CATEGORIES": "Catégories radio"
},
"COMMAND_PALETTE": {
"TITLE": "Palette de commandes",
"SUBTITLE": "Actions globales et contextuelles",
"SEARCH_PLACEHOLDER": "Saisir pour filtrer les commandes",
"SEARCH_LABEL": "Filtrer les commandes",
"EMPTY": "Aucune commande trouvée",
"GROUP_GLOBAL": "Actions globales",
"GROUP_PLAYLIST": "Cette liste de lecture",
"GROUP_VIEW": "Vue actuelle",
"GROUP_SECTION": "Cette section",
"GROUP_RECENT": "Récemment utilisées"
},
"SHORTCUTS": {
"TITLE": "Keyboard shortcuts",
"SUBTITLE": "Workspace, navigation, playback, and dialog shortcuts available in IPTVnator.",
"OPEN_TOOLTIP": "Keyboard shortcuts (?)",
"OPEN_ARIA": "Open keyboard shortcuts",
"PLATFORM": {
"MAC": "macOS layout",
"OTHER": "Windows/Linux layout"
},
"GROUPS": {
"GLOBAL": "Global",
"NAVIGATION": "Navigation",
"PLAYBACK": "Playback",
"DIALOGS": "Dialogs and lists"
},
"ITEMS": {
"OPEN_KEYBOARD_SHORTCUTS": "Open this shortcuts list",
"OPEN_COMMAND_PALETTE": "Open command palette",
"OPEN_GLOBAL_SEARCH": "Open global search",
"OPEN_RECENTLY_VIEWED": "Open recently viewed",
"SUBMIT_SHELL_SEARCH": "Submit workspace search",
"TOGGLE_SIDEBAR": "Toggle sidebar",
"M3U_CHANNEL_NUMBER": "Select M3U channel by number",
"PLAY_PAUSE": "Play or pause embedded MPV playback",
"TOGGLE_FULLSCREEN": "Toggle embedded MPV fullscreen",
"SEEK": "Seek embedded MPV playback by 5 seconds",
"ADJUST_VOLUME": "Adjust volume by 5%",
"MUTE_AUDIO": "Mute audio",
"CLOSE_PLAYER_POPOVERS": "Close embedded MPV popovers",
"COMMAND_PALETTE_NAVIGATION": "Move command palette selection",
"COMMAND_PALETTE_RUN": "Run selected command palette item",
"CLOSE_DIALOGS": "Close dialog or dismiss overlay",
"DOWNLOADS_OPEN_ITEM": "Open focused download item in the library"
}
},
"GLOBAL_FAVORITES": {
"TITLE": "Favoris globaux",
"SUBTITLE": "TV en direct de toutes les listes de lecture",
"SEARCH_PLACEHOLDER": "Rechercher dans les favoris…",
"NO_RESULTS": "Aucun résultat",
"NO_RESULTS_HINT": "Essayez un autre terme de recherche",
"EMPTY_TITLE": "Aucun favori TV en direct pour le moment",
"EMPTY_HINT": "Mettez en favori des chaînes en direct depuis vos listes M3U, Xtream ou Stalker pour les voir ici.",
"EMPTY_PLAYER": "Sélectionnez une chaîne pour commencer à regarder",
"NO_PLAYLISTS_TITLE": "No favorites to show",
"NO_PLAYLISTS_BODY": "Add a playlist to start collecting favorites from live channels, movies, and series.",
"NO_ITEMS_TITLE": "No favorites yet",
"NO_ITEMS_BODY": "Tap the star icon on any channel, movie, or series to save it here.",
"UNKNOWN_CHANNEL": "Inconnue"
},
"GLOBAL_RECENT": {
"NO_PLAYLISTS_TITLE": "Nothing watched yet",
"NO_PLAYLISTS_BODY": "Add a playlist and your watching history will appear here.",
"NO_ITEMS_TITLE": "Nothing watched yet",
"NO_ITEMS_BODY": "Start watching anything from your library and it will show up here."
}
},
"LOADING": "Chargement",
"RETRY": "Réessayer",
"STALKER": {
"ACCOUNT_INFO": {
"TITLE": "Informations du compte",
"ACCOUNT": "Compte",
"PORTAL_INFO": "Portail",
"LOGIN": "Identifiant",
"STATUS": "Statut",
"ACTIVE": "Actif",
"INACTIVE": "Inactif",
"TARIFF_PLAN": "Forfait",
"EXPIRES": "Expire",
"DAYS_LEFT": "Jours restants",
"EXPIRED": "Expiré",
"MAC_ADDRESS": "Adresse MAC",
"PHONE": "Téléphone",
"PORTAL_URL": "URL du portail",
"PORTAL_TYPE_FULL": "Portail Ministra",
"PORTAL_TYPE_LEGACY": "Portail classique (portal.php)",
"CACHED_BADGE": "Données enregistrées",
"REFRESH_FAILED": "Le portail est injoignable — affichage des données enregistrées lors de son ajout.",
"NO_ACCOUNT_DATA_TITLE": "Aucune donnée de compte",
"NO_ACCOUNT_DATA_DESCRIPTION": "Ce portail ne publie pas d’informations de compte pour cet appareil."
}
}
}