diff --git a/app/ui/lang/es/LC_MESSAGES/demon-editor.mo b/app/ui/lang/es/LC_MESSAGES/demon-editor.mo new file mode 100644 index 00000000..60d6303a Binary files /dev/null and b/app/ui/lang/es/LC_MESSAGES/demon-editor.mo differ diff --git a/app/ui/lang/nl/LC_MESSAGES/demon-editor.mo b/app/ui/lang/nl/LC_MESSAGES/demon-editor.mo index a9079f3b..042e3f5d 100644 Binary files a/app/ui/lang/nl/LC_MESSAGES/demon-editor.mo and b/app/ui/lang/nl/LC_MESSAGES/demon-editor.mo differ diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index b11c186a..d7691393 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -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) diff --git a/deb/usr/share/locale/es/LC_MESSAGES/demon-editor.mo b/deb/usr/share/locale/es/LC_MESSAGES/demon-editor.mo new file mode 100644 index 00000000..60d6303a Binary files /dev/null and b/deb/usr/share/locale/es/LC_MESSAGES/demon-editor.mo differ diff --git a/deb/usr/share/locale/nl/LC_MESSAGES/demon-editor.mo b/deb/usr/share/locale/nl/LC_MESSAGES/demon-editor.mo index a9079f3b..042e3f5d 100644 Binary files a/deb/usr/share/locale/nl/LC_MESSAGES/demon-editor.mo and b/deb/usr/share/locale/nl/LC_MESSAGES/demon-editor.mo differ diff --git a/po/es/demon-editor.po b/po/es/demon-editor.po new file mode 100644 index 00000000..95e191ef --- /dev/null +++ b/po/es/demon-editor.po @@ -0,0 +1,571 @@ +# Copyright (C) 2018 Frank Neirynck +# This file is distributed under the MIT license. +# +#Frank Neirynck , 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 " + +# 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!" + diff --git a/po/nl/demon-editor.mo b/po/nl/demon-editor.mo deleted file mode 100644 index a9079f3b..00000000 Binary files a/po/nl/demon-editor.mo and /dev/null differ diff --git a/po/nl/demon-editor.po b/po/nl/demon-editor.po index 66d937e0..a22dd345 100644 --- a/po/nl/demon-editor.po +++ b/po/nl/demon-editor.po @@ -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!" - diff --git a/po/ru/demon-editor.mo b/po/ru/demon-editor.mo deleted file mode 100644 index c9d97920..00000000 Binary files a/po/ru/demon-editor.mo and /dev/null differ