Merge remote-tracking branch 'origin/experimental' into experimental

This commit is contained in:
DYefremov
2018-12-11 20:45:55 +03:00
9 changed files with 656 additions and 78 deletions

Binary file not shown.

View File

@@ -34,29 +34,20 @@ class Application(Gtk.Application):
_TV_TYPES = ("TV", "TV (HD)", "TV (UHD)", "TV (H264)")
_SERVICE_LIST_NAME = "services_list_store"
_FAV_LIST_NAME = "fav_list_store"
_BOUQUETS_LIST_NAME = "bouquets_tree_store"
# dynamically active elements depending on the selected view
# Dynamically active elements depending on the selected view
_SERVICE_ELEMENTS = ("services_popup_menu",)
_BOUQUET_ELEMENTS = ("edit_tool_button", "new_tool_button", "bouquets_new_popup_item", "bouquets_edit_popup_item",
"bouquets_cut_popup_item", "bouquets_copy_popup_item", "bouquets_paste_popup_item")
_COMMONS_ELEMENTS = ("edit_tool_button", "bouquets_remove_popup_item", "fav_remove_popup_item")
_FAV_ELEMENTS = ("fav_cut_popup_item", "fav_paste_popup_item", "fav_locate_popup_item", "fav_iptv_popup_item",
"fav_insert_marker_popup_item", "fav_edit_sub_menu_popup_item", "fav_edit_popup_item",
"fav_picon_popup_item", "fav_copy_popup_item")
_BOUQUET_ELEMENTS = ("edit_tool_button", "new_tool_button", "bouquets_new_popup_item", "bouquets_edit_popup_item",
"bouquets_cut_popup_item", "bouquets_copy_popup_item", "bouquets_paste_popup_item")
_COMMONS_ELEMENTS = ("edit_tool_button", "bouquets_remove_popup_item", "fav_remove_popup_item")
_FAV_ENIGMA_ELEMENTS = ("fav_insert_marker_popup_item",)
_FAV_IPTV_ELEMENTS = ("fav_iptv_popup_item",)
_LOCK_HIDE_ELEMENTS = ("locked_tool_button", "hide_tool_button")
_DYNAMIC_ELEMENTS = ("services_popup_menu", "new_tool_button", "edit_tool_button", "locked_tool_button",
"fav_cut_popup_item", "fav_paste_popup_item", "bouquets_new_popup_item", "hide_tool_button",
"bouquets_remove_popup_item", "fav_remove_popup_item", "bouquets_edit_popup_item",
@@ -64,6 +55,10 @@ class Application(Gtk.Application):
"fav_locate_popup_item", "fav_picon_popup_item", "fav_iptv_popup_item", "fav_copy_popup_item",
"bouquets_cut_popup_item", "bouquets_copy_popup_item", "bouquets_paste_popup_item")
# Colors
_NEW_COLOR = "#ff5733" # Color for new services in the main list
_EXTRA_COLOR = "#33a8ff" # Color for services with a extra name for the bouquet
def __init__(self, **kwargs):
super().__init__(**kwargs)
@@ -160,6 +155,7 @@ class Application(Gtk.Application):
self._picons = {}
self._blacklist = set()
self._current_bq_name = None
self._bq_selected = "" # Current selected bouquet
# Current satellite positions in the services list
self._sat_positions = []
# Player
@@ -220,6 +216,11 @@ class Application(Gtk.Application):
# Force ctrl press event for view. Multiple selections in lists only with Space key(as in file managers)!!!
self._services_view.connect("key-press-event", self.force_ctrl)
self._fav_view.connect("key-press-event", self.force_ctrl)
# Renders
self._service_render = builder.get_object("service_cellrenderertext")
self._fav_service_render = builder.get_object("fav_service_cellrenderertext")
self._service_column = builder.get_object("service_column")
self._fav_service_column = builder.get_object("fav_service_column")
# Clipboard
self._clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
# Wait dialog
@@ -242,6 +243,7 @@ class Application(Gtk.Application):
def do_startup(self):
Gtk.Application.do_startup(self)
self.init_service_renders()
self.init_http_api()
def do_activate(self):
@@ -281,6 +283,29 @@ class Application(Gtk.Application):
""" Function for force ctrl press event for view """
event.state |= Gdk.ModifierType.CONTROL_MASK
def init_service_renders(self):
profile = Profile(self._profile)
func = self.service_data_function if profile is Profile.ENIGMA_2 else None
fav_func = self.fav_service_data_function if profile is Profile.ENIGMA_2 else None
self._service_column.set_cell_data_func(self._service_render, func, None)
self._fav_service_column.set_cell_data_func(self._fav_service_render, fav_func, None)
def service_data_function(self, column, render: Gtk.CellRendererText, model, itr, data):
""" Data function for the service column of main list """
render.set_property("foreground-set", None)
cas_flags = model.get_value(itr, 0)
if cas_flags:
f_flags = list(filter(lambda x: x.startswith("f:"), cas_flags.split(",")))
if f_flags and Flag.is_new(int(f_flags[0][2:])):
render.set_property("foreground", self._NEW_COLOR)
def fav_service_data_function(self, column, render, model, itr, data):
""" Data function for the service column of FAV list """
fav_id = model.get_value(itr, 7)
bq = self._extra_bouquets.get(self._bq_selected, None)
has_id = bq.get(fav_id, None) if bq else bq
render.set_property("foreground", self._EXTRA_COLOR) if has_id else render.set_property("foreground-set", None)
@run_idle
def on_close_app(self, *args):
self.quit()
@@ -427,9 +452,8 @@ class Application(Gtk.Application):
def remove_favs(self, itrs, model):
""" Deleting bouquet services """
bq_selected = self.get_selected_bouquet()
if bq_selected:
fav_bouquet = self._bouquets.get(bq_selected, None)
if self._bq_selected:
fav_bouquet = self._bouquets.get(self._bq_selected, None)
if fav_bouquet:
for itr in itrs:
del fav_bouquet[int(model.get_path(itr)[0])]
@@ -560,9 +584,8 @@ class Application(Gtk.Application):
def update_bouquet_list(self):
""" Update bouquet after move items """
bq_selected = self.get_selected_bouquet()
if bq_selected:
fav_bouquet = self._bouquets[bq_selected]
if self._bq_selected:
fav_bouquet = self._bouquets[self._bq_selected]
fav_bouquet.clear()
for row in self._fav_model:
fav_bouquet.append(row[7])
@@ -902,6 +925,12 @@ class Application(Gtk.Application):
self._bq_name_label.set_text(self._current_bq_name if self._current_bq_name else "")
self._fav_model.clear()
if self._current_bq_name:
ch_row = model[model.get_iter(path)][:]
self._bq_selected = "{}:{}".format(ch_row[0], ch_row[3])
else:
self._bq_selected = ""
if self._bouquets_view.row_expanded(path):
self._bouquets_view.collapse_row(path)
else:
@@ -935,30 +964,15 @@ class Application(Gtk.Application):
def check_bouquet_selection(self):
""" checks and returns bouquet if selected """
bq_selected = self.get_selected_bouquet()
if not bq_selected:
if not self._bq_selected:
show_dialog(DialogType.ERROR, self._main_window, "Error. No bouquet is selected!")
return
if Profile(self._profile) is Profile.NEUTRINO_MP and bq_selected.endswith(BqType.WEBTV.value):
if Profile(self._profile) is Profile.NEUTRINO_MP and self._bq_selected.endswith(BqType.WEBTV.value):
show_dialog(DialogType.ERROR, self._main_window, "Operation not allowed in this context!")
return
return bq_selected
def get_selected_bouquet(self):
""" returns 'name:type' of last selected bouquet or False """
if self._current_bq_name is None:
return False
for row in self._bouquets_model:
chs_rows = row.iterchildren()
for ch_row in chs_rows:
name = ch_row[0]
if name == self._current_bq_name:
return "{}:{}".format(name, ch_row[3])
return False
return self._bq_selected
@run_idle
def update_bouquets_type(self):
@@ -992,6 +1006,7 @@ class Application(Gtk.Application):
self.update_services_counts()
self.update_profile_label()
self.init_service_renders()
self.init_http_api()
def on_tree_view_key_press(self, view, event):
@@ -1092,21 +1107,19 @@ class Application(Gtk.Application):
self._tool_elements[elem].set_sensitive(not_empty)
else:
is_service = model_name == self._SERVICE_LIST_NAME
bq_selected = False
if model_name == self._FAV_LIST_NAME:
bq_selected = self.get_selected_bouquet()
if profile is Profile.NEUTRINO_MP and bq_selected:
name, bq_type = bq_selected.split(":")
bq_selected = BqType(bq_type) is BqType.WEBTV
if profile is Profile.NEUTRINO_MP and self._bq_selected:
name, bq_type = self._bq_selected.split(":")
self._bq_selected = BqType(bq_type) is BqType.WEBTV
for elem in self._FAV_ELEMENTS:
if elem in ("paste_tool_button", "fav_paste_popup_item"):
self._tool_elements[elem].set_sensitive(not is_service and self._rows_buffer)
elif elem in self._FAV_ENIGMA_ELEMENTS:
if profile is Profile.ENIGMA_2:
self._tool_elements[elem].set_sensitive(bq_selected and not is_service)
self._tool_elements[elem].set_sensitive(self._bq_selected and not is_service)
elif elem in self._FAV_IPTV_ELEMENTS:
self._tool_elements[elem].set_sensitive(bq_selected and not is_service)
self._tool_elements[elem].set_sensitive(self._bq_selected and not is_service)
else:
self._tool_elements[elem].set_sensitive(not_empty and not is_service)
for elem in self._SERVICE_ELEMENTS:
@@ -1127,10 +1140,10 @@ class Application(Gtk.Application):
def set_service_flags(self, flag):
profile = Profile(self._profile)
bq_selected = self.get_selected_bouquet()
if profile is Profile.ENIGMA_2:
set_flags(flag, self._services_view, self._fav_view, self._services, self._blacklist)
elif profile is Profile.NEUTRINO_MP and bq_selected:
elif profile is Profile.NEUTRINO_MP and self._bq_selected:
model, paths = self._bouquets_view.get_selection().get_selected_rows()
itr = model.get_iter(paths[0])
value = model.get_value(itr, 1 if flag is Flag.LOCK else 2)
@@ -1170,7 +1183,7 @@ class Application(Gtk.Application):
def on_insert_marker(self, view):
""" Inserts marker into bouquet services list. """
insert_marker(view, self._bouquets, self.get_selected_bouquet(), self._services, self._main_window)
insert_marker(view, self._bouquets, self._bq_selected, self._services, self._main_window)
self.update_fav_num_column(self._fav_model)
def on_fav_press(self, menu, event):
@@ -1186,7 +1199,7 @@ class Application(Gtk.Application):
response = IptvDialog(self._main_window,
self._fav_view,
self._services,
self._bouquets.get(self.get_selected_bouquet(), None),
self._bouquets.get(self._bq_selected, None),
Profile(self._profile),
Action.ADD).show()
if response != Gtk.ResponseType.CANCEL:
@@ -1204,11 +1217,10 @@ class Application(Gtk.Application):
show_dialog(DialogType.ERROR, self._main_window, "This list does not contains IPTV streams!")
return
bq_selected = self.get_selected_bouquet()
if not bq_selected:
if not self._bq_selected:
return
bouquet = self._bouquets.get(bq_selected, [])
bouquet = self._bouquets.get(self._bq_selected, [])
IptvListConfigurationDialog(self._main_window, self._services, iptv_rows, bouquet, profile).show()
@run_idle
@@ -1218,14 +1230,13 @@ class Application(Gtk.Application):
show_dialog(DialogType.ERROR, self._main_window, "This list does not contains IPTV streams!")
return
bq_selected = self.get_selected_bouquet()
if not bq_selected:
if not self._bq_selected:
return
if show_dialog(DialogType.QUESTION, self._main_window) == Gtk.ResponseType.CANCEL:
return
fav_bqt = self._bouquets.get(bq_selected, None)
fav_bqt = self._bouquets.get(self._bq_selected, None)
prf = Profile(self._profile)
response = SearchUnavailableDialog(self._main_window, self._fav_model, fav_bqt, iptv_rows, prf).show()
if response:
@@ -1242,14 +1253,14 @@ class Application(Gtk.Application):
return
channels = parse_m3u(response, Profile(self._profile))
bq_selected = self.get_selected_bouquet()
if channels and bq_selected:
bq_services = self._bouquets.get(bq_selected)
if channels and self._bq_selected:
bq_services = self._bouquets.get(self._bq_selected)
self._fav_model.clear()
for ch in channels:
self._services[ch.fav_id] = ch
bq_services.append(ch.fav_id)
next(self.update_bouquet_services(self._fav_model, None, bq_selected), False)
next(self.update_bouquet_services(self._fav_model, None, self._bq_selected), False)
# ***************** Player *********************#
@@ -1553,7 +1564,7 @@ class Application(Gtk.Application):
return IptvDialog(self._main_window,
self._fav_view,
self._services,
self._bouquets.get(self.get_selected_bouquet(), None),
self._bouquets.get(self._bq_selected, None),
Profile(self._profile),
Action.EDIT).show()
self.on_locate_in_services(view)
@@ -1578,8 +1589,7 @@ class Application(Gtk.Application):
def on_bouquets_edit(self, view):
""" Rename bouquets """
bq_selected = self.get_selected_bouquet()
if not bq_selected:
if not self._bq_selected:
show_dialog(DialogType.ERROR, self._main_window, "This item is not allowed to edit!")
return
@@ -1623,18 +1633,17 @@ class Application(Gtk.Application):
return
srv = self._services.get(fav_id, None)
selected_bq = self.get_selected_bouquet()
ex_bq = self._extra_bouquets.get(selected_bq, None)
ex_bq = self._extra_bouquets.get(self._bq_selected, None)
if srv.service == response and ex_bq:
ex_bq.pop(fav_id, None)
if not ex_bq:
self._extra_bouquets.pop(selected_bq, None)
self._extra_bouquets.pop(self._bq_selected, None)
else:
if ex_bq:
ex_bq[fav_id] = response
else:
self._extra_bouquets[selected_bq] = {fav_id: response}
self._extra_bouquets[self._bq_selected] = {fav_id: response}
model.set_value(model.get_iter(paths), 2, response)
@@ -1646,8 +1655,7 @@ class Application(Gtk.Application):
model, paths = selection
fav_id = model[paths][7]
srv = self._services.get(fav_id, None)
selected_bq = self.get_selected_bouquet()
ex_bq = self._extra_bouquets.get(selected_bq, None)
ex_bq = self._extra_bouquets.get(self._bq_selected, None)
if not ex_bq:
show_dialog(DialogType.ERROR, self._main_window, "No changes required!")
@@ -1657,7 +1665,7 @@ class Application(Gtk.Application):
show_dialog(DialogType.ERROR, self._main_window, "No changes required!")
return
if not ex_bq:
self._extra_bouquets.pop(selected_bq, None)
self._extra_bouquets.pop(self._bq_selected, None)
model.set_value(model.get_iter(paths), 2, srv.service)

Binary file not shown.

571
po/es/demon-editor.po Normal file
View File

@@ -0,0 +1,571 @@
# Copyright (C) 2018 Frank Neirynck
# This file is distributed under the MIT license.
#
#Frank Neirynck <frank@insink.be>, 2018.
#
msgid ""
msgstr ""
"Last-Translator: Frank Neirynck\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "translator-credits"
msgstr "Frank Neirynck <frank@insink.be>"
# Main
msgid "Service"
msgstr "Servicio"
msgid "Package"
msgstr "Paquete"
msgid "Type"
msgstr "Tipo"
msgid "Picon"
msgstr "Picon"
msgid "Freq"
msgstr "Frec."
msgid "Rate"
msgstr "Rate"
msgid "Pol"
msgstr "Pol."
msgid "System"
msgstr "Sistema"
msgid "Pos"
msgstr "Pos."
msgid "Num"
msgstr "Núm"
msgid "Current IP:"
msgstr "IP actual:"
msgid "Assign"
msgstr "Assignar"
msgid "Bouquet details"
msgstr "Detailes Ramo"
msgid "Bouquets"
msgstr "Ramos"
msgid "Copy"
msgstr "Copiar"
msgid "Copy reference"
msgstr "Copia de Referencia"
msgid "Download"
msgstr "Descargar"
msgid "Edit"
msgstr "Editar"
msgid "Edit "
msgstr "Editar "
msgid "Edit mаrker text"
msgstr "Editar testo del mаrcador"
msgid "FTP-transfer"
msgstr "Transferencia-FTP"
msgid "Global search"
msgstr "Búsqueda Global"
msgid "Hide"
msgstr "Esconder"
msgid "Hide/Skip On/Off Ctrl + H"
msgstr "Esconder/Saltar Encender/Apagar Ctrl + H"
msgid "Add IPTV or stream service"
msgstr "Añadir servicio IPTV"
msgid "Import m3u"
msgstr "Importar m3u"
msgid "Import m3u file"
msgstr "Importar fichero m3u"
msgid "List configuration"
msgstr "Lista configuración"
msgid "Rename for this bouquet"
msgstr "Renombrar para este ramo"
msgid "Set default name"
msgstr "Establecer nombre predeterminado"
msgid "Insert marker"
msgstr "Inserter marcador"
msgid "Locate in services"
msgstr "Buscar en servicios"
msgid "Locked"
msgstr "Cerrado"
msgid "Move"
msgstr "Mover"
msgid "New"
msgstr "Nuevo"
msgid "New bouquet"
msgstr "Ramo nuevo"
msgid "Create bouquet"
msgstr "Crear ramo"
msgid "For current satellite"
msgstr "Para el Satélite actual"
msgid "For current package"
msgstr "Para el paquete actual"
msgid "For current type"
msgstr "Para el tipo actual"
msgid "For each satellite"
msgstr "Para cada Satélite"
msgid "For each package"
msgstr "Para cada paquete"
msgid "For each type"
msgstr "Para cada tipo"
msgid "Open"
msgstr "Abrir"
msgid "Parent lock On/Off Ctrl + L"
msgstr "Bloqueo parentesco Encender/Apagar Ctrl + L"
msgid "Picons"
msgstr "Picons"
msgid "Picons downloader"
msgstr "Picons descargar"
msgid "Satellites downloader"
msgstr "Satélites descargar"
msgid "Remove"
msgstr "Remover"
msgid "Remove all unavailable"
msgstr "Remover toto lo indisponible"
msgid "Satellites editor"
msgstr "Editor Satélites"
msgid "Save"
msgstr "Guardar"
msgid "Search"
msgstr "Buscar"
msgid "Services"
msgstr "Servicios"
msgid "Services filter"
msgstr "Filtro servicios"
msgid "Settings"
msgstr "Configuraciones"
msgid "Up"
msgstr "Arriba"
msgid "Down"
msgstr "Abajo"
msgid "Active profile:"
msgstr "Perfil activo:"
msgid "All"
msgstr "Todo"
msgid "Are you sure?"
msgstr "Estás seguro?"
msgid "Current data path:"
msgstr "Ruta de datos actual:"
msgid "Data:"
msgstr "Datos:"
msgid "Enigma2 channel and satellites list editor for GNU/Linux"
msgstr "Editor de Canales y Satélites Enigma2 para GNU/Linux"
msgid "Host:"
msgstr "Anfitrión:"
msgid "Loading data..."
msgstr "Cargar datos..."
msgid "Receive"
msgstr "Recibir"
msgid "Receive files from receiver"
msgstr "Recibir ficheros de su receptor"
msgid "Receiver IP:"
msgstr "Receptor IP:"
msgid "Remove unused bouquets"
msgstr "Remover ramos sin usar"
msgid "Reset profile"
msgstr "Restablecer perfil"
msgid "Satellites"
msgstr "Satélites"
msgid "Satellites.xml file:"
msgstr "Fichero Satellites.xml:"
msgid "Selected"
msgstr "Seleccionado"
msgid "Send"
msgstr "Enviar"
msgid "Send files to receiver"
msgstr "Enviar ficheros al receptor"
msgid "Services and Bouquets files:"
msgstr "Ficheros de Servicios y ramos:"
msgid "User bouquet files:"
msgstr "Importar ficheros de ramos:"
msgid "Extra:"
msgstr "Extra:"
# Filter bar
msgid "Only free"
msgstr "Solamente gratis"
msgid "All positions"
msgstr "Todas las posiciones"
msgid "All types"
msgstr "Todas los tipos"
# Streams player
msgid "Play"
msgstr "Play"
msgid "Stop playback"
msgstr "Detener la reproducción"
msgid "Previous stream in the list"
msgstr "Secuencia anterior en la lista"
msgid "Next stream in the list"
msgstr "Secuencia siguiente en la lista"
msgid "Toggle in fullscreen"
msgstr "Cambiar a pantalla completa"
msgid "Close"
msgstr "Cerrar"
# Picons dialog
msgid "Load providers"
msgstr "Cargar Proveedores"
msgid "Providers"
msgstr "Proveedores"
msgid "Receive picons"
msgstr "Recibir picons"
msgid "Picons name format:"
msgstr "Picons formato nombres:"
msgid "Resize:"
msgstr "Redimensionar:"
msgid "Current picons path:"
msgstr "Ruta acual Picons:"
msgid "Receiver picons path:"
msgstr "Ruta picons receptor:"
msgid "Picons download tool"
msgstr "Picons herramiento de descarga"
msgid "Transfer to receiver"
msgstr "Transferir al receptor"
msgid "Downloader"
msgstr "Descargador"
msgid "Converter"
msgstr "Convertidor"
msgid "Convert"
msgstr "Convertir"
msgid "Path to save:"
msgstr "Ruto para guardar:"
msgid "Path to Enigma2 picons:"
msgstr "Ruta a picons Enigma2:"
msgid "Specify the correct position value for the provider!"
msgstr "Especifique la posición correcta para el proveedor!"
msgid "Converter between name formats"
msgstr "Conversor entre formatos de nombre"
msgid "Receive picons for providers"
msgstr "Recibir picons para proovedor"
msgid "Load satellite providers."
msgstr "Cargar proovedores Satélite."
msgid "To automatically set the identifiers for picons,\nfirst load the required services list into the main application window."
msgstr "Para configurar automáticamente los identificadores para picons, \nprimero cargue la lista de servicios requeridos en la ventana principal."
# Satellites editor
msgid "Satellites edit tool"
msgstr "Edito de Satélites"
msgid "Add"
msgstr "Añadir"
msgid "Satellite"
msgstr "Satélite"
msgid "Transponder"
msgstr "Transpondedor"
msgid "Satellite properties:"
msgstr "Propiedades del Satélite:"
msgid "Transponder properties:"
msgstr "Propiedades del Transpondedor:"
msgid "Name"
msgstr "Nombre"
msgid "Position"
msgstr "Posición"
# Satellites update dialog
msgid "Satellites update"
msgstr "Actualisar Satélite"
msgid "Remove selection"
msgstr "Remover selección"
# Service details dialog
msgid "Service data:"
msgstr "Datos servicio:"
msgid "Transponder data:"
msgstr "Datos Transpondedor:"
msgid "Service data"
msgstr "Datos servicio"
msgid "Transponder details"
msgstr "Detailes Transpondedor"
msgid "Changes will be applied to all services of this transponder!\nContinue?"
msgstr "Los cambios se aplicarán a todos los servicios de este transpondedor!\nContinuar?"
msgid "Reference"
msgstr "Referencia"
msgid "Namespace"
msgstr "Namespace"
msgid "Flags:"
msgstr "Flags:"
msgid "Delays (ms):"
msgstr "Retraso (mc)"
msgid "Bitstream"
msgstr "Secuencia de Bits"
msgid "Description"
msgstr "Descripción"
msgid "Source:"
msgstr "Fuente:"
msgid "Cancel"
msgstr "Annular"
msgid "Update"
msgstr "Actualisar"
msgid "Filter"
msgstr "Filtrar"
msgid "Find"
msgstr "Buscar"
# IPTV dialog
msgid "Stream data"
msgstr "Datos de la Secuencia"
# IPTV list configuration dialog
msgid "Starting values"
msgstr "Volores iniciales"
msgid "Reset to default"
msgstr "Restablecer a predeterminado"
msgid "IPTV streams list configuration"
msgstr "Configurar lista de Secuencias IPTV"
#Settings dialog
msgid "Preferences"
msgstr "Preferencias"
msgid "Profile:"
msgstr "Perfil:"
msgid "Timeout between commands in seconds"
msgstr "Tiempo de espera entre comandos en segundos"
msgid "Timeout:"
msgstr "Time-out:"
msgid "Login:"
msgstr "Usuario:"
msgid "Options"
msgstr "Opciones"
msgid "Password:"
msgstr "Contraseña:"
msgid "Picons:"
msgstr "Picons:"
msgid "Port:"
msgstr "Puerta:"
msgid "Data path:"
msgstr "Ruta de datos:"
msgid "Picons path:"
msgstr "Ruda de Picons:"
msgid "Network settings:"
msgstr "Configuración de red:"
msgid "STB file paths:"
msgstr "Ruta de ficherors STB:"
msgid "Local file paths:"
msgstr "Ruta de ficheros local:"
# Dialogs messages
msgid "Error. No bouquet is selected!"
msgstr "Error. Ningún ramo está seleccionado!"
msgid "This item is not allowed to be removed!"
msgstr "Este artículo no puede ser eliminado!"
msgid "This item is not allowed to edit!"
msgstr "Este artículo no puede ser editado!"
msgid "Not allowed in this context!"
msgstr "No permitido en este contexto!"
msgid "Please, download files from receiver or setup your path for read data!"
msgstr "Por favor, descargue archivos desde el receptor o configure su ruta para leer los datos!"
msgid "Reading data error!"
msgstr "Error de lectura de datos!"
msgid "No m3u file is selected!"
msgstr "Ningún archivo m3u ha sido seleccionado!"
msgid "Not implemented yet!"
msgstr "Aun no implementado!"
msgid "The text of marker is empty, please try again!"
msgstr "El texto del marcador está vacío, inténtalo de nuevo!"
msgid "Please, select only one item!"
msgstr "Por favor, seleccione solo un elemento!"
msgid "No png file is selected!"
msgstr "Ningún fichero png seleccionado!"
msgid "No reference is present!"
msgstr "Ninguna referencia presente!"
msgid "No selected item!"
msgstr "Ningún elemento seleccionado!"
msgid "The task is already running!"
msgstr "La tarea ya se está ejecutando!"
msgid "Done!"
msgstr "Hecho!"
msgid "Please, wait..."
msgstr "Por favor, espere..."
msgid "Resizing..."
msgstr "Redimensionamiento..."
msgid "Select paths!"
msgstr "Seleccione rutas!"
msgid "No satellite is selected!"
msgstr "Ningún Satélite seleccionado!"
msgid "Please, select only one satellite!"
msgstr "Seleccione solo un Satélite!"
msgid "Please check your parameters and try again."
msgstr "Por favor revise sus parámetros y vuelva a intentar!"
msgid "No satellites.xml file is selected!"
msgstr "Ningún satellites.xml seleccionado!"
msgid "Error. Verify the data!"
msgstr "Error. Revise sus datos!"
msgid "Operation not allowed in this context!"
msgstr "Operación no permitida en este contexto!"
msgid "No VLC is found. Check that it is installed!"
msgstr "VLC no encontrado. Verifica si está instalado!"
# Search unavailable streams dialog
msgid "Please wait, streams testing in progress..."
msgstr "Por favor espera una prueba de las secuencias..."
msgid "Found"
msgstr "Encontrado"
msgid "unavailable streams."
msgstr "Secuencias no presentes"
msgid "No changes required!"
msgstr "ningún cambio requerido!"
msgid "This list does not contains IPTV streams!"
msgstr "La lista no contiene secuencias IPTV!"

Binary file not shown.

View File

@@ -73,7 +73,7 @@ msgid "Edit "
msgstr "Wijzig "
msgid "Edit mаrker text"
msgstr "Wijzil mаrker tekst"
msgstr "Wijzig mаrker tekst"
msgid "FTP-transfer"
msgstr "FTP-overdracht"
@@ -85,7 +85,7 @@ msgid "Hide"
msgstr "Verberg"
msgid "Hide/Skip On/Off Ctrl + H"
msgstr "verberg/Overalaan Aan/Uit Ctrl + H"
msgstr "Verberg/Overslaan Aan/Uit Ctrl + H"
msgid "Add IPTV or stream service"
msgstr "Voeg IPTV of stream dienst toe"
@@ -100,7 +100,7 @@ msgid "List configuration"
msgstr "Lijst configuratie"
msgid "Rename for this bouquet"
msgstr "Hernoem dit boeket"
msgstr "Hernoem voor dit boeket"
msgid "Set default name"
msgstr "Stel standaard naam in"
@@ -154,10 +154,10 @@ msgid "Picons"
msgstr "Picons"
msgid "Picons downloader"
msgstr "Загрузчик пиконов"
msgstr "Picons downloader"
msgid "Satellites downloader"
msgstr "Picons downloader"
msgstr "Satellieten downloader"
msgid "Remove"
msgstr "Verwijder"
@@ -286,7 +286,7 @@ msgid "Load providers"
msgstr "Laad leveranciers"
msgid "Providers"
msgstr "leveranciers"
msgstr "Leveranciers"
msgid "Receive picons"
msgstr "Ontvang picons"
@@ -298,10 +298,10 @@ msgid "Resize:"
msgstr "Verklein/vergroot:"
msgid "Current picons path:"
msgstr "Huidig picon pad:"
msgstr "Huidig pad picons:"
msgid "Receiver picons path:"
msgstr "Ontvanger picon pad:"
msgstr "Ontvanger picons pad:"
msgid "Picons download tool"
msgstr "Picons download gereedschap"
@@ -561,11 +561,10 @@ msgid "Found"
msgstr "Gevonden"
msgid "unavailable streams."
msgstr "Steams niet aanwegig."
msgstr "Steams niet aanwezig."
msgid "No changes required!"
msgstr "Geen wijzigingen vereist!"
msgid "This list does not contains IPTV streams!"
msgstr "Deze lijst bevat geen IPTV streams!"

Binary file not shown.