mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-13 12:36:15 -08:00
feat(playback): embedded mpv pre-0.22 hardening, Linux parity, and localization (#1122)
* fix(playback): harden embedded mpv session handling and support detection - guard the session controller against late startup rejections clobbering a newer session during fast channel zapping - exclude the refresh timestamp from the session-update dedup key so idle sessions stop re-emitting IPC updates every 500 ms - macOS: reconcile async loadfile replies by request id so a rejected seek/aid/speed on a live stream no longer flips the session to error - append --ozone-platform=x11 on Linux in main.ts so direct binary and AppImage launches match the packaged .desktop launcher behavior - return a sandbox-specific unsupported reason in Flatpak/Snap instead of asking the user to install mpv inside the sandbox - update the stale "macOS only" embedded MPV claim in CLAUDE.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(playback): populate Linux audio tracks and fix ARM Linux packaging - Linux poller now reads track-list/count each tick and walks the scalar track-list/N/* sub-properties when the count changes, so the audio-track menu is no longer empty; selection reconciles from the aid property - afterPack replaces the x64 embedded_mpv.node with an embedded-mpv-unavailable.txt marker in arm64/armv7l Linux packages, and package-layout verification rejects foreign-architecture addons while requiring the marker - extend native source invariants for the non-fatal async-reply rule (macOS) and the Linux track-list polling contract - document the Linux track-list mechanics and ARM packaging behavior in docs/architecture/embedded-mpv-native.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(playback): embedded mpv player UX polish and full localization - click on the video toggles pause (same action as Space) with a 250 ms grace period so double-click fullscreen cancels the pending pause; no DOM overlay is drawn — the dock transport icon is the feedback - timeline scrubbing previews the drag position locally and commits a single seek on release instead of one IPC seek per drag pixel - translate all player UI strings (controls, tooltips, aria-labels, status and recording messages) via new EMBEDDED_MPV.PLAYER.* keys, synced across en + 17 locales through the i18n-fill workflow - replace the legacy @Output() EventEmitter with the signal output() API Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(playback): react to language changes and respect ozone platform hint Address review feedback on #1122: - add a translationsTick signal (onLangChange/onTranslationChange/ onDefaultLangChange) read by every computed() and template helper that calls translate.instant(), so labels re-evaluate on a runtime language switch and when the translation file finishes loading after mount - suppress the Linux --ozone-platform=x11 fallback when the user set ELECTRON_OZONE_PLATFORM_HINT, matching the existing respect for an explicit --ozone-platform switch Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3659de796c
commit
8eb0fe3261
38 files changed
+1823
-107
No files matched your search
@@ -1,6 +1,7 @@
|
||||
import { Component, signal } from '@angular/core';
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { By } from '@angular/platform-browser';
|
||||
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||
import { ResolvedPortalPlayback } from '@iptvnator/shared/interfaces';
|
||||
import {
|
||||
EmbeddedMpvOverlayVisibilityService,
|
||||
@@ -31,7 +32,7 @@ describe('EmbeddedMpvPlayerComponent recording status message', () => {
|
||||
} as unknown as typeof window.electron;
|
||||
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [EmbeddedMpvPlayerHostComponent],
|
||||
imports: [EmbeddedMpvPlayerHostComponent, TranslateModule.forRoot()],
|
||||
providers: [
|
||||
{
|
||||
provide: EmbeddedMpvOverlayVisibilityService,
|
||||
@@ -44,6 +45,17 @@ describe('EmbeddedMpvPlayerComponent recording status message', () => {
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
const translate = TestBed.inject(TranslateService);
|
||||
translate.setTranslation('en', {
|
||||
EMBEDDED_MPV: {
|
||||
PLAYER: {
|
||||
SAVED_TO: 'Saved to {{path}}',
|
||||
RECORDING_SAVED: 'Recording saved',
|
||||
},
|
||||
},
|
||||
});
|
||||
translate.use('en');
|
||||
|
||||
fixture = TestBed.createComponent(EmbeddedMpvPlayerHostComponent);
|
||||
fixture.detectChanges();
|
||||
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "إلغاء كتم الصوت",
|
||||
"VOLUME": "مستوى الصوت"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "إعادة المحاولة",
|
||||
"STALLED": "يستغرق بدء هذا البث وقتًا أطول من المتوقع.",
|
||||
"PLAYBACK_FAILED": "فشل التشغيل عبر MPV المضمّن.",
|
||||
"CHECKING_SUPPORT": "جارٍ التحقق من دعم MPV المضمّن...",
|
||||
"NOT_AVAILABLE": "MPV المضمّن غير متاح في هذه البيئة.",
|
||||
"LOADING_STREAM": "جارٍ تحميل البث…",
|
||||
"PLAY": "تشغيل",
|
||||
"PAUSE": "إيقاف مؤقت",
|
||||
"PREVIOUS_EPISODE": "الحلقة السابقة",
|
||||
"NEXT_EPISODE": "الحلقة التالية",
|
||||
"BACK_10_SECONDS": "رجوع 10 ثوانٍ",
|
||||
"FORWARD_10_SECONDS": "تقديم 10 ثوانٍ",
|
||||
"LIVE_STREAM": "بث مباشر",
|
||||
"MUTE": "كتم الصوت",
|
||||
"UNMUTE": "إلغاء كتم الصوت",
|
||||
"MUTED": "الصوت مكتوم",
|
||||
"VOLUME": "مستوى الصوت",
|
||||
"VOLUME_LABEL": "مستوى الصوت {{percent}}%",
|
||||
"AUDIO_TRACKS": "مسارات الصوت",
|
||||
"SUBTITLES": "الترجمات",
|
||||
"SUBTITLES_OFF": "إيقاف",
|
||||
"TRACK_DEFAULT": "افتراضي",
|
||||
"AUDIO_TRACK_FALLBACK": "صوت {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "ترجمة {{index}}",
|
||||
"PLAYBACK_SPEED": "سرعة التشغيل",
|
||||
"SPEED_TOOLTIP": "السرعة: {{speed}}",
|
||||
"ASPECT_RATIO": "نسبة العرض إلى الارتفاع",
|
||||
"ASPECT_TOOLTIP": "النسبة: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "افتراضي",
|
||||
"START_RECORDING": "بدء التسجيل",
|
||||
"STOP_RECORDING": "إيقاف التسجيل",
|
||||
"RECORDING": "جارٍ التسجيل",
|
||||
"RECORDING_SAVED": "تم حفظ التسجيل",
|
||||
"RECORDING_FAILED": "فشل التسجيل",
|
||||
"RECORDING_FAILED_TO_START": "فشل بدء التسجيل.",
|
||||
"RECORDING_FAILED_TO_STOP": "فشل إيقاف التسجيل.",
|
||||
"SAVED_TO": "تم الحفظ في {{path}}",
|
||||
"ENTER_FULLSCREEN": "ملء الشاشة",
|
||||
"EXIT_FULLSCREEN": "الخروج من ملء الشاشة"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "رجّع الصوت",
|
||||
"VOLUME": "الصوت"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "حاول مرة أخرى",
|
||||
"STALLED": "هاد البث كياخد وقت كثر من المتوقع باش يبدا.",
|
||||
"PLAYBACK_FAILED": "فشل التشغيل بـ MPV المدمج.",
|
||||
"CHECKING_SUPPORT": "جاري التحقق من دعم MPV المدمج...",
|
||||
"NOT_AVAILABLE": "MPV المدمج ما متوفرش فهاد البيئة.",
|
||||
"LOADING_STREAM": "جاري تشريج البث…",
|
||||
"PLAY": "شغل",
|
||||
"PAUSE": "وقّف",
|
||||
"PREVIOUS_EPISODE": "الحلقة السابقة",
|
||||
"NEXT_EPISODE": "الحلقة الجاية",
|
||||
"BACK_10_SECONDS": "رجع 10 ثواني",
|
||||
"FORWARD_10_SECONDS": "قدّم 10 ثواني",
|
||||
"LIVE_STREAM": "بث مباشر",
|
||||
"MUTE": "كتم الصوت",
|
||||
"UNMUTE": "رجّع الصوت",
|
||||
"MUTED": "الصوت مكتوم",
|
||||
"VOLUME": "الصوت",
|
||||
"VOLUME_LABEL": "الصوت {{percent}}%",
|
||||
"AUDIO_TRACKS": "مسارات الصوت",
|
||||
"SUBTITLES": "الترجمة",
|
||||
"SUBTITLES_OFF": "معطلة",
|
||||
"TRACK_DEFAULT": "افتراضي",
|
||||
"AUDIO_TRACK_FALLBACK": "صوت {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "ترجمة {{index}}",
|
||||
"PLAYBACK_SPEED": "سرعة التشغيل",
|
||||
"SPEED_TOOLTIP": "السرعة: {{speed}}",
|
||||
"ASPECT_RATIO": "نسبة الأبعاد",
|
||||
"ASPECT_TOOLTIP": "الأبعاد: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "افتراضي",
|
||||
"START_RECORDING": "بدا التسجيل",
|
||||
"STOP_RECORDING": "وقّف التسجيل",
|
||||
"RECORDING": "جاري التسجيل",
|
||||
"RECORDING_SAVED": "التسجيل تحفظ",
|
||||
"RECORDING_FAILED": "فشل التسجيل",
|
||||
"RECORDING_FAILED_TO_START": "التسجيل ما قدرش يبدا.",
|
||||
"RECORDING_FAILED_TO_STOP": "التسجيل ما قدرش يتوقف.",
|
||||
"SAVED_TO": "تحفظ في {{path}}",
|
||||
"ENTER_FULLSCREEN": "دخل لملء الشاشة",
|
||||
"EXIT_FULLSCREEN": "خرج من ملء الشاشة"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Уключыць гук",
|
||||
"VOLUME": "Гучнасць"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Паўтарыць",
|
||||
"STALLED": "Гэты паток запускаецца даўжэй, чым чакалася.",
|
||||
"PLAYBACK_FAILED": "Не ўдалося прайграць праз убудаваны MPV.",
|
||||
"CHECKING_SUPPORT": "Праверка падтрымкі ўбудаванага MPV...",
|
||||
"NOT_AVAILABLE": "Убудаваны MPV недаступны ў гэтым асяроддзі.",
|
||||
"LOADING_STREAM": "Загрузка патоку…",
|
||||
"PLAY": "Прайграць",
|
||||
"PAUSE": "Паўза",
|
||||
"PREVIOUS_EPISODE": "Папярэдні эпізод",
|
||||
"NEXT_EPISODE": "Наступны эпізод",
|
||||
"BACK_10_SECONDS": "Назад на 10 секунд",
|
||||
"FORWARD_10_SECONDS": "Наперад на 10 секунд",
|
||||
"LIVE_STREAM": "Прамая трансляцыя",
|
||||
"MUTE": "Адключыць гук",
|
||||
"UNMUTE": "Уключыць гук",
|
||||
"MUTED": "Гук адключаны",
|
||||
"VOLUME": "Гучнасць",
|
||||
"VOLUME_LABEL": "Гучнасць {{percent}}%",
|
||||
"AUDIO_TRACKS": "Аўдыядарожкі",
|
||||
"SUBTITLES": "Субтытры",
|
||||
"SUBTITLES_OFF": "Выкл.",
|
||||
"TRACK_DEFAULT": "Па змаўчанні",
|
||||
"AUDIO_TRACK_FALLBACK": "Аўдыя {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Субтытры {{index}}",
|
||||
"PLAYBACK_SPEED": "Хуткасць прайгравання",
|
||||
"SPEED_TOOLTIP": "Хуткасць: {{speed}}",
|
||||
"ASPECT_RATIO": "Суадносіны бакоў",
|
||||
"ASPECT_TOOLTIP": "Суадносіны: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "Па змаўчанні",
|
||||
"START_RECORDING": "Пачаць запіс",
|
||||
"STOP_RECORDING": "Спыніць запіс",
|
||||
"RECORDING": "Ідзе запіс",
|
||||
"RECORDING_SAVED": "Запіс захаваны",
|
||||
"RECORDING_FAILED": "Памылка запісу",
|
||||
"RECORDING_FAILED_TO_START": "Не ўдалося пачаць запіс.",
|
||||
"RECORDING_FAILED_TO_STOP": "Не ўдалося спыніць запіс.",
|
||||
"SAVED_TO": "Захавана ў {{path}}",
|
||||
"ENTER_FULLSCREEN": "Увайсці ў поўнаэкранны рэжым",
|
||||
"EXIT_FULLSCREEN": "Выйсці з поўнаэкраннага рэжыму"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Stummschaltung aufheben",
|
||||
"VOLUME": "Lautstärke"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Erneut versuchen",
|
||||
"STALLED": "Der Start dieses Streams dauert länger als erwartet.",
|
||||
"PLAYBACK_FAILED": "Die Wiedergabe mit eingebettetem MPV ist fehlgeschlagen.",
|
||||
"CHECKING_SUPPORT": "Unterstützung für eingebettetes MPV wird geprüft...",
|
||||
"NOT_AVAILABLE": "Eingebettetes MPV ist in dieser Umgebung nicht verfügbar.",
|
||||
"LOADING_STREAM": "Stream wird geladen…",
|
||||
"PLAY": "Wiedergabe",
|
||||
"PAUSE": "Pause",
|
||||
"PREVIOUS_EPISODE": "Vorherige Folge",
|
||||
"NEXT_EPISODE": "Nächste Folge",
|
||||
"BACK_10_SECONDS": "10 Sekunden zurück",
|
||||
"FORWARD_10_SECONDS": "10 Sekunden vor",
|
||||
"LIVE_STREAM": "Live-Stream",
|
||||
"MUTE": "Stummschalten",
|
||||
"UNMUTE": "Stummschaltung aufheben",
|
||||
"MUTED": "Stummgeschaltet",
|
||||
"VOLUME": "Lautstärke",
|
||||
"VOLUME_LABEL": "Lautstärke {{percent}} %",
|
||||
"AUDIO_TRACKS": "Tonspuren",
|
||||
"SUBTITLES": "Untertitel",
|
||||
"SUBTITLES_OFF": "Aus",
|
||||
"TRACK_DEFAULT": "Standard",
|
||||
"AUDIO_TRACK_FALLBACK": "Audio {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Untertitel {{index}}",
|
||||
"PLAYBACK_SPEED": "Wiedergabegeschwindigkeit",
|
||||
"SPEED_TOOLTIP": "Geschwindigkeit: {{speed}}",
|
||||
"ASPECT_RATIO": "Seitenverhältnis",
|
||||
"ASPECT_TOOLTIP": "Seitenverhältnis: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "Standard",
|
||||
"START_RECORDING": "Aufnahme starten",
|
||||
"STOP_RECORDING": "Aufnahme stoppen",
|
||||
"RECORDING": "Aufnahme",
|
||||
"RECORDING_SAVED": "Aufnahme gespeichert",
|
||||
"RECORDING_FAILED": "Aufnahme fehlgeschlagen",
|
||||
"RECORDING_FAILED_TO_START": "Aufnahme konnte nicht gestartet werden.",
|
||||
"RECORDING_FAILED_TO_STOP": "Aufnahme konnte nicht gestoppt werden.",
|
||||
"SAVED_TO": "Gespeichert unter {{path}}",
|
||||
"ENTER_FULLSCREEN": "Vollbild aktivieren",
|
||||
"EXIT_FULLSCREEN": "Vollbild beenden"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Κατάργηση σίγασης",
|
||||
"VOLUME": "Ένταση"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Επανάληψη",
|
||||
"STALLED": "Η έναρξη αυτής της ροής καθυστερεί περισσότερο από το αναμενόμενο.",
|
||||
"PLAYBACK_FAILED": "Η αναπαραγωγή με το ενσωματωμένο MPV απέτυχε.",
|
||||
"CHECKING_SUPPORT": "Έλεγχος υποστήριξης ενσωματωμένου MPV...",
|
||||
"NOT_AVAILABLE": "Το ενσωματωμένο MPV δεν είναι διαθέσιμο σε αυτό το περιβάλλον.",
|
||||
"LOADING_STREAM": "Φόρτωση ροής…",
|
||||
"PLAY": "Αναπαραγωγή",
|
||||
"PAUSE": "Παύση",
|
||||
"PREVIOUS_EPISODE": "Προηγούμενο επεισόδιο",
|
||||
"NEXT_EPISODE": "Επόμενο επεισόδιο",
|
||||
"BACK_10_SECONDS": "Πίσω 10 δευτερόλεπτα",
|
||||
"FORWARD_10_SECONDS": "Μπροστά 10 δευτερόλεπτα",
|
||||
"LIVE_STREAM": "Ζωντανή ροή",
|
||||
"MUTE": "Σίγαση",
|
||||
"UNMUTE": "Κατάργηση σίγασης",
|
||||
"MUTED": "Σε σίγαση",
|
||||
"VOLUME": "Ένταση",
|
||||
"VOLUME_LABEL": "Ένταση {{percent}}%",
|
||||
"AUDIO_TRACKS": "Κομμάτια ήχου",
|
||||
"SUBTITLES": "Υπότιτλοι",
|
||||
"SUBTITLES_OFF": "Ανενεργοί",
|
||||
"TRACK_DEFAULT": "Προεπιλογή",
|
||||
"AUDIO_TRACK_FALLBACK": "Ήχος {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Υπότιτλος {{index}}",
|
||||
"PLAYBACK_SPEED": "Ταχύτητα αναπαραγωγής",
|
||||
"SPEED_TOOLTIP": "Ταχύτητα: {{speed}}",
|
||||
"ASPECT_RATIO": "Αναλογία εικόνας",
|
||||
"ASPECT_TOOLTIP": "Αναλογία: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "Προεπιλογή",
|
||||
"START_RECORDING": "Έναρξη εγγραφής",
|
||||
"STOP_RECORDING": "Διακοπή εγγραφής",
|
||||
"RECORDING": "Εγγραφή",
|
||||
"RECORDING_SAVED": "Η εγγραφή αποθηκεύτηκε",
|
||||
"RECORDING_FAILED": "Η εγγραφή απέτυχε",
|
||||
"RECORDING_FAILED_TO_START": "Η έναρξη της εγγραφής απέτυχε.",
|
||||
"RECORDING_FAILED_TO_STOP": "Η διακοπή της εγγραφής απέτυχε.",
|
||||
"SAVED_TO": "Αποθηκεύτηκε στο {{path}}",
|
||||
"ENTER_FULLSCREEN": "Μετάβαση σε πλήρη οθόνη",
|
||||
"EXIT_FULLSCREEN": "Έξοδος από πλήρη οθόνη"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Unmute",
|
||||
"VOLUME": "Volume"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Retry",
|
||||
"STALLED": "This stream is taking longer than expected to start.",
|
||||
"PLAYBACK_FAILED": "Embedded MPV playback failed.",
|
||||
"CHECKING_SUPPORT": "Checking embedded MPV support...",
|
||||
"NOT_AVAILABLE": "Embedded MPV is not available in this environment.",
|
||||
"LOADING_STREAM": "Loading stream…",
|
||||
"PLAY": "Play",
|
||||
"PAUSE": "Pause",
|
||||
"PREVIOUS_EPISODE": "Previous episode",
|
||||
"NEXT_EPISODE": "Next episode",
|
||||
"BACK_10_SECONDS": "Back 10 seconds",
|
||||
"FORWARD_10_SECONDS": "Forward 10 seconds",
|
||||
"LIVE_STREAM": "Live stream",
|
||||
"MUTE": "Mute",
|
||||
"UNMUTE": "Unmute",
|
||||
"MUTED": "Muted",
|
||||
"VOLUME": "Volume",
|
||||
"VOLUME_LABEL": "Volume {{percent}}%",
|
||||
"AUDIO_TRACKS": "Audio tracks",
|
||||
"SUBTITLES": "Subtitles",
|
||||
"SUBTITLES_OFF": "Off",
|
||||
"TRACK_DEFAULT": "Default",
|
||||
"AUDIO_TRACK_FALLBACK": "Audio {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Subtitle {{index}}",
|
||||
"PLAYBACK_SPEED": "Playback speed",
|
||||
"SPEED_TOOLTIP": "Speed: {{speed}}",
|
||||
"ASPECT_RATIO": "Aspect ratio",
|
||||
"ASPECT_TOOLTIP": "Aspect: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "Default",
|
||||
"START_RECORDING": "Start recording",
|
||||
"STOP_RECORDING": "Stop recording",
|
||||
"RECORDING": "Recording",
|
||||
"RECORDING_SAVED": "Recording saved",
|
||||
"RECORDING_FAILED": "Recording failed",
|
||||
"RECORDING_FAILED_TO_START": "Recording failed to start.",
|
||||
"RECORDING_FAILED_TO_STOP": "Recording failed to stop.",
|
||||
"SAVED_TO": "Saved to {{path}}",
|
||||
"ENTER_FULLSCREEN": "Enter fullscreen",
|
||||
"EXIT_FULLSCREEN": "Exit fullscreen"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Activar sonido",
|
||||
"VOLUME": "Volumen"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Reintentar",
|
||||
"STALLED": "Este stream está tardando más de lo esperado en iniciarse.",
|
||||
"PLAYBACK_FAILED": "Falló la reproducción de MPV integrado.",
|
||||
"CHECKING_SUPPORT": "Comprobando compatibilidad con MPV integrado...",
|
||||
"NOT_AVAILABLE": "MPV integrado no está disponible en este entorno.",
|
||||
"LOADING_STREAM": "Cargando stream…",
|
||||
"PLAY": "Reproducir",
|
||||
"PAUSE": "Pausar",
|
||||
"PREVIOUS_EPISODE": "Episodio anterior",
|
||||
"NEXT_EPISODE": "Siguiente episodio",
|
||||
"BACK_10_SECONDS": "Retroceder 10 segundos",
|
||||
"FORWARD_10_SECONDS": "Avanzar 10 segundos",
|
||||
"LIVE_STREAM": "Transmisión en vivo",
|
||||
"MUTE": "Silenciar",
|
||||
"UNMUTE": "Activar sonido",
|
||||
"MUTED": "Silenciado",
|
||||
"VOLUME": "Volumen",
|
||||
"VOLUME_LABEL": "Volumen {{percent}}%",
|
||||
"AUDIO_TRACKS": "Pistas de audio",
|
||||
"SUBTITLES": "Subtítulos",
|
||||
"SUBTITLES_OFF": "Desactivados",
|
||||
"TRACK_DEFAULT": "Predeterminada",
|
||||
"AUDIO_TRACK_FALLBACK": "Audio {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Subtítulo {{index}}",
|
||||
"PLAYBACK_SPEED": "Velocidad de reproducción",
|
||||
"SPEED_TOOLTIP": "Velocidad: {{speed}}",
|
||||
"ASPECT_RATIO": "Relación de aspecto",
|
||||
"ASPECT_TOOLTIP": "Aspecto: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "Predeterminada",
|
||||
"START_RECORDING": "Iniciar grabación",
|
||||
"STOP_RECORDING": "Detener grabación",
|
||||
"RECORDING": "Grabando",
|
||||
"RECORDING_SAVED": "Grabación guardada",
|
||||
"RECORDING_FAILED": "Error de grabación",
|
||||
"RECORDING_FAILED_TO_START": "No se pudo iniciar la grabación.",
|
||||
"RECORDING_FAILED_TO_STOP": "No se pudo detener la grabación.",
|
||||
"SAVED_TO": "Guardada en {{path}}",
|
||||
"ENTER_FULLSCREEN": "Entrar en pantalla completa",
|
||||
"EXIT_FULLSCREEN": "Salir de pantalla completa"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Activer le son",
|
||||
"VOLUME": "Volume"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"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",
|
||||
"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_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",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Attiva audio",
|
||||
"VOLUME": "Volume"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Riprova",
|
||||
"STALLED": "L'avvio di questo stream sta richiedendo più tempo del previsto.",
|
||||
"PLAYBACK_FAILED": "Riproduzione con MPV integrato non riuscita.",
|
||||
"CHECKING_SUPPORT": "Verifica del supporto per MPV integrato...",
|
||||
"NOT_AVAILABLE": "MPV integrato non è disponibile in questo ambiente.",
|
||||
"LOADING_STREAM": "Caricamento stream…",
|
||||
"PLAY": "Riproduci",
|
||||
"PAUSE": "Pausa",
|
||||
"PREVIOUS_EPISODE": "Episodio precedente",
|
||||
"NEXT_EPISODE": "Episodio successivo",
|
||||
"BACK_10_SECONDS": "Indietro di 10 secondi",
|
||||
"FORWARD_10_SECONDS": "Avanti di 10 secondi",
|
||||
"LIVE_STREAM": "Stream in diretta",
|
||||
"MUTE": "Disattiva audio",
|
||||
"UNMUTE": "Attiva audio",
|
||||
"MUTED": "Audio disattivato",
|
||||
"VOLUME": "Volume",
|
||||
"VOLUME_LABEL": "Volume {{percent}}%",
|
||||
"AUDIO_TRACKS": "Tracce audio",
|
||||
"SUBTITLES": "Sottotitoli",
|
||||
"SUBTITLES_OFF": "Disattivati",
|
||||
"TRACK_DEFAULT": "Predefinita",
|
||||
"AUDIO_TRACK_FALLBACK": "Audio {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Sottotitoli {{index}}",
|
||||
"PLAYBACK_SPEED": "Velocità di riproduzione",
|
||||
"SPEED_TOOLTIP": "Velocità: {{speed}}",
|
||||
"ASPECT_RATIO": "Proporzioni",
|
||||
"ASPECT_TOOLTIP": "Proporzioni: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "Predefinite",
|
||||
"START_RECORDING": "Avvia registrazione",
|
||||
"STOP_RECORDING": "Interrompi registrazione",
|
||||
"RECORDING": "Registrazione in corso",
|
||||
"RECORDING_SAVED": "Registrazione salvata",
|
||||
"RECORDING_FAILED": "Registrazione non riuscita",
|
||||
"RECORDING_FAILED_TO_START": "Impossibile avviare la registrazione.",
|
||||
"RECORDING_FAILED_TO_STOP": "Impossibile interrompere la registrazione.",
|
||||
"SAVED_TO": "Salvato in {{path}}",
|
||||
"ENTER_FULLSCREEN": "Attiva schermo intero",
|
||||
"EXIT_FULLSCREEN": "Esci dallo schermo intero"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "ミュート解除",
|
||||
"VOLUME": "音量"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "再試行",
|
||||
"STALLED": "このストリームの開始に予想より時間がかかっています。",
|
||||
"PLAYBACK_FAILED": "組み込みMPVでの再生に失敗しました。",
|
||||
"CHECKING_SUPPORT": "組み込みMPVのサポートを確認中...",
|
||||
"NOT_AVAILABLE": "この環境では組み込みMPVは利用できません。",
|
||||
"LOADING_STREAM": "ストリームを読み込み中…",
|
||||
"PLAY": "再生",
|
||||
"PAUSE": "一時停止",
|
||||
"PREVIOUS_EPISODE": "前のエピソード",
|
||||
"NEXT_EPISODE": "次のエピソード",
|
||||
"BACK_10_SECONDS": "10秒戻る",
|
||||
"FORWARD_10_SECONDS": "10秒進む",
|
||||
"LIVE_STREAM": "ライブストリーム",
|
||||
"MUTE": "ミュート",
|
||||
"UNMUTE": "ミュート解除",
|
||||
"MUTED": "ミュート中",
|
||||
"VOLUME": "音量",
|
||||
"VOLUME_LABEL": "音量 {{percent}}%",
|
||||
"AUDIO_TRACKS": "音声トラック",
|
||||
"SUBTITLES": "字幕",
|
||||
"SUBTITLES_OFF": "オフ",
|
||||
"TRACK_DEFAULT": "デフォルト",
|
||||
"AUDIO_TRACK_FALLBACK": "音声 {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "字幕 {{index}}",
|
||||
"PLAYBACK_SPEED": "再生速度",
|
||||
"SPEED_TOOLTIP": "速度:{{speed}}",
|
||||
"ASPECT_RATIO": "アスペクト比",
|
||||
"ASPECT_TOOLTIP": "アスペクト比:{{aspect}}",
|
||||
"ASPECT_DEFAULT": "デフォルト",
|
||||
"START_RECORDING": "録画を開始",
|
||||
"STOP_RECORDING": "録画を停止",
|
||||
"RECORDING": "録画中",
|
||||
"RECORDING_SAVED": "録画を保存しました",
|
||||
"RECORDING_FAILED": "録画に失敗しました",
|
||||
"RECORDING_FAILED_TO_START": "録画を開始できませんでした。",
|
||||
"RECORDING_FAILED_TO_STOP": "録画を停止できませんでした。",
|
||||
"SAVED_TO": "{{path}}に保存しました",
|
||||
"ENTER_FULLSCREEN": "全画面表示",
|
||||
"EXIT_FULLSCREEN": "全画面表示を終了"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "음소거 해제",
|
||||
"VOLUME": "볼륨"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "다시 시도",
|
||||
"STALLED": "이 스트림의 시작이 예상보다 오래 걸리고 있습니다.",
|
||||
"PLAYBACK_FAILED": "내장 MPV 재생에 실패했습니다.",
|
||||
"CHECKING_SUPPORT": "내장 MPV 지원을 확인하는 중...",
|
||||
"NOT_AVAILABLE": "이 환경에서는 내장 MPV를 사용할 수 없습니다.",
|
||||
"LOADING_STREAM": "스트림을 불러오는 중…",
|
||||
"PLAY": "재생",
|
||||
"PAUSE": "일시정지",
|
||||
"PREVIOUS_EPISODE": "이전 에피소드",
|
||||
"NEXT_EPISODE": "다음 에피소드",
|
||||
"BACK_10_SECONDS": "10초 뒤로",
|
||||
"FORWARD_10_SECONDS": "10초 앞으로",
|
||||
"LIVE_STREAM": "라이브 스트림",
|
||||
"MUTE": "음소거",
|
||||
"UNMUTE": "음소거 해제",
|
||||
"MUTED": "음소거됨",
|
||||
"VOLUME": "볼륨",
|
||||
"VOLUME_LABEL": "볼륨 {{percent}}%",
|
||||
"AUDIO_TRACKS": "오디오 트랙",
|
||||
"SUBTITLES": "자막",
|
||||
"SUBTITLES_OFF": "끄기",
|
||||
"TRACK_DEFAULT": "기본",
|
||||
"AUDIO_TRACK_FALLBACK": "오디오 {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "자막 {{index}}",
|
||||
"PLAYBACK_SPEED": "재생 속도",
|
||||
"SPEED_TOOLTIP": "속도: {{speed}}",
|
||||
"ASPECT_RATIO": "화면 비율",
|
||||
"ASPECT_TOOLTIP": "비율: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "기본",
|
||||
"START_RECORDING": "녹화 시작",
|
||||
"STOP_RECORDING": "녹화 중지",
|
||||
"RECORDING": "녹화 중",
|
||||
"RECORDING_SAVED": "녹화가 저장되었습니다",
|
||||
"RECORDING_FAILED": "녹화 실패",
|
||||
"RECORDING_FAILED_TO_START": "녹화를 시작하지 못했습니다.",
|
||||
"RECORDING_FAILED_TO_STOP": "녹화를 중지하지 못했습니다.",
|
||||
"SAVED_TO": "{{path}}에 저장되었습니다",
|
||||
"ENTER_FULLSCREEN": "전체 화면",
|
||||
"EXIT_FULLSCREEN": "전체 화면 종료"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Dempen opheffen",
|
||||
"VOLUME": "Volume"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Opnieuw proberen",
|
||||
"STALLED": "Deze stream doet er langer over dan verwacht om te starten.",
|
||||
"PLAYBACK_FAILED": "Afspelen via Embedded MPV is mislukt.",
|
||||
"CHECKING_SUPPORT": "Ondersteuning voor Embedded MPV controleren...",
|
||||
"NOT_AVAILABLE": "Embedded MPV is niet beschikbaar in deze omgeving.",
|
||||
"LOADING_STREAM": "Stream laden…",
|
||||
"PLAY": "Afspelen",
|
||||
"PAUSE": "Pauzeren",
|
||||
"PREVIOUS_EPISODE": "Vorige aflevering",
|
||||
"NEXT_EPISODE": "Volgende aflevering",
|
||||
"BACK_10_SECONDS": "10 seconden terug",
|
||||
"FORWARD_10_SECONDS": "10 seconden vooruit",
|
||||
"LIVE_STREAM": "Live stream",
|
||||
"MUTE": "Dempen",
|
||||
"UNMUTE": "Dempen opheffen",
|
||||
"MUTED": "Gedempt",
|
||||
"VOLUME": "Volume",
|
||||
"VOLUME_LABEL": "Volume {{percent}}%",
|
||||
"AUDIO_TRACKS": "Audiosporen",
|
||||
"SUBTITLES": "Ondertiteling",
|
||||
"SUBTITLES_OFF": "Uit",
|
||||
"TRACK_DEFAULT": "Standaard",
|
||||
"AUDIO_TRACK_FALLBACK": "Audio {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Ondertitel {{index}}",
|
||||
"PLAYBACK_SPEED": "Afspeelsnelheid",
|
||||
"SPEED_TOOLTIP": "Snelheid: {{speed}}",
|
||||
"ASPECT_RATIO": "Beeldverhouding",
|
||||
"ASPECT_TOOLTIP": "Beeldverhouding: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "Standaard",
|
||||
"START_RECORDING": "Opname starten",
|
||||
"STOP_RECORDING": "Opname stoppen",
|
||||
"RECORDING": "Opname",
|
||||
"RECORDING_SAVED": "Opname opgeslagen",
|
||||
"RECORDING_FAILED": "Opname mislukt",
|
||||
"RECORDING_FAILED_TO_START": "Opname kon niet worden gestart.",
|
||||
"RECORDING_FAILED_TO_STOP": "Opname kon niet worden gestopt.",
|
||||
"SAVED_TO": "Opgeslagen in {{path}}",
|
||||
"ENTER_FULLSCREEN": "Volledig scherm openen",
|
||||
"EXIT_FULLSCREEN": "Volledig scherm sluiten"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Wyłącz wyciszenie",
|
||||
"VOLUME": "Głośność"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Spróbuj ponownie",
|
||||
"STALLED": "Uruchamianie tego strumienia trwa dłużej niż zwykle.",
|
||||
"PLAYBACK_FAILED": "Odtwarzanie we wbudowanym MPV nie powiodło się.",
|
||||
"CHECKING_SUPPORT": "Sprawdzanie obsługi wbudowanego MPV...",
|
||||
"NOT_AVAILABLE": "Wbudowane MPV nie jest dostępne w tym środowisku.",
|
||||
"LOADING_STREAM": "Ładowanie strumienia…",
|
||||
"PLAY": "Odtwórz",
|
||||
"PAUSE": "Wstrzymaj",
|
||||
"PREVIOUS_EPISODE": "Poprzedni odcinek",
|
||||
"NEXT_EPISODE": "Następny odcinek",
|
||||
"BACK_10_SECONDS": "Cofnij o 10 sekund",
|
||||
"FORWARD_10_SECONDS": "Do przodu o 10 sekund",
|
||||
"LIVE_STREAM": "Transmisja na żywo",
|
||||
"MUTE": "Wycisz",
|
||||
"UNMUTE": "Wyłącz wyciszenie",
|
||||
"MUTED": "Wyciszono",
|
||||
"VOLUME": "Głośność",
|
||||
"VOLUME_LABEL": "Głośność {{percent}}%",
|
||||
"AUDIO_TRACKS": "Ścieżki audio",
|
||||
"SUBTITLES": "Napisy",
|
||||
"SUBTITLES_OFF": "Wyłączone",
|
||||
"TRACK_DEFAULT": "Domyślna",
|
||||
"AUDIO_TRACK_FALLBACK": "Audio {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Napisy {{index}}",
|
||||
"PLAYBACK_SPEED": "Prędkość odtwarzania",
|
||||
"SPEED_TOOLTIP": "Prędkość: {{speed}}",
|
||||
"ASPECT_RATIO": "Proporcje obrazu",
|
||||
"ASPECT_TOOLTIP": "Proporcje: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "Domyślne",
|
||||
"START_RECORDING": "Rozpocznij nagrywanie",
|
||||
"STOP_RECORDING": "Zatrzymaj nagrywanie",
|
||||
"RECORDING": "Nagrywanie",
|
||||
"RECORDING_SAVED": "Nagranie zapisane",
|
||||
"RECORDING_FAILED": "Nagrywanie nie powiodło się",
|
||||
"RECORDING_FAILED_TO_START": "Nie udało się rozpocząć nagrywania.",
|
||||
"RECORDING_FAILED_TO_STOP": "Nie udało się zatrzymać nagrywania.",
|
||||
"SAVED_TO": "Zapisano w {{path}}",
|
||||
"ENTER_FULLSCREEN": "Włącz pełny ekran",
|
||||
"EXIT_FULLSCREEN": "Wyłącz pełny ekran"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Ativar som",
|
||||
"VOLUME": "Volume"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Tentar novamente",
|
||||
"STALLED": "Este stream está demorando mais do que o esperado para iniciar.",
|
||||
"PLAYBACK_FAILED": "Falha na reprodução do MPV integrado.",
|
||||
"CHECKING_SUPPORT": "Verificando suporte ao MPV integrado...",
|
||||
"NOT_AVAILABLE": "O MPV integrado não está disponível neste ambiente.",
|
||||
"LOADING_STREAM": "Carregando stream…",
|
||||
"PLAY": "Reproduzir",
|
||||
"PAUSE": "Pausar",
|
||||
"PREVIOUS_EPISODE": "Episódio anterior",
|
||||
"NEXT_EPISODE": "Próximo episódio",
|
||||
"BACK_10_SECONDS": "Voltar 10 segundos",
|
||||
"FORWARD_10_SECONDS": "Avançar 10 segundos",
|
||||
"LIVE_STREAM": "Transmissão ao vivo",
|
||||
"MUTE": "Silenciar",
|
||||
"UNMUTE": "Ativar som",
|
||||
"MUTED": "Silenciado",
|
||||
"VOLUME": "Volume",
|
||||
"VOLUME_LABEL": "Volume {{percent}}%",
|
||||
"AUDIO_TRACKS": "Faixas de áudio",
|
||||
"SUBTITLES": "Legendas",
|
||||
"SUBTITLES_OFF": "Desativadas",
|
||||
"TRACK_DEFAULT": "Padrão",
|
||||
"AUDIO_TRACK_FALLBACK": "Áudio {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Legenda {{index}}",
|
||||
"PLAYBACK_SPEED": "Velocidade de reprodução",
|
||||
"SPEED_TOOLTIP": "Velocidade: {{speed}}",
|
||||
"ASPECT_RATIO": "Proporção da imagem",
|
||||
"ASPECT_TOOLTIP": "Proporção: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "Padrão",
|
||||
"START_RECORDING": "Iniciar gravação",
|
||||
"STOP_RECORDING": "Parar gravação",
|
||||
"RECORDING": "Gravando",
|
||||
"RECORDING_SAVED": "Gravação salva",
|
||||
"RECORDING_FAILED": "Falha na gravação",
|
||||
"RECORDING_FAILED_TO_START": "Falha ao iniciar a gravação.",
|
||||
"RECORDING_FAILED_TO_STOP": "Falha ao parar a gravação.",
|
||||
"SAVED_TO": "Salvo em {{path}}",
|
||||
"ENTER_FULLSCREEN": "Entrar em tela cheia",
|
||||
"EXIT_FULLSCREEN": "Sair da tela cheia"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Включить звук",
|
||||
"VOLUME": "Громкость"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Повторить",
|
||||
"STALLED": "Запуск этого потока занимает больше времени, чем ожидалось.",
|
||||
"PLAYBACK_FAILED": "Не удалось воспроизвести через встроенный MPV.",
|
||||
"CHECKING_SUPPORT": "Проверка поддержки встроенного MPV...",
|
||||
"NOT_AVAILABLE": "Встроенный MPV недоступен в этой среде.",
|
||||
"LOADING_STREAM": "Загрузка потока…",
|
||||
"PLAY": "Воспроизвести",
|
||||
"PAUSE": "Пауза",
|
||||
"PREVIOUS_EPISODE": "Предыдущий эпизод",
|
||||
"NEXT_EPISODE": "Следующий эпизод",
|
||||
"BACK_10_SECONDS": "Назад на 10 секунд",
|
||||
"FORWARD_10_SECONDS": "Вперёд на 10 секунд",
|
||||
"LIVE_STREAM": "Прямой эфир",
|
||||
"MUTE": "Отключить звук",
|
||||
"UNMUTE": "Включить звук",
|
||||
"MUTED": "Звук отключён",
|
||||
"VOLUME": "Громкость",
|
||||
"VOLUME_LABEL": "Громкость {{percent}}%",
|
||||
"AUDIO_TRACKS": "Аудиодорожки",
|
||||
"SUBTITLES": "Субтитры",
|
||||
"SUBTITLES_OFF": "Выкл.",
|
||||
"TRACK_DEFAULT": "По умолчанию",
|
||||
"AUDIO_TRACK_FALLBACK": "Аудио {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Субтитры {{index}}",
|
||||
"PLAYBACK_SPEED": "Скорость воспроизведения",
|
||||
"SPEED_TOOLTIP": "Скорость: {{speed}}",
|
||||
"ASPECT_RATIO": "Соотношение сторон",
|
||||
"ASPECT_TOOLTIP": "Соотношение: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "По умолчанию",
|
||||
"START_RECORDING": "Начать запись",
|
||||
"STOP_RECORDING": "Остановить запись",
|
||||
"RECORDING": "Идёт запись",
|
||||
"RECORDING_SAVED": "Запись сохранена",
|
||||
"RECORDING_FAILED": "Ошибка записи",
|
||||
"RECORDING_FAILED_TO_START": "Не удалось начать запись.",
|
||||
"RECORDING_FAILED_TO_STOP": "Не удалось остановить запись.",
|
||||
"SAVED_TO": "Сохранено в {{path}}",
|
||||
"ENTER_FULLSCREEN": "Во весь экран",
|
||||
"EXIT_FULLSCREEN": "Выйти из полноэкранного режима"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "Контейнер потока, вероятно, не поддерживается встроенным браузерным плеером",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "Sesi aç",
|
||||
"VOLUME": "Ses seviyesi"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "Tekrar dene",
|
||||
"STALLED": "Bu yayının başlaması beklenenden uzun sürüyor.",
|
||||
"PLAYBACK_FAILED": "Gömülü MPV oynatması başarısız oldu.",
|
||||
"CHECKING_SUPPORT": "Gömülü MPV desteği denetleniyor...",
|
||||
"NOT_AVAILABLE": "Gömülü MPV bu ortamda kullanılamıyor.",
|
||||
"LOADING_STREAM": "Yayın yükleniyor…",
|
||||
"PLAY": "Oynat",
|
||||
"PAUSE": "Duraklat",
|
||||
"PREVIOUS_EPISODE": "Önceki bölüm",
|
||||
"NEXT_EPISODE": "Sonraki bölüm",
|
||||
"BACK_10_SECONDS": "10 saniye geri",
|
||||
"FORWARD_10_SECONDS": "10 saniye ileri",
|
||||
"LIVE_STREAM": "Canlı yayın",
|
||||
"MUTE": "Sesi kapat",
|
||||
"UNMUTE": "Sesi aç",
|
||||
"MUTED": "Ses kapalı",
|
||||
"VOLUME": "Ses seviyesi",
|
||||
"VOLUME_LABEL": "Ses seviyesi %{{percent}}",
|
||||
"AUDIO_TRACKS": "Ses parçaları",
|
||||
"SUBTITLES": "Altyazılar",
|
||||
"SUBTITLES_OFF": "Kapalı",
|
||||
"TRACK_DEFAULT": "Varsayılan",
|
||||
"AUDIO_TRACK_FALLBACK": "Ses {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "Altyazı {{index}}",
|
||||
"PLAYBACK_SPEED": "Oynatma hızı",
|
||||
"SPEED_TOOLTIP": "Hız: {{speed}}",
|
||||
"ASPECT_RATIO": "En boy oranı",
|
||||
"ASPECT_TOOLTIP": "En boy oranı: {{aspect}}",
|
||||
"ASPECT_DEFAULT": "Varsayılan",
|
||||
"START_RECORDING": "Kaydı başlat",
|
||||
"STOP_RECORDING": "Kaydı durdur",
|
||||
"RECORDING": "Kaydediliyor",
|
||||
"RECORDING_SAVED": "Kayıt kaydedildi",
|
||||
"RECORDING_FAILED": "Kayıt başarısız oldu",
|
||||
"RECORDING_FAILED_TO_START": "Kayıt başlatılamadı.",
|
||||
"RECORDING_FAILED_TO_STOP": "Kayıt durdurulamadı.",
|
||||
"SAVED_TO": "{{path}} konumuna kaydedildi",
|
||||
"ENTER_FULLSCREEN": "Tam ekrana geç",
|
||||
"EXIT_FULLSCREEN": "Tam ekrandan çık"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "取消静音",
|
||||
"VOLUME": "音量"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "重试",
|
||||
"STALLED": "该流的启动时间超出预期。",
|
||||
"PLAYBACK_FAILED": "嵌入式 MPV 播放失败。",
|
||||
"CHECKING_SUPPORT": "正在检查嵌入式 MPV 支持…",
|
||||
"NOT_AVAILABLE": "嵌入式 MPV 在当前环境中不可用。",
|
||||
"LOADING_STREAM": "正在加载流…",
|
||||
"PLAY": "播放",
|
||||
"PAUSE": "暂停",
|
||||
"PREVIOUS_EPISODE": "上一集",
|
||||
"NEXT_EPISODE": "下一集",
|
||||
"BACK_10_SECONDS": "快退 10 秒",
|
||||
"FORWARD_10_SECONDS": "快进 10 秒",
|
||||
"LIVE_STREAM": "直播",
|
||||
"MUTE": "静音",
|
||||
"UNMUTE": "取消静音",
|
||||
"MUTED": "已静音",
|
||||
"VOLUME": "音量",
|
||||
"VOLUME_LABEL": "音量 {{percent}}%",
|
||||
"AUDIO_TRACKS": "音轨",
|
||||
"SUBTITLES": "字幕",
|
||||
"SUBTITLES_OFF": "关闭",
|
||||
"TRACK_DEFAULT": "默认",
|
||||
"AUDIO_TRACK_FALLBACK": "音轨 {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "字幕 {{index}}",
|
||||
"PLAYBACK_SPEED": "播放速度",
|
||||
"SPEED_TOOLTIP": "速度:{{speed}}",
|
||||
"ASPECT_RATIO": "宽高比",
|
||||
"ASPECT_TOOLTIP": "宽高比:{{aspect}}",
|
||||
"ASPECT_DEFAULT": "默认",
|
||||
"START_RECORDING": "开始录制",
|
||||
"STOP_RECORDING": "停止录制",
|
||||
"RECORDING": "正在录制",
|
||||
"RECORDING_SAVED": "录制已保存",
|
||||
"RECORDING_FAILED": "录制失败",
|
||||
"RECORDING_FAILED_TO_START": "录制启动失败。",
|
||||
"RECORDING_FAILED_TO_STOP": "录制停止失败。",
|
||||
"SAVED_TO": "已保存至 {{path}}",
|
||||
"ENTER_FULLSCREEN": "进入全屏",
|
||||
"EXIT_FULLSCREEN": "退出全屏"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
@@ -428,6 +428,49 @@
|
||||
"UNMUTE": "取消靜音",
|
||||
"VOLUME": "音量"
|
||||
},
|
||||
"EMBEDDED_MPV": {
|
||||
"PLAYER": {
|
||||
"RETRY": "重試",
|
||||
"STALLED": "此串流的啟動時間比預期長。",
|
||||
"PLAYBACK_FAILED": "內嵌 MPV 播放失敗。",
|
||||
"CHECKING_SUPPORT": "正在檢查內嵌 MPV 支援…",
|
||||
"NOT_AVAILABLE": "內嵌 MPV 在此環境中無法使用。",
|
||||
"LOADING_STREAM": "正在載入串流…",
|
||||
"PLAY": "播放",
|
||||
"PAUSE": "暫停",
|
||||
"PREVIOUS_EPISODE": "上一集",
|
||||
"NEXT_EPISODE": "下一集",
|
||||
"BACK_10_SECONDS": "倒轉 10 秒",
|
||||
"FORWARD_10_SECONDS": "快轉 10 秒",
|
||||
"LIVE_STREAM": "現場直播",
|
||||
"MUTE": "靜音",
|
||||
"UNMUTE": "取消靜音",
|
||||
"MUTED": "已靜音",
|
||||
"VOLUME": "音量",
|
||||
"VOLUME_LABEL": "音量 {{percent}}%",
|
||||
"AUDIO_TRACKS": "音軌",
|
||||
"SUBTITLES": "字幕",
|
||||
"SUBTITLES_OFF": "關閉",
|
||||
"TRACK_DEFAULT": "預設",
|
||||
"AUDIO_TRACK_FALLBACK": "音軌 {{index}}",
|
||||
"SUBTITLE_TRACK_FALLBACK": "字幕 {{index}}",
|
||||
"PLAYBACK_SPEED": "播放速度",
|
||||
"SPEED_TOOLTIP": "速度:{{speed}}",
|
||||
"ASPECT_RATIO": "長寬比",
|
||||
"ASPECT_TOOLTIP": "長寬比:{{aspect}}",
|
||||
"ASPECT_DEFAULT": "預設",
|
||||
"START_RECORDING": "開始錄製",
|
||||
"STOP_RECORDING": "停止錄製",
|
||||
"RECORDING": "錄製中",
|
||||
"RECORDING_SAVED": "錄製已儲存",
|
||||
"RECORDING_FAILED": "錄製失敗",
|
||||
"RECORDING_FAILED_TO_START": "無法開始錄製。",
|
||||
"RECORDING_FAILED_TO_STOP": "無法停止錄製。",
|
||||
"SAVED_TO": "已儲存至 {{path}}",
|
||||
"ENTER_FULLSCREEN": "進入全螢幕",
|
||||
"EXIT_FULLSCREEN": "離開全螢幕"
|
||||
}
|
||||
},
|
||||
"PLAYBACK_DIAGNOSTICS": {
|
||||
"UNSUPPORTED_CONTAINER": {
|
||||
"TITLE": "This stream container is likely unsupported by the browser player",
|
||||
|
||||
Reference in new issue
Block a user