Fix admin regressions from Biome refactor: theme init, mobile nav, i18n.
Local Build and Deploy / deploy (push) Successful in 54s

Restore valid browser JS in theme-init, close mobile sidebar on navigation, and split autoDjForm title/trackTitle across locales.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-15 20:02:25 +02:00
1 parent 59b63d6e70
commit bae543baf6
23 files changed
+87 -44

No files matched your search

+3 -3
View File
@@ -1,8 +1,8 @@
(() => { (() => {
let theme: string | null = null; let theme = null;
let defaultDark = false; let defaultDark = false;
let navbarColor: string | null = null; let navbarColor = null;
let navbarTextColor: string | null = null; let navbarTextColor = null;
try { try {
theme = localStorage.getItem("theme"); theme = localStorage.getItem("theme");
const dd = document.querySelector('meta[name="theme-default-dark"]'); const dd = document.querySelector('meta[name="theme-default-dark"]');
+21 -1
View File
@@ -1,7 +1,23 @@
"use client"; "use client";
import { Menu, X } from "lucide-react"; import { Menu, X } from "lucide-react";
import { type ReactNode, useEffect, useState } from "react"; import {
createContext,
type ReactNode,
useCallback,
useContext,
useEffect,
useMemo,
useState,
} from "react";
const AdminMobileContext = createContext<{ close: () => void }>({
close: () => {},
});
export function useAdminMobile() {
return useContext(AdminMobileContext);
}
export function AdminMobileWrapper({ export function AdminMobileWrapper({
sidebar, sidebar,
@@ -11,6 +27,8 @@ export function AdminMobileWrapper({
children: ReactNode; children: ReactNode;
}) { }) {
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const close = useCallback(() => setOpen(false), []);
const mobile = useMemo(() => ({ close }), [close]);
useEffect(() => { useEffect(() => {
if (!open) return; if (!open) return;
@@ -22,6 +40,7 @@ export function AdminMobileWrapper({
}, [open]); }, [open]);
return ( return (
<AdminMobileContext.Provider value={mobile}>
<div className="min-h-screen bg-[var(--admin-canvas)] flex flex-col lg:flex-row"> <div className="min-h-screen bg-[var(--admin-canvas)] flex flex-col lg:flex-row">
{/* Mobile header */} {/* Mobile header */}
<div <div
@@ -72,5 +91,6 @@ export function AdminMobileWrapper({
{/* Content */} {/* Content */}
<div className="flex flex-col flex-1 min-w-0">{children}</div> <div className="flex flex-col flex-1 min-w-0">{children}</div>
</div> </div>
</AdminMobileContext.Provider>
); );
} }
+3
View File
@@ -3,6 +3,7 @@
import Link from "next/link"; import Link from "next/link";
import { usePathname } from "next/navigation"; import { usePathname } from "next/navigation";
import type { ReactNode } from "react"; import type { ReactNode } from "react";
import { useAdminMobile } from "@/components/admin/admin-mobile-wrapper";
/** /**
* Sidebar link that highlights when its route is active. "/admin" matches * Sidebar link that highlights when its route is active. "/admin" matches
@@ -19,6 +20,7 @@ export function AdminNavLink({
children: ReactNode; children: ReactNode;
}) { }) {
const pathname = usePathname() ?? ""; const pathname = usePathname() ?? "";
const { close } = useAdminMobile();
const active = const active =
href === "/admin" href === "/admin"
? pathname === "/admin" ? pathname === "/admin"
@@ -27,6 +29,7 @@ export function AdminNavLink({
return ( return (
<Link <Link
href={href} href={href}
onClick={close}
aria-current={active ? "page" : undefined} aria-current={active ? "page" : undefined}
className={`group flex items-center gap-2.5 rounded-xl px-3 py-2 text-sm no-underline transition-colors duration-150 className={`group flex items-center gap-2.5 rounded-xl px-3 py-2 text-sm no-underline transition-colors duration-150
focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--admin-accent)] focus-visible:ring-offset-1 focus-visible:ring-offset-[var(--admin-sidebar-background)] ${ focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--admin-accent)] focus-visible:ring-offset-1 focus-visible:ring-offset-[var(--admin-sidebar-background)] ${
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Запазване на настройките за точки" "save": "Запазване на настройките за точки"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Заглавие", "title": "Radio AutoDJ",
"subtitle": "Резервен плейлист (radio_auto_dj_playlist), през който радиото се върти, когато няма DJ на живо. Подредени по ред на сортиране и след това по заглавие.", "subtitle": "Резервен плейлист (radio_auto_dj_playlist), през който радиото се върти, когато няма DJ на живо. Подредени по ред на сортиране и след това по заглавие.",
"dbError": "Плейлистът на AutoDJ не можа да се зареди (няма налична база данни).", "dbError": "Плейлистът на AutoDJ не можа да се зареди (няма налична база данни).",
"tracks": "Писти", "tracks": "Писти",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "неактивен", "inactiveLabel": "неактивен",
"deactivate": "Деактивирайте", "deactivate": "Деактивирайте",
"activate": "Активирайте", "activate": "Активирайте",
"delete": "Изтриване" "delete": "Изтриване",
"trackTitle": "Заглавие"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ модериране", "title": "DJ модериране",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Uložte nastavení bodů" "save": "Uložte nastavení bodů"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Název", "title": "Radio AutoDJ",
"subtitle": "Záložní seznam skladeb (radio_auto_dj_playlist) rádio rotuje, když nevysílá žádný živý DJ. Seřazeno podle pořadí řazení a poté názvu.", "subtitle": "Záložní seznam skladeb (radio_auto_dj_playlist) rádio rotuje, když nevysílá žádný živý DJ. Seřazeno podle pořadí řazení a poté názvu.",
"dbError": "Nelze načíst seznam stop AutoDJ (databáze není k dispozici).", "dbError": "Nelze načíst seznam stop AutoDJ (databáze není k dispozici).",
"tracks": "Skladby", "tracks": "Skladby",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "neaktivní", "inactiveLabel": "neaktivní",
"deactivate": "Deaktivovat", "deactivate": "Deaktivovat",
"activate": "Aktivovat", "activate": "Aktivovat",
"delete": "Smazat" "delete": "Smazat",
"trackTitle": "Název"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ moderování", "title": "DJ moderování",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Gem pointindstillinger" "save": "Gem pointindstillinger"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Titel", "title": "Radio AutoDJ",
"subtitle": "Fallback-afspilningsliste (radio_auto_dj_playlist), som radioen roterer igennem, når ingen live-dj streamer. Bestilles efter sorteringsrækkefølge og derefter titel.", "subtitle": "Fallback-afspilningsliste (radio_auto_dj_playlist), som radioen roterer igennem, når ingen live-dj streamer. Bestilles efter sorteringsrækkefølge og derefter titel.",
"dbError": "Kunne ikke indlæse AutoDJ-afspilningslisten (databasen er ikke tilgængelig).", "dbError": "Kunne ikke indlæse AutoDJ-afspilningslisten (databasen er ikke tilgængelig).",
"tracks": "Spor", "tracks": "Spor",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "inaktiv", "inactiveLabel": "inaktiv",
"deactivate": "Deaktiver", "deactivate": "Deaktiver",
"activate": "Aktiver", "activate": "Aktiver",
"delete": "Slet" "delete": "Slet",
"trackTitle": "Titel"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ moderation", "title": "DJ moderation",
+3 -2
View File
@@ -1630,7 +1630,7 @@
"save": "Punkteeinstellungen speichern" "save": "Punkteeinstellungen speichern"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Title", "title": "Radio AutoDJ",
"subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.", "subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.",
"dbError": "Could not load the AutoDJ playlist (database unavailable).", "dbError": "Could not load the AutoDJ playlist (database unavailable).",
"tracks": "Tracks", "tracks": "Tracks",
@@ -1660,7 +1660,8 @@
"inactiveLabel": "inactive", "inactiveLabel": "inactive",
"deactivate": "Deactivate", "deactivate": "Deactivate",
"activate": "Activate", "activate": "Activate",
"delete": "Delete" "delete": "Delete",
"trackTitle": "Title"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ Moderation", "title": "DJ Moderation",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Αποθήκευση ρυθμίσεων πόντων" "save": "Αποθήκευση ρυθμίσεων πόντων"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Τίτλος", "title": "Radio AutoDJ",
"subtitle": "Εναλλακτική λίστα αναπαραγωγής (radio_auto_dj_playlist) το ραδιόφωνο περιστρέφεται όταν δεν υπάρχει ζωντανός DJ σε ροή. Ταξινόμηση κατά σειρά ταξινόμησης και κατόπιν τίτλου.", "subtitle": "Εναλλακτική λίστα αναπαραγωγής (radio_auto_dj_playlist) το ραδιόφωνο περιστρέφεται όταν δεν υπάρχει ζωντανός DJ σε ροή. Ταξινόμηση κατά σειρά ταξινόμησης και κατόπιν τίτλου.",
"dbError": "Δεν ήταν δυνατή η φόρτωση της λίστας αναπαραγωγής AutoDJ (μη διαθέσιμη βάση δεδομένων).", "dbError": "Δεν ήταν δυνατή η φόρτωση της λίστας αναπαραγωγής AutoDJ (μη διαθέσιμη βάση δεδομένων).",
"tracks": "Κομμάτια", "tracks": "Κομμάτια",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "ανενεργός", "inactiveLabel": "ανενεργός",
"deactivate": "Απενεργοποίηση", "deactivate": "Απενεργοποίηση",
"activate": "Ενεργοποίηση", "activate": "Ενεργοποίηση",
"delete": "Διαγραφή" "delete": "Διαγραφή",
"trackTitle": "Τίτλος"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ Moderation", "title": "DJ Moderation",
+3 -2
View File
@@ -1630,7 +1630,7 @@
"save": "Guardar configuración de puntos" "save": "Guardar configuración de puntos"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Title", "title": "Radio AutoDJ",
"subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.", "subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.",
"dbError": "Could not load the AutoDJ playlist (database unavailable).", "dbError": "Could not load the AutoDJ playlist (database unavailable).",
"tracks": "Tracks", "tracks": "Tracks",
@@ -1660,7 +1660,8 @@
"inactiveLabel": "inactive", "inactiveLabel": "inactive",
"deactivate": "Deactivate", "deactivate": "Deactivate",
"activate": "Activate", "activate": "Activate",
"delete": "Delete" "delete": "Delete",
"trackTitle": "Title"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ Moderation", "title": "DJ Moderation",
+3 -2
View File
@@ -1630,7 +1630,7 @@
"save": "Enregistrer les paramètres de points" "save": "Enregistrer les paramètres de points"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Title", "title": "Radio AutoDJ",
"subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.", "subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.",
"dbError": "Could not load the AutoDJ playlist (database unavailable).", "dbError": "Could not load the AutoDJ playlist (database unavailable).",
"tracks": "Tracks", "tracks": "Tracks",
@@ -1660,7 +1660,8 @@
"inactiveLabel": "inactive", "inactiveLabel": "inactive",
"deactivate": "Deactivate", "deactivate": "Deactivate",
"activate": "Activate", "activate": "Activate",
"delete": "Delete" "delete": "Delete",
"trackTitle": "Title"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ Moderation", "title": "DJ Moderation",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Spremi postavke bodova" "save": "Spremi postavke bodova"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Naslov", "title": "Radio AutoDJ",
"subtitle": "Zamjenski popis za reprodukciju (radio_auto_dj_playlist) kroz koji se radio vrti kada nijedan DJ ne emitira uživo. Poredano prema redoslijedu sortiranja pa naslovu.", "subtitle": "Zamjenski popis za reprodukciju (radio_auto_dj_playlist) kroz koji se radio vrti kada nijedan DJ ne emitira uživo. Poredano prema redoslijedu sortiranja pa naslovu.",
"dbError": "Nije moguće učitati AutoDJ popis za reprodukciju (baza podataka nije dostupna).", "dbError": "Nije moguće učitati AutoDJ popis za reprodukciju (baza podataka nije dostupna).",
"tracks": "Pjesme", "tracks": "Pjesme",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "neaktivan", "inactiveLabel": "neaktivan",
"deactivate": "Deaktiviraj", "deactivate": "Deaktiviraj",
"activate": "Aktiviraj", "activate": "Aktiviraj",
"delete": "Izbriši" "delete": "Izbriši",
"trackTitle": "Naslov"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ moderiranje", "title": "DJ moderiranje",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Mentse el a pontbeállításokat" "save": "Mentse el a pontbeállításokat"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Cím", "title": "Radio AutoDJ",
"subtitle": "Tartalék lejátszási lista (radio_auto_dj_playlist) a rádió végigpörög, ha nincs élő DJ. Rendezési sorrend, majd cím szerint.", "subtitle": "Tartalék lejátszási lista (radio_auto_dj_playlist) a rádió végigpörög, ha nincs élő DJ. Rendezési sorrend, majd cím szerint.",
"dbError": "Nem sikerült betölteni az AutoDJ lejátszási listát (az adatbázis nem érhető el).", "dbError": "Nem sikerült betölteni az AutoDJ lejátszási listát (az adatbázis nem érhető el).",
"tracks": "Pályák", "tracks": "Pályák",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "inaktív", "inactiveLabel": "inaktív",
"deactivate": "Deaktiválás", "deactivate": "Deaktiválás",
"activate": "Aktiválja", "activate": "Aktiválja",
"delete": "Törölje" "delete": "Törölje",
"trackTitle": "Cím"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ moderálás", "title": "DJ moderálás",
+3 -2
View File
@@ -1630,7 +1630,7 @@
"save": "Salva impostazioni punti" "save": "Salva impostazioni punti"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Title", "title": "Radio AutoDJ",
"subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.", "subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.",
"dbError": "Could not load the AutoDJ playlist (database unavailable).", "dbError": "Could not load the AutoDJ playlist (database unavailable).",
"tracks": "Tracks", "tracks": "Tracks",
@@ -1660,7 +1660,8 @@
"inactiveLabel": "inactive", "inactiveLabel": "inactive",
"deactivate": "Deactivate", "deactivate": "Deactivate",
"activate": "Activate", "activate": "Activate",
"delete": "Delete" "delete": "Delete",
"trackTitle": "Title"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ Moderation", "title": "DJ Moderation",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Lagre poenginnstillinger" "save": "Lagre poenginnstillinger"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Tittel", "title": "Radio AutoDJ",
"subtitle": "Reservespilleliste (radio_auto_dj_playlist) radioen roterer gjennom når ingen live DJ strømmer. Sortert etter sorteringsrekkefølge og deretter tittel.", "subtitle": "Reservespilleliste (radio_auto_dj_playlist) radioen roterer gjennom når ingen live DJ strømmer. Sortert etter sorteringsrekkefølge og deretter tittel.",
"dbError": "Kunne ikke laste AutoDJ-spillelisten (database utilgjengelig).", "dbError": "Kunne ikke laste AutoDJ-spillelisten (database utilgjengelig).",
"tracks": "Spor", "tracks": "Spor",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "inaktiv", "inactiveLabel": "inaktiv",
"deactivate": "Deaktiver", "deactivate": "Deaktiver",
"activate": "Aktiver", "activate": "Aktiver",
"delete": "Slett" "delete": "Slett",
"trackTitle": "Tittel"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ-moderasjon", "title": "DJ-moderasjon",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Zapisz ustawienia punktów" "save": "Zapisz ustawienia punktów"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Tytuł", "title": "Radio AutoDJ",
"subtitle": "Zastępcza lista odtwarzania (radio_auto_dj_playlist) radio zmienia się, gdy żaden DJ nie transmituje na żywo. Uporządkowane według kolejności sortowania, a następnie tytułu.", "subtitle": "Zastępcza lista odtwarzania (radio_auto_dj_playlist) radio zmienia się, gdy żaden DJ nie transmituje na żywo. Uporządkowane według kolejności sortowania, a następnie tytułu.",
"dbError": "Nie można załadować listy odtwarzania AutoDJ (baza danych jest niedostępna).", "dbError": "Nie można załadować listy odtwarzania AutoDJ (baza danych jest niedostępna).",
"tracks": "Utwory", "tracks": "Utwory",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "nieaktywny", "inactiveLabel": "nieaktywny",
"deactivate": "Dezaktywuj", "deactivate": "Dezaktywuj",
"activate": "Aktywuj", "activate": "Aktywuj",
"delete": "Usuń" "delete": "Usuń",
"trackTitle": "Tytuł"
}, },
"moderationPage": { "moderationPage": {
"title": "Moderacja DJ-a", "title": "Moderacja DJ-a",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Salvar configurações de pontos" "save": "Salvar configurações de pontos"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Título", "title": "Radio AutoDJ",
"subtitle": "Lista de reprodução alternativa (radio_auto_dj_playlist) pela qual o rádio alterna quando nenhum DJ ao vivo está transmitindo. Ordenado por ordem de classificação e depois por título.", "subtitle": "Lista de reprodução alternativa (radio_auto_dj_playlist) pela qual o rádio alterna quando nenhum DJ ao vivo está transmitindo. Ordenado por ordem de classificação e depois por título.",
"dbError": "Não foi possível carregar a playlist do AutoDJ (banco de dados indisponível).", "dbError": "Não foi possível carregar a playlist do AutoDJ (banco de dados indisponível).",
"tracks": "Faixas", "tracks": "Faixas",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "inativo", "inactiveLabel": "inativo",
"deactivate": "Desativar", "deactivate": "Desativar",
"activate": "Ativar", "activate": "Ativar",
"delete": "Excluir" "delete": "Excluir",
"trackTitle": "Título"
}, },
"moderationPage": { "moderationPage": {
"title": "Moderação de DJ", "title": "Moderação de DJ",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Salvați setările punctelor" "save": "Salvați setările punctelor"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Titlu", "title": "Radio AutoDJ",
"subtitle": "Lista de redare alternativă (radio_auto_dj_playlist) prin care radioul se rotește atunci când niciun DJ live nu este transmis în flux. Ordonat după ordine de sortare, apoi titlu.", "subtitle": "Lista de redare alternativă (radio_auto_dj_playlist) prin care radioul se rotește atunci când niciun DJ live nu este transmis în flux. Ordonat după ordine de sortare, apoi titlu.",
"dbError": "Nu s-a putut încărca lista de redare AutoDJ (baza de date indisponibilă).", "dbError": "Nu s-a putut încărca lista de redare AutoDJ (baza de date indisponibilă).",
"tracks": "Urme", "tracks": "Urme",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "inactiv", "inactiveLabel": "inactiv",
"deactivate": "Dezactivați", "deactivate": "Dezactivați",
"activate": "Activați", "activate": "Activați",
"delete": "Ștergeți" "delete": "Ștergeți",
"trackTitle": "Titlu"
}, },
"moderationPage": { "moderationPage": {
"title": "Moderație DJ", "title": "Moderație DJ",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Save points settings" "save": "Save points settings"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Title", "title": "Radio AutoDJ",
"subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.", "subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.",
"dbError": "Could not load the AutoDJ playlist (database unavailable).", "dbError": "Could not load the AutoDJ playlist (database unavailable).",
"tracks": "Tracks", "tracks": "Tracks",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "inactive", "inactiveLabel": "inactive",
"deactivate": "Deactivate", "deactivate": "Deactivate",
"activate": "Activate", "activate": "Activate",
"delete": "Delete" "delete": "Delete",
"trackTitle": "Title"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ Moderation", "title": "DJ Moderation",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Uložte nastavenia bodov" "save": "Uložte nastavenia bodov"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Názov", "title": "Radio AutoDJ",
"subtitle": "Záložný zoznam skladieb (radio_auto_dj_playlist) rádio rotuje, keď nevysiela žiadny živý DJ. Zoradené podľa zoradenia a potom podľa názvu.", "subtitle": "Záložný zoznam skladieb (radio_auto_dj_playlist) rádio rotuje, keď nevysiela žiadny živý DJ. Zoradené podľa zoradenia a potom podľa názvu.",
"dbError": "Nepodarilo sa načítať zoznam skladieb AutoDJ (databáza nie je k dispozícii).", "dbError": "Nepodarilo sa načítať zoznam skladieb AutoDJ (databáza nie je k dispozícii).",
"tracks": "Skladby", "tracks": "Skladby",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "neaktívne", "inactiveLabel": "neaktívne",
"deactivate": "Deaktivovať", "deactivate": "Deaktivovať",
"activate": "Aktivovať", "activate": "Aktivovať",
"delete": "Odstrániť" "delete": "Odstrániť",
"trackTitle": "Názov"
}, },
"moderationPage": { "moderationPage": {
"title": "Moderovanie DJ", "title": "Moderovanie DJ",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Сачувајте подешавања поена" "save": "Сачувајте подешавања поена"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Наслов", "title": "Radio AutoDJ",
"subtitle": "Резервна листа за репродукцију (радио_ауто_дј_плаилист) радио ротира када ниједан ДЈ не емитује уживо. Поредано по редоследу сортирања, а затим наслову.", "subtitle": "Резервна листа за репродукцију (радио_ауто_дј_плаилист) радио ротира када ниједан ДЈ не емитује уживо. Поредано по редоследу сортирања, а затим наслову.",
"dbError": "Није могуће учитати АутоДЈ листу за репродукцију (база података није доступна).", "dbError": "Није могуће учитати АутоДЈ листу за репродукцију (база података није доступна).",
"tracks": "Стазе", "tracks": "Стазе",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "неактиван", "inactiveLabel": "неактиван",
"deactivate": "Деактивирај", "deactivate": "Деактивирај",
"activate": "Активирај", "activate": "Активирај",
"delete": "Избриши" "delete": "Избриши",
"trackTitle": "Наслов"
}, },
"moderationPage": { "moderationPage": {
"title": "ДЈ Модератион", "title": "ДЈ Модератион",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Spara poänginställningar" "save": "Spara poänginställningar"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Titel", "title": "Radio AutoDJ",
"subtitle": "Reservspellista (radio_auto_dj_playlist) som radion roterar genom när ingen live-DJ strömmar. Beställs efter sorteringsordning sedan titel.", "subtitle": "Reservspellista (radio_auto_dj_playlist) som radion roterar genom när ingen live-DJ strömmar. Beställs efter sorteringsordning sedan titel.",
"dbError": "Det gick inte att ladda AutoDJ-spellistan (databasen är inte tillgänglig).", "dbError": "Det gick inte att ladda AutoDJ-spellistan (databasen är inte tillgänglig).",
"tracks": "Spår", "tracks": "Spår",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "inaktiv", "inactiveLabel": "inaktiv",
"deactivate": "Inaktivera", "deactivate": "Inaktivera",
"activate": "Aktivera", "activate": "Aktivera",
"delete": "Ta bort" "delete": "Ta bort",
"trackTitle": "Titel"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ Moderering", "title": "DJ Moderering",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Puan ayarlarını kaydet" "save": "Puan ayarlarını kaydet"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Başlık", "title": "Radio AutoDJ",
"subtitle": "Geri dönüş çalma listesi (radio_auto_dj_playlist) hiçbir canlı DJ akışı olmadığında radyo döner. Sıralama düzenine ve ardından başlığa göre sıralanır.", "subtitle": "Geri dönüş çalma listesi (radio_auto_dj_playlist) hiçbir canlı DJ akışı olmadığında radyo döner. Sıralama düzenine ve ardından başlığa göre sıralanır.",
"dbError": "AutoDJ çalma listesi yüklenemedi (veritabanı mevcut değil).", "dbError": "AutoDJ çalma listesi yüklenemedi (veritabanı mevcut değil).",
"tracks": "Parçalar", "tracks": "Parçalar",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "aktif değil", "inactiveLabel": "aktif değil",
"deactivate": "Devre dışı bırak", "deactivate": "Devre dışı bırak",
"activate": "Etkinleştir", "activate": "Etkinleştir",
"delete": "Sil" "delete": "Sil",
"trackTitle": "Başlık"
}, },
"moderationPage": { "moderationPage": {
"title": "DJ Moderasyon", "title": "DJ Moderasyon",
+3 -2
View File
@@ -1666,7 +1666,7 @@
"save": "Зберегти налаштування балів" "save": "Зберегти налаштування балів"
}, },
"autoDjForm": { "autoDjForm": {
"title": "Назва", "title": "Radio AutoDJ",
"subtitle": "Запасний список відтворення (radio_auto_dj_playlist), у якому радіо обертається, коли ді-джей не транслює пряму трансляцію. Упорядковано за порядком сортування, а потім за назвою.", "subtitle": "Запасний список відтворення (radio_auto_dj_playlist), у якому радіо обертається, коли ді-джей не транслює пряму трансляцію. Упорядковано за порядком сортування, а потім за назвою.",
"dbError": "Не вдалося завантажити список відтворення AutoDJ (база даних недоступна).", "dbError": "Не вдалося завантажити список відтворення AutoDJ (база даних недоступна).",
"tracks": "Доріжки", "tracks": "Доріжки",
@@ -1696,7 +1696,8 @@
"inactiveLabel": "неактивний", "inactiveLabel": "неактивний",
"deactivate": "Дезактивувати", "deactivate": "Дезактивувати",
"activate": "активувати", "activate": "активувати",
"delete": "Видалити" "delete": "Видалити",
"trackTitle": "Назва"
}, },
"moderationPage": { "moderationPage": {
"title": "Модерація DJ", "title": "Модерація DJ",