update privacy
This commit is contained in:
+339
-59
@@ -5,7 +5,7 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Privacy Policy | RadioPlayer</title>
|
||||
<meta name="description" content="Privacy policy for the RadioPlayer web app.">
|
||||
<meta name="description" content="Privacy policy for the RadioPlayer native Android application.">
|
||||
<meta name="theme-color" content="#111318">
|
||||
<link rel="manifest" href="manifest.json?v=__BUILD_STAMP__">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="assets/radioplayer-logo-192.png">
|
||||
@@ -107,23 +107,47 @@
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.back-link {
|
||||
padding: 0.7rem 1rem;
|
||||
.language-switch {
|
||||
display: inline-flex;
|
||||
gap: 4px;
|
||||
padding: 4px;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 999px;
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
color: var(--text-main);
|
||||
text-decoration: none;
|
||||
font-size: 0.92rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.back-link:hover,
|
||||
.back-link:focus-visible {
|
||||
border-color: rgba(77, 215, 200, 0.45);
|
||||
.language-button {
|
||||
min-width: 48px;
|
||||
min-height: 40px;
|
||||
padding: 0.55rem 0.85rem;
|
||||
border: 0;
|
||||
border-radius: 999px;
|
||||
background: transparent;
|
||||
color: var(--text-main);
|
||||
font-size: 0.92rem;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.language-button:hover,
|
||||
.language-button:focus-visible {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.language-button[aria-pressed="true"] {
|
||||
background: var(--accent);
|
||||
color: #071412;
|
||||
}
|
||||
|
||||
.language-button:focus-visible {
|
||||
outline: 2px solid var(--accent-3);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
.language-panel[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.privacy-card {
|
||||
padding: clamp(24px, 4vw, 42px);
|
||||
border: 1px solid var(--border);
|
||||
@@ -225,8 +249,8 @@
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
.back-link {
|
||||
text-align: center;
|
||||
.language-switch {
|
||||
align-self: flex-end;
|
||||
}
|
||||
|
||||
.privacy-card {
|
||||
@@ -248,106 +272,362 @@
|
||||
<img src="assets/radioplayer-logo-192.png" alt="RadioPlayer">
|
||||
<span>
|
||||
<span class="brand-title">RadioPlayer</span>
|
||||
<span class="brand-subtitle">Web radio player</span>
|
||||
<span class="brand-subtitle">Native Android radio player</span>
|
||||
</span>
|
||||
</a>
|
||||
<a class="back-link" href="./">Back to the app</a>
|
||||
<div class="language-switch" role="group" aria-label="Language / Jezik">
|
||||
<button class="language-button" id="language-en" type="button" aria-pressed="true" lang="en">EN</button>
|
||||
<button class="language-button" id="language-sl" type="button" aria-pressed="false" lang="sl">SL</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<main class="privacy-card">
|
||||
<div class="language-panel" id="content-en" lang="en">
|
||||
<p class="eyebrow">Policy</p>
|
||||
<h1>Privacy Policy</h1>
|
||||
<p class="lead">
|
||||
This page explains which data RadioPlayer stores only in your browser, why it uses that data, and how you
|
||||
can remove it. This text applies to the web version of the app and to its PWA installation.
|
||||
This policy explains how the native RadioPlayer application for Android (<strong>net.klevze.radio</strong>)
|
||||
handles information when you listen to radio stations, use Android Auto or Google Cast, and configure app
|
||||
features. RadioPlayer does not require an account and does not contain advertising or analytics SDKs.
|
||||
</p>
|
||||
<div class="meta">Effective date: April 29, 2026</div>
|
||||
<div class="meta">Effective date: September 3, 2026</div>
|
||||
|
||||
<div class="sections">
|
||||
<section>
|
||||
<h2>What data is created during use</h2>
|
||||
<h2>Information stored on your device</h2>
|
||||
<p>
|
||||
RadioPlayer does not require registration or a user account. The app may, however, store settings and
|
||||
lists that you create locally in your browser so they are available again the next time you visit.
|
||||
RadioPlayer stores app settings and operational data locally in Android DataStore and app-private cache
|
||||
files. This lets the app restore your choices without creating an online account.
|
||||
</p>
|
||||
<ul>
|
||||
<li>playback volume, the last selected station, and the last selected country filter,</li>
|
||||
<li>your list of favorite stations and local playback statistics used to show recently played stations,</li>
|
||||
<li>stations that you add manually in the editor,</li>
|
||||
<li>the selected audio casting mode for a Google Cast connection.</li>
|
||||
<li>favorite and recently played station identifiers;</li>
|
||||
<li>the last selected station, without automatically starting playback after a normal app restart;</li>
|
||||
<li>country, category, language and sorting filters, app language and visualizer preference;</li>
|
||||
<li>an optional sleep-timer deadline;</li>
|
||||
<li>an optional wake-alarm schedule and the station information needed to run it;</li>
|
||||
<li>a local list of up to 50 recently played track titles and artists, shown on the "Recently played" screen and cleared from Settings;</li>
|
||||
<li>a cached station catalog and cached station artwork needed for reliable operation.</li>
|
||||
</ul>
|
||||
<p>Station search text is used only for the current session and is not kept as a search history.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Where the data is stored</h2>
|
||||
<h2>Network connections and radio streams</h2>
|
||||
<p>
|
||||
The data listed above is stored locally in your browser or in this website's data on your device. For
|
||||
more persistent storage of settings and stations, the app uses the browser's local IndexedDB database.
|
||||
When you use a new version for the first time, it may also migrate older local settings from previous
|
||||
local storage so your data is preserved. RadioPlayer does not send these settings to its own server and
|
||||
does not share them with other users without your action.
|
||||
The app uses HTTPS to retrieve station-catalog updates from <strong>radio.76bit.net</strong>. When you
|
||||
select a station, audio and artwork are requested directly from that station's or content provider's
|
||||
server. A small fixed allowlist of HTTP audio hosts may be used only when a stream does not support HTTPS.
|
||||
RadioPlayer does not disable or bypass TLS certificate validation.
|
||||
</p>
|
||||
<p>
|
||||
The app also uses cached application files for faster startup and operation without downloading all static
|
||||
files again. You can clear this cache at any time in your browser settings.
|
||||
Those third-party servers may receive technical information required to deliver the request, such as your
|
||||
IP address, device or network information, requested URL and request time. Their own privacy policies and
|
||||
retention practices apply. RadioPlayer does not control the availability or logging practices of
|
||||
third-party stations.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>External providers and streaming</h2>
|
||||
<h2>Background playback and notifications</h2>
|
||||
<p>
|
||||
When you start a radio stream, your browser connects directly to the radio station's server or another
|
||||
stream provider. These external providers typically receive the technical data required to deliver the
|
||||
stream, such as your IP address, browser details, and the time of the request.
|
||||
</p>
|
||||
<p>
|
||||
If you use Google Cast, the Google Cast Web Sender SDK is used to establish and manage casting. In that
|
||||
case, Google or the playback device may process data required for the casting session and media routing.
|
||||
</p>
|
||||
<p>
|
||||
On Apple devices, the app may also offer AirPlay output selection. In that case, the media stream is
|
||||
routed to the selected AirPlay device through your browser and operating system capabilities, so the
|
||||
external device or Apple may process data required to establish and manage playback.
|
||||
While audio is playing, Android may display a media notification and MediaSession controls in the
|
||||
notification area, on the lock screen, on Bluetooth devices or in other compatible system surfaces. On
|
||||
Android 13 and later, the app may request notification permission for these controls. Notifications are
|
||||
used only for playback and alarm-related functionality, not for advertising.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Cookies and analytics</h2>
|
||||
<h2>Sleep timer and wake alarm</h2>
|
||||
<p>
|
||||
The current version of the app does not use analytics scripts for user profiling and does not set its own
|
||||
advertising cookies. To store settings, the app uses the browser's local storage and IndexedDB rather
|
||||
than traditional cookies.
|
||||
The sleep timer stores an on-device deadline. If you enable the wake alarm, RadioPlayer uses Android's
|
||||
exact-alarm capability so playback can start at the time you selected. Android may ask you to grant
|
||||
Alarms & reminders access. After a reboot, time-zone change or relevant system event, the app only
|
||||
reschedules an enabled alarm; receiving the boot event does not itself start playback. Exact timing may
|
||||
still be affected by device-manufacturer battery policies.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Hosting logs</h2>
|
||||
<h2>Android Auto</h2>
|
||||
<p>
|
||||
The website host may automatically keep basic technical access logs for security, stability, or debugging
|
||||
purposes. The scope of these logs depends on the hosting provider and is not part of the settings managed
|
||||
by the RadioPlayer user interface.
|
||||
When connected to Android Auto, the vehicle interface can browse the on-device station catalog,
|
||||
favorites and recent stations, display station artwork, search for stations and control the same playback
|
||||
session used by the phone. RadioPlayer does not create a separate car account, and connecting Android
|
||||
Auto does not by itself start playback. Android Auto and Google may process technical information needed
|
||||
to provide the connection and voice features under their own terms.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>How to delete local data</h2>
|
||||
<h2>Google Cast</h2>
|
||||
<p>
|
||||
If you want to remove saved favorite stations, custom stations, or other settings, delete this website's
|
||||
data in your browser. This removes local settings and cached application files from this device.
|
||||
Google Cast is optional and starts only when you choose a compatible receiver. Google Cast and Android's
|
||||
Media Router discover receivers on your local network. RadioPlayer sends the selected station's public
|
||||
stream URL and basic metadata, such as its name and artwork URL, to the selected receiver using the
|
||||
Default Media Receiver. Google and the receiver may process technical information required to establish
|
||||
and operate that session. RadioPlayer does not add a separate Cast analytics account.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Policy updates</h2>
|
||||
<h2>Audio visualizer</h2>
|
||||
<p>
|
||||
This policy may be updated if the app's behavior, hosting setup, or external providers change. The
|
||||
current version of the text will always be published on this page.
|
||||
The optional 32-band visualizer analyzes audio samples already being decoded for playback inside the app.
|
||||
The analysis is used only to draw the on-screen animation. It does not use the microphone, does not
|
||||
require the <strong>RECORD_AUDIO</strong> permission, is not saved as an audio recording and is not sent
|
||||
to the developer.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Album / track cover art</h2>
|
||||
<p>
|
||||
RadioPlayer does <strong>not</strong> contact any external album-art or music-metadata service. The
|
||||
artwork shown in the player, the media notification, on the lock screen and in Android Auto is the
|
||||
<strong>logo or image supplied by the radio station</strong> (or the app's own placeholder when a
|
||||
station provides none). The current song's artist and title, when a station broadcasts them, are shown
|
||||
as text only and are never sent anywhere for an artwork lookup.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Information not collected by the developer</h2>
|
||||
<p>RadioPlayer 2.0.0 does not include developer-operated:</p>
|
||||
<ul>
|
||||
<li>user accounts or cloud synchronization of favorites and settings;</li>
|
||||
<li>advertising or user-profiling SDKs;</li>
|
||||
<li>analytics SDKs;</li>
|
||||
<li>sale of personal information;</li>
|
||||
<li>access to your location, microphone, contacts, photos or files;</li>
|
||||
<li>upload of your listening or track history to the developer — the bounded list of recently played tracks is kept only on your device.</li>
|
||||
</ul>
|
||||
<p>
|
||||
This statement does not cover technical data processed independently by Android, Google Play, Android
|
||||
Auto, Google Cast, radio stations, stream hosts or artwork providers under their own policies.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Deleting your data</h2>
|
||||
<p>
|
||||
RadioPlayer has no online account to delete. You can remove locally stored favorites, recent stations,
|
||||
preferences, timers, alarms and cached data by opening Android Settings, selecting Apps, RadioPlayer,
|
||||
Storage, and clearing the app's storage. Uninstalling the app also removes its local app data, subject to
|
||||
Android or Google backup and restore settings controlled by you. You can revoke notification, alarm and
|
||||
other granted app access at any time in Android Settings.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Android TV</h2>
|
||||
<p>
|
||||
RadioPlayer 2.0.0 does not provide a separately installable native Android TV application. You may cast
|
||||
from the phone app to a compatible Google TV or Cast receiver.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Changes and contact</h2>
|
||||
<p>
|
||||
This policy may be updated when RadioPlayer's behavior, dependencies or external services change. The
|
||||
effective date above identifies the current version. For privacy questions, use the developer contact
|
||||
information published with RadioPlayer on its Google Play listing.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="language-panel" id="content-sl" lang="sl" hidden>
|
||||
<p class="eyebrow">Pravilnik</p>
|
||||
<h1>Pravilnik o zasebnosti</h1>
|
||||
<p class="lead">
|
||||
Ta pravilnik pojasnjuje, kako nativna aplikacija RadioPlayer za Android
|
||||
(<strong>net.klevze.radio</strong>) ravna s podatki med poslušanjem radijskih postaj, uporabo Android Auto ali
|
||||
Google Cast ter nastavljanjem funkcij. RadioPlayer ne zahteva uporabniškega računa ter ne vsebuje oglaševalskih
|
||||
ali analitičnih SDK-jev.
|
||||
</p>
|
||||
<div class="meta">Datum začetka veljavnosti: 3. september 2026</div>
|
||||
|
||||
<div class="sections">
|
||||
<section>
|
||||
<h2>Podatki, shranjeni v napravi</h2>
|
||||
<p>
|
||||
RadioPlayer lokalno uporablja Android DataStore in zasebni predpomnilnik aplikacije. Tako lahko obnovi
|
||||
vaše izbire, ne da bi ustvaril spletni uporabniški račun.
|
||||
</p>
|
||||
<ul>
|
||||
<li>identifikatorje priljubljenih in nedavno predvajanih postaj;</li>
|
||||
<li>nazadnje izbrano postajo, brez samodejnega predvajanja po običajnem ponovnem zagonu aplikacije;</li>
|
||||
<li>filtre države, kategorije, jezika in razvrščanja, jezik aplikacije ter nastavitev vizualizatorja;</li>
|
||||
<li>morebitni rok časovnika spanja;</li>
|
||||
<li>morebitni urnik budilnega alarma in podatke postaje, potrebne za njegovo izvedbo;</li>
|
||||
<li>lokalni seznam do 50 nedavno predvajanih skladb (izvajalec in naslov), prikazan na zaslonu »Nedavno predvajano« in izbrisljiv v nastavitvah;</li>
|
||||
<li>predpomnjeni katalog postaj in predpomnjene logotipe postaj za zanesljivo delovanje.</li>
|
||||
</ul>
|
||||
<p>Besedilo iskanja postaj se uporablja le v trenutni seji in se ne hrani kot zgodovina iskanja.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Omrežne povezave in radijski pretoki</h2>
|
||||
<p>
|
||||
Aplikacija prek HTTPS pridobiva posodobitve kataloga z <strong>radio.76bit.net</strong>. Ob izbiri postaje
|
||||
pridobiva zvok in slike neposredno s strežnika postaje oziroma ponudnika vsebine. Majhen nespremenljiv
|
||||
seznam HTTP gostiteljev je dovoljen le za zvočne pretoke, ki ne podpirajo HTTPS. RadioPlayer ne izklaplja
|
||||
in ne zaobide preverjanja potrdil TLS.
|
||||
</p>
|
||||
<p>
|
||||
Zunanji strežniki lahko prejmejo tehnične podatke, potrebne za izvedbo zahteve, na primer naslov IP,
|
||||
podatke o napravi ali omrežju, zahtevani URL in čas zahteve. Zanje veljajo njihovi pravilniki o zasebnosti
|
||||
in roki hrambe. RadioPlayer ne nadzira razpoložljivosti ali beleženja pri zunanjih postajah.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Predvajanje v ozadju in obvestila</h2>
|
||||
<p>
|
||||
Med predvajanjem lahko Android prikaže medijsko obvestilo in kontrole MediaSession v obvestilih, na
|
||||
zaklenjenem zaslonu, napravah Bluetooth ali drugih združljivih sistemskih površinah. Na Androidu 13 in
|
||||
novejšem lahko aplikacija zahteva dovoljenje za obvestila. Obvestila se uporabljajo le za predvajanje in
|
||||
funkcije alarma, ne za oglaševanje.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Časovnik spanja in budilni alarm</h2>
|
||||
<p>
|
||||
Časovnik spanja lokalno shrani rok. Če omogočite budilni alarm, RadioPlayer uporabi zmožnost točnega alarma
|
||||
Androida, da se predvajanje lahko začne ob izbranem času. Android lahko zahteva dostop do Alarmov in
|
||||
opomnikov. Po ponovnem zagonu naprave, spremembi časovnega pasu ali ustreznem sistemskem dogodku aplikacija
|
||||
omogočeni alarm samo ponovno razporedi; sam prejem dogodka ob zagonu ne začne predvajanja. Na točnost lahko
|
||||
vplivajo pravila proizvajalca naprave glede varčevanja z baterijo.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Android Auto</h2>
|
||||
<p>
|
||||
Ob povezavi z Android Auto lahko vmesnik vozila brska po lokalnem katalogu, priljubljenih in nedavnih
|
||||
postajah, prikazuje logotipe, išče postaje ter upravlja isto sejo predvajanja kot telefon. RadioPlayer ne
|
||||
ustvari ločenega avtomobilskega računa in povezava sama ne začne predvajanja. Android Auto in Google lahko
|
||||
po svojih pravilih obdelata tehnične podatke, potrebne za povezavo in glasovne funkcije.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Google Cast</h2>
|
||||
<p>
|
||||
Google Cast je neobvezen in se začne le, ko izberete združljiv sprejemnik. Google Cast in Android Media
|
||||
Router odkrivata sprejemnike v lokalnem omrežju. RadioPlayer izbranemu sprejemniku prek privzetega
|
||||
medijskega sprejemnika pošlje javni URL pretoka ter osnovne metapodatke, kot sta ime postaje in URL slike.
|
||||
Google in sprejemnik lahko obdelata tehnične podatke, potrebne za vzpostavitev in izvajanje seje.
|
||||
RadioPlayer ne dodaja ločenega analitičnega računa Cast.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Zvočni vizualizator</h2>
|
||||
<p>
|
||||
Neobvezni 32-pasovni vizualizator analizira zvočne vzorce, ki se znotraj aplikacije že dekodirajo za
|
||||
predvajanje. Analiza se uporablja le za risanje animacije na zaslonu. Ne uporablja mikrofona, ne zahteva
|
||||
dovoljenja <strong>RECORD_AUDIO</strong>, se ne shranjuje kot zvočni posnetek in se ne pošilja razvijalcu.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Naslovnice albumov / skladb</h2>
|
||||
<p>
|
||||
RadioPlayer se <strong>ne</strong> povezuje z nobeno zunanjo storitvijo za naslovnice ali glasbene
|
||||
metapodatke. Naslovnica, prikazana v predvajalniku, medijskem obvestilu, na zaklenjenem zaslonu in v
|
||||
Android Auto, je <strong>logotip oziroma slika, ki jo posreduje radijska postaja</strong> (ali lastni
|
||||
nadomestni znak aplikacije, kadar je postaja ne ponudi). Izvajalec in naslov trenutne skladbe, kadar
|
||||
ju postaja oddaja, sta prikazana le kot besedilo in nista nikamor poslana za iskanje naslovnice.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Česa razvijalec ne zbira</h2>
|
||||
<p>RadioPlayer 2.0.0 ne vključuje:</p>
|
||||
<ul>
|
||||
<li>uporabniških računov ali sinhronizacije priljubljenih in nastavitev v oblaku;</li>
|
||||
<li>oglaševalskih SDK-jev ali profiliranja uporabnikov;</li>
|
||||
<li>analitičnih SDK-jev;</li>
|
||||
<li>prodaje osebnih podatkov;</li>
|
||||
<li>dostopa do lokacije, mikrofona, stikov, fotografij ali datotek;</li>
|
||||
<li>pošiljanja zgodovine poslušanja ali skladb razvijalcu — omejen seznam nedavno predvajanih skladb se hrani samo v napravi.</li>
|
||||
</ul>
|
||||
<p>
|
||||
Ta navedba ne zajema tehničnih podatkov, ki jih Android, Google Play, Android Auto, Google Cast, radijske
|
||||
postaje, gostitelji pretokov ali ponudniki slik samostojno obdelujejo po svojih pravilnikih.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Brisanje podatkov</h2>
|
||||
<p>
|
||||
RadioPlayer nima spletnega računa, ki bi ga bilo treba izbrisati. Lokalno shranjene priljubljene, nedavne
|
||||
postaje, nastavitve, časovnike, alarme in predpomnilnik odstranite v nastavitvah Androida: Aplikacije,
|
||||
RadioPlayer, Shramba, nato izbrišite podatke aplikacije. Odstranitev aplikacije prav tako izbriše njene
|
||||
lokalne podatke, ob upoštevanju nastavitev Android oziroma Google varnostnega kopiranja in obnovitve, ki
|
||||
jih upravljate sami. Dovoljenja za obvestila, alarme in druge dostope lahko kadar koli prekličete v
|
||||
nastavitvah Androida.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Android TV</h2>
|
||||
<p>
|
||||
RadioPlayer 2.0.0 nima ločene nativne aplikacije za namestitev na Android TV. Iz telefonske aplikacije
|
||||
lahko predvajate na združljiv sprejemnik Google TV ali Cast.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Spremembe in stik</h2>
|
||||
<p>
|
||||
Ta pravilnik se lahko posodobi, če se spremenijo delovanje, odvisnosti ali zunanje storitve RadioPlayerja.
|
||||
Datum začetka veljavnosti zgoraj označuje trenutno različico. Za vprašanja o zasebnosti uporabite kontaktne
|
||||
podatke razvijalca, objavljene ob aplikaciji RadioPlayer v trgovini Google Play.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
<script>
|
||||
(() => {
|
||||
const panels = {
|
||||
en: document.getElementById("content-en"),
|
||||
sl: document.getElementById("content-sl")
|
||||
};
|
||||
const buttons = {
|
||||
en: document.getElementById("language-en"),
|
||||
sl: document.getElementById("language-sl")
|
||||
};
|
||||
|
||||
function setLanguage(language) {
|
||||
const selected = language === "sl" ? "sl" : "en";
|
||||
|
||||
Object.keys(panels).forEach((key) => {
|
||||
panels[key].hidden = key !== selected;
|
||||
buttons[key].setAttribute("aria-pressed", String(key === selected));
|
||||
});
|
||||
|
||||
document.documentElement.lang = selected;
|
||||
document.title = selected === "sl"
|
||||
? "Pravilnik o zasebnosti | RadioPlayer"
|
||||
: "Privacy Policy | RadioPlayer";
|
||||
}
|
||||
|
||||
buttons.en.addEventListener("click", () => setLanguage("en"));
|
||||
buttons.sl.addEventListener("click", () => setLanguage("sl"));
|
||||
|
||||
const browserLanguage = (navigator.languages && navigator.languages[0]) || navigator.language || "en";
|
||||
setLanguage(browserLanguage.toLowerCase().startsWith("sl") ? "sl" : "en");
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -5,7 +5,7 @@ set -euo pipefail
|
||||
repoRoot='/mnt/d/Sites/RadioPlayer/web'
|
||||
localDistFolder="$repoRoot/dist/."
|
||||
remoteFolder='/opt/www/virtual/RadioPlayer/'
|
||||
remoteServer='[email protected]'
|
||||
remoteServer='klevze@server4.klevze.si'
|
||||
|
||||
run_build() {
|
||||
if grep -qi microsoft /proc/version 2>/dev/null && command -v powershell.exe >/dev/null 2>&1; then
|
||||
|
||||
Reference in New Issue
Block a user