Compare commits

...

15 Commits

Author SHA1 Message Date
DYefremov
8c58b9395b version update 2022-10-03 16:53:23 +03:00
DYefremov
021b2b08cf added compression option for *.deb (#125) 2022-10-01 18:36:06 +03:00
DYefremov
0d68e43212 version change 2022-09-25 20:04:19 +03:00
DYefremov
751e633a51 send/receive elements dynamic activity 2022-09-25 19:59:17 +03:00
DYefremov
9ff96f2e1d minor logging improvement 2022-09-22 20:09:03 +03:00
DYefremov
3e85fa0149 backup fix 2022-09-20 23:58:32 +03:00
DYefremov
ab5620f9d1 updated tr *.mo file 2022-08-28 07:33:13 +03:00
audi06_19
bceddc199b Turkish translation update (#124) 2022-08-28 07:29:59 +03:00
DYefremov
4f26855ec3 xmltv reading correction 2022-08-25 21:31:16 +03:00
DYefremov
15b8483107 minor improvement to the FTP tab
* Involved send-receive toolbar buttons.
2022-08-24 23:47:31 +03:00
DYefremov
f4dac57d06 improved recordings download 2022-08-24 23:07:18 +03:00
DYefremov
71f7b3a570 improved list font change (#119) 2022-08-24 11:16:04 +03:00
DYefremov
265fb59f0b minor refactoring 2022-08-24 10:48:34 +03:00
DYefremov
5b090672d9 updated it *.mo file 2022-08-21 22:17:14 +03:00
mapi68
aa8f2a8df0 Italian translation improvement (#114)
Fixed errors, and many improvements. Now Italian version of DemonEditor is less verbose!
2022-08-21 22:13:09 +03:00
21 changed files with 305 additions and 206 deletions

View File

@@ -6,16 +6,16 @@ from threading import Thread, Timer
from gi.repository import GLib
_LOG_FILE = "demon-editor.log"
_DATE_FORMAT = "%d-%m-%y %H:%M:%S"
LOG_DATE_FORMAT = "%d-%m-%y %H:%M:%S"
LOGGER_NAME = "main_logger"
LOG_FORMAT = "%(asctime)s %(message)s"
def init_logger():
logging.Logger(LOGGER_NAME)
logging.basicConfig(level=logging.INFO,
format="%(asctime)s %(message)s",
datefmt=_DATE_FORMAT,
format=LOG_FORMAT,
datefmt=LOG_DATE_FORMAT,
handlers=[logging.FileHandler(_LOG_FILE), logging.StreamHandler()])
log("Logging is enabled.", level=logging.INFO)

View File

@@ -113,19 +113,21 @@ class UtfFTP(FTP):
def download_file(self, name, save_path, callback=None):
with open(save_path + name, "wb") as f:
msg = "Downloading file: {}. Status: {}"
try:
resp = str(self.retrbinary("RETR " + name, f.write))
except all_errors as e:
resp = str(e)
msg = msg.format(name, e)
log(msg.rstrip())
else:
msg = msg.format(name, resp)
resp = self.download_binary(name, f)
msg = msg.format(name, resp)
callback(msg) if callback else log(msg.rstrip())
return resp
def download_binary(self, src, fo):
try:
resp = str(self.retrbinary(f"RETR {src}", fo.write))
except all_errors as e:
resp = str(e)
log(f"Error. {e}")
return resp
def download_dir(self, path, save_path, callback=None):
""" Downloads directory from FTP with all contents.

View File

@@ -228,7 +228,7 @@ class XmlTvReader(Reader):
TIME_FORMAT_STR = "%Y%m%d%H%M%S %z"
Service = namedtuple("Service", ["id", "name", "logo", "events"])
Service = namedtuple("Service", ["id", "names", "logo", "events"])
Event = namedtuple("EpgEvent", ["start", "duration", "title", "desc"])
def __init__(self, path, url):
@@ -297,14 +297,15 @@ class XmlTvReader(Reader):
utc = dt.timestamp()
offset = datetime.now() - dt
for srv in filter(lambda s: s.name in names, self._ids.values()):
for srv in filter(lambda s: any(name in names for name in s.names), self._ids.values()):
ev = list(filter(lambda s: s.start < utc, srv.events))
if ev:
ev = ev[-1]
start = datetime.fromtimestamp(ev.start) + offset
end_time = datetime.fromtimestamp(ev.duration) + offset
tm = f"{start.strftime('%H:%M')} - {end_time.strftime('%H:%M')}"
events[srv.name] = EpgEvent(srv.name, ev.title, tm, ev.desc, ev)
for n in srv.names:
events[n] = EpgEvent(n, ev.title, tm, ev.desc, ev)
return events
@@ -324,13 +325,9 @@ class XmlTvReader(Reader):
event, element = node
if element.tag == self.CH_TAG:
ch_id = element.get("id", None)
name, logo = None, None
for c in element:
if c.tag == self.DSP_NAME_TAG:
name = c.text
elif c.tag == self.ICON_TAG:
logo = c.get("src", None)
self._ids[ch_id] = self.Service(ch_id, name, logo, [])
logo = None # Currently not in use.
# Since a service can have several names, we will store a set of names in the "names" field!
self._ids[ch_id] = self.Service(ch_id, {c.text for c in element if c.tag == self.DSP_NAME_TAG}, logo, [])
elif element.tag == self.PR_TAG:
channel = self._ids.get(element.get(self.CH_TAG, None), None)
if channel:

View File

@@ -32,7 +32,7 @@ from datetime import datetime
from gi.repository import Gdk, Gtk, GObject
from app.commons import run_task, log, _DATE_FORMAT, run_with_delay
from app.commons import run_task, log, LOG_DATE_FORMAT, run_with_delay
from app.settings import IS_DARWIN, IS_LINUX, IS_WIN
@@ -528,7 +528,7 @@ class Recorder:
path = self._settings.records_path
os.makedirs(os.path.dirname(path), exist_ok=True)
d_now = datetime.now().strftime(_DATE_FORMAT)
d_now = datetime.now().strftime(LOG_DATE_FORMAT)
d_now = d_now.replace(" ", "_").replace(":", "-") if IS_WIN else d_now.replace(" ", "_")
path = f"{path}{name.replace(' ', '_')}_{d_now}"
cmd = self.get_transcoding_cmd(path) if self._settings.activate_transcoding else self._CMD.format(path)

View File

@@ -250,7 +250,7 @@ def backup_data(path, backup_path, move=True):
src, dst = os.path.join(path, file), backup_path + file
shutil.move(src, dst) if move else shutil.copy(src, dst)
# Compressing to zip and delete remaining files.
zip_file = shutil.make_archive(backup_path, "zip", backup_path)
zip_file = shutil.make_archive(backup_path.rstrip(SEP), "zip", backup_path)
shutil.rmtree(backup_path)
return zip_file

View File

@@ -40,7 +40,7 @@ Author: Dmitriy Yefremov
<property name="icon_name">system-help</property>
<property name="type_hint">normal</property>
<property name="program_name">DemonEditor</property>
<property name="version">3.0.0 Alpha</property>
<property name="version">3.0.0 Beta</property>
<property name="copyright">2018-2022 Dmitriy Yefremov
</property>
<property name="comments" translatable="yes">Enigma2 channel and satellite list editor.</property>

View File

@@ -45,13 +45,14 @@ from app.connections import UtfFTP
from app.settings import IS_LINUX, IS_DARWIN, IS_WIN, SEP
from app.ui.dialogs import show_dialog, DialogType, get_builder, get_message
from app.ui.main_helper import on_popup_menu
from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, KeyboardKey, MOD_MASK, IS_GNOME_SESSION
from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, KeyboardKey, MOD_MASK, IS_GNOME_SESSION, Page
File = namedtuple("File", ["icon", "name", "size", "date", "attr", "extra"])
class BaseDialog(Gtk.Dialog):
""" Base class for additional FTP dialogs. """
def __init__(self, title, use_header_bar=0, *args, **kwargs):
super().__init__(title=title, use_header_bar=use_header_bar, *args, **kwargs)
@@ -231,6 +232,8 @@ class FtpClientBox(Gtk.HBox):
self.set_orientation(Gtk.Orientation.VERTICAL)
self._app = app
self._app.connect("data-receive", self.on_receive)
self._app.connect("data-send", self.on_send)
self._settings = settings
self._ftp = None
self._select_enabled = True
@@ -305,6 +308,14 @@ class FtpClientBox(Gtk.HBox):
self.init_file_data()
self.show()
def on_receive(self, app, page):
if page is Page.FTP:
self.on_ftp_copy()
def on_send(self, app, page):
if page is Page.FTP:
self.on_file_copy()
@run_task
def init_ftp(self):
self.init_bookmarks()

View File

@@ -30,7 +30,7 @@ import logging
from gi.repository import GLib
from app.commons import LOGGER_NAME
from app.commons import LOGGER_NAME, LOG_FORMAT, LOG_DATE_FORMAT
from app.ui.dialogs import get_builder
from app.ui.main_helper import append_text_to_tview
from app.ui.uicommons import Gtk, UI_RESOURCES_PATH
@@ -43,9 +43,10 @@ class LogsClient(Gtk.Box):
def __init__(self, view):
logging.Handler.__init__(self)
self._view = view
self.setFormatter(logging.Formatter(fmt=LOG_FORMAT, datefmt=LOG_DATE_FORMAT))
def handle(self, rec):
GLib.idle_add(append_text_to_tview, f"{rec.msg}\n", self._view)
def handle(self, rec: logging.LogRecord):
GLib.idle_add(append_text_to_tview, f"{self.format(rec)}\n", self._view)
def __init__(self, app, *args, **kwargs):
super().__init__(*args, **kwargs)
@@ -67,3 +68,7 @@ class LogsClient(Gtk.Box):
def on_close(self, button):
self._app.change_action_state("on_logs_show", GLib.Variant.new_boolean(False))
if __name__ == "__main__":
pass

View File

@@ -1633,7 +1633,7 @@ Author: Dmitriy Yefremov
<object class="GtkLabel" id="app_ver_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">3.0.0 Alpha</property>
<property name="label">3.0.0 Beta</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>

View File

@@ -222,6 +222,8 @@ class Application(Gtk.Application):
self._settings = Settings.get_instance()
self._s_type = self._settings.setting_type
self._is_enigma = self._s_type is SettingsType.ENIGMA_2
self._is_send_data_enabled = True
self._is_receive_data_enabled = True
# Used for copy/paste. When adding the previous data will not be deleted.
# Clearing only after the insertion!
self._rows_buffer = []
@@ -272,7 +274,7 @@ class Application(Gtk.Application):
# Current page.
self._page = Page.INFO
self._fav_pages = {Page.SERVICES, Page.PICONS, Page.EPG, Page.TIMERS}
self._download_pages = {Page.INFO, Page.SERVICES, Page.SATELLITE, Page.PICONS, Page.RECORDINGS}
self._no_download_pages = {Page.TIMERS, Page.CONTROL}
# Signals.
GObject.signal_new("profile-changed", self, GObject.SIGNAL_RUN_LAST,
GObject.TYPE_PYOBJECT, (GObject.TYPE_PYOBJECT,))
@@ -323,6 +325,8 @@ class Application(Gtk.Application):
GObject.signal_new("task-cancel", self, GObject.SIGNAL_RUN_LAST,
GObject.TYPE_PYOBJECT, (GObject.TYPE_PYOBJECT,))
GObject.signal_new("task-canceled", self, GObject.SIGNAL_RUN_LAST,
GObject.TYPE_PYOBJECT, (GObject.TYPE_PYOBJECT,)),
GObject.signal_new("list-font-changed", self, GObject.SIGNAL_RUN_LAST,
GObject.TYPE_PYOBJECT, (GObject.TYPE_PYOBJECT,))
builder = get_builder(UI_RESOURCES_PATH + "main.glade", handlers)
@@ -487,6 +491,8 @@ class Application(Gtk.Application):
self.connect("add-background-task", self.on_bg_task_add)
self.connect("task-done", self.on_task_done)
self.connect("task-cancel", self.on_task_cancel)
# Font.
self.connect("list-font-changed", self.on_list_font_changed)
# Header bar.
profile_box = builder.get_object("profile_combo_box")
toolbar_box = builder.get_object("toolbar_main_box")
@@ -597,6 +603,11 @@ class Application(Gtk.Application):
self.on_epg_list_configuration, self.on_iptv_list_configuration, self.on_remove_all_unavailable):
iptv_elem.bind_property("sensitive", self.set_action(h.__name__, h, False), "enabled")
def do_activate(self):
self._main_window.set_application(self)
self._main_window.set_wmclass("DemonEditor", "DemonEditor")
self._main_window.present()
self.init_actions()
self.set_accels()
self.init_layout()
@@ -609,6 +620,45 @@ class Application(Gtk.Application):
gen = self.init_http_api()
GLib.idle_add(lambda: next(gen, False), priority=GLib.PRIORITY_LOW)
def do_shutdown(self):
""" Performs shutdown tasks """
if self._settings.load_last_config:
self._settings.add("last_config", {"last_profile": self._settings.current_profile,
"last_bouquet": self._current_bq_name})
self._settings.save() # storing current settings
if self._http_api:
self._http_api.close()
Gtk.Application.do_shutdown(self)
def do_command_line(self, command_line):
""" Processing command line parameters. """
options = command_line.get_options_dict()
options = options.end().unpack()
if "log" in options:
init_logger()
if "record" in options:
log("Starting record of current stream...")
log("Not implemented yet!")
if "debug" in options:
d_op = options.get("debug", "off")
if d_op == "on":
self._settings.debug_mode = True
elif d_op == "off":
self._settings.debug_mode = False
else:
log("No valid [on, off] arguments for -d found!")
return 1
log(f"Debug mode is {d_op}.")
self._settings.save()
self.activate()
return 0
def init_actions(self):
self.set_action("on_import_bouquet", self.on_import_bouquet)
self.set_action("on_import_bouquets", self.on_import_bouquets)
@@ -635,8 +685,10 @@ class Application(Gtk.Application):
self.set_action("upload_bouquets", lambda a, v: self.on_upload_data(DownloadType.BOUQUETS))
self.set_action("on_data_save", lambda a, v: self.emit("data-save", self._page))
self.set_action("on_data_save_as", lambda a, v: self.emit("data-save-as", self._page))
self.set_action("on_receive", self.on_receive)
self.set_action("on_send", self.on_send)
sa = self.set_action("on_receive", self.on_receive)
self.bind_property("is-receive-data-enabled", sa, "enabled")
sa = self.set_action("on_send", self.on_send)
self.bind_property("is-send-data-enabled", sa, "enabled")
self.set_action("on_data_open", self.on_data_open)
self.set_action("on_archive_open", self.on_archive_open)
# Edit.
@@ -667,7 +719,7 @@ class Application(Gtk.Application):
# Display EPG.
sa = self.set_state_action("display_epg", self.set_display_epg, self._settings.display_epg)
self.change_action_state("display_epg", GLib.Variant.new_boolean(self._settings.display_epg))
self.bind_property("is_enigma", sa, "enabled")
self.bind_property("is-enigma", sa, "enabled")
# Alternate layout.
sa = self.set_state_action("set_alternate_layout", self.set_use_alt_layout, self._settings.alternate_layout)
sa.connect("change-state", self.on_layout_change)
@@ -713,50 +765,6 @@ class Application(Gtk.Application):
self.set_accels_for_action("app.on_logs_show", ["<shift><primary>l"])
self.set_accels_for_action("win.filter", ["<shift><primary>f"])
def do_activate(self):
self._main_window.set_application(self)
self._main_window.set_wmclass("DemonEditor", "DemonEditor")
self._main_window.present()
def do_shutdown(self):
""" Performs shutdown tasks """
if self._settings.load_last_config:
self._settings.add("last_config", {"last_profile": self._settings.current_profile,
"last_bouquet": self._current_bq_name})
self._settings.save() # storing current settings
if self._http_api:
self._http_api.close()
Gtk.Application.do_shutdown(self)
def do_command_line(self, command_line):
""" Processing command line parameters. """
options = command_line.get_options_dict()
options = options.end().unpack()
if "log" in options:
init_logger()
if "record" in options:
log("Starting record of current stream...")
log("Not implemented yet!")
if "debug" in options:
d_op = options.get("debug", "off")
if d_op == "on":
self._settings.debug_mode = True
elif d_op == "off":
self._settings.debug_mode = False
else:
log("No valid [on, off] arguments for -d found!")
return 1
log(f"Debug mode is {d_op}.")
self._settings.save()
self.activate()
return 0
def init_profiles(self):
self.update_profiles()
if self._settings.load_last_config:
@@ -823,11 +831,8 @@ class Application(Gtk.Application):
If update=False - first call on program start, else - after options changes!
"""
if self._current_font != self._settings.list_font:
from gi.repository import Pango
font_desc = Pango.FontDescription.from_string(self._settings.list_font)
list(map(lambda v: v.modify_font(font_desc), (self._services_view, self._fav_view, self._bouquets_view)))
self._current_font = self._settings.list_font
self.emit("list-font-changed", self._current_font)
if self._picons_size != self._settings.list_picon_size:
self._picons_size = self._settings.list_picon_size
@@ -924,6 +929,13 @@ class Application(Gtk.Application):
self._EXTRA_COLOR = extra_color
yield True
def on_list_font_changed(self, app, font):
""" Modifies the font of the main views when changed in the settings. """
from gi.repository import Pango
font_desc = Pango.FontDescription.from_string(font)
views = (self._services_view, self._iptv_services_view, self._fav_view, self._bouquets_view)
list(map(lambda v: v.modify_font(font_desc), views))
@staticmethod
def force_ctrl(view, event):
""" Function for force ctrl press event for view """
@@ -1026,6 +1038,8 @@ class Application(Gtk.Application):
self._page = Page(stack.get_visible_child_name())
self._fav_paned.set_visible(self._page in self._fav_pages)
self._save_tool_button.set_visible(self._page in (Page.SERVICES, Page.SATELLITE))
self.is_send_data_enabled = self._page not in (Page.EPG, Page.TIMERS, Page.RECORDINGS, Page.CONTROL)
self.is_receive_data_enabled = self._page not in (Page.EPG, Page.TIMERS, Page.CONTROL)
self.emit("page-changed", self._page)
def on_iptv_toggled(self, button):
@@ -1959,14 +1973,14 @@ class Application(Gtk.Application):
# ***************** Send/Receive data ********************* #
def on_receive(self, action=None, value=None):
if self._page in self._download_pages:
if self._page not in self._no_download_pages:
self.change_action_state("on_logs_show", GLib.Variant.new_boolean(True))
self.emit("data-receive", self._page)
else:
self.show_error_message("Not allowed in this context!")
def on_send(self, action=None, value=None):
if self._page in self._download_pages:
if self._page not in self._no_download_pages:
self.change_action_state("on_logs_show", GLib.Variant.new_boolean(True))
self.emit("data-send", self._page)
else:
@@ -4315,6 +4329,22 @@ class Application(Gtk.Application):
def is_enigma(self, value):
self._is_enigma = value
@GObject.Property(type=bool, default=True)
def is_send_data_enabled(self):
return self._is_send_data_enabled
@is_send_data_enabled.setter
def is_send_data_enabled(self, value):
self._is_send_data_enabled = value
@GObject.Property(type=bool, default=True)
def is_receive_data_enabled(self):
return self._is_receive_data_enabled
@is_receive_data_enabled.setter
def is_receive_data_enabled(self, value):
self._is_receive_data_enabled = value
@property
def page(self):
return self._page

View File

@@ -31,7 +31,6 @@ import os
from datetime import datetime
from ftplib import all_errors
from io import BytesIO, TextIOWrapper
from pathlib import Path
from urllib.parse import quote
from app.ui.tasks import BGTaskWidget
@@ -123,13 +122,17 @@ class RecordingsTool(Gtk.Box):
if response in (Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT):
return
files = (Path(model[p][-1].get("e2filename", "")).name for p in paths)
files = (model[p][5] for p in paths)
bgw = BGTaskWidget(self._app, "Downloading recordings...", self.download_recordings, files, response)
self._app.emit("add-background-task", bgw)
def download_recordings(self, files, dst):
for f in files:
self._ftp.download_file(f, dst)
for file in files:
try:
with open(os.path.join(dst, os.path.basename(file)), "wb") as f:
log(f"Downloading recording: {file}. Status: {self._ftp.download_binary(file, f)}".rstrip())
except OSError as e:
log(str(e))
@run_task
def init(self, app=None, arg=None):

View File

@@ -43,7 +43,7 @@ class BGTaskWidget(Gtk.Box):
self._spinner = Gtk.Spinner(active=True)
self.pack_start(self._spinner, False, False, 0)
close_button = Gtk.Button.new_from_icon_name("gtk-close", Gtk.IconSize.MENU)
close_button = Gtk.Button.new_from_icon_name("window-close", Gtk.IconSize.MENU)
close_button.set_relief(Gtk.ReliefStyle.NONE)
close_button.set_valign(Gtk.Align.CENTER)
close_button.set_tooltip_text(get_message("Cancel"))

View File

@@ -1,5 +1,5 @@
#!/bin/bash
VER="3.0.0_Alpha"
VER="3.0.0_Beta"
B_PATH="dist/DemonEditor"
DEB_PATH="$B_PATH/usr/share/demoneditor"
@@ -8,11 +8,7 @@ cp -TRv deb $B_PATH
rsync --exclude=app/ui/lang --exclude=app/ui/icons --exclude=__pycache__ -arv ../../app $DEB_PATH
cd dist
fakeroot dpkg-deb --build DemonEditor
fakeroot dpkg-deb -Zxz --build DemonEditor
mv DemonEditor.deb DemonEditor_$VER.deb
rm -R DemonEditor

View File

@@ -1,5 +1,5 @@
Package: demon-editor
Version: 3.0.0-Alpha
Version: 3.0.0-Beta
Section: utils
Priority: optional
Architecture: all

View File

@@ -80,7 +80,7 @@ app = BUNDLE(coll,
'CFBundleGetInfoString': "Enigma2 channel and satellite editor",
'LSApplicationCategoryType': 'public.app-category.utilities',
'LSMinimumSystemVersion': '10.13',
'CFBundleShortVersionString': f"3.0.0.{BUILD_DATE} Alpha",
'CFBundleShortVersionString': f"3.0.0.{BUILD_DATE} Beta",
'NSHumanReadableCopyright': u"Copyright © 2022, Dmitriy Yefremov",
'NSRequiresAquaSystemAppearance': 'false',
'NSHighResolutionCapable': 'true'

View File

@@ -11,7 +11,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
msgid "translator-credits"
msgstr "Massimo Pissarello\nNicola Fanghella"
msgstr "Massimo Pissarello"
# Main
msgid "Service"
@@ -57,7 +57,7 @@ msgid "Bouquet details"
msgstr "Dettagli bouquet"
msgid "Bouquets"
msgstr "Bouquets"
msgstr "Bouquet"
msgid "Copy"
msgstr "Copia"
@@ -72,7 +72,7 @@ msgid "Edit"
msgstr "Modifica"
msgid "Edit mаrker text"
msgstr "Modifica etichetta"
msgstr "Modifica testo marcatore"
msgid "FTP-transfer"
msgstr "Trasferimento FTP"
@@ -84,7 +84,7 @@ msgid "Hide"
msgstr "Nascondi"
msgid "Hide/Skip On/Off Ctrl + H"
msgstr "Nascondi/Salta On/Off Ctrl + H"
msgstr "Nascondi/Salta On/Off Ctrl + H"
msgid "Add IPTV or stream service"
msgstr "Aggiungi IPTV o servizio stream"
@@ -102,10 +102,10 @@ msgid "Rename for this bouquet"
msgstr "Rinomina questo bouquet"
msgid "Set default name"
msgstr "Imposta il nome predefinito"
msgstr "Imposta nome predefinito"
msgid "Insert marker"
msgstr "Inserisci etichetta"
msgstr "Inserisci marcatore"
msgid "Insert space"
msgstr "Inserisci spazio"
@@ -153,10 +153,10 @@ msgid "Parent lock On/Off Ctrl + L"
msgstr "Blocco Genitori On/Off Ctrl + L"
msgid "Picons"
msgstr "Picons"
msgstr "Picon"
msgid "Picons downloader"
msgstr "Scarica picons"
msgstr "Scarica picon"
msgid "Satellites downloader"
msgstr "Scarica satelliti"
@@ -168,7 +168,7 @@ msgid "Remove all unavailable"
msgstr "Rimuovi tutti quelli non disponibili"
msgid "Satellites editor"
msgstr "Editor dei satelliti"
msgstr "Editor satelliti"
msgid "Save"
msgstr "Salva"
@@ -201,7 +201,7 @@ msgid "Are you sure?"
msgstr "Sei sicuro?"
msgid "Current data path:"
msgstr "Percorso attuale per i dati:"
msgstr "Percorso dati corrente:"
msgid "Data:"
msgstr "Dati:"
@@ -213,7 +213,7 @@ msgid "Host:"
msgstr "Host:"
msgid "Loading data..."
msgstr "Sto caricando i dati..."
msgstr "Caricamento dati..."
msgid "Receive"
msgstr "Scarica"
@@ -225,10 +225,10 @@ msgid "Receiver IP:"
msgstr "IP/Host del ricevitore:"
msgid "Remove unused bouquets"
msgstr "Elimina i bouquets non utilizzati"
msgstr "Elimina bouquet non utilizzati"
msgid "Reset profile"
msgstr "Resetta il profilo"
msgstr "Reimposta profilo"
msgid "Satellites"
msgstr "Satelliti"
@@ -246,10 +246,10 @@ msgid "Send"
msgstr "Invia"
msgid "Send files to receiver"
msgstr "Invia i files al ricevitore"
msgstr "Invia i file al ricevitore"
msgid "Services and Bouquets files:"
msgstr "Files dei servizi e dei bouquets:"
msgstr "File servizi e bouquet:"
msgid "User bouquet files:"
msgstr "File bouquet utente:"
@@ -281,7 +281,7 @@ msgid "Next stream in the list"
msgstr "Stream successivo della lista"
msgid "Toggle in fullscreen"
msgstr "Commuta a schermo intero"
msgstr "Attiva schermo intero"
msgid "Close"
msgstr "Chiudi"
@@ -294,22 +294,22 @@ msgid "Providers"
msgstr "Provider"
msgid "Receive picons"
msgstr "Scarica picons"
msgstr "Scarica picon"
msgid "Picons name format:"
msgstr "Formato del nome:"
msgstr "Formato nome picon:"
msgid "Resize:"
msgstr "Ridimensiona:"
msgid "Current picons path:"
msgstr "Percorso attuale picons:"
msgstr "Percorso attuale picon:"
msgid "Receiver picons path:"
msgstr "Percorso di ricezione picons:"
msgstr "Percorso picon sul ricevitore:"
msgid "Picons download tool"
msgstr "Strumento per scaricare picons"
msgstr "Strumento per scaricare picon"
msgid "Transfer to receiver"
msgstr "Trasferisci al ricevitore"
@@ -327,22 +327,22 @@ msgid "Path to save:"
msgstr "Percorso salvataggio:"
msgid "Path to Enigma2 picons:"
msgstr "Persorso picons su Enigma2:"
msgstr "Persorso picon su Enigma2:"
msgid "Specify the correct position value for the provider!"
msgstr "Specifica il valore della posizione per il provider!"
msgstr "Specifica ia posizione corretta del provider!"
msgid "Converter between name formats"
msgstr "Convertitore per il formato dei nomi"
msgstr "Convertitore tra formati di nome"
msgid "Receive picons for providers"
msgstr "Scarica picons per providers"
msgstr "Scarica picon per providers"
msgid "Load satellite providers."
msgstr "Carica i providers satellitari"
msgstr "Carica providers satellitari"
msgid "To automatically set the identifiers for picons,\nfirst load the required services list into the main application window."
msgstr "Per impostare automaticamente gli identificatori dei picons,\ncarica prima la lista dei servizi nella finestra principale."
msgstr "Per impostare automaticamente gli identificatori dei picon,\ncarica prima la lista dei servizi nella finestra principale."
# Satellites editor
msgid "Satellites edit tool"
@@ -427,7 +427,7 @@ msgstr "Cerca"
# IPTV dialog
msgid "Stream data"
msgstr "Dati dello stream"
msgstr "Dati stream"
# IPTV list configuration dialog
msgid "Starting values"
@@ -437,7 +437,7 @@ msgid "Reset to default"
msgstr "Torna alle impostazioni predefinite"
msgid "IPTV streams list configuration"
msgstr "Lista di configurazione degli streams IPTV"
msgstr "Lista configurazione streams IPTV"
#Settings dialog
msgid "Preferences"
@@ -462,7 +462,7 @@ msgid "Password:"
msgstr "Password:"
msgid "Picons:"
msgstr "Picons:"
msgstr "Picon:"
msgid "Port:"
msgstr "Porta:"
@@ -471,20 +471,20 @@ msgid "Data path:"
msgstr "Percorso dati:"
msgid "Picons path:"
msgstr "Percorso picons:"
msgstr "Percorso picon:"
msgid "Network settings:"
msgstr "Impostazioni rete:"
msgid "STB file paths:"
msgstr "Percorso dei files sul ricevitore:"
msgstr "Percorso file sul ricevitore:"
msgid "Local file paths:"
msgstr "Percorso files locali:"
msgstr "Percorso file locali:"
# Dialogs messages
msgid "Error. No bouquet is selected!"
msgstr "Errore. Nessun bouquet selezionato!"
msgstr "Errore. nessun bouquet selezionato!"
msgid "This item is not allowed to be removed!"
msgstr "Questo elemento non può essere rimosso!"
@@ -496,10 +496,10 @@ msgid "Not allowed in this context!"
msgstr "Non è permesso in questo contesto!"
msgid "Please, download files from receiver or setup your path for read data!"
msgstr "Per favore, scarica i files dal ricevitore o seleziona il percorso dei dati!"
msgstr "Per favore, scarica i file dal ricevitore o seleziona il percorso dei dati!"
msgid "Reading data error!"
msgstr "Errore nella lettura dei dati!"
msgstr "Errore lettura dati!"
msgid "No m3u file is selected!"
msgstr "Nessun file m3u selezionato!"
@@ -508,13 +508,13 @@ msgid "Not implemented yet!"
msgstr "Funzionalità non ancora sviluppata!"
msgid "The text of marker is empty, please try again!"
msgstr "Il testo dell'etichetta é vuoto, riprova di nuovo!"
msgstr "Il testo del marcatore é vuoto, riprova di nuovo!"
msgid "Please, select only one item!"
msgstr "Seleziona un solo elemento!"
msgid "No png file is selected!"
msgstr "Non é stato selezionato alcun file PNG!"
msgstr "Nessun file png selezionato!"
msgid "No profile selected!"
msgstr "Nessun profilo selezionato!"
@@ -532,13 +532,13 @@ msgid "Done!"
msgstr "Fatto!"
msgid "Please, wait..."
msgstr "Attendere prego!..."
msgstr "Attendere prego..."
msgid "Resizing..."
msgstr "Sto ridimensionando..."
msgstr "Ridimensionamento..."
msgid "Select paths!"
msgstr "Seleziona i persorsi!"
msgstr "Seleziona persorsi!"
msgid "No satellite is selected!"
msgstr "Nessun satellite selezionato!"
@@ -550,7 +550,7 @@ msgid "Please check your parameters and try again."
msgstr "Per favore, controlla i parametri e riprova di nuovo!"
msgid "No satellites.xml file is selected!"
msgstr "Non é stato selezionato alcun file satellites.xml!"
msgstr "Nessun file satellites.xml è selezionato!"
msgid "Error. Verify the data!"
msgstr "Errore. Verifica i dati!"
@@ -563,19 +563,19 @@ msgstr "VLC non trovato! Controlla che sia installato!"
# Search unavailable streams dialog
msgid "Please wait, streams testing in progress..."
msgstr "Attendere prego, test degli streams in corso..."
msgstr "Attendere prego, test degli stream in corso..."
msgid "Found"
msgstr "Trovato"
msgid "unavailable streams."
msgstr "streams non disponibili."
msgstr "stream non disponibili."
msgid "No changes required!"
msgstr "Non sono richiesti cambiamenti!"
msgid "This list does not contains IPTV streams!"
msgstr "La lista non contiene streams IPTV!"
msgstr "La lista non contiene stream IPTV!"
msgid "New empty configuration"
msgstr "Nuova configurazione vuota"
@@ -605,7 +605,7 @@ msgid "Backup path:"
msgstr "Percorso copia di sicurezza:"
msgid "Restore bouquets"
msgstr "Ripristina i bouquets"
msgstr "Ripristina bouquet"
msgid "Restore all"
msgstr "Ripristina tutto"
@@ -617,7 +617,7 @@ msgid "Before downloading from the receiver"
msgstr "Prima di scaricare dal ricevitore"
msgid "Set background color for the services"
msgstr "Imposta i colori di sfondo per i servizi"
msgstr "Imposta colori di sfondo per i servizi"
msgid "Marked as new:"
msgstr "Contrassegnato come nuovo:"
@@ -645,7 +645,7 @@ msgid "Bouquet"
msgstr "Bouquet"
msgid "Bouquets and services"
msgstr "Bouquets e servizi"
msgstr "Bouquet e servizi"
msgid "The main list does not contain services for this bouquet!"
msgstr "La lista principale non contiene servizi per questo bouquet!"
@@ -654,7 +654,7 @@ msgid "No bouquet file is selected!"
msgstr "Non è stato selezionato alcun file contenente bouquet"
msgid "Remove all unused"
msgstr "Elimina tutti quelli non usati"
msgstr "Rimuovi tutti quelli non usati"
msgid "Test"
msgstr "Test"
@@ -663,7 +663,7 @@ msgid "Test connection"
msgstr "Test connessione"
msgid "Double click on the service in the bouquet list:"
msgstr "Doppio click sul servizio nella lista dei bouquets:"
msgstr "Doppio click sul servizio nella lista bouquet:"
msgid "Zap"
msgstr "Zap"
@@ -681,7 +681,7 @@ msgid "Enable HTTP API"
msgstr "Abilita le API HTTP"
msgid "Switch(zap) the channel(Ctrl + Z)"
msgstr "Cambia sul canale (Ctrl + Z)"
msgstr "Cambia canale (Ctrl + Z)"
msgid "Switch the channel and watch in the program(Ctrl + W)"
msgstr "Cambia canale e guarda il programma (Ctrl + W)."
@@ -705,7 +705,7 @@ msgid "Service names source:"
msgstr "Sorgente nomi dei servizi:"
msgid "Main service list"
msgstr "Lista dei servizi principali:"
msgstr "Lista servizi principali:"
msgid "XML file"
msgstr "File XML"
@@ -723,7 +723,7 @@ msgid "Filter by presence in the epg.dat file."
msgstr "Filtra in base alla presenza su epg.dat."
msgid "Paths to the epg.dat file:"
msgstr "Percorso dek file epg.dat:"
msgstr "Percorso file epg.dat:"
msgid "Local path:"
msgstr "Percorso locale:"
@@ -738,22 +738,22 @@ msgid "Auto configuration by service names."
msgstr "Configurazione automatica in base ai nomi dei servizi."
msgid "Save list to xml."
msgstr "Salva la lista in XML"
msgstr "Salva lista in XML"
msgid "Download XML file error."
msgstr "Scarica il file XML degli errori."
msgstr "Scarica file XML degli errori."
msgid "Unsupported file type:"
msgstr "Tipo di file non supportato:"
msgid "Unpacking data error."
msgstr "Errore di decompressione dei dati."
msgstr "Errore decompressione dati."
msgid "XML parsing error:"
msgstr "Errore di analisi XML:"
msgstr "Errore analisi XML:"
msgid "Count of successfully configured services:"
msgstr "Conteggio dei servizi configurato correttamente:"
msgstr "Conteggio servizi configurato correttamente:"
msgid "Current epg.dat file does not contains references for the services of this bouquet!"
msgstr "Il file epg.dat non contiene riferimenti per i servizi di questo bouquet!"
@@ -780,7 +780,7 @@ msgid "Extra"
msgstr "Extra"
msgid "Apply profile settings"
msgstr "Applica le impostazioni al profilo"
msgstr "Applica le impostazioni del profilo"
msgid "Settings type:"
msgstr "Tipo di impostazioni:"
@@ -795,13 +795,13 @@ msgid "Load the last open configuration at program startup"
msgstr "Carica l'ultima configurazione utilizzata all'avvio"
msgid "Enable direct playback bar"
msgstr "Abilita la barra di riproduzione diretta"
msgstr "Abilita barra di riproduzione diretta"
msgid "Enables direct sending and playback of media links on the receiver"
msgstr "Abilita l'invio e la riproduzione di links multimediali sul ricevitore"
msgstr "Abilita invio e riproduzione di links multimediali sul ricevitore"
msgid "Watch the channel in the program"
msgstr "Guarda il canale nel programma"
msgstr "Guarda canale nel programma"
msgid "Zap and Play"
msgstr "Zap e riproduci"
@@ -810,10 +810,10 @@ msgid "Drag or paste the link here"
msgstr "Trascina o incolla qui il link"
msgid "Remove added links in the playlist"
msgstr "Elimina i link aggiunti nella playlist"
msgstr "Rimuovi link aggiunti nella playlist"
msgid "A bouquet with that name exists!"
msgstr "Nome del bouquet già esistente!"
msgstr "Nome bouquet già esistente!"
msgid "Details"
msgstr "Dettagli"
@@ -828,7 +828,7 @@ msgid "File"
msgstr "File"
msgid "Picons manager"
msgstr "Gestione picons"
msgstr "Gestione picon"
msgid "Explorer"
msgstr "Esplora"
@@ -849,7 +849,7 @@ msgid "To the end"
msgstr "Alla fine"
msgid "View"
msgstr "Vista"
msgstr "Visualizzazione"
msgid "Lock"
msgstr "Blocca"
@@ -870,7 +870,7 @@ msgid "Default data path:"
msgstr "Percorso predefinito per i dati:"
msgid "Streams record path:"
msgstr "Percorso per le registrazioni da stream:"
msgstr "Percorso per registrazioni da stream:"
msgid "Record"
msgstr "Registra"
@@ -885,7 +885,7 @@ msgid "Streaming"
msgstr "Streaming"
msgid "Activate transcoding"
msgstr "Attiva la transcodifica"
msgstr "Attiva transcodifica"
msgid "Presets:"
msgstr "Preimpostazioni:"
@@ -894,7 +894,7 @@ msgid "Video options:"
msgstr "Opzioni video:"
msgid "Audio options:"
msgstr "Opzioni Audio:"
msgstr "Opzioni audio:"
msgid "Bitrate (kb/s):"
msgstr "Bitrate (kb/s):"
@@ -915,7 +915,7 @@ msgid "Sample rate (Hz):"
msgstr "Frequenza di campionamento (Hz):"
msgid "Play streams mode:"
msgstr "Modalità di riprodzione streams:"
msgstr "Modalità riprodzione stream:"
msgid "Built-in player"
msgstr "Riproduttore integrato"
@@ -936,10 +936,10 @@ msgid "Operates in standby mode or current active transponder!"
msgstr "Funziona in standby o con il transponder attualmente attivo!"
msgid "No connection to the receiver!"
msgstr "Nessun connessione con il ricevitore!"
msgstr "Nessuna connessione con il ricevitore!"
msgid "Signal level"
msgstr "Livello del segnale"
msgstr "Livello segnale"
msgid "Receiver info"
msgstr "Informazioni ricevitore"
@@ -951,37 +951,37 @@ msgid "Show short info as hints in the main services list"
msgstr "Mostra suggerimenti nella lista principale dei servizi"
msgid "Show detailed info as hints in the bouquet list"
msgstr "Mostra informazioni dettagliate come suggerimenti nell'elenco dei bouquets"
msgstr "Mostra informazioni dettagliate come suggerimenti nell'elenco dei bouquet"
msgid "Enable alternate bouquet file naming"
msgstr "Abilita nomi alternativi per i bouquets"
msgstr "Abilita nomi alternativi bouquet"
msgid "Allows you to name bouquet files using their names."
msgstr "Permetti di nominare i files dei bouquets usando i nomi dei bouquets."
msgstr "Permetti di nominare i files dei bouquet usando i nomi dei bouquet."
msgid "Appearance"
msgstr "Aspetto"
msgid "Enable Themes support"
msgstr "Abilita il supporto per i temi"
msgstr "Abilita supporto temi"
msgid "Gtk3 Theme:"
msgstr "Tema Gtk3:"
msgid "Icon Theme:"
msgstr "Tema delle icone:"
msgstr "Tema icone:"
msgid "Gtk3 Themes and Icons:"
msgstr "Temi e icone Gtk3:"
msgid "Deleting data..."
msgstr "Sto eliminando i dati ..."
msgstr "Sto eliminando i dati..."
msgid "Download from the receiver"
msgstr "Scarica dal ricevitore"
msgid "Remove all picons from the receiver"
msgstr "Elimina tutti i picons dal ricevitore"
msgstr "Rimuovi tutti i picon dal ricevitore"
msgid "Service reference"
msgstr "Servizio di riferimento"
@@ -1005,7 +1005,7 @@ msgid "EXPERIMENTAL!"
msgstr "SPERIMENTALE!"
msgid "Sorting data..."
msgstr "Sto ordinando i dati..."
msgstr "Ordinamento dati..."
msgid "There are unsaved changes.\n\n\t Save them now?"
msgstr "Ci sono cambiamenti non salvati.\n\n\t Vuoi salvarli adesso?"
@@ -1017,16 +1017,16 @@ msgid "Remove from the receiver"
msgstr "Elimina dal ricevitore"
msgid "Screenshot"
msgstr "Cattura schermata"
msgstr "Screenshot"
msgid "Video"
msgstr "Video"
msgid "The Neutrino has only experimental support. Not all features are supported!"
msgstr "Il Neutrino ha un supporto a livello sperimentale. Non tutte le caratteristiche sono supportate!"
msgstr "Il Neutrino ha solo supporto sperimentale. Non tutte le funzionalità sono supportate!"
msgid "Enable experimental features"
msgstr "Abilita le caratteristiche sperimentali"
msgstr "Abilita caratteristiche sperimentali"
msgid "Can't Playback!"
msgstr "Riproduzione impossibile!"
@@ -1059,10 +1059,10 @@ msgid "Import from Web"
msgstr "Importa dal Web"
msgid "Control"
msgstr "Controllo"
msgstr "Controlli"
msgid "Timers"
msgstr "Timers"
msgstr "Timer"
msgid "Timer"
msgstr "Timer"
@@ -1077,13 +1077,13 @@ msgid "Min."
msgstr "Min."
msgid "Power"
msgstr "Power"
msgstr "Accendi"
msgid "Standby"
msgstr "Standby"
msgid "Wake Up"
msgstr "Accendi"
msgstr "Risveglia"
msgid "Reboot"
msgstr "Riavvia"
@@ -1104,7 +1104,7 @@ msgid "Auto"
msgstr "Аuto"
msgid "Grab screenshot"
msgstr "Cattura schermata"
msgstr "Cattura screenshot"
msgid "Enabled:"
msgstr "Abilitato:"
@@ -1140,7 +1140,7 @@ msgid "After event:"
msgstr "Dopo l'evento:"
msgid "Location:"
msgstr "Ubicazione:"
msgstr "Posizione:"
msgid "Mo"
msgstr "Lun"
@@ -1173,7 +1173,7 @@ msgid "Create folder"
msgstr "Crea cartella"
msgid "FTP client"
msgstr "Cliente FTP"
msgstr "Client FTP"
msgid "The file size is too large!"
msgstr "Dimensione file eccessiva!"
@@ -1191,7 +1191,7 @@ msgid "Date"
msgstr "Data"
msgid "Toggle display position"
msgstr "Commuta la posizione di visualizzazione"
msgstr "Commuta posizione visualizzazione"
msgid "Alternatives"
msgstr "Alternative"
@@ -1208,26 +1208,26 @@ msgstr "Un servizio simile è già presente nella lista!"
msgid "Play mode has been changed!\nRestart the program to apply the settings."
msgstr "La modalitá di riproduzione è stata cambiata!\nRiavvia il programma per applicare i cambiamenti."
msgid "Set values for TID, NID and Namespace for correct naming of the picons!"
msgstr "Stabilisci i valori TID, NID e Namespace per nominare correttamente i picons!"
msgid "Set values for TID, NID and Namespace for correct naming of the picon!"
msgstr "Stabilisci i valori TID, NID e Namespace per nominare correttamente i picon!"
msgid "Streams detected:"
msgstr "Rilevati streams:"
msgstr "Rilevati stream:"
msgid "Download picons"
msgstr "Scarica picons"
msgstr "Scarica picon"
msgid "Errors:"
msgstr "Errori:"
msgid "Use to play streams:"
msgstr "Per riprodurre gli streams usa:"
msgstr "Riproduci gli stream con:"
msgid "Font in the lists:"
msgstr "Carattere nelle liste:"
msgid "Picons size in the lists:"
msgstr "Dimensione picons nelle liste:"
msgstr "Dimensione picon nelle liste:"
msgid "Logo size in tooltips:"
msgstr "Dimensione logo nei suggerimenti:"
@@ -1252,6 +1252,7 @@ msgstr "Registrazioni"
msgid "Recordings:"
msgstr "Registrazioni:"
msgid "Help"
msgstr "Aiuto"
@@ -1259,10 +1260,10 @@ msgid "HTTP API is not activated. Check your settings!"
msgstr "Le API HTTP non sono attivate. Controlla le tue impostazioni!"
msgid "Add picons"
msgstr "Aggiungi picons"
msgstr "Aggiungi picon"
msgid "Logs"
msgstr "Logs"
msgstr "Log"
msgid "Title"
msgstr "Titolo"
@@ -1307,25 +1308,25 @@ msgid "Drag the services to the desired picon or picon to the list of selected s
msgstr "Trascina i servizi sul picon desiderato o il picon sull'elenco dei servizi selezionati."
msgid "Sets the profile folder as default to store picons, backups, etc."
msgstr "Imposta la cartella del profilo come predefinita per memorizzare picons, backups, etc."
msgstr "Imposta la cartella del profilo come predefinita per memorizzare picon, backups, etc."
msgid "New sub-bouquet"
msgstr "Nuovo sotto-bouquet"
msgid "Mark not presented in Bouquets"
msgstr "Seleziona servizi non presenti nei bouquets"
msgstr "Seleziona servizi non presenti nei bouquet"
msgid "Not in Bouquets"
msgstr "No nei bouquets"
msgstr "Non è nei bouquet"
msgid "Do not show services present in Bouquets."
msgstr "Non mostrare i servizi presenti nei bouquets."
msgstr "Non mostrare servizi presenti nei bouquet."
msgid "IPTV services only"
msgstr "Solo servizi IPTV"
msgid "Display picons"
msgstr "Visualizza picons"
msgstr "Visualizza picon"
msgid "Alternate layout"
msgstr "Disposizione alternativa"
@@ -1349,10 +1350,37 @@ msgid "Add bookmark"
msgstr "Aggiungi segnalibro"
msgid "All bouquets"
msgstr "Tutti i bouquets"
msgstr "Tutti i bouquet"
msgid "Playback from the main list"
msgstr "Riproduzione dalla lista principale"
msgstr "Riproduci dalla lista principale"
msgid "Enables URL parsing using youtube-dl to get direct links to media."
msgstr "Abilita l'analisi degli URL utilizzando youtube-dl per ottenere collegamenti diretti ai media."
msgid "Permissions..."
msgstr "Permessi..."
msgid "Display EPG in bouquet list"
msgstr "Visualizza EPG nell'elenco bouquet"
msgid "EPG *.dat file:"
msgstr "File EPG *.dat:"
msgid "Use HTTP to reload data in the receiver"
msgstr "Utilizza HTTP per ricaricare i dati nel ricevitore"
msgid "Enable picons compression"
msgstr "Abilita compressione picon"
msgid "Update interval (sec):"
msgstr "Intervallo aggiornamento (sec):"
msgid "Update:"
msgstr "Aggiornamento:"
msgid "Daily"
msgstr "Quotidiano"
msgid "Assign reference"
msgstr "Assegna riferimento"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: DemonEditor\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-04-16 15:59+0300\n"
"PO-Revision-Date: 2022-08-13 22:53+0300\n"
"PO-Revision-Date: 2022-08-27 23:17+0300\n"
"Last-Translator: audi06_19 <info@dreamosat-forum.com>\n"
"Language-Team: \n"
"Language: tr\n"
@@ -1389,3 +1389,30 @@ msgstr "Ana listeden oynatma"
msgid "Enables URL parsing using youtube-dl to get direct links to media."
msgstr "Medyaya doğrudan bağlantılar almak için youtube-dl kullanarak URL ayrıştırmayı etkinleştirir."
msgid "Permissions..."
msgstr "İzinler..."
msgid "Display EPG in bouquet list"
msgstr "EPG'yi buket listesinde göster"
msgid "EPG *.dat file:"
msgstr "EPG *.dat dosyası:"
msgid "Use HTTP to reload data in the receiver"
msgstr "Alıcıdaki verileri yeniden yüklemek için HTTP kullanın"
msgid "Enable picons compression"
msgstr "Picon sıkıştırmayı etkinleştir"
msgid "Update interval (sec):"
msgstr "Güncelleme aralığı (sn):"
msgid "Update:"
msgstr "Güncelleme:"
msgid "Daily"
msgstr "Günlük"
msgid "Assign reference"
msgstr "Referans ata"