Merge remote-tracking branch 'origin/master' into perf/zoneless-flip

# Conflicts:
#	tools/performance/journey-baselines.json
This commit is contained in:
4gray committed 2026-10-14 19:58:21 +02:00
commit 8e807242db
191 files changed
+15429 -6865

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
import { ANIMATION_MODULE_TYPE, RendererFactory2 } from '@angular/core';
type ProviderEntry = { provide?: unknown };
function flattenProviders(providers: readonly unknown[]): ProviderEntry[] {
return providers.flatMap((provider) => {
if (Array.isArray(provider)) {
return flattenProviders(provider);
}
// makeEnvironmentProviders() wraps its list in ɵproviders.
const wrapped = (provider as { ɵproviders?: unknown[] } | null)
?.ɵproviders;
return wrapped
? flattenProviders(wrapped)
: [provider as ProviderEntry];
});
}
describe('appConfig', () => {
// The @angular/animations renderer queues every DOM removal until the
// end of the next change detection, while the router inserts a routed
// page at once: leaving a portal for the dashboard laid out both pages
// until the coalesced tick and scored the swap as a layout shift.
it('keeps the default DOM renderer, so routed pages swap in one task', async () => {
const { appConfig } = await import('./app.config');
const tokens = flattenProviders(appConfig.providers).map(
(provider) => provider?.provide
);
expect(tokens).not.toContain(RendererFactory2);
expect(tokens).not.toContain(ANIMATION_MODULE_TYPE);
});
});
+3 -1
View File
@@ -112,7 +112,9 @@ export const appConfig: ApplicationConfig = {
// No provideAnimations(): nothing declares an Angular animation
// trigger, and Material 22 animates with CSS, reading
// prefers-reduced-motion itself. The provider only put the 66 KB
// animation engine on the initial path.
// animation engine on the initial path, and its renderer deferred
// every DOM removal, so a routed page stayed beside the next one
// until the following tick (workspace-shell.md, "Route swaps").
// CDK overlays (menus, tooltips, dialogs) live in a container under
// <body>, which the browser hides behind an element in DOM fullscreen.
// This container follows the fullscreen element instead, so the
@@ -164,7 +164,8 @@ export class ElectronService extends DataService {
}
if (type === PLAYLIST_UPDATE) {
this.updateM3uPlaylistFromFile(
// Settles when the refresh does, so callers keep the source busy.
await this.updateM3uPlaylistFromFile(
payload as {
id: string;
filePath?: string;
@@ -201,6 +201,55 @@ describe('PwaService', () => {
}
});
it('settles a playlist refresh only once the backend has answered', async () => {
let settled = false;
const pending = Promise.resolve(
service.sendIpcEvent(PLAYLIST_UPDATE, {
id: 'playlist-1',
url: 'https://provider.example/list.m3u',
})
).then(() => {
settled = true;
});
http.expectOne((req) => req.url.endsWith('/provider-targets')).flush({
targetId: 'target-1',
});
await new Promise((resolve) => setTimeout(resolve));
// The caller keeps the source busy while the parse is in flight.
expect(settled).toBe(false);
http.expectOne((req) => req.url.endsWith('/parse')).flush({
_id: 'playlist-1',
});
await pending;
expect(settled).toBe(true);
expect(TestBed.inject(Store).dispatch).toHaveBeenCalled();
});
it('settles a failed playlist refresh after reporting it', async () => {
const pending = service.sendIpcEvent(PLAYLIST_UPDATE, {
id: 'playlist-1',
url: 'https://provider.example/list.m3u',
});
http.expectOne((req) => req.url.endsWith('/provider-targets')).flush({
targetId: 'target-1',
});
await new Promise((resolve) => setTimeout(resolve));
http.expectOne((req) => req.url.endsWith('/parse')).flush(
{ message: 'failed', status: 500 },
{ status: 500, statusText: 'Internal Server Error' }
);
await expect(pending).resolves.toBeUndefined();
expect(TestBed.inject(MatSnackBar).open).toHaveBeenCalledWith(
expect.any(String),
'CLOSE',
{ duration: 5000 }
);
});
it('appends the proxy network code to the playlist-refresh failure toast', async () => {
const unhandled: unknown[] = [];
const previousHandler = rxjsConfig.onUnhandledError;
+36 -26
View File
@@ -133,8 +133,10 @@ export class PwaService extends DataService {
}
if (type === PLAYLIST_UPDATE) {
this.refreshPlaylist(payload as Partial<Playlist & { id: string }>);
return undefined as T;
// Settles when the refresh does, so callers keep the source busy.
return this.refreshPlaylist(
payload as Partial<Playlist & { id: string }>
) as T;
}
if (type === XTREAM_REQUEST) {
@@ -215,16 +217,39 @@ export class PwaService extends DataService {
}
}
refreshPlaylist(payload?: Partial<Playlist & { id: string }>) {
/** Resolves once the backend has answered, whether it succeeded or not. */
refreshPlaylist(
payload?: Partial<Playlist & { id: string }>
): Promise<void> {
if (!payload?.url || !payload?.id) {
return;
return Promise.resolve();
}
const playlistId = payload.id;
const { url, userAgent } = payload;
this.getPlaylistFromUrl(payload.url, payload.userAgent)
.pipe(
catchError((error) => {
return new Promise<void>((resolve) => {
this.getPlaylistFromUrl(url, userAgent).subscribe({
next: (playlist: Playlist) => {
this.store.dispatch(
PlaylistActions.updatePlaylist({
playlist,
playlistId,
refreshEpg: true,
})
);
this.snackBar.open(
this.translateService.instant(
'HOME.PLAYLISTS.PLAYLIST_UPDATE_SUCCESS'
),
undefined,
{ duration: 2000 }
);
},
error: (error: unknown) => {
// Redacted: the error can carry the playlist URL.
this.logger.error('Playlist refresh error:', error);
this.snackBar.open(
this.appendProviderErrorCode(
this.getPlaylistRefreshErrorMessage(error),
@@ -235,26 +260,11 @@ export class PwaService extends DataService {
duration: 5000,
}
);
return throwError(() => error);
})
)
.subscribe((playlist: Playlist) => {
this.store.dispatch(
PlaylistActions.updatePlaylist({
playlist,
playlistId,
refreshEpg: true,
})
);
this.snackBar.open(
this.translateService.instant(
'HOME.PLAYLISTS.PLAYLIST_UPDATE_SUCCESS'
),
undefined,
{ duration: 2000 }
);
resolve();
},
complete: () => resolve(),
});
});
}
private getPlaylistRefreshErrorMessage(error: unknown): string {
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "الاسم (ي-أ)",
"NEWEST": "تاريخ الإضافة (الأحدث أولاً)",
"OLDEST": "تاريخ الإضافة (الأقدم أولاً)",
"CUSTOM_ORDER": "ترتيب مخصص (سحب وإفلات)"
"CUSTOM_ORDER": "ترتيب مخصص (سحب وإفلات)",
"UPDATED": "آخر تحديث",
"CHANNELS": "الأكثر قنوات",
"FAILING_FIRST": "غير المستجيبة أولاً"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (محلي، رابط، نص)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "قوائم Stalker",
"ALL_PLAYLISTS": "جميع قوائم التشغيل",
"PLAYLIST_COUNT_ONE": "قائمة تشغيل واحدة",
"PLAYLIST_COUNT_OTHER": "{{count}} قائمة تشغيل"
"PLAYLIST_COUNT_OTHER": "{{count}} قائمة تشغيل",
"ROW": {
"TYPE_M3U_FILE": "M3U · ملف",
"ADDED": "أُضيف {{date}}",
"UPDATED": "حُدِّث {{date}}",
"UNREACHABLE": "لا يستجيب",
"UNREACHABLE_FOR": "لا يستجيب · {{duration}}",
"EXPIRED": "منتهي",
"EDIT": "تعديل…",
"COPY_URL": "نسخ الرابط",
"OPEN": "فتح",
"CHANNELS_ONE": "قناة واحدة"
},
"STATUS": "الحالة",
"STATUS_ANY": "أي حالة",
"STATUS_OK": "تستجيب",
"STATUS_BAD": "لا تستجيب",
"NO_MATCHES": "لا توجد قوائم تطابق عوامل التصفية هذه",
"RESET_FILTERS": "إعادة تعيين عوامل التصفية",
"REMOVED": "تمت إزالة «{{name}}»",
"REMOVED_SWITCHED": "تمت إزالة «{{name}}»، والانتقال إلى «{{next}}»",
"REMOVE_FAILED": "تعذّرت إزالة «{{name}}»",
"ADD_SOURCE": "إضافة مصدر"
},
"CONTEXT": {
"CATEGORIES": "الفئات",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "نقل تحديد لوحة الأوامر",
"COMMAND_PALETTE_RUN": "تشغيل عنصر لوحة الأوامر المحدد",
"CLOSE_DIALOGS": "إغلاق مربع الحوار أو إخفاء التراكب",
"DOWNLOADS_OPEN_ITEM": "فتح عنصر التنزيل المحدد في المكتبة"
"DOWNLOADS_OPEN_ITEM": "فتح عنصر التنزيل المحدد في المكتبة",
"OPEN_PLAYLIST_SWITCHER": "تبديل قائمة التشغيل"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "أضف قائمة تشغيل وسيظهر سجل المشاهدة هنا.",
"NO_ITEMS_TITLE": "لا توجد مشاهدات بعد",
"NO_ITEMS_BODY": "ابدأ بمشاهدة أي محتوى من مكتبتك وسيظهر هنا."
},
"SWITCHER": {
"SEARCH": "ابحث عن قائمة تشغيل…",
"RECENT": "الأخيرة",
"NO_MATCHES": "لم يُعثر على شيء",
"ALL_SOURCES": "كل المصادر",
"HINT_SELECT": "تحديد",
"HINT_OPEN": "فتح",
"HINT_CLOSE": "إغلاق"
}
},
"LOADING": "جارٍ التحميل",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "الاسم (ي-أ)",
"NEWEST": "تاريخ الإضافة (الأحدث أولاً)",
"OLDEST": "تاريخ الإضافة (الأقدم أولاً)",
"CUSTOM_ORDER": "ترتيب مخصص (جرّ وحط)"
"CUSTOM_ORDER": "ترتيب مخصص (جرّ وحط)",
"UPDATED": "آخر تحديث",
"CHANNELS": "اللي فيها كتر القنوات",
"FAILING_FIRST": "اللي ما كيجاوبوش اللولين"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (محلي، رابط، نص)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "قوائم تشغيل Stalker",
"ALL_PLAYLISTS": "جميع قوائم التشغيل",
"PLAYLIST_COUNT_ONE": "قائمة تشغيل وحدة",
"PLAYLIST_COUNT_OTHER": "{{count}} ديال قوائم التشغيل"
"PLAYLIST_COUNT_OTHER": "{{count}} ديال قوائم التشغيل",
"ROW": {
"TYPE_M3U_FILE": "M3U · فيشي",
"ADDED": "تزاد {{date}}",
"UPDATED": "تحدّث {{date}}",
"UNREACHABLE": "ما كيجاوبش",
"UNREACHABLE_FOR": "ما كيجاوبش · {{duration}}",
"EXPIRED": "سالات",
"EDIT": "بدّل…",
"COPY_URL": "نسخ الرابط",
"OPEN": "حلّ",
"CHANNELS_ONE": "قناة وحدة"
},
"STATUS": "الحالة",
"STATUS_ANY": "أي حالة",
"STATUS_OK": "كيجاوبو",
"STATUS_BAD": "ما كيجاوبوش",
"NO_MATCHES": "حتى ليستة ما كتوافق هاد الفلاتر",
"RESET_FILTERS": "رجّع الفلاتر",
"REMOVED": "تحيّدات «{{name}}»",
"REMOVED_SWITCHED": "تحيّدات «{{name}}»، دوّزنا لـ «{{next}}»",
"REMOVE_FAILED": "ما قدرناش نحيّدو «{{name}}»",
"ADD_SOURCE": "زيد مصدر"
},
"CONTEXT": {
"CATEGORIES": "الفئات",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "حرك الاختيار فلوحة الأوامر",
"COMMAND_PALETTE_RUN": "شغل العنصر المختار فلوحة الأوامر",
"CLOSE_DIALOGS": "سد النافذة ولا خبي الطبقة",
"DOWNLOADS_OPEN_ITEM": "حل عنصر التحميل المحدد فالمكتبة"
"DOWNLOADS_OPEN_ITEM": "حل عنصر التحميل المحدد فالمكتبة",
"OPEN_PLAYLIST_SWITCHER": "بدّل الليستة"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "زيد قائمة تشغيل وسجل التفرج ديالك غادي يبان هنا.",
"NO_ITEMS_TITLE": "ما تشاف حتى شي حاجة دابا",
"NO_ITEMS_BODY": "بدا تفرج فشي حاجة من المكتبة ديالك وغادي تبان هنا."
},
"SWITCHER": {
"SEARCH": "قلّب على ليستة…",
"RECENT": "الجداد",
"NO_MATCHES": "ما لقينا والو",
"ALL_SOURCES": "كاع المصادر",
"HINT_SELECT": "ختار",
"HINT_OPEN": "حلّ",
"HINT_CLOSE": "سدّ"
}
},
"LOADING": "كيتشارجا",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Назва (Я-А)",
"NEWEST": "Дата дадання (спачатку новыя)",
"OLDEST": "Дата дадання (спачатку старыя)",
"CUSTOM_ORDER": "Уласны парадак (перацягванне)"
"CUSTOM_ORDER": "Уласны парадак (перацягванне)",
"UPDATED": "Апошняе абнаўленне",
"CHANNELS": "Колькасць каналаў",
"FAILING_FIRST": "Спачатку тыя, што не адказваюць"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (лакальны, URL, тэкст)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalker плэйлісты",
"ALL_PLAYLISTS": "Усе плэйлісты",
"PLAYLIST_COUNT_ONE": "1 плэйліст",
"PLAYLIST_COUNT_OTHER": "{{count}} плэйлістаў"
"PLAYLIST_COUNT_OTHER": "{{count}} плэйлістаў",
"ROW": {
"TYPE_M3U_FILE": "M3U · файл",
"ADDED": "дададзены {{date}}",
"UPDATED": "абноўлены {{date}}",
"UNREACHABLE": "Не адказвае",
"UNREACHABLE_FOR": "Не адказвае · {{duration}}",
"EXPIRED": "Скончыўся",
"EDIT": "Змяніць…",
"COPY_URL": "Скапіяваць URL",
"OPEN": "Адкрыць",
"CHANNELS_ONE": "1 канал"
},
"STATUS": "Статус",
"STATUS_ANY": "Любы",
"STATUS_OK": "Адказваюць",
"STATUS_BAD": "Не адказваюць",
"NO_MATCHES": "Няма плэйлістоў пад гэтыя фільтры",
"RESET_FILTERS": "Скінуць фільтры",
"REMOVED": "Выдалены «{{name}}»",
"REMOVED_SWITCHED": "Выдалены «{{name}}», адкрыты «{{next}}»",
"REMOVE_FAILED": "Не ўдалося выдаліць «{{name}}»",
"ADD_SOURCE": "Дадаць крыніцу"
},
"CONTEXT": {
"CATEGORIES": "Катэгорыі",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Перамясціць выбар у палітры каманд",
"COMMAND_PALETTE_RUN": "Выканаць выбраны элемент палітры каманд",
"CLOSE_DIALOGS": "Закрыць дыялог або схаваць накладку",
"DOWNLOADS_OPEN_ITEM": "Адкрыць сфакусаваную спампоўку ў бібліятэцы"
"DOWNLOADS_OPEN_ITEM": "Адкрыць сфакусаваную спампоўку ў бібліятэцы",
"OPEN_PLAYLIST_SWITCHER": "Пераключыць плэйліст"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Дадайце плэйліст, і гісторыя прагляду з’явіцца тут.",
"NO_ITEMS_TITLE": "Праглядаў пакуль няма",
"NO_ITEMS_BODY": "Пачніце глядзець што-небудзь з бібліятэкі, і гэта з’явіцца тут."
},
"SWITCHER": {
"SEARCH": "Знайсці плэйліст…",
"RECENT": "Нядаўнія",
"NO_MATCHES": "Нічога не знойдзена",
"ALL_SOURCES": "Усе крыніцы",
"HINT_SELECT": "выбар",
"HINT_OPEN": "адкрыць",
"HINT_CLOSE": "закрыць"
}
},
"LOADING": "Загрузка",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Name (Z-A)",
"NEWEST": "Hinzugefügt (Neueste zuerst)",
"OLDEST": "Hinzugefügt (Älteste zuerst)",
"CUSTOM_ORDER": "Benutzerdefinierte Reihenfolge (Drag & Drop)"
"CUSTOM_ORDER": "Benutzerdefinierte Reihenfolge (Drag & Drop)",
"UPDATED": "Zuletzt aktualisiert",
"CHANNELS": "Meiste Sender",
"FAILING_FIRST": "Nicht erreichbare zuerst"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (lokal, URL, Text)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalker-Playlists",
"ALL_PLAYLISTS": "Alle Playlists",
"PLAYLIST_COUNT_ONE": "1 Playlist",
"PLAYLIST_COUNT_OTHER": "{{count}} Playlists"
"PLAYLIST_COUNT_OTHER": "{{count}} Playlists",
"ROW": {
"TYPE_M3U_FILE": "M3U · Datei",
"ADDED": "hinzugefügt am {{date}}",
"UPDATED": "aktualisiert am {{date}}",
"UNREACHABLE": "Antwortet nicht",
"UNREACHABLE_FOR": "Antwortet nicht · {{duration}}",
"EXPIRED": "Abgelaufen",
"EDIT": "Bearbeiten…",
"COPY_URL": "URL kopieren",
"OPEN": "Öffnen",
"CHANNELS_ONE": "1 Sender"
},
"STATUS": "Status (Erreichbarkeit)",
"STATUS_ANY": "Alle",
"STATUS_OK": "Erreichbar",
"STATUS_BAD": "Nicht erreichbar",
"NO_MATCHES": "Keine Playlists passen zu diesen Filtern",
"RESET_FILTERS": "Filter zurücksetzen",
"REMOVED": "„{{name}}“ entfernt",
"REMOVED_SWITCHED": "„{{name}}“ entfernt, zu „{{next}}“ gewechselt",
"REMOVE_FAILED": "„{{name}}“ konnte nicht entfernt werden",
"ADD_SOURCE": "Quelle hinzufügen"
},
"CONTEXT": {
"CATEGORIES": "Kategorien",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Auswahl in der Befehlspalette verschieben",
"COMMAND_PALETTE_RUN": "Ausgewählten Eintrag der Befehlspalette ausführen",
"CLOSE_DIALOGS": "Dialog schließen oder Overlay ausblenden",
"DOWNLOADS_OPEN_ITEM": "Fokussierten Download-Eintrag in der Bibliothek öffnen"
"DOWNLOADS_OPEN_ITEM": "Fokussierten Download-Eintrag in der Bibliothek öffnen",
"OPEN_PLAYLIST_SWITCHER": "Playlist wechseln"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Füge eine Wiedergabeliste hinzu, und dein Wiedergabeverlauf erscheint hier.",
"NO_ITEMS_TITLE": "Noch nichts angesehen",
"NO_ITEMS_BODY": "Beginne, etwas aus deiner Bibliothek anzusehen, dann erscheint es hier."
},
"SWITCHER": {
"SEARCH": "Playlist suchen…",
"RECENT": "Zuletzt geöffnet",
"NO_MATCHES": "Nichts gefunden",
"ALL_SOURCES": "Alle Quellen",
"HINT_SELECT": "auswählen",
"HINT_OPEN": "öffnen",
"HINT_CLOSE": "schließen"
}
},
"LOADING": "Laden",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Όνομα (Z-A)",
"NEWEST": "Ημερομηνία προσθήκης (Πρώτα τα νεότερα)",
"OLDEST": "Ημερομηνία προσθήκης (Πρώτα το παλαιότερο)",
"CUSTOM_ORDER": "Προσαρμοσμένη σειρά (drag & drop)"
"CUSTOM_ORDER": "Προσαρμοσμένη σειρά (drag & drop)",
"UPDATED": "Τελευταία ενημέρωση",
"CHANNELS": "Περισσότερα κανάλια",
"FAILING_FIRST": "Πρώτα όσα δεν αποκρίνονται"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (τοπικό, διεύθυνση url, κείμενο)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Λίστες αναπαραγωγής Stalker",
"ALL_PLAYLISTS": "Όλες οι λίστες αναπαραγωγής",
"PLAYLIST_COUNT_ONE": "1 λίστα αναπαραγωγής",
"PLAYLIST_COUNT_OTHER": "{{count}} λίστες αναπαραγωγής"
"PLAYLIST_COUNT_OTHER": "{{count}} λίστες αναπαραγωγής",
"ROW": {
"TYPE_M3U_FILE": "M3U · αρχείο",
"ADDED": "προστέθηκε {{date}}",
"UPDATED": "ενημερώθηκε {{date}}",
"UNREACHABLE": "Δεν αποκρίνεται",
"UNREACHABLE_FOR": "Δεν αποκρίνεται · {{duration}}",
"EXPIRED": "Έληξε",
"EDIT": "Επεξεργασία…",
"COPY_URL": "Αντιγραφή URL",
"OPEN": "Άνοιγμα",
"CHANNELS_ONE": "1 κανάλι"
},
"STATUS": "Κατάσταση",
"STATUS_ANY": "Οποιαδήποτε",
"STATUS_OK": "Αποκρίνονται",
"STATUS_BAD": "Δεν αποκρίνονται",
"NO_MATCHES": "Καμία λίστα δεν ταιριάζει με αυτά τα φίλτρα",
"RESET_FILTERS": "Επαναφορά φίλτρων",
"REMOVED": "Καταργήθηκε το «{{name}}»",
"REMOVED_SWITCHED": "Καταργήθηκε το «{{name}}», μετάβαση στο «{{next}}»",
"REMOVE_FAILED": "Δεν ήταν δυνατή η κατάργηση του «{{name}}»",
"ADD_SOURCE": "Προσθήκη πηγής"
},
"CONTEXT": {
"CATEGORIES": "Κατηγορίες",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Μετακίνηση επιλογής παλέτας εντολών",
"COMMAND_PALETTE_RUN": "Εκτέλεση επιλεγμένου στοιχείου παλέτας εντολών",
"CLOSE_DIALOGS": "Κλείσιμο διαλόγου ή απόκρυψη overlay",
"DOWNLOADS_OPEN_ITEM": "Άνοιγμα εστιασμένου στοιχείου λήψης στη βιβλιοθήκη"
"DOWNLOADS_OPEN_ITEM": "Άνοιγμα εστιασμένου στοιχείου λήψης στη βιβλιοθήκη",
"OPEN_PLAYLIST_SWITCHER": "Εναλλαγή λίστας"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Προσθέστε μια λίστα αναπαραγωγής και το ιστορικό προβολής σας θα εμφανιστεί εδώ.",
"NO_ITEMS_TITLE": "Δεν έχει παρακολουθηθεί τίποτα ακόμη",
"NO_ITEMS_BODY": "Ξεκινήστε να παρακολουθείτε οτιδήποτε από τη βιβλιοθήκη σας και θα εμφανιστεί εδώ."
},
"SWITCHER": {
"SEARCH": "Εύρεση λίστας…",
"RECENT": "Πρόσφατα",
"NO_MATCHES": "Δεν βρέθηκε τίποτα",
"ALL_SOURCES": "Όλες οι πηγές",
"HINT_SELECT": "επιλογή",
"HINT_OPEN": "άνοιγμα",
"HINT_CLOSE": "κλείσιμο"
}
},
"LOADING": "Φόρτωση",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Name (Z-A)",
"NEWEST": "Date added (Newest first)",
"OLDEST": "Date added (Oldest first)",
"CUSTOM_ORDER": "Custom order (Drag & Drop)"
"CUSTOM_ORDER": "Custom order (Drag & Drop)",
"UPDATED": "Last updated",
"CHANNELS": "Most channels",
"FAILING_FIRST": "Not responding first"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (local, url, text)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalker Playlists",
"ALL_PLAYLISTS": "All Playlists",
"PLAYLIST_COUNT_ONE": "1 playlist",
"PLAYLIST_COUNT_OTHER": "{{count}} playlists"
"PLAYLIST_COUNT_OTHER": "{{count}} playlists",
"ROW": {
"TYPE_M3U_FILE": "M3U · file",
"ADDED": "added {{date}}",
"UPDATED": "updated {{date}}",
"UNREACHABLE": "Not responding",
"UNREACHABLE_FOR": "Not responding · {{duration}}",
"EXPIRED": "Expired",
"EDIT": "Edit…",
"COPY_URL": "Copy URL",
"OPEN": "Open",
"CHANNELS_ONE": "1 channel"
},
"STATUS": "Status",
"STATUS_ANY": "Any",
"STATUS_OK": "Responding",
"STATUS_BAD": "Not responding",
"NO_MATCHES": "No playlists match these filters",
"RESET_FILTERS": "Reset filters",
"REMOVED": "Removed “{{name}}”",
"REMOVED_SWITCHED": "Removed “{{name}}”, switched to “{{next}}”",
"REMOVE_FAILED": "Could not remove “{{name}}”",
"ADD_SOURCE": "Add a source"
},
"CONTEXT": {
"CATEGORIES": "Categories",
@@ -1975,7 +2000,8 @@
"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"
"DOWNLOADS_OPEN_ITEM": "Open focused download item in the library",
"OPEN_PLAYLIST_SWITCHER": "Switch playlist"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"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."
},
"SWITCHER": {
"SEARCH": "Find a playlist…",
"RECENT": "Recent",
"NO_MATCHES": "Nothing found",
"ALL_SOURCES": "All sources",
"HINT_SELECT": "select",
"HINT_OPEN": "open",
"HINT_CLOSE": "close"
}
},
"LOADING": "Loading",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Nombre (Z-A)",
"NEWEST": "Fecha de adición (más recientes primero)",
"OLDEST": "Fecha de adición (más antiguas primero)",
"CUSTOM_ORDER": "Orden personalizado (arrastrar y soltar)"
"CUSTOM_ORDER": "Orden personalizado (arrastrar y soltar)",
"UPDATED": "Última actualización",
"CHANNELS": "Más canales",
"FAILING_FIRST": "Primero las que no responden"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (local, url, texto)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Listas Stalker",
"ALL_PLAYLISTS": "Todas las listas",
"PLAYLIST_COUNT_ONE": "1 lista de reproducción",
"PLAYLIST_COUNT_OTHER": "{{count}} listas de reproducción"
"PLAYLIST_COUNT_OTHER": "{{count}} listas de reproducción",
"ROW": {
"TYPE_M3U_FILE": "M3U · archivo",
"ADDED": "añadido el {{date}}",
"UPDATED": "actualizado el {{date}}",
"UNREACHABLE": "No responde",
"UNREACHABLE_FOR": "No responde · {{duration}}",
"EXPIRED": "Caducada",
"EDIT": "Editar…",
"COPY_URL": "Copiar URL",
"OPEN": "Abrir",
"CHANNELS_ONE": "1 canal"
},
"STATUS": "Estado",
"STATUS_ANY": "Cualquiera",
"STATUS_OK": "Responden",
"STATUS_BAD": "No responden",
"NO_MATCHES": "Ninguna lista coincide con estos filtros",
"RESET_FILTERS": "Restablecer filtros",
"REMOVED": "Se eliminó «{{name}}»",
"REMOVED_SWITCHED": "Se eliminó «{{name}}» y se cambió a «{{next}}»",
"REMOVE_FAILED": "No se pudo eliminar «{{name}}»",
"ADD_SOURCE": "Añadir una fuente"
},
"CONTEXT": {
"CATEGORIES": "Categorías",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Mover la selección de la paleta de comandos",
"COMMAND_PALETTE_RUN": "Ejecutar el elemento seleccionado de la paleta de comandos",
"CLOSE_DIALOGS": "Cerrar diálogo o descartar superposición",
"DOWNLOADS_OPEN_ITEM": "Abrir en la biblioteca el elemento de descarga enfocado"
"DOWNLOADS_OPEN_ITEM": "Abrir en la biblioteca el elemento de descarga enfocado",
"OPEN_PLAYLIST_SWITCHER": "Cambiar de lista"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Añade una lista de reproducción y tu historial de visualización aparecerá aquí.",
"NO_ITEMS_TITLE": "Aún no has visto nada",
"NO_ITEMS_BODY": "Empieza a ver cualquier contenido de tu biblioteca y aparecerá aquí."
},
"SWITCHER": {
"SEARCH": "Buscar una lista…",
"RECENT": "Recientes",
"NO_MATCHES": "No se encontró nada",
"ALL_SOURCES": "Todas las fuentes",
"HINT_SELECT": "elegir",
"HINT_OPEN": "abrir",
"HINT_CLOSE": "cerrar"
}
},
"LOADING": "Cargando",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Nom (Z-A)",
"NEWEST": "Date d'ajout (Plus récent)",
"OLDEST": "Date d'ajout (Plus ancien)",
"CUSTOM_ORDER": "Ordre personnalisé (glisser-déposer)"
"CUSTOM_ORDER": "Ordre personnalisé (glisser-déposer)",
"UPDATED": "Dernière mise à jour",
"CHANNELS": "Plus de chaînes",
"FAILING_FIRST": "Celles qui ne répondent pas d'abord"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (local, URL, texte)",
@@ -1906,7 +1909,29 @@
"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"
"PLAYLIST_COUNT_OTHER": "{{count}} listes de lecture",
"ROW": {
"TYPE_M3U_FILE": "M3U · fichier",
"ADDED": "ajouté le {{date}}",
"UPDATED": "mis à jour le {{date}}",
"UNREACHABLE": "Ne répond pas",
"UNREACHABLE_FOR": "Ne répond pas · {{duration}}",
"EXPIRED": "Expiré",
"EDIT": "Modifier…",
"COPY_URL": "Copier l’URL",
"OPEN": "Ouvrir",
"CHANNELS_ONE": "1 chaîne"
},
"STATUS": "État",
"STATUS_ANY": "Tous",
"STATUS_OK": "Répondent",
"STATUS_BAD": "Ne répondent pas",
"NO_MATCHES": "Aucune playlist ne correspond à ces filtres",
"RESET_FILTERS": "Réinitialiser les filtres",
"REMOVED": "« {{name}} » supprimée",
"REMOVED_SWITCHED": "« {{name}} » supprimée, passage à « {{next}} »",
"REMOVE_FAILED": "Impossible de supprimer « {{name}} »",
"ADD_SOURCE": "Ajouter une source"
},
"CONTEXT": {
"CATEGORIES": "Catégories",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Déplacer la sélection dans la palette de commandes",
"COMMAND_PALETTE_RUN": "Exécuter l’élément sélectionné dans la palette de commandes",
"CLOSE_DIALOGS": "Fermer une boîte de dialogue ou masquer une superposition",
"DOWNLOADS_OPEN_ITEM": "Ouvrir l’élément de téléchargement ciblé dans la bibliothèque"
"DOWNLOADS_OPEN_ITEM": "Ouvrir l’élément de téléchargement ciblé dans la bibliothèque",
"OPEN_PLAYLIST_SWITCHER": "Changer de playlist"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Ajoutez une playlist et votre historique de visionnage apparaîtra ici.",
"NO_ITEMS_TITLE": "Rien regardé pour le moment",
"NO_ITEMS_BODY": "Commencez à regarder un contenu de votre bibliothèque et il apparaîtra ici."
},
"SWITCHER": {
"SEARCH": "Trouver une playlist…",
"RECENT": "Récentes",
"NO_MATCHES": "Aucun résultat",
"ALL_SOURCES": "Toutes les sources",
"HINT_SELECT": "choisir",
"HINT_OPEN": "ouvrir",
"HINT_CLOSE": "fermer"
}
},
"LOADING": "Chargement",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Név szerint (Z–A)",
"NEWEST": "Hozzáadás dátuma (legújabb elöl)",
"OLDEST": "Hozzáadás dátuma (legrégebbi elöl)",
"CUSTOM_ORDER": "Egyéni sorrend (húzás és ejtés)"
"CUSTOM_ORDER": "Egyéni sorrend (húzás és ejtés)",
"UPDATED": "Legutóbbi frissítés",
"CHANNELS": "Legtöbb csatorna",
"FAILING_FIRST": "Nem válaszolók elöl"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (helyi fájl, URL vagy szöveg)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalker-lejátszási listák",
"ALL_PLAYLISTS": "Összes lejátszási lista",
"PLAYLIST_COUNT_ONE": "1 lejátszási lista",
"PLAYLIST_COUNT_OTHER": "{{count}} lejátszási lista"
"PLAYLIST_COUNT_OTHER": "{{count}} lejátszási lista",
"ROW": {
"TYPE_M3U_FILE": "M3U · fájl",
"ADDED": "hozzáadva: {{date}}",
"UPDATED": "frissítve: {{date}}",
"UNREACHABLE": "Nem válaszol",
"UNREACHABLE_FOR": "Nem válaszol · {{duration}}",
"EXPIRED": "Lejárt",
"EDIT": "Szerkesztés…",
"COPY_URL": "URL másolása",
"OPEN": "Megnyitás",
"CHANNELS_ONE": "1 csatorna"
},
"STATUS": "Állapot",
"STATUS_ANY": "Bármelyik",
"STATUS_OK": "Válaszolnak",
"STATUS_BAD": "Nem válaszolnak",
"NO_MATCHES": "Egyik lejátszási lista sem felel meg ezeknek a szűrőknek",
"RESET_FILTERS": "Szűrők törlése",
"REMOVED": "„{{name}}” eltávolítva",
"REMOVED_SWITCHED": "„{{name}}” eltávolítva, váltás erre: „{{next}}”",
"REMOVE_FAILED": "„{{name}}” nem távolítható el",
"ADD_SOURCE": "Forrás hozzáadása"
},
"CONTEXT": {
"CATEGORIES": "Kategóriák",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Kijelölés mozgatása a parancspalettán",
"COMMAND_PALETTE_RUN": "A parancspalettán kijelölt művelet végrehajtása",
"CLOSE_DIALOGS": "Párbeszédpanel bezárása vagy fedőréteg eltüntetése",
"DOWNLOADS_OPEN_ITEM": "A fókuszban lévő letöltés megnyitása a médiatárban"
"DOWNLOADS_OPEN_ITEM": "A fókuszban lévő letöltés megnyitása a médiatárban",
"OPEN_PLAYLIST_SWITCHER": "Lejátszási lista váltása"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Adjon hozzá egy lejátszási listát, és megtekintési előzményei itt fognak megjelenni.",
"NO_ITEMS_TITLE": "Még nincs megtekintett tartalom",
"NO_ITEMS_BODY": "Indítson el bármit a médiatárából, és itt meg fog jelenni."
},
"SWITCHER": {
"SEARCH": "Lejátszási lista keresése…",
"RECENT": "Legutóbbiak",
"NO_MATCHES": "Nincs találat",
"ALL_SOURCES": "Összes forrás",
"HINT_SELECT": "kijelölés",
"HINT_OPEN": "megnyitás",
"HINT_CLOSE": "bezárás"
}
},
"LOADING": "Betöltés",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Nome (Z-A)",
"NEWEST": "Data aggiunta (prima più recenti)",
"OLDEST": "Data aggiunta (prima più vecchi)",
"CUSTOM_ORDER": "Ordine personalizzato (trascina e rilascia)"
"CUSTOM_ORDER": "Ordine personalizzato (trascina e rilascia)",
"UPDATED": "Ultimo aggiornamento",
"CHANNELS": "Più canali",
"FAILING_FIRST": "Prima quelle che non rispondono"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (locale, URL, testo)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Playlist Stalker",
"ALL_PLAYLISTS": "Tutte le playlist",
"PLAYLIST_COUNT_ONE": "1 playlist",
"PLAYLIST_COUNT_OTHER": "{{count}} playlist"
"PLAYLIST_COUNT_OTHER": "{{count}} playlist",
"ROW": {
"TYPE_M3U_FILE": "M3U · file locale",
"ADDED": "aggiunto il {{date}}",
"UPDATED": "aggiornato il {{date}}",
"UNREACHABLE": "Non risponde",
"UNREACHABLE_FOR": "Non risponde · {{duration}}",
"EXPIRED": "Scaduto",
"EDIT": "Modifica…",
"COPY_URL": "Copia URL",
"OPEN": "Apri",
"CHANNELS_ONE": "1 canale"
},
"STATUS": "Stato",
"STATUS_ANY": "Qualsiasi",
"STATUS_OK": "Rispondono",
"STATUS_BAD": "Non rispondono",
"NO_MATCHES": "Nessuna playlist corrisponde a questi filtri",
"RESET_FILTERS": "Reimposta filtri",
"REMOVED": "«{{name}}» rimossa",
"REMOVED_SWITCHED": "«{{name}}» rimossa, passaggio a «{{next}}»",
"REMOVE_FAILED": "Impossibile rimuovere «{{name}}»",
"ADD_SOURCE": "Aggiungi una fonte"
},
"CONTEXT": {
"CATEGORIES": "Categorie",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Sposta selezione della palette comandi",
"COMMAND_PALETTE_RUN": "Esegui elemento selezionato della palette comandi",
"CLOSE_DIALOGS": "Chiudi dialogo o nascondi overlay",
"DOWNLOADS_OPEN_ITEM": "Apri nella libreria l’elemento download selezionato"
"DOWNLOADS_OPEN_ITEM": "Apri nella libreria l’elemento download selezionato",
"OPEN_PLAYLIST_SWITCHER": "Cambia playlist"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Aggiungi una playlist e la tua cronologia di visione apparirà qui.",
"NO_ITEMS_TITLE": "Ancora nessun contenuto guardato",
"NO_ITEMS_BODY": "Inizia a guardare qualsiasi contenuto della tua libreria e apparirà qui."
},
"SWITCHER": {
"SEARCH": "Trova una playlist…",
"RECENT": "Recenti",
"NO_MATCHES": "Nessun risultato",
"ALL_SOURCES": "Tutte le fonti",
"HINT_SELECT": "scegli",
"HINT_OPEN": "apri",
"HINT_CLOSE": "chiudi"
}
},
"LOADING": "Caricamento",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "名前(Z-A)",
"NEWEST": "追加日(新しい順)",
"OLDEST": "追加日(古い順)",
"CUSTOM_ORDER": "カスタム順(ドラッグ&ドロップ)"
"CUSTOM_ORDER": "カスタム順(ドラッグ&ドロップ)",
"UPDATED": "最終更新",
"CHANNELS": "チャンネル数",
"FAILING_FIRST": "応答なしを先頭に"
},
"PLAYLIST_TYPES": {
"M3U": "M3U(ローカル、URL、テキスト)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalkerプレイリスト",
"ALL_PLAYLISTS": "すべてのプレイリスト",
"PLAYLIST_COUNT_ONE": "1 件のプレイリスト",
"PLAYLIST_COUNT_OTHER": "{{count}} 件のプレイリスト"
"PLAYLIST_COUNT_OTHER": "{{count}} 件のプレイリスト",
"ROW": {
"TYPE_M3U_FILE": "M3U · ファイル",
"ADDED": "{{date}}に追加",
"UPDATED": "{{date}}に更新",
"UNREACHABLE": "応答なし",
"UNREACHABLE_FOR": "応答なし · {{duration}}",
"EXPIRED": "期限切れ",
"EDIT": "編集…",
"COPY_URL": "URLをコピー",
"OPEN": "開く",
"CHANNELS_ONE": "1 チャンネル"
},
"STATUS": "状態",
"STATUS_ANY": "すべて",
"STATUS_OK": "応答あり",
"STATUS_BAD": "応答なし",
"NO_MATCHES": "この条件に一致するプレイリストはありません",
"RESET_FILTERS": "フィルターをリセット",
"REMOVED": "「{{name}}」を削除しました",
"REMOVED_SWITCHED": "「{{name}}」を削除し、「{{next}}」に切り替えました",
"REMOVE_FAILED": "「{{name}}」を削除できませんでした",
"ADD_SOURCE": "ソースを追加"
},
"CONTEXT": {
"CATEGORIES": "カテゴリー",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "コマンドパレットの選択を移動",
"COMMAND_PALETTE_RUN": "選択中のコマンドパレット項目を実行",
"CLOSE_DIALOGS": "ダイアログを閉じる、またはオーバーレイを解除",
"DOWNLOADS_OPEN_ITEM": "フォーカス中のダウンロード項目をライブラリで開く"
"DOWNLOADS_OPEN_ITEM": "フォーカス中のダウンロード項目をライブラリで開く",
"OPEN_PLAYLIST_SWITCHER": "プレイリストを切り替え"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "プレイリストを追加すると、視聴履歴がここに表示されます。",
"NO_ITEMS_TITLE": "視聴履歴はまだありません",
"NO_ITEMS_BODY": "ライブラリ内のコンテンツを視聴し始めると、ここに表示されます。"
},
"SWITCHER": {
"SEARCH": "プレイリストを検索…",
"RECENT": "最近",
"NO_MATCHES": "見つかりませんでした",
"ALL_SOURCES": "すべてのソース",
"HINT_SELECT": "選択",
"HINT_OPEN": "開く",
"HINT_CLOSE": "閉じる"
}
},
"LOADING": "読み込み中",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "이름 (Z-A)",
"NEWEST": "추가 날짜 (최신순)",
"OLDEST": "추가 날짜 (오래된순)",
"CUSTOM_ORDER": "사용자 지정 순서(드래그 앤 드롭)"
"CUSTOM_ORDER": "사용자 지정 순서(드래그 앤 드롭)",
"UPDATED": "최근 업데이트",
"CHANNELS": "채널 많은 순",
"FAILING_FIRST": "응답 없는 항목 먼저"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (로컬, URL, 텍스트)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalker 재생목록",
"ALL_PLAYLISTS": "모든 재생목록",
"PLAYLIST_COUNT_ONE": "1개 재생목록",
"PLAYLIST_COUNT_OTHER": "{{count}}개 재생목록"
"PLAYLIST_COUNT_OTHER": "{{count}}개 재생목록",
"ROW": {
"TYPE_M3U_FILE": "M3U · 파일",
"ADDED": "{{date}} 추가됨",
"UPDATED": "{{date}} 업데이트됨",
"UNREACHABLE": "응답 없음",
"UNREACHABLE_FOR": "응답 없음 · {{duration}}",
"EXPIRED": "만료됨",
"EDIT": "편집…",
"COPY_URL": "URL 복사",
"OPEN": "열기",
"CHANNELS_ONE": "채널 1개"
},
"STATUS": "상태",
"STATUS_ANY": "전체",
"STATUS_OK": "응답함",
"STATUS_BAD": "응답 없음",
"NO_MATCHES": "이 필터와 일치하는 재생목록이 없습니다",
"RESET_FILTERS": "필터 초기화",
"REMOVED": "'{{name}}' 삭제됨",
"REMOVED_SWITCHED": "'{{name}}' 삭제됨, '{{next}}'(으)로 전환됨",
"REMOVE_FAILED": "'{{name}}'을(를) 삭제할 수 없습니다",
"ADD_SOURCE": "소스 추가"
},
"CONTEXT": {
"CATEGORIES": "카테고리",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "명령 팔레트 선택 이동",
"COMMAND_PALETTE_RUN": "선택한 명령 팔레트 항목 실행",
"CLOSE_DIALOGS": "대화상자 닫기 또는 오버레이 해제",
"DOWNLOADS_OPEN_ITEM": "포커스된 다운로드 항목을 라이브러리에서 열기"
"DOWNLOADS_OPEN_ITEM": "포커스된 다운로드 항목을 라이브러리에서 열기",
"OPEN_PLAYLIST_SWITCHER": "재생목록 전환"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "플레이리스트를 추가하면 시청 기록이 여기에 표시됩니다.",
"NO_ITEMS_TITLE": "아직 시청 기록이 없습니다",
"NO_ITEMS_BODY": "라이브러리의 콘텐츠를 시청하기 시작하면 여기에 표시됩니다."
},
"SWITCHER": {
"SEARCH": "재생목록 찾기…",
"RECENT": "최근",
"NO_MATCHES": "찾은 항목 없음",
"ALL_SOURCES": "모든 소스",
"HINT_SELECT": "선택",
"HINT_OPEN": "열기",
"HINT_CLOSE": "닫기"
}
},
"LOADING": "로드 중",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Naam (Z-A)",
"NEWEST": "Datum toegevoegd (Nieuwste eerst)",
"OLDEST": "Datum toegevoegd (Oudste eerst)",
"CUSTOM_ORDER": "Aangepaste volgorde (slepen en neerzetten)"
"CUSTOM_ORDER": "Aangepaste volgorde (slepen en neerzetten)",
"UPDATED": "Laatst bijgewerkt",
"CHANNELS": "Meeste zenders",
"FAILING_FIRST": "Niet-reagerende eerst"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (lokaal, URL, tekst)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalker-afspeellijsten",
"ALL_PLAYLISTS": "Alle afspeellijsten",
"PLAYLIST_COUNT_ONE": "1 afspeellijst",
"PLAYLIST_COUNT_OTHER": "{{count}} afspeellijsten"
"PLAYLIST_COUNT_OTHER": "{{count}} afspeellijsten",
"ROW": {
"TYPE_M3U_FILE": "M3U · bestand",
"ADDED": "toegevoegd {{date}}",
"UPDATED": "bijgewerkt {{date}}",
"UNREACHABLE": "Reageert niet",
"UNREACHABLE_FOR": "Reageert niet · {{duration}}",
"EXPIRED": "Verlopen",
"EDIT": "Bewerken…",
"COPY_URL": "URL kopiëren",
"OPEN": "Openen",
"CHANNELS_ONE": "1 zender"
},
"STATUS": "Bereikbaarheid",
"STATUS_ANY": "Alle",
"STATUS_OK": "Reageren",
"STATUS_BAD": "Reageren niet",
"NO_MATCHES": "Geen afspeellijsten voldoen aan deze filters",
"RESET_FILTERS": "Filters wissen",
"REMOVED": "‘{{name}}’ verwijderd",
"REMOVED_SWITCHED": "‘{{name}}’ verwijderd, overgeschakeld naar ‘{{next}}’",
"REMOVE_FAILED": "‘{{name}}’ kon niet worden verwijderd",
"ADD_SOURCE": "Bron toevoegen"
},
"CONTEXT": {
"CATEGORIES": "Categorieën",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Selectie in opdrachtpalet verplaatsen",
"COMMAND_PALETTE_RUN": "Geselecteerd item in opdrachtpalet uitvoeren",
"CLOSE_DIALOGS": "Dialoogvenster sluiten of overlay verbergen",
"DOWNLOADS_OPEN_ITEM": "Gefocust downloaditem in de bibliotheek openen"
"DOWNLOADS_OPEN_ITEM": "Gefocust downloaditem in de bibliotheek openen",
"OPEN_PLAYLIST_SWITCHER": "Afspeellijst wisselen"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Voeg een afspeellijst toe en uw kijkgeschiedenis verschijnt hier.",
"NO_ITEMS_TITLE": "Nog niets bekeken",
"NO_ITEMS_BODY": "Begin iets uit uw bibliotheek te kijken en het verschijnt hier."
},
"SWITCHER": {
"SEARCH": "Afspeellijst zoeken…",
"RECENT": "Onlangs geopend",
"NO_MATCHES": "Niets gevonden",
"ALL_SOURCES": "Alle bronnen",
"HINT_SELECT": "kiezen",
"HINT_OPEN": "openen",
"HINT_CLOSE": "sluiten"
}
},
"LOADING": "Laden",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Nazwa (Z-A)",
"NEWEST": "Data dodania (najnowsze pierwsze)",
"OLDEST": "Data dodania (najstarsze pierwsze)",
"CUSTOM_ORDER": "Własna kolejność (przeciągnij i upuść)"
"CUSTOM_ORDER": "Własna kolejność (przeciągnij i upuść)",
"UPDATED": "Ostatnia aktualizacja",
"CHANNELS": "Najwięcej kanałów",
"FAILING_FIRST": "Najpierw nieodpowiadające"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (lokalny, URL, tekst)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Listy odtwarzania Stalker",
"ALL_PLAYLISTS": "Wszystkie listy odtwarzania",
"PLAYLIST_COUNT_ONE": "1 lista odtwarzania",
"PLAYLIST_COUNT_OTHER": "{{count}} list odtwarzania"
"PLAYLIST_COUNT_OTHER": "{{count}} list odtwarzania",
"ROW": {
"TYPE_M3U_FILE": "M3U · plik",
"ADDED": "dodano {{date}}",
"UPDATED": "zaktualizowano {{date}}",
"UNREACHABLE": "Nie odpowiada",
"UNREACHABLE_FOR": "Nie odpowiada · {{duration}}",
"EXPIRED": "Wygasło",
"EDIT": "Edytuj…",
"COPY_URL": "Kopiuj URL",
"OPEN": "Otwórz",
"CHANNELS_ONE": "1 kanał"
},
"STATUS": "Stan",
"STATUS_ANY": "Dowolny",
"STATUS_OK": "Odpowiadają",
"STATUS_BAD": "Nie odpowiadają",
"NO_MATCHES": "Żadna playlista nie pasuje do tych filtrów",
"RESET_FILTERS": "Wyczyść filtry",
"REMOVED": "Usunięto „{{name}}”",
"REMOVED_SWITCHED": "Usunięto „{{name}}”, przełączono na „{{next}}”",
"REMOVE_FAILED": "Nie udało się usunąć „{{name}}”",
"ADD_SOURCE": "Dodaj źródło"
},
"CONTEXT": {
"CATEGORIES": "Kategorie",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Przenieś zaznaczenie w palecie poleceń",
"COMMAND_PALETTE_RUN": "Uruchom zaznaczoną pozycję palety poleceń",
"CLOSE_DIALOGS": "Zamknij okno dialogowe lub ukryj nakładkę",
"DOWNLOADS_OPEN_ITEM": "Otwórz aktywne pobranie w bibliotece"
"DOWNLOADS_OPEN_ITEM": "Otwórz aktywne pobranie w bibliotece",
"OPEN_PLAYLIST_SWITCHER": "Przełącz playlistę"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Dodaj listę odtwarzania, a historia oglądania pojawi się tutaj.",
"NO_ITEMS_TITLE": "Jeszcze nic nie oglądano",
"NO_ITEMS_BODY": "Zacznij oglądać cokolwiek ze swojej biblioteki, a pojawi się tutaj."
},
"SWITCHER": {
"SEARCH": "Znajdź playlistę…",
"RECENT": "Ostatnie",
"NO_MATCHES": "Nic nie znaleziono",
"ALL_SOURCES": "Wszystkie źródła",
"HINT_SELECT": "wybór",
"HINT_OPEN": "otwórz",
"HINT_CLOSE": "zamknij"
}
},
"LOADING": "Ładowanie",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Nome (Z-A)",
"NEWEST": "Data de adição (Mais recente primeiro)",
"OLDEST": "Data de adição (Mais antigo primeiro)",
"CUSTOM_ORDER": "Ordem personalizada (arrastar e soltar)"
"CUSTOM_ORDER": "Ordem personalizada (arrastar e soltar)",
"UPDATED": "Última atualização",
"CHANNELS": "Mais canais",
"FAILING_FIRST": "Primeiro as que não respondem"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (local, url, texto)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Playlists Stalker",
"ALL_PLAYLISTS": "Todas as playlists",
"PLAYLIST_COUNT_ONE": "1 playlist",
"PLAYLIST_COUNT_OTHER": "{{count}} playlists"
"PLAYLIST_COUNT_OTHER": "{{count}} playlists",
"ROW": {
"TYPE_M3U_FILE": "M3U · arquivo",
"ADDED": "adicionado em {{date}}",
"UPDATED": "atualizado em {{date}}",
"UNREACHABLE": "Não responde",
"UNREACHABLE_FOR": "Não responde · {{duration}}",
"EXPIRED": "Expirada",
"EDIT": "Editar…",
"COPY_URL": "Copiar URL",
"OPEN": "Abrir",
"CHANNELS_ONE": "1 canal"
},
"STATUS": "Estado",
"STATUS_ANY": "Qualquer",
"STATUS_OK": "Respondem",
"STATUS_BAD": "Não respondem",
"NO_MATCHES": "Nenhuma lista corresponde a estes filtros",
"RESET_FILTERS": "Repor filtros",
"REMOVED": "«{{name}}» removida",
"REMOVED_SWITCHED": "«{{name}}» removida, mudou para «{{next}}»",
"REMOVE_FAILED": "Não foi possível remover «{{name}}»",
"ADD_SOURCE": "Adicionar uma fonte"
},
"CONTEXT": {
"CATEGORIES": "Categorias",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Mover seleção da paleta de comandos",
"COMMAND_PALETTE_RUN": "Executar item selecionado da paleta de comandos",
"CLOSE_DIALOGS": "Fechar diálogo ou dispensar sobreposição",
"DOWNLOADS_OPEN_ITEM": "Abrir o download em foco na biblioteca"
"DOWNLOADS_OPEN_ITEM": "Abrir o download em foco na biblioteca",
"OPEN_PLAYLIST_SWITCHER": "Mudar de lista"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Adicione uma playlist e seu histórico de visualização aparecerá aqui.",
"NO_ITEMS_TITLE": "Nada assistido ainda",
"NO_ITEMS_BODY": "Comece a assistir qualquer item da sua biblioteca e ele aparecerá aqui."
},
"SWITCHER": {
"SEARCH": "Procurar uma lista…",
"RECENT": "Recentes",
"NO_MATCHES": "Nada encontrado",
"ALL_SOURCES": "Todas as fontes",
"HINT_SELECT": "escolher",
"HINT_OPEN": "abrir",
"HINT_CLOSE": "fechar"
}
},
"LOADING": "A carregar",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "Имени (Я-А)",
"NEWEST": "Дате добавления (сначала новые)",
"OLDEST": "Дате добавления (сначала старые)",
"CUSTOM_ORDER": "Пользовательский порядок (перетаскивание)"
"CUSTOM_ORDER": "Пользовательский порядок (перетаскивание)",
"UPDATED": "Последнему обновлению",
"CHANNELS": "Числу каналов",
"FAILING_FIRST": "Сначала неактивные"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (локально, URL, текст)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalker плейлисты",
"ALL_PLAYLISTS": "Все плейлисты",
"PLAYLIST_COUNT_ONE": "1 плейлист",
"PLAYLIST_COUNT_OTHER": "{{count}} плейлистов"
"PLAYLIST_COUNT_OTHER": "{{count}} плейлистов",
"ROW": {
"TYPE_M3U_FILE": "M3U · файл",
"ADDED": "добавлен {{date}}",
"UPDATED": "обновлён {{date}}",
"UNREACHABLE": "Не отвечает",
"UNREACHABLE_FOR": "Не отвечает · {{duration}}",
"EXPIRED": "Истёк",
"EDIT": "Изменить…",
"COPY_URL": "Копировать URL",
"OPEN": "Открыть",
"CHANNELS_ONE": "1 канал"
},
"STATUS": "Статус",
"STATUS_ANY": "Любой",
"STATUS_OK": "Отвечают",
"STATUS_BAD": "Не отвечают",
"NO_MATCHES": "Нет плейлистов с такими фильтрами",
"RESET_FILTERS": "Сбросить фильтры",
"REMOVED": "Удалён «{{name}}»",
"REMOVED_SWITCHED": "Удалён «{{name}}», открыт «{{next}}»",
"REMOVE_FAILED": "Не удалось удалить «{{name}}»",
"ADD_SOURCE": "Добавить источник"
},
"CONTEXT": {
"CATEGORIES": "Категории",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Переместить выбор в палитре команд",
"COMMAND_PALETTE_RUN": "Выполнить выбранный пункт палитры команд",
"CLOSE_DIALOGS": "Закрыть диалог или скрыть оверлей",
"DOWNLOADS_OPEN_ITEM": "Открыть выбранную загрузку в библиотеке"
"DOWNLOADS_OPEN_ITEM": "Открыть выбранную загрузку в библиотеке",
"OPEN_PLAYLIST_SWITCHER": "Переключить плейлист"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Добавьте плейлист, и история просмотра появится здесь.",
"NO_ITEMS_TITLE": "Пока ничего не просмотрено",
"NO_ITEMS_BODY": "Начните смотреть любой контент из библиотеки, и он появится здесь."
},
"SWITCHER": {
"SEARCH": "Найти плейлист…",
"RECENT": "Недавние",
"NO_MATCHES": "Ничего не найдено",
"ALL_SOURCES": "Все источники",
"HINT_SELECT": "выбор",
"HINT_OPEN": "открыть",
"HINT_CLOSE": "закрыть"
}
},
"LOADING": "Загрузка",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "İsim (Z-A)",
"NEWEST": "Eklenme tarihi (En yeni önce)",
"OLDEST": "Eklenme tarihi (En eski önce)",
"CUSTOM_ORDER": "Özel sıra (sürükle ve bırak)"
"CUSTOM_ORDER": "Özel sıra (sürükle ve bırak)",
"UPDATED": "Son güncelleme",
"CHANNELS": "En çok kanal",
"FAILING_FIRST": "Önce yanıt vermeyenler"
},
"PLAYLIST_TYPES": {
"M3U": "M3U (yerel, url, metin)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalker Oynatma Listeleri",
"ALL_PLAYLISTS": "Tüm Oynatma Listeleri",
"PLAYLIST_COUNT_ONE": "1 oynatma listesi",
"PLAYLIST_COUNT_OTHER": "{{count}} oynatma listesi"
"PLAYLIST_COUNT_OTHER": "{{count}} oynatma listesi",
"ROW": {
"TYPE_M3U_FILE": "M3U · dosya",
"ADDED": "{{date}} eklendi",
"UPDATED": "{{date}} güncellendi",
"UNREACHABLE": "Yanıt vermiyor",
"UNREACHABLE_FOR": "Yanıt vermiyor · {{duration}}",
"EXPIRED": "Süresi doldu",
"EDIT": "Düzenle…",
"COPY_URL": "URL'yi kopyala",
"OPEN": "Aç",
"CHANNELS_ONE": "1 kanal"
},
"STATUS": "Durum",
"STATUS_ANY": "Tümü",
"STATUS_OK": "Yanıt veriyor",
"STATUS_BAD": "Yanıt vermiyor",
"NO_MATCHES": "Bu filtrelere uyan oynatma listesi yok",
"RESET_FILTERS": "Filtreleri sıfırla",
"REMOVED": "“{{name}}” kaldırıldı",
"REMOVED_SWITCHED": "“{{name}}” kaldırıldı, “{{next}}” açıldı",
"REMOVE_FAILED": "“{{name}}” kaldırılamadı",
"ADD_SOURCE": "Kaynak ekle"
},
"CONTEXT": {
"CATEGORIES": "Kategoriler",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "Komut paleti seçimini taşı",
"COMMAND_PALETTE_RUN": "Seçili komut paleti öğesini çalıştır",
"CLOSE_DIALOGS": "İletişim kutusunu kapat veya katmanı gizle",
"DOWNLOADS_OPEN_ITEM": "Odaktaki indirme öğesini kitaplıkta aç"
"DOWNLOADS_OPEN_ITEM": "Odaktaki indirme öğesini kitaplıkta aç",
"OPEN_PLAYLIST_SWITCHER": "Oynatma listesini değiştir"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "Bir oynatma listesi ekleyin; izleme geçmişiniz burada görünecek.",
"NO_ITEMS_TITLE": "Henüz hiçbir şey izlenmedi",
"NO_ITEMS_BODY": "Kitaplığınızdaki herhangi bir şeyi izlemeye başlayın, burada görünecek."
},
"SWITCHER": {
"SEARCH": "Oynatma listesi bul…",
"RECENT": "Son açılanlar",
"NO_MATCHES": "Hiçbir şey bulunamadı",
"ALL_SOURCES": "Tüm kaynaklar",
"HINT_SELECT": "seç",
"HINT_OPEN": "aç",
"HINT_CLOSE": "kapat"
}
},
"LOADING": "Yükleniyor",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "名称(Z-A)",
"NEWEST": "添加日期(最新优先)",
"OLDEST": "添加日期(最旧优先)",
"CUSTOM_ORDER": "自定义顺序(拖放)"
"CUSTOM_ORDER": "自定义顺序(拖放)",
"UPDATED": "最近更新",
"CHANNELS": "频道数量",
"FAILING_FIRST": "无响应的优先"
},
"PLAYLIST_TYPES": {
"M3U": "M3U(本地、URL、文本)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalker 播放列表",
"ALL_PLAYLISTS": "所有播放列表",
"PLAYLIST_COUNT_ONE": "1 个播放列表",
"PLAYLIST_COUNT_OTHER": "{{count}} 个播放列表"
"PLAYLIST_COUNT_OTHER": "{{count}} 个播放列表",
"ROW": {
"TYPE_M3U_FILE": "M3U · 文件",
"ADDED": "{{date}} 添加",
"UPDATED": "{{date}} 更新",
"UNREACHABLE": "无响应",
"UNREACHABLE_FOR": "无响应 · {{duration}}",
"EXPIRED": "已过期",
"EDIT": "编辑…",
"COPY_URL": "复制 URL",
"OPEN": "打开",
"CHANNELS_ONE": "1 个频道"
},
"STATUS": "状态",
"STATUS_ANY": "全部",
"STATUS_OK": "有响应",
"STATUS_BAD": "无响应",
"NO_MATCHES": "没有符合这些筛选条件的播放列表",
"RESET_FILTERS": "重置筛选",
"REMOVED": "已删除“{{name}}”",
"REMOVED_SWITCHED": "已删除“{{name}}”,已切换到“{{next}}”",
"REMOVE_FAILED": "无法删除“{{name}}”",
"ADD_SOURCE": "添加来源"
},
"CONTEXT": {
"CATEGORIES": "分类",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "移动命令面板选中项",
"COMMAND_PALETTE_RUN": "运行选中的命令面板项目",
"CLOSE_DIALOGS": "关闭对话框或取消覆盖层",
"DOWNLOADS_OPEN_ITEM": "在媒体库中打开聚焦的下载项"
"DOWNLOADS_OPEN_ITEM": "在媒体库中打开聚焦的下载项",
"OPEN_PLAYLIST_SWITCHER": "切换播放列表"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "添加播放列表后,您的观看历史会显示在这里。",
"NO_ITEMS_TITLE": "还没有观看记录",
"NO_ITEMS_BODY": "开始观看媒体库中的任意内容后,它会显示在这里。"
},
"SWITCHER": {
"SEARCH": "查找播放列表…",
"RECENT": "最近",
"NO_MATCHES": "未找到",
"ALL_SOURCES": "所有来源",
"HINT_SELECT": "选择",
"HINT_OPEN": "打开",
"HINT_CLOSE": "关闭"
}
},
"LOADING": "加载中",
+38 -3
View File
@@ -260,7 +260,10 @@
"NAME_DESC": "名稱(Z-A)",
"NEWEST": "新增日期(最新優先)",
"OLDEST": "新增日期(最舊優先)",
"CUSTOM_ORDER": "自訂順序(拖放)"
"CUSTOM_ORDER": "自訂順序(拖放)",
"UPDATED": "最近更新",
"CHANNELS": "頻道數量",
"FAILING_FIRST": "無回應的優先"
},
"PLAYLIST_TYPES": {
"M3U": "M3U(本機、網址、文字)",
@@ -1906,7 +1909,29 @@
"STALKER_PLAYLISTS": "Stalker 播放清單",
"ALL_PLAYLISTS": "所有播放清單",
"PLAYLIST_COUNT_ONE": "1 個播放清單",
"PLAYLIST_COUNT_OTHER": "{{count}} 個播放清單"
"PLAYLIST_COUNT_OTHER": "{{count}} 個播放清單",
"ROW": {
"TYPE_M3U_FILE": "M3U · 檔案",
"ADDED": "{{date}} 新增",
"UPDATED": "{{date}} 更新",
"UNREACHABLE": "無回應",
"UNREACHABLE_FOR": "無回應 · {{duration}}",
"EXPIRED": "已過期",
"EDIT": "編輯…",
"COPY_URL": "複製 URL",
"OPEN": "開啟",
"CHANNELS_ONE": "1 個頻道"
},
"STATUS": "狀態",
"STATUS_ANY": "全部",
"STATUS_OK": "有回應",
"STATUS_BAD": "無回應",
"NO_MATCHES": "沒有符合這些篩選條件的播放清單",
"RESET_FILTERS": "重設篩選",
"REMOVED": "已移除「{{name}}」",
"REMOVED_SWITCHED": "已移除「{{name}}」,已切換到「{{next}}」",
"REMOVE_FAILED": "無法移除「{{name}}」",
"ADD_SOURCE": "新增來源"
},
"CONTEXT": {
"CATEGORIES": "類別",
@@ -1975,7 +2000,8 @@
"COMMAND_PALETTE_NAVIGATION": "移動命令面板選取項",
"COMMAND_PALETTE_RUN": "執行選取的命令面板項目",
"CLOSE_DIALOGS": "關閉對話框或取消覆蓋層",
"DOWNLOADS_OPEN_ITEM": "在媒體庫中開啟聚焦的下載項目"
"DOWNLOADS_OPEN_ITEM": "在媒體庫中開啟聚焦的下載項目",
"OPEN_PLAYLIST_SWITCHER": "切換播放清單"
}
},
"GLOBAL_FAVORITES": {
@@ -1998,6 +2024,15 @@
"NO_PLAYLISTS_BODY": "新增播放清單後,您的觀看歷史會顯示在這裡。",
"NO_ITEMS_TITLE": "還沒有觀看記錄",
"NO_ITEMS_BODY": "開始觀看媒體庫中的任意內容後,它會顯示在這裡。"
},
"SWITCHER": {
"SEARCH": "尋找播放清單…",
"RECENT": "最近",
"NO_MATCHES": "找不到",
"ALL_SOURCES": "所有來源",
"HINT_SELECT": "選擇",
"HINT_OPEN": "開啟",
"HINT_CLOSE": "關閉"
}
},
"LOADING": "載入中",
+33 -1
View File
@@ -65,6 +65,9 @@ $dark-theme: mat.define-theme(
// `@angular/material/<entry>` import and remove it with the last one:
// `pnpm run styles:material-theme-scope:validate` (CI) checks both
// directions, and `core` (ripples, options, pseudo-checkboxes) always stays.
// `fab` follows the templates instead: the button import carries its
// directives either way, so it is listed only while a template renders
// `mat-fab` or `mat-mini-fab` (its tokens alone were about 6 KB).
$material-components: (
core,
card,
@@ -81,7 +84,6 @@ $material-components: (
checkbox,
button,
icon-button,
fab,
snack-bar,
progress-spinner,
button-toggle,
@@ -219,6 +221,23 @@ html {
// 4.5:1 over hero artwork under the light scrim (#a16207 measured 3.4:1).
--app-rating-color: #7a4a00;
// Source lists (Sources page, playlist switcher) and their popovers.
--app-line-strong: rgba(0, 0, 0, 0.12);
--app-font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;
// A failing source's tag and destructive menu items.
--app-danger-text: #b3261e;
--app-danger-surface: color-mix(in srgb, #d12c2c 12%, transparent);
--app-neutral-tag-surface: rgba(0, 0, 0, 0.06);
// One selected-row look for side lists and the switcher's current row:
// the Settings navigation's soft tint, plus an outline in light theme
// (selection reads as outline + tint here, not a solid slab). Light
// text stays the heading colour: the blue on its own tint is 3.3:1.
--app-list-selected-bg: var(--app-selection-surface);
--app-list-selected-fg: var(--app-heading-color);
--app-list-selected-outline: var(--app-selection-border);
--app-popover-shadow: 0 24px 70px rgba(15, 20, 28, 0.18);
--app-popover-backdrop: rgba(20, 24, 32, 0.28);
.dark-theme {
@include component-colors($dark-theme);
// Only the color roles differ per theme: the elevation shadows are
@@ -324,6 +343,19 @@ html {
--app-cta-hover-bg: #ffffff;
--app-cta-meta-fg: #5a6274;
--app-rating-color: #ffcf5c;
// Source lists and popovers. The selected-row tokens are
// re-declared so they resolve against this context's selection
// colour, not the light values computed on `html`.
--app-line-strong: rgba(255, 255, 255, 0.1);
--app-danger-text: #ff8d9b;
--app-danger-surface: rgba(255, 91, 110, 0.14);
--app-neutral-tag-surface: rgba(255, 255, 255, 0.08);
--app-list-selected-bg: var(--app-selection-surface);
--app-list-selected-fg: var(--app-selection-color);
--app-list-selected-outline: transparent;
--app-popover-shadow: 0 24px 70px rgba(0, 0, 0, 0.6);
--app-popover-backdrop: rgba(4, 6, 10, 0.5);
}
}