diff --git a/README.md b/README.md
index 3026f59a..290e6b4e 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,8 @@
***Sfvip All*** wraps ***[Sfvip Player](https://github.com/K4L4Uz/SFVIP-Player/tree/master)*** to add new features:
* Insert an _All_ category when missing so you can easily **search your entire catalog**.
-* Update ***[Mpv](https://mpv.io/)*** and ***[Sfvip Player](https://github.com/K4L4Uz/SFVIP-Player/tree/master)*** so you can enjoy their latest features.
-* Translated in all ***Sfvip Player*** languages.
+* Update ***[Mpv](https://mpv.io/)*** and **Sfvip Player** so you can enjoy their latest features.
+* Translated in all **Sfvip Player** languages.
* Support an **external EPG**[^1].
[^1]: External EPG doesn't work with **local** m3u accounts.
@@ -17,32 +17,33 @@
[]()
* Check the [***changelog***](build/changelog.md) and ***notes***[^2].
-* [***Sfvip Player***](https://github.com/K4L4Uz/SFVIP-Player/tree/master) will be automatically installed if missing.
-* Please use [***SfvipUserProxy***](user_proxy_cmd) to add or remove a proxy for ***all users*** in ***Sfvip Player*** database.
+* **Sfvip Player** will be automatically installed if missing.
+* Please use [***SfvipUserProxy***](user_proxy_cmd) to add or remove a proxy for **all users** in **Sfvip Player** database.
[^2]:_**Sfvip All** will ask for network connection its first run because it relies on local proxies to do its magic._
_On **old systems** you might need to install [**vc redist**](https://learn.microsoft.com/en-GB/cpp/windows/latest-supported-vc-redist) for [**x86**](https://aka.ms/vs/17/release/vc_redist.x86.exe) or [**x64**](https://aka.ms/vs/17/release/vc_redist.x64.exe)._
# Settings
-* Hover your mouse over the ***Sfvip All*** logo:
-
+Hover your mouse over the ***Sfvip All*** logo:
+
-* To open the settings:
-
+To open the settings:
+
-* Logo pulse meaning:
- Color & pulse | Meaning
- :--- | :---
- slow pulse | Everything is fine
- quick pulse | _Sfvip All_ needs your attention
+Logo color & pulse meaning:
+Color & pulse | Meaning
+:--- | :---
+ Green slow pulse | Everything is fine
+ Red quick pulse | _Sfvip All_ needs your attention
# Logs
-The logs go **in pairs** (one for each process: ***main*** & ***mitmproxy***) and they are in the app folder:
+The logs go **in pairs**: one for each process (***main*** & ***mitmproxy***).
+You'll find them in the app folder:
# Build
-[![version](https://custom-icon-badges.demolab.com/badge/Build%201.4.12.40-informational?logo=github)](/build_config.py#L27)
+[![version](https://custom-icon-badges.demolab.com/badge/Build%201.4.12.41-informational?logo=github)](/build_config.py#L27)
[![Sloc](https://custom-icon-badges.demolab.com/badge/Sloc%208.3k-informational?logo=file-code)](https://api.codetabs.com/v1/loc/?github=sebdelsol/sfvip-all)
[![Ruff](https://custom-icon-badges.demolab.com/badge/Ruff-informational?logo=ruff-color)](https://docs.astral.sh/ruff/)
[![Python](https://custom-icon-badges.demolab.com/badge/Python%203.11.8-linen?logo=python-color)](https://www.python.org/downloads/release/python-3118/)
diff --git a/build/changelog.md b/build/changelog.md
index 9889fe11..5fcfcf09 100644
--- a/build/changelog.md
+++ b/build/changelog.md
@@ -1,3 +1,6 @@
+## 1.4.12.41
+* Tooltips added.
+
## 1.4.12.40
* Option to prefer the IPTV provider EPG over external EPG.
* Faster EPG processing and loading that use less memory.
diff --git a/build_config.py b/build_config.py
index 4336f24e..e3226e89 100644
--- a/build_config.py
+++ b/build_config.py
@@ -24,7 +24,7 @@ class Build:
main: ClassVar = "sfvip_all.py"
company: ClassVar = "sebdelsol"
name: ClassVar = "Sfvip All"
- version: ClassVar = "1.4.12.40"
+ version: ClassVar = "1.4.12.41"
dir: ClassVar = "build"
enable_console: ClassVar = False
logs_dir: ClassVar = "../logs"
diff --git a/resources/README_template.md b/resources/README_template.md
index a17d1409..3b1f713c 100644
--- a/resources/README_template.md
+++ b/resources/README_template.md
@@ -2,8 +2,8 @@
***{name}*** wraps ***[Sfvip Player](https://github.com/K4L4Uz/SFVIP-Player/tree/master)*** to add new features:
* Insert an _All_ category when missing so you can easily **search your entire catalog**.
-* Update ***[Mpv](https://mpv.io/)*** and ***[Sfvip Player](https://github.com/K4L4Uz/SFVIP-Player/tree/master)*** so you can enjoy their latest features.
-* Translated in all ***Sfvip Player*** languages.
+* Update ***[Mpv](https://mpv.io/)*** and **Sfvip Player** so you can enjoy their latest features.
+* Translated in all **Sfvip Player** languages.
* Support an **external EPG**[^1].
[^1]: External EPG doesn't work with **local** m3u accounts.
@@ -17,27 +17,28 @@
[]()
* Check the [***changelog***](build/changelog.md) and ***notes***[^2].
-* [***Sfvip Player***](https://github.com/K4L4Uz/SFVIP-Player/tree/master) will be automatically installed if missing.
-* Please use [***SfvipUserProxy***](user_proxy_cmd) to add or remove a proxy for ***all users*** in ***Sfvip Player*** database.
+* **Sfvip Player** will be automatically installed if missing.
+* Please use [***SfvipUserProxy***](user_proxy_cmd) to add or remove a proxy for **all users** in **Sfvip Player** database.
[^2]:_**{name}** will ask for network connection its first run because it relies on local proxies to do its magic._
_On **old systems** you might need to install [**vc redist**](https://learn.microsoft.com/en-GB/cpp/windows/latest-supported-vc-redist) for [**x86**](https://aka.ms/vs/17/release/vc_redist.x86.exe) or [**x64**](https://aka.ms/vs/17/release/vc_redist.x64.exe)._
# Settings
-* Hover your mouse over the ***{name}*** logo:
-
+Hover your mouse over the ***{name}*** logo:
+
-* To open the settings:
-
+To open the settings:
+
-* Logo pulse meaning:
- Color & pulse | Meaning
- :--- | :---
- slow pulse | Everything is fine
- quick pulse | _{name}_ needs your attention
+Logo color & pulse meaning:
+Color & pulse | Meaning
+:--- | :---
+ Green slow pulse | Everything is fine
+ Red quick pulse | _{name}_ needs your attention
# Logs
-The logs go **in pairs** (one for each process: ***main*** & ***mitmproxy***) and they are in the app folder:
+The logs go **in pairs**: one for each process (***main*** & ***mitmproxy***).
+You'll find them in the app folder:
diff --git a/src/mitm/epg/update.py b/src/mitm/epg/update.py
index bb2bd62c..7206ca48 100644
--- a/src/mitm/epg/update.py
+++ b/src/mitm/epg/update.py
@@ -32,7 +32,7 @@
class EPGstatus(Enum):
- LOADING = auto()
+ DOWNLOADING = auto()
LOAD_CACHE = auto()
SAVE_CACHE = auto()
PROCESSING = auto()
@@ -202,7 +202,7 @@ class EPGupdate(NamedTuple):
@contextmanager
@staticmethod
def _load_xml(url: str, epg_process: EPGProcess, timeout: int) -> Iterator[Optional[Path]]:
- epg_process.update_status(EPGProgress(EPGstatus.LOADING))
+ epg_process.update_status(EPGProgress(EPGstatus.DOWNLOADING))
if (xml := Path(url)).is_file(): # for debug purpose
yield xml
return
@@ -218,7 +218,7 @@ def _load_xml(url: str, epg_process: EPGProcess, timeout: int) -> Iterator[Optio
yield None
return
if progress_step and (progress := progress_step.progress(i * EPGupdate._chunk_size)):
- epg_process.update_status(EPGProgress(EPGstatus.LOADING, progress))
+ epg_process.update_status(EPGProgress(EPGstatus.DOWNLOADING, progress))
f.write(chunk)
yield xml
diff --git a/src/sfvip/player/updater.py b/src/sfvip/player/updater.py
index 4e9a0364..c5f730cc 100644
--- a/src/sfvip/player/updater.py
+++ b/src/sfvip/player/updater.py
@@ -59,13 +59,17 @@ def set_version(self, version: Version, text: str) -> None:
self._changelogs = dict(sorted(self._changelogs.items(), reverse=True))
self.save_all()
+ @staticmethod
+ def _sanitize(text: str) -> str:
+ text = re.sub(r"^\s?\-", "", text)
+ return text.replace("...", ".").strip().capitalize()
+
def __str__(self) -> str:
return "\n\n".join(
(
LOC.ChangeLog % "Sfvip Player",
*(
- f"{PlayerChangelogs._prefix}{version}:\n"
- f"{PlayerChangelogs._tab}{text.capitalize().replace('...', '.')}"
+ f"{PlayerChangelogs._prefix}{version}:\n" f"{PlayerChangelogs._tab}- {self._sanitize(text)}"
for i, (version, text) in enumerate(self._changelogs.items())
if i < self._n_logs_showed
),
diff --git a/src/sfvip/ui/infos.py b/src/sfvip/ui/infos.py
index 98bdf18e..28eb87fe 100644
--- a/src/sfvip/ui/infos.py
+++ b/src/sfvip/ui/infos.py
@@ -152,7 +152,7 @@ def _app_version_tooltip(app_info: AppInfo) -> Style:
break
lines.extend(("", f"{prefix}{text}:"))
case "*":
- lines.append(f"{tab}{text}")
+ lines.append(f"{tab}- {text}")
except ValueError:
if line:
lines.append(f"{tab}{line}")
@@ -228,7 +228,7 @@ def _epg_confidence_percent() -> Style:
def _epg_status_styles(progress: str) -> dict[EPGstatus | None, Style]:
return {
- EPGstatus.LOADING: _InfoStyle.app(f"{LOC.Loading}{progress}").white,
+ EPGstatus.DOWNLOADING: _InfoStyle.app(f"{LOC.Downloading}{progress}").white,
EPGstatus.PROCESSING: _InfoStyle.app(f"{LOC.Processing}{progress}").white,
EPGstatus.LOAD_CACHE: _InfoStyle.app(f"{LOC.LoadCache}{progress}").white,
EPGstatus.SAVE_CACHE: _InfoStyle.app(f"{LOC.SaveCache}{progress}").white,
@@ -252,6 +252,14 @@ def _get_epg_prefer_label() -> Style:
return _InfoStyle.app(LOC.EPGPrefer).grey.no_truncate
+def _epg_url_tooltip() -> Style:
+ return _InfoStyle.app(LOC.EPGUrlTip).grey.no_truncate
+
+
+def _epg_libmpv_tooltip() -> Style:
+ return _InfoStyle.app(LOC.LibmpvTip).grey.no_truncate
+
+
def _epg_prefer_tooltip() -> Style:
msg = "".join((f"\n\n • {text}" for text in (LOC.EPGPreferYes, LOC.EPGPreferNo)))
return _InfoStyle.tooltip(f"{LOC.EPGPrefer}:{msg}")
@@ -508,6 +516,8 @@ def __init__(self, app_info: AppInfo) -> None:
set_tooltip(_app_version_tooltip(app_info), app_version)
set_tooltip(_epg_confidence_tooltip(), epg_confidence_label)
set_tooltip(_epg_prefer_tooltip(), epg_prefer_label)
+ set_tooltip(_epg_url_tooltip(), epg_label)
+ set_tooltip(_epg_libmpv_tooltip(), self._libmpv_version)
def get_changelog(self) -> str:
return self._changelog_callback() if self._changelog_callback else ""
@@ -528,7 +538,7 @@ def _callback(_) -> None:
self._epg_url.bind("", _callback)
def set_epg_status(self, epg_status: EPGProgress) -> None:
- self._epg_url.config(state=tk.DISABLED if epg_status.status is EPGstatus.LOADING else tk.NORMAL)
+ self._epg_url.config(state=tk.DISABLED if epg_status.status is EPGstatus.DOWNLOADING else tk.NORMAL)
self._epg_status.config(**_epg_status(epg_status).to_tk)
def set_epg_confidence_update(self, confidence: int, callback: Callable[[int], None]) -> None:
diff --git a/translations/bulgarian.json b/translations/bulgarian.json
index 00b048a2..a6f69bfe 100644
--- a/translations/bulgarian.json
+++ b/translations/bulgarian.json
@@ -34,9 +34,9 @@
"UpgradeFailed": "Обновяването на %s не е успешно. Искате ли да повторите опита ?",
"LoadCache": "Зареждане на кеш",
"SaveCache": "Запазване на кеш",
- "Loading": "Зареждане на",
- "Processing": "Обработка на",
- "Ready": "Готов",
+ "Downloading": "Изтегляне на",
+ "Processing": "Обработка",
+ "Ready": "Готовност",
"Failed": "Неуспешно",
"NoEpg": "Няма EPG",
"EpgUrl": "Външен EPG",
@@ -55,5 +55,7 @@
"Yes": "Да",
"No": "Не",
"EPGPreferYes": "Да: Първо търсите в EPG на IPTV доставчика. Използвайте външния EPG само когато той не успее.",
- "EPGPreferNo": "Не: Търсете първо във външния EPG. Използвайте EPG на доставчика на IPTV само когато той не успее."
+ "EPGPreferNo": "Не: Търсете първо във външния EPG. Използвайте EPG на доставчика на IPTV само когато той не успее.",
+ "EPGUrlTip": "Въведете URL адреса на външния EPG, който трябва да завършва с \"xml\" или \"xml.gz\".",
+ "LibmpvTip": "Libmpv декодира и визуализира аудио и видео. активирайте актуализирането, за да получите последната версия, оптимизирана за вашия компютър."
}
\ No newline at end of file
diff --git a/translations/english.json b/translations/english.json
index dd4799b6..f8f92044 100644
--- a/translations/english.json
+++ b/translations/english.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "%s upgrade failed. Do you want to retry ?",
"LoadCache": "Loading cache",
"SaveCache": "Saving cache",
- "Loading": "Loading",
+ "Downloading": "Downloading",
"Processing": "Processing",
"Ready": "Ready",
"Failed": "Failed",
@@ -55,5 +55,7 @@
"Yes": "Yes",
"No": "No",
"EPGPreferYes": "Yes: Search the IPTV provider EPG first. Use the external EPG only when it fails.",
- "EPGPreferNo": "No: Search the external EPG first. Use the IPTV provider EPG only when it fails."
+ "EPGPreferNo": "No: Search the external EPG first. Use the IPTV provider EPG only when it fails.",
+ "EPGUrlTip": "Enter the URL of the external EPG, it should end up with 'xml' or 'xml.gz'",
+ "LibmpvTip": "Libmpv decodes & renders audio and video.Enable the update to get the last version optimized for your computer."
}
\ No newline at end of file
diff --git a/translations/french.json b/translations/french.json
index f26a32a9..43c2feea 100644
--- a/translations/french.json
+++ b/translations/french.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "La mise à jour de %s a échoué. Voulez-vous réessayer ?",
"LoadCache": "Chargement du cache",
"SaveCache": "Sauvegarde du cache",
- "Loading": "Chargement",
+ "Downloading": "Téléchargement",
"Processing": "Traitement",
"Ready": "Prêt",
"Failed": "Échec",
@@ -55,5 +55,7 @@
"Yes": "Oui",
"No": "Non",
"EPGPreferYes": "Oui : Cherchez d'abord dans l'EPG du fournisseur de télévision par internet. N'utilisez l'EPG externe qu'en cas d'échec.",
- "EPGPreferNo": "Non : rechercher d'abord l'EPG externe. Utiliser l'EPG du fournisseur IPTV uniquement en cas d'échec."
+ "EPGPreferNo": "Non : rechercher d'abord l'EPG externe. Utiliser l'EPG du fournisseur IPTV uniquement en cas d'échec.",
+ "EPGUrlTip": "Entrez l'URL de l'EPG externe, qui devrait se terminer par 'xml' ou 'xml.gz'.",
+ "LibmpvTip": "Libmpv décode et rend l'audio et la vidéo. Activez la mise à jour pour obtenir la dernière version optimisée pour votre ordinateur."
}
\ No newline at end of file
diff --git a/translations/german.json b/translations/german.json
index 6b5fe018..5bf9bb01 100644
--- a/translations/german.json
+++ b/translations/german.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "%s Upgrade fehlgeschlagen. Möchten Sie es erneut versuchen?",
"LoadCache": "Cache laden",
"SaveCache": "Cache speichern",
- "Loading": "Laden von",
+ "Downloading": "Herunterladen von",
"Processing": "Verarbeiten",
"Ready": "Bereit",
"Failed": "Fehlgeschlagen",
@@ -55,5 +55,7 @@
"Yes": "Ja",
"No": "Nein",
"EPGPreferYes": "Ja: Suchen Sie zuerst im EPG des IPTV-Anbieters. Verwenden Sie den externen EPG nur, wenn er nicht funktioniert.",
- "EPGPreferNo": "Nein: Zuerst im externen EPG suchen. Verwenden Sie den EPG des IPTV-Anbieters nur, wenn dieser nicht funktioniert."
+ "EPGPreferNo": "Nein: Zuerst im externen EPG suchen. Verwenden Sie den EPG des IPTV-Anbieters nur, wenn er nicht funktioniert.",
+ "EPGUrlTip": "Geben Sie die URL des externen EPGs ein, sie sollte mit 'xml' oder 'xml.gz' enden.",
+ "LibmpvTip": "Libmpv dekodiert und rendert Audio und Video. Aktivieren Sie das Update, um die letzte für Ihren Computer optimierte Version zu erhalten."
}
\ No newline at end of file
diff --git a/translations/greek.json b/translations/greek.json
index 0ec81ad9..81d9327c 100644
--- a/translations/greek.json
+++ b/translations/greek.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "Η αναβάθμιση %s απέτυχε. Θέλετε να ξαναπροσπαθήσετε;",
"LoadCache": "Φόρτωση προσωρινής μνήμης",
"SaveCache": "Αποθήκευση προσωρινής μνήμης",
- "Loading": "Φόρτωση",
+ "Downloading": "Λήψη",
"Processing": "Επεξεργασία",
"Ready": "Έτοιμο",
"Failed": "Απέτυχε",
@@ -55,5 +55,7 @@
"Yes": "Ναι",
"No": "Όχι",
"EPGPreferYes": "Ναι: Αναζητήστε πρώτα το EPG του παρόχου IPTV. Χρησιμοποιείτε το εξωτερικό EPG μόνο όταν αυτό αποτυγχάνει.",
- "EPGPreferNo": "Όχι: Αναζητήστε πρώτα το εξωτερικό EPG. Χρησιμοποιήστε το EPG του παρόχου IPTV μόνο όταν αυτό αποτύχει."
+ "EPGPreferNo": "Όχι: Αναζητήστε πρώτα το εξωτερικό EPG. Χρησιμοποιήστε το EPG του παρόχου IPTV μόνο όταν αυτό αποτύχει.",
+ "EPGUrlTip": "Εισάγετε τη διεύθυνση URL του εξωτερικού EPG, θα πρέπει να καταλήγει σε 'xml' ή 'xml.gz'.",
+ "LibmpvTip": "Το Libmpv αποκωδικοποιεί & αποδίδει ήχο και βίντεο. ενεργοποιήστε την ενημέρωση για να λάβετε την τελευταία έκδοση βελτιστοποιημένη για τον υπολογιστή σας."
}
\ No newline at end of file
diff --git a/translations/italian.json b/translations/italian.json
index 690c6427..21b6af60 100644
--- a/translations/italian.json
+++ b/translations/italian.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "L'aggiornamento %s non è riuscito. Si desidera riprovare?",
"LoadCache": "Caricamento della cache",
"SaveCache": "Salvataggio della cache",
- "Loading": "Caricamento",
+ "Downloading": "Scaricare",
"Processing": "Elaborazione",
"Ready": "Pronto",
"Failed": "Non riuscita",
@@ -55,5 +55,7 @@
"Yes": "Si",
"No": "No",
"EPGPreferYes": "Sì: cercate prima l'EPG del provider IPTV. Utilizzare l'EPG esterno solo in caso di errore.",
- "EPGPreferNo": "No: Cerca prima l'EPG esterno. Utilizzare l'EPG del provider IPTV solo in caso di errore."
+ "EPGPreferNo": "No: Cerca prima l'EPG esterno. Utilizzare l'EPG del provider IPTV solo in caso di errore.",
+ "EPGUrlTip": "Inserite l'URL dell'EPG esterno, che dovrebbe finire con 'xml' o 'xml.gz'.",
+ "LibmpvTip": "Libmpv decodifica e rende audio e video. Attivare l'aggiornamento per ottenere l'ultima versione ottimizzata per il proprio computer."
}
\ No newline at end of file
diff --git a/translations/loc/texts.py b/translations/loc/texts.py
index a0dbdc28..92151f76 100644
--- a/translations/loc/texts.py
+++ b/translations/loc/texts.py
@@ -42,7 +42,7 @@ class Texts:
UpgradeFailed: str = "%s upgrade failed. Do you want to retry ?"
LoadCache: str = "Loading cache"
SaveCache: str = "Saving cache"
- Loading: str = "Loading"
+ Downloading: str = "Downloading"
Processing: str = "Processing"
Ready: str = "Ready"
Failed: str = "Failed"
@@ -66,6 +66,11 @@ class Texts:
No: str = "No"
EPGPreferYes: str = "Yes: Search the IPTV provider EPG first. Use the external EPG only when it fails."
EPGPreferNo: str = "No: Search the external EPG first. Use the IPTV provider EPG only when it fails."
+ EPGUrlTip: str = "Enter the URL of the external EPG, it should end up with 'xml' or 'xml.gz'"
+ LibmpvTip: str = (
+ "Libmpv decodes & renders audio and video."
+ "Enable the update to get the last version optimized for your computer."
+ )
def as_dict(self) -> dict[str, str]:
return dataclasses.asdict(self)
diff --git a/translations/polish.json b/translations/polish.json
index 301360ff..715ca1c2 100644
--- a/translations/polish.json
+++ b/translations/polish.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "Aktualizacja %s nie powiodła się. Czy chcesz ponowić próbę?",
"LoadCache": "Ładowanie pamięci podręcznej",
"SaveCache": "Zapisywanie pamięci podręcznej",
- "Loading": "Ładowanie",
+ "Downloading": "Pobieranie",
"Processing": "Przetwarzanie",
"Ready": "Gotowe",
"Failed": "Nie powiodło się",
@@ -55,5 +55,7 @@
"Yes": "Tak",
"No": "Nie",
"EPGPreferYes": "Tak: Najpierw należy przeszukać EPG dostawcy IPTV. Używaj zewnętrznego EPG tylko wtedy, gdy zawiedzie.",
- "EPGPreferNo": "Nie: Najpierw należy przeszukać zewnętrzne EPG. Użyj EPG dostawcy IPTV tylko w przypadku niepowodzenia."
+ "EPGPreferNo": "Nie: Najpierw należy przeszukać zewnętrzne EPG. Użyj EPG dostawcy IPTV tylko w przypadku niepowodzenia.",
+ "EPGUrlTip": "Wprowadź adres URL zewnętrznego EPG, powinien on kończyć się na \"xml\" lub \"xml.gz\".",
+ "LibmpvTip": "Libmpv dekoduje i renderuje audio i wideo. Włącz aktualizację, aby uzyskać ostatnią wersję zoptymalizowaną dla twojego komputera."
}
\ No newline at end of file
diff --git a/translations/russian.json b/translations/russian.json
index 1ef0fa80..7b79c217 100644
--- a/translations/russian.json
+++ b/translations/russian.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "Обновление %s не удалось. Вы хотите повторить попытку?",
"LoadCache": "Загрузка кэша",
"SaveCache": "Сохранение кэша",
- "Loading": "Загрузка",
+ "Downloading": "Загрузка",
"Processing": "Обработка",
"Ready": "Готовность",
"Failed": "Не удалось",
@@ -55,5 +55,7 @@
"Yes": "Да",
"No": "Нет",
"EPGPreferYes": "Да: Сначала ищите EPG провайдера IPTV. Используйте внешний EPG только в случае неудачи.",
- "EPGPreferNo": "Нет: Поиск внешнего EPG первым. Используйте EPG провайдера IPTV только в случае неудачи."
+ "EPGPreferNo": "Нет: Поиск внешнего EPG первым. Используйте EPG провайдера IPTV только в случае неудачи.",
+ "EPGUrlTip": "Введите URL-адрес внешнего EPG, в итоге он должен содержать 'xml' или 'xml.gz'.",
+ "LibmpvTip": "Libmpv декодирует и рендерит аудио и видео. Включите обновление, чтобы получить последнюю версию, оптимизированную для вашего компьютера."
}
\ No newline at end of file
diff --git a/translations/serbian.json b/translations/serbian.json
index 7cfe7f38..c1b772aa 100644
--- a/translations/serbian.json
+++ b/translations/serbian.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "%s надоградња није успела. Да ли желите да покушате поново?",
"LoadCache": "Учитавање кеша",
"SaveCache": "Чување кеша",
- "Loading": "Лоадинг",
+ "Downloading": "Преузимање",
"Processing": "Обрада",
"Ready": "Спреман",
"Failed": "Није успео",
@@ -55,5 +55,7 @@
"Yes": "да",
"No": "Не",
"EPGPreferYes": "Да: Прво претражите ЕПГ ИПТВ провајдера. Користите екстерни ЕПГ само када не успе.",
- "EPGPreferNo": "Не: прво претражите екстерни ЕПГ. Користите ЕПГ ИПТВ провајдера само када не успе."
+ "EPGPreferNo": "Не: прво претражите екстерни ЕПГ. Користите ЕПГ ИПТВ провајдера само када не успе.",
+ "EPGUrlTip": "Унесите УРЛ спољног ЕПГ-а, требало би да се заврши са 'кмл' или 'кмл.гз'",
+ "LibmpvTip": "Либмпв декодира и приказује аудио и видео. Омогућите ажурирање да бисте добили последњу верзију оптимизовану за ваш рачунар."
}
\ No newline at end of file
diff --git a/translations/slovenian.json b/translations/slovenian.json
index a01891d5..67120a09 100644
--- a/translations/slovenian.json
+++ b/translations/slovenian.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "Nadgradnja različice %s ni uspela. Ali želite ponoviti poskus ?",
"LoadCache": "Nalaganje predpomnilnika",
"SaveCache": "Shranjevanje predpomnilnika",
- "Loading": "Nalaganje predpomnilnika",
+ "Downloading": "Prenašanje spletne strani",
"Processing": "Obdelava",
"Ready": "Pripravljen",
"Failed": "Neuspešno",
@@ -55,5 +55,7 @@
"Yes": "Da",
"No": "Ne",
"EPGPreferYes": "Da: najprej poiščete EPG ponudnika IPTV. Zunanji program EPG uporabite le, kadar ta ne uspe.",
- "EPGPreferNo": "Ne: Najprej poiščite zunanji EPG. EPG ponudnika IPTV uporabite le, če je neuspešen."
+ "EPGPreferNo": "Ne: Najprej poiščite zunanji EPG. EPG ponudnika IPTV uporabite le, če je neuspešen.",
+ "EPGUrlTip": "Vnesite URL zunanjega EPG, ki se mora končati z 'xml' ali 'xml.gz'.",
+ "LibmpvTip": "Libmpv dekodira in upodablja zvok in video. omogočite posodobitev, da dobite zadnjo različico, optimizirano za vaš računalnik."
}
\ No newline at end of file
diff --git a/translations/spanish.json b/translations/spanish.json
index 9b461843..ba9d7a69 100644
--- a/translations/spanish.json
+++ b/translations/spanish.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "La actualización de %s ha fallado. ¿Desea reintentarlo?",
"LoadCache": "Cargando caché",
"SaveCache": "Guardando caché",
- "Loading": "Cargando",
+ "Downloading": "Descargando",
"Processing": "Procesando",
"Ready": "Listo",
"Failed": "Fallo",
@@ -55,5 +55,7 @@
"Yes": "Sí",
"No": "No",
"EPGPreferYes": "Sí: Busca primero en la EPG del proveedor de IPTV. Utiliza la EPG externa sólo cuando falle.",
- "EPGPreferNo": "No: Buscar primero en la EPG externa. Utiliza la EPG del proveedor de IPTV sólo cuando falla."
+ "EPGPreferNo": "No: Buscar primero en la EPG externa. Utilice la EPG del proveedor de IPTV sólo cuando falle.",
+ "EPGUrlTip": "Introduce la URL de la EPG externa, debería terminar con 'xml' o 'xml.gz'.",
+ "LibmpvTip": "Libmpv decodifica y renderiza audio y video.Activa la actualización para obtener la última versión optimizada para tu ordenador."
}
\ No newline at end of file
diff --git a/translations/turkish.json b/translations/turkish.json
index 69e73c48..0c4a62f0 100644
--- a/translations/turkish.json
+++ b/translations/turkish.json
@@ -34,7 +34,7 @@
"UpgradeFailed": "%s yükseltmesi başarısız oldu. Yeniden denemek ister misiniz?",
"LoadCache": "Önbellek yükleniyor",
"SaveCache": "Önbelleği kaydetme",
- "Loading": "Yükleniyor",
+ "Downloading": "İndirme",
"Processing": "İşleme",
"Ready": "Hazır",
"Failed": "Başarısız",
@@ -55,5 +55,7 @@
"Yes": "Evet",
"No": "Hayır",
"EPGPreferYes": "Evet: Önce IPTV sağlayıcısı EPG'sini arayın. Harici EPG'yi yalnızca başarısız olduğunda kullanın.",
- "EPGPreferNo": "Hayır: Önce harici EPG'yi arayın. IPTV sağlayıcısı EPG'sini yalnızca başarısız olduğunda kullanın."
+ "EPGPreferNo": "Hayır: Önce harici EPG'yi arayın. IPTV sağlayıcısı EPG'sini yalnızca başarısız olduğunda kullanın.",
+ "EPGUrlTip": "Harici EPG'nin URL'sini girin, 'xml' veya 'xml.gz' ile bitmelidir",
+ "LibmpvTip": "Libmpv ses ve videonun kodunu çözer ve işler Bilgisayarınız için optimize edilmiş son sürümü almak için güncellemeyi etkinleştirin."
}
\ No newline at end of file