pax_global_header00006660000000000000000000000064136254062250014517gustar00rootroot0000000000000052 comment=379b83043a66702f830195bda4893b92ec779c7b pvr.vdr.vnsi-3.6.4-Leia/000077500000000000000000000000001362540622500147605ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/.gitignore000066400000000000000000000007271362540622500167560ustar00rootroot00000000000000# build artifacts build/ debian/changelog debian/files debian/kodi-pvr-vdr.vnsi-dbg.debhelper.log debian/kodi-pvr-vdr.vnsi-dbg.substvars debian/kodi-pvr-vdr.vnsi-dbg/ debian/kodi-pvr-vdr.vnsi.debhelper.log debian/kodi-pvr-vdr.vnsi.postinst.debhelper debian/kodi-pvr-vdr.vnsi.postrm.debhelper debian/kodi-pvr-vdr.vnsi.substvars debian/kodi-pvr-vdr.vnsi/ debian/tmp/ obj-x86_64-linux-gnu/ pvr.vdr.vnsi/addon.xml # clion .idea/ # Eclipse/CDT .cproject .project .settings/ pvr.vdr.vnsi-3.6.4-Leia/.travis.yml000066400000000000000000000022251362540622500170720ustar00rootroot00000000000000language: cpp # # Define the build matrix # # Travis defaults to building on Ubuntu Trusty when building on # Linux. We need Xenial in order to get up to date versions of # cmake and g++. # env: global: - app_id=pvr.vdr.vnsi matrix: include: - os: linux dist: xenial sudo: required compiler: gcc - os: linux dist: xenial sudo: required compiler: clang - os: osx osx_image: xcode9 - os: osx osx_image: xcode9.4 # # The addon source is automatically checked out in $TRAVIS_BUILD_DIR, # we'll put the Kodi source on the same level # before_script: - cd $TRAVIS_BUILD_DIR/.. - git clone --branch Leia --depth=1 https://github.com/xbmc/xbmc.git - cd ${app_id} && mkdir build && cd build - mkdir -p definition/${app_id} - echo ${app_id} $TRAVIS_BUILD_DIR $TRAVIS_COMMIT > definition/${app_id}/${app_id}.txt - cmake -DADDONS_TO_BUILD=${app_id} -DADDON_SRC_PREFIX=$TRAVIS_BUILD_DIR/.. -DADDONS_DEFINITION_DIR=$TRAVIS_BUILD_DIR/build/definition -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$TRAVIS_BUILD_DIR/../xbmc/addons -DPACKAGE_ZIP=1 $TRAVIS_BUILD_DIR/../xbmc/cmake/addons script: make pvr.vdr.vnsi-3.6.4-Leia/CMakeLists.txt000066400000000000000000000054311362540622500175230ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.5) project(pvr.vdr.vnsi) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}) find_package(Kodi REQUIRED) find_package(p8-platform REQUIRED) add_definitions(-DUSE_DEMUX) if(NOT WIN32) find_package(EMBEDDED) if((APP_RENDER_SYSTEM STREQUAL "gl" OR NOT APP_RENDER_SYSTEM) AND NOT EMBEDDED_FOUND) find_package(OpenGL) endif() if(OPENGL_FOUND) set(APP_RENDER_SYSTEM gl) set(INCLUDES ${OPENGL_INCLUDE_DIR}) set(DEPLIBS ${OPENGL_LIBRARIES}) set(VDR_SOURCES src/shaders/GUIShader.cpp src/shaders/Matrix.cpp src/shaders/Shader.cpp) add_definitions(-DHAS_GL) message(STATUS "VDR OSD support enabled via OpenGL") else() find_package(OpenGLES2) if(OPENGLES2_FOUND) set(APP_RENDER_SYSTEM gles) set(VDR_SOURCES src/shaders/GUIShader.cpp src/shaders/Matrix.cpp src/shaders/Shader.cpp) add_definitions(-DHAS_GLES2) set(INCLUDES ${OPENGLES2_INCLUDE_DIRS}) set(DEPLIBS ${OPENGLES2_LIBRARIES}) message(STATUS "VDR OSD support enabled via OpenGLES") else() message(STATUS " VDR OSD support disabled because OpenGL(ES) wasn't found") endif() endif() else() message(STATUS " VDR OSD support disabled because it is not migrated to DX11 yet") endif() list(APPEND VDR_SOURCES src/client.cpp src/requestpacket.cpp src/responsepacket.cpp src/tools.cpp src/VNSIAdmin.cpp src/VNSIChannels.cpp src/VNSIChannelScan.cpp src/VNSIData.cpp src/VNSIDemux.cpp src/VNSIRecording.cpp src/VNSISession.cpp) list(APPEND VDR_HEADERS src/client.h src/requestpacket.h src/responsepacket.h src/tools.h src/VNSIAdmin.h src/VNSIChannelScan.h src/VNSIChannels.h src/vnsicommand.h src/VNSIData.h src/VNSIDemux.h src/VNSIRecording.h src/VNSISession.h) list(APPEND DEPLIBS ${p8-platform_LIBRARIES}) if(WIN32) set(APP_RENDER_SYSTEM dx11) list(APPEND DEPLIBS ws2_32) add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) endif() message(STATUS "Configured render system: ${APP_RENDER_SYSTEM}") include_directories(${INCLUDES} ${p8-platform_INCLUDE_DIRS} ${KODI_INCLUDE_DIR}/..) # Hack way with "/..", need bigger Kodi cmake rework to match right include ways build_addon(pvr.vdr.vnsi VDR DEPLIBS) include(CPack) pvr.vdr.vnsi-3.6.4-Leia/FindEMBEDDED.cmake000066400000000000000000000010041362540622500177070ustar00rootroot00000000000000# - Try to find embedded platforms (RPI/IMX6) # Once done this will define # # EMBEDDED_FOUND - system is RPI / IMX6 and we most probably want to compile for GLES2 support # (don't configure for OpenGL) string(REGEX MATCH "^arm" TARGET_ARCH_ARM "${CMAKE_SYSTEM_PROCESSOR}") if(NOT CMAKE_CROSSCOMPILING AND NOT TARGET_ARCH_ARM) return() endif(NOT CMAKE_CROSSCOMPILING AND NOT TARGET_ARCH_ARM) find_path(EMBEDDED_FOUND NAMES include/linux/imxfb.h include/bcm_host.h PATHS /opt/vc) pvr.vdr.vnsi-3.6.4-Leia/FindOpenGLES2.cmake000066400000000000000000000025001362540622500202160ustar00rootroot00000000000000# - Try to find OpenGLES2 # Once done this will define # # OPENGLES2_FOUND - system has OpenGLES2 # OPENGLES2_INCLUDE_DIR - the GLES2 include directory # OPENGLES2_LIBRARIES - Link these to use OpenGLES2 find_package(PkgConfig) if(PKG_CONFIG_FOUND AND NOT EMBEDDED_FOUND) pkg_check_modules(OpenGLES2 glesv2) elseif(EMBEDDED_FOUND) set(CMAKE_PREFIX_PATH ${EMBEDDED_FOUND} ${CMAKE_PREFIX_PATH}) endif(PKG_CONFIG_FOUND AND NOT EMBEDDED_FOUND) if(NOT OPENGLES2_FOUND) if("${CORE_SYSTEM_NAME}" STREQUAL "ios") find_library(OPENGLES2_gl_LIBRARY NAMES OpenGLES PATHS ${CMAKE_OSX_SYSROOT}/System/Library PATH_SUFFIXES Frameworks NO_DEFAULT_PATH) set(OPENGLES2_INCLUDE_DIRS ${OPENGLES2_gl_LIBRARY}/Headers) set(OPENGLES2_egl_LIBRARY ${OPENGLES2_gl_LIBRARY}) else() find_path(OPENGLES2_INCLUDE_DIRS GLES2/gl2.h) find_library(OPENGLES2_gl_LIBRARY NAMES GLESv2) find_library(OPENGLES2_egl_LIBRARY NAMES EGL) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(OpenGLES2 DEFAULT_MSG OPENGLES2_INCLUDE_DIRS OPENGLES2_gl_LIBRARY OPENGLES2_egl_LIBRARY) set(OPENGLES2_LIBRARIES ${OPENGLES2_gl_LIBRARY} ${OPENGLES2_egl_LIBRARY}) endif(NOT OPENGLES2_FOUND) mark_as_advanced( OPENGLES2_INCLUDE_DIRS OPENGLES2_LIBRARIES OPENGLES2_gl_LIBRARY OPENGLES2_egl_LIBRARY ) pvr.vdr.vnsi-3.6.4-Leia/Jenkinsfile000066400000000000000000000000351362540622500171420ustar00rootroot00000000000000buildPlugin(version: "Leia") pvr.vdr.vnsi-3.6.4-Leia/README.md000066400000000000000000000021121362540622500162330ustar00rootroot00000000000000[![Build Status](https://travis-ci.org/kodi-pvr/pvr.vdr.vnsi.svg?branch=Leia)](https://travis-ci.org/kodi-pvr/pvr.vdr.vnsi/branches) [![Build Status](https://dev.azure.com/teamkodi/kodi-pvr/_apis/build/status/kodi-pvr.pvr.vdr.vnsi?branchName=Leia)](https://dev.azure.com/teamkodi/kodi-pvr/_build/latest?definitionId=69&branchName=Leia) [![Coverity Scan Build Status](https://scan.coverity.com/projects/5120/badge.svg)](https://scan.coverity.com/projects/5120) # VDR VNSI PVR VDR VNSI PVR client addon for [Kodi] (http://kodi.tv) ## Build instructions ### Linux 1. `git clone --branch Leia https://github.com/xbmc/xbmc.git` 2. `git clone https://github.com/kodi-pvr/pvr.vdr.vnsi.git` 3. `cd pvr.vdr.vnsi && mkdir build && cd build` 4. `cmake -DADDONS_TO_BUILD=pvr.vdr.vnsi -DADDON_SRC_PREFIX=../.. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../../xbmc/addons -DPACKAGE_ZIP=1 ../../xbmc/cmake/addons` 5. `make` ##### Useful links * [Kodi's PVR user support] (http://forum.kodi.tv/forumdisplay.php?fid=169) * [Kodi's PVR development support] (http://forum.kodi.tv/forumdisplay.php?fid=136) pvr.vdr.vnsi-3.6.4-Leia/azure-pipelines.yml000066400000000000000000000035351362540622500206250ustar00rootroot00000000000000variables: app_id: 'pvr.vdr.vnsi' trigger: branches: include: - Leia - releases/* paths: include: - '*' exclude: - 'debian/*' jobs: - job: Windows pool: vmImage: 'VS2017-Win2016' strategy: matrix: Win32: GENERATOR: "Visual Studio 15 2017" ARCHITECTURE: Win32 CONFIGURATION: Release Win64: GENERATOR: "Visual Studio 15 2017" ARCHITECTURE: x64 CONFIGURATION: Release Win64-UWP: GENERATOR: "Visual Studio 15 2017" ARCHITECTURE: x64 CONFIGURATION: Release WINSTORE: -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0.16299.0" ARM64-UWP: GENERATOR: "Visual Studio 15 2017" ARCHITECTURE: ARM64 CONFIGURATION: Release WINSTORE: -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0.16299.0" workspace: clean: all steps: - script: | cd .. git clone --branch Leia --depth=1 https://github.com/xbmc/xbmc.git kodi cd $(Build.SourcesDirectory) mkdir build cd build mkdir "definition/$(app_id)" echo $(app_id) . . > definition/$(app_id)/$(app_id).txt mklink /J "$(Pipeline.Workspace)/$(app_id)" "$(Build.SourcesDirectory)" - task: CMake@1 inputs: workingDirectory: 'build' cmakeArgs: '-T host=x64 -G "$(GENERATOR)" -A $(ARCHITECTURE) $(WINSTORE) -DADDONS_TO_BUILD=$(app_id) -DCMAKE_BUILD_TYPE=$(CONFIGURATION) -DADDONS_DEFINITION_DIR=$(Pipeline.Workspace)/$(app_id)/build/definition -DADDON_SRC_PREFIX=../.. -DCMAKE_INSTALL_PREFIX=../../kodi/addons -DPACKAGE_ZIP=1 ../../kodi/cmake/addons' - task: CMake@1 inputs: workingDirectory: 'build' cmakeArgs: '--build . --config $(CONFIGURATION) --target $(app_id)' pvr.vdr.vnsi-3.6.4-Leia/debian/000077500000000000000000000000001362540622500162025ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/debian/changelog.in000066400000000000000000000002651362540622500204640ustar00rootroot00000000000000kodi-pvr-vdr-vnsi (#PACKAGEVERSION#-#TAGREV#~#DIST#) #DIST#; urgency=low [ xbmc ] * autogenerated dummy changelog -- Nobody Sat, 01 Jun 2013 00:59:22 +0200 pvr.vdr.vnsi-3.6.4-Leia/debian/compat000066400000000000000000000000021362540622500174000ustar00rootroot000000000000009 pvr.vdr.vnsi-3.6.4-Leia/debian/control000066400000000000000000000012611362540622500176050ustar00rootroot00000000000000Source: kodi-pvr-vdr-vnsi Priority: extra Maintainer: fernetmenta Build-Depends: debhelper (>= 9.0.0), cmake, libtinyxml-dev, libp8-platform-dev, kodi-addon-dev, libgles2-mesa-dev [arm], libgl1-mesa-dev [i386 amd64], pkg-config Standards-Version: 3.9.4 Section: libs Homepage: http://kodi.tv Package: kodi-pvr-vdr-vnsi Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: VDR PVR for Kodi VDR PVR for Kodi Package: kodi-pvr-vdr-vnsi-dbg Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: debug symbols for VDR PVR for Kodi debug symbols for VDR PVR for Kodi pvr.vdr.vnsi-3.6.4-Leia/debian/copyright000066400000000000000000000027261362540622500201440ustar00rootroot00000000000000Format: http://dep.debian.net/deps/dep5 Upstream-Name: pvr.vdr.vnsi Source: Files: * Copyright: License: . # If you want to use GPL v2 or later for the /debian/* files use # the following clauses, or change it to suit. Delete these two lines Files: debian/* Copyright: 2013 fernetmenta License: GPL-2+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". # Please also look if there are files or directories which have a # different copyright/license attached and list them here. pvr.vdr.vnsi-3.6.4-Leia/debian/kodi-pvr-vdr-vnsi.install000066400000000000000000000000261362540622500230710ustar00rootroot00000000000000usr/lib/* usr/share/* pvr.vdr.vnsi-3.6.4-Leia/debian/rules000077500000000000000000000012431362540622500172620ustar00rootroot00000000000000#!/usr/bin/make -f # -*- makefile -*- # Sample debian/rules that uses debhelper. # This file was originally written by Joey Hess and Craig Small. # As a special exception, when this file is copied by dh-make into a # dh-make output file, you may use that output file without restriction. # This special exception was added by Craig Small in version 0.37 of dh-make. %: dh $@ override_dh_auto_configure: dh_auto_configure -- -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DUSE_LTO=1 -DCMAKE_INSTALL_PREFIX=/usr override_dh_strip: dh_strip -pkodi-pvr-vdr-vnsi --dbg-package=kodi-pvr-vdr-vnsi-dbg override_dh_installdocs: dh_installdocs --link-doc=kodi-pvr-vdr-vnsi pvr.vdr.vnsi-3.6.4-Leia/debian/source/000077500000000000000000000000001362540622500175025ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/debian/source/format000066400000000000000000000000151362540622500207110ustar00rootroot000000000000003.0 (native) pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/000077500000000000000000000000001362540622500173375ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/addon.xml.in000066400000000000000000000717771362540622500215760ustar00rootroot00000000000000 @ADDON_DEPENDS@ PVR kliënt om VDR te konnekteer aan Kodi oor die VNSI koppelvlak PVR client to connect VDR to Kodi over the VNSI interface Клиент за ПВР за свързване на „VDR“ към Kodi чрез интерфейса VNSI Client PVR per connectar VDR a Kodi sobre la interfície VNSI Klient PVR pro připojení VDR ke Kodi přes rozhraní VNSI Rhaglen Recordydd i gysylltu VDR â Kodi dros rhyngwyneb VNSI PVR klient som forbinder VDR til Kodi over VNSI grænsefladen PVR-Client, der einen VDR über das VNSI-Interface mit Kodi verbindet. Πελάτης PVR για σύνδεση του VDR στο Kodi διαμέσου του VNSI PVR client to connect VDR to Kodi over the VNSI interface PVR client to connect VDR to Kodi over the VNSI interface PVR client to connect VDR to Kodi over the VNSI interface PVR client to connect VDR to Kodi over the VNSI interface Cliente PVR para conectar VDR a Kodi sobre la interfaz VNSI Cliente PVR para conectar VDR a Kodi sobre la interfaz VNSI Cliente PVR para conectar VDR a Kodi a través de la interfaz VNSI PVR'i klient ühendamaks VDR Kodiga üle VNSI liidese Kodin VDR (VNSI) -asiakasohjelma Client de numériscope pour connecter VDR à Kodi par une interface VNSI. Client enregistreur vidéo (PVR) connectant un enregistreur de disque vidéo à Kodi via l'interface d'enregistrement de flux réseau vidéo Cliente PVR que conecta VDR ao Kodi mediante a interface VNSI לקוח טלוויזיה חיה עבור VDR בממשק VNSI PVR klijent za povezivanje VDR na Kodi putem VNSI sučelja PVR ügyfél a VDR és az Kodi VNSI interfészen keresztüli csatlakoztatásához Klien PVR untuk mengkoneksikan VDR dengan Kodi melalui antarmuka VNSI Upptökuþjónn til að tengja VDR við Kodi í gegnum VNSI-viðmót Cliente PVR per connettere VDR a Kodi attraverso l'interfaccia VNSI VNSIインタフェースでVDRをKodiに接続するためのPVRクライアント PVR client to connect VDR to Kodi over the VNSI interface PVR klientas, skirtas prijungti VDR prie Kodi per VNSI sąsają PVR klients, lai pieslēgtu VDR pie Kodi, izmantojot VNSI saskarni PVR клиент за поврзување со Kodi преку VNSI интерфејс Klien PVR untuk sambungkan VDR ke Kodi menerusi antaramuka VNSI PVR-klient for å koble VDR til Kodi over VNSI-grensesnittet PVR-client om VDR te verbinden met Kodi op de VNSI-interface Klient telewizji dla VDR wykorzystujący interfejs VNSI Cliente PVR para conectar VDR ao Kodi sobre interface VNSI Cliente PVR para ligar VDR ao Kodi através da interface VNSI Client PVR pentru conectare VDR la Kodi folosind interfaţa VNSI PVR клиент для подключения VDR к Kodi через интерфейс VNSI PVR klientská aplikácia na pripojenie VDR servera do Kodi prostredníctvom rozhrania VNSI Odjemalec PVR za povezavo VDR in Kodija preko vmesnika VNSI Klient PVR për lidhjen e VDR dhe Kodi mbi ndërfaqjen VNSI PVR клијент за повезивање VDR са Kodi преко VNSI интерфејса PVR klijent za povezivanje VDR sa Kodi preko VNSI interfejsa PVR-klient för att ansluta VDR till Kodi över VNSI-gränsnittet Klijynt telewizyje do skuplowaniŏ VDR bez interfejs VNSI Kayıt Sunucusu VDR'ye Kodi'yle VNSI Arayüzü Üzerinden Bağlanır Клієнт PVR для зв’язку VDR з Kodi через інтерфейс VNSI Trình PVR để kết nối VDR với Kodi qua giao tiếp VNSI 让 Kodi 通过 VNSI 界面与 VDR 连接的 PVR 客户端 經由VNSI界接VDR到Kodi的PVR用戶端 VDR voorprogram; ondersteun stroom van Lewendige TV & Opnames, EPG, Tydhouers oor die VNSI byvoegsel VDR frontend; supporting streaming of Live TV & Recordings, EPG, Timers over the VNSI plugin Клиент за „VDR“. Поддържа телевизия на живо и записване, електронен програмен справочник и броячи чрез използване на приставката „VNSI“. Frontal de VDR; és compatible amb les transmissions en línia de TV en directe i enregistraments, guia electrònica de programació (EPG), temporitzadors sobre el connector VNSI Rozhraní VDR; podporuje streamování živého vysílání a nahrávání, televizní program, časovače přes doplněk VNSI Blaen VDR; cynnal ffrydio Teledu Byw, Recordio, Amserlenni, Amseryddion dros ategyn VNSI VDR frontend; understøtter streaming af TV og Optagelser, EPG og Timere over VNSI-addon VDR-Oberfläche: Erlaubt die Wiedergabe von Live-TV und Aufnahmen sowie die Anzeige des EPG, die Kanalsuche und die Programmierung von Timern über das VNSI-Plugin. Frontend για το VDR. Υποστηρίζει ροές Live TV & Εγγραφές, Χρονοδιακόπτες διαμέσου του plugin VNSI VDR frontend; supporting streaming of Live TV & Recordings, EPG, Timers over the VNSI plugin VDR frontend; supporting streaming of Live TV & Recordings, EPG, Timers over the VNSI plugin VDR frontend; supporting streaming of Live TV & Recordings, EPG, Timers over the VNSI plugin VDR frontend; supporting streaming of Live TV & Recordings, EPG, Timers over the VNSI plugin Front-end VDR, soporte de streaming de televisión en vivo y grabaciones, GEP, temporizador con el plugin VNSI Front-end VDR, soporte de streaming de televisión en vivo y grabaciones, EPG, temporizador con el plugin VNSI Interfaz VDR; Soportando streaming de TV en directo y Grabaciones, EPG, Timers sobre el plugin VNSI VDR-asiakasohjelma. Tukee suorien tv-lähetysten ja tallennusten katsomista, ohjelmaopasta ja ohjelmien ajastamista. Frontale VDR, prenant en charge la diffusion en continu des télés en direct et les enregistrements, le GÉP, les minuteries avec le plugiciel VNSI. Interface logicielle pour enregistreur de disque vidéo (VDR). Il gère la lecture et l'enregistrement en continu des flux de TV en direct, le guide électronique des programmes TV et les programmations via les routines d'enregistrement de flux réseau vidéo. Interface VDR; soporta a transmisión de TV en directo e gravacións, Guía de programación e temporizadores mediante o engadido de VNSI לקוח טלוויזיה חיה של VDR. בעזרת התוסף VNSI לשרת VDR הלקוח תומך בהזרמת שידורים חיים והקלטות, האזנה לרדיו, הצגת לוח שידורים ותזמון הקלטות. VDR pozadinski softver; podržava streamanje televizije, snimanje, EPG, zakazania snimanja preko VNSI dodatka VDR előtét. Élő adások és felvételek támogatása EPG-vel és időzítéssel a VNSI kiegészítőn keresztül Frontend VDR; Mendukung pengaliran Siaran TV langsung dan Rekaman, EPG, Timer melalui plugin VNSI VDR-framendi; styður streymingu á beinum útsendingum og upptökum, rafræna EPG-sjónvarpsvísa, tímatöku í gegnum VNSI-viðbótina Frontend VDR; supporta lo streaming di Live TV e le registrazioni, EPG e timer sul plugin VNSI VDR フロントエンド : ライブテレビのストリーミングや録画、EPG、VNSIプラグイン上のタイマーをサポートしています。 VDR 프론트엔드; TV 시청 & 녹화, EPG, VNSI 플러그인을 통한 타이머 지원 VDR naudotojo sąsaja; palaiko TV transliacijas ir laidų įrašymą, EPG ir laikmačiius per VNSI įskiepį VDR galasistēma; atbalsta tiešraides TV un ierakstu straumēšanu, EPG, taimerus no VNSI spraudņa VDR интерфејс; подржува стриминг на Live TV и снимки, EPG тајмери преку VNSI додаток Bahagian hadapan VDR; menyokong penstirman TV Langsung & Rakaman, EPG, Pemasa menerusi pemalam VNSI VDR-grenseflate; støtte for visning av direkte-TV og opptak, EPG og tidtakere over VNSI-tillegget VDR frontend: ondersteunt streaming van Live TV & Recordings, EPG, Timers over de VNSI plugin Klient telewizji dla VDR obsługuje transmisję kanałów radiowych i telewizyjnych, nagrywanie i harmonogram nagrań oraz funkcje przewodnika telewizyjnego przy wykorzystaniu wtyczki VNSI dla VDR Frontend VDR; suporta streaming de TV ao vivo e gravações, EPG, agendamentos sobre o plugin VNSI Frontend VDR; suporta transmissão de Live TV e Gravações, EPG e Temporizadores através do plugin VNSI Frontend VDR; suportă streaming de TV Live & Înregistrări, EPG, Cronometre folosind pluginul VNSI VDR фронтэнд; поддерживает потоковое TV, запись, ЕПГ, таймеры через VNSI плагин VDR rozhranie; je podporované streamovanie živého televízneho vysielania a nahrávok, EPG, časovačov prostredníctvom modulu VNSI Vmesnik za VDR; podpira pretakanje televizije v živo & posnetkov, EPG, časovnike preko vtičnika VNSI VDR frontend, që lejon transmetimin e Live TV'së & Regjistrime, EPG, Timer, nëpërmes shtesës VNSI VDR интерфејс; подржава стримовање ТВ Уживо & Снимака, EPG, Тајмере преко VNSI VDR interfejs; podržava strimovanje TV Uživo & Snimaka, EPG, Tajmere preko VNSI VDR frontend; stödjer strömning av Live-TV & inspelningar, EPG, timers över VNSI-tillägget Klijynt telewizyjny dlŏ VDR podpiyrŏ szpricowanie kanałōw radyjowych i telewizyjnych, nagrowanie i harmōnogram nagrań i funkcyje EPG przi wyużyciu sztekra VNSI dlŏ VDR VDR ön ucu; Canlı TV akışı ve kayıt yapabilme, EPG, VNSI eklentisi üzerinden zamanlayıcıları destekler. Надстройка над VDR; підтримує потік TV і записів, EPG, таймерів через додаток VNSI Giao tiếp cho VDR; hỗ trợ truyền phát và thu chương trình Live TV, hẹn giờ và hiển thị lịch trình chiếu (EPG) thông qua plugin VNSI VDR 前端,通过 VNSI 插件支持直播电视和录像流媒体、电子节目单、定时器 VDR前端,在VNSI插件上支援的串流媒體包括有:電視直播和錄影,電子節目表,定時器。 Hierdie is onstabiele sagteware! Die outeurs is op geen manier verantwoordelik vir gefaalde opnames, inkorrekte tydhouers, gemorsde ure, of enige ander ongewensde effekte. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. Тази програма е нестабилна! Авторите не носят отговорност за неуспешно записване, некоректни броячи, пропиляно време и други нежелани ефекти. Això és programari inestable! Els autors no són de cap manera responsables dels enregistraments que han fallat, temporitzadors incorrectes, hores perdudes, o qualsevol altre efecte indesitjat.. Tento software není stabilní! Autoři nejsou žádným způsobem zodpovědní za neúspěšná nahrávání, chybné časovače, ztracený čas nebo jakékoliv jiné nežádoucí výsledky… Mae hwn yn feddalwedd ansad! Nid yw'r awduron yn gyfrifol mewn unrhyw ffordd am fethu recordio, amseru gwallus, oriau wedi eu gwastraffu nac effeithiau anymunol eraill. Dette er ustabil software! Ophavsmændene er på ingen måde ansvarlige for mislykkede optagelser, ukorrekte timere, spildte timer, eller andre uønskede konsekvenser.. Diese Software ist noch in der Entwicklung! Die Autoren sind nicht für fehlgeschlagene Aufnahmen, falsche Timer, verschwendete Zeit oder andere ungewollte Effekte verantwortlich. Ασταθές πρόγραμμα! Οι δημιουργοί δεν είναι σε καμία περίπτωση υπεύθυνοι για αποτυχημένες εγγραφές, λανθασμένους χρονοδιακόπτες, χαμένες ώρες, ή κάθε είδους ανεπιθύμητα αποτελέσματα.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. This is unstable software! The authors are in no way responsible for failed recordings, incorrect timers, wasted hours, or any other undesirable effects.. ¡Este software es inestable! Los autores no se responsabilizan por grabaciones fallidas, temporizadores incorrectos, horas perdidas, o cualquier otro efecto no deseado.. ¡Este software es aún inestable! Los autores no son responsables en forma alguna por grabaciones fallidas, temporizaciones incorrectas, tiempo perdido o ningún otro efecto no deseado. ¡Esto es software inestable! Los autores no son de ninguna manera responsables por grabaciones fallidas, temporizadores incorrectos, horas perdidas o cualquier otro efecto no deseado... See on ebastabiilne tarkvara! Autorid ei ole kuidagi moodi vastutavad nurjunud salvestiste, ebaõige aegrelee, raisatud tundide ega muude soovimatute asjade eest. Software hau ezegonkorra da! Egilea ez da arduratzen grabazio-erroreetaz, kronometro-erroreetaz, ordu galduetaz edo beste edozein ondorio ezerosoetaz. Tämä on epävakaa ohjelma! Sen tekijät eivät ole millään muotoa vastuussa epäonnistuneista tallennuksista, virheellisistä ajastuksista, haaskatusta ajasta, verenpaineen noususta tai mistään muusta epäsuotuisasta vaikutuksesta. Ce logiciel est instable ! Les auteurs ne sont aucunement responsables des enregistrements défaillants, des minuteries erronées, des heures perdues ou tout autre effet indésirable. Logiciel en cours d'élaboration ! Les auteurs ne sont en aucun cas responsables de l'échec des enregistrements, programmations défectueuses, temps perdu ou autres effets indésirables. Software non estable, os autores non se fan responsábeis dos erros na gravacións, temporizadores incorrectos, e outros efectos non desexados. זוהי איננה הרחבה יציבה! המפתחים אינם אחראים על כשלון בניגון, זמנים שגויים במדריך השידורים, שעות מבוזבזות או כל תופעה לא רצויה אחרת. Ovo je nestabilan softver! Autori nisu na koji način odgovorani za neuspjele snimke, netočna vremena, izgubjene sate, ili bilo koje druge neželjene učinke... Ez nem stabil szoftver! A készítők nem vállalnak felelősséget, a hibás felvételért, rossz időzítésért, elvesztegetett időért... Սա անկայուն ծրագրային ապահովում է: Հեղինակները պատասխանատու չեն վատ ձայնագրումների, սխալ ժամանակացույցերի, կորած ժամանակի կամ այլ ոչ ցանկալի երևույթների համար: Ini merupakan software yang tidak stabil! Penulis tidak bertanggung jawab untuk rekaman gagal, timer salah, waktu terbuang, atau efek tak diinginkan lainnya... Þetta er óstöðugur hugbúnaður! Höfundarnir eru á engan hátt ábyrgir fyrir misheppnuðum upptökum, röngum upptökutímum, klukkustundum sem að fóru í súginn eða nokkrum öðrum óæskilegum afleiðingum. Questo programma non è stabile! Gli autori non sono in alcun modo responsabili per registrazioni fallite, timer non corretti, ore perse, o altri effetti indesiderati.. これは不安定なソフトウェアです!本プログラムの作者は、録画の失敗、正確に作動しなかったタイマー、無駄にした時間、その他あらゆる好ましくない結果について責任を負わないものとします。 이 소프트웨어는 불안정합니다! 제작자는 녹화 실패, 부정확한 타이머, 시간 낭비 및 기타 예상하지 못한 결과에 대해 책임지지 않습니다.. Tai yra nestabili programinė įranga! Autorius jokiu būdu neatsakingas už nepavykusius įrašus, neteisingus laikmačius, iššvaistytas valandas, ar nutikus kitiems nepageidaujamiems poveikiams ...[COLOR=red](Kodi.lt siūlo/rekomenduoja testuojant šį priedą persijungti į Anglų [orinali] kalbą)[/COLOR] Šī ir nestabila programmatūra! Autori nav atbildīgi par nesanākušiem ierakstiem, nepareiziem taimeriem, iztērētām stundām vai jebkādiem citiem nevēlamiem efektiem.. Ова е нестабилен софтвер! Авторите не се во никој случај одговорни за неуспешни снимања, грешни тајмери, други непосакувани ефекти... Тус програм нь гүйцэд хийгдэж дуусаагүй! Зохиогч нь алдаатай бичлэг, цагийн буруу хөтлөлт, алдагдсан цаг хугацаа эсвэл бусад ямар нэгэн хүсээгүй үр дүнд хариуцлага хүлээхгүй. Ini merupakan perisian tidak stabil! Pengarang tidak bertanggungjawab atas kegagalan rakaman, pemasa tidak betul, masa yang dibazirkan, atau apa jua kesan yang tidak dikehendaki.. Dan il-programm mhuwiex stabbli! L-Awturi m'humiex responsabbli bl-ebda mod għal rekordings li ma jirnexxewx, arloġġi żbaljati, siegħat moħlija, jew kwalunkwe effett ieħor mhux mixtieq. Dette er ustabilt programvare! Forfatterne er ikke ansvarlig på noen måte for ødelagte opptak, uriktige tidsur, bortkastede timer, eller andre uønskede hendelser… Dit is instabiele software! De auteurs zijn op geen enkele wijze verantwoordelijk voor mislukte opnames, onjuiste timers, verspilde uren, of andere ongewenste effecten .. Oprogramowanie nadal jest w fazie rozwoju i jest niestabilne! Autorzy w żaden sposób nie są odpowiedzialni za nieudane nagrania, błędy w harmonogramie nagrań, zmarnowany czas ani jakiekolwiek inne niepożądane efekty. Este é um software instável! Os autores não são responsáveis por gravações com falhas, agendamentos incorretos, tempo desperdiçado, ou quaisquer outros efeitos indesejáveis... Este software é instável! Os autores não são responsáveis por falhas na gravação, temporizadores incorretos, horas perdidas ou outro qualquer efeito não desejado... Acesta nu este o aplicație definitivă! Autorii nu sunt în nici un fel responsabili pentru înregistrări eșuate, cronometre incorecte, ore pierdute, sau orice alte efecte nedorite... Это тестовая программа! Авторы не несут никакой ответственности за испорченные записи, неверные таймеры, потраченное время и прочие нежелательные эффекты.. මෙය අස්ථිර මෘදුකාංගයකි! මෙහි සිදුවන පටිගත කිරීම් අසාර්ථක වීම්, සාවද්‍ය මුහුර්තක, නාස්ති වූ කාලයන්, හෝ වෙනත් යමිකිසි නුසුදුසු බලපෑම් සඳහා කතෘ වග කියනු නොලැබේ. Tento softvér nie je stabilný! Autori nenesú žiadnu zodpovednosť za chybné nahrávky vysielania, nesprávne časovače alebo iné neželané udalosti spôsobené týmto softvérom.. To je nestabilna programska oprema! Avtorji niso odgovorni za neuspela snemanja, nepravilne časovnike, zapravljen čas in katerikoli drug neželen učinek... Ky program nuk është ende stabil! Autorët e këtij programi nuk janë në as një menyr përgjegjës për rregistrime të gabuara, timer të pasaktë, kohë të humbur ose efekte të tilla të padëshirueshme. Овај софтвер је нестабилан! Аутори ни на који начин нису одговорни за неуспела снимања, неисправна заказана снимања, изгубљене сате или друге нежељене ефекте. Овај софтвер је нестабилан! Аутори ни на који начин нису одговорни за неуспела снимања, неисправна заказана снимања, изгубљене сате или друге нежељене ефекте. Detta är instabil mjukvara! Upphovsmännen är inte ansvariga för misslyckade inspelningar, inkorrekta timers, bortslösade timmar, eller någon annan oönskad effekt.. To je niystabilny softwer! Autōry niy sōm ôdpedzialne za niypodarzōne graniy, niynŏleżne godziny EPG, stracōne godziny i inksze niychciane efekty. ఇది అస్థిర సాఫ్ట్వేర్! విఫలమైన రికార్డింగ్లు, తప్పు టైమర్లు, వృధా గంటల, లేదా ఏ ఇతర అవాంఛనీయ ప్రభావాలకు ఏ విధంగా రచయితలు భాద్యుతులు కారు. Ин нармафзори ноустувор аст! Муаллифон барои вайрониҳои сабт, вақтсанҷҳои нодуруст, соатҳои бефоида ва дигар таъсирҳои номатлуб ҷавобгар намебошанд. นี่คือโปรแกรมที่ยังไม่เสถียร! ผู้เขียนไม่อยู่ในทางที่จะรับผิดชอบในการบันทึกที่ล้มเหลว, การตั้งเวลาที่ไม่ถูกต้อง, การเสียเวลา, หรือผลกระทบที่ไม่พึงประสงค์อื่น ๆ.. Bu kararsız bir yazılımdır! Yapımcılar hatalı kayıtlardan, bozuk sürelerden, harcanan vakitten veya herhangi bir olumsuz etkiden dolayı sorumlu tutulamaz. Це нестабільна програма! Автори не несуть відповідальності за попсуті записи, неправильні таймери, втрачений час та інші небажані ефекти. Đây là phần mềm không ổn định! Các tác giả không chịu trách nhiệm đối với các lỗi thu chương trình, hẹn giờ không chính xác, giờ lãng phí, hoặc bất kỳ tác dụng không mong muốn khác.. 这是不稳定版的软件!作者不对录像失败、错误定时造成时间浪费或其它不良影响负责。 這是測試版軟體!其原創作者並無法對於以下情況負責,包含:錄影失敗,不正確的定時設定,多餘時數,或任何產生的其它不良影響... @PLATFORM@ pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/changelog.txt000066400000000000000000000004001362540622500220210ustar00rootroot000000000000003.6.4 - Remove usage of kodi-platform as depend - Add Azure for Windows test builds - Minor cleanups 3.6.3 - With this version, kodi-pvr is upstream repo for this addon again. - Merged sources from FernetMenta/pvr.vdr.vnsi master. - Translation updates. pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/icon.png000066400000000000000000000656661362540622500210200ustar00rootroot00000000000000PNG  IHDR\rf pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F`IDATxwxٷ)%z,^pǦPL)@BH'@$o/$!$/!@BJn`{$꫶23+Ziek=s]sa3gϔ99G4Mc06D]6Pj7)InZ?-.kBkqM_W@1,ʺ%gF/M]@ ȯ#Eޤ y`k_G~/@Aee]: T:_C!,kߨȯ# Fktב_G7P:'C!uב_G>5%@G~uBȯ#.b(վ:ߟoy:uב?زr(_G~uPC!uב@C-+6ȯ#++Bu俘_2rd5#}בF  u׽h(HKG~uNC!Mȯ# #tQ,?`=/C!tkuב?rp]G~u߹ב_G~ґ_G~,%:sq y`w=uב_ol@3^_G~\YYG~u8bX=W֑_G>r EeeuבAee]:r䵯# 1uבPů#Pkm!<X+e~Ō}UБP/_G~]vuב_G}* ?dȯ#EʃU:ȯ7/HCwt=yYG~ux #Fw#:_tFE֑~_YG~P#:_<߹<#'[C!"oRn("b(A-~E_GY6t#' _ב?^_7cTA%~u=yXڂ :ȯ{ P}%~uUxtyYYG~uxsY7#:첲:YG~uO~ r$.#~u EB֑_G~/^"?@#Б_G~P\T&]ȯ_7̨d uEׯ߹'׽n(.C7tב_Gi(zw2:P߹#uCqޙ ytב_7*! 9Ց_G~m{VVGH^÷ݧ!H\1|/h77"Uȇ H(a2a1!Db,dڱŘ,'>Fjn,6dY I'T?dZ FAА (`F1YdLf iQ'YIH&='hS0[ P^+SkBz #X W2K/HxUJp1fh 1),;G_d[n Esg!$bd3tl*#&g0dt2&Ҳc3=) }I&fGӏW_,A,Rb0+ 2|bZ 粂 j/<LD 9_w.B?`gB]?v***x'JFC`K2 ݧ~<klX0TH1bAit}ѕz4ջ8yC$Fmf1odoB YTԳ&d2QvsP0!$ńa$5 +v(JdEM5WQݬ>q+Yvo]￿c~$o7$/gGy7X?JU,6##8cǎE܃kuMŧoѕ~CU4V{/^v3ON`MSo/G 94Զ}kt~OSJlbOҝ8eLX/E<4Xvc@c3NԲkC͍n:~r(>\uM!Uxm<'2*24Vr ZxYv[ѕ[oVw vO/אsY11a޶Ɖ.?hP*+٫9ģœ>pg1Xt\8XK7h\1l㠟s`{)'TJxxՀ}5oB ²?5GΆB x+3 ma!+ާ7Bʷķ g_S7~9 fN>Q@p* e{`׮] ;^bGuFP [?-o .y$  rK{z(oM~"`JĽ1E EmfA_ĖUǩh QƉԧ~ oce9{AA dz9%ւ*zč$`kgh+>,b߹$YG_}֔Q]]MBBB Pc[{`v!Y\^-LфRP| HP"h"`@@ehJok(l?$wrw{ ?{a1/ON!KRϞGMT EQp6yhhpYPmȂ UD B4o<3b6#;nێR~jnU^?oTy/+ rd4K|{ T(x^MɅ⥾ƅQVU/i xȂ E1[~ŭw_555MMAz(㡩:JKK9z#*9GFhNh y#q(/>6k]Ͽ H?Бagҥ]~ 8䲳nvv +]~0d񋂌do$1_ΰaz֞^\CU4MC|^ϫ(\.<ᠺrN)` DG<`Dh5>}7G( 7+T6)) q"hlh|F/oFnn^(F[۹jư~hºֱ!6ػR222Ŋ=}aܱLl^G\̡ QJZ˪Yd,`|~mG>oaۃX᧵\TT&MdҤe/<_JY&/ee>|;\25b?w"PB8'ذ'_a?o]ΑgBF:)a.I0`Ii$9N?իA{ !1){҈R귏R[S3`;J19=pTy;#+n j5d矝a ;h9O ENNiii~uyû˃&*{ٍ#Q1q<՝l2ۗ#H!hlCdžnTؾc@Ю!H DBaÆRW;k4P|dzȏV-ۍ0%ʈ^GNgoձA-)hvאŪwu crL svM#RVV޽{ٹs'{Lyy 8fxND(@E.{*]6`0? (0@[lvͬEJNkiHLLC)vyY`?CbJ~^^?%2y뭷fa6innرc>|TnF.`9Lϖ^8} (߱j_+2\WẸdS(d[ lʂ];S~)ARz4#G[7D%())+$==/HUUy7CoϒٺxșgEfn*'~wj w:{w\y;+w{asK;2āJ`'DeTU>|ĉW ً^~Z{Bh0س4lo0Hn+/ă#en =iV6m/aC- 2IMObhDsciw7|8;FEEgΜ(//Ӝ9st(ϒ^I=aNoo@ElU=WC|+uʼn0P@Ń%J[D#cu#CQQ6܃7 y޿BbJ^~~j񿇩j^J9vN,t>}=)v{_t P)wDΜh[I?c5KS}&"c  Q!#D^@@GZN,gelm`/"*l $AHR#Fti_;;wݳw唖ri***(--h^rm̜+8yr@ [ygwyX& IBBVj֥ÃyqG~M 1# LVvٝCU|*ď>2ÇSRR(477c40LzxI1!~*lYuu{Y`/OI),,De,;҇\JhlldeWms N>Mii)x-ɏ -ƩSF"#=NBjTX"͘PzۯvxsP sy/2Y ̹vxX/ ^F߽c5!⛁F2kĐOyYd2#??!SYYIee%\s wue=e>kFLfA|؝I0PUHccc!gڈC|vrrrB^7u0*MU͋&mX~EXT=lxmgHX ^wYFnfZl* 9xcI&%=n?.'FpI@`()=͞;? I`ɆF-Px9I{x~jOؽ~e{``0JÙ0huu]*>O2 Mr1]rGB6޾p&y9jbmYXƚB䐘WZ&:(<0/>y+vs bOd]?H'9nT5$oYA Yh(fh& D 049 ̞=; m7>!m'j HKQM$elaDJg*X̉"X `'h@ f`3EKDoB?(a—&rs! flCJacڴi C,(na$ rpSd0ݕ߿B 6eʲs/C2#, TkJV*Wn*j?qs\x Fd4ۗ8oQB$c2a„?P;g6j쫇cC 6 "1?\(,,2}sC47{ a vsNV~1ҌɀIhu4yp,8Xc3;WZEeEEpƪ2hS (^D0 G`ܹG.@vbZ4.Hj4>ۇf6շ1y %.(*ߓ9'N,Kx?z c*8 x].O݃G,%c9 H= )S΄F`|H!?z;#G99rhDc-+?=5o!;;߭^_̩#5'?4Mh)*Eu L"t݀S}ib%+.Oƹv}.]<9_ ;]Q|K~'%*9F~߶20wp:hq:iijg3---8iiiLˍWѸE]۷ot+%$5kF"2`F I$_R+LUȢEڂ+@kg$0fZ6~hLռhv֯ĉT u_Ɯ )#Z_ <7Rۚ3oh@. W( ^dʔs՚8quuu -,<9irz"TDIM'O/# hĨFi xIɈ&+k8#GdС?  })phi $;˷@Gϲw^(/A8+(4;[hjj`21sQhۉigg+f2HHz=g/!%%+Vۯ~֬YlqB" IRR2q $&$Nnn>C HB =^.\{u8N֭[Ì0 رjXt9[u13| @va&DaP4dwWvW&{?[DvVV@k} . !PAEEEP| C| yyy~6Ylرclٲ[Tee7܀$/BzF&F EQxx^߂mVDI"11!cq{46;馛ppf̜i^\yߊA| Hd_xxwq0f'#ב5 ːbTS-`@1fJ~q_ճހIc4n~m/GlݲԖPc [?Zoxh4RRZJB|q3ef.8d dfe(9gfryطo/cǍ#!!ǏSRRB\\/"60E{v>vw̙; հn9zVafIBCEռa2~+:6ߑs6NCAH$O V2 ',g抋H;wwſazپ};99[o!-=Qhq=}ONۃ%%5Iinrrۗ߷o3gF4:DLL o6 |d]dV7^<$Ih0`X&!!͛?Lŋjh 4Ը?~G @/#3 c Ջ\!d. 718I)**_]H7祗_d2؈bᨣ.(].7 I"1Q(^y99̝;8$Y]˖/Hk(Xc!*::?:?z~6H)"睊˓cJ{niDS/cV4M%.{/0+CL֌zR3#*h{ԩS˙ ߂ EU(EQZOoPx1d$Im[ZZ멮d2viəS-"gKם I% `;hw>Ti%M)zN@ =!ڎ{pdϙ_J|qqq_І|(***(R@ɩSHĜٳ](MUTou*, (^7cnj&;+ (izٻwo`45ƞ1J|ll,?]wPFG]_5b"w׌EvaBȏv!-D)rv5Wm:5kעi^T)ϧ /AUOŋ%x;&ZmDrgNS|8?Ѝd2!UJw]gx + 5'cIo 9-o`'؎SNxZwmrna1I hȲM TQr3a-&77o*glhhIEM=WxӦEY D)dQ# HLr ^: 'W__"S&M@4_(bHNﲊn ]vpf.WjpF>@?#%9#&$* fv-q?9"2Rt#ڂ݇/bdrix[2.c{+K>l(( I m={*g$ "h[_xOb۶mTWW3uj2ڇLEҜg=͗IjvLD^WkP,}>A @"f!n'̎;m˪0?&4 Bν>"*\TŸ>믟nʪbDzED,>- >kۮ&#J=ncܹ-[D]c,ˤрw_}Q'b{&foc6_\$EfSE5'out̽nxHZX֯O>%s4b2z,~ ll{Dy= "#x"7nvG=I[=yAFl\ ӈ)\:c `޽ݷ͛R[S7.OI@iƙXA#!AJf999Eʵ_w c׷gKf @?!#(2Bz oC%gtMYT%9 _|>^ʞ]1o2D灳$kX|a$[}u|Y:K#Rq̒ L4ɡ&Rcx/dR]ױ@LN3$$&F+ý2:2^ͅ$ 2f &6 -u@jUce1Q{=:4f \{s&(*=i#D\TQHnYEo]!VG"bk,Q $ d$_Y0{}Hb٪`QFZV,;W^?5 OsloeS\m,[ ??P BN\Ӽ4ҕXw2$cn&![fXߡ Pl.npr}+;[r4rl:_}:bQ^T D:s\F~bb `TM^ ^:DTQn C_?лe/?2I#N}?wӧOG {npBjT({(?&`$*$4E>fﴺxvX!u0jC2Pp)GADQ4Em?d"|߱Xyz M44oE1y|g .y8K$2ÎC}ݽI,kTDޭy;C>#B\4U@ <|5w'zjƌznjPp0:@k=k؄/cbcg_͆1* Պffw/2b0t~ j,m4ťݟ٨HQGV?XcqƓcpsO>Z1G-É%v`@N-:񧿑t:eqNpJS_A`I 1Lnd̓O=S3jI qhƙjv99v·{(Z$dߎU0{"cy!|-&379AVvQ~4'0^E,;4e(?OYQbux Mdf^;h J`6XT4$"x%fToP@A|ohET),yMڟo7 f/h+x"ݘFe &7h G8IF^,siXj; ̾v( p'g{sOD;#9?oQC@D38I),,TP^?#M.&)QP-ͣrFA;DɤZ;U'z(bFCuvY12(Ճ[iy4D`n{5Q7Uk#ya,lx}у,13Ą (odv/97j>˷1eĈgȍe,>o˨%5=ğ~octں4M0㰉|-4YA4*!"ΚIVgdDYӞ y N.# UD+t4%sBEmmc9c3`B!oТ̘1c@!w<"`$5W\F`X; d7u. srv*AժtVQ.!/ cMoCDD$(:->[WZp#3#8VmfUYon_47ܼJN7f.cǚSaqEsp,mzA;-@i\S9+ //^_ygAY ״jD HH$b 8W  |P<3F,?̮%  b,ww? kys0|xQhc&`@@u[\8ydyMddJyhh Tkwc 6`1+.XTX$9_;ɚYMvA2 .$!!a@#wSbS#"cCƥlPmlj4a5d /~OFfpdff؋:=ZzKG"&ܶ߇/T?g_B` #z#/pCb%"Uք"Ce_?|(**RFr7o˹A/CcV`TW>2"@<А O- 8"P=y8bڕC5G4'E7ibx_0~eMA|Ȃ1٥M2p g7\Hz@\qF0M3.$0hQAL &ߒAZ >BS Xhm22kVwpj8UE^Cr4`BF .r|{w݃3`+JF͎g3[g[^5cg2.hnd[Ao(O>)DN aJsJ5 >>xHholl_@פfptg֤&2bII;zm0"we+**Yj%(05Mv3w\RSRzE˪Kti$YCY!,a4A0 M&,f3bbٰZXVf39@s]wQv؁)x2}3locYUU 3jaT}N ѓGPyD' B[ujZ*lukZ92,8{p<ؑx6!Rň䈊NGP?\q(R2ʺ[(Sb>S⠢ӑ:E=n;Nx4 &[8dm{K Lфes)9Z,S0:ؐT|}AHA،$E`E558ܑv~秩h">F4ƀek%ot6Ňt;2ǭpxGy!1Y DǙOrimDZ45t 2ώt~'}#uX BB{ZNFd'oxbx GvUݓힲcmױ}4zАdHJf4(cm+/1@7L$kX 1z=*GvWxU@@4LX_1~]pG&y;:ѯ^zg^/MHIww.o{?-pY:߰u8O@0ȟŴy|l[|Όڋxs?Z%CFR(*TWdY M\~]En\B19F;F /,-N/9G&c l|^Bh. LɆ-ʂۥp`}o?Fʷn }U5] />S%%[ #iӿV,$9?^} VVIl$O`ncW|9M6`6)Wei pps=[>*ǜ_{ථͭd(dc(%Х əCQ_??݅!̗wWfgqTgomXO3,Tշ\M |*s7or`QZ[Q+:*r(MhϳۈKV%Srtk;VTϴ-f?[Ga V.nJrp[%#̘u-0-vC+}yxOC*6qwE\\yo'G9yK<պͷja'lOd^@7)gx ̺t>`;1dG`VZ$at[.m *_:qi9c-{6DW /&_ڗ|Fk%w6ۙyF@3a„yn kʗz[)ݴ[z]wt ԍFM$9+ΚQpiIIA|>~7y=sn}FEEs`礧di* q)&r{6њ䲢vwo`ϻ4 \.w{hcfQrvnKzm[D^Gjoc OJeL%.VyٳY[s喛0tH: *&4Vk| c,.9yN#Up;HIl'Nҡxf&*<;1K?qho!Ίf_3^>UǹςbpxC({{4N%gt[ =zѣGu"[?)YJi&\[ 峷i*QjHȑk̽Wbӆ\y<־w-Ysojˬγ˲"Á~iA獧j;ZπZΟטj+xUi]Zl#7!"QYQt?S*c9r>xDt;+n۵Y݂Wsf⢒C? T$76⡉Q/#D 7>i'i🯐Wr:';'+iwi*). @cV%zi"xz?GFr 3][?Kթ/-^7pŠ"cv Ԁ|Ȃ7f@C60;V4h2*.ʲF,4;>mqS|N؇Sʹ[OaĘ!=|G$KdQ})XL_|`>SN ~UDp7sZM~*їrܩ|L #K{m)'5;5h x\fՀ54ϡK5,f/<0I&9-(ȴN4h-TT|Cƒ+*&OQfR0De\2mrXC_$5ΨKϬE /ݥA woys~A5`ۺhTs; Lc|UlYyM${D Q72 Kx/+\VDs/b*T1mА_ٻ$-k|~JdN0b䈠ova$#^-ghNF4n {1{N/aͅ|?&z̽z,WW%,yi)w~eq@زm!h"âE0aV6Yz `%YT5[Pnʵά>!̿} AdoPO3IgӯY}VQ{f s9}WE`Ǧ$fR}uMF2.n?M8кg $fHL馛---ff\1ka)K^\]_]|wvι=0b\T42jF_sY7⎢fN{>Cŋ&#E9D#*|ٯ F̃w˼6^y̷ېWp˽S}Q _,$/OrPNGpqd^Kݶh?1}=؆x4'c+weW1 >;0z~g+iۿ}wnzO2i! Ӄ^w2_.m~/7[M$O;nQ0|z>E3iSS_bDAVߞMU|j&8İC{9?# bPs٤vۘ(\Q1z~-2YDՑ?E"gYVc7߶> )"y3sFNA2EE]&.[<Sz%bl C[0_3gH1&$g@D)]Mw_1c .:΄b/&ghvv;9#)WeOaJv8k=Ԏd+c_13Ri2D e_w7[ ӪI62bl32tr,.qc-,)3A g@1^:kSliJ0ג8ąqk.IvYCQʱ4Q0C/Lfڧ8woD !#η3P޹v(e#"mZ'<~=]y>6kܣGƼnÁ';;b^[ÁiϞÖ=@m!9o[abwM2:EY/|p_ r]=(oܽQ͚WF5kKJ{l-|mQ~zksuu'OީSD/YjSw}=a K :FĶm;rwA1:E̒%usݷ#EbZ%;%P;̚*)ӧEFV?|<iF՟:c3H=gm\wMVv6Iw܁XW~/RLkעy3_z5'N&~O8''0<.ǩ|_{ sρEZt8~5ދjO[7-ֵ{Vv'+VV HO Hra^|Su߱|;˻v}v;ߏXWG3P#4 ԛMwbY@j֥Kq.wa];@I7Pv*[1ލyZ?$o7EwGQgj+'l{ov6 3?@C …8gho7;nCuϷ#|w&׵ypsƌvІm"V;Ld^d s:P z A0~(=DzffxGPcbO3,(!:vy(ڵ4zoݾ:"ڼiZ4u0$eh93m˖ѼhMW7t4T/8ۼrw> GG]?Azӓ$sO`YOʚ֬A,oؽuTv,Z\Qp8=z411ca?bl`.bbss gYFGmxuiq ݎ>:)?L;v3f%Ko"|/5.X@X֯'᷿Ŵg vNj0UH?QֺZ:%۞mۿ{3كNQN¸g?pu6rkX֭ÓEݽ펵nojӂ~ m׏YwӧS~c; utZt$MyӚ5>o)Ɓ3î]~Ř֬i}]|CS3gyZTE|Xڏ]f"G-3gvEh;￟ٳ-ӆcrM{?.5j@8m݊FYӝ3fymWQrcqp3h#D݆@ݔu.Z\\L.ÛGPײlMw۽kw܁7;㏷ -_:hl赼4/ZDk?1e˨nMXfe=2A#yS[l˗cyj#ш{,~=YY>rD~]֣C1ۯ˛4B jM j#SOVVD҂E'w,oZƇmc(2k?W"u 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR የ ጋባዥ ስም ወይንም IP" msgctxt "#30002" msgid "Priority" msgstr "ቅድሚያ" msgctxt "#30003" msgid "Character Set Conversion" msgstr "የ ባህሪ ማሰናጃ መቀየሪያ" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "ግንኙነት ጊዜው አልፏል (ሰ)" msgctxt "#30007" msgid "VDR recordings directory" msgstr "የ VDR መቅረጫ ዳይሬክቶሪ" msgctxt "#30008" msgid "Channel search" msgstr "ጣቢያ መፈለጊያ" msgctxt "#30009" msgid "Channel search - Settings" msgstr "ጣቢያ መፈለጊያ - ማሰናጃ" msgctxt "#30010" msgid "Start Channel search" msgstr "ጣቢያ መፈለጊያ ማስጀመሪያ " msgctxt "#30011" msgid "Source Type" msgstr "የምንጩ አይነት " msgctxt "#30012" msgid "TV channels" msgstr "የቲቪ ጣቢያ " msgctxt "#30013" msgid "Radio channels" msgstr "የሬዲዮ ጣቢያ" msgctxt "#30014" msgid "FTA channels" msgstr "የ FTA ጣቢያዎች" msgctxt "#30016" msgid "HD channels" msgstr "የ HD ጣቢያዎች" msgctxt "#30017" msgid "Country" msgstr "አገር" msgctxt "#30024" msgid "Back" msgstr "ወደ ኋላ" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "ጣቢያ መፈለጊያ - በማስኬድ ላይ... %i %%" msgctxt "#30026" msgid "Type:" msgstr "አይነት :" msgctxt "#30027" msgid "Device:" msgstr "አካል :" msgctxt "#30028" msgid "Scan: %i" msgstr "ማሰሻ : %i" msgctxt "#30030" msgid "New channels: %i" msgstr "አዲስ ጣቢያዎች : %i" msgctxt "#30031" msgid "All channels: %i" msgstr "ሁሉንም ጣቢያዎች : %i" msgctxt "#30035" msgid "New channels" msgstr "አዲስ ጣቢያዎች" msgctxt "#30036" msgid "Channel search - Finished" msgstr "ጣቢያ መፈለጉን - ጨርሷል " msgctxt "#30037" msgid "No device available - exiting" msgstr "ዝግጁ አካል አልተገኘም - በመውጣት ላይ " msgctxt "#30039" msgid "Running" msgstr "በማስኬድ ላይ" msgctxt "#30041" msgid "Finished" msgstr "ጨርሷል " msgctxt "#30101" msgid "Setup" msgstr "ማዋቀሪያ " msgctxt "#30108" msgid "Channels" msgstr "ጣቢያዎች" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ar_sa/000077500000000000000000000000001362540622500276315ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ar_sa/strings.po000066400000000000000000000023561362540622500316700ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Arabic (Saudi Arabia) (http://www.transifex.com/projects/p/kodi-main/language/ar_SA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ar_SA\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "مهلة(ات) الاتصال" msgctxt "#30012" msgid "TV channels" msgstr "محطات TV" msgctxt "#30013" msgid "Radio channels" msgstr "محطات الإذاغة" msgctxt "#30017" msgid "Country" msgstr "البلد" msgctxt "#30024" msgid "Back" msgstr "خلف" msgctxt "#30026" msgid "Type:" msgstr "النوع:" msgctxt "#30039" msgid "Running" msgstr "%i جزء" msgctxt "#30101" msgid "Setup" msgstr "إعدادات" msgctxt "#30108" msgid "Channels" msgstr "محطات" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.az_az/000077500000000000000000000000001362540622500276505ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.az_az/strings.po000066400000000000000000000014211362540622500316770ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Azerbaijani (Azerbaijan) (http://www.transifex.com/projects/p/kodi-main/language/az_AZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: az_AZ\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30017" msgid "Country" msgstr "Ölkə" msgctxt "#30026" msgid "Type:" msgstr "Növ:" msgctxt "#30108" msgid "Channels" msgstr "Kanallar" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.be_by/000077500000000000000000000000001362540622500276245ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.be_by/strings.po000066400000000000000000000100731362540622500316560ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Belarusian (Belarus) (http://www.transifex.com/projects/p/kodi-main/language/be_BY/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: be_BY\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Hostname or IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Port" msgctxt "#30002" msgid "Priority" msgstr "Priority" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Character Set Conversion" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Connect timeout (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Read recordings from directory" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR recordings directory" msgctxt "#30008" msgid "Channel search" msgstr "Channel search" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Channel search - Settings" msgctxt "#30010" msgid "Start Channel search" msgstr "Start Channel search" msgctxt "#30011" msgid "Source Type" msgstr "Source Type" msgctxt "#30012" msgid "TV channels" msgstr "TV channels" msgctxt "#30013" msgid "Radio channels" msgstr "Radio channels" msgctxt "#30014" msgid "FTA channels" msgstr "FTA channels" msgctxt "#30015" msgid "Scrambled channels" msgstr "Scrambled channels" msgctxt "#30016" msgid "HD channels" msgstr "HD channels" msgctxt "#30017" msgid "Country" msgstr "Country" msgctxt "#30018" msgid "Cable Inversion" msgstr "Cable Inversion" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cable Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Cable modulation" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr Inversion" msgctxt "#30022" msgid "Satellite" msgstr "Satellite" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC Type" msgctxt "#30024" msgid "Back" msgstr "Back" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Channel search - running... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Type:" msgctxt "#30027" msgid "Device:" msgstr "Device:" msgctxt "#30028" msgid "Scan: %i" msgstr "Scan: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "New channels: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "All channels: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analog TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analog Radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "New channels" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Channel search - Finished" msgctxt "#30037" msgid "No device available - exiting" msgstr "No device available - exiting" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "No DVB-S2 device available - trying fallback to DVB-S" msgctxt "#30039" msgid "Running" msgstr "Running" msgctxt "#30040" msgid "Stopped" msgstr "Спынены" msgctxt "#30041" msgid "Finished" msgstr "Finished" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Channel search - Canceled" msgctxt "#30043" msgid "Channel search - Error" msgstr "Channel search - Error" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Злучэньне да VDR сэрвэра згублена" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Злучэньне да VDR сэрвэра адноўлена" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Create channel groups automatically on the server" msgctxt "#30101" msgid "Setup" msgstr "Setup" msgctxt "#30108" msgid "Channels" msgstr "Channels" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.bg_bg/000077500000000000000000000000001362540622500276045ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.bg_bg/strings.po000066400000000000000000000155171362540622500316460ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/kodi-main/language/bg_BG/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bg_BG\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Име на хоста или IP-адрес на VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Порт за VNSI" msgctxt "#30002" msgid "Priority" msgstr "Приоритет" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Преобразуване на знаковия набор" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Време на изчакване при свързване (сек)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Четене на записите от папката" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Папка за записи на VDR" msgctxt "#30008" msgid "Channel search" msgstr "Търсене на канали" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Търсене на канали – Настройки" msgctxt "#30010" msgid "Start Channel search" msgstr "Начало на търсенето на канали" msgctxt "#30011" msgid "Source Type" msgstr "Вид на източника" msgctxt "#30012" msgid "TV channels" msgstr "ТВ канали" msgctxt "#30013" msgid "Radio channels" msgstr "Радио канали" msgctxt "#30014" msgid "FTA channels" msgstr "Безплатни канали" msgctxt "#30015" msgid "Scrambled channels" msgstr "Кодирани канали" msgctxt "#30016" msgid "HD channels" msgstr "Канали с високо качество" msgctxt "#30017" msgid "Country" msgstr "Страна" msgctxt "#30018" msgid "Cable Inversion" msgstr "Кабелна инверсия" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Символна кабелна скорост" msgctxt "#30020" msgid "Cable modulation" msgstr "Кабелна модулация" msgctxt "#30021" msgid "Terr Inversion" msgstr "Наземна инверсия" msgctxt "#30022" msgid "Satellite" msgstr "Сателит" msgctxt "#30023" msgid "ATSC Type" msgstr "Вид ATSC" msgctxt "#30024" msgid "Back" msgstr "Назад" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Търсене на канали… %i %%" msgctxt "#30026" msgid "Type:" msgstr "Вид:" msgctxt "#30027" msgid "Device:" msgstr "Устройство:" msgctxt "#30028" msgid "Scan: %i" msgstr "Сканиране: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Сигнал: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Нови канали: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Всички канали: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Аналогова телевизия" msgctxt "#30033" msgid "Analog Radio" msgstr "Аналогово радио" msgctxt "#30034" msgid "Transponder:" msgstr "Транспондер:" msgctxt "#30035" msgid "New channels" msgstr "Нови канали" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Търсенето на канали приключи" msgctxt "#30037" msgid "No device available - exiting" msgstr "Няма налично устройство. Излизане…" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Няма налично устройство, поддържащо DVB-S2. Ще се направи опит за ползване на DVB-S." msgctxt "#30039" msgid "Running" msgstr "В процес на работа" msgctxt "#30040" msgid "Stopped" msgstr "Спряно" msgctxt "#30041" msgid "Finished" msgstr "Завършено" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Търсенето на канали е отменено" msgctxt "#30043" msgid "Channel search - Error" msgstr "Грешка при търсенето на канали" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Връзката със сървъра на VDR се разпадна" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Връзката със сървъра на VDR е възстановена" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Автоматично създаване на групи от канали на сървъра" msgctxt "#30047" msgid "Request Timeshift" msgstr "Изискване на изместване във времето" msgctxt "#30048" msgid "Path to channel icons" msgstr "Път до иконките за каналите" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC адрес на сървъра на VDR за включване по LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "Екранно меню на VDR" msgctxt "#30101" msgid "Setup" msgstr "Настройка" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Управление на екранното меню – натиснете инфо, за да излезете" msgctxt "#30103" msgid "Select to control OSD" msgstr "Изберете, за да управлявате екранното меню" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Режим на изместване във времето" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Буфер за изместване във времето (RAM) x100 МБ" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Буфер за изместване във времето (файл) x1 ГБ" msgctxt "#30107" msgid "VDR Admin" msgstr "Администриране на VDR" msgctxt "#30108" msgid "Channels" msgstr "Канали" msgctxt "#30109" msgid "Provider whitelist" msgstr "Бял списък с доставчици" msgctxt "#30110" msgid "Channel blacklist" msgstr "Черен списък с канали" msgctxt "#30111" msgid "Channel filters" msgstr "Филтри на каналите" msgctxt "#30112" msgid "Radio Channels" msgstr "Радио канали" msgctxt "#30113" msgid "Save filters" msgstr "Запазване на филтрите" msgctxt "#30114" msgid "Provider Unknown" msgstr "Неизвестен доставчик" msgctxt "#30200" msgid "Single" msgstr "Единичен" msgctxt "#30201" msgid "Repeating" msgstr "Повтаряем" msgctxt "#30204" msgid "Search EPG" msgstr "Търсене в справочника" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.bs_ba/000077500000000000000000000000001362540622500276125ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.bs_ba/strings.po000066400000000000000000000021151362540622500316420ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/projects/p/kodi-main/language/bs_BA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bs_BA\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgctxt "#30012" msgid "TV channels" msgstr "TV Kanali" msgctxt "#30013" msgid "Radio channels" msgstr "Radio Kanali" msgctxt "#30017" msgid "Country" msgstr "Država" msgctxt "#30026" msgid "Type:" msgstr "Tip:" msgctxt "#30039" msgid "Running" msgstr "Pokretanje" msgctxt "#30101" msgid "Setup" msgstr "Konfiguracija" msgctxt "#30108" msgid "Channels" msgstr "Kanali" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ca_es/000077500000000000000000000000001362540622500276165ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ca_es/strings.po000066400000000000000000000132541362540622500316540ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Catalan (Spain) (http://www.transifex.com/projects/p/kodi-main/language/ca_ES/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca_ES\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nom d'amfitrió o IP de VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Port VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioritat" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversió del conjunt de caràcters" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Temps d'expiració de la connexió (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Llegeix els enregistraments del directori" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Directori d'enregistraments VDR" msgctxt "#30008" msgid "Channel search" msgstr "Cerca del canal" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Cerca de canals - Opcions" msgctxt "#30010" msgid "Start Channel search" msgstr "Inicia la cerca del canal" msgctxt "#30011" msgid "Source Type" msgstr "Tipus d'origen" msgctxt "#30012" msgid "TV channels" msgstr "Canals de TV" msgctxt "#30013" msgid "Radio channels" msgstr "Emissores de ràdio" msgctxt "#30014" msgid "FTA channels" msgstr "Canals FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "Canals codificats" msgctxt "#30016" msgid "HD channels" msgstr "Canals HD" msgctxt "#30017" msgid "Country" msgstr "País" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversió del cable" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cable Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulació del cable" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversió Terr" msgctxt "#30022" msgid "Satellite" msgstr "Satèl·lit" msgctxt "#30023" msgid "ATSC Type" msgstr "Tipus ATSC" msgctxt "#30024" msgid "Back" msgstr "Enrere" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Cerca de canals - En execució... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipus:" msgctxt "#30027" msgid "Device:" msgstr "Dispositiu:" msgctxt "#30028" msgid "Scan: %i" msgstr "Exploració: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Senyal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Canals nous: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Tots els canals: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV analògica" msgctxt "#30033" msgid "Analog Radio" msgstr "Ràdio analògica" msgctxt "#30034" msgid "Transponder:" msgstr "Transponedor:" msgctxt "#30035" msgid "New channels" msgstr "Canals nous" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Cerca del canal - Finalitzada" msgctxt "#30037" msgid "No device available - exiting" msgstr "No hi ha cap dispositiu disponible - sortint" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Dispositiu DVB-S2 no disponible - intentant tornar a DVB-S" msgctxt "#30039" msgid "Running" msgstr "En execució" msgctxt "#30040" msgid "Stopped" msgstr "Aturat" msgctxt "#30041" msgid "Finished" msgstr "Finalitzat" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Cerca del canal - Cancel·lat" msgctxt "#30043" msgid "Channel search - Error" msgstr "Cerca de canals - Error" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "S'ha perdut la connexió amb el servidor VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "S'ha restaurat la connexió amb el servidor VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Crea grups de canals de forma automàtica al servidor" msgctxt "#30047" msgid "Request Timeshift" msgstr "Sol·licita els salts en el temps" msgctxt "#30048" msgid "Path to channel icons" msgstr "Camí a les icones del canal" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC del servidor VDR per Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "OSD de VDR" msgctxt "#30101" msgid "Setup" msgstr "Configuració" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Control d'OSD - premeu info per a sortir" msgctxt "#30103" msgid "Select to control OSD" msgstr "Selecciona per controlar OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Mode dels salts en el temps" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Memòria intermèdia dels salts en el temps (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Memòria intermèdia dels salts en el temps (fitxer) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Administrador VDR" msgctxt "#30108" msgid "Channels" msgstr "Canals" msgctxt "#30109" msgid "Provider whitelist" msgstr "Llista blanca de proveïdors" msgctxt "#30110" msgid "Channel blacklist" msgstr "Llista negra de canals" msgctxt "#30111" msgid "Channel filters" msgstr "Filtres dels canals" msgctxt "#30112" msgid "Radio Channels" msgstr "Emissores de ràdio" msgctxt "#30113" msgid "Save filters" msgstr "Desa els filtres" msgctxt "#30114" msgid "Provider Unknown" msgstr "Proveïdor desconegut" msgctxt "#30200" msgid "Single" msgstr "Individual" msgctxt "#30201" msgid "Repeating" msgstr "Repetició" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Cerca l'EPG" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.cs_cz/000077500000000000000000000000001362540622500276455ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.cs_cz/strings.po000066400000000000000000000136321362540622500317030ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/kodi-main/language/cs_CZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs_CZ\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Název hostitele nebo adresa IP VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Port VNSI" msgctxt "#30002" msgid "Priority" msgstr "Priorita" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Převod znakové sady" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Časový limit spojení (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Načíst nahrávky ze složky" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Adresář nahrávek VDR" msgctxt "#30008" msgid "Channel search" msgstr "Hledání kanálů" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Hledání kanálů – Nastavení" msgctxt "#30010" msgid "Start Channel search" msgstr "Spustit hledání kanálů" msgctxt "#30011" msgid "Source Type" msgstr "Typ zdroje" msgctxt "#30012" msgid "TV channels" msgstr "Televizní kanály" msgctxt "#30013" msgid "Radio channels" msgstr "Rozhlasové kanály" msgctxt "#30014" msgid "FTA channels" msgstr "Nekódované kanály" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kódované kanály" msgctxt "#30016" msgid "HD channels" msgstr "HD kanály" msgctxt "#30017" msgid "Country" msgstr "Země" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inverze kabelového příjmu" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Symbolová rychlost kabelového příjmu" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulace kabelového příjmu" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inverze pozemního příjmu" msgctxt "#30022" msgid "Satellite" msgstr "Satelit" msgctxt "#30023" msgid "ATSC Type" msgstr "Typ ATSC" msgctxt "#30024" msgid "Back" msgstr "Zpět" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Hledání kanálů – spuštěno… %i %%" msgctxt "#30026" msgid "Type:" msgstr "Typ:" msgctxt "#30027" msgid "Device:" msgstr "Zařízení:" msgctxt "#30028" msgid "Scan: %i" msgstr "Prohledávání: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signál: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nové kanály: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Všechny kanály: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analogová televize" msgctxt "#30033" msgid "Analog Radio" msgstr "Analogové rádio" msgctxt "#30034" msgid "Transponder:" msgstr "Transpondér:" msgctxt "#30035" msgid "New channels" msgstr "Nové kanály" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Hledání kanálů – dokončeno" msgctxt "#30037" msgid "No device available - exiting" msgstr "Není dostupné žádné zařízení – ukončuje se" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Není k dispozici žádné zařízení DVB-S2 – náhradně bude vyzkoušeno přepnutí na DVB-S" msgctxt "#30039" msgid "Running" msgstr "Spuštěno" msgctxt "#30040" msgid "Stopped" msgstr "Zastaveno" msgctxt "#30041" msgid "Finished" msgstr "Dokončeno" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Hledání kanálů – zrušeno" msgctxt "#30043" msgid "Channel search - Error" msgstr "Hledání kanálů – chyba" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Ztraceno spojení se serverem nahrávače videa" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Spojení se serverem VDR obnoveno" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Automaticky vytvářet skupiny kanálů na serveru" msgctxt "#30047" msgid "Request Timeshift" msgstr "Vyžádat časový posun" msgctxt "#30048" msgid "Path to channel icons" msgstr "Popis umístění ikon kanálů" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC severu VDR pro Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "OSD VDR" msgctxt "#30101" msgid "Setup" msgstr "Nastavení" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Ovládání OSD – stiskněte info pro ukončení" msgctxt "#30103" msgid "Select to control OSD" msgstr "Vyberte k ovládání OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Režim časového posunu" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Vyrovnávací paměť časového posunu (v operační paměti) – násobek 100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Vyrovnávací paměť časového posunu (soubor) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Správce VDR" msgctxt "#30108" msgid "Channels" msgstr "Kanály" msgctxt "#30109" msgid "Provider whitelist" msgstr "Povolení poskytovatelé" msgctxt "#30110" msgid "Channel blacklist" msgstr "Zakázané kanály" msgctxt "#30111" msgid "Channel filters" msgstr "Filtr kanálů" msgctxt "#30112" msgid "Radio Channels" msgstr "Rozhlasové kanály" msgctxt "#30113" msgid "Save filters" msgstr "Uložit filtry" msgctxt "#30114" msgid "Provider Unknown" msgstr "Neznámý poskytovatel" msgctxt "#30200" msgid "Single" msgstr "Jeden" msgctxt "#30201" msgid "Repeating" msgstr "Opakující se" msgctxt "#30202" msgid "EGP" msgstr "Televizní program" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Hledat televizní program" msgctxt "#30205" msgid "Repeating Child" msgstr "Opakující se podřízená položka" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.cy_gb/000077500000000000000000000000001362540622500276275ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.cy_gb/strings.po000066400000000000000000000130441362540622500316620ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/kodi-main/language/cy_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cy_GB\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Enw gwesteiwr neu gyfeiriad IP VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Porth VNSI" msgctxt "#30002" msgid "Priority" msgstr "Blaenoriaeth:" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Trosi'r Set Nod" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Amser allan cysylltu (e)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Darllen recordiadau o gyferiadur" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Cyfeiriadur recordiadau VDR" msgctxt "#30008" msgid "Channel search" msgstr "Chwilio sianeli" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Chwilio sianeli - Gosodiadau" msgctxt "#30010" msgid "Start Channel search" msgstr "Cychwyn chwilio Sianeli" msgctxt "#30011" msgid "Source Type" msgstr "Math Ffynhonnell" msgctxt "#30012" msgid "TV channels" msgstr "Sianeli teledu" msgctxt "#30013" msgid "Radio channels" msgstr "Sianeli radio" msgctxt "#30014" msgid "FTA channels" msgstr "Sianeli Rhydd" msgctxt "#30015" msgid "Scrambled channels" msgstr "Sianeli caeëdig" msgctxt "#30016" msgid "HD channels" msgstr "Sianeli Clir" msgctxt "#30017" msgid "Country" msgstr "Gwlad" msgctxt "#30018" msgid "Cable Inversion" msgstr "Gwrthdroad Cebl" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Graddfa Symbol Cebl" msgctxt "#30020" msgid "Cable modulation" msgstr "Modyliad cebl" msgctxt "#30021" msgid "Terr Inversion" msgstr "Gwthdroad Terr" msgctxt "#30022" msgid "Satellite" msgstr "Lloeren" msgctxt "#30023" msgid "ATSC Type" msgstr "Math ATSC" msgctxt "#30024" msgid "Back" msgstr "Nôl" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Chwilio sianeli - rhedeg %i %%" msgctxt "#30026" msgid "Type:" msgstr "Math:" msgctxt "#30027" msgid "Device:" msgstr "Dyfeisiau:" msgctxt "#30028" msgid "Scan: %i" msgstr "Sgan: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Sianeli newydd: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Pob sianel: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Teledu Analog" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio Analog" msgctxt "#30034" msgid "Transponder:" msgstr "Trawspondydd:" msgctxt "#30035" msgid "New channels" msgstr "Sianeli newydd" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Chwilio sianel - Wedi gorffen" msgctxt "#30037" msgid "No device available - exiting" msgstr "Dim dyfais ar gael - gadael" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Dim dyfais DVB-S2 ar gael - ceisio mynd yn ôl i DVB-S" msgctxt "#30039" msgid "Running" msgstr "Rhedeg" msgctxt "#30040" msgid "Stopped" msgstr "Ataliwyd" msgctxt "#30041" msgid "Finished" msgstr "Gorffennwyd" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Chwilio sianeli - Diddymwyd" msgctxt "#30043" msgid "Channel search - Error" msgstr "Chwilio sianel - Gwall" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Collwyd y cysylltiad â'r Gweinydd VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Cysylltiad â'r Gweinydd VDR wedi ei adfer" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Creu grwpiau sianel yn awtomatig ar y gweinydd" msgctxt "#30047" msgid "Request Timeshift" msgstr "Gofyn am Sy,mud Amser" msgctxt "#30048" msgid "Path to channel icons" msgstr "Llwybr i eiconau sianel" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC ar gyfer Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr " OSD VDR" msgctxt "#30101" msgid "Setup" msgstr "Gosod" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Rheoli OSD - pwyso gwyb i adael" msgctxt "#30103" msgid "Select to control OSD" msgstr "Dewis i reoli'r OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Modd Symud Amser" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Byffer Symud Amser(RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Byffer Symud Amser (File) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Gweinyddiaeth VDR" msgctxt "#30108" msgid "Channels" msgstr "Sianeli" msgctxt "#30109" msgid "Provider whitelist" msgstr "Rhestr wen darparwr" msgctxt "#30110" msgid "Channel blacklist" msgstr "Rhestr ddu sianel" msgctxt "#30111" msgid "Channel filters" msgstr "Hidlau sianel" msgctxt "#30112" msgid "Radio Channels" msgstr "Sianeli radio" msgctxt "#30113" msgid "Save filters" msgstr "Cadw hidlau" msgctxt "#30114" msgid "Provider Unknown" msgstr "Darparwr Anhysbys" msgctxt "#30200" msgid "Single" msgstr "Sengl" msgctxt "#30201" msgid "Repeating" msgstr "Ailadrodd" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Chwilio'r EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Plentyn sy'n Ailadrodd" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.da_dk/000077500000000000000000000000001362540622500276065ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.da_dk/strings.po000066400000000000000000000126421362540622500316440ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Danish (Denmark) (http://www.transifex.com/projects/p/kodi-main/language/da_DK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: da_DK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR-værtsnavn eller IP-adresse" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI-port" msgctxt "#30002" msgid "Priority" msgstr "Prioritet" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Tegnsætkonvertering" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Tidsfrist for forbindelse (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Indlæs optagelser fra mappen" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR-optagelsesmappen" msgctxt "#30008" msgid "Channel search" msgstr "Kanalsøgning" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Kanalsøgning - Indstillinger" msgctxt "#30010" msgid "Start Channel search" msgstr "Start kanalsøgning" msgctxt "#30011" msgid "Source Type" msgstr "Kildetype" msgctxt "#30012" msgid "TV channels" msgstr "Tv-kanaler" msgctxt "#30013" msgid "Radio channels" msgstr "Radiokanaler" msgctxt "#30014" msgid "FTA channels" msgstr "Ukodede kanaler" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kodede kanaler" msgctxt "#30016" msgid "HD channels" msgstr "HD kanaler" msgctxt "#30017" msgid "Country" msgstr "Land" msgctxt "#30018" msgid "Cable Inversion" msgstr "Kabelinvertering" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Kabel symbol rate" msgctxt "#30020" msgid "Cable modulation" msgstr "Kabelmodulation" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr invertering" msgctxt "#30022" msgid "Satellite" msgstr "Satellit" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC-type" msgctxt "#30024" msgid "Back" msgstr "Tilbage" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Kanalsøgning - kører... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Type:" msgctxt "#30027" msgid "Device:" msgstr "Enhed:" msgctxt "#30028" msgid "Scan: %i" msgstr "Skan: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nye kanaler: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Alle kanaler: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analogt tv" msgctxt "#30033" msgid "Analog Radio" msgstr "Analog radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Nye kanaler" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Kanalsøgning - Færdig" msgctxt "#30037" msgid "No device available - exiting" msgstr "Ingen enhed tilgængelig - afslutter" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Ingen DVB-S2 enhed tingængelig - prøver DVB-S reserve" msgctxt "#30039" msgid "Running" msgstr "Kører" msgctxt "#30040" msgid "Stopped" msgstr "Stoppet" msgctxt "#30041" msgid "Finished" msgstr "Færdig" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Kanalsøgning - Annulleret" msgctxt "#30043" msgid "Channel search - Error" msgstr "Kanalsøgning - Fejl" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Mistede forbindelsen til VDR server" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Forbindelsen er genoprettet til VDR server" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Opret automatisk en kanalgruppe på serveren" msgctxt "#30047" msgid "Request Timeshift" msgstr "Ønsk tidsforskydning" msgctxt "#30048" msgid "Path to channel icons" msgstr "Sti til kanal ikoner" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC-adresse til Wake-on-LAN (WOL)" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Opsætning" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Kontrollere OSD - tryk på info for at forlade" msgctxt "#30103" msgid "Select to control OSD" msgstr "Vælg for at kontrollere OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Tidsforskydningstilstand" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Tidsforskydningsbuffer (RAM) X 100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Tidsforskyningsbuffer (Fil) X 1 Gb" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Administration" msgctxt "#30108" msgid "Channels" msgstr "Kanaler" msgctxt "#30109" msgid "Provider whitelist" msgstr "Udbyder whitelist" msgctxt "#30110" msgid "Channel blacklist" msgstr "Kanal sortliste" msgctxt "#30111" msgid "Channel filters" msgstr "Kanalfiltre" msgctxt "#30112" msgid "Radio Channels" msgstr "Radiokanaler" msgctxt "#30113" msgid "Save filters" msgstr "Gem filtre" msgctxt "#30114" msgid "Provider Unknown" msgstr "Udbyder Ukendt" msgctxt "#30200" msgid "Single" msgstr "Enlig" msgctxt "#30201" msgid "Repeating" msgstr "Gentagende" msgctxt "#30202" msgid "EGP" msgstr "GP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Søg EPG" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.de_de/000077500000000000000000000000001362540622500276045ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.de_de/strings.po000066400000000000000000000130531362540622500316370ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: German (Germany) (http://www.transifex.com/projects/p/kodi-main/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Hostname oder IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Port" msgctxt "#30002" msgid "Priority" msgstr "Priorität" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Zeichensatzkonvertierung" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Verbindungszeitüberschreitung (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Aufnahmen aus Ordner lesen" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR Aufnahmeordner" msgctxt "#30008" msgid "Channel search" msgstr "Sendersuche" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Sendersuche - Einstellungen" msgctxt "#30010" msgid "Start Channel search" msgstr "Sendersuche starten" msgctxt "#30011" msgid "Source Type" msgstr "Empfangsart" msgctxt "#30012" msgid "TV channels" msgstr "TV Sender" msgctxt "#30013" msgid "Radio channels" msgstr "Radio Sender" msgctxt "#30014" msgid "FTA channels" msgstr "Frei empfangbare Sender" msgctxt "#30015" msgid "Scrambled channels" msgstr "Verschlüsselte Sender" msgctxt "#30016" msgid "HD channels" msgstr "HD Sender" msgctxt "#30017" msgid "Country" msgstr "Land" msgctxt "#30018" msgid "Cable Inversion" msgstr "Kabel Inversion" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Kabel Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Kabel Modulation" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terrestrisch Inversion" msgctxt "#30022" msgid "Satellite" msgstr "Satellit" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC Typ" msgctxt "#30024" msgid "Back" msgstr "Zurück" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Sendersuche - läuft... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Empfangsart:" msgctxt "#30027" msgid "Device:" msgstr "Gerät:" msgctxt "#30028" msgid "Scan: %i" msgstr "Fortschritt: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Neue Sender: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Alle Sender: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analog TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analog Radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Neue Sender" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Sendersuche - Abgeschlossen" msgctxt "#30037" msgid "No device available - exiting" msgstr "Kein Empfangsgerät verfügbar - Beende Vorgang" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Kein DVB-S2 Empfangsgerät verfügbar - versuche DVB-S" msgctxt "#30039" msgid "Running" msgstr "Läuft..." msgctxt "#30040" msgid "Stopped" msgstr "Angehalten" msgctxt "#30041" msgid "Finished" msgstr "Abgeschlossen" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Sendersuche - Abgebrochen" msgctxt "#30043" msgid "Channel search - Error" msgstr "Sendersuche - Fehler" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Verbindung zum VDR Server unterbrochen" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Verbindung zum VDR Server wiederhergestellt" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Sendergruppen automatisch auf dem Server anlegen" msgctxt "#30047" msgid "Request Timeshift" msgstr "Fordere Timeshift an" msgctxt "#30048" msgid "Path to channel icons" msgstr "Pfad zu den Kanal-Icons" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR-Server-MAC-Adresse für Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Setup" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "OSD-Steuerung aktiv - Drücke Info zum Verlassen" msgctxt "#30103" msgid "Select to control OSD" msgstr "Auswählen zur OSD-Steuerung" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Timeshift-Modus" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Timeshift Puffer (RAM) x100MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Timeshift Puffer (Datei) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Sender" msgctxt "#30109" msgid "Provider whitelist" msgstr "Positivliste der Anbieter" msgctxt "#30110" msgid "Channel blacklist" msgstr "Negativliste der Kanäle" msgctxt "#30111" msgid "Channel filters" msgstr "Kanalfilter" msgctxt "#30112" msgid "Radio Channels" msgstr "Radio Sender" msgctxt "#30113" msgid "Save filters" msgstr "Filter speichern" msgctxt "#30114" msgid "Provider Unknown" msgstr "Anbieter unbekannt" msgctxt "#30200" msgid "Single" msgstr "Einzeln" msgctxt "#30201" msgid "Repeating" msgstr "Mehrmalig" msgctxt "#30202" msgid "EGP" msgstr "EPG" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "EPG durchsuchen" msgctxt "#30205" msgid "Repeating Child" msgstr "Sich wiederholendes Unterelement" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.el_gr/000077500000000000000000000000001362540622500276345ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.el_gr/strings.po000066400000000000000000000145751362540622500317010ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Greek (Greece) (http://www.transifex.com/projects/p/kodi-main/language/el_GR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: el_GR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Όνομα Υπολογιστή ή IP του VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Θύρα VNSI" msgctxt "#30002" msgid "Priority" msgstr "Προτεραιότητα" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Μετατροπή Συνόλου Χαρακτήρων" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Χρονικό όριο σύνδεσης (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Ανάγνωση εγγραφών από φάκελο" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Φάκελος εγγραφών VDR" msgctxt "#30008" msgid "Channel search" msgstr "Αναζήτηση Καναλιών" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Αναζήτηση Καναλιών - Ρυθμίσεις" msgctxt "#30010" msgid "Start Channel search" msgstr "Εκκίνηση αναζήτησης Καναλιών" msgctxt "#30011" msgid "Source Type" msgstr "Τύπος Πηγής" msgctxt "#30012" msgid "TV channels" msgstr "Τηλεοπτικά κανάλια" msgctxt "#30013" msgid "Radio channels" msgstr "Ραδιοφωνικοί σταθμοί" msgctxt "#30014" msgid "FTA channels" msgstr "Ελεύθερα κανάλια" msgctxt "#30015" msgid "Scrambled channels" msgstr "Κωδικοποιημένα κανάλια" msgctxt "#30016" msgid "HD channels" msgstr "HD Κανάλια" msgctxt "#30017" msgid "Country" msgstr "Χώρα" msgctxt "#30018" msgid "Cable Inversion" msgstr "Cable Inversion" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cable Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Cable modulation" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr Inversion" msgctxt "#30022" msgid "Satellite" msgstr "Δορυφορικά" msgctxt "#30023" msgid "ATSC Type" msgstr "Τύπος ATSC" msgctxt "#30024" msgid "Back" msgstr "Πίσω" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Αναζήτηση καναλιών - εκτελείται... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Τύπος:" msgctxt "#30027" msgid "Device:" msgstr "Συσκευή:" msgctxt "#30028" msgid "Scan: %i" msgstr "Σάρωση: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Σήμα: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Νέα κανάλια: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Όλα τα κανάλια: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Αναλογική Τηλεόραση" msgctxt "#30033" msgid "Analog Radio" msgstr "Αναλογικό Ραδιόφωνο" msgctxt "#30034" msgid "Transponder:" msgstr "Αναμεταδότης:" msgctxt "#30035" msgid "New channels" msgstr "Νέα κανάλια" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Αναζήτηση καναλιών - Ολοκληρώθηκε" msgctxt "#30037" msgid "No device available - exiting" msgstr "Καμία συσκευή διαθέσιμη - έξοδος" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Καμία συσκευή DVB-S2 διαθέσιμη - δοκιμή του εφεδρικού DVB-S" msgctxt "#30039" msgid "Running" msgstr "Σε εκτέλεση" msgctxt "#30040" msgid "Stopped" msgstr "Διεκόπη" msgctxt "#30041" msgid "Finished" msgstr "Ολοκληρώθηκε" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Αναζήτηση καναλιών - Ακυρώθηκε" msgctxt "#30043" msgid "Channel search - Error" msgstr "Αναζήτηση καναλιών - Σφάλμα" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Απώλεια σύνδεσης με το διακομιστή VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Αποκαταστάθηκε η σύνδεση με το διακομιστή VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Αυτόματη δημιουργία γκρουπ καναλιών σε αυτό το διακομιστή" msgctxt "#30047" msgid "Request Timeshift" msgstr "Αίτημα για Timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Διαδρομή για εικονίδια καναλιών" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC του Διακομιστή VDR για Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "OSD του VDR" msgctxt "#30101" msgid "Setup" msgstr "Εγκατάσταση" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Έλεγχος OSD - πιέστε το info για έξοδο" msgctxt "#30103" msgid "Select to control OSD" msgstr "Επιλέξτε για έλεγχο του OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Λειτουργία Timeshift" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Προσωρινή Αποθήκευση του Timeshift (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Προσωρινή Αποθήκευση του Timeshift (Αρχείο) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Admin του VDR" msgctxt "#30108" msgid "Channels" msgstr "Κανάλια" msgctxt "#30109" msgid "Provider whitelist" msgstr "Λευκή λίστα παρόχων" msgctxt "#30110" msgid "Channel blacklist" msgstr "Μαύρη λίστα καναλιών" msgctxt "#30111" msgid "Channel filters" msgstr "Φίλτρα καναλιών" msgctxt "#30112" msgid "Radio Channels" msgstr "Ραδιοφωνικοί Σταθμοί" msgctxt "#30113" msgid "Save filters" msgstr "Αποθήκευση φίλτρων" msgctxt "#30114" msgid "Provider Unknown" msgstr "Άγνωστος Πάροχος" msgctxt "#30201" msgid "Repeating" msgstr "Επανάληψη" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.en_au/000077500000000000000000000000001362540622500276335ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.en_au/strings.po000066400000000000000000000121501362540622500316630ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: English (Australia) (http://www.transifex.com/projects/p/kodi-main/language/en_AU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en_AU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Hostname or IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Port" msgctxt "#30002" msgid "Priority" msgstr "Priority" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Character Set Conversion" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Connect timeout (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Read recordings from directory" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR recordings directory" msgctxt "#30008" msgid "Channel search" msgstr "Channel search" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Channel search - Settings" msgctxt "#30010" msgid "Start Channel search" msgstr "Start Channel search" msgctxt "#30011" msgid "Source Type" msgstr "Source Type" msgctxt "#30012" msgid "TV channels" msgstr "TV channels" msgctxt "#30013" msgid "Radio channels" msgstr "Radio channels" msgctxt "#30014" msgid "FTA channels" msgstr "FTA channels" msgctxt "#30015" msgid "Scrambled channels" msgstr "Scrambled channels" msgctxt "#30016" msgid "HD channels" msgstr "HD channels" msgctxt "#30017" msgid "Country" msgstr "Country" msgctxt "#30018" msgid "Cable Inversion" msgstr "Cable Inversion" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cable Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Cable modulation" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr Inversion" msgctxt "#30022" msgid "Satellite" msgstr "Satellite" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC Type" msgctxt "#30024" msgid "Back" msgstr "Back" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Channel search - running... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Type:" msgctxt "#30027" msgid "Device:" msgstr "Device:" msgctxt "#30028" msgid "Scan: %i" msgstr "Scan: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "New channels: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "All channels: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analogue TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analogue Radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "New channels" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Channel search - Finished" msgctxt "#30037" msgid "No device available - exiting" msgstr "No device available - exiting" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "No DVB-S2 device available - trying fallback to DVB-S" msgctxt "#30039" msgid "Running" msgstr "Running" msgctxt "#30040" msgid "Stopped" msgstr "Stopped" msgctxt "#30041" msgid "Finished" msgstr "Finished" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Channel search - Cancelled" msgctxt "#30043" msgid "Channel search - Error" msgstr "Channel search - Error" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Lost connection to VDR Server" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Connection to VDR Server restored" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Create channel groups automatically on the server" msgctxt "#30047" msgid "Request Timeshift" msgstr "Request Timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Path to channel icons" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC for Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Setup" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Controlling OSD - press info to exit" msgctxt "#30103" msgid "Select to control OSD" msgstr "Select to control OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Timeshift Mode" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Timeshift Buffer (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Timeshift Buffer (File) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Channels" msgctxt "#30109" msgid "Provider whitelist" msgstr "Provider whitelist" msgctxt "#30110" msgid "Channel blacklist" msgstr "Channel blacklist" msgctxt "#30111" msgid "Channel filters" msgstr "Channel filters" msgctxt "#30112" msgid "Radio Channels" msgstr "Radio Channels" msgctxt "#30113" msgid "Save filters" msgstr "Save filters" msgctxt "#30114" msgid "Provider Unknown" msgstr "Provider Unknown" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.en_gb/000077500000000000000000000000001362540622500276165ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.en_gb/strings.po000066400000000000000000000107401362540622500316510ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/kodi-main/language/en_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en_GB\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #settings labels msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "" msgctxt "#30001" msgid "VNSI Port" msgstr "" msgctxt "#30002" msgid "Priority" msgstr "" msgctxt "#30003" msgid "Character Set Conversion" msgstr "" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "" #empty string with id 30005 msgctxt "#30006" msgid "Read recordings from directory" msgstr "" msgctxt "#30007" msgid "VDR recordings directory" msgstr "" msgctxt "#30008" msgid "Channel search" msgstr "" msgctxt "#30009" msgid "Channel search - Settings" msgstr "" msgctxt "#30010" msgid "Start Channel search" msgstr "" msgctxt "#30011" msgid "Source Type" msgstr "" msgctxt "#30012" msgid "TV channels" msgstr "" msgctxt "#30013" msgid "Radio channels" msgstr "" msgctxt "#30014" msgid "FTA channels" msgstr "" msgctxt "#30015" msgid "Scrambled channels" msgstr "" msgctxt "#30016" msgid "HD channels" msgstr "" msgctxt "#30017" msgid "Country" msgstr "" msgctxt "#30018" msgid "Cable Inversion" msgstr "" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "" msgctxt "#30020" msgid "Cable modulation" msgstr "" msgctxt "#30021" msgid "Terr Inversion" msgstr "" msgctxt "#30022" msgid "Satellite" msgstr "" msgctxt "#30023" msgid "ATSC Type" msgstr "" msgctxt "#30024" msgid "Back" msgstr "" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "" msgctxt "#30026" msgid "Type:" msgstr "" msgctxt "#30027" msgid "Device:" msgstr "" msgctxt "#30028" msgid "Scan: %i" msgstr "" msgctxt "#30029" msgid "Signal: %i %%" msgstr "" msgctxt "#30030" msgid "New channels: %i" msgstr "" msgctxt "#30031" msgid "All channels: %i" msgstr "" msgctxt "#30032" msgid "Analog TV" msgstr "" msgctxt "#30033" msgid "Analog Radio" msgstr "" msgctxt "#30034" msgid "Transponder:" msgstr "" msgctxt "#30035" msgid "New channels" msgstr "" msgctxt "#30036" msgid "Channel search - Finished" msgstr "" msgctxt "#30037" msgid "No device available - exiting" msgstr "" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "" msgctxt "#30039" msgid "Running" msgstr "" msgctxt "#30040" msgid "Stopped" msgstr "" msgctxt "#30041" msgid "Finished" msgstr "" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "" msgctxt "#30043" msgid "Channel search - Error" msgstr "" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "" msgctxt "#30047" msgid "Request Timeshift" msgstr "" msgctxt "#30048" msgid "Path to channel icons" msgstr "" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "" msgctxt "#30050" msgid "Read chunksize for recordings" msgstr "" #empty strings from id 30051 to 30099 msgctxt "#30100" msgid "VDR OSD" msgstr "" msgctxt "#30101" msgid "Setup" msgstr "" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "" msgctxt "#30103" msgid "Select to control OSD" msgstr "" msgctxt "#30104" msgid "Timeshift Mode" msgstr "" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "" msgctxt "#30107" msgid "VDR Admin" msgstr "" msgctxt "#30108" msgid "Channels" msgstr "" msgctxt "#30109" msgid "Provider whitelist" msgstr "" msgctxt "#30110" msgid "Channel blacklist" msgstr "" msgctxt "#30111" msgid "Channel filters" msgstr "" msgctxt "#30112" msgid "Radio Channels" msgstr "" msgctxt "#30113" msgid "Save filters" msgstr "" msgctxt "#30114" msgid "Provider Unknown" msgstr "" #empty strings from id 30115 to 30199 msgctxt "#30200" msgid "Single" msgstr "" msgctxt "#30201" msgid "Repeating" msgstr "" msgctxt "#30202" msgid "EGP" msgstr "" msgctxt "#30203" msgid "VPS" msgstr "" msgctxt "#30204" msgid "Search EPG" msgstr "" msgctxt "#30205" msgid "Repeating Child" msgstr "" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.en_nz/000077500000000000000000000000001362540622500276555ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.en_nz/strings.po000066400000000000000000000125641362540622500317160ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: English (New Zealand) (http://www.transifex.com/projects/p/kodi-main/language/en_NZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en_NZ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Hostname or IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Port" msgctxt "#30002" msgid "Priority" msgstr "Priority" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Character Set Conversion" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Connect timeout (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Read recordings from directory" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR recordings directory" msgctxt "#30008" msgid "Channel search" msgstr "Channel search" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Channel search - Settings" msgctxt "#30010" msgid "Start Channel search" msgstr "Start Channel search" msgctxt "#30011" msgid "Source Type" msgstr "Source Type" msgctxt "#30012" msgid "TV channels" msgstr "TV channels" msgctxt "#30013" msgid "Radio channels" msgstr "Radio channels" msgctxt "#30014" msgid "FTA channels" msgstr "FTA channels" msgctxt "#30015" msgid "Scrambled channels" msgstr "Scrambled channels" msgctxt "#30016" msgid "HD channels" msgstr "HD channels" msgctxt "#30017" msgid "Country" msgstr "Country" msgctxt "#30018" msgid "Cable Inversion" msgstr "Cable Inversion" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cable Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Cable modulation" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr Inversion" msgctxt "#30022" msgid "Satellite" msgstr "Satellite" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC Type" msgctxt "#30024" msgid "Back" msgstr "Back" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Channel search - running... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Type:" msgctxt "#30027" msgid "Device:" msgstr "Device:" msgctxt "#30028" msgid "Scan: %i" msgstr "Scan: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "New channels: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "All channels: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analog TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analog Radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "New channels" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Channel search - Finished" msgctxt "#30037" msgid "No device available - exiting" msgstr "No device available - exiting" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "No DVB-S2 device available - trying fallback to DVB-S" msgctxt "#30039" msgid "Running" msgstr "Running" msgctxt "#30040" msgid "Stopped" msgstr "Stopped" msgctxt "#30041" msgid "Finished" msgstr "Finished" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Channel search - Canceled" msgctxt "#30043" msgid "Channel search - Error" msgstr "Channel search - Error" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Lost connection to VDR Server" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Connection to VDR Server restored" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Create channel groups automatically on the server" msgctxt "#30047" msgid "Request Timeshift" msgstr "Request Timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Path to channel icons" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC for Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Setup" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Controlling OSD - press info to exit" msgctxt "#30103" msgid "Select to control OSD" msgstr "Select to control OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Timeshift Mode" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Timeshift Buffer (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Timeshift Buffer (File) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Channels" msgctxt "#30109" msgid "Provider whitelist" msgstr "Provider whitelist" msgctxt "#30110" msgid "Channel blacklist" msgstr "Channel blacklist" msgctxt "#30111" msgid "Channel filters" msgstr "Channel filters" msgctxt "#30112" msgid "Radio Channels" msgstr "Radio Channels" msgctxt "#30113" msgid "Save filters" msgstr "Save filters" msgctxt "#30114" msgid "Provider Unknown" msgstr "Provider Unknown" msgctxt "#30200" msgid "Single" msgstr "Single" msgctxt "#30201" msgid "Repeating" msgstr "Repeating" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Search EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Repeating Child" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.en_us/000077500000000000000000000000001362540622500276555ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.en_us/strings.po000066400000000000000000000126411362540622500317120ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: English (United States) (http://www.transifex.com/projects/p/kodi-main/language/en_US/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en_US\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Hostname or IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Port" msgctxt "#30002" msgid "Priority" msgstr "Priority" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Character Set Conversion" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Connect timeout (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Read recordings from directory" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR recordings directory" msgctxt "#30008" msgid "Channel search" msgstr "Channel search" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Channel search - Settings" msgctxt "#30010" msgid "Start Channel search" msgstr "Start Channel search" msgctxt "#30011" msgid "Source Type" msgstr "Source Type" msgctxt "#30012" msgid "TV channels" msgstr "TV channels" msgctxt "#30013" msgid "Radio channels" msgstr "Radio channels" msgctxt "#30014" msgid "FTA channels" msgstr "FTA channels" msgctxt "#30015" msgid "Scrambled channels" msgstr "Scrambled channels" msgctxt "#30016" msgid "HD channels" msgstr "HD channels" msgctxt "#30017" msgid "Country" msgstr "Country" msgctxt "#30018" msgid "Cable Inversion" msgstr "Cable Inversion" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cable Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Cable modulation" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr Inversion" msgctxt "#30022" msgid "Satellite" msgstr "Satellite" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC Type" msgctxt "#30024" msgid "Back" msgstr "Back" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Channel search - running... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Type:" msgctxt "#30027" msgid "Device:" msgstr "Device:" msgctxt "#30028" msgid "Scan: %i" msgstr "Scan: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "New channels: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "All channels: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analog TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analog Radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "New channels" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Channel search - Finished" msgctxt "#30037" msgid "No device available - exiting" msgstr "No device available - exiting" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "No DVB-S2 device available - trying fallback to DVB-S" msgctxt "#30039" msgid "Running" msgstr "Running" msgctxt "#30040" msgid "Stopped" msgstr "Stopped" msgctxt "#30041" msgid "Finished" msgstr "Finished" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Channel search - Canceled" msgctxt "#30043" msgid "Channel search - Error" msgstr "Channel search - Error" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Lost connection to VDR Server" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Connection to VDR Server restored" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Create channel groups automatically on the server" msgctxt "#30047" msgid "Request Timeshift" msgstr "Request Timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Path to channel icons" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC for Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Setup" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Controlling OSD - press info to exit" msgctxt "#30103" msgid "Select to control OSD" msgstr "Select to control OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Timeshift Mode" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Timeshift Buffer (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Timeshift Buffer (File) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Channels" msgctxt "#30109" msgid "Provider whitelist" msgstr "Provider whitelist" msgctxt "#30110" msgid "Channel blacklist" msgstr "Channel blacklist" msgctxt "#30111" msgid "Channel filters" msgstr "Channel filters" msgctxt "#30112" msgid "Radio Channels" msgstr "Radio Channels" msgctxt "#30113" msgid "Save filters" msgstr "Save filters" msgctxt "#30114" msgid "Provider Unknown" msgstr "Provider Unknown" msgctxt "#30200" msgid "Single" msgstr "Single" msgctxt "#30201" msgid "Repeating" msgstr "Repeating" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Search EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Repeating Child" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.eo/000077500000000000000000000000001362540622500271475ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.eo/strings.po000066400000000000000000000013171362540622500312020ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/kodi-main/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30026" msgid "Type:" msgstr "Speco:" msgctxt "#30101" msgid "Setup" msgstr "Preferoj" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.es_ar/000077500000000000000000000000001362540622500276355ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.es_ar/strings.po000066400000000000000000000127541362540622500316770ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/kodi-main/language/es_AR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es_AR\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nombre o IP del servidor VDR " msgctxt "#30001" msgid "VNSI Port" msgstr "Puerto VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioridad" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversión de caracteres" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Tiempo para conectar excedido" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Leer grabaciones en carpeta" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Directorio de grabación para VDR" msgctxt "#30008" msgid "Channel search" msgstr "Buscar canal" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Búsqueda de canales - Ajustes" msgctxt "#30010" msgid "Start Channel search" msgstr "Comenzar Búsqueda de canales" msgctxt "#30011" msgid "Source Type" msgstr "Tipo de fuente" msgctxt "#30012" msgid "TV channels" msgstr "Canales TV" msgctxt "#30013" msgid "Radio channels" msgstr "Canales Radio" msgctxt "#30014" msgid "FTA channels" msgstr "Canales FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "Canales codificados" msgctxt "#30016" msgid "HD channels" msgstr "Canales HD" msgctxt "#30017" msgid "Country" msgstr "País" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversión de cable" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Símbolo de cable" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulación de cable" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversión Terr" msgctxt "#30022" msgid "Satellite" msgstr "Satélite" msgctxt "#30023" msgid "ATSC Type" msgstr "Tipo ATSC" msgctxt "#30024" msgid "Back" msgstr "Atrás" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Búsqueda de canales - buscando... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipo:" msgctxt "#30027" msgid "Device:" msgstr "Dispositivo:" msgctxt "#30028" msgid "Scan: %i" msgstr "Escanear: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Señal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nuevos canales: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Todos los canales: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV Analógica" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio Analógica" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Nuevos canales" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Búsqueda de canales - Finalizada" msgctxt "#30037" msgid "No device available - exiting" msgstr "No hay dispositivo disponible - saliendo" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "DVB-S2 no disponible - regresando a DVB-S" msgctxt "#30039" msgid "Running" msgstr "Ejecutando" msgctxt "#30040" msgid "Stopped" msgstr "Detenido" msgctxt "#30041" msgid "Finished" msgstr "Finalizado" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Búsqueda de canales - Cancelada" msgctxt "#30043" msgid "Channel search - Error" msgstr "Búsqueda de canales - Error" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Conexión perdida con el servidor VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Conexión con el servidor VDR restablecida" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Crear grupos de canales de forma automática en el servidor" msgctxt "#30047" msgid "Request Timeshift" msgstr "Solicitar Timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Ruta a los íconos de canales" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "Dir. MAC de Server VDR para Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Configuración" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Controlando OSC - presione info para salir" msgctxt "#30103" msgid "Select to control OSD" msgstr "Seleccionar para controlar OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Modo Timeshift" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Buffer de Timeshift (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Buffer de Timeshift (Archivo) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Administrar VDR" msgctxt "#30108" msgid "Channels" msgstr "Canales" msgctxt "#30109" msgid "Provider whitelist" msgstr "Lista blanca de proveedores" msgctxt "#30110" msgid "Channel blacklist" msgstr "Lista negra de canales" msgctxt "#30111" msgid "Channel filters" msgstr "Filtros de canal" msgctxt "#30112" msgid "Radio Channels" msgstr "Canales de radio" msgctxt "#30113" msgid "Save filters" msgstr "Guardar filtros" msgctxt "#30114" msgid "Provider Unknown" msgstr "Proveedor desconocido" msgctxt "#30200" msgid "Single" msgstr "Individual" msgctxt "#30201" msgid "Repeating" msgstr "Con repeticiones" msgctxt "#30204" msgid "Search EPG" msgstr "Buscar GEP" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.es_es/000077500000000000000000000000001362540622500276425ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.es_es/strings.po000066400000000000000000000132021362540622500316710ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Spanish (Spain) (http://www.transifex.com/projects/p/kodi-main/language/es_ES/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es_ES\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nombre o IP del servidor VDR " msgctxt "#30001" msgid "VNSI Port" msgstr "Puerto VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioridad" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversión de caracteres" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Tiempo de espera de conexión (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Leer grabaciones en carpeta" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Carpeta para grabaciones de VDR" msgctxt "#30008" msgid "Channel search" msgstr "Buscar canales" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Buscar canales - Ajustes" msgctxt "#30010" msgid "Start Channel search" msgstr "Comenzar Búsqueda de canales" msgctxt "#30011" msgid "Source Type" msgstr "Tipo de origen" msgctxt "#30012" msgid "TV channels" msgstr "Canales TV" msgctxt "#30013" msgid "Radio channels" msgstr "Canales Radio" msgctxt "#30014" msgid "FTA channels" msgstr "Canales en abierto" msgctxt "#30015" msgid "Scrambled channels" msgstr "Canales codificados" msgctxt "#30016" msgid "HD channels" msgstr "Canales HD" msgctxt "#30017" msgid "Country" msgstr "País" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversión de cable" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Tasa de símbolos del cable" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulación de cable" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversión TDT" msgctxt "#30022" msgid "Satellite" msgstr "Satélite" msgctxt "#30023" msgid "ATSC Type" msgstr "Tipo ATSC" msgctxt "#30024" msgid "Back" msgstr "Atrás" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Búsqueda de canales - buscando... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipo:" msgctxt "#30027" msgid "Device:" msgstr "Dispositivo:" msgctxt "#30028" msgid "Scan: %i" msgstr "Escanear: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Señal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nuevos canales: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Todos los canales: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV Analógica" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio Analógica" msgctxt "#30034" msgid "Transponder:" msgstr "Transpondedor:" msgctxt "#30035" msgid "New channels" msgstr "Nuevos canales" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Búsqueda de canales - Finalizada" msgctxt "#30037" msgid "No device available - exiting" msgstr "No hay dispositivo disponible - saliendo" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "DVB-S2 no disponible - regresando a DVB-S" msgctxt "#30039" msgid "Running" msgstr "Ejecutando" msgctxt "#30040" msgid "Stopped" msgstr "Detenido" msgctxt "#30041" msgid "Finished" msgstr "Finalizado" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Búsqueda de canales - Cancelada" msgctxt "#30043" msgid "Channel search - Error" msgstr "Búsqueda de canales - Error" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Conexión perdida con el servidor VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Conexión con el servidor VDR restablecida" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Crear grupos de canales de forma automática en el servidor" msgctxt "#30047" msgid "Request Timeshift" msgstr "Solicitar TimeShift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Ruta a los iconos de canal" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC del servidor VDR para Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Ajustes" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Controlando OSD - pulsa info para salir" msgctxt "#30103" msgid "Select to control OSD" msgstr "Seleccionar para controlar OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Modo TimeShift" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Buffer Timeshift (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Buffer Timeshift (Archivo) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Administrador VDR" msgctxt "#30108" msgid "Channels" msgstr "Canales" msgctxt "#30109" msgid "Provider whitelist" msgstr "Lista blanca de proveedores" msgctxt "#30110" msgid "Channel blacklist" msgstr "Lista negra de canales " msgctxt "#30111" msgid "Channel filters" msgstr "Filtro de canales" msgctxt "#30112" msgid "Radio Channels" msgstr "Canales de radio" msgctxt "#30113" msgid "Save filters" msgstr "Guardar filtros" msgctxt "#30114" msgid "Provider Unknown" msgstr "Proveedor Desconocido" msgctxt "#30200" msgid "Single" msgstr "Individual" msgctxt "#30201" msgid "Repeating" msgstr "Repitiendo" msgctxt "#30202" msgid "EGP" msgstr "EPG" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Buscar en EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Repetición de Hijos" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.es_mx/000077500000000000000000000000001362540622500276575ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.es_mx/strings.po000066400000000000000000000132371362540622500317160ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/kodi-main/language/es_MX/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es_MX\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nombre de host o IP de VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Puerto VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioridad" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversión de conjunto de caracteres" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Tiempo para conectar agotado (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Leer las grabaciones del directorio" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Directorio de grabaciones VDR" msgctxt "#30008" msgid "Channel search" msgstr "Búsqueda de canales" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Búsqueda de canales - Configuración" msgctxt "#30010" msgid "Start Channel search" msgstr "Iniciar búsqueda de canales" msgctxt "#30011" msgid "Source Type" msgstr "Tipo de fuente" msgctxt "#30012" msgid "TV channels" msgstr "Canales TV" msgctxt "#30013" msgid "Radio channels" msgstr "Canales Radio" msgctxt "#30014" msgid "FTA channels" msgstr "Canales FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "Canales codificados" msgctxt "#30016" msgid "HD channels" msgstr "Canales HD" msgctxt "#30017" msgid "Country" msgstr "País" msgctxt "#30018" msgid "Cable Inversion" msgstr "Cable Inversion" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cable Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulación por cable" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr Inversión" msgctxt "#30022" msgid "Satellite" msgstr "Satélite" msgctxt "#30023" msgid "ATSC Type" msgstr "Tipo ATSC" msgctxt "#30024" msgid "Back" msgstr "Regresar" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Búsqueda de canales: en ejecución ... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipo:" msgctxt "#30027" msgid "Device:" msgstr "Dispositivo:" msgctxt "#30028" msgid "Scan: %i" msgstr "Escanear: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Señal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nuevos canales: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Todos los canales: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV analógica" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio analógica" msgctxt "#30034" msgid "Transponder:" msgstr "Transpondedor:" msgctxt "#30035" msgid "New channels" msgstr "Nuevos canales" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Búsqueda de canales - Terminado" msgctxt "#30037" msgid "No device available - exiting" msgstr "Ningún dispositivo disponible - saliendo" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "No hay dispositivo DVB-S2 disponible - probando fallback a DVB-S" msgctxt "#30039" msgid "Running" msgstr "Ejecutando" msgctxt "#30040" msgid "Stopped" msgstr "Detenido" msgctxt "#30041" msgid "Finished" msgstr "Finalizado" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Búsqueda de canales - Cancelado" msgctxt "#30043" msgid "Channel search - Error" msgstr "Búsqueda de canales - Error" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Conexión perdida con el servidor VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Restaurado la conexión con el servidor VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Crear grupos de canales automáticamente en el servidor" msgctxt "#30047" msgid "Request Timeshift" msgstr "Solicitar Timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Ruta a los iconos de canal" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC para Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Configuración" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Control de OSD - presione información para salir" msgctxt "#30103" msgid "Select to control OSD" msgstr "Seleccionar para controlar OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Modo Timeshift" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Buffer Timeshift (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Buffer Timeshift (Archivo) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Canales" msgctxt "#30109" msgid "Provider whitelist" msgstr "Lista blanca de proveedores" msgctxt "#30110" msgid "Channel blacklist" msgstr "Lista negra de canales" msgctxt "#30111" msgid "Channel filters" msgstr "Filtro de canales" msgctxt "#30112" msgid "Radio Channels" msgstr "Canales de radio" msgctxt "#30113" msgid "Save filters" msgstr "Grabar filtros" msgctxt "#30114" msgid "Provider Unknown" msgstr "Proveedor desconocido" msgctxt "#30200" msgid "Single" msgstr "Simple" msgctxt "#30201" msgid "Repeating" msgstr "Repitiendo" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Buscar EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Repitiendo hijo" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.et_ee/000077500000000000000000000000001362540622500276255ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.et_ee/strings.po000066400000000000000000000057251362540622500316670ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/kodi-main/language/et_EE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: et_EE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR hosti nimi või IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI port" msgctxt "#30002" msgid "Priority" msgstr "Tähtsus" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Märgistiku muutmine" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Ühenduse aegumine (s)" msgctxt "#30008" msgid "Channel search" msgstr "Kanaliotsing" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Kanaliotsing - seaded" msgctxt "#30010" msgid "Start Channel search" msgstr "Alusta kanaliotsingut" msgctxt "#30011" msgid "Source Type" msgstr "Allika tüüp" msgctxt "#30012" msgid "TV channels" msgstr "TV kanalid" msgctxt "#30013" msgid "Radio channels" msgstr "Raadio kanalid" msgctxt "#30014" msgid "FTA channels" msgstr "Vabalevi kanalid" msgctxt "#30015" msgid "Scrambled channels" msgstr "Krüptitud kanalid" msgctxt "#30016" msgid "HD channels" msgstr "HD kanalid" msgctxt "#30017" msgid "Country" msgstr "Maa" msgctxt "#30020" msgid "Cable modulation" msgstr "Kaabli modulatsioon" msgctxt "#30022" msgid "Satellite" msgstr "Satelliit" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC tüüp" msgctxt "#30024" msgid "Back" msgstr "Tagasi" msgctxt "#30026" msgid "Type:" msgstr "Tüüp:" msgctxt "#30027" msgid "Device:" msgstr "Seade:" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signaal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Uued kanalid: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Kõik kanalid: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analoog TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analoog raadio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Uued kanalid" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Kanaliotsing - lõpetatud" msgctxt "#30037" msgid "No device available - exiting" msgstr "Ühtegi seadet pole saadaval - väljumine" msgctxt "#30039" msgid "Running" msgstr "Töötab" msgctxt "#30040" msgid "Stopped" msgstr "Peatatud" msgctxt "#30041" msgid "Finished" msgstr "Lõpetatud" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Kanaliotsing - tühistatud" msgctxt "#30043" msgid "Channel search - Error" msgstr "Kanaliotsing - tõrge" msgctxt "#30101" msgid "Setup" msgstr "Seadistus" msgctxt "#30108" msgid "Channels" msgstr "Kanalid" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.eu_es/000077500000000000000000000000001362540622500276445ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.eu_es/strings.po000066400000000000000000000024371362540622500317030ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/kodi-main/language/eu_ES/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eu_ES\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI ataka" msgctxt "#30002" msgid "Priority" msgstr "Lehentasuna" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Konexioa denboraz kanpo" msgctxt "#30012" msgid "TV channels" msgstr "TB kateak" msgctxt "#30013" msgid "Radio channels" msgstr "Irrati kateak" msgctxt "#30017" msgid "Country" msgstr "Herrialdea" msgctxt "#30024" msgid "Back" msgstr "Atzera" msgctxt "#30026" msgid "Type:" msgstr "Mota:" msgctxt "#30039" msgid "Running" msgstr "Exekutatzen" msgctxt "#30101" msgid "Setup" msgstr "Konfigurazioa" msgctxt "#30108" msgid "Channels" msgstr "Kateak" msgctxt "#30201" msgid "Repeating" msgstr "Errepikapena" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fa_af/000077500000000000000000000000001362540622500276005ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fa_af/strings.po000066400000000000000000000012511362540622500316300ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Persian (Afghanistan) (http://www.transifex.com/projects/p/kodi-main/language/fa_AF/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa_AF\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30026" msgid "Type:" msgstr "نوع:" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fa_ir/000077500000000000000000000000001362540622500276245ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fa_ir/strings.po000066400000000000000000000017631362540622500316640ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Persian (Iran) (http://www.transifex.com/projects/p/kodi-main/language/fa_IR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa_IR\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30012" msgid "TV channels" msgstr "کانال های تلویزیونی" msgctxt "#30013" msgid "Radio channels" msgstr "کانال های رادیویی" msgctxt "#30017" msgid "Country" msgstr "کشور" msgctxt "#30026" msgid "Type:" msgstr "نوع:" msgctxt "#30101" msgid "Setup" msgstr "پیکربندی" msgctxt "#30108" msgid "Channels" msgstr "کانال ها" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fi_fi/000077500000000000000000000000001362540622500276205ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fi_fi/strings.po000066400000000000000000000130771362540622500316610ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/kodi-main/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fi_FI\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR-palvelimen isäntänimi tai IP-osoite" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI-portti" msgctxt "#30002" msgid "Priority" msgstr "Tärkeysaste" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Kirjainmerkistön muunnos" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Yhteyden aikakatkaisu (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Lue tallennukset kansiosta" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR:n tallennuskansio" msgctxt "#30008" msgid "Channel search" msgstr "Kanavahaku" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Kanavahaun asetukset" msgctxt "#30010" msgid "Start Channel search" msgstr "Aloita kanavahaku" msgctxt "#30011" msgid "Source Type" msgstr "Lähteen tyyppi" msgctxt "#30012" msgid "TV channels" msgstr "Tv-kanavat" msgctxt "#30013" msgid "Radio channels" msgstr "Radiokanavat" msgctxt "#30014" msgid "FTA channels" msgstr "Salaamattomat kanavat" msgctxt "#30015" msgid "Scrambled channels" msgstr "Salatut kanavat" msgctxt "#30016" msgid "HD channels" msgstr "HD-kanavat" msgctxt "#30017" msgid "Country" msgstr "Maa" msgctxt "#30018" msgid "Cable Inversion" msgstr "Kaapeliverkon inversio" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Kaapeliverkon symbolinopeus" msgctxt "#30020" msgid "Cable modulation" msgstr "Kaapeliverkon modulaatio" msgctxt "#30021" msgid "Terr Inversion" msgstr "Antenniverkon inversio" msgctxt "#30022" msgid "Satellite" msgstr "Satelliitti" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC-tyyppi" msgctxt "#30024" msgid "Back" msgstr "Takaisin" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Kanavahaku käynnissä... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tyyppi:" msgctxt "#30027" msgid "Device:" msgstr "Laite:" msgctxt "#30028" msgid "Scan: %i" msgstr "Haku: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signaali: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Uudet kanavat: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Kaikki kanavat: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analoginen tv" msgctxt "#30033" msgid "Analog Radio" msgstr "Analoginen radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponderi:" msgctxt "#30035" msgid "New channels" msgstr "Uudet kanavat" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Kanavahaku valmis" msgctxt "#30037" msgid "No device available - exiting" msgstr "Ei laitetta saatavilla - lopetetaan" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Ei DVB-S2-laitetta saatavilla - kokeillaan DVB-S" msgctxt "#30039" msgid "Running" msgstr "Käynnissä" msgctxt "#30040" msgid "Stopped" msgstr "Pysäytetty" msgctxt "#30041" msgid "Finished" msgstr "Valmis" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Kanavahaku peruutettu" msgctxt "#30043" msgid "Channel search - Error" msgstr "Virhe kanavahaussa" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "VDR-palvelimeen ei saada yhteyttä" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Yhteys VDR-palvelimeen palautettu" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Luo kanavaryhmät automaattisesti palvelimella" msgctxt "#30047" msgid "Request Timeshift" msgstr "Ajansiirtotoiminto" msgctxt "#30048" msgid "Path to channel icons" msgstr "Kanavalogojen polku" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR-palvelimen MAC-osoite herätystä varten" msgctxt "#30100" msgid "VDR OSD" msgstr "Kuvaruutuvalikko" msgctxt "#30101" msgid "Setup" msgstr "Asetukset" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Kuvaruutuvalikko - poistu painamalla info" msgctxt "#30103" msgid "Select to control OSD" msgstr "Valitse hallitaksesi kuvaruutuvalikkoa" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Ajansiirto toiminto" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Ajansiirtopuskuri (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Ajansiirtopuskuri (tiedosto) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Kanavat" msgctxt "#30109" msgid "Provider whitelist" msgstr "Tarjoajien valkoinen lista" msgctxt "#30110" msgid "Channel blacklist" msgstr "Kanavien musta lista" msgctxt "#30111" msgid "Channel filters" msgstr "Kanavasuodattimet" msgctxt "#30112" msgid "Radio Channels" msgstr "Radiokanavat" msgctxt "#30113" msgid "Save filters" msgstr "Tallenna suodattimet" msgctxt "#30114" msgid "Provider Unknown" msgstr "Tarjoaja tuntematon" msgctxt "#30200" msgid "Single" msgstr "Yksittäinen" msgctxt "#30201" msgid "Repeating" msgstr "Toistuva" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Etsi ohjelmaoppaasta" msgctxt "#30205" msgid "Repeating Child" msgstr "Toistuva (lapsi)" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fo_fo/000077500000000000000000000000001362540622500276345ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fo_fo/strings.po000066400000000000000000000017041362540622500316670ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Faroese (Faroe Islands) (http://www.transifex.com/projects/p/kodi-main/language/fo_FO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fo_FO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30012" msgid "TV channels" msgstr "Sjónvarpsrásir" msgctxt "#30013" msgid "Radio channels" msgstr "Útvarpsrásir" msgctxt "#30017" msgid "Country" msgstr "Land" msgctxt "#30026" msgid "Type:" msgstr "Slag:" msgctxt "#30039" msgid "Running" msgstr "Spæli" msgctxt "#30108" msgid "Channels" msgstr "Rás" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fr_ca/000077500000000000000000000000001362540622500276165ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fr_ca/strings.po000066400000000000000000000137221362540622500316540ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: French (Canada) (http://www.transifex.com/projects/p/kodi-main/language/fr_CA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr_CA\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nom d’hôte ou adresse IP de VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Port VNSI" msgctxt "#30002" msgid "Priority" msgstr "Priorité" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversion du jeu de caractères" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Temporisation de connexion (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Lire les enregistrements du répertoire" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Répertoire des enregistrements de VDR" msgctxt "#30008" msgid "Channel search" msgstr "Recherche de chaînes" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Recherche de chaînes — Paramètres" msgctxt "#30010" msgid "Start Channel search" msgstr "Démarrer la recherche des chaînes" msgctxt "#30011" msgid "Source Type" msgstr "Type de sources" msgctxt "#30012" msgid "TV channels" msgstr "Chaînes télé" msgctxt "#30013" msgid "Radio channels" msgstr "Chaînes radio" msgctxt "#30014" msgid "FTA channels" msgstr "Chaînes en clair" msgctxt "#30015" msgid "Scrambled channels" msgstr "Chaînes brouillées" msgctxt "#30016" msgid "HD channels" msgstr "Chaînes HD" msgctxt "#30017" msgid "Country" msgstr "Pays" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversion du câble" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Débit de symboles du câble" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulation du câble" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversion DVB-T" msgctxt "#30022" msgid "Satellite" msgstr "Satellite" msgctxt "#30023" msgid "ATSC Type" msgstr "Type ATSC" msgctxt "#30024" msgid "Back" msgstr "Retour" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Recherche de chaînes — en cours… %i %%" msgctxt "#30026" msgid "Type:" msgstr "Type :" msgctxt "#30027" msgid "Device:" msgstr "Périphériques :" msgctxt "#30028" msgid "Scan: %i" msgstr "Analyse : %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal : %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nouvelles chaînes : %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Toutes les chaînes : %i" msgctxt "#30032" msgid "Analog TV" msgstr "Télé analogique" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio analogique" msgctxt "#30034" msgid "Transponder:" msgstr "Transpondeur :" msgctxt "#30035" msgid "New channels" msgstr "Nouvelles chaînes" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Recherche de chaînes — Terminée" msgctxt "#30037" msgid "No device available - exiting" msgstr "Aucun périphérique n’est disponible — fermeture" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Aucun périphérique DVB-S2 n’est disponible — Tentative de repli sur DVB-S" msgctxt "#30039" msgid "Running" msgstr "En fonction" msgctxt "#30040" msgid "Stopped" msgstr "Arrêté" msgctxt "#30041" msgid "Finished" msgstr "Fini" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Recherche de chaînes — Annulée" msgctxt "#30043" msgid "Channel search - Error" msgstr "Recherche de chaînes — Erreur" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Connexion perdue vers le serveur VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Connexion récupérée avec le serveur VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Créer automatiquement des groupes de chaînes sur le serveur" msgctxt "#30047" msgid "Request Timeshift" msgstr "Demander le décalage temporel" msgctxt "#30048" msgid "Path to channel icons" msgstr "Chemin vers les icônes de la chaîne" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "Adresse MAC du serveur VDR pour le réveil par le réseau" msgctxt "#30100" msgid "VDR OSD" msgstr "Affichage à l’écran VDR" msgctxt "#30101" msgid "Setup" msgstr "Réglage" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Contrôle de l’affichage à l’écran — Peser sur info pour sortir" msgctxt "#30103" msgid "Select to control OSD" msgstr "Sélectionner pour contrôler l’affichage à l’écran" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Mode de décalage temporel" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Tampon de décalage temporel (RAM) x 100 Mo" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Tampon de décalage temporel (fichier ) x 1 Go" msgctxt "#30107" msgid "VDR Admin" msgstr "Administration VDR" msgctxt "#30108" msgid "Channels" msgstr "Chaînes" msgctxt "#30109" msgid "Provider whitelist" msgstr "Liste blanche des fournisseurs" msgctxt "#30110" msgid "Channel blacklist" msgstr "Liste noire des chaînes" msgctxt "#30111" msgid "Channel filters" msgstr "Filtres de chaînes" msgctxt "#30112" msgid "Radio Channels" msgstr "Chaîne radio" msgctxt "#30113" msgid "Save filters" msgstr "Enregistrer les filtres" msgctxt "#30114" msgid "Provider Unknown" msgstr "Fournisseur inconnu" msgctxt "#30200" msgid "Single" msgstr "Simple" msgctxt "#30201" msgid "Repeating" msgstr "Répétition" msgctxt "#30202" msgid "EGP" msgstr "GÉP" msgctxt "#30203" msgid "VPS" msgstr "SDV" msgctxt "#30204" msgid "Search EPG" msgstr "Rechercher dans le GÉP" msgctxt "#30205" msgid "Repeating Child" msgstr "Répétition de l’enfant" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fr_fr/000077500000000000000000000000001362540622500276425ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.fr_fr/strings.po000066400000000000000000000136211362540622500316760ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: French (France) (http://www.transifex.com/projects/p/kodi-main/language/fr_FR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr_FR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nom d'hôte ou adresse IP de l'enregistreur de disque vidéo (VDR)" msgctxt "#30001" msgid "VNSI Port" msgstr "Port VNSI" msgctxt "#30002" msgid "Priority" msgstr "Priorité" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversion du jeu de caractères" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Temporisation de connexion (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Lecture des enregistrements depuis un dossier" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Dossier des enregistrements VDR" msgctxt "#30008" msgid "Channel search" msgstr "Recherche de chaînes" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Recherche de chaînes - Paramètres" msgctxt "#30010" msgid "Start Channel search" msgstr "Démarrer la recherche de chaînes" msgctxt "#30011" msgid "Source Type" msgstr "Type de source" msgctxt "#30012" msgid "TV channels" msgstr "Chaînes TV" msgctxt "#30013" msgid "Radio channels" msgstr "Chaînes radio" msgctxt "#30014" msgid "FTA channels" msgstr "Chaînes gratuites" msgctxt "#30015" msgid "Scrambled channels" msgstr "Chaînes cryptées" msgctxt "#30016" msgid "HD channels" msgstr "Chaînes HD" msgctxt "#30017" msgid "Country" msgstr "Pays" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversion du câble" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Taux de modulation du câble" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulation du câble" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversion de polarité" msgctxt "#30022" msgid "Satellite" msgstr "Satellite" msgctxt "#30023" msgid "ATSC Type" msgstr "Type ATSC" msgctxt "#30024" msgid "Back" msgstr "Retour" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Recherche de chaînes - En cours… %i %%" msgctxt "#30026" msgid "Type:" msgstr "Type :" msgctxt "#30027" msgid "Device:" msgstr "Dispositif :" msgctxt "#30028" msgid "Scan: %i" msgstr "Analyse : %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal : %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nouvelles chaînes : %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Toutes les chaînes : %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV analogique" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio analogique" msgctxt "#30034" msgid "Transponder:" msgstr "Transpondeur :" msgctxt "#30035" msgid "New channels" msgstr "Nouvelles chaînes" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Recherche des chaînes - Terminée" msgctxt "#30037" msgid "No device available - exiting" msgstr "Aucun dispositif disponible, abandon" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Aucun dispositif DVB-S2 disponible, tentative en DVB-S" msgctxt "#30039" msgid "Running" msgstr "Lecture en cours" msgctxt "#30040" msgid "Stopped" msgstr "Stoppé" msgctxt "#30041" msgid "Finished" msgstr "Terminé" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Recherche de chaînes - Abandonnée" msgctxt "#30043" msgid "Channel search - Error" msgstr "Recherche de chaînes - Erreur" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Connexion perdue au serveur VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Connexion rétablie au serveur VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Créer automatiquement les groupes de chaînes sur le serveur" msgctxt "#30047" msgid "Request Timeshift" msgstr "Demander le différé" msgctxt "#30048" msgid "Path to channel icons" msgstr "Chemin vers les icônes des chaînes" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "Serveur MAC VDR pour le réveil à distance (Wake-on-LAN)" msgctxt "#30100" msgid "VDR OSD" msgstr "Incrustation à l'écran VDR" msgctxt "#30101" msgid "Setup" msgstr "Configuration" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Contrôle de l'incrustation à l'écran - Appuyer sur Infos pour sortir" msgctxt "#30103" msgid "Select to control OSD" msgstr "Sélectionner pour contrôler l'incrustation à l'écran" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Mode différé" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Tampon pour le différé (RAM) x100 Mo" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Tampon pour le différé (fichier) x1 Go" msgctxt "#30107" msgid "VDR Admin" msgstr "Administrateur VDR" msgctxt "#30108" msgid "Channels" msgstr "Chaînes" msgctxt "#30109" msgid "Provider whitelist" msgstr "Liste blanche de fournisseurs" msgctxt "#30110" msgid "Channel blacklist" msgstr "Liste noire de chaînes" msgctxt "#30111" msgid "Channel filters" msgstr "Filtres de chaînes" msgctxt "#30112" msgid "Radio Channels" msgstr "Chaînes de radio" msgctxt "#30113" msgid "Save filters" msgstr "Enregistrer les filtres" msgctxt "#30114" msgid "Provider Unknown" msgstr "Fournisseur inconnu" msgctxt "#30200" msgid "Single" msgstr "Unique" msgctxt "#30201" msgid "Repeating" msgstr "Répétition" msgctxt "#30202" msgid "EGP" msgstr "Guide" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Rechercher dans le guide" msgctxt "#30205" msgid "Repeating Child" msgstr "Répétition de l'enfant" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.gl_es/000077500000000000000000000000001362540622500276355ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.gl_es/strings.po000066400000000000000000000131571362540622500316750ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Galician (Spain) (http://www.transifex.com/projects/p/kodi-main/language/gl_ES/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gl_ES\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nome de host ou IP de VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Porto VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioridade" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversión do conxunto de caracteres" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Tempo de espera para conectar (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Ler gravacións do cartafol" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Cartafol das gravacións do VDR" msgctxt "#30008" msgid "Channel search" msgstr "Busca de canles" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Busca de canles - Configuración" msgctxt "#30010" msgid "Start Channel search" msgstr "Iniciar Busca" msgctxt "#30011" msgid "Source Type" msgstr "Tipo de Fonte" msgctxt "#30012" msgid "TV channels" msgstr "Canles de TV" msgctxt "#30013" msgid "Radio channels" msgstr "Canles de Radio" msgctxt "#30014" msgid "FTA channels" msgstr "Canles FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "Canles Codificadas" msgctxt "#30016" msgid "HD channels" msgstr "Canles HD" msgctxt "#30017" msgid "Country" msgstr "País" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversión de cable" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Ratio do cable" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulación do cable" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversión Terr" msgctxt "#30022" msgid "Satellite" msgstr "Satélite" msgctxt "#30023" msgid "ATSC Type" msgstr "Tipo ATSC" msgctxt "#30024" msgid "Back" msgstr "Atrás" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Busca de canles - executando... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipo:" msgctxt "#30027" msgid "Device:" msgstr "Dispositivo:" msgctxt "#30028" msgid "Scan: %i" msgstr "Buscar: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Sinal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Novas canles: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Todas as canles: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV Analóxica" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio Analóxica" msgctxt "#30034" msgid "Transponder:" msgstr "Transpondedor:" msgctxt "#30035" msgid "New channels" msgstr "Novas canles" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Busca de canles - Remantado" msgctxt "#30037" msgid "No device available - exiting" msgstr "Dispositivo non dispoñíbel - saíndo" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Dispositivo DVB-S2 non dispoñíbel - tente de voltar ao DVB-S" msgctxt "#30039" msgid "Running" msgstr "Procesando" msgctxt "#30040" msgid "Stopped" msgstr "Detido" msgctxt "#30041" msgid "Finished" msgstr "Rematado" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Busca de canles - Cancelada" msgctxt "#30043" msgid "Channel search - Error" msgstr "Busca de canles - Erro" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Perdeuse a conexión co Servidor VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Restabeleceuse a conexión co Servidor VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Crear grupos de canles automaticamente no servidor" msgctxt "#30047" msgid "Request Timeshift" msgstr "Solicitar Timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Ruta das iconas das canles" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC do servidor VDR para Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Configuración" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Controlando o OSD - prema info. para saír" msgctxt "#30103" msgid "Select to control OSD" msgstr "Seleccionar para controlar o OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Modo Timeshift" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Búfer do Timeshift (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Búfer do Timeshift (Ficheiro) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Administrador VDR" msgctxt "#30108" msgid "Channels" msgstr "Canles" msgctxt "#30109" msgid "Provider whitelist" msgstr "Listaxe branca de Provedores" msgctxt "#30110" msgid "Channel blacklist" msgstr "Listaxe negra de Canles" msgctxt "#30111" msgid "Channel filters" msgstr "Filtros das canles" msgctxt "#30112" msgid "Radio Channels" msgstr "Canles de Radio" msgctxt "#30113" msgid "Save filters" msgstr "Gardar filtros" msgctxt "#30114" msgid "Provider Unknown" msgstr "Provedor Descoñecido" msgctxt "#30200" msgid "Single" msgstr "Single" msgctxt "#30201" msgid "Repeating" msgstr "Repetición" msgctxt "#30202" msgid "EGP" msgstr "GUÍA" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Buscar na Guía" msgctxt "#30205" msgid "Repeating Child" msgstr "Repetición descendentes" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.he_il/000077500000000000000000000000001362540622500276245ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.he_il/strings.po000066400000000000000000000137241362540622500316640ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Hebrew (Israel) (http://www.transifex.com/projects/p/kodi-main/language/he_IL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he_IL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "שם מארח או כתובת IP" msgctxt "#30001" msgid "VNSI Port" msgstr "פורט" msgctxt "#30002" msgid "Priority" msgstr "קדימות" msgctxt "#30003" msgid "Character Set Conversion" msgstr "המרת ערכת תווים" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "זמן מירבי לניסיון חיבור (שנ')" msgctxt "#30006" msgid "Read recordings from directory" msgstr "קרא הקלטות מתיקיה" msgctxt "#30007" msgid "VDR recordings directory" msgstr "תיקיית הקלטות" msgctxt "#30008" msgid "Channel search" msgstr "חיפוש ערוצים" msgctxt "#30009" msgid "Channel search - Settings" msgstr "חיפוש ערוצים - הגדרות" msgctxt "#30010" msgid "Start Channel search" msgstr "התחלת חיפוש ערוצים" msgctxt "#30011" msgid "Source Type" msgstr "סוג מקור" msgctxt "#30012" msgid "TV channels" msgstr "ערוצי טלוויזיה" msgctxt "#30013" msgid "Radio channels" msgstr "ערוצי רדיו" msgctxt "#30014" msgid "FTA channels" msgstr "ערוצי FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "ערוצים מוצפנים" msgctxt "#30016" msgid "HD channels" msgstr "ערוצי HD" msgctxt "#30017" msgid "Country" msgstr "ארץ" msgctxt "#30018" msgid "Cable Inversion" msgstr "היפוך כבל" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "קצב סימבולי כבל" msgctxt "#30020" msgid "Cable modulation" msgstr "מודולציית כבל" msgctxt "#30021" msgid "Terr Inversion" msgstr "היפוך Terr" msgctxt "#30022" msgid "Satellite" msgstr "לוויין" msgctxt "#30023" msgid "ATSC Type" msgstr "סוג ATSC" msgctxt "#30024" msgid "Back" msgstr "אחורה" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "חיפוש ערוצים - מריץ... %i %%" msgctxt "#30026" msgid "Type:" msgstr "סוג:" msgctxt "#30027" msgid "Device:" msgstr "התקן:" msgctxt "#30028" msgid "Scan: %i" msgstr "סורק: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "אות: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "ערוצים חדשים: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "כל הערוצים: %i" msgctxt "#30032" msgid "Analog TV" msgstr "טלוויזיה אנלוגית" msgctxt "#30033" msgid "Analog Radio" msgstr "רדיו אנלוגי" msgctxt "#30034" msgid "Transponder:" msgstr "טרנספונדר:" msgctxt "#30035" msgid "New channels" msgstr "ערוצים חדשים" msgctxt "#30036" msgid "Channel search - Finished" msgstr "חיפוש ערוצים - הסתיים" msgctxt "#30037" msgid "No device available - exiting" msgstr "אין התקן זמין - עוצר" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "לא נמצא התקן DVB-S2 - מחפש התקן DVB-S" msgctxt "#30039" msgid "Running" msgstr "פועל" msgctxt "#30040" msgid "Stopped" msgstr "נעצר" msgctxt "#30041" msgid "Finished" msgstr "הסתיים" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "חיפוש ערוצים - בוטל" msgctxt "#30043" msgid "Channel search - Error" msgstr "חיפוש ערוצים - שגיאה" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "נותק משרת VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "חובר חזרה לשרת VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "צור אוטומטית קבוצות ערוצים בשרת" msgctxt "#30047" msgid "Request Timeshift" msgstr "בקש טיימשיפט" msgctxt "#30048" msgid "Path to channel icons" msgstr "נתיב סמלי ערוצים" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "כתובת MAC של השרת עבור Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "הגדרות" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "שליטה ב־OSD - ליציאה יש ללחוץ על מידע" msgctxt "#30103" msgid "Select to control OSD" msgstr "בחירה לשם שליטה ב־OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "מצב טיימשיפט" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "חוצץ טיימשיפט (זיכרון נדיף) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "חוצץ טיימשיפט (קובץ) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "ערוצים" msgctxt "#30109" msgid "Provider whitelist" msgstr "רשימת ספקים מותרים" msgctxt "#30110" msgid "Channel blacklist" msgstr "רשימת ערוצים אסורים" msgctxt "#30111" msgid "Channel filters" msgstr "מסנני ערוץ" msgctxt "#30112" msgid "Radio Channels" msgstr "ערוצי רדיו" msgctxt "#30113" msgid "Save filters" msgstr "שמירת מסננים" msgctxt "#30114" msgid "Provider Unknown" msgstr "ספק לא מוכר" msgctxt "#30200" msgid "Single" msgstr "יחיד" msgctxt "#30201" msgid "Repeating" msgstr "חוזר" msgctxt "#30202" msgid "EGP" msgstr "לוח שידורים" msgctxt "#30203" msgid "VPS" msgstr "שרת וירטואלי פרטי" msgctxt "#30204" msgid "Search EPG" msgstr "חפש בלוח השידורים" msgctxt "#30205" msgid "Repeating Child" msgstr "חוזר (תת סעיף)" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.hi_in/000077500000000000000000000000001362540622500276325ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.hi_in/strings.po000066400000000000000000000013421362540622500316630ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Hindi (India) (http://www.transifex.com/projects/p/kodi-main/language/hi_IN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hi_IN\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30017" msgid "Country" msgstr "देश" msgctxt "#30026" msgid "Type:" msgstr "टाइप" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.hr_hr/000077500000000000000000000000001362540622500276465ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.hr_hr/strings.po000066400000000000000000000135021362540622500317000ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Croatian (Croatia) (http://www.transifex.com/projects/p/kodi-main/language/hr_HR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hr_HR\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR naziv računala ili IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI ulaz" msgctxt "#30002" msgid "Priority" msgstr "Prioritet" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Skup znakova konverzije" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Istek vremena povezivanja (sek)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Čitaj snimanja iz direktorija" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR direktorij snimanja" msgctxt "#30008" msgid "Channel search" msgstr "Pretraživanje programa" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Pretraživanje programa - Postavke" msgctxt "#30010" msgid "Start Channel search" msgstr "Pokreni pretraživanje programa" msgctxt "#30011" msgid "Source Type" msgstr "Vrsta izvora" msgctxt "#30012" msgid "TV channels" msgstr "TV programi" msgctxt "#30013" msgid "Radio channels" msgstr "Radio programi" msgctxt "#30014" msgid "FTA channels" msgstr "Nekôdirani programi" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kôdirani programi" msgctxt "#30016" msgid "HD channels" msgstr "HD programi" msgctxt "#30017" msgid "Country" msgstr "Zemlja" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inverzija kabla" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Protok simbola kabla" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulacija kabla" msgctxt "#30021" msgid "Terr Inversion" msgstr "Zemaljska inverzija" msgctxt "#30022" msgid "Satellite" msgstr "Satelit" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC vrsta" msgctxt "#30024" msgid "Back" msgstr "Nazad" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Pretraživanje programa - pokretanje... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Vrsta:" msgctxt "#30027" msgid "Device:" msgstr "Uređaj:" msgctxt "#30028" msgid "Scan: %i" msgstr "Pretraži: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Novi programi: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Svi programi: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analogna TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analogni Radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Novi programi" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Pretraživanje programa - Završeno" msgctxt "#30037" msgid "No device available - exiting" msgstr "Nema dostupnih uređaja - izlazim" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Nema dostupnih DVB-S2 uređaja - pokušavam prebaciti na DVB-S" msgctxt "#30039" msgid "Running" msgstr "Pokrenuto" msgctxt "#30040" msgid "Stopped" msgstr "Zaustavljeno" msgctxt "#30041" msgid "Finished" msgstr "Završeno" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Pretraživanje programa - Prekinuto" msgctxt "#30043" msgid "Channel search - Error" msgstr "Pretraživanje programa - Greška" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Izgubljeno povezivanje s VDR poslužiteljem" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Povezivanje s VDR poslužiteljem ponovno uspostavljeno" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Stvori grupu programa automatski na poslužitelju" msgctxt "#30047" msgid "Request Timeshift" msgstr "Omogući vremensko premotavanje" msgctxt "#30048" msgid "Path to channel icons" msgstr "Putanja do ikona programa" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR poslužitelj MAC za Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Postavljanje" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Upravljanje OSD - pritisni info za izlaz" msgctxt "#30103" msgid "Select to control OSD" msgstr "Odaberi za upravljanje OSD-om" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Način vremenskog premotavanja" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Međumemorija vremenskog premotavanja (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Međumemorija vremenskog premotavanja (Datoteka) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR administrator" msgctxt "#30108" msgid "Channels" msgstr "Programi" msgctxt "#30109" msgid "Provider whitelist" msgstr "Dopušteni pružatelj usluga" msgctxt "#30110" msgid "Channel blacklist" msgstr "Blokirani programi" msgctxt "#30111" msgid "Channel filters" msgstr "Filtri programa" msgctxt "#30112" msgid "Radio Channels" msgstr "Radio programi" msgctxt "#30113" msgid "Save filters" msgstr "Spremi filter" msgctxt "#30114" msgid "Provider Unknown" msgstr "Nepoznat pružatelj usluge" msgctxt "#30200" msgid "Single" msgstr "Jednostruk" msgctxt "#30201" msgid "Repeating" msgstr "Ponavljajuće" msgctxt "#30202" msgid "EGP" msgstr "EGP vodič" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Pretraživanje EPG vodiča" msgctxt "#30205" msgid "Repeating Child" msgstr "Ponavljajuća podsnimka" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.hu_hu/000077500000000000000000000000001362540622500276545ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.hu_hu/strings.po000066400000000000000000000134061362540622500317110ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/kodi-main/language/hu_HU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hu_HU\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Kiszolgálónév vagy IP cím" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Port" msgctxt "#30002" msgid "Priority" msgstr "Prioritás" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Karakterszet konverzió" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "A kapcsolat időtúllépési értéke (mp.)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Felvételek olvasása könyvtárból" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR felvételi könyvtár" msgctxt "#30008" msgid "Channel search" msgstr "Csatorna keresés" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Csatorna keresés - Beállítások" msgctxt "#30010" msgid "Start Channel search" msgstr "Csatorna keresés indítása" msgctxt "#30011" msgid "Source Type" msgstr "A forrás típusa" msgctxt "#30012" msgid "TV channels" msgstr "TV csatornák" msgctxt "#30013" msgid "Radio channels" msgstr "Rádió csatornák" msgctxt "#30014" msgid "FTA channels" msgstr "Szabadon fogható csatornák" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kódolt csatornák" msgctxt "#30016" msgid "HD channels" msgstr "HD csatornák" msgctxt "#30017" msgid "Country" msgstr "Ország" msgctxt "#30018" msgid "Cable Inversion" msgstr "KábelTV inverzió" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "KábelTV szimbólumsebesség" msgctxt "#30020" msgid "Cable modulation" msgstr "KébelTV moduláció" msgctxt "#30021" msgid "Terr Inversion" msgstr "Földi sugárzás inverzió" msgctxt "#30022" msgid "Satellite" msgstr "Szatelit" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC típusa" msgctxt "#30024" msgid "Back" msgstr "Vissza" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Csatorna keresés - folyamatban... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Típus:" msgctxt "#30027" msgid "Device:" msgstr "Eszköz" msgctxt "#30028" msgid "Scan: %i" msgstr "Átvizsgálás: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Jelszint: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Új csatorna: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Összes csatorna: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analóg TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analóg Rádió" msgctxt "#30034" msgid "Transponder:" msgstr "Transzponder:" msgctxt "#30035" msgid "New channels" msgstr "Új csatornák" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Csatorna keresés - Befejeződött" msgctxt "#30037" msgid "No device available - exiting" msgstr "Nincs elérhető eszköz - kilépek" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Nincs elérhető DVB-S2 eszköz - megpróbálom DVB-S eszközzel " msgctxt "#30039" msgid "Running" msgstr "Fut" msgctxt "#30040" msgid "Stopped" msgstr "Megállítva" msgctxt "#30041" msgid "Finished" msgstr "Befejeződött" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Csatorna keresés - Megszakítva" msgctxt "#30043" msgid "Channel search - Error" msgstr "Csatorna keresés - Hiba" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Elveszett a kapcsolat a VDR szerverrel" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr " A kapcsolat a VDR szerverrel visszaállítva" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Csatorna csoportok automatikus létrehozása a szerveren" msgctxt "#30047" msgid "Request Timeshift" msgstr "Csúsztatott élőkép kérése" msgctxt "#30048" msgid "Path to channel icons" msgstr "Útvonal a csatorna ikonokhoz" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR kiszolágló MAC-címe a hálózati ébresztéshez" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Beállítás" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "OSD vezérlés - info gombbal kilép" msgctxt "#30103" msgid "Select to control OSD" msgstr "OSD vezérlése" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Csúsztatott felvétel mód" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Csúsztatott felvétel puffer (RAM) x100 Mb" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Csúsztatott felvétel (Fájl)x1 Gb" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Csatornák" msgctxt "#30109" msgid "Provider whitelist" msgstr "Szolgáltató fehérlista" msgctxt "#30110" msgid "Channel blacklist" msgstr "Csatorna fekete-lista" msgctxt "#30111" msgid "Channel filters" msgstr "Csatorna szűrők" msgctxt "#30112" msgid "Radio Channels" msgstr "Rádió csatornák" msgctxt "#30113" msgid "Save filters" msgstr "Szűrők elmentése" msgctxt "#30114" msgid "Provider Unknown" msgstr "Szolgáltató ismeretlen" msgctxt "#30200" msgid "Single" msgstr "Kislemez" msgctxt "#30201" msgid "Repeating" msgstr "Ismétlődő" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "EPG keresése" msgctxt "#30205" msgid "Repeating Child" msgstr "Ismétlődő gyerek" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.hy_am/000077500000000000000000000000001362540622500276415ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.hy_am/strings.po000066400000000000000000000015151362540622500316740ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Armenian (Armenia) (http://www.transifex.com/projects/p/kodi-main/language/hy_AM/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hy_AM\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Միացման վերջնաժամկետը (վ)" msgctxt "#30017" msgid "Country" msgstr "Երկիր" msgctxt "#30026" msgid "Type:" msgstr "Տեսակ." pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.id_id/000077500000000000000000000000001362540622500276145ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.id_id/strings.po000066400000000000000000000123371362540622500316530ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/kodi-main/language/id_ID/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id_ID\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Hostname atau alamat IP VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Port VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioritas" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Konversi Set Karakter" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Timeout koneksi (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Baca rekaman dari direktori" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Direktori perekaman VDR" msgctxt "#30008" msgid "Channel search" msgstr "Cari Kanal" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Cari Kanal - Setelan" msgctxt "#30010" msgid "Start Channel search" msgstr "Mulai pencarian kanal" msgctxt "#30011" msgid "Source Type" msgstr "Tipe sumber" msgctxt "#30012" msgid "TV channels" msgstr "Saluran TV" msgctxt "#30013" msgid "Radio channels" msgstr "Saluran Radio" msgctxt "#30014" msgid "FTA channels" msgstr "Kanal siaran gratis" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kanal yang diacak" msgctxt "#30016" msgid "HD channels" msgstr "Kanal HD" msgctxt "#30017" msgid "Country" msgstr "Negara" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversi Kabel" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Symbolrate Kabel" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulasi Kabel" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversi Terr" msgctxt "#30022" msgid "Satellite" msgstr "Satelit" msgctxt "#30023" msgid "ATSC Type" msgstr "Tipe ATSC" msgctxt "#30024" msgid "Back" msgstr "Mundur" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Pencarian kanal - sedang berlangsung... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipe:" msgctxt "#30027" msgid "Device:" msgstr "Perangkat:" msgctxt "#30028" msgid "Scan: %i" msgstr "Pindai: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Sinyal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Kanal baru: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Semua kanal: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV analog" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio analog" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Kanal baru" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Pencarian kanal - Selesai" msgctxt "#30037" msgid "No device available - exiting" msgstr "Tidak ada perangkat tersedia - Program dihentikan" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Tidak ada perangkat DVB-S2 tersedia - Mencoba kembali ke DVB-S" msgctxt "#30039" msgid "Running" msgstr "Menjalankan" msgctxt "#30040" msgid "Stopped" msgstr "Terhenti" msgctxt "#30041" msgid "Finished" msgstr "Selesai" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Pencarian kanal - digagalkan" msgctxt "#30043" msgid "Channel search - Error" msgstr "Pencarian kanal - Error" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Koneksi ke Server VDR terputus" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Koneksi ke Server VDR tersambung kembali" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Buat grup kanal secara otomatis di server" msgctxt "#30047" msgid "Request Timeshift" msgstr "Meminta Timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Path ke ikon kanal." msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "Alamat MAC Server VDR untuk Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "OSD VDR" msgctxt "#30101" msgid "Setup" msgstr "Konfigurasi" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Mengatur OSD - tekan info untuk keluar" msgctxt "#30103" msgid "Select to control OSD" msgstr "Pilih untuk menjalankan OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Modus Timeshift" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Penyangga Timeshift (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Penyangga Timeshift (Berkas) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Admin VDR" msgctxt "#30108" msgid "Channels" msgstr "Saluran" msgctxt "#30109" msgid "Provider whitelist" msgstr "Whitelist Penyedia" msgctxt "#30110" msgid "Channel blacklist" msgstr "Blacklist Kanal" msgctxt "#30111" msgid "Channel filters" msgstr "Filter Kanal" msgctxt "#30112" msgid "Radio Channels" msgstr "Kanal Radio" msgctxt "#30113" msgid "Save filters" msgstr "Simpan filter" msgctxt "#30114" msgid "Provider Unknown" msgstr "Penyedia tidak dikenal" msgctxt "#30201" msgid "Repeating" msgstr "Sedang Mengulang" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.is_is/000077500000000000000000000000001362540622500276525ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.is_is/strings.po000066400000000000000000000131171362540622500317060ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Icelandic (Iceland) (http://www.transifex.com/projects/p/kodi-main/language/is_IS/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: is_IS\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Hýsilnafn VDR eða IP-tala" msgctxt "#30001" msgid "VNSI Port" msgstr "Gátt fyrir VNSI" msgctxt "#30002" msgid "Priority" msgstr "Forgangur" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Stafatafla fyrir umbreytingu" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Tengitími rennur út (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Lesa upptökur úr skráasafni" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Upptökuskráasafn VDR" msgctxt "#30008" msgid "Channel search" msgstr "Rásaleit" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Rásaleit - Stillingar" msgctxt "#30010" msgid "Start Channel search" msgstr "Hefja rásaleit" msgctxt "#30011" msgid "Source Type" msgstr "Gerð uppruna" msgctxt "#30012" msgid "TV channels" msgstr "Sjónvarpsrásir" msgctxt "#30013" msgid "Radio channels" msgstr "Útvarpsrásir" msgctxt "#30014" msgid "FTA channels" msgstr "Fríar rásir" msgctxt "#30015" msgid "Scrambled channels" msgstr "Ruglaðar rásir" msgctxt "#30016" msgid "HD channels" msgstr "HD rásir" msgctxt "#30017" msgid "Country" msgstr "Land" msgctxt "#30018" msgid "Cable Inversion" msgstr "Umsnúningur kapals" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Merkjahraði kapals" msgctxt "#30020" msgid "Cable modulation" msgstr "Kapalmótun" msgctxt "#30021" msgid "Terr Inversion" msgstr "Umsnúningur jarðlægs merkis (Terr Inv)" msgctxt "#30022" msgid "Satellite" msgstr "Gervihnöttur" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC gerð" msgctxt "#30024" msgid "Back" msgstr "Til baka" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Rásaleit - í gangi... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tegund:" msgctxt "#30027" msgid "Device:" msgstr "Tæki:" msgctxt "#30028" msgid "Scan: %i" msgstr "Skönnun: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Merki: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nýjar rásir: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Allar rásir: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Hliðrænt sjónvarp" msgctxt "#30033" msgid "Analog Radio" msgstr "Hliðrænt útvarp" msgctxt "#30034" msgid "Transponder:" msgstr "Endurvarpi:" msgctxt "#30035" msgid "New channels" msgstr "Nýjar rásir" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Rásaleit - Lokið" msgctxt "#30037" msgid "No device available - exiting" msgstr "Ekkert tæki tiltækt - hætti við" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Ekkert DVB-S2 tæki tiltækt - reyna að nota DVB-S" msgctxt "#30039" msgid "Running" msgstr "Í gangi" msgctxt "#30040" msgid "Stopped" msgstr "Stöðvað" msgctxt "#30041" msgid "Finished" msgstr "Búið" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Rásaleit - Hætt við" msgctxt "#30043" msgid "Channel search - Error" msgstr "Rásaleit - Villa" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Missti tenginguna við VDR miðlara" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Tenging endurheimt við VDR miðlara" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Búa sjálfvirkt til rásahópa á miðlaranum" msgctxt "#30047" msgid "Request Timeshift" msgstr "Biðja um tímahliðrun" msgctxt "#30048" msgid "Path to channel icons" msgstr "Slóð á táknmyndir rása" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC vistfang VDR-miðlara fyrir Wake On LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR-skjátexti" msgctxt "#30101" msgid "Setup" msgstr "Uppsetning" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Stjórna skjátexta - Ýttu á upplýsingar til að hætta" msgctxt "#30103" msgid "Select to control OSD" msgstr "Valið að stjórna skjátexta" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Tímahliðrunarhamur" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Flýtiminni tímahliðrunar (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Flýtiminni tímahliðrunar (skrá) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Stjórnandi VDR" msgctxt "#30108" msgid "Channels" msgstr "Rásir" msgctxt "#30109" msgid "Provider whitelist" msgstr "Leyfðar efnisveitur" msgctxt "#30110" msgid "Channel blacklist" msgstr "Bannaðar rásir" msgctxt "#30111" msgid "Channel filters" msgstr "Rásasía" msgctxt "#30112" msgid "Radio Channels" msgstr "Útvarpsrásir" msgctxt "#30113" msgid "Save filters" msgstr "Vista síur" msgctxt "#30114" msgid "Provider Unknown" msgstr "Óþekkt efnisveita" msgctxt "#30200" msgid "Single" msgstr "Einu sinni" msgctxt "#30201" msgid "Repeating" msgstr "Endurtekið" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Leita að EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Endurtekin afleiða" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.it_it/000077500000000000000000000000001362540622500276545ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.it_it/strings.po000066400000000000000000000130531362540622500317070ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Italian (Italy) (http://www.transifex.com/projects/p/kodi-main/language/it_IT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it_IT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR hostname o indirizzo IP" msgctxt "#30001" msgid "VNSI Port" msgstr "Porta VNSI" msgctxt "#30002" msgid "Priority" msgstr "Priorità" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversione del set di caratteri" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Timeout per la connessione (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Leggi le registrazioni dalla cartella" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Cartella delle registrazioni VDR" msgctxt "#30008" msgid "Channel search" msgstr "Ricerca canale" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Ricerca canale - Impostazioni" msgctxt "#30010" msgid "Start Channel search" msgstr "Inizia la ricerca canale" msgctxt "#30011" msgid "Source Type" msgstr "Tipo sorgente" msgctxt "#30012" msgid "TV channels" msgstr "Canali TV" msgctxt "#30013" msgid "Radio channels" msgstr "Canali radio" msgctxt "#30014" msgid "FTA channels" msgstr "Canali FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "Canali criptati" msgctxt "#30016" msgid "HD channels" msgstr "Canali HD" msgctxt "#30017" msgid "Country" msgstr "Nazione" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversione cavo" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Symbolrate cavo" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulazione cavo" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversione terr" msgctxt "#30022" msgid "Satellite" msgstr "Satellite" msgctxt "#30023" msgid "ATSC Type" msgstr "Tipo ATSC" msgctxt "#30024" msgid "Back" msgstr "Indietro" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Ricerca canale - in esecuzione... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipo:" msgctxt "#30027" msgid "Device:" msgstr "Dispositivo:" msgctxt "#30028" msgid "Scan: %i" msgstr "Scansione: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Segnale: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nuovi canali: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Tutti i canali: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Tv analogica" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio analogica" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Nuovi canali" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Ricerca canale - Terminata" msgctxt "#30037" msgid "No device available - exiting" msgstr "Nessuno dispositivo disponibile - esistente" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Non sono disponibili dispositivi DVB-S2 - fallback a DVB-S" msgctxt "#30039" msgid "Running" msgstr "In esecuzione" msgctxt "#30040" msgid "Stopped" msgstr "Fermato" msgctxt "#30041" msgid "Finished" msgstr "Finito" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Ricerca canale - Annullata" msgctxt "#30043" msgid "Channel search - Error" msgstr "Ricerca canale - Errore" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Connessione al server VDR persa" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Connessione al server VDR ripristinata" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Crea automaticamente gruppi di canali sul server" msgctxt "#30047" msgid "Request Timeshift" msgstr "Richiesta " msgctxt "#30048" msgid "Path to channel icons" msgstr "Percorso per icone canali" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC per Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "OSD VDR" msgctxt "#30101" msgid "Setup" msgstr "Impostazioni" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Controllo OSD - premi info per uscire" msgctxt "#30103" msgid "Select to control OSD" msgstr "Seleziona per controllare l'OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Modalità Timeshift" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Buffer Timeshift (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Buffer Timeshift (File) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Amministratore VDR" msgctxt "#30108" msgid "Channels" msgstr "Canali" msgctxt "#30109" msgid "Provider whitelist" msgstr "Lista provider permessi " msgctxt "#30110" msgid "Channel blacklist" msgstr "Canali non permessi" msgctxt "#30111" msgid "Channel filters" msgstr "Filtri canale" msgctxt "#30112" msgid "Radio Channels" msgstr "Canali radio" msgctxt "#30113" msgid "Save filters" msgstr "Salva filtri" msgctxt "#30114" msgid "Provider Unknown" msgstr "Provider sconosciuti" msgctxt "#30200" msgid "Single" msgstr "Singolo" msgctxt "#30201" msgid "Repeating" msgstr "Ripetizione" msgctxt "#30202" msgid "EGP" msgstr "EPG" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Cerca EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Ripetizione Bambini" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ja_jp/000077500000000000000000000000001362540622500276275ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ja_jp/strings.po000066400000000000000000000123301362540622500316570ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/kodi-main/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ja_JP\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR のホスト名またはIPアドレス" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI ポート" msgctxt "#30002" msgid "Priority" msgstr "優先順位" msgctxt "#30003" msgid "Character Set Conversion" msgstr "文字セット変換" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "接続タイムアウト (秒)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "ディレクトリから録画を読む" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR録画のディレクトリ" msgctxt "#30008" msgid "Channel search" msgstr "チャンネル検索" msgctxt "#30009" msgid "Channel search - Settings" msgstr "チャンネル検索 - 設定" msgctxt "#30010" msgid "Start Channel search" msgstr "チャンネル検索を開始" msgctxt "#30011" msgid "Source Type" msgstr "ソースのタイプ" msgctxt "#30012" msgid "TV channels" msgstr "TVチャンネル" msgctxt "#30013" msgid "Radio channels" msgstr "ラジオチャンネル" msgctxt "#30014" msgid "FTA channels" msgstr "FTAチャンネル" msgctxt "#30015" msgid "Scrambled channels" msgstr "スクランブルチャンネル" msgctxt "#30016" msgid "HD channels" msgstr "HDチャンネル" msgctxt "#30017" msgid "Country" msgstr "国" msgctxt "#30022" msgid "Satellite" msgstr "衛星" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSCタイプ" msgctxt "#30024" msgid "Back" msgstr "戻る" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "チャンネル検索 - 実行中... %i %%" msgctxt "#30026" msgid "Type:" msgstr "タイプ:" msgctxt "#30027" msgid "Device:" msgstr "デバイス:" msgctxt "#30028" msgid "Scan: %i" msgstr "スキャン: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "シグナル:%i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "新規チャンネル: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "全チャンネル: %i" msgctxt "#30032" msgid "Analog TV" msgstr "アナログTV" msgctxt "#30033" msgid "Analog Radio" msgstr "アナログラジオ" msgctxt "#30035" msgid "New channels" msgstr "新規チャンネル" msgctxt "#30036" msgid "Channel search - Finished" msgstr "チャンネル検索 - 完了" msgctxt "#30037" msgid "No device available - exiting" msgstr "利用可能なデバイスがありません - 出ます" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "DVB-S2 のデバイスが見つかりません - DVB-S へフォールバックしようとしています" msgctxt "#30039" msgid "Running" msgstr "実行中" msgctxt "#30040" msgid "Stopped" msgstr "停止" msgctxt "#30041" msgid "Finished" msgstr "終了" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "チャンネル検索 - キャンセル" msgctxt "#30043" msgid "Channel search - Error" msgstr "チャンネル検索 - エラー" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "VDRサーバとの接続が切断されました" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "VDRサーバとの接続が復活しました" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "サーバ上で自動的にチャネルグループを作成する" msgctxt "#30047" msgid "Request Timeshift" msgstr "タイムシフトを要求する" msgctxt "#30048" msgid "Path to channel icons" msgstr "チャンネルアイコンの保存パス" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR サーバー MAC アドレス(Wake-on-LAN用)" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "設定" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "OSDを制御する - 終了するのには「Info]を押して下さい" msgctxt "#30103" msgid "Select to control OSD" msgstr "OSDを制御するため選択してください" msgctxt "#30104" msgid "Timeshift Mode" msgstr "タイムシフトモード" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "タイムシフトバッファー (RAM) x100MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "タイムシフトバッファー (ファイル) x1GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR管理" msgctxt "#30108" msgid "Channels" msgstr "チャンネル" msgctxt "#30110" msgid "Channel blacklist" msgstr "チャンネルのブラックリスト" msgctxt "#30112" msgid "Radio Channels" msgstr "ラジオチャンネル" msgctxt "#30113" msgid "Save filters" msgstr "絞り込みの保存" msgctxt "#30201" msgid "Repeating" msgstr "くり返し" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ko_kr/000077500000000000000000000000001362540622500276515ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ko_kr/strings.po000066400000000000000000000127131362540622500317060ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Korean (Korea) (http://www.transifex.com/projects/p/kodi-main/language/ko_KR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ko_KR\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR 호스트네임 또는 IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI 포트" msgctxt "#30002" msgid "Priority" msgstr "우선순위" msgctxt "#30003" msgid "Character Set Conversion" msgstr "문자집합 변환" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "연결시간 제한 (초)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "디렉터리에서 녹화 읽기" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR 녹화 디렉터리" msgctxt "#30008" msgid "Channel search" msgstr "채널 검색" msgctxt "#30009" msgid "Channel search - Settings" msgstr "채널 검색 - 설정" msgctxt "#30010" msgid "Start Channel search" msgstr "채널 검색 시작" msgctxt "#30011" msgid "Source Type" msgstr "소스 종류" msgctxt "#30012" msgid "TV channels" msgstr "TV 채널" msgctxt "#30013" msgid "Radio channels" msgstr "라디오 채널" msgctxt "#30014" msgid "FTA channels" msgstr "FTA 채널" msgctxt "#30015" msgid "Scrambled channels" msgstr "암호화 채널" msgctxt "#30016" msgid "HD channels" msgstr "HD 채널" msgctxt "#30017" msgid "Country" msgstr "국가" msgctxt "#30018" msgid "Cable Inversion" msgstr "케이블 반전" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "케이블 심볼 레이트" msgctxt "#30020" msgid "Cable modulation" msgstr "케이블 변조" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr 반전" msgctxt "#30022" msgid "Satellite" msgstr "위성" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC 형식" msgctxt "#30024" msgid "Back" msgstr "뒤로" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "채널 검색 - 검색중... %i %%" msgctxt "#30026" msgid "Type:" msgstr "형식:" msgctxt "#30027" msgid "Device:" msgstr "장치:" msgctxt "#30028" msgid "Scan: %i" msgstr "스캔: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "신호: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "새 채널: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "모든 채널: %i" msgctxt "#30032" msgid "Analog TV" msgstr "아날로그 TV" msgctxt "#30033" msgid "Analog Radio" msgstr "아날로그 라디오" msgctxt "#30034" msgid "Transponder:" msgstr "수신기:" msgctxt "#30035" msgid "New channels" msgstr "새 채널" msgctxt "#30036" msgid "Channel search - Finished" msgstr "채널 검색 - 완료" msgctxt "#30037" msgid "No device available - exiting" msgstr "장치 없음 - 종료" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "DVB-S2 장치 없음 - DVB-S 장치로 시도중" msgctxt "#30039" msgid "Running" msgstr "실행중" msgctxt "#30040" msgid "Stopped" msgstr "중지" msgctxt "#30041" msgid "Finished" msgstr "완료" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "채널 검색 - 취소" msgctxt "#30043" msgid "Channel search - Error" msgstr "채널 검색 - 오류" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "VDR 서버 연결 끊김" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "VRD 서버 연결 복구" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "서버에 자동으로 채널 그룹 생성" msgctxt "#30047" msgid "Request Timeshift" msgstr "타임시프트 요청" msgctxt "#30048" msgid "Path to channel icons" msgstr "채널 아이콘 경로" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "Wake-on-LAN 을 위한 VDR 서버의 MAC 주소" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "설정" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "OSD 제어 - info 키를 눌러 종료" msgctxt "#30103" msgid "Select to control OSD" msgstr "OSD 제어를 선택" msgctxt "#30104" msgid "Timeshift Mode" msgstr "타임시프트 모드" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "타임시프트 버퍼 (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "타임시프트 버퍼 (파일) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR 관리" msgctxt "#30108" msgid "Channels" msgstr "채널" msgctxt "#30109" msgid "Provider whitelist" msgstr "허용된 제공자" msgctxt "#30110" msgid "Channel blacklist" msgstr "채널 블랙리스트" msgctxt "#30111" msgid "Channel filters" msgstr "채널 필터" msgctxt "#30112" msgid "Radio Channels" msgstr "라디오 채널" msgctxt "#30113" msgid "Save filters" msgstr "필터 저장" msgctxt "#30114" msgid "Provider Unknown" msgstr "알려지지 않은 제공자" msgctxt "#30200" msgid "Single" msgstr "단일" msgctxt "#30201" msgid "Repeating" msgstr "반복" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "EPG 검색" msgctxt "#30205" msgid "Repeating Child" msgstr "아래 반복" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.lt_lt/000077500000000000000000000000001362540622500276625ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.lt_lt/strings.po000066400000000000000000000133571362540622500317240ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/kodi-main/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt_LT\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR kompiuterio vardas arba IP adresas" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI prievadas" msgctxt "#30002" msgid "Priority" msgstr "Prioritetas" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Simbolių rinkinio konvertavimas" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Prisijungimui skirtas laikas (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Skaityti įrašus iš katalogo" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR įrašų katalogas" msgctxt "#30008" msgid "Channel search" msgstr "Kanalų paieška" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Kanalų paieška - Nustatymai" msgctxt "#30010" msgid "Start Channel search" msgstr "Pradėti kanalų paiešką" msgctxt "#30011" msgid "Source Type" msgstr "Šaltinio tipas" msgctxt "#30012" msgid "TV channels" msgstr "TV kanalai" msgctxt "#30013" msgid "Radio channels" msgstr "Radijo kanalai" msgctxt "#30014" msgid "FTA channels" msgstr "FTA kanalai" msgctxt "#30015" msgid "Scrambled channels" msgstr "Koduoti kanalai" msgctxt "#30016" msgid "HD channels" msgstr "HD kanalai" msgctxt "#30017" msgid "Country" msgstr "Šalis" msgctxt "#30018" msgid "Cable Inversion" msgstr "Kabelio inversija" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Kabelio spartos dažnis" msgctxt "#30020" msgid "Cable modulation" msgstr "Kabelio moduliavimas" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr inversija" msgctxt "#30022" msgid "Satellite" msgstr "Palydovas" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC tipas" msgctxt "#30024" msgid "Back" msgstr "Atgal" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Kanalų paieška - veikia... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipas:" msgctxt "#30027" msgid "Device:" msgstr "Įrenginys:" msgctxt "#30028" msgid "Scan: %i" msgstr "Skenavimas: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signalas: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nauji kanalai: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Visi kanalai: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analoginė TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analoginis radijas" msgctxt "#30034" msgid "Transponder:" msgstr "Transponderis:" msgctxt "#30035" msgid "New channels" msgstr "Nauji kanalai" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Kanalų paieška - Baigta" msgctxt "#30037" msgid "No device available - exiting" msgstr "Nėra galimų įrenginių - išeinama" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Nėra DVB-S2 įrenginio - bandomas atsarginis DVB-S" msgctxt "#30039" msgid "Running" msgstr "Veikia" msgctxt "#30040" msgid "Stopped" msgstr "Sustabdyta" msgctxt "#30041" msgid "Finished" msgstr "Užbaigta" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Kanalų paieška - Atšaukta" msgctxt "#30043" msgid "Channel search - Error" msgstr "Kanalų paieška - Klaida" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Nutrūko ryšys su VDR serveriu" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Prijungimas prie VDR serverio atkurtas" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Serveryje sukurti kanalų grupes automatiškai" msgctxt "#30047" msgid "Request Timeshift" msgstr "Užklausti laiko poslinkio" msgctxt "#30048" msgid "Path to channel icons" msgstr "Kelias iki kanalų piktogramų" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR serverio MAC adresas Wake-on-LAN funkcijai" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Sąranka" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Kontroliuojamas OSD - spauskite info, norėdami išeiti" msgctxt "#30103" msgid "Select to control OSD" msgstr "Pasirinkite, norėdami kontroliuoti OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Laiko poslinkio būdas" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Laiko poslinkio buferis (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Laiko poslinkio buferis (Failas) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR administratorius" msgctxt "#30108" msgid "Channels" msgstr "Kanalai" msgctxt "#30109" msgid "Provider whitelist" msgstr "Tiekėjų baltasis sąrašas" msgctxt "#30110" msgid "Channel blacklist" msgstr "Tiekėjų juodasis sąrašas" msgctxt "#30111" msgid "Channel filters" msgstr "Kanalų filtrai" msgctxt "#30112" msgid "Radio Channels" msgstr "Radijo kanalai" msgctxt "#30113" msgid "Save filters" msgstr "Išsaugoti filtrus" msgctxt "#30114" msgid "Provider Unknown" msgstr "Tiekėjas nežinomas" msgctxt "#30200" msgid "Single" msgstr "Vienas" msgctxt "#30201" msgid "Repeating" msgstr "Pasikartojantis" msgctxt "#30202" msgid "EGP" msgstr "EPG" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Ieškoti EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Pasikartojantis vaikas" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.lv_lv/000077500000000000000000000000001362540622500276665ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.lv_lv/strings.po000066400000000000000000000124631362540622500317250ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Latvian (Latvia) (http://www.transifex.com/projects/p/kodi-main/language/lv_LV/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lv_LV\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR saimniekvārds vai IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI ports" msgctxt "#30002" msgid "Priority" msgstr "Prioritāte" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Rakstzīmju kopas konversija" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Savienojuma noilgums" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Lasīt ierakstus no direktorijas" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR ierakstu direktorija" msgctxt "#30008" msgid "Channel search" msgstr "Kanāla meklēšana" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Kanāla meklēšana - iestatījumi" msgctxt "#30010" msgid "Start Channel search" msgstr "Sākt kanāla meklēšanu" msgctxt "#30011" msgid "Source Type" msgstr "Avota veids" msgctxt "#30012" msgid "TV channels" msgstr "TV kanāli" msgctxt "#30013" msgid "Radio channels" msgstr "Radio kanāli" msgctxt "#30014" msgid "FTA channels" msgstr "Bezmaksas kanāli" msgctxt "#30015" msgid "Scrambled channels" msgstr "Maksas kanāli" msgctxt "#30016" msgid "HD channels" msgstr "HD kanāli" msgctxt "#30017" msgid "Country" msgstr "Valsts" msgctxt "#30018" msgid "Cable Inversion" msgstr "Kabeļa inversija" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Kabeļa simbolbiežums" msgctxt "#30020" msgid "Cable modulation" msgstr "Kabeļa modulācija" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr inversija" msgctxt "#30022" msgid "Satellite" msgstr "Satelīts" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC veids" msgctxt "#30024" msgid "Back" msgstr "Atpakaļ" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Kanāla meklēšana - darbojas... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Veids:" msgctxt "#30027" msgid "Device:" msgstr "Ierīce:" msgctxt "#30028" msgid "Scan: %i" msgstr "Skenēt: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signāls: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Jauni kanāli: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Visi kanāli: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analogā TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analogais radio" msgctxt "#30034" msgid "Transponder:" msgstr "Nesējfrekvence:" msgctxt "#30035" msgid "New channels" msgstr "Jauni kanāli" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Kanāla meklēšana - pabeigta" msgctxt "#30037" msgid "No device available - exiting" msgstr "Neviena ierīce nav pieejama - iziet" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Neviena DVB-S2 ierīce nav pieejama - mēģina atgriesties pie DVB-S" msgctxt "#30039" msgid "Running" msgstr "Darbojas" msgctxt "#30040" msgid "Stopped" msgstr "Apturēts" msgctxt "#30041" msgid "Finished" msgstr "Pabeigts" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Kanāla meklēšana - atcelta" msgctxt "#30043" msgid "Channel search - Error" msgstr "Kanāla meklēšana - kļūda" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Zudis VDR servera pieslēgums" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "VDR servera pieslēgums atjaunots" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Izveidot kanālu grupas serverī automātiski" msgctxt "#30047" msgid "Request Timeshift" msgstr "Pieprasīt laika nobīdi" msgctxt "#30048" msgid "Path to channel icons" msgstr "Ceļš uz kanālu ikonām" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC for Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Iestatīšana" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "OSD kontrolēšana - iziet spiežot info" msgctxt "#30103" msgid "Select to control OSD" msgstr "Atlasiet OSD kontrolei" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Laika nobīdes režīms" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Laika nobīdes buferis (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Laika nobīdes buferis (fails) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR admins" msgctxt "#30108" msgid "Channels" msgstr "Kanāli" msgctxt "#30109" msgid "Provider whitelist" msgstr "Atļautie piegādātāji " msgctxt "#30110" msgid "Channel blacklist" msgstr "Aizliegtie kanāli" msgctxt "#30111" msgid "Channel filters" msgstr "Kanālu filtri" msgctxt "#30112" msgid "Radio Channels" msgstr "Radio kanāli" msgctxt "#30113" msgid "Save filters" msgstr "Saglabāt filtrus" msgctxt "#30114" msgid "Provider Unknown" msgstr "Nezināms piegādātājs" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.mi/000077500000000000000000000000001362540622500271515ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.mi/strings.po000066400000000000000000000016601362540622500312050ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Maori (http://www.transifex.com/projects/p/kodi-main/language/mi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: mi\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgctxt "#30012" msgid "TV channels" msgstr "Hongere TV" msgctxt "#30013" msgid "Radio channels" msgstr "Hongere Irirangi" msgctxt "#30017" msgid "Country" msgstr "Country" msgctxt "#30026" msgid "Type:" msgstr "Momo:" msgctxt "#30039" msgid "Running" msgstr "Rere" msgctxt "#30108" msgid "Channels" msgstr "Ngā hongere" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.mk_mk/000077500000000000000000000000001362540622500276425ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.mk_mk/strings.po000066400000000000000000000140541362540622500316770ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Macedonian (Macedonia) (http://www.transifex.com/projects/p/kodi-main/language/mk_MK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: mk_MK\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Hostname или IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Port" msgctxt "#30002" msgid "Priority" msgstr "Приоритет" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Конверзија на вид букви" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Истече времето за поврзување (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Читај снимки од локација" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Локација на VDR снимки" msgctxt "#30008" msgid "Channel search" msgstr "Барање на канали" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Барање на канали - Поставки" msgctxt "#30010" msgid "Start Channel search" msgstr "Започни со барање канали" msgctxt "#30011" msgid "Source Type" msgstr "Вид на извор" msgctxt "#30012" msgid "TV channels" msgstr "ТВ канали" msgctxt "#30013" msgid "Radio channels" msgstr "Радио канали" msgctxt "#30014" msgid "FTA channels" msgstr "Слободни канали" msgctxt "#30015" msgid "Scrambled channels" msgstr "Заклучени канали" msgctxt "#30016" msgid "HD channels" msgstr "HD канали" msgctxt "#30017" msgid "Country" msgstr "Држава" msgctxt "#30018" msgid "Cable Inversion" msgstr "Кабловска инверзија" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Кабловска стапка на симбол" msgctxt "#30020" msgid "Cable modulation" msgstr "Кабловска модулација" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr Инверзија" msgctxt "#30022" msgid "Satellite" msgstr "Сателит" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC Тип" msgctxt "#30024" msgid "Back" msgstr "Назад" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Барање канали... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Тип:" msgctxt "#30027" msgid "Device:" msgstr "Уред:" msgctxt "#30028" msgid "Scan: %i" msgstr "Пребарај: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Сигнал: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Нови канали: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Сите канали: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Аналогна ТВ" msgctxt "#30033" msgid "Analog Radio" msgstr "Аналогно Радио" msgctxt "#30034" msgid "Transponder:" msgstr "Транспондер:" msgctxt "#30035" msgid "New channels" msgstr "Нови канали" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Барање на канали - Завршено" msgctxt "#30037" msgid "No device available - exiting" msgstr "Нема достапни уреди" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Нема DVB-S2 достапни уреди- trying fallback to DVB-S" msgctxt "#30039" msgid "Running" msgstr "Стартување" msgctxt "#30040" msgid "Stopped" msgstr "Запрено" msgctxt "#30041" msgid "Finished" msgstr "Завршено" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Барање на канали - Откажано" msgctxt "#30043" msgid "Channel search - Error" msgstr "Барање на канали - Грешка" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Изгубена врска со VDR сервер" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Обновена врска со VDR сервер" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Автоматски креирај група на канали на сервер" msgctxt "#30047" msgid "Request Timeshift" msgstr "Побарај Timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Локација на иконите за канали" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC адреса за Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Конфигурација" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Контролирање на дисплејот - притисни „инфо“ за да излезеш" msgctxt "#30103" msgid "Select to control OSD" msgstr "Одбери за да го контролираш дисплејот" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Timeshift режим" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Timeshift Buffer (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Timeshift Buffer (File) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Админ" msgctxt "#30108" msgid "Channels" msgstr "Канали" msgctxt "#30109" msgid "Provider whitelist" msgstr "Листа на одобрени провајдери" msgctxt "#30110" msgid "Channel blacklist" msgstr "Листа на блокирани канали" msgctxt "#30111" msgid "Channel filters" msgstr "Смени филтери" msgctxt "#30112" msgid "Radio Channels" msgstr "Радио Канали" msgctxt "#30113" msgid "Save filters" msgstr "Зачувај филтри" msgctxt "#30114" msgid "Provider Unknown" msgstr "Непознат провајдер" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ml_in/000077500000000000000000000000001362540622500276425ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ml_in/strings.po000066400000000000000000000012611362540622500316730ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Malayalam (India) (http://www.transifex.com/projects/p/kodi-main/language/ml_IN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ml_IN\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30026" msgid "Type:" msgstr "രീതി" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.mn_mn/000077500000000000000000000000001362540622500276505ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.mn_mn/strings.po000066400000000000000000000110401362540622500316750ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Mongolian (Mongolia) (http://www.transifex.com/projects/p/kodi-main/language/mn_MN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: mn_MN\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR нэр эсвэл IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI порт" msgctxt "#30002" msgid "Priority" msgstr "Эрэмбэ" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Тэмдэгт хөрвүүлэлт" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Холболтын хугцаа хэтэрсэн" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Бичлэгүүдийг хавтаснаас унших" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR бичлэгийн хавтас" msgctxt "#30008" msgid "Channel search" msgstr "Суваг хайх" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Суваг хайх - Тохиргоо" msgctxt "#30010" msgid "Start Channel search" msgstr "Суваг хайж эхлэх" msgctxt "#30011" msgid "Source Type" msgstr "Эх сурвалжийн төрөл" msgctxt "#30012" msgid "TV channels" msgstr "ТВ сувгууд" msgctxt "#30013" msgid "Radio channels" msgstr "Радио сувгууд" msgctxt "#30014" msgid "FTA channels" msgstr "FTA сувгууд" msgctxt "#30015" msgid "Scrambled channels" msgstr "Холилдсон сувгууд" msgctxt "#30016" msgid "HD channels" msgstr "HD сувгууд" msgctxt "#30017" msgid "Country" msgstr "Улс" msgctxt "#30022" msgid "Satellite" msgstr "Хиймэл дагуул" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC төрөл" msgctxt "#30024" msgid "Back" msgstr "Буцах" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Суваг хайх - хайж байна... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Төрөл:" msgctxt "#30027" msgid "Device:" msgstr "Төхөөрөмж:" msgctxt "#30028" msgid "Scan: %i" msgstr "Хайлт: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Дохио: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Шинэ сувгууд: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Бүх сувгууд: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Аналог ТВ" msgctxt "#30033" msgid "Analog Radio" msgstr "Аналог радио" msgctxt "#30035" msgid "New channels" msgstr "Шинэ сувгууд" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Суваг хайх - Дууссан" msgctxt "#30037" msgid "No device available - exiting" msgstr "Боломжтой төхөөрөмж алга - гарч байна" msgctxt "#30039" msgid "Running" msgstr "Ажиллаж байна" msgctxt "#30040" msgid "Stopped" msgstr "Зогссон" msgctxt "#30041" msgid "Finished" msgstr "Дууссан" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Суваг хайх - Цуцласан" msgctxt "#30043" msgid "Channel search - Error" msgstr "Суваг хайх - Алдаа" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "VDR сервер уруух холболт алдагдсан" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Энэ серверт сувгийн группыг автоматаар үүсгэ" msgctxt "#30048" msgid "Path to channel icons" msgstr "Сувгийн таних тэмдэгийн зам" msgctxt "#30101" msgid "Setup" msgstr "Тохиргоо" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR админ" msgctxt "#30108" msgid "Channels" msgstr "Сувгууд" msgctxt "#30109" msgid "Provider whitelist" msgstr "Нийлүүлэгчийн цагаан жагсаалт" msgctxt "#30110" msgid "Channel blacklist" msgstr "Сувгийн хар жагсаалт" msgctxt "#30111" msgid "Channel filters" msgstr "Сувгийн шүүлтүүр" msgctxt "#30112" msgid "Radio Channels" msgstr "Радио сувгууд" msgctxt "#30113" msgid "Save filters" msgstr "Шүүлт хадгалах" msgctxt "#30114" msgid "Provider Unknown" msgstr "Үл мэдэгдэх нийлүүлэгч" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ms_my/000077500000000000000000000000001362540622500276705ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ms_my/strings.po000066400000000000000000000127531362540622500317310ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/kodi-main/language/ms_MY/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ms_MY\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nama hos atau alamat IP VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Port VNSI" msgctxt "#30002" msgid "Priority" msgstr "Keutamaan" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Penukaran Set Aksara" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Had masa tamat sambung" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Baca rakaman dari direktori" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Direktori rakaman VDR" msgctxt "#30008" msgid "Channel search" msgstr "Gelintar saluran" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Gelintar saluran - Tetapan" msgctxt "#30010" msgid "Start Channel search" msgstr "Mulakan gelintar Saluran" msgctxt "#30011" msgid "Source Type" msgstr "Jenis Sumber" msgctxt "#30012" msgid "TV channels" msgstr "Saluran TV" msgctxt "#30013" msgid "Radio channels" msgstr "Saluran radio" msgctxt "#30014" msgid "FTA channels" msgstr "Saluran FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "Saluran terkarau" msgctxt "#30016" msgid "HD channels" msgstr "Saluran HD" msgctxt "#30017" msgid "Country" msgstr "Negara" msgctxt "#30018" msgid "Cable Inversion" msgstr "Songsangan Kabel" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Kadar Simbol Kabel" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulasi Kabel" msgctxt "#30021" msgid "Terr Inversion" msgstr "Songsangan Terr" msgctxt "#30022" msgid "Satellite" msgstr "Satelit" msgctxt "#30023" msgid "ATSC Type" msgstr "Jenis ATSC" msgctxt "#30024" msgid "Back" msgstr "Undur" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Gelintar saluran - berjalan... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Jenis:" msgctxt "#30027" msgid "Device:" msgstr "Peranti:" msgctxt "#30028" msgid "Scan: %i" msgstr "Imbas: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Isyarat: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Saluran baru: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Semua saluran: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV analog" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio analog" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Saluran baru" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Gelintar saluran - Selesai" msgctxt "#30037" msgid "No device available - exiting" msgstr "Tiada peranti tersedia - keluar" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Tiada peranti DVB-S2 tersedia - mencuba jatuh balik ke DVB-5" msgctxt "#30039" msgid "Running" msgstr "Berjalan" msgctxt "#30040" msgid "Stopped" msgstr "Berhenti" msgctxt "#30041" msgid "Finished" msgstr "Selesai" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Gelintar saluran - Dibatalkan" msgctxt "#30043" msgid "Channel search - Error" msgstr "Gelintar saluran - Ralat" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Sambungan terputus ke Pelayan VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Sambungan ke Pelayan VDR dipulihkan" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Cipta kumpulan saluran secara automatik pada pelayan" msgctxt "#30047" msgid "Request Timeshift" msgstr "Pinta Anjak Masa" msgctxt "#30048" msgid "Path to channel icons" msgstr "Laluan ke ikon saluran" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "Pelayan VDR MAC untuk Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "OSD VDR" msgctxt "#30101" msgid "Setup" msgstr "Persediaan" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Pengawalan OSD - tekan maklumat untuk keluar" msgctxt "#30103" msgid "Select to control OSD" msgstr "Pilih untuk kawal OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Mod Anjak Masa" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Penimbal Anjak Masa (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Penimbal Anjak Masa (Fail) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Pentadbir VDR" msgctxt "#30108" msgid "Channels" msgstr "Saluran" msgctxt "#30109" msgid "Provider whitelist" msgstr "Senarai putih penyedia" msgctxt "#30110" msgid "Channel blacklist" msgstr "Senarai hitam saluran" msgctxt "#30111" msgid "Channel filters" msgstr "Penapis saluran" msgctxt "#30112" msgid "Radio Channels" msgstr "Saluran Radio" msgctxt "#30113" msgid "Save filters" msgstr "Simpan penapis" msgctxt "#30114" msgid "Provider Unknown" msgstr "Penyedia tidak diketahui" msgctxt "#30200" msgid "Single" msgstr "Tunggal" msgctxt "#30201" msgid "Repeating" msgstr "Pengulangan" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Gelintar EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Pengulangan Anak" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.mt_mt/000077500000000000000000000000001362540622500276645ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.mt_mt/strings.po000066400000000000000000000022621362540622500317170ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Maltese (Malta) (http://www.transifex.com/projects/p/kodi-main/language/mt_MT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: mt_MT\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3);\n" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Konnessjoni skadilha l-ħin (s)" msgctxt "#30012" msgid "TV channels" msgstr "Stazzjonijiet tat-TV" msgctxt "#30013" msgid "Radio channels" msgstr "Stazzjonijiet tar-Radju" msgctxt "#30017" msgid "Country" msgstr "Pajjiż" msgctxt "#30026" msgid "Type:" msgstr "Tip:" msgctxt "#30039" msgid "Running" msgstr "Qed jaħdem" msgctxt "#30101" msgid "Setup" msgstr "Konfigurazzjoni" msgctxt "#30108" msgid "Channels" msgstr "Stazzjonijiet" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.my_mm/000077500000000000000000000000001362540622500276625ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.my_mm/strings.po000066400000000000000000000023201362540622500317100ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/kodi-main/language/my_MM/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: my_MM\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "ချိတ်ဆက်မှု့အချိန်ပြည့်သွားပါပြီ။" msgctxt "#30012" msgid "TV channels" msgstr "TV ချယ်နယ်" msgctxt "#30013" msgid "Radio channels" msgstr "ရေဒီယိုချယ်နယ်" msgctxt "#30017" msgid "Country" msgstr "နိုင်ငံ" msgctxt "#30026" msgid "Type:" msgstr "အမျိုးအစား -" msgctxt "#30039" msgid "Running" msgstr "ဖွင့်နေပါသည်" msgctxt "#30108" msgid "Channels" msgstr "Channel များ" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.nb_no/000077500000000000000000000000001362540622500276375ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.nb_no/strings.po000066400000000000000000000126751362540622500317030ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/kodi-main/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR-vertsnavn eller IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Port" msgctxt "#30002" msgid "Priority" msgstr "Prioritet" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Konvertering av tegnsett" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Tidsavbrudd ved tilkobling (i s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Les opptak fra mappe" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Mappe for VDR-opptak" msgctxt "#30008" msgid "Channel search" msgstr "Kanalsøk" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Kanalsøk - innstillinger" msgctxt "#30010" msgid "Start Channel search" msgstr "Start kanalsøk" msgctxt "#30011" msgid "Source Type" msgstr "Kildetype" msgctxt "#30012" msgid "TV channels" msgstr "TV-kanaler" msgctxt "#30013" msgid "Radio channels" msgstr "Radio-kanaler" msgctxt "#30014" msgid "FTA channels" msgstr "FTA-kanaler" msgctxt "#30015" msgid "Scrambled channels" msgstr "Krypterte kanaler" msgctxt "#30016" msgid "HD channels" msgstr "HD-kanaler" msgctxt "#30017" msgid "Country" msgstr "Land" msgctxt "#30018" msgid "Cable Inversion" msgstr "Kabel-invertering" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Kabelens symbolhastighet" msgctxt "#30020" msgid "Cable modulation" msgstr "Kabelmodulasjon" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr-invertering" msgctxt "#30022" msgid "Satellite" msgstr "Satellitt" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC-type" msgctxt "#30024" msgid "Back" msgstr "Tilbake" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Kanalsøk - utfører… %i %%" msgctxt "#30026" msgid "Type:" msgstr "Type:" msgctxt "#30027" msgid "Device:" msgstr "Enhet:" msgctxt "#30028" msgid "Scan: %i" msgstr "Skann: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nye kanaler: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Alle kanaler: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analog TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analog Radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Nye kanaler" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Kanalsøk - fullført" msgctxt "#30037" msgid "No device available - exiting" msgstr "Ingen enhet tilgjengelig - avslutter" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Ingen DVB-S2 enhet tilgjengelig - faller tilbake til DVB-S" msgctxt "#30039" msgid "Running" msgstr "Kjører" msgctxt "#30040" msgid "Stopped" msgstr "Stoppet" msgctxt "#30041" msgid "Finished" msgstr "Fullført" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Kanalsøk - avbrutt" msgctxt "#30043" msgid "Channel search - Error" msgstr "Kanalsøk - mislyktes" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Mistet tilkoblingen til VDR-tjeneren" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Tilkobling til VDR-tjener gjenopprettet" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Opprett automatisk kanalgrupper på tjeneren" msgctxt "#30047" msgid "Request Timeshift" msgstr "Be om tidshopp" msgctxt "#30048" msgid "Path to channel icons" msgstr "Bane til kanalikoner" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR-tjener-MAC for VekkPåLAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Oppsett" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Kontrollere OSD - trykk info for å gå tilbake" msgctxt "#30103" msgid "Select to control OSD" msgstr "Velg å kontrollere OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Tidshoppmodus" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Tidshoppbuffer (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Tidshoppbuffer (Fil) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Administrator" msgctxt "#30108" msgid "Channels" msgstr "Kanaler" msgctxt "#30109" msgid "Provider whitelist" msgstr "leverandør hvitliste " msgctxt "#30110" msgid "Channel blacklist" msgstr "Kanal svarteliste" msgctxt "#30111" msgid "Channel filters" msgstr "Kanal filtre " msgctxt "#30112" msgid "Radio Channels" msgstr "Radio Channels" msgctxt "#30113" msgid "Save filters" msgstr "Lagre filtre" msgctxt "#30114" msgid "Provider Unknown" msgstr "Leverandør Ukjent" msgctxt "#30200" msgid "Single" msgstr "Enkel" msgctxt "#30201" msgid "Repeating" msgstr "Gjentagende" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Søk EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Gjentagende underelement" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.nl_nl/000077500000000000000000000000001362540622500276465ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.nl_nl/strings.po000066400000000000000000000126301362540622500317010ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/kodi-main/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR-hostnaam of IP-adres" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI-poort" msgctxt "#30002" msgid "Priority" msgstr "Prioriteit" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Karaktersetconversie" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Connectietimeout (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Lees opnames van directory" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR-opnamemap" msgctxt "#30008" msgid "Channel search" msgstr "Kanalen scannen" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Kanalenscan - Instellingen" msgctxt "#30010" msgid "Start Channel search" msgstr "Kanalenscan starten" msgctxt "#30011" msgid "Source Type" msgstr "Brontype" msgctxt "#30012" msgid "TV channels" msgstr "TV kanalen" msgctxt "#30013" msgid "Radio channels" msgstr "Radiokanalen" msgctxt "#30014" msgid "FTA channels" msgstr "FTA kanalen" msgctxt "#30015" msgid "Scrambled channels" msgstr "Gecodeerde kanalen" msgctxt "#30016" msgid "HD channels" msgstr "HD kanalen" msgctxt "#30017" msgid "Country" msgstr "Land" msgctxt "#30018" msgid "Cable Inversion" msgstr "Kabelinversie" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Kabelsymboolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Kabelmodulatie" msgctxt "#30021" msgid "Terr Inversion" msgstr "Antenneinversie" msgctxt "#30022" msgid "Satellite" msgstr "Satelliet" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSCtype" msgctxt "#30024" msgid "Back" msgstr "Terug" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Kanalen zoeken - bezig... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Type:" msgctxt "#30027" msgid "Device:" msgstr "Apparaat:" msgctxt "#30028" msgid "Scan: %i" msgstr "Scan: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signaal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nieuwe kanalen: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Alle kanalen: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analoge TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analoge radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Nieuwe kanalen" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Kanalen zoeken - Klaar" msgctxt "#30037" msgid "No device available - exiting" msgstr "Geen device beschikbaar - afsluiten" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Geen DVB-S2 apparaat beschikbaar - We vallen terug op DVB-S" msgctxt "#30039" msgid "Running" msgstr "Bezig" msgctxt "#30040" msgid "Stopped" msgstr "Gestopt" msgctxt "#30041" msgid "Finished" msgstr "Klaar" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Kanalenscan - Geannuleerd" msgctxt "#30043" msgid "Channel search - Error" msgstr "Kanalenscan - Fout" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Connectie naar VDR-server verloren" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Connectie naar VDR-server hervat" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Automatisch kanaalgroepen maken op de server" msgctxt "#30047" msgid "Request Timeshift" msgstr "Vraag timeshift aan" msgctxt "#30048" msgid "Path to channel icons" msgstr "Pad naar kanaal iconen" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR-server MAC voor Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Setup" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "OSD Beheren - druk op info om te sluiten" msgctxt "#30103" msgid "Select to control OSD" msgstr "Selecteer om de OSD te beheren" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Timeshiftmodus" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Timeshiftbuffer (RAM)x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Timeshiftbuffer (Bestand) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Beheer" msgctxt "#30108" msgid "Channels" msgstr "Kanalen" msgctxt "#30109" msgid "Provider whitelist" msgstr "Providerwhitelist" msgctxt "#30110" msgid "Channel blacklist" msgstr "Kanaalblacklijst" msgctxt "#30111" msgid "Channel filters" msgstr "Kanaalfilters" msgctxt "#30112" msgid "Radio Channels" msgstr "Radiokanalen" msgctxt "#30113" msgid "Save filters" msgstr "Filters opslaan" msgctxt "#30114" msgid "Provider Unknown" msgstr "Provider onbekend" msgctxt "#30200" msgid "Single" msgstr "Single" msgctxt "#30201" msgid "Repeating" msgstr "Herhalen" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Zoek EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Herhaling Kind" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.pl_pl/000077500000000000000000000000001362540622500276525ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.pl_pl/strings.po000066400000000000000000000136471362540622500317160ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/kodi-main/language/pl_PL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl_PL\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nazwa lub adres serwera" msgctxt "#30001" msgid "VNSI Port" msgstr "Port" msgctxt "#30002" msgid "Priority" msgstr "Priorytet" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Konwersja kodowania znaków" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Limit czasu połączenia (sekundy)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Wczytuj nagrania z folderu" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Folder nagrań" msgctxt "#30008" msgid "Channel search" msgstr "Wyszukiwanie kanałów" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Wyszukiwanie kanałów - Ustawienia" msgctxt "#30010" msgid "Start Channel search" msgstr "Rozpocznij wyszukiwanie kanałów" msgctxt "#30011" msgid "Source Type" msgstr "Typ źródła" msgctxt "#30012" msgid "TV channels" msgstr "Kanały telewizyjne" msgctxt "#30013" msgid "Radio channels" msgstr "Kanały radiowe" msgctxt "#30014" msgid "FTA channels" msgstr "Kanały niekodowane" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kanały kodowane" msgctxt "#30016" msgid "HD channels" msgstr "Kanały HD" msgctxt "#30017" msgid "Country" msgstr "Kraj" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inwersja telewizji kablowej" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Szybkość transmisji telewizji kablowej" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulacja telewizji kablowej" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inwersja telewizji naziemnej" msgctxt "#30022" msgid "Satellite" msgstr "Satelita" msgctxt "#30023" msgid "ATSC Type" msgstr "Typ telewizji naziemnej ATSC" msgctxt "#30024" msgid "Back" msgstr "Cofnij" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Wyszukiwanie kanałów - w toku... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Typ:" msgctxt "#30027" msgid "Device:" msgstr "Urządzenie:" msgctxt "#30028" msgid "Scan: %i" msgstr "Skanowanie: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Sygnał: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nowych kanałów: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Wszystkich kanałów: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Telewizja analogowa" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio analogowe" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Nowe kanały" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Wyszukiwanie kanałów - Zakończone" msgctxt "#30037" msgid "No device available - exiting" msgstr "Brak dostępnych urządzeń - zamykanie" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Brak dostępnych urządzeń DVB-S2 - awaryjnie przełączenie do DVB-S" msgctxt "#30039" msgid "Running" msgstr "Uruchomiono" msgctxt "#30040" msgid "Stopped" msgstr "Zatrzymano" msgctxt "#30041" msgid "Finished" msgstr "Zakończono" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Wyszukiwanie kanałów - Anulowano" msgctxt "#30043" msgid "Channel search - Error" msgstr "Wyszukiwanie kanałów - Błąd" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Zerwane połączenie z serwerem VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Przywrócono połączenie z serwerem VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Utwórz grupy kanałów automatycznie na serwerze" msgctxt "#30047" msgid "Request Timeshift" msgstr "Zapytaj o funkcję przesunięcia czasowego" msgctxt "#30048" msgid "Path to channel icons" msgstr "Folder ikon kanałów" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "Adres MAC serwera VDR dla zdalnego wybudzania" msgctxt "#30100" msgid "VDR OSD" msgstr "Menu ekranowe VDR" msgctxt "#30101" msgid "Setup" msgstr "Ustawienia" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Sterowanie menu ekranowym - naciśnij Info, aby wyjść" msgctxt "#30103" msgid "Select to control OSD" msgstr "Zaznacz, aby kontrolować menu ekranowe" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Tryb przesunięcia czasowego" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Rozmiar bufora przesunięcia czasowego (RAM) x100 MB " msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Rozmiar bufora przesunięcia czasowego (Plik) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Administracja VDR" msgctxt "#30108" msgid "Channels" msgstr "Kanały" msgctxt "#30109" msgid "Provider whitelist" msgstr "Zaufani dostawcy " msgctxt "#30110" msgid "Channel blacklist" msgstr "Kanały zablokowane" msgctxt "#30111" msgid "Channel filters" msgstr "Filtry kanałów" msgctxt "#30112" msgid "Radio Channels" msgstr "Kanały radiowe" msgctxt "#30113" msgid "Save filters" msgstr "Zapisz filtry" msgctxt "#30114" msgid "Provider Unknown" msgstr "Dostawca nieznany" msgctxt "#30200" msgid "Single" msgstr "Jednorazowo" msgctxt "#30201" msgid "Repeating" msgstr "Cyklicznie" msgctxt "#30202" msgid "EGP" msgstr "Według przewodnika" msgctxt "#30203" msgid "VPS" msgstr "Według systemu VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Wyszukaj w przewodniku" msgctxt "#30205" msgid "Repeating Child" msgstr "Cyklicznie potomka" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.pt_br/000077500000000000000000000000001362540622500276525ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.pt_br/strings.po000066400000000000000000000131141362540622500317030ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/kodi-main/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Hostname VDR ou IP" msgctxt "#30001" msgid "VNSI Port" msgstr "Porta VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioridade" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversão de Conjunto de Caracteres" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Tempo limite para conexão (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Ler gravações do diretório" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Diretório de gravações VDR" msgctxt "#30008" msgid "Channel search" msgstr "Procurar canal" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Procurar canal - ajustes" msgctxt "#30010" msgid "Start Channel search" msgstr "Iniciar Procura de Canais" msgctxt "#30011" msgid "Source Type" msgstr "Tipo de Fonte" msgctxt "#30012" msgid "TV channels" msgstr "Canais de TV" msgctxt "#30013" msgid "Radio channels" msgstr "Canais de rádio" msgctxt "#30014" msgid "FTA channels" msgstr "Canais FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "Canais codificados" msgctxt "#30016" msgid "HD channels" msgstr "Canais HD" msgctxt "#30017" msgid "Country" msgstr "País" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversão de cabo" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cabo Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulação do cabo" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversão Terr" msgctxt "#30022" msgid "Satellite" msgstr "Satélite" msgctxt "#30023" msgid "ATSC Type" msgstr "Tipo ATSC" msgctxt "#30024" msgid "Back" msgstr "Voltar" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Procura de canais - executando...%i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipo:" msgctxt "#30027" msgid "Device:" msgstr "Dispositivo:" msgctxt "#30028" msgid "Scan: %i" msgstr "Examinar: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Sinal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Novos canais: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Todos os canais: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV analógica" msgctxt "#30033" msgid "Analog Radio" msgstr "Rádio analógico" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Novos canais" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Procura de canal - Finalizado" msgctxt "#30037" msgid "No device available - exiting" msgstr "Nenhum dispositivo disponível - saindo" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Nenhum dispositivo DVD-S2 disponível - Tentando para DVB-S" msgctxt "#30039" msgid "Running" msgstr "Executando" msgctxt "#30040" msgid "Stopped" msgstr "Interrompido" msgctxt "#30041" msgid "Finished" msgstr "Finalizado" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Procura de canais - Cancelada" msgctxt "#30043" msgid "Channel search - Error" msgstr "Procura de canais - Erro" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Conexão perdida com o servidor VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Conexão restabelecida ao servidor VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Criar grupos de canais automaticamente no servidor" msgctxt "#30047" msgid "Request Timeshift" msgstr "Solicitar gravação" msgctxt "#30048" msgid "Path to channel icons" msgstr "Caminho para os logos dos canais" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC para Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "OSD VDR" msgctxt "#30101" msgid "Setup" msgstr "Ajustes" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Controlando OSD - pressione info para sair" msgctxt "#30103" msgid "Select to control OSD" msgstr "Selecione para controlar OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Modo de gravação" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Buffer de gravação (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Buffer de gravação (arquivo) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Admin VDR" msgctxt "#30108" msgid "Channels" msgstr "Canais" msgctxt "#30109" msgid "Provider whitelist" msgstr "Provedor Permitido" msgctxt "#30110" msgid "Channel blacklist" msgstr "Lista Negra de Canais" msgctxt "#30111" msgid "Channel filters" msgstr "Filtros de Canais" msgctxt "#30112" msgid "Radio Channels" msgstr "Canais de Rádio" msgctxt "#30113" msgid "Save filters" msgstr "Salvar filtros" msgctxt "#30114" msgid "Provider Unknown" msgstr "Provedor desconhecido" msgctxt "#30200" msgid "Single" msgstr "Único" msgctxt "#30201" msgid "Repeating" msgstr "Recorrente" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Procurar EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Repetindo Criança" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.pt_pt/000077500000000000000000000000001362540622500276725ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.pt_pt/strings.po000066400000000000000000000132251362540622500317260ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/kodi-main/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nome ou IP do servidor VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Porto do VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioridade" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversão do Conjunto de Caracteres" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Tempo-limite da ligação (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Ler as gravações a partir da pasta" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Pasta das gravações VDR" msgctxt "#30008" msgid "Channel search" msgstr "Pesquisa de canais" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Pesquisa de canais - Configuração" msgctxt "#30010" msgid "Start Channel search" msgstr "Iniciar a pesquisa de canais" msgctxt "#30011" msgid "Source Type" msgstr "Tipo de Fonte" msgctxt "#30012" msgid "TV channels" msgstr "Canais de TV" msgctxt "#30013" msgid "Radio channels" msgstr "Estações de Rádio" msgctxt "#30014" msgid "FTA channels" msgstr "Canais FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "Canais codificados" msgctxt "#30016" msgid "HD channels" msgstr "Canais HD" msgctxt "#30017" msgid "Country" msgstr "País" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversão de Cabo" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Taxa de Símbolos do Cabo" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulação do cabo" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversão Terr" msgctxt "#30022" msgid "Satellite" msgstr "Satélite" msgctxt "#30023" msgid "ATSC Type" msgstr "Tipo de ATSC" msgctxt "#30024" msgid "Back" msgstr "Recuar" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Efetuando a procura de canais... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipo:" msgctxt "#30027" msgid "Device:" msgstr "Dispositivo:" msgctxt "#30028" msgid "Scan: %i" msgstr "Sintonia: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Sinal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Novos canais: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Todos os canais: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV Analógica" msgctxt "#30033" msgid "Analog Radio" msgstr "Rádio Analógico" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Novos canais" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Procura de canais - Concluída" msgctxt "#30037" msgid "No device available - exiting" msgstr "Não há dispositivos disponíveis - encerrando" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Nenhum dispositivo DVB-S2 está disponível - tentando DVB-S" msgctxt "#30039" msgid "Running" msgstr "Em execução" msgctxt "#30040" msgid "Stopped" msgstr "Parado" msgctxt "#30041" msgid "Finished" msgstr "Concluído" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Procura de canais - Cancelada" msgctxt "#30043" msgid "Channel search - Error" msgstr "Procura de canais - Erro" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "A ligação ao servidor VDR foi perdida" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "A ligação ao servidor VDR foi restabelecida" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Criar automaticamente grupos de canais no servidor" msgctxt "#30047" msgid "Request Timeshift" msgstr "Requisitar Ver Mais Tarde" msgctxt "#30048" msgid "Path to channel icons" msgstr "Localização dos ícones de canais" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC de Servidor VDR para Despertar-Por-Lan" msgctxt "#30100" msgid "VDR OSD" msgstr "Interface VDR" msgctxt "#30101" msgid "Setup" msgstr "Configuração" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Controlando interface - premir info para sair" msgctxt "#30103" msgid "Select to control OSD" msgstr "Seleccione para controlar a interface" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Modo de Ver Mais Tarde" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Buffer de Ver Mais Tarde (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Buffer de Ver Mais Tarde (Ficheiro) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Admin VDR" msgctxt "#30108" msgid "Channels" msgstr "Canais" msgctxt "#30109" msgid "Provider whitelist" msgstr "Lista de fornecedores permitidos" msgctxt "#30110" msgid "Channel blacklist" msgstr "Canais interditos" msgctxt "#30111" msgid "Channel filters" msgstr "Filtros de canais" msgctxt "#30112" msgid "Radio Channels" msgstr "Canais de Rádio" msgctxt "#30113" msgid "Save filters" msgstr "Guardar filtros" msgctxt "#30114" msgid "Provider Unknown" msgstr "Fornecedor Desconhecido" msgctxt "#30200" msgid "Single" msgstr "Único" msgctxt "#30201" msgid "Repeating" msgstr "Repetição" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Pesquisa no EPG" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ro_ro/000077500000000000000000000000001362540622500276645ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ro_ro/strings.po000066400000000000000000000133231362540622500317170ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/kodi-main/language/ro_RO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Nume host sau IP VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Port VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioritate" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Conversie set de caractere" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Expirare timp conexiune (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Citeşte înregistrări din director" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Director înregistrări VDR" msgctxt "#30008" msgid "Channel search" msgstr "Căutare canal" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Căutare canal - stabiliri" msgctxt "#30010" msgid "Start Channel search" msgstr "Începe căutare canal" msgctxt "#30011" msgid "Source Type" msgstr "Tip sursă" msgctxt "#30012" msgid "TV channels" msgstr "Canale tv" msgctxt "#30013" msgid "Radio channels" msgstr "Canale radio" msgctxt "#30014" msgid "FTA channels" msgstr "Canale FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "Canale codate" msgctxt "#30016" msgid "HD channels" msgstr "Canale HD" msgctxt "#30017" msgid "Country" msgstr "Țară" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inversiune cablu" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Simbol Rate cablu" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulare Cablu" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inversiune Terr" msgctxt "#30022" msgid "Satellite" msgstr "Satelit" msgctxt "#30023" msgid "ATSC Type" msgstr "Tip ATSC" msgctxt "#30024" msgid "Back" msgstr "Înapoi" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Căutare canal - rulează... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tip:" msgctxt "#30027" msgid "Device:" msgstr "Aparat:" msgctxt "#30028" msgid "Scan: %i" msgstr "Scanare: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Semnal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Canale noi: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Toate canalele: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV analogic" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio analogic" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Canale noi" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Căutare canale - Finalizată" msgctxt "#30037" msgid "No device available - exiting" msgstr "Nu există aparate disponibile - ieşire" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Nu există aparate DVB-S2 disponibile - se încearcă întoarcerea la DVB-S" msgctxt "#30039" msgid "Running" msgstr "În execuție" msgctxt "#30040" msgid "Stopped" msgstr "Oprit" msgctxt "#30041" msgid "Finished" msgstr "Finalizat" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Căutare canale - Anulată" msgctxt "#30043" msgid "Channel search - Error" msgstr "Căutare canale - Eroare" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "S-a pierdut conexiunea la servitrorul VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Conexiunea la servitorul VDR restaurată" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Creează automat grupuri de canale pe servitor" msgctxt "#30047" msgid "Request Timeshift" msgstr "Cere inregistrare temporară" msgctxt "#30048" msgid "Path to channel icons" msgstr "Cale către sigle canale" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC servitor VDR pentru deșteptare în rețea (Wake-on-LAN)" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Configurare" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Controlul OSD - apasa info pentru iesire" msgctxt "#30103" msgid "Select to control OSD" msgstr "Selecteaza ca sa controlezi OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Mod înregistrare temporară" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Înregistrare temporară (RAM) x 100MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Înregistrare temporară (fisier) x 1GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Administrare VDR" msgctxt "#30108" msgid "Channels" msgstr "Canale" msgctxt "#30109" msgid "Provider whitelist" msgstr "Listă furnizori acceptați" msgctxt "#30110" msgid "Channel blacklist" msgstr "Listă canale respinse " msgctxt "#30111" msgid "Channel filters" msgstr "Filtre canale" msgctxt "#30112" msgid "Radio Channels" msgstr "Filtre radio" msgctxt "#30113" msgid "Save filters" msgstr "Salvează filtrele" msgctxt "#30114" msgid "Provider Unknown" msgstr "Furnizor necunoscut" msgctxt "#30200" msgid "Single" msgstr "Singular" msgctxt "#30201" msgid "Repeating" msgstr "În mod repetat" msgctxt "#30202" msgid "EGP" msgstr "EPG" msgctxt "#30203" msgid "VPS" msgstr "SPV (servitor privat virtual)" msgctxt "#30204" msgid "Search EPG" msgstr "Căutare în GPE (ghidul de programe elctronic)" msgctxt "#30205" msgid "Repeating Child" msgstr "Repeating Child" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ru_ru/000077500000000000000000000000001362540622500277005ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ru_ru/strings.po000066400000000000000000000151531362540622500317360ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/kodi-main/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru_RU\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Имя VDR хоста или IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI порт" msgctxt "#30002" msgid "Priority" msgstr "Приоритет" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Конвертирование символов" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Тайм-аут(ы) соединения" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Читать записи из папки" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Папка записей VDR" msgctxt "#30008" msgid "Channel search" msgstr "Поиск канала" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Поиск канала - Настройка" msgctxt "#30010" msgid "Start Channel search" msgstr "Начать поиск канала" msgctxt "#30011" msgid "Source Type" msgstr "Тип источника" msgctxt "#30012" msgid "TV channels" msgstr "Телеканалы" msgctxt "#30013" msgid "Radio channels" msgstr "Радиостанции" msgctxt "#30014" msgid "FTA channels" msgstr "Открытые каналы" msgctxt "#30015" msgid "Scrambled channels" msgstr "Кодированные каналы" msgctxt "#30016" msgid "HD channels" msgstr "HD каналы" msgctxt "#30017" msgid "Country" msgstr "Страна" msgctxt "#30018" msgid "Cable Inversion" msgstr "Инверсия кабельного" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Символьная скорость кабельного" msgctxt "#30020" msgid "Cable modulation" msgstr "Модуляция кабельного" msgctxt "#30021" msgid "Terr Inversion" msgstr "Инверсия наземного" msgctxt "#30022" msgid "Satellite" msgstr "Спутниковое" msgctxt "#30023" msgid "ATSC Type" msgstr "Тип ATSC" msgctxt "#30024" msgid "Back" msgstr "Назад" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Идет поиск канала... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Тип:" msgctxt "#30027" msgid "Device:" msgstr "Устройство:" msgctxt "#30028" msgid "Scan: %i" msgstr "Сканировано: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Сигнал: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Новых каналов: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Всего каналов: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Аналоговое TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Аналоговое радио" msgctxt "#30034" msgid "Transponder:" msgstr "Транспондер:" msgctxt "#30035" msgid "New channels" msgstr "Новые каналы" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Поиск каналов окончен" msgctxt "#30037" msgid "No device available - exiting" msgstr "Устройство недоступно - выход" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Нет доступного DVB-S2 устройства - пробую вернуться к DVB-S" msgctxt "#30039" msgid "Running" msgstr "Запуск…" msgctxt "#30040" msgid "Stopped" msgstr "Остановлено" msgctxt "#30041" msgid "Finished" msgstr "Окончено" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Поиск каналов прерван" msgctxt "#30043" msgid "Channel search - Error" msgstr "Ошибка поиска каналов" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Утеряна связь с сервером VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Установлена связь с сервером VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Автоматически создать на сервере группы каналов" msgctxt "#30047" msgid "Request Timeshift" msgstr "Запросить сдвиг времени" msgctxt "#30048" msgid "Path to channel icons" msgstr "Путь к значкам каналов" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Сервер MAC для Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "Экранное меню VDR" msgctxt "#30101" msgid "Setup" msgstr "Настройка" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Контролируется OSD - нажмите Информация для выхода" msgctxt "#30103" msgid "Select to control OSD" msgstr "Выберите для контроля OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Режим сдвига времени" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Буфер сдвига времени (RAM) x100 МБ" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Буфер сдвига времени (Файл) x1 ГБ" msgctxt "#30107" msgid "VDR Admin" msgstr "Администратор VDR" msgctxt "#30108" msgid "Channels" msgstr "Каналы" msgctxt "#30109" msgid "Provider whitelist" msgstr "Белый лист провайдеров" msgctxt "#30110" msgid "Channel blacklist" msgstr "Черный список канала" msgctxt "#30111" msgid "Channel filters" msgstr "Фильтр канала" msgctxt "#30112" msgid "Radio Channels" msgstr "Радиостанции" msgctxt "#30113" msgid "Save filters" msgstr "Сохранить фильтры" msgctxt "#30114" msgid "Provider Unknown" msgstr "Неизвестный провайдер" msgctxt "#30200" msgid "Single" msgstr "Единственный" msgctxt "#30201" msgid "Repeating" msgstr "Повторение" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Поиск в EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Повторяющийся дочерний элемент" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.si_lk/000077500000000000000000000000001362540622500276455ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.si_lk/strings.po000066400000000000000000000015721362540622500317030ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/kodi-main/language/si_LK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "සම්බන්ධවීමේ කාලය(න්) ඉවරයි. " msgctxt "#30017" msgid "Country" msgstr "රට " msgctxt "#30026" msgid "Type:" msgstr "සටහන් කරන්න:" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sk_sk/000077500000000000000000000000001362540622500276565ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sk_sk/strings.po000066400000000000000000000135321362540622500317130ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/kodi-main/language/sk_SK/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk_SK\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Názov hostiteľa VDR alebo IP adresa" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI port" msgctxt "#30002" msgid "Priority" msgstr "Priorita" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Konverzia znakovej sady" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Časový limit pre spojenie" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Čítať nahrávky z adresára" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Adresár pre nahrávky z VDR" msgctxt "#30008" msgid "Channel search" msgstr "Vyhľadávanie kanálov" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Vyhľadávanie kanálov - Nastavenia" msgctxt "#30010" msgid "Start Channel search" msgstr "Spustiť vyhľadávanie kanálov" msgctxt "#30011" msgid "Source Type" msgstr "Typ zdroja" msgctxt "#30012" msgid "TV channels" msgstr "TV kanály" msgctxt "#30013" msgid "Radio channels" msgstr "Rozhlasové kanály" msgctxt "#30014" msgid "FTA channels" msgstr "Nekódované kanály" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kódované kanály" msgctxt "#30016" msgid "HD channels" msgstr "HD kanály" msgctxt "#30017" msgid "Country" msgstr "Krajina" msgctxt "#30018" msgid "Cable Inversion" msgstr "Káblový príjem - Inverzia" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Káblový príjem - Symbolová rýchlosť" msgctxt "#30020" msgid "Cable modulation" msgstr "Káblový príjem - Modulácia" msgctxt "#30021" msgid "Terr Inversion" msgstr "Pozemný príjem - Inverzia" msgctxt "#30022" msgid "Satellite" msgstr "Satelit" msgctxt "#30023" msgid "ATSC Type" msgstr "Typ ATSC" msgctxt "#30024" msgid "Back" msgstr "Späť" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Vyhľadávanie kanálov - prebieha... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Typ:" msgctxt "#30027" msgid "Device:" msgstr "Zariadenie:" msgctxt "#30028" msgid "Scan: %i" msgstr "Vyhľadávanie na: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signál: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nové kanály: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Všetky kanály: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analógová TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analógový rozhlas" msgctxt "#30034" msgid "Transponder:" msgstr "Transpondér:" msgctxt "#30035" msgid "New channels" msgstr "Nové kanály" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Vyhľadávanie kanálov - Dokončené" msgctxt "#30037" msgid "No device available - exiting" msgstr "Nie je k dispozícii žiadne zariadenie - ukončuje sa" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Nie je k dispozícii žiadne DVB-S2 zariadenie - pokus o prepnutie do režimu DVB-S" msgctxt "#30039" msgid "Running" msgstr "Prebieha spustenie" msgctxt "#30040" msgid "Stopped" msgstr "Zastavené" msgctxt "#30041" msgid "Finished" msgstr "Dokončené" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Vyhľadávanie kanálov - Zrušené" msgctxt "#30043" msgid "Channel search - Error" msgstr "Vyhľadávanie kanálov - Chyba" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Strata spojenia k VDR serveru" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Spojenie k VDR serveru bolo obnovené" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Automaticky vytvárať skupiny kanálov na serveri" msgctxt "#30047" msgid "Request Timeshift" msgstr "Vyžadovať časový posun" msgctxt "#30048" msgid "Path to channel icons" msgstr "Cesta k logám kanálov" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC adresa VDR servera pre funkciu Prebudenie po LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Konfigurácia" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Ovládanie OSD - stlačte info pre ukončenie" msgctxt "#30103" msgid "Select to control OSD" msgstr "Vyberte ovládanie OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Režim časového posunu" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Zásobník časového posunu (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Zásobník časového posunu (Súbor) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Kanály" msgctxt "#30109" msgid "Provider whitelist" msgstr "Zoznam povolených poskytovateľov" msgctxt "#30110" msgid "Channel blacklist" msgstr "Zoznam zakázaných kanálov" msgctxt "#30111" msgid "Channel filters" msgstr "Filtre kanálov" msgctxt "#30112" msgid "Radio Channels" msgstr "Rozhlasové kanály" msgctxt "#30113" msgid "Save filters" msgstr "Uložiť filtre" msgctxt "#30114" msgid "Provider Unknown" msgstr "Neznámy poskytovateľ" msgctxt "#30200" msgid "Single" msgstr "Jeden" msgctxt "#30201" msgid "Repeating" msgstr "Opakovanie" msgctxt "#30202" msgid "EGP" msgstr "EPG" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Hľadať EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Opakovacie dieťa" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sl_si/000077500000000000000000000000001362540622500276555ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sl_si/strings.po000066400000000000000000000124751362540622500317170ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Slovenian (Slovenia) (http://www.transifex.com/projects/p/kodi-main/language/sl_SI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Ime gostitelja ali IP strežnika VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Vrata VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioriteta" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Pretvorba kodnega sistema" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Časovni pretek povezave (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Preberi posnetke v mapi" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Mapa posnetkov VDR" msgctxt "#30008" msgid "Channel search" msgstr "Iskanje programov" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Iskanje programov - Nastavitve" msgctxt "#30010" msgid "Start Channel search" msgstr "Začni iskanje programov" msgctxt "#30011" msgid "Source Type" msgstr "Tip vira" msgctxt "#30012" msgid "TV channels" msgstr "TV programi" msgctxt "#30013" msgid "Radio channels" msgstr "Radijski programi" msgctxt "#30014" msgid "FTA channels" msgstr "Brezplačni programi" msgctxt "#30015" msgid "Scrambled channels" msgstr "Zaščiteni programi" msgctxt "#30016" msgid "HD channels" msgstr "HD programi" msgctxt "#30017" msgid "Country" msgstr "Država" msgctxt "#30018" msgid "Cable Inversion" msgstr "Cable Inversion" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cable Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Cable modulation" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr Inversion" msgctxt "#30022" msgid "Satellite" msgstr "Satelit" msgctxt "#30023" msgid "ATSC Type" msgstr "Tip ATSC" msgctxt "#30024" msgid "Back" msgstr "Nazaj" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Iskanje programov - teče ... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tip:" msgctxt "#30027" msgid "Device:" msgstr "Naprava:" msgctxt "#30028" msgid "Scan: %i" msgstr "Iskanje: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Novi programi: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Vsi programi: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analogna TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analogni radio" msgctxt "#30034" msgid "Transponder:" msgstr "Oddajnik:" msgctxt "#30035" msgid "New channels" msgstr "Novi programi" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Iskanje programov - zaključeno" msgctxt "#30037" msgid "No device available - exiting" msgstr "Naprava ni na voljo - zapuščam" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Naprava DVB-S2 ni na voljo - poskušam naprave DVB-S" msgctxt "#30039" msgid "Running" msgstr "Teče" msgctxt "#30040" msgid "Stopped" msgstr "Ustavljeno" msgctxt "#30041" msgid "Finished" msgstr "Zaključeno" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Iskanje programov - preklicano" msgctxt "#30043" msgid "Channel search - Error" msgstr "Iskanje programov - napaka" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Povezava s strežnikom VDR je bila izgubljena" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Povezava s strežnikom VDR je obnovljena" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Samodejno ustvari skupine programov na strežniku" msgctxt "#30047" msgid "Request Timeshift" msgstr "Zahtevaj časovni zamik" msgctxt "#30048" msgid "Path to channel icons" msgstr "Pot do ikon programov" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "MAC strežnika VDR za Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Nastavitve" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Upravljanje OSD - pritisnite info za izhod" msgctxt "#30103" msgid "Select to control OSD" msgstr "Izberite za upravljanje OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Način časovnega zamika" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Medpomnenje časovnega zamika (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Medpomnenje časovnega zamika (datoteka) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Programi" msgctxt "#30109" msgid "Provider whitelist" msgstr "Dovoljeni ponudniki" msgctxt "#30110" msgid "Channel blacklist" msgstr "Onemogočeni programi" msgctxt "#30111" msgid "Channel filters" msgstr "Filtri programov" msgctxt "#30112" msgid "Radio Channels" msgstr "Radijski programi" msgctxt "#30113" msgid "Save filters" msgstr "Shrani filtre" msgctxt "#30114" msgid "Provider Unknown" msgstr "Neznan ponudnik" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sq_al/000077500000000000000000000000001362540622500276435ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sq_al/strings.po000066400000000000000000000077631362540622500317110ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Albanian (Albania) (http://www.transifex.com/projects/p/kodi-main/language/sq_AL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sq_AL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Hostname ose IP" msgctxt "#30001" msgid "VNSI Port" msgstr "Porti VNSI" msgctxt "#30002" msgid "Priority" msgstr "Prioriteti" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Shndërrimi i Character Set" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Timeout i lidhjes (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Lexo regjistrimiet nga regjistri" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Regjistri i regjistrimeve së VDR" msgctxt "#30008" msgid "Channel search" msgstr "Kërkimi i kanaleve" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Kërkimi i kanaleve - Cilësimet" msgctxt "#30010" msgid "Start Channel search" msgstr "Fillo kërkimin e kanaleve" msgctxt "#30011" msgid "Source Type" msgstr "Tipi i Burimit" msgctxt "#30012" msgid "TV channels" msgstr "TV Kanalet" msgctxt "#30013" msgid "Radio channels" msgstr "Radio Kanalet" msgctxt "#30014" msgid "FTA channels" msgstr "Kanale të lira" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kanale të mbyllur" msgctxt "#30016" msgid "HD channels" msgstr "Kanalet HD" msgctxt "#30017" msgid "Country" msgstr "Vendi" msgctxt "#30018" msgid "Cable Inversion" msgstr "Cable Inversion" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cable Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Cable modulation" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr Inversion" msgctxt "#30022" msgid "Satellite" msgstr "Sateliti" msgctxt "#30023" msgid "ATSC Type" msgstr "Tipi ATSC" msgctxt "#30024" msgid "Back" msgstr "Mbrapa" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Kërkimi kanaleve - duke kërkuar... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tipi: " msgctxt "#30027" msgid "Device:" msgstr "Aparati:" msgctxt "#30028" msgid "Scan: %i" msgstr "Kërkimi: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Sinjali: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Kanale të reja: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Gjithë kanalet: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV analog" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio analog" msgctxt "#30034" msgid "Transponder:" msgstr "Transponderi:" msgctxt "#30035" msgid "New channels" msgstr "Kanale të reja" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Kërkimi i kanaleve - Përfundoj" msgctxt "#30037" msgid "No device available - exiting" msgstr "Asnjë aparat në dispozicion - duke përfunduar" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Asnjë aparat DVB-S2 në dispozicion - duke provuar ndërrimin në DVB-S" msgctxt "#30039" msgid "Running" msgstr "Duke punuar" msgctxt "#30040" msgid "Stopped" msgstr "Ndaloi" msgctxt "#30041" msgid "Finished" msgstr "Përfundoi" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Kërkimi kanaleve - U anulua" msgctxt "#30043" msgid "Channel search - Error" msgstr "Kërkimi kanaleve - Gabim" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "U humb lidhja me Serverin VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "U rilidh lidhja me Serverin VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Krijo grupe kanalesh automatikisht në server" msgctxt "#30108" msgid "Channels" msgstr "Kanalet" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sr_rs/000077500000000000000000000000001362540622500276745ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sr_rs/strings.po000066400000000000000000000151241362540622500317300ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Serbian (Serbia) (http://www.transifex.com/projects/p/kodi-main/language/sr_RS/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr_RS\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Hostname или IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Порт" msgctxt "#30002" msgid "Priority" msgstr "Приоритет" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Конверзија Скупа Карактера" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Истек времена за повезивање (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Читај снимке из фасцикле" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Фасцикла VDR снимака" msgctxt "#30008" msgid "Channel search" msgstr "Претрага канала" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Претрага канала - Подешавања" msgctxt "#30010" msgid "Start Channel search" msgstr "Покрени претрагу канала" msgctxt "#30011" msgid "Source Type" msgstr "Врста Извора" msgctxt "#30012" msgid "TV channels" msgstr "ТВ канали" msgctxt "#30013" msgid "Radio channels" msgstr "Радио канали" msgctxt "#30014" msgid "FTA channels" msgstr "FTA канали" msgctxt "#30015" msgid "Scrambled channels" msgstr "Кодирани канали" msgctxt "#30016" msgid "HD channels" msgstr "HD канали" msgctxt "#30017" msgid "Country" msgstr "Држава" msgctxt "#30018" msgid "Cable Inversion" msgstr "Инверзија Кабла" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Проток Симбола Кабла" msgctxt "#30020" msgid "Cable modulation" msgstr "Модулација кабла" msgctxt "#30021" msgid "Terr Inversion" msgstr "Земаљска Инверзија" msgctxt "#30022" msgid "Satellite" msgstr "Сателит" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC Врста" msgctxt "#30024" msgid "Back" msgstr "Назад" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Претрага канала - у току...%i %%" msgctxt "#30026" msgid "Type:" msgstr "Врста:" msgctxt "#30027" msgid "Device:" msgstr "Уређај:" msgctxt "#30028" msgid "Scan: %i" msgstr "Анализирање: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Сигнал: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Нови канали: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Сви канали: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Аналогни ТВ" msgctxt "#30033" msgid "Analog Radio" msgstr "Аналогни Радио" msgctxt "#30034" msgid "Transponder:" msgstr "Предајник:" msgctxt "#30035" msgid "New channels" msgstr "Нови канали" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Претрага канала - Завршено" msgctxt "#30037" msgid "No device available - exiting" msgstr "Ниједан уређај није доступан - излажење" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Ниједан DVB-S2 уређај није доступан - покушавање резерве са DVB-S" msgctxt "#30039" msgid "Running" msgstr "Покретање" msgctxt "#30040" msgid "Stopped" msgstr "Заустављено" msgctxt "#30041" msgid "Finished" msgstr "Завршено" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Претрага канала - Отказано" msgctxt "#30043" msgid "Channel search - Error" msgstr "Претрага канала - Грешка" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Изгубљена веза са VDR Сервером" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Обновљена веза са VDR Сервером" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Аутоматски направи групе канала на серверу" msgctxt "#30047" msgid "Request Timeshift" msgstr "Захтевај померај времена" msgctxt "#30048" msgid "Path to channel icons" msgstr "Путања до икона канала" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Сервер MAC за Буђење-преко-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Конфигурација" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Контролисање OSD - притисните инфо за излазак" msgctxt "#30103" msgid "Select to control OSD" msgstr "Одаберите ради контроле OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Режим Временског Помераја" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Бафер Временског Помераја (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Бафер Временског Помераја (Датотека) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Администратор" msgctxt "#30108" msgid "Channels" msgstr "Канали" msgctxt "#30109" msgid "Provider whitelist" msgstr "Бела листа провајдера" msgctxt "#30110" msgid "Channel blacklist" msgstr "Црна листа канала" msgctxt "#30111" msgid "Channel filters" msgstr "Филтери канала" msgctxt "#30112" msgid "Radio Channels" msgstr "Радио Канали" msgctxt "#30113" msgid "Save filters" msgstr "Сачувај филтере" msgctxt "#30114" msgid "Provider Unknown" msgstr "Непознат Провајдер" msgctxt "#30200" msgid "Single" msgstr "Једна" msgctxt "#30201" msgid "Repeating" msgstr "Понављајући" msgctxt "#30202" msgid "EGP" msgstr "EPG" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Претражи EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Понављајуће Дете" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sr_rs@latin/000077500000000000000000000000001362540622500310245ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sr_rs@latin/strings.po000066400000000000000000000132511362540622500330570ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Serbian (Latin) (Serbia) (http://www.transifex.com/projects/p/kodi-main/language/sr_RS@latin/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sr_RS@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Hostname ili IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Port" msgctxt "#30002" msgid "Priority" msgstr "Prioritet" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Konverzija Skupa Karaktera" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Истек времена за повезивање (с)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Čitaj snimke iz fascikle" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Fascikla VDR snimaka" msgctxt "#30008" msgid "Channel search" msgstr "Pretraga kanala" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Pretraga kanala - Podešavanja" msgctxt "#30010" msgid "Start Channel search" msgstr "Pokreni pretragu kanala" msgctxt "#30011" msgid "Source Type" msgstr "Vrsta Izvora" msgctxt "#30012" msgid "TV channels" msgstr "TV kanali" msgctxt "#30013" msgid "Radio channels" msgstr "Radio kanali" msgctxt "#30014" msgid "FTA channels" msgstr "FTA kanali" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kodirani kanali" msgctxt "#30016" msgid "HD channels" msgstr "HD kanali" msgctxt "#30017" msgid "Country" msgstr "Država" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inverzija Kabla" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Protok Simbola Kabla" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulacija kabla" msgctxt "#30021" msgid "Terr Inversion" msgstr "Zemaljska Inverzija" msgctxt "#30022" msgid "Satellite" msgstr "Satelit" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC Vrsta" msgctxt "#30024" msgid "Back" msgstr "Nazad" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Pretraga kanala - u toku...%i %%" msgctxt "#30026" msgid "Type:" msgstr "Vrsta:" msgctxt "#30027" msgid "Device:" msgstr "Uređaj:" msgctxt "#30028" msgid "Scan: %i" msgstr "Analiziranje: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Novi kanali: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Svi kanali: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analogni TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analogni Radio" msgctxt "#30034" msgid "Transponder:" msgstr "Predajnik:" msgctxt "#30035" msgid "New channels" msgstr "Novi kanali" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Pretraga kanala - Završeno" msgctxt "#30037" msgid "No device available - exiting" msgstr "Nijedan uređaj nije dostupan - izlaženje" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Nijedan DVB-S2 uređaj nije dostupan - pokušavanje rezerve sa DVB-S" msgctxt "#30039" msgid "Running" msgstr "Pokretanje" msgctxt "#30040" msgid "Stopped" msgstr "Zaustavljeno" msgctxt "#30041" msgid "Finished" msgstr "Završeno" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Pretraga kanala - Otkazano" msgctxt "#30043" msgid "Channel search - Error" msgstr "Pretraga kanala - Greška" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Izgubljena veza sa VDR Serverom" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Obnovljena veza sa VDR Serverom" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Automatski napravi grupe kanala na serveru" msgctxt "#30047" msgid "Request Timeshift" msgstr "Zahtevaj pomeraj vremena" msgctxt "#30048" msgid "Path to channel icons" msgstr "Putanja do ikona kanala" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server Mac za Buđenje-preko-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Konfiguracija" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Kontrolisanje OSD - pritisnite info za izlazak" msgctxt "#30103" msgid "Select to control OSD" msgstr "Odaberite radi kontrole OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Režim Vremenskog Pomeraja" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Bafer Vremenskog Pomeraja (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Bafer Vremenskog Pomeraja (Datoteka) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Administrator" msgctxt "#30108" msgid "Channels" msgstr "Kanali" msgctxt "#30109" msgid "Provider whitelist" msgstr "Bela lista provajdera" msgctxt "#30110" msgid "Channel blacklist" msgstr "Crna lista kanala" msgctxt "#30111" msgid "Channel filters" msgstr "Filteri kanala" msgctxt "#30112" msgid "Radio Channels" msgstr "Radio Kanali" msgctxt "#30113" msgid "Save filters" msgstr "Sačuvaj filtere" msgctxt "#30114" msgid "Provider Unknown" msgstr "Nepoznat Provajder" msgctxt "#30200" msgid "Single" msgstr "Jedna" msgctxt "#30201" msgid "Repeating" msgstr "Ponavljajući" msgctxt "#30202" msgid "EGP" msgstr "EPG" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Pretraži EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Ponavljajuće Dete" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sv_se/000077500000000000000000000000001362540622500276635ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.sv_se/strings.po000066400000000000000000000127201362540622500317160ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/kodi-main/language/sv_SE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sv_SE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR-värdnamn eller IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Port" msgctxt "#30002" msgid "Priority" msgstr "Prioritet" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Teckenuppsättningskonvertering" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Anslutningstimeout (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Läs inspelningar från katalog" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR inspelningskatalog" msgctxt "#30008" msgid "Channel search" msgstr "Kanalsök" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Kanalsök - Inställningar" msgctxt "#30010" msgid "Start Channel search" msgstr "Starta kanalsök" msgctxt "#30011" msgid "Source Type" msgstr "Källtyp" msgctxt "#30012" msgid "TV channels" msgstr "TV-kanaler" msgctxt "#30013" msgid "Radio channels" msgstr "Radiokanaler" msgctxt "#30014" msgid "FTA channels" msgstr "FTA kanaler" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kodade kanaler" msgctxt "#30016" msgid "HD channels" msgstr "HD kanaler" msgctxt "#30017" msgid "Country" msgstr "Land" msgctxt "#30018" msgid "Cable Inversion" msgstr "Kabelinvertering" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Kabelsymbolshastighet" msgctxt "#30020" msgid "Cable modulation" msgstr "Kabelmodulering" msgctxt "#30021" msgid "Terr Inversion" msgstr "Markinvertering" msgctxt "#30022" msgid "Satellite" msgstr "Satellit" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC typ" msgctxt "#30024" msgid "Back" msgstr "Tillbaka" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Kanalsökning - körs... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Typ:" msgctxt "#30027" msgid "Device:" msgstr "Enhet:" msgctxt "#30028" msgid "Scan: %i" msgstr "Sök: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Signal: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nya kanaler: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Alla kanaler: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analog TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analog Radio" msgctxt "#30034" msgid "Transponder:" msgstr "Transponder:" msgctxt "#30035" msgid "New channels" msgstr "Nya kanaler:" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Kanalsökning - slutförd" msgctxt "#30037" msgid "No device available - exiting" msgstr "Ingen enhet tillgänglig - stänger" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Ingen DVB-S2 enhet tillgänglig - försöker återgå till DVB-S" msgctxt "#30039" msgid "Running" msgstr "Igång" msgctxt "#30040" msgid "Stopped" msgstr "Stoppad" msgctxt "#30041" msgid "Finished" msgstr "Slutförd" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Kanalsökning - Avbruten" msgctxt "#30043" msgid "Channel search - Error" msgstr "Kanalsökning - Error" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Tappade anslutning till VDR server" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Anslutning till VDR server återställd" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Skapa kanalgrupper automatiskt på servern" msgctxt "#30047" msgid "Request Timeshift" msgstr "Begär Timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Sökväg till kanalikoner" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Server MAC för Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Installation" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Kontrollerar OSD - tryck info för att avsluta" msgctxt "#30103" msgid "Select to control OSD" msgstr "Välj för att kontrollera OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Timeshift Läge" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Timeshift Buffert (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Timeshift Buffert (Fil) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Kanaler" msgctxt "#30109" msgid "Provider whitelist" msgstr "Vitlista för leverantörer" msgctxt "#30110" msgid "Channel blacklist" msgstr "Svartlista för kanaler" msgctxt "#30111" msgid "Channel filters" msgstr "Kanalfilter" msgctxt "#30112" msgid "Radio Channels" msgstr "Radiokanaler" msgctxt "#30113" msgid "Save filters" msgstr "Spara filter" msgctxt "#30114" msgid "Provider Unknown" msgstr "Okänd leverantör" msgctxt "#30200" msgid "Single" msgstr "Enkel" msgctxt "#30201" msgid "Repeating" msgstr "Repeterande" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Sök EPG" msgctxt "#30205" msgid "Repeating Child" msgstr "Repeterande Barn" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.szl/000077500000000000000000000000001362540622500273545ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.szl/strings.po000066400000000000000000000134711362540622500314130ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Silesian (http://www.transifex.com/projects/p/kodi-main/language/szl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: szl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Miano lebo adresa ôd serwera" msgctxt "#30001" msgid "VNSI Port" msgstr "Port VNSI" msgctxt "#30002" msgid "Priority" msgstr "Priorytet" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Kōnwersyjŏ kodowaniŏ znŏkōw" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Limit czŏsu skuplowaniŏ (sekundy)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Wgrowej nagrania z folderu" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Folder nagrań" msgctxt "#30008" msgid "Channel search" msgstr "Zeszukowanie kanałōw" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Zeszukowanie kanałōw - Sztelōnki" msgctxt "#30010" msgid "Start Channel search" msgstr "Napocznij zeszukowanie kanałōw" msgctxt "#30011" msgid "Source Type" msgstr "Zorta źrōdła" msgctxt "#30012" msgid "TV channels" msgstr "Kanały TV" msgctxt "#30013" msgid "Radio channels" msgstr "Kanały radiowe" msgctxt "#30014" msgid "FTA channels" msgstr "Kanały niykodowane" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kanały kodowane" msgctxt "#30016" msgid "HD channels" msgstr "Kanały HD" msgctxt "#30017" msgid "Country" msgstr "Krej" msgctxt "#30018" msgid "Cable Inversion" msgstr "Inwersyjŏ kablowyj telewizyje" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Gibkość transmisyje kablowyj telewizyje" msgctxt "#30020" msgid "Cable modulation" msgstr "Modulacyjŏ kablowyj telewizyje" msgctxt "#30021" msgid "Terr Inversion" msgstr "Inwersyjŏ naziymnyj telewizyje" msgctxt "#30022" msgid "Satellite" msgstr "Satelita" msgctxt "#30023" msgid "ATSC Type" msgstr "Zorta naziymnyj telewizyje ATSC" msgctxt "#30024" msgid "Back" msgstr "Cofnij" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Zeszukowanie kanałōw - robi... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Zorta:" msgctxt "#30027" msgid "Device:" msgstr "Maszina:" msgctxt "#30028" msgid "Scan: %i" msgstr "Skanowanie: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Sygnoł: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Nowych kanałōw: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Wszyjskich kanałōw: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analogowŏ telewizyjŏ" msgctxt "#30033" msgid "Analog Radio" msgstr "Analogowe radyjŏ" msgctxt "#30034" msgid "Transponder:" msgstr "Transpōnder:" msgctxt "#30035" msgid "New channels" msgstr "Nowe kanały" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Zeszukowanie kanałōw - skōńczōne" msgctxt "#30037" msgid "No device available - exiting" msgstr "Niy ma dostympnych maszin - zawiyranie" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Niy ma dostympnych maszin DVB-S2 - awaryjne przeszaltrowanie do DVB-S" msgctxt "#30039" msgid "Running" msgstr "Włōnczōny" msgctxt "#30040" msgid "Stopped" msgstr "Zastawiōne" msgctxt "#30041" msgid "Finished" msgstr "Skōńczōne" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Zeszukowanie kanałōw - Pociepniynte" msgctxt "#30043" msgid "Channel search - Error" msgstr "Zeszukowanie kanałōw - Feler" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Serwane skuplowanie ze serwerym VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Wrōcōno było skuplowanie ze serwerym VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Wytwōrz skupiny kanałōw autōmatycznie na serwerze" msgctxt "#30047" msgid "Request Timeshift" msgstr "Spytej ô timeshift" msgctxt "#30048" msgid "Path to channel icons" msgstr "Cesta do folderu z ikōnami kanałōw" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "Adresa MAC ôd serwera VDR dlŏ zdŏlnygo cucyniŏ" msgctxt "#30100" msgid "VDR OSD" msgstr "Ekranowe myni VDR" msgctxt "#30101" msgid "Setup" msgstr "Sztelōnki" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Reskyrowanie ekranowym myni - naciś Info, coby wylyźć" msgctxt "#30103" msgid "Select to control OSD" msgstr "Ôznŏcz, coby kōntrolować ekranowe myni" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Tryb timeshiftu" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Miara bufōra timeshiftu (RAM) x100 MB " msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Miara bufōra timeshiftu (Zbiōr) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "Administracyjŏ VDR" msgctxt "#30108" msgid "Channels" msgstr "Kanały" msgctxt "#30109" msgid "Provider whitelist" msgstr "Zadufanie liferanty " msgctxt "#30110" msgid "Channel blacklist" msgstr "Kanały ôbszperowane" msgctxt "#30111" msgid "Channel filters" msgstr "Filtry kanałōw" msgctxt "#30112" msgid "Radio Channels" msgstr "Kanały radyjowe" msgctxt "#30113" msgid "Save filters" msgstr "Spamiyntej filtry" msgctxt "#30114" msgid "Provider Unknown" msgstr "Liferant niyznōmy" msgctxt "#30200" msgid "Single" msgstr "Jednorazowo" msgctxt "#30201" msgid "Repeating" msgstr "Wiela razy" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "Zeszukej w EPG" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ta_in/000077500000000000000000000000001362540622500276365ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.ta_in/strings.po000066400000000000000000000021671362540622500316750ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Tamil (India) (http://www.transifex.com/projects/p/kodi-main/language/ta_IN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ta_IN\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30012" msgid "TV channels" msgstr "TV சேனல்கள்" msgctxt "#30013" msgid "Radio channels" msgstr "வானொலி சேனல்கள்" msgctxt "#30017" msgid "Country" msgstr "நாடு" msgctxt "#30024" msgid "Back" msgstr "பின்செல்" msgctxt "#30026" msgid "Type:" msgstr "வகை:" msgctxt "#30039" msgid "Running" msgstr "ஓடிகொண்டிருக்கிறது" msgctxt "#30108" msgid "Channels" msgstr "சேனல்கள்" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.te_in/000077500000000000000000000000001362540622500276425ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.te_in/strings.po000066400000000000000000000013441362540622500316750ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Telugu (India) (http://www.transifex.com/projects/p/kodi-main/language/te_IN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: te_IN\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30017" msgid "Country" msgstr "దేశం" msgctxt "#30026" msgid "Type:" msgstr "రకం:" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.tg_tj/000077500000000000000000000000001362540622500276535ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.tg_tj/strings.po000066400000000000000000000020141362540622500317010ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Tajik (Tajikistan) (http://www.transifex.com/projects/p/kodi-main/language/tg_TJ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tg_TJ\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#30012" msgid "TV channels" msgstr "Шабакаҳои ТВ" msgctxt "#30013" msgid "Radio channels" msgstr "Мавҷҳои радиоӣ" msgctxt "#30017" msgid "Country" msgstr "Кишвар" msgctxt "#30026" msgid "Type:" msgstr "Навъ:" msgctxt "#30039" msgid "Running" msgstr "Иҷро шуда истодааст…" msgctxt "#30108" msgid "Channels" msgstr "Шабакаҳо" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.th_th/000077500000000000000000000000001362540622500276525ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.th_th/strings.po000066400000000000000000000106271362540622500317110ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/kodi-main/language/th_TH/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: th_TH\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30002" msgid "Priority" msgstr "ความสำคัญ" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "ระยะเวลาหยุดการเชื่อมต่อ (วิ)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "อ่านบันทึกจากไดเร็กทอรี่" msgctxt "#30007" msgid "VDR recordings directory" msgstr "ไดเร็กทอรี่บันทึก VDR" msgctxt "#30008" msgid "Channel search" msgstr "ค้นหาช่องรายการ" msgctxt "#30009" msgid "Channel search - Settings" msgstr "ค้นหาช่องรายการ - ตั้งค่า" msgctxt "#30010" msgid "Start Channel search" msgstr "เริ่มค้นหาช่องรายการ" msgctxt "#30011" msgid "Source Type" msgstr "ชนิดแหล่งที่มา" msgctxt "#30012" msgid "TV channels" msgstr "ช่อง ทีวี" msgctxt "#30013" msgid "Radio channels" msgstr "ช่อง วิทยุ" msgctxt "#30014" msgid "FTA channels" msgstr "ช่องรายการ FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "ช่องรายการผสม" msgctxt "#30016" msgid "HD channels" msgstr "ช่องรายการความละเอียดสูง" msgctxt "#30017" msgid "Country" msgstr "ประเทศ" msgctxt "#30024" msgid "Back" msgstr "ย้อนกลับ" msgctxt "#30026" msgid "Type:" msgstr "ชนิด:" msgctxt "#30027" msgid "Device:" msgstr "อุปกรณ์:" msgctxt "#30028" msgid "Scan: %i" msgstr "ค้นหา: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "สัญญาณ: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "ช่องใหม่: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "ทุกช่อง: %i" msgctxt "#30032" msgid "Analog TV" msgstr "ทีวีอนาล็อก" msgctxt "#30033" msgid "Analog Radio" msgstr "วิทยุอนาล็อก" msgctxt "#30034" msgid "Transponder:" msgstr " เครื่องรับส่งสัญญาณ" msgctxt "#30035" msgid "New channels" msgstr "ช่องรายการใหม่" msgctxt "#30036" msgid "Channel search - Finished" msgstr "การค้นหารายการ - เสร็จสิ้น" msgctxt "#30037" msgid "No device available - exiting" msgstr "ไม่มีอุปกรณ์ที่ใช้ได้ - กำลังออก" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "ไม่มีอุปกรณ์ DVB-S2 ที่ใช้ได้ - กำลังเปลี่ยนไปเป็น DVB-S" msgctxt "#30039" msgid "Running" msgstr "กำลังดำเนินการ" msgctxt "#30040" msgid "Stopped" msgstr "หยุด" msgctxt "#30041" msgid "Finished" msgstr "สำเร็จ" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "การค้นหารายการ - ยกเลิก" msgctxt "#30043" msgid "Channel search - Error" msgstr "การค้นหารายการ - ผิดพลาด" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ VDR" msgctxt "#30101" msgid "Setup" msgstr "ตั้งค่า" msgctxt "#30108" msgid "Channels" msgstr "ช่องสัญญาณ" msgctxt "#30112" msgid "Radio Channels" msgstr "รายการวิทยุ" msgctxt "#30113" msgid "Save filters" msgstr "บันทึกตัวกรอง" msgctxt "#30114" msgid "Provider Unknown" msgstr "ไม่ทราบผู้จัดหา" msgctxt "#30201" msgid "Repeating" msgstr "การเล่นซ้ำ" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.tr_tr/000077500000000000000000000000001362540622500276765ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.tr_tr/strings.po000066400000000000000000000132201362540622500317250ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/kodi-main/language/tr_TR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr_TR\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR Ana makine adı veya IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI Portu" msgctxt "#30002" msgid "Priority" msgstr "Öncelik" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Karakter Kümesi Dönüşümü" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Bağlantı süresi doldu (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Kayıtları dizinden oku" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR kayıtları dizini" msgctxt "#30008" msgid "Channel search" msgstr "Kanal arama" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Kanal arama - Ayarlar" msgctxt "#30010" msgid "Start Channel search" msgstr "Kanal aramayı başlat" msgctxt "#30011" msgid "Source Type" msgstr "Kaynak tipi" msgctxt "#30012" msgid "TV channels" msgstr "TV kanalları" msgctxt "#30013" msgid "Radio channels" msgstr "Radyo kanalları" msgctxt "#30014" msgid "FTA channels" msgstr "FTA kanalları" msgctxt "#30015" msgid "Scrambled channels" msgstr "Şifreli Kanallar" msgctxt "#30016" msgid "HD channels" msgstr "HD kanallar" msgctxt "#30017" msgid "Country" msgstr "Ülke" msgctxt "#30018" msgid "Cable Inversion" msgstr "Kabloluya çevir" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Kablo Sembol Oranı" msgctxt "#30020" msgid "Cable modulation" msgstr "Kablo Modülasyonu" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr Ters Dönüştürmesi" msgctxt "#30022" msgid "Satellite" msgstr "Uydu" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC Tipi" msgctxt "#30024" msgid "Back" msgstr "Geri" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Kanal Araması - İlerliyor... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Tür:" msgctxt "#30027" msgid "Device:" msgstr "Aygıt:" msgctxt "#30028" msgid "Scan: %i" msgstr "Tara: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Sinyal: %% %i" msgctxt "#30030" msgid "New channels: %i" msgstr "Yeni kanallar: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Tüm kanallar: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Analog TV" msgctxt "#30033" msgid "Analog Radio" msgstr "Analog Radyo" msgctxt "#30034" msgid "Transponder:" msgstr "Verici" msgctxt "#30035" msgid "New channels" msgstr "Yeni kanallar" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Kanal araması - Tamamlandı" msgctxt "#30037" msgid "No device available - exiting" msgstr "Aygıt bulunamadı - çıkılıyor" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "DVB-S2 aygıtı bulunamadı - DVB-S'e geri dönmeyi deniyor" msgctxt "#30039" msgid "Running" msgstr "Çalışıyor" msgctxt "#30040" msgid "Stopped" msgstr "Durduruldu" msgctxt "#30041" msgid "Finished" msgstr "Tamamlandı" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Kanal araması - İptal Edidi" msgctxt "#30043" msgid "Channel search - Error" msgstr "Kanal araması - Hata" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "VDR Sunucusun bağlantısı kaybedildi" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "VDR Sunucusu Bağlantısı Kaydedildi" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Kanal Gruplarını Bu Sunucuda Kendiliğinden Kaydet" msgctxt "#30047" msgid "Request Timeshift" msgstr "İstenilen zaman kaydırması" msgctxt "#30048" msgid "Path to channel icons" msgstr "Kanal logolarının yolu" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "Ağ Üzerinden Uyandırma (Wake-on-Lan) için VDR Sunucusu Mac Adresi" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR Göstergesi" msgctxt "#30101" msgid "Setup" msgstr "Yapılandırma" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Gösterge Kontrol Ediliyor - Çıkmak için \"info\" tuşuna basın" msgctxt "#30103" msgid "Select to control OSD" msgstr "Kontrol İçin Göstergeyi Seçin" msgctxt "#30104" msgid "Timeshift Mode" msgstr "Zaman Kaydırması Modu" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "Zaman Kaydırma Önbelleği (RAM) x100 MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "Zaman Kaydırma Önbelleği (DOSYA) x1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Yöneticisi" msgctxt "#30108" msgid "Channels" msgstr "Kanallar" msgctxt "#30109" msgid "Provider whitelist" msgstr "Sağlayıcı Beyaz Listesi" msgctxt "#30110" msgid "Channel blacklist" msgstr "Kanal Kara Listesi" msgctxt "#30111" msgid "Channel filters" msgstr "Kanal Filtreleri" msgctxt "#30112" msgid "Radio Channels" msgstr "Radyo Kanalları" msgctxt "#30113" msgid "Save filters" msgstr "Filtreyi Kaydet" msgctxt "#30114" msgid "Provider Unknown" msgstr "Bilinmeyen Sağlayıcı" msgctxt "#30200" msgid "Single" msgstr "Tekil" msgctxt "#30201" msgid "Repeating" msgstr "Yinelenen" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "EPG'de Ara" msgctxt "#30205" msgid "Repeating Child" msgstr "Tekrarlanan Altbölüm" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.uk_ua/000077500000000000000000000000001362540622500276505ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.uk_ua/strings.po000066400000000000000000000124341362540622500317050ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/kodi-main/language/uk_UA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk_UA\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "IP сервера VDR або його назва" msgctxt "#30001" msgid "VNSI Port" msgstr "Порт VNSI" msgctxt "#30002" msgid "Priority" msgstr "Пріоритет" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Налаштування конвертування символів" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Затримка зв’язку (с) " msgctxt "#30006" msgid "Read recordings from directory" msgstr "Читати записи з теки" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Тека записів VDR" msgctxt "#30008" msgid "Channel search" msgstr "Пошук каналів" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Пошук каналів - Налаштування" msgctxt "#30010" msgid "Start Channel search" msgstr "Почати пошук каналів" msgctxt "#30011" msgid "Source Type" msgstr "Тип джерела" msgctxt "#30012" msgid "TV channels" msgstr "Телевізійні канали" msgctxt "#30013" msgid "Radio channels" msgstr "Радіо канали" msgctxt "#30014" msgid "FTA channels" msgstr "Безплатні канали" msgctxt "#30015" msgid "Scrambled channels" msgstr "Зашифровані канали" msgctxt "#30016" msgid "HD channels" msgstr "HD канали" msgctxt "#30017" msgid "Country" msgstr "Країна" msgctxt "#30018" msgid "Cable Inversion" msgstr "Кабельне - Інверсія" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Кабельне - символьна швидкість" msgctxt "#30020" msgid "Cable modulation" msgstr "Кабельне - модуляція" msgctxt "#30021" msgid "Terr Inversion" msgstr "Наземне - інверсія " msgctxt "#30022" msgid "Satellite" msgstr "Супутник" msgctxt "#30023" msgid "ATSC Type" msgstr "Тип ATSC" msgctxt "#30024" msgid "Back" msgstr "Назад" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Пошук каналів - запущено... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Тип:" msgctxt "#30027" msgid "Device:" msgstr "Пристрій:" msgctxt "#30028" msgid "Scan: %i" msgstr "Сканування: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Сигнал: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Нові канали: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Всі канали: %i" msgctxt "#30032" msgid "Analog TV" msgstr "Аналогове телебачення" msgctxt "#30033" msgid "Analog Radio" msgstr "Аналогове радіо" msgctxt "#30034" msgid "Transponder:" msgstr "Транспондер:" msgctxt "#30035" msgid "New channels" msgstr "Нові канали" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Пошук каналів - Закінчено" msgctxt "#30037" msgid "No device available - exiting" msgstr "Немає доступного пристрою - вихід" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Немає доступного пристрою DVB-S2 - намагаюся повернутися до DVB-S" msgctxt "#30039" msgid "Running" msgstr "Запуск…" msgctxt "#30040" msgid "Stopped" msgstr "Зупинено" msgctxt "#30041" msgid "Finished" msgstr "Завершено" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Пошук каналів - Скасовано" msgctxt "#30043" msgid "Channel search - Error" msgstr "Пошук каналів - Помилка" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Втрачено зв’язок з сервером VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Зв’язок з VDR сервером відновлено" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Створити групи каналів автоматично на сервері" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "VDR Сервер MAC для Wake-on-LAN" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "Налаштування" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "Контроль OSD - натисніть Info для виходу" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" msgctxt "#30108" msgid "Channels" msgstr "Канали" msgctxt "#30201" msgid "Repeating" msgstr "Повторювати" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.uz_uz/000077500000000000000000000000001362540622500277205ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.uz_uz/strings.po000066400000000000000000000014131362540622500317500ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Uzbek (Uzbekistan) (http://www.transifex.com/projects/p/kodi-main/language/uz_UZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uz_UZ\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30017" msgid "Country" msgstr "Davlat" msgctxt "#30026" msgid "Type:" msgstr "Turi:" msgctxt "#30108" msgid "Channels" msgstr "Kanallar" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.vi_vn/000077500000000000000000000000001362540622500276655ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.vi_vn/strings.po000066400000000000000000000105171362540622500317220ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/projects/p/kodi-main/language/vi_VN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "Tên miền hoặc IP VDR" msgctxt "#30001" msgid "VNSI Port" msgstr "Cổng VNSI" msgctxt "#30002" msgid "Priority" msgstr "Mức quan trọng" msgctxt "#30003" msgid "Character Set Conversion" msgstr "Chuyển đổi bộ ký tự" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "Thời gian chờ kết nối (s)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "Đọc các bản thu từ thư mục" msgctxt "#30007" msgid "VDR recordings directory" msgstr "Thư mục lưu chương trình thu VDR" msgctxt "#30008" msgid "Channel search" msgstr "Tìm kênh" msgctxt "#30009" msgid "Channel search - Settings" msgstr "Dò kênh - Cài đặt" msgctxt "#30010" msgid "Start Channel search" msgstr "Bắt đầu dò kênh" msgctxt "#30011" msgid "Source Type" msgstr "Kiểu nguồn" msgctxt "#30012" msgid "TV channels" msgstr "Kênh TV" msgctxt "#30013" msgid "Radio channels" msgstr "Kênh Radio" msgctxt "#30014" msgid "FTA channels" msgstr "Kênh FTA" msgctxt "#30015" msgid "Scrambled channels" msgstr "Kênh mã hoá" msgctxt "#30016" msgid "HD channels" msgstr "Kênh HD" msgctxt "#30017" msgid "Country" msgstr "Quốc gia" msgctxt "#30018" msgid "Cable Inversion" msgstr "Đảo cáp" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "Cable Symbolrate" msgctxt "#30020" msgid "Cable modulation" msgstr "Điều biến cáp" msgctxt "#30021" msgid "Terr Inversion" msgstr "Đảo Terr" msgctxt "#30022" msgid "Satellite" msgstr "Vệ tinh" msgctxt "#30023" msgid "ATSC Type" msgstr "Kiểu ATSC" msgctxt "#30024" msgid "Back" msgstr "Lùi" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "Dò kênh - Đang chạy... %i %%" msgctxt "#30026" msgid "Type:" msgstr "Thể loại" msgctxt "#30027" msgid "Device:" msgstr "Thiết bị:" msgctxt "#30028" msgid "Scan: %i" msgstr "Quét: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "Tín hiêu: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "Kênh mới: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "Tất cả kênh: %i" msgctxt "#30032" msgid "Analog TV" msgstr "TV analog" msgctxt "#30033" msgid "Analog Radio" msgstr "Radio analog" msgctxt "#30034" msgid "Transponder:" msgstr "Bộ tiếp sóng:" msgctxt "#30035" msgid "New channels" msgstr "Kênh mới" msgctxt "#30036" msgid "Channel search - Finished" msgstr "Dò kênh - Đã xong" msgctxt "#30037" msgid "No device available - exiting" msgstr "Thiết bị không dùng được hoặc không tồn tại" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "Không có thiết bị DVB-S2 - đang thử lại với DVB-S" msgctxt "#30039" msgid "Running" msgstr "Đang chạy" msgctxt "#30040" msgid "Stopped" msgstr "Đã dừng" msgctxt "#30041" msgid "Finished" msgstr "Đã xong" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "Dò kênh - Đã hủy" msgctxt "#30043" msgid "Channel search - Error" msgstr "Dò kênh - Lỗi" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "Mất kết nối tới máy chủ VDR" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "Đã khôi phục lại kết nối tới máy chủ VDR" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "Tạo các nhóm kênh tự động trên máy chủ" msgctxt "#30101" msgid "Setup" msgstr "Cài đặt" msgctxt "#30108" msgid "Channels" msgstr "Kênh" msgctxt "#30110" msgid "Channel blacklist" msgstr "Danh sách kênh bị cấm" msgctxt "#30111" msgid "Channel filters" msgstr "Bộ lọc kênh" msgctxt "#30112" msgid "Radio Channels" msgstr "Kênh Radio" msgctxt "#30113" msgid "Save filters" msgstr "Lưu bộ lọc" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.zh_cn/000077500000000000000000000000001362540622500276455ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.zh_cn/strings.po000066400000000000000000000125351362540622500317040ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/kodi-main/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR 主机名或 IP 地址" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI 端口" msgctxt "#30002" msgid "Priority" msgstr "优先级" msgctxt "#30003" msgid "Character Set Conversion" msgstr "字符集转换" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "连接超时(秒)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "读取录像于目录" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR 录像目录" msgctxt "#30008" msgid "Channel search" msgstr "频道搜索" msgctxt "#30009" msgid "Channel search - Settings" msgstr "频道搜索 - 设置" msgctxt "#30010" msgid "Start Channel search" msgstr "开始频道搜索" msgctxt "#30011" msgid "Source Type" msgstr "源类型" msgctxt "#30012" msgid "TV channels" msgstr "电视频道" msgctxt "#30013" msgid "Radio channels" msgstr "电台频道" msgctxt "#30014" msgid "FTA channels" msgstr "免费频道" msgctxt "#30015" msgid "Scrambled channels" msgstr "加密频道" msgctxt "#30016" msgid "HD channels" msgstr "高清频道" msgctxt "#30017" msgid "Country" msgstr "国家" msgctxt "#30018" msgid "Cable Inversion" msgstr "电缆反转" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "电缆符号率" msgctxt "#30020" msgid "Cable modulation" msgstr "电缆调制" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr 反转" msgctxt "#30022" msgid "Satellite" msgstr "卫星" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC 类型" msgctxt "#30024" msgid "Back" msgstr "返回" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "频道搜索 - 运行... %i %%" msgctxt "#30026" msgid "Type:" msgstr "类型:" msgctxt "#30027" msgid "Device:" msgstr "设备:" msgctxt "#30028" msgid "Scan: %i" msgstr "扫描:%i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "信号:%i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "新频道:%i" msgctxt "#30031" msgid "All channels: %i" msgstr "全部频道:%i" msgctxt "#30032" msgid "Analog TV" msgstr "模拟电视" msgctxt "#30033" msgid "Analog Radio" msgstr "模拟电台" msgctxt "#30034" msgid "Transponder:" msgstr "转发器:" msgctxt "#30035" msgid "New channels" msgstr "新频道" msgctxt "#30036" msgid "Channel search - Finished" msgstr "频道搜索 - 已完成" msgctxt "#30037" msgid "No device available - exiting" msgstr "无可用设备 - 正退出" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "无可用 DVB-S2 设备 - 尝试 DVB-S" msgctxt "#30039" msgid "Running" msgstr "运行" msgctxt "#30040" msgid "Stopped" msgstr "已停止" msgctxt "#30041" msgid "Finished" msgstr "已完成" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "频道搜索 - 已取消" msgctxt "#30043" msgid "Channel search - Error" msgstr "频道搜索 - 错误" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "失去与 VDR 服务器的连接" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "与 VDR 服务器的连接已恢复" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "自动在服务器上创建频道组" msgctxt "#30047" msgid "Request Timeshift" msgstr "请求时光平移" msgctxt "#30048" msgid "Path to channel icons" msgstr "频道图标路径" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "用于网络唤醒的 VDR 服务器 MAC 地址" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD" msgctxt "#30101" msgid "Setup" msgstr "设置" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "控制 OSD - 按 info 退出" msgctxt "#30103" msgid "Select to control OSD" msgstr "选择控制 OSD" msgctxt "#30104" msgid "Timeshift Mode" msgstr "时光平移模式" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "时光平移缓存(RAM)x100MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "时光平移缓存(文件)x1GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR 管理" msgctxt "#30108" msgid "Channels" msgstr "频道" msgctxt "#30109" msgid "Provider whitelist" msgstr "来源白名单" msgctxt "#30110" msgid "Channel blacklist" msgstr "频道黑名单" msgctxt "#30111" msgid "Channel filters" msgstr "频道筛选" msgctxt "#30112" msgid "Radio Channels" msgstr "电台频道" msgctxt "#30113" msgid "Save filters" msgstr "保存筛选" msgctxt "#30114" msgid "Provider Unknown" msgstr "未知来源" msgctxt "#30200" msgid "Single" msgstr "单次" msgctxt "#30201" msgid "Repeating" msgstr "重复" msgctxt "#30202" msgid "EGP" msgstr "EGP" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "搜索电子节目单" msgctxt "#30205" msgid "Repeating Child" msgstr "重复子项目" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.zh_tw/000077500000000000000000000000001362540622500276775ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/language/resource.language.zh_tw/strings.po000066400000000000000000000126771362540622500317450ustar00rootroot00000000000000# Kodi Media Center language file # Addon Name: VDR VNSI Client # Addon id: pvr.vdr.vnsi # Addon Provider: Team Kodi msgid "" msgstr "" "Project-Id-Version: KODI Main\n" "Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/kodi-main/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" msgctxt "#30000" msgid "VDR Hostname or IP" msgstr "VDR的主機名稱或IP" msgctxt "#30001" msgid "VNSI Port" msgstr "VNSI連接埠" msgctxt "#30002" msgid "Priority" msgstr "優先順序" msgctxt "#30003" msgid "Character Set Conversion" msgstr "字元集轉換" msgctxt "#30004" msgid "Connect timeout (s)" msgstr "連接逾時 (秒)" msgctxt "#30006" msgid "Read recordings from directory" msgstr "從目錄中讀取錄影檔案" msgctxt "#30007" msgid "VDR recordings directory" msgstr "VDR錄影檔目錄" msgctxt "#30008" msgid "Channel search" msgstr "頻道搜尋" msgctxt "#30009" msgid "Channel search - Settings" msgstr "頻道搜尋-設定" msgctxt "#30010" msgid "Start Channel search" msgstr "開始頻道搜尋" msgctxt "#30011" msgid "Source Type" msgstr "來源類型" msgctxt "#30012" msgid "TV channels" msgstr "電視頻道" msgctxt "#30013" msgid "Radio channels" msgstr "廣播電台頻道" msgctxt "#30014" msgid "FTA channels" msgstr "FTA頻道" msgctxt "#30015" msgid "Scrambled channels" msgstr "加密頻道" msgctxt "#30016" msgid "HD channels" msgstr "高清頻道" msgctxt "#30017" msgid "Country" msgstr "國家" msgctxt "#30018" msgid "Cable Inversion" msgstr "電纜倒位" msgctxt "#30019" msgid "Cable Symbolrate" msgstr "電纜符碼率" msgctxt "#30020" msgid "Cable modulation" msgstr "電纜調變器" msgctxt "#30021" msgid "Terr Inversion" msgstr "Terr 倒位" msgctxt "#30022" msgid "Satellite" msgstr "衛星" msgctxt "#30023" msgid "ATSC Type" msgstr "ATSC類型" msgctxt "#30024" msgid "Back" msgstr "返回" msgctxt "#30025" msgid "Channel search - running... %i %%" msgstr "頻道搜索 - 運行中... %i %%" msgctxt "#30026" msgid "Type:" msgstr "類型:" msgctxt "#30027" msgid "Device:" msgstr "設備:" msgctxt "#30028" msgid "Scan: %i" msgstr "掃描: %i" msgctxt "#30029" msgid "Signal: %i %%" msgstr "信號: %i %%" msgctxt "#30030" msgid "New channels: %i" msgstr "新頻道: %i" msgctxt "#30031" msgid "All channels: %i" msgstr "所有頻道: %i" msgctxt "#30032" msgid "Analog TV" msgstr "類比電視" msgctxt "#30033" msgid "Analog Radio" msgstr "類比電台" msgctxt "#30034" msgid "Transponder:" msgstr "發射機應答器:" msgctxt "#30035" msgid "New channels" msgstr "新頻道" msgctxt "#30036" msgid "Channel search - Finished" msgstr "頻道搜索-已完成" msgctxt "#30037" msgid "No device available - exiting" msgstr "沒有可用設備-退出中" msgctxt "#30038" msgid "No DVB-S2 device available - trying fallback to DVB-S" msgstr "沒有可用的DVB-S2設備 - 試圖退回使用DVB-S" msgctxt "#30039" msgid "Running" msgstr "正在執行" msgctxt "#30040" msgid "Stopped" msgstr "已停止" msgctxt "#30041" msgid "Finished" msgstr "已完成" msgctxt "#30042" msgid "Channel search - Canceled" msgstr "頻道搜索 - 取消" msgctxt "#30043" msgid "Channel search - Error" msgstr "頻道搜索 - 錯誤" msgctxt "#30044" msgid "Lost connection to VDR Server" msgstr "VDR服務器失去連線" msgctxt "#30045" msgid "Connection to VDR Server restored" msgstr "VDR服務器連線已恢復" msgctxt "#30046" msgid "Create channel groups automatically on the server" msgstr "自動在服務器上建立頻道群組" msgctxt "#30047" msgid "Request Timeshift" msgstr "請求時間平移" msgctxt "#30048" msgid "Path to channel icons" msgstr "頻道圖示路徑" msgctxt "#30049" msgid "VDR Server MAC for Wake-on-LAN" msgstr "給遠端喚醒使用的VDR伺服器MAC位址" msgctxt "#30100" msgid "VDR OSD" msgstr "VDR OSD選單" msgctxt "#30101" msgid "Setup" msgstr "系統設定" msgctxt "#30102" msgid "Controlling OSD - press info to exit" msgstr "控制OSD選單中 - 按 info 鍵離開" msgctxt "#30103" msgid "Select to control OSD" msgstr "選擇控制OSD選單" msgctxt "#30104" msgid "Timeshift Mode" msgstr "時間平移模式" msgctxt "#30105" msgid "Timeshift Buffer (RAM) x100 MB" msgstr "時間平移緩衝 (RAM) x 100MB" msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" msgstr "時間平移緩衝 (檔案) x 1 GB" msgctxt "#30107" msgid "VDR Admin" msgstr "VDR 管理" msgctxt "#30108" msgid "Channels" msgstr "頻道" msgctxt "#30109" msgid "Provider whitelist" msgstr "提供者白名單" msgctxt "#30110" msgid "Channel blacklist" msgstr "頻道黑名單" msgctxt "#30111" msgid "Channel filters" msgstr "頻道篩選器" msgctxt "#30112" msgid "Radio Channels" msgstr "廣播頻道" msgctxt "#30113" msgid "Save filters" msgstr "儲存篩選器" msgctxt "#30114" msgid "Provider Unknown" msgstr "未知的提供者" msgctxt "#30200" msgid "Single" msgstr "單集" msgctxt "#30201" msgid "Repeating" msgstr "重複" msgctxt "#30202" msgid "EGP" msgstr "電子節目表" msgctxt "#30203" msgid "VPS" msgstr "VPS" msgctxt "#30204" msgid "Search EPG" msgstr "搜尋電子節目表" msgctxt "#30205" msgid "Repeating Child" msgstr "重複子項目" pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/settings.xml000066400000000000000000000016651362540622500237430ustar00rootroot00000000000000 pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/shaders/000077500000000000000000000000001362540622500230025ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/shaders/1.2/000077500000000000000000000000001362540622500233025ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/shaders/1.2/frag.glsl000066400000000000000000000002361362540622500251050ustar00rootroot00000000000000#ifndef GL_ES #define lowp #endif uniform sampler2D m_samp; varying lowp vec4 m_cord; void main () { gl_FragColor = vec4(texture2D(m_samp, m_cord.xy)); } pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/shaders/1.2/vert.glsl000066400000000000000000000003371362540622500251500ustar00rootroot00000000000000attribute vec4 m_attrpos; attribute vec4 m_attrcord; varying vec4 m_cord; uniform mat4 m_proj; uniform mat4 m_model; void main () { mat4 mvp = m_proj * m_model; gl_Position = mvp * m_attrpos; m_cord = m_attrcord; }pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/shaders/1.5/000077500000000000000000000000001362540622500233055ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/shaders/1.5/frag.glsl000066400000000000000000000002151362540622500251050ustar00rootroot00000000000000#version 150 uniform sampler2D m_samp; in vec4 m_cord; out vec4 fragColor; void main () { fragColor = vec4(texture(m_samp, m_cord.xy)); }pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/shaders/1.5/vert.glsl000066400000000000000000000003331362540622500251470ustar00rootroot00000000000000#version 150 in vec4 m_attrpos; in vec4 m_attrcord; out vec4 m_cord; uniform mat4 m_proj; uniform mat4 m_model; void main () { mat4 mvp = m_proj * m_model; gl_Position = mvp * m_attrpos; m_cord = m_attrcord; }pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/000077500000000000000000000000001362540622500225005ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.aeon.nox.5/000077500000000000000000000000001362540622500253335ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.aeon.nox.5/1080i/000077500000000000000000000000001362540622500260745ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.aeon.nox.5/1080i/Admin.xml000066400000000000000000000435351362540622500276600ustar00rootroot00000000000000 10 SetProperty(menu,osd) no 36 CommonBackground Topbar 1920 900 90 font13_title 15 grey2 right top -4 String.IsEqual(Window.Property(menu),osd) + ControlGroup(12).HasFocus() 0 128 Window_OpenClose_Animation SystemLeftPanel 82 32 356 720 61 11 38 10 10 61 300 30 356 60 separator2.png 0 356 90 font15 20 grey2 selected right center 0 0 0 30 356 60 separator2.png 0 0 356 90 listselect_fo.png Control.HasFocus(10) VisibleFadeEffect 0 356 90 font15 20 white selected right center Conditional 0 0 0 Select SetProperty(menu,osd) SetProperty(menu,setup) SetProperty(menu,channels) 68 32 8 720 11 10 61 61 false - scrollbar/texturesliderbar2.png scrollbar/texturesliderbar2.png LOGO 82 752 356 120 keep aeon-nox-logo.png SystemRightPanel control area 522 32 1316 840 0 60 10 60 12 12 String.IsEqual(Window.Property(menu),osd) osd control label 1316 90 font15 grey2 30 white invalid listselect_fo.png separator5.png 0 90 1316 750 center center control area 522 32 1316 840 0 60 10 60 20 20 String.IsEqual(Window.Property(menu),setup) SettingsFadeEffect Source Type 0 0 1316 90 font15 grey2 30 white listselect_fo.png separator5.png center yes 10 Source Type 0 0 1316 90 font15 grey2 30 white listselect_fo.png separator5.png center yes 10 Source Type 0 0 1316 90 font15 grey2 30 white listselect_fo.png separator5.png center yes 10 SettingsFadeEffect String.IsEqual(Window.Property(menu),channels) Channels label 522 32 658 90 font15 grey2 30 white listselect_fo.png separator5.png String.IsEqual(Window.Property(IsDirty),1) control area 522 182 658 390 0 60 10 36 38 38 Is Radio 658 90 font15 grey2 30 white listselect_fo.png separator5.png providers 658 90 font15 grey2 30 white listselect_fo.png separator5.png Select channels 658 90 font15 grey2 30 white listselect_fo.png separator5.png Select save 658 90 font15 grey2 30 white listselect_fo.png separator5.png 32 1178 2 840 separator3.png 1180 32 658 840 36 35 37 36 37 200 658 60 separator2.png 658 60 font14 left 15 grey2 grey2 ListItem.Label 594 -2 64 64 FF04B431 android/btn_radio_on_holo_dark.png ListItem.Property(IsWhitelist) 594 -2 64 64 FFB20000 android/btn_radio_on_holo_dark.png ListItem.Property(IsBlacklist) 594 -2 64 64 android/btn_radio_off_holo_dark.png 1316 60 separator2.png 658 60 listselect_fo.png Control.HasFocus(36) VisibleFadeEffect 658 60 font14 left white 15 white ListItem.Label Conditional 594 -2 64 64 FF04B431 android/btn_radio_on_holo_dark.png ListItem.Property(IsWhitelist) 594 -2 64 64 FFB20000 android/btn_radio_on_holo_dark.png ListItem.Property(IsBlacklist) 594 -2 64 64 android/btn_radio_off_holo_dark.png 1841 32 8 840 36 10 37 37 false - scrollbar/texturesliderbar2.png scrollbar/texturesliderbar2.png BehindDialogFadeOut pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.aeon.nox/000077500000000000000000000000001362540622500251705ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.aeon.nox/1080i/000077500000000000000000000000001362540622500257315ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.aeon.nox/1080i/Admin.xml000066400000000000000000000367701362540622500275200ustar00rootroot00000000000000 10 SetProperty(menu,osd) no 36 AutoConfig CommonSettingsBackground CommonMediaPlayingBackground Furniture_SettingsFloor Conditional Furniture_SettingsBackPanel 1 63 180 326 768 10 11 10 10 - 300 334 74 Font_Bold20 grey2 0 0 0 334 74 views/tripanel/listselect_fo.png Conditional $VAR[FocusTextureColorVar] 334 74 Font_Bold20 0 0 0 Select SetProperty(menu,osd) SetProperty(menu,setup) SetProperty(menu,channels) 387 120 Background 0 0 1469 741 $INFO[Container(9000).ListItem.Icon] Background Title 0 0 1469 50 stretch GlassTitleBar.png String.IsEqual(Window.Property(menu),osd) osd control label 25 10 1400 30 views/tripanel/listselect_fo.png $VAR[FocusTextureColorVar] - font16caps grey white2 10 5 50 1453 740 String.IsEqual(Window.Property(menu),setup) 21 Source Type 10 50 1400 40 views/tripanel/listselect_fo.png $VAR[FocusTextureColorVar] - Font_Bold20 grey white2 center 10 22 Source Type 10 100 1400 40 views/tripanel/listselect_fo.png $VAR[FocusTextureColorVar] - Font_Bold20 grey white2 center 10 21 23 Source Type 10 150 1400 40 views/tripanel/listselect_fo.png $VAR[FocusTextureColorVar] - Font_Bold20 grey white2 center 10 22 String.IsEqual(Window.Property(menu),channels) 33 Channels label 25 10 1000 30 font16caps posx center white black 1090 30 30 30 stretch FFCC0000 views/scrollbarnub-focus.png String.IsEqual(Window.Property(IsDirty),1) 1090 30 30 30 stretch FF00FF00 views/scrollbarnub-focus.png !String.IsEqual(Window.Property(IsDirty),1) Is Radio 75 150 375 30 font16caps grey3 white views/tripanel/listselect_fo.png $VAR[FocusTextureColorVar] settings/settings_radiobuttonoff.png 10 33 36 providers 75 250 375 30 views/tripanel/listselect_fo.png settings/settings_radiobuttonoff.png font16caps grey3 10 36 32 34 Select channels 75 350 375 30 views/tripanel/listselect_fo.png settings/settings_radiobuttonoff.png font16caps grey3 10 36 33 35 Select save 75 450 375 30 views/tripanel/listselect_fo.png settings/settings_radiobuttonoff.png font16caps grey3 10 36 34 background image 700 75 740 670 $INFO[Container(9000).ListItem.Icon] 720 95 650 630 35 37 list 37 200 2 2 18 18 stretch 7790EE90 arrowright.png ListItem.Property(IsWhitelist) 2 2 18 18 stretch 77FF0000 arrowright.png ListItem.Property(IsBlacklist) 40 0 550 20 Font_Reg10 posx center grey2 selected ListItem.Label 0 0 650 20 stretch views/tripanel/listselect_fo.png $VAR[FocusTextureColorVar] Control.HasFocus(36) 2 2 18 18 stretch 7790EE90 arrowright.png ListItem.Property(IsWhitelist) 2 2 18 18 stretch 77FF0000 arrowright.png ListItem.Property(IsBlacklist) 40 0 550 20 Font_Reg10 posx center grey2 selected ListItem.Label 1400 75 25 630 36 false vertical pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.confluence/000077500000000000000000000000001362540622500255645ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.confluence/720p/000077500000000000000000000000001362540622500262545ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.confluence/720p/Admin.xml000066400000000000000000000432271362540622500300360ustar00rootroot00000000000000 10 SetProperty(menu,osd) no 36 CommonBackground 0 100r 1280 100 floor.png VisibleFadeEffect 90 30 5 5 1090 630 ContentPanel.png 5 625 1090 64 ContentPanelMirror.png Close Window button 980 11 64 32 - PreviousMenu DialogCloseButton-focus.png DialogCloseButton.png 1 1 1 1 system.getbool(input.enablemouse) VisibleFadeEffect LOGO 30 15 220 80 keep Confluence_Logo.png 1 10 82 260 541 10 11 10 10 - 300 0 0 260 55 MenuItemNF.png 10 0 240 55 font24_title grey2 right center 0 0 0 0 0 260 55 MenuItemFO.png 10 0 240 55 font24_title white right center 0 0 0 Select SetProperty(menu,osd) SetProperty(menu,setup) SetProperty(menu,channels) 268 10 Background 0 0 790 620 black-back2.png Background Title 0 0 790 50 stretch GlassTitleBar.png String.IsEqual(Window.Property(menu),osd) osd control label 25 20 765 30 MenuItemFO.png MenuItemNF.png font16caps white 10 5 50 780 515 String.IsEqual(Window.Property(menu),setup) 21 Source Type 10 50 770 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 10 22 Source Type 10 100 770 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 10 21 23 Source Type 10 150 770 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 10 22 String.IsEqual(Window.Property(menu),channels) 33 Channels label 30 20 500 30 font16caps left center white black 730 20 30 30 stretch FFCC0000 radiobutton-nofocus.png String.IsEqual(Window.Property(IsDirty),1) 730 20 30 30 stretch FF00FF00 radiobutton-nofocus.png !String.IsEqual(Window.Property(IsDirty),1) Is Radio 50 100 250 30 font16caps grey2 white MenuItemFO.png MenuItemNF.png 10 33 36 providers 50 150 250 30 MenuItemFO.png MenuItemNF.png font16caps grey2 white 10 36 32 34 Select channels 50 200 250 30 MenuItemFO.png MenuItemNF.png font16caps grey2 white 10 36 33 35 Select save 50 250 250 30 MenuItemFO.png MenuItemNF.png font16caps grey2 white 10 36 34 background image 320 50 440 540 DialogBack2.png 340 70 400 500 35 37 list 37 200 0 0 400 20 stretch MenuItemNF.png 2 2 18 18 stretch 7790EE90 arrow-big-right.png ListItem.Property(IsWhitelist) 2 2 18 18 stretch 77FF0000 arrow-big-right.png ListItem.Property(IsBlacklist) 40 0 340 20 font10 left center grey2 selected ListItem.Label 0 0 400 20 stretch MenuItemNF.png !Control.HasFocus(36) VisibleFadeEffect 0 0 400 20 stretch MenuItemFO.png Control.HasFocus(36) VisibleFadeEffect 2 2 18 18 stretch 7790EE90 arrow-big-right.png ListItem.Property(IsWhitelist) 2 2 18 18 stretch 77FF0000 arrow-big-right.png ListItem.Property(IsBlacklist) 40 0 340 20 font10 left center grey2 selected ListItem.Label 760 50 25 540 ScrollBarV.png ScrollBarV_bar.png ScrollBarV_bar_focus.png ScrollBarNib.png ScrollBarNib.png 36 false vertical Clock pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.confluence/720p/ChannelScan.xml000066400000000000000000001034761362540622500311660ustar00rootroot00000000000000 5 no 2 CommonSettingsBackground CommonMediaPlayingBackground 90 50 0 0 1100 640 DialogBack.png LOGO 30 15 220 80 keep Confluence_Logo.png 268 10 790 618 black-back2.png 268 10 804 70 stretch GlassTitleBar.png header label 300 20 740 30 font16caps left center white black Start/Stop Channel search 10 90 260 60 13 font13_title right center MenuItemNF.png MenuItemFO.png 2 10 6 6 Cancel 10 150 260 60 13 font13_title right center MenuItemNF.png MenuItemFO.png 10 10 5 5 IsEmpty(Window.Property(Scanning)) IsEmpty(Window.Property(Scanning)) Source Type 268 80 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 5 5 22 11 Default RadioButton 268 120 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png 5 5 10 12 Conditional Default RadioButton 268 160 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png 5 5 11 13 Conditional Conditional Default RadioButton 268 200 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png 5 5 12 14 Conditional Conditional Conditional Default RadioButton 268 240 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png 5 5 13 15 Conditional Conditional Conditional Conditional Default RadioButton 268 280 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png 5 5 14 16 Conditional Conditional Conditional Conditional Conditional Country selection 268 320 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 5 5 15 17 Conditional Conditional Conditional Conditional Conditional Conditional Satellite selection 268 360 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 5 5 16 18 Conditional Conditional Conditional Conditional Conditional Conditional Conditional DVB-C Inversion 268 400 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 5 5 17 29 Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional DVB-C Symbolrate 268 440 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 5 5 18 20 Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional DVB-C QAM 268 480 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 5 5 29 21 Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional DVB-T Inversion 268 520 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 5 5 20 22 Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional ATSC Type 268 560 790 40 font13 grey2 white MenuItemFO.png MenuItemNF.png center 5 5 21 10 Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional Conditional !IsEmpty(Window.Property(Scanning)) Progressbar 275 60 780 14 type label 275 85 250 30 font13 left center grey black type value 1040 85 500 30 font13 right center white black device label 275 115 250 30 font13 left center white black device value 1040 115 500 30 font13 right center white black transponder label 275 145 250 30 font13 left center white black transponder value 1040 145 500 30 font13 right center white black Progressbar 30 160 220 50 Signal label 40 168 250 30 font13 left center white black 215 170 30 30 stretch amt-overlay-watched.png !IsEmpty(Window.Property(Locked)) 290 180 750 400 2 2 10 60 60 200 0 0 750 40 stretch MenuItemNF.png 710 5 40 30 stretch OverlayLocked.png !IsEmpty(ListItem.Property(IsEncrypted)) 690 7 60 25 stretch OverlayHD.png Conditional !IsEmpty(ListItem.Property(IsHD)) 0 2 36 36 stretch DefaultVideoCover.png IsEmpty(ListItem.Property(IsRadio)) 0 2 36 36 stretch DefaultAlbumCover.png !IsEmpty(ListItem.Property(IsRadio)) 45 0 500 40 font14 left center grey2 selected ListItem.Label 0 0 750 40 stretch MenuItemNF.png !Control.HasFocus(2) VisibleFadeEffect 0 0 750 40 stretch MenuItemFO.png Control.HasFocus(2) VisibleFadeEffect 710 5 40 30 stretch OverlayLocked.png !IsEmpty(ListItem.Property(IsEncrypted)) 690 7 60 25 stretch OverlayHD.png Conditional !IsEmpty(ListItem.Property(IsHD)) 0 2 36 36 stretch DefaultVideoCover.png IsEmpty(ListItem.Property(IsRadio)) 0 2 36 36 stretch DefaultAlbumCover.png !IsEmpty(ListItem.Property(IsRadio)) 45 0 500 40 font14 left center grey2 selected ListItem.Label 1060 180 25 410 ScrollBarV.png ScrollBarV_bar.png ScrollBarV_bar_focus.png ScrollBarNib.png ScrollBarNib.png 2 10 true vertical Page Count Label 1040 600 500 20 font12 grey false right center Status Label 275 590 500 20 font14 yellow false left center BehindDialogFadeOut 60 0 WindowClose WindowOpen 0 0 250 35 header.png WindowTitleCommons 220 WindowTitleHomeButton Clock pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.estuary/000077500000000000000000000000001362540622500251375ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.estuary/xml/000077500000000000000000000000001362540622500257375ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/pvr.vdr.vnsi/resources/skins/skin.estuary/xml/Admin.xml000066400000000000000000000250721362540622500275170ustar00rootroot00000000000000 10 background no 36 DefaultBackground 110 0 OpenClose_Left Menu Panel -20 138 440 792 dialogs/dialog-bg.png button area 0 160 400 700 10 11 10 10 noop noop noop OpenClose_Right 420 138 1300 792 dialogs/dialog-bg.png Container(10).HasFocus(1) 472 172 1216 686 top center 690 - buttons/thumbnail_focused.png 480 180 1200 670 442 160 1256 610 Container(10).HasFocus(2) 10 1256 DefaultSettingButton 1256 DefaultSettingButton 1256 DefaultSettingButton Container(10).HasFocus(3) 33 Channels label 480 165 1000 60 font30_title left center white black 1550 180 40 40 FFCC0000 overlays/circle.png String.IsEqual(Window.Property(IsDirty),1) 1550 180 40 40 FF00FF00 overlays/circle.png !String.IsEqual(Window.Property(IsDirty),1) 442 230 520 610 10 36 Is Radio 520 DefaultSettingButton providers 520 DefaultSettingButton Select channels 520 DefaultSettingButton Select save 520 DefaultSettingButton 980 230 640 640 buttons/dialogbutton-nofo.png 1000 250 600 600 36 35 37 36 37 200 0 0 6000 40 lists/separator.png 40 0 6000 40 left ListItem.Label 2 2 36 36 stretch 7790EE90 overlays/arrowright.png ListItem.Property(IsWhitelist) 2 2 36 36 stretch 77FF0000 overlays/arrowright.png ListItem.Property(IsBlacklist) 0 0 600 40 lists/separator.png 0 0 600 40 lists/focus.png 40 0 600 40 left ListItem.Label 2 2 36 36 stretch 7790EE90 overlays/arrowright.png ListItem.Property(IsWhitelist) 2 2 36 36 stretch 77FF0000 overlays/arrowright.png ListItem.Property(IsBlacklist) 1620 250 13 600 36 false vertical BottomBar pvr.vdr.vnsi-3.6.4-Leia/src/000077500000000000000000000000001362540622500155475ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/src/VNSIAdmin.cpp000066400000000000000000001210721362540622500200060ustar00rootroot00000000000000/* * Copyright (C) 2005-2012 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #include "VNSIAdmin.h" #include "responsepacket.h" #include "requestpacket.h" #include "vnsicommand.h" #include #include #if defined(HAS_DX) #include "D3D9.h" #include "D3DX9.h" #elif defined(HAS_GL) || defined(HAS_GLES2) #include "shaders/GUIShader.h" #define BUFFER_OFFSET(i) ((char *)NULL + (i)) #endif // defined(HAS_GLES2) #if !defined(GL_UNPACK_ROW_LENGTH) #if defined(GL_UNPACK_ROW_LENGTH_EXT) #define GL_UNPACK_ROW_LENGTH GL_UNPACK_ROW_LENGTH_EXT #define GL_UNPACK_SKIP_ROWS GL_UNPACK_SKIP_ROWS_EXT #define GL_UNPACK_SKIP_PIXELS GL_UNPACK_SKIP_PIXELS_EXT #else #undef HAS_GLES2 #endif #endif #define CONTROL_RENDER_ADDON 9 #define CONTROL_MENU 10 #define CONTROL_OSD_BUTTON 13 #define CONTROL_SPIN_TIMESHIFT_MODE 21 #define CONTROL_SPIN_TIMESHIFT_BUFFER_RAM 22 #define CONTROL_SPIN_TIMESHIFT_BUFFER_FILE 23 #define CONTROL_LABEL_FILTERS 31 #define CONTROL_RADIO_ISRADIO 32 #define CONTROL_PROVIDERS_BUTTON 33 #define CONTROL_CHANNELS_BUTTON 34 #define CONTROL_FILTERSAVE_BUTTON 35 #define CONTROL_ITEM_LIST 36 #define ACTION_NONE 0 #define ACTION_MOVE_LEFT 1 #define ACTION_MOVE_RIGHT 2 #define ACTION_MOVE_UP 3 #define ACTION_MOVE_DOWN 4 #define ACTION_SELECT_ITEM 7 #define ACTION_PREVIOUS_MENU 10 #define ACTION_SHOW_INFO 11 #define REMOTE_0 58 // remote keys 0-9. are used by multiple windows #define REMOTE_1 59 // for example in videoFullScreen.xml window id=2005 you can #define REMOTE_2 60 // enter time (mmss) to jump to particular point in the movie #define REMOTE_3 61 #define REMOTE_4 62 // with spincontrols you can enter 3digit number to quickly set #define REMOTE_5 63 // spincontrol to desired value #define REMOTE_6 64 #define REMOTE_7 65 #define REMOTE_8 66 #define REMOTE_9 67 #define ACTION_NAV_BACK 92 #define ACTION_TELETEXT_RED 215 // Teletext Color buttons to control TopText #define ACTION_TELETEXT_GREEN 216 // " " " " " " #define ACTION_TELETEXT_YELLOW 217 // " " " " " " #define ACTION_TELETEXT_BLUE 218 // " " " " " " using namespace ADDON; using namespace P8PLATFORM; class cOSDTexture { public: cOSDTexture(int bpp, int x0, int y0, int x1, int y1); virtual ~cOSDTexture(); void SetPalette(int numColors, uint32_t *colors); void SetBlock(int x0, int y0, int x1, int y1, int stride, void *data, int len); void Clear(); void GetSize(int &width, int &height); void GetOrigin(int &x0, int &y0) { x0 = m_x0; y0 = m_y0;}; bool IsDirty(int &x0, int &y0, int &x1, int &y1); void *GetBuffer() {return (void*)m_buffer;}; protected: int m_x0, m_x1, m_y0, m_y1; int m_dirtyX0, m_dirtyX1, m_dirtyY0, m_dirtyY1; int m_bpp; int m_numColors; uint32_t m_palette[256]; uint8_t *m_buffer; bool m_dirty; }; cOSDTexture::cOSDTexture(int bpp, int x0, int y0, int x1, int y1) { m_bpp = bpp; m_x0 = x0; m_x1 = x1; m_y0 = y0; m_y1 = y1; m_buffer = new uint8_t[(x1-x0+1)*(y1-y0+1)*sizeof(uint32_t)]; memset(m_buffer,0, (x1-x0+1)*(y1-y0+1)*sizeof(uint32_t)); m_dirtyX0 = m_dirtyY0 = 0; m_dirtyX1 = x1 - x0; m_dirtyY1 = y1 - y0; m_dirty = false; } cOSDTexture::~cOSDTexture() { delete [] m_buffer; } void cOSDTexture::Clear() { memset(m_buffer,0, (m_x1-m_x0+1)*(m_y1-m_y0+1)*sizeof(uint32_t)); m_dirtyX0 = m_dirtyY0 = 0; m_dirtyX1 = m_x1 - m_x0; m_dirtyY1 = m_y1 - m_y0; m_dirty = false; } void cOSDTexture::SetBlock(int x0, int y0, int x1, int y1, int stride, void *data, int len) { int line = y0; int col; int color; int width = m_x1 - m_x0 + 1; uint8_t *dataPtr = (uint8_t*)data; int pos = 0; uint32_t *buffer = (uint32_t*)m_buffer; while (line <= y1) { int lastPos = pos; col = x0; int offset = line*width; while (col <= x1) { if (pos >= len) { XBMC->Log(LOG_ERROR, "cOSDTexture::SetBlock: reached unexpected end of buffer"); return; } color = dataPtr[pos]; if (m_bpp == 8) { buffer[offset+col] = m_palette[color]; } else if (m_bpp == 4) { buffer[offset+col] = m_palette[color & 0x0F]; } else if (m_bpp == 2) { buffer[offset+col] = m_palette[color & 0x03]; } else if (m_bpp == 1) { buffer[offset+col] = m_palette[color & 0x01]; } pos++; col++; } line++; pos = lastPos + stride; } if (x0 < m_dirtyX0) m_dirtyX0 = x0; if (x1 > m_dirtyX1) m_dirtyX1 = x1; if (y0 < m_dirtyY0) m_dirtyY0 = y0; if (y1 > m_dirtyY1) m_dirtyY1 = y1; m_dirty = true; } void cOSDTexture::SetPalette(int numColors, uint32_t *colors) { m_numColors = numColors; for (int i=0; i> 16) | ((colors[i] & 0x0000FF00)) | ((colors[i] & 0x000000FF) << 16); } } void cOSDTexture::GetSize(int &width, int &height) { width = m_x1 - m_x0 + 1; height = m_y1 - m_y0 + 1; } bool cOSDTexture::IsDirty(int &x0, int &y0, int &x1, int &y1) { bool ret = m_dirty; x0 = m_dirtyX0; x1 = m_dirtyX1; y0 = m_dirtyY0; y1 = m_dirtyY1; m_dirty = false; return ret; } //----------------------------------------------------------------------------- #define MAX_TEXTURES 16 class cOSDRender { public: cOSDRender(); virtual ~cOSDRender(); void SetOSDSize(int width, int height) {m_osdWidth = width; m_osdHeight = height;}; void SetControlSize(int width, int height) {m_controlWidth = width; m_controlHeight = height;}; void AddTexture(int wndId, int bpp, int x0, int y0, int x1, int y1, int reset); void SetPalette(int wndId, int numColors, uint32_t *colors); void SetBlock(int wndId, int x0, int y0, int x1, int y1, int stride, void *data, int len); void Clear(int wndId); virtual void DisposeTexture(int wndId); virtual void FreeResources(); virtual void Render() {}; virtual void SetDevice(void *device) {}; virtual bool Init() { return true; }; protected: cOSDTexture *m_osdTextures[MAX_TEXTURES]; std::queue m_disposedTextures; int m_osdWidth, m_osdHeight; int m_controlWidth, m_controlHeight; }; cOSDRender::cOSDRender() { for (int i = 0; i < MAX_TEXTURES; i++) m_osdTextures[i] = 0; } cOSDRender::~cOSDRender() { for (int i = 0; i < MAX_TEXTURES; i++) { DisposeTexture(i); } FreeResources(); } void cOSDRender::DisposeTexture(int wndId) { if (m_osdTextures[wndId]) { m_disposedTextures.push(m_osdTextures[wndId]); m_osdTextures[wndId] = 0; } } void cOSDRender::FreeResources() { while (!m_disposedTextures.empty()) { delete m_disposedTextures.front(); m_disposedTextures.pop(); } } void cOSDRender::AddTexture(int wndId, int bpp, int x0, int y0, int x1, int y1, int reset) { if (reset) DisposeTexture(wndId); if (!m_osdTextures[wndId]) m_osdTextures[wndId] = new cOSDTexture(bpp, x0, y0, x1, y1); } void cOSDRender::Clear(int wndId) { if (m_osdTextures[wndId]) m_osdTextures[wndId]->Clear(); } void cOSDRender::SetPalette(int wndId, int numColors, uint32_t *colors) { if (m_osdTextures[wndId]) m_osdTextures[wndId]->SetPalette(numColors, colors); } void cOSDRender::SetBlock(int wndId, int x0, int y0, int x1, int y1, int stride, void *data, int len) { if (m_osdTextures[wndId]) m_osdTextures[wndId]->SetBlock(x0, y0, x1, y1, stride, data, len); } #if defined(HAS_GL) || defined(HAS_GLES2) class ATTRIBUTE_HIDDEN cOSDRenderGL : public cOSDRender { public: cOSDRenderGL(); virtual ~cOSDRenderGL(); void DisposeTexture(int wndId) override; void FreeResources() override; void Render() override; bool Init() override; protected: GLuint m_hwTextures[MAX_TEXTURES]; std::queue m_disposedHwTextures; CGUIShader *m_shader = nullptr; }; cOSDRenderGL::cOSDRenderGL() { for (int i = 0; i < MAX_TEXTURES; i++) m_hwTextures[i] = 0; } cOSDRenderGL::~cOSDRenderGL() { for (int i = 0; i < MAX_TEXTURES; i++) { DisposeTexture(i); } FreeResources(); delete m_shader; m_shader = nullptr; } bool cOSDRenderGL::Init() { m_shader = new CGUIShader("vert.glsl", "frag.glsl"); if(!m_shader->CompileAndLink()) { delete m_shader; m_shader = nullptr; return false; } return true; } void cOSDRenderGL::DisposeTexture(int wndId) { if (m_hwTextures[wndId]) { m_disposedHwTextures.push(m_hwTextures[wndId]); m_hwTextures[wndId] = 0; } cOSDRender::DisposeTexture(wndId); } void cOSDRenderGL::FreeResources() { while (!m_disposedHwTextures.empty()) { if (glIsTexture(m_disposedHwTextures.front())) { glFinish(); glDeleteTextures(1, &m_disposedHwTextures.front()); m_disposedHwTextures.pop(); } } cOSDRender::FreeResources(); } void cOSDRenderGL::Render() { m_shader->MatrixMode(MM_MODELVIEW); m_shader->LoadIdentity(); m_shader->MatrixMode(MM_PROJECTION); m_shader->LoadIdentity(); glDisable(GL_BLEND); //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); for (int i = 0; i < MAX_TEXTURES; i++) { int width, height, offsetX, offsetY; int x0,x1,y0,y1; bool dirty; if (m_osdTextures[i] == 0) continue; m_osdTextures[i]->GetSize(width, height); m_osdTextures[i]->GetOrigin(offsetX, offsetY); dirty = m_osdTextures[i]->IsDirty(x0,y0,x1,y1); // create gl texture if (dirty && !glIsTexture(m_hwTextures[i])) { glGenTextures(1, &m_hwTextures[i]); glBindTexture(GL_TEXTURE_2D, m_hwTextures[i]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_ROW_LENGTH, width); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, m_osdTextures[i]->GetBuffer()); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); } // update texture else if (dirty) { glBindTexture(GL_TEXTURE_2D, m_hwTextures[i]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_ROW_LENGTH, width); glPixelStorei(GL_UNPACK_SKIP_PIXELS, x0); glPixelStorei(GL_UNPACK_SKIP_ROWS, y0); glTexSubImage2D(GL_TEXTURE_2D, 0, x0, y0, x1-x0+1, y1-y0+1, GL_RGBA, GL_UNSIGNED_BYTE, m_osdTextures[i]->GetBuffer()); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); } // render texture // calculate ndc for OSD texture float destX0 = (float)offsetX*2/m_osdWidth -1; float destX1 = (float)(offsetX+width)*2/m_osdWidth -1; float destY0 = (float)offsetY*2/m_osdHeight -1; float destY1 = (float)(offsetY+height)*2/m_osdHeight -1; float aspectControl = (float)m_controlWidth/m_controlHeight; float aspectOSD = (float)m_osdWidth/m_osdHeight; if (aspectOSD > aspectControl) { destY0 *= aspectControl/aspectOSD; destY1 *= aspectControl/aspectOSD; } else if (aspectOSD < aspectControl) { destX0 *= aspectOSD/aspectControl; destX1 *= aspectOSD/aspectControl; } // y inveted destY0 *= -1; destY1 *= -1; glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, m_hwTextures[i]); #if defined(HAS_GL) GLubyte idx[4] = {0, 1, 3, 2}; GLuint vertexVBO; GLuint indexVBO; struct PackedVertex { float x, y, z; float u1, v1; }vertex[4]; m_shader->Enable(); GLint posLoc = m_shader->GetPosLoc(); GLint texLoc = m_shader->GetCordLoc(); vertex[0].x = destX0; vertex[0].y = destY0; vertex[0].z = 0.0f; vertex[0].u1 = 0.0f; vertex[0].v1 = 0.0f; vertex[1].x = destX1; vertex[1].y = destY0; vertex[1].z = 0.0f; vertex[1].u1 = 1.0f; vertex[1].v1 = 0.0f; vertex[2].x = destX1; vertex[2].y = destY1; vertex[2].z = 0.0f; vertex[2].u1 = 1.0f; vertex[2].v1 = 1.0f; vertex[3].x = destX0; vertex[3].y = destY1; vertex[3].z = 0.0f; vertex[3].u1 = 0.0f; vertex[3].v1 = 1.0f; glGenBuffers(1, &vertexVBO); glBindBuffer(GL_ARRAY_BUFFER, vertexVBO); glBufferData(GL_ARRAY_BUFFER, sizeof(PackedVertex)*4, &vertex[0], GL_STATIC_DRAW); glVertexAttribPointer(posLoc, 3, GL_FLOAT, 0, sizeof(PackedVertex), BUFFER_OFFSET(offsetof(PackedVertex, x))); glEnableVertexAttribArray(posLoc); glVertexAttribPointer(texLoc, 2, GL_FLOAT, 0, sizeof(PackedVertex), BUFFER_OFFSET(offsetof(PackedVertex, u1))); glEnableVertexAttribArray(texLoc); glGenBuffers(1, &indexVBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexVBO); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLubyte)*4, idx, GL_STATIC_DRAW); glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_BYTE, 0); glDisableVertexAttribArray(posLoc); glDisableVertexAttribArray(texLoc); glBindBuffer(GL_ARRAY_BUFFER, 0); glDeleteBuffers(1, &vertexVBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); glDeleteBuffers(1, &indexVBO); m_shader->Disable(); #elif defined(HAS_GLES2) GLubyte idx[4] = {0, 1, 3, 2}; //determines order of triangle strip GLfloat ver[4][4]; GLfloat tex[4][2]; m_shader->Enable(); GLint posLoc = m_shader->GetPosLoc(); GLint texLoc = m_shader->GetCordLoc(); glVertexAttribPointer(posLoc, 4, GL_FLOAT, 0, 0, ver); glVertexAttribPointer(texLoc, 2, GL_FLOAT, 0, 0, tex); glEnableVertexAttribArray(posLoc); glEnableVertexAttribArray(texLoc); // Set vertex coordinates for(int i = 0; i < 4; i++) { ver[i][2] = 0.0f;// set z to 0 ver[i][3] = 1.0f; } ver[0][0] = ver[3][0] = destX0; ver[0][1] = ver[1][1] = destY0; ver[1][0] = ver[2][0] = destX1; ver[2][1] = ver[3][1] = destY1; // Set texture coordinates tex[0][0] = tex[3][0] = 0; tex[0][1] = tex[1][1] = 0; tex[1][0] = tex[2][0] = 1; tex[2][1] = tex[3][1] = 1; glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_BYTE, idx); glDisableVertexAttribArray(posLoc); glDisableVertexAttribArray(texLoc); m_shader->Disable(); #endif glBindTexture(GL_TEXTURE_2D, 0); } glBindTexture(GL_TEXTURE_2D, 0); } #endif #if defined(HAS_DX) class cOSDRenderDX : public cOSDRender { public: cOSDRenderDX(); virtual ~cOSDRenderDX(); void DisposeTexture(int wndId) override; void FreeResources() override; void Render() override; void SetDevice(void *device) override { m_device = (LPDIRECT3DDEVICE9)device; }; protected: LPDIRECT3DDEVICE9 m_device; LPDIRECT3DTEXTURE9 m_hwTextures[MAX_TEXTURES]; std::queue m_disposedHwTextures; }; cOSDRenderDX::cOSDRenderDX() { for (int i = 0; i < MAX_TEXTURES; i++) m_hwTextures[i] = 0; } cOSDRenderDX::~cOSDRenderDX() { for (int i = 0; i < MAX_TEXTURES; i++) { DisposeTexture(i); } FreeResources(); } void cOSDRenderDX::DisposeTexture(int wndId) { if (m_hwTextures[wndId]) { m_disposedHwTextures.push(m_hwTextures[wndId]); m_hwTextures[wndId] = 0; } cOSDRender::DisposeTexture(wndId); } void cOSDRenderDX::FreeResources() { while (!m_disposedHwTextures.empty()) { if (m_disposedHwTextures.front()) { m_disposedHwTextures.front()->Release(); m_disposedHwTextures.pop(); } } cOSDRender::FreeResources(); } void cOSDRenderDX::Render() { m_device->Clear(0, NULL, D3DCLEAR_ZBUFFER, D3DXCOLOR(0.0f, 0.0f, 0.0f, 0.0f), 1.0f, 0); D3DXMATRIX matProjection; D3DXMatrixIdentity(&matProjection); m_device->SetTransform(D3DTS_PROJECTION, &matProjection); D3DXMATRIX matView; D3DXMatrixIdentity(&matView); m_device->SetTransform(D3DTS_VIEW, &matView); D3DXMATRIX matWorld; D3DXMatrixIdentity(&matWorld); m_device->SetTransform(D3DTS_WORLD, &matWorld); for (int i = 0; i < MAX_TEXTURES; i++) { int width, height, offsetX, offsetY; int x0,x1,y0,y1; bool dirty; if (m_osdTextures[i] == 0) continue; m_osdTextures[i]->GetSize(width, height); m_osdTextures[i]->GetOrigin(offsetX, offsetY); dirty = m_osdTextures[i]->IsDirty(x0,y0,x1,y1); // create texture if (dirty && !m_hwTextures[i]) { HRESULT hr = m_device->CreateTexture(width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &m_hwTextures[i], NULL); if (hr != D3D_OK) { XBMC->Log(LOG_ERROR,"%s - failed to create texture", __FUNCTION__); continue; } } // update texture if (dirty) { D3DLOCKED_RECT lockedRect; RECT dirtyRect; dirtyRect.bottom = y1; dirtyRect.left = x0; dirtyRect.top = y0; dirtyRect.right = x1; HRESULT hr = m_hwTextures[i]->LockRect(0, &lockedRect, &dirtyRect, 0); if (hr != D3D_OK) { XBMC->Log(LOG_ERROR,"%s - failed to lock texture", __FUNCTION__); continue; } uint8_t *source = (uint8_t*)m_osdTextures[i]->GetBuffer(); uint8_t *dest = (uint8_t*)lockedRect.pBits; for(int y=y0; y<=y1; y++) { for(int x=x0; x<=x1; x++) { dest[y*lockedRect.Pitch+x*4] = source[y*width*4+x*4+2]; // blue dest[y*lockedRect.Pitch+x*4+1] = source[y*width*4+x*4+1]; // green dest[y*lockedRect.Pitch+x*4+2] = source[y*width*4+x*4]; // red dest[y*lockedRect.Pitch+x*4+3] = source[y*width*4+x*4+3]; // alpha } } m_hwTextures[i]->UnlockRect(0); if (hr != D3D_OK) { XBMC->Log(LOG_ERROR,"%s - failed to unlock texture", __FUNCTION__); continue; } } // render texture // calculate ndc for OSD texture float destX0 = (float)offsetX*2/m_osdWidth -1; float destX1 = (float)(offsetX+width)*2/m_osdWidth -1; float destY0 = (float)offsetY*2/m_osdHeight -1; float destY1 = (float)(offsetY+height)*2/m_osdHeight -1; float aspectControl = (float)m_controlWidth/m_controlHeight; float aspectOSD = (float)m_osdWidth/m_osdHeight; if (aspectOSD > aspectControl) { destY0 *= aspectControl/aspectOSD; destY1 *= aspectControl/aspectOSD; } else if (aspectOSD < aspectControl) { destX0 *= aspectOSD/aspectControl; destX1 *= aspectOSD/aspectControl; } // y inveted destY0 *= -1; destY1 *= -1; struct VERTEX { FLOAT x,y,z; DWORD color; FLOAT tu, tv; }; VERTEX vertex[] = { { destX0, destY0, 0.0f, 0xffffffff, 0.0f, 0.0f }, { destX0, destY1, 0.0f, 0xffffffff, 0.0f, 1.0f }, { destX1, destY1, 0.0f, 0xffffffff, 1.0f, 1.0f }, { destX1, destY0, 0.0f, 0xffffffff, 1.0f, 0.0f }, }; m_device->SetTexture(0, m_hwTextures[i]); HRESULT hr; hr = m_device->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); hr = m_device->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE ); hr = m_device->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 ); hr = m_device->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); hr = m_device->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_DISABLE ); hr = m_device->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE ); hr = m_device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); hr = m_device->SetRenderState(D3DRS_LIGHTING, FALSE); hr = m_device->SetRenderState(D3DRS_ZENABLE, FALSE); hr = m_device->SetRenderState(D3DRS_STENCILENABLE, FALSE); hr = m_device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); hr = m_device->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE); hr = m_device->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE); hr = m_device->SetRenderState(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_ALPHA|D3DCOLORWRITEENABLE_BLUE|D3DCOLORWRITEENABLE_GREEN|D3DCOLORWRITEENABLE_RED); hr = m_device->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP); hr = m_device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); hr = m_device->SetPixelShader(NULL); hr = m_device->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1); hr = m_device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, vertex, sizeof(VERTEX)); if (hr != D3D_OK) { XBMC->Log(LOG_ERROR,"%s - failed to render texture", __FUNCTION__); } m_device->SetTexture(0, NULL); } } #endif //----------------------------------------------------------------------------- cVNSIAdmin::cVNSIAdmin() { } cVNSIAdmin::~cVNSIAdmin() { } bool cVNSIAdmin::Open(const std::string& hostname, int port, const char* name) { if(!cVNSIData::Open(hostname, port, name)) return false; if(!cVNSIData::Login()) return false; m_bIsOsdControl = false; #if defined(HAS_GL) || defined(HAS_GLES2) m_osdRender = new cOSDRenderGL(); #elif defined(HAS_DX) m_osdRender = new cOSDRenderDX(); #else m_osdRender = new cOSDRender(); #endif if(!m_osdRender->Init()) { delete m_osdRender; m_osdRender = NULL; return false; } m_abort = false; m_connectionLost = false; CreateThread(); if (!ConnectOSD()) return false; // Load the Window as Dialog m_window = GUI->Window_create("Admin.xml", "skin.estuary", false, true); m_window->m_cbhdl = this; m_window->CBOnInit = OnInitCB; m_window->CBOnFocus = OnFocusCB; m_window->CBOnClick = OnClickCB; m_window->CBOnAction= OnActionCB; m_window->DoModal(); ClearListItems(); m_window->ClearProperties(); GUI->Control_releaseRendering(m_renderControl); GUI->Control_releaseSpin(m_spinTimeshiftMode); GUI->Control_releaseSpin(m_spinTimeshiftBufferRam); GUI->Control_releaseSpin(m_spinTimeshiftBufferFile); GUI->Control_releaseRadioButton(m_ratioIsRadio); GUI->Window_destroy(m_window); StopThread(); Close(); if (m_osdRender) { delete m_osdRender; m_osdRender = NULL; } return true; } bool cVNSIAdmin::OnClick(int controlId) { if (controlId == CONTROL_SPIN_TIMESHIFT_MODE) { int value = m_spinTimeshiftMode->GetValue(); cRequestPacket vrp; vrp.init(VNSI_STORESETUP); vrp.add_String(CONFNAME_TIMESHIFT); vrp.add_U32(value); if (!ReadSuccess(&vrp)) { XBMC->Log(LOG_ERROR, "%s - failed to set timeshift mode", __FUNCTION__); } return true; } else if (controlId == CONTROL_SPIN_TIMESHIFT_BUFFER_RAM) { int value = m_spinTimeshiftBufferRam->GetValue(); cRequestPacket vrp; vrp.init(VNSI_STORESETUP); vrp.add_String(CONFNAME_TIMESHIFTBUFFERSIZE); vrp.add_U32(value); if (!ReadSuccess(&vrp)) { XBMC->Log(LOG_ERROR, "%s - failed to set timeshift buffer", __FUNCTION__); } return true; } else if (controlId == CONTROL_SPIN_TIMESHIFT_BUFFER_FILE) { int value = m_spinTimeshiftBufferFile->GetValue(); cRequestPacket vrp; vrp.init(VNSI_STORESETUP); vrp.add_String(CONFNAME_TIMESHIFTBUFFERFILESIZE); vrp.add_U32(value); if (!ReadSuccess(&vrp)) { XBMC->Log(LOG_ERROR, "%s - failed to set timeshift buffer file", __FUNCTION__); } return true; } else if (controlId == CONTROL_PROVIDERS_BUTTON) { if(!m_channels.m_loaded || m_ratioIsRadio->IsSelected() != m_channels.m_radio) { ReadChannelList(m_ratioIsRadio->IsSelected()); ReadChannelWhitelist(m_ratioIsRadio->IsSelected()); ReadChannelBlacklist(m_ratioIsRadio->IsSelected()); m_channels.CreateProviders(); m_channels.LoadProviderWhitelist(); m_channels.LoadChannelBlacklist(); m_channels.m_loaded = true; m_channels.m_radio = m_ratioIsRadio->IsSelected(); m_window->SetProperty("IsDirty", "0"); } LoadListItemsProviders(); m_channels.m_mode = CVNSIChannels::PROVIDER; } else if (controlId == CONTROL_CHANNELS_BUTTON) { if(!m_channels.m_loaded || m_ratioIsRadio->IsSelected() != m_channels.m_radio) { ReadChannelList(m_ratioIsRadio->IsSelected()); ReadChannelWhitelist(m_ratioIsRadio->IsSelected()); ReadChannelBlacklist(m_ratioIsRadio->IsSelected()); m_channels.CreateProviders(); m_channels.LoadProviderWhitelist(); m_channels.LoadChannelBlacklist(); m_channels.m_loaded = true; m_channels.m_radio = m_ratioIsRadio->IsSelected(); m_window->SetProperty("IsDirty", "0"); } LoadListItemsChannels(); m_channels.m_mode = CVNSIChannels::CHANNEL; } else if (controlId == CONTROL_FILTERSAVE_BUTTON) { if(m_channels.m_loaded) { SaveChannelWhitelist(m_ratioIsRadio->IsSelected()); SaveChannelBlacklist(m_ratioIsRadio->IsSelected()); m_window->SetProperty("IsDirty", "0"); } } else if (controlId == CONTROL_ITEM_LIST) { if(m_channels.m_mode == CVNSIChannels::PROVIDER) { int pos = m_window->GetCurrentListPosition(); GUIHANDLE hdl = m_window->GetListItem(pos); int idx = m_listItemsMap[hdl]; CAddonListItem *item = m_listItems[idx]; if (m_channels.m_providers[idx].m_whitelist) { item->SetProperty("IsWhitelist", "false"); m_channels.m_providers[idx].m_whitelist = false; } else { item->SetProperty("IsWhitelist", "true"); m_channels.m_providers[idx].m_whitelist = true; } m_window->SetProperty("IsDirty", "1"); } else if(m_channels.m_mode == CVNSIChannels::CHANNEL) { int pos = m_window->GetCurrentListPosition(); GUIHANDLE hdl = m_window->GetListItem(pos); int idx = m_listItemsMap[hdl]; CAddonListItem *item = m_listItems[idx]; int channelidx = m_listItemsChannelsMap[hdl]; if (m_channels.m_channels[channelidx].m_blacklist) { item->SetProperty("IsBlacklist", "false"); m_channels.m_channels[channelidx].m_blacklist = false; } else { item->SetProperty("IsBlacklist", "true"); m_channels.m_channels[channelidx].m_blacklist = true; } m_window->SetProperty("IsDirty", "1"); } } return false; } bool cVNSIAdmin::OnFocus(int controlId) { if (controlId == CONTROL_OSD_BUTTON) { m_window->SetControlLabel(CONTROL_OSD_BUTTON, XBMC->GetLocalizedString(30102)); m_window->MarkDirtyRegion(); m_bIsOsdControl = true; return true; } else if (m_bIsOsdControl) { m_window->SetControlLabel(CONTROL_OSD_BUTTON, XBMC->GetLocalizedString(30103)); m_window->MarkDirtyRegion(); m_bIsOsdControl = false; return true; } return false; } bool cVNSIAdmin::OnInit() { m_renderControl = GUI->Control_getRendering(m_window, CONTROL_RENDER_ADDON); m_renderControl->m_cbhdl = this; m_renderControl->CBCreate = CreateCB; m_renderControl->CBRender = RenderCB; m_renderControl->CBStop = StopCB; m_renderControl->CBDirty = DirtyCB; m_renderControl->Init(); cRequestPacket vrp; vrp.init(VNSI_OSD_HITKEY); vrp.add_U32(0); cVNSISession::TransmitMessage(&vrp); // setup parameters m_spinTimeshiftMode = GUI->Control_getSpin(m_window, CONTROL_SPIN_TIMESHIFT_MODE); m_spinTimeshiftMode->Clear(); m_spinTimeshiftMode->AddLabel("OFF", 0); m_spinTimeshiftMode->AddLabel("RAM", 1); m_spinTimeshiftMode->AddLabel("FILE", 2); { cRequestPacket vrp; vrp.init(VNSI_GETSETUP); vrp.add_String(CONFNAME_TIMESHIFT); auto resp = ReadResult(&vrp); if (!resp) { XBMC->Log(LOG_ERROR, "%s - failed to get timeshift mode", __FUNCTION__); return false; } int mode = resp->extract_U32(); m_spinTimeshiftMode->SetValue(mode); } m_spinTimeshiftBufferRam = GUI->Control_getSpin(m_window, CONTROL_SPIN_TIMESHIFT_BUFFER_RAM); m_spinTimeshiftBufferRam->Clear(); char buffer[8]; for (int i = 1; i <= 80; i++) { sprintf(buffer, "%d", i); m_spinTimeshiftBufferRam->AddLabel(buffer, i); } { cRequestPacket vrp; vrp.init(VNSI_GETSETUP); vrp.add_String(CONFNAME_TIMESHIFTBUFFERSIZE); auto resp = ReadResult(&vrp); if (!resp) { XBMC->Log(LOG_ERROR, "%s - failed to get timeshift buffer size", __FUNCTION__); return false; } int mode = resp->extract_U32(); m_spinTimeshiftBufferRam->SetValue(mode); } m_spinTimeshiftBufferFile = GUI->Control_getSpin(m_window, CONTROL_SPIN_TIMESHIFT_BUFFER_FILE); m_spinTimeshiftBufferFile->Clear(); for (int i = 1; i <= 20; i++) { sprintf(buffer, "%d", i); m_spinTimeshiftBufferFile->AddLabel(buffer, i); } { cRequestPacket vrp; vrp.init(VNSI_GETSETUP); vrp.add_String(CONFNAME_TIMESHIFTBUFFERFILESIZE); auto resp = ReadResult(&vrp); if (!resp) { XBMC->Log(LOG_ERROR, "%s - failed to get timeshift buffer (file) size", __FUNCTION__); return false; } int mode = resp->extract_U32(); m_spinTimeshiftBufferFile->SetValue(mode); } // channel filters m_ratioIsRadio = GUI->Control_getRadioButton(m_window, CONTROL_RADIO_ISRADIO); return true; } bool cVNSIAdmin::OnAction(int actionId) { if (m_window->GetFocusId() != CONTROL_OSD_BUTTON && m_bIsOsdControl) { m_bIsOsdControl = false; m_window->SetControlLabel(CONTROL_OSD_BUTTON, XBMC->GetLocalizedString(30103)); m_window->MarkDirtyRegion(); } else if (m_window->GetFocusId() == CONTROL_OSD_BUTTON) { if (actionId == ACTION_SHOW_INFO) { m_window->SetFocusId(CONTROL_MENU); return true; } else if(IsVdrAction(actionId)) { // send all actions to vdr cRequestPacket vrp; vrp.init(VNSI_OSD_HITKEY); vrp.add_U32(actionId); cVNSISession::TransmitMessage(&vrp); return true; } } if (actionId == ADDON_ACTION_CLOSE_DIALOG || actionId == ADDON_ACTION_PREVIOUS_MENU || actionId == ACTION_NAV_BACK) { m_window->Close(); return true; } return false; } bool cVNSIAdmin::IsVdrAction(int action) { if (action == ACTION_MOVE_LEFT || action == ACTION_MOVE_RIGHT || action == ACTION_MOVE_UP || action == ACTION_MOVE_DOWN || action == ACTION_SELECT_ITEM || action == ACTION_PREVIOUS_MENU || action == REMOTE_0 || action == REMOTE_1 || action == REMOTE_2 || action == REMOTE_3 || action == REMOTE_4 || action == REMOTE_5 || action == REMOTE_6 || action == REMOTE_7 || action == REMOTE_8 || action == REMOTE_9 || action == ACTION_NAV_BACK || action == ACTION_TELETEXT_RED || action == ACTION_TELETEXT_GREEN || action == ACTION_TELETEXT_YELLOW || action == ACTION_TELETEXT_BLUE) return true; else return false; } bool cVNSIAdmin::Create(int x, int y, int w, int h, void* device) { if (m_osdRender) { m_osdRender->SetControlSize(w,h); m_osdRender->SetDevice(device); } return true; } void cVNSIAdmin::Render() { const CLockObject lock(m_osdMutex); if (m_osdRender) { m_osdRender->Render(); m_osdRender->FreeResources(); } m_bIsOsdDirty = false; } void cVNSIAdmin::Stop() { const CLockObject lock(m_osdMutex); if (m_osdRender) { delete m_osdRender; m_osdRender = NULL; } } bool cVNSIAdmin::Dirty() { return m_bIsOsdDirty; } bool cVNSIAdmin::OnInitCB(GUIHANDLE cbhdl) { cVNSIAdmin* osd = static_cast(cbhdl); try { return osd->OnInit(); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return false; } } bool cVNSIAdmin::OnClickCB(GUIHANDLE cbhdl, int controlId) { cVNSIAdmin* osd = static_cast(cbhdl); try { return osd->OnClick(controlId); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return false; } } bool cVNSIAdmin::OnFocusCB(GUIHANDLE cbhdl, int controlId) { cVNSIAdmin* osd = static_cast(cbhdl); return osd->OnFocus(controlId); } bool cVNSIAdmin::OnActionCB(GUIHANDLE cbhdl, int actionId) { cVNSIAdmin* osd = static_cast(cbhdl); try { return osd->OnAction(actionId); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return false; } } bool cVNSIAdmin::CreateCB(GUIHANDLE cbhdl, int x, int y, int w, int h, void *device) { cVNSIAdmin* osd = static_cast(cbhdl); return osd->Create(x, y, w, h, device); } void cVNSIAdmin::RenderCB(GUIHANDLE cbhdl) { cVNSIAdmin* osd = static_cast(cbhdl); osd->Render(); } void cVNSIAdmin::StopCB(GUIHANDLE cbhdl) { cVNSIAdmin* osd = static_cast(cbhdl); osd->Stop(); } bool cVNSIAdmin::DirtyCB(GUIHANDLE cbhdl) { cVNSIAdmin* osd = static_cast(cbhdl); return osd->Dirty(); } bool cVNSIAdmin::OnResponsePacket(cResponsePacket* resp) { if (resp->getChannelID() == VNSI_CHANNEL_OSD) { uint32_t wnd, color, x0, y0, x1, y1, len; uint8_t *data; resp->getOSDData(wnd, color, x0, y0, x1, y1); if (wnd >= MAX_TEXTURES) { XBMC->Log(LOG_ERROR, "cVNSIAdmin::OnResponsePacket - invalid wndId: %s", wnd); return true; } if (resp->getOpCodeID() == VNSI_OSD_OPEN) { data = resp->getUserData(); len = resp->getUserDataLength(); const CLockObject lock(m_osdMutex); if (m_osdRender) m_osdRender->AddTexture(wnd, color, x0, y0, x1, y1, data[0]); } else if (resp->getOpCodeID() == VNSI_OSD_SETPALETTE) { data = resp->getUserData(); len = resp->getUserDataLength(); const CLockObject lock(m_osdMutex); if (m_osdRender) m_osdRender->SetPalette(wnd, x0, (uint32_t*)data); } else if (resp->getOpCodeID() == VNSI_OSD_SETBLOCK) { data = resp->getUserData(); len = resp->getUserDataLength(); const CLockObject lock(m_osdMutex); if (m_osdRender) { m_osdRender->SetBlock(wnd, x0, y0, x1, y1, color, data, len); m_bIsOsdDirty = true; } } else if (resp->getOpCodeID() == VNSI_OSD_CLEAR) { const CLockObject lock(m_osdMutex); if (m_osdRender) m_osdRender->Clear(wnd); m_bIsOsdDirty = true; } else if (resp->getOpCodeID() == VNSI_OSD_CLOSE) { { const CLockObject lock(m_osdMutex); if (m_osdRender) m_osdRender->DisposeTexture(wnd); m_bIsOsdDirty = true; } } else if (resp->getOpCodeID() == VNSI_OSD_MOVEWINDOW) { } else return false; } else return false; return true; } bool cVNSIAdmin::ConnectOSD() { cRequestPacket vrp; vrp.init(VNSI_OSD_CONNECT); auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { return false; } uint32_t osdWidth = vresp->extract_U32(); uint32_t osdHeight = vresp->extract_U32(); if (m_osdRender) m_osdRender->SetOSDSize(osdWidth, osdHeight); return true; } bool cVNSIAdmin::ReadChannelList(bool radio) { cRequestPacket vrp; vrp.init(VNSI_CHANNELS_GETCHANNELS); vrp.add_U32(radio); vrp.add_U8(0); // apply no filter auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } m_channels.m_channels.clear(); m_channels.m_channelsMap.clear(); while (vresp->getRemainingLength() >= 3 * 4 + 3) { CChannel channel; channel.m_blacklist = false; channel.m_number = vresp->extract_U32(); char *strChannelName = vresp->extract_String(); channel.m_name = strChannelName; char *strProviderName = vresp->extract_String(); channel.m_provider = strProviderName; channel.m_id = vresp->extract_U32(); vresp->extract_U32(); // first caid char *strCaids = vresp->extract_String(); channel.SetCaids(strCaids); if (m_protocol >= 6) { std::string ref = vresp->extract_String(); } channel.m_radio = radio; m_channels.m_channels.push_back(channel); m_channels.m_channelsMap[channel.m_id] = m_channels.m_channels.size() - 1; } return true; } bool cVNSIAdmin::ReadChannelWhitelist(bool radio) { cRequestPacket vrp; vrp.init(VNSI_CHANNELS_GETWHITELIST); vrp.add_U8(radio); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } m_channels.m_providerWhitelist.clear(); CProvider provider; while (vresp->getRemainingLength() >= 1 + 4) { char *strProviderName = vresp->extract_String(); provider.m_name = strProviderName; provider.m_caid = vresp->extract_U32(); m_channels.m_providerWhitelist.push_back(provider); } return true; } bool cVNSIAdmin::SaveChannelWhitelist(bool radio) { m_channels.ExtractProviderWhitelist(); cRequestPacket vrp; vrp.init(VNSI_CHANNELS_SETWHITELIST); vrp.add_U8(radio); for (const auto &provider : m_channels.m_providerWhitelist) { vrp.add_String(provider.m_name.c_str()); vrp.add_S32(provider.m_caid); } auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } return true; } bool cVNSIAdmin::ReadChannelBlacklist(bool radio) { cRequestPacket vrp; vrp.init(VNSI_CHANNELS_GETBLACKLIST); vrp.add_U8(radio); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } m_channels.m_channelBlacklist.clear(); while (vresp->getRemainingLength() >= 4) { int id = vresp->extract_U32(); m_channels.m_channelBlacklist.push_back(id); } return true; } bool cVNSIAdmin::SaveChannelBlacklist(bool radio) { m_channels.ExtractChannelBlacklist(); cRequestPacket vrp; vrp.init(VNSI_CHANNELS_SETBLACKLIST); vrp.add_U8(radio); for (auto b : m_channels.m_channelBlacklist) { vrp.add_S32(b); } auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } return true; } void cVNSIAdmin::ClearListItems() { m_window->ClearList(); for (auto *i : m_listItems) { GUI->ListItem_destroy(i); } m_listItems.clear(); m_listItemsMap.clear(); m_listItemsChannelsMap.clear(); } void cVNSIAdmin::LoadListItemsProviders() { ClearListItems(); int count = 0; for (const auto &provider : m_channels.m_providers) { std::string tmp; if(!provider.m_name.empty()) tmp = provider.m_name; else tmp = XBMC->GetLocalizedString(30114); if (provider.m_caid == 0) { tmp += " - FTA"; } else { tmp += " - CAID: "; char buf[16]; sprintf(buf, "%04x", provider.m_caid); tmp += buf; } CAddonListItem *item = GUI->ListItem_create(tmp.c_str(), NULL, NULL, NULL, NULL); m_window->AddItem(item, count); GUIHANDLE hdl = m_window->GetListItem(count); m_listItems.push_back(item); m_listItemsMap[hdl] = count; if (provider.m_whitelist) item->SetProperty("IsWhitelist", "true"); else item->SetProperty("IsWhitelist", "false"); count++; } } void cVNSIAdmin::LoadListItemsChannels() { ClearListItems(); int count = 0; std::string tmp; for(unsigned int i=0; iGetLocalizedString(30114); tmp += ")"; CAddonListItem *item = GUI->ListItem_create(tmp.c_str(), NULL, NULL, NULL, NULL); m_window->AddItem(item, count); GUIHANDLE hdl = m_window->GetListItem(count); m_listItems.push_back(item); m_listItemsMap[hdl] = count; m_listItemsChannelsMap[hdl] = i; if (m_channels.m_channels[i].m_blacklist) item->SetProperty("IsBlacklist", "true"); else item->SetProperty("IsBlacklist", "false"); count++; } } pvr.vdr.vnsi-3.6.4-Leia/src/VNSIAdmin.h000066400000000000000000000052671362540622500174620ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2005-2012 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #include "VNSIData.h" #include "VNSIChannels.h" #include "client.h" class cOSDRender; class cVNSIAdmin : public cVNSIData { public: cVNSIAdmin(); ~cVNSIAdmin(); bool Open(const std::string& hostname, int port, const char* name = "XBMC osd client") override; bool OnClick(int controlId); bool OnFocus(int controlId); bool OnInit(); bool OnAction(int actionId); bool Create(int x, int y, int w, int h, void* device); void Render(); void Stop(); bool Dirty(); static bool OnClickCB(GUIHANDLE cbhdl, int controlId); static bool OnFocusCB(GUIHANDLE cbhdl, int controlId); static bool OnInitCB(GUIHANDLE cbhdl); static bool OnActionCB(GUIHANDLE cbhdl, int actionId); static bool CreateCB(GUIHANDLE cbhdl, int x, int y, int w, int h, void *device); static void RenderCB(GUIHANDLE cbhdl); static void StopCB(GUIHANDLE cbhdl); static bool DirtyCB(GUIHANDLE cbhdl); protected: bool OnResponsePacket(cResponsePacket* resp) override; void OnDisconnect() override {}; void OnReconnect() override {}; bool ConnectOSD(); bool IsVdrAction(int action); bool ReadChannelList(bool radio); bool ReadChannelWhitelist(bool radio); bool ReadChannelBlacklist(bool radio); bool SaveChannelWhitelist(bool radio); bool SaveChannelBlacklist(bool radio); void ClearListItems(); void LoadListItemsProviders(); void LoadListItemsChannels(); private: CAddonGUIWindow *m_window; CAddonGUIRenderingControl *m_renderControl; CAddonGUISpinControl *m_spinTimeshiftMode; CAddonGUISpinControl *m_spinTimeshiftBufferRam; CAddonGUISpinControl *m_spinTimeshiftBufferFile; CAddonGUIRadioButton *m_ratioIsRadio; std::vector m_listItems; std::map m_listItemsMap; std::map m_listItemsChannelsMap; CVNSIChannels m_channels; bool m_bIsOsdControl; bool m_bIsOsdDirty; int m_width, m_height; int m_osdWidth, m_osdHeight; cOSDRender *m_osdRender; P8PLATFORM::CMutex m_osdMutex; }; pvr.vdr.vnsi-3.6.4-Leia/src/VNSIChannelScan.cpp000066400000000000000000000445321362540622500211400ustar00rootroot00000000000000/* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include #include "VNSIChannelScan.h" #include "responsepacket.h" #include "requestpacket.h" #include "vnsicommand.h" #include #define BUTTON_START 5 #define BUTTON_BACK 6 #define BUTTON_CANCEL 7 #define HEADER_LABEL 8 #define SPIN_CONTROL_SOURCE_TYPE 10 #define CONTROL_RADIO_BUTTON_TV 11 #define CONTROL_RADIO_BUTTON_RADIO 12 #define CONTROL_RADIO_BUTTON_FTA 13 #define CONTROL_RADIO_BUTTON_SCRAMBLED 14 #define CONTROL_RADIO_BUTTON_HD 15 #define CONTROL_SPIN_COUNTRIES 16 #define CONTROL_SPIN_SATELLITES 17 #define CONTROL_SPIN_DVBC_INVERSION 18 #define CONTROL_SPIN_DVBC_SYMBOLRATE 29 #define CONTROL_SPIN_DVBC_QAM 20 #define CONTROL_SPIN_DVBT_INVERSION 21 #define CONTROL_SPIN_ATSC_TYPE 22 #define LABEL_TYPE 30 #define LABEL_DEVICE 31 #define PROGRESS_DONE 32 #define LABEL_TRANSPONDER 33 #define LABEL_SIGNAL 34 #define PROGRESS_SIGNAL 35 #define LABEL_STATUS 36 using namespace ADDON; cVNSIChannelScan::cVNSIChannelScan() : m_running(false), m_stopped(false), m_Canceled(false), m_window(NULL), m_spinSourceType(NULL), m_spinCountries(NULL), m_spinSatellites(NULL), m_spinDVBCInversion(NULL), m_spinDVBCSymbolrates(NULL), m_spinDVBCqam(NULL), m_spinDVBTInversion(NULL), m_spinATSCType(NULL), m_radioButtonTV(NULL), m_radioButtonRadio(NULL), m_radioButtonFTA(NULL), m_radioButtonScrambled(NULL), m_radioButtonHD(NULL), m_progressDone(NULL), m_progressSignal(NULL) { } cVNSIChannelScan::~cVNSIChannelScan() { } bool cVNSIChannelScan::Open(const std::string& hostname, int port, const char* name) { m_running = false; m_Canceled = false; m_stopped = true; m_progressDone = NULL; m_progressSignal = NULL; if(!cVNSIData::Open(hostname, port, "XBMC channel scanner")) return false; /* Load the Window as Dialog */ m_window = GUI->Window_create("ChannelScan.xml", "Confluence", false, true); m_window->m_cbhdl = this; m_window->CBOnInit = OnInitCB; m_window->CBOnFocus = OnFocusCB; m_window->CBOnClick = OnClickCB; m_window->CBOnAction= OnActionCB; m_window->DoModal(); GUI->Window_destroy(m_window); Close(); return true; } void cVNSIChannelScan::StartScan() { m_header = XBMC->GetLocalizedString(30025); m_Signal = XBMC->GetLocalizedString(30029); SetProgress(0); SetSignal(0, false); int source = m_spinSourceType->GetValue(); switch (source) { case DVB_TERR: m_window->SetControlLabel(LABEL_TYPE, "DVB-T"); break; case DVB_CABLE: m_window->SetControlLabel(LABEL_TYPE, "DVB-C"); break; case DVB_SAT: m_window->SetControlLabel(LABEL_TYPE, "DVB-S/S2"); break; case PVRINPUT: m_window->SetControlLabel(LABEL_TYPE, XBMC->GetLocalizedString(30032)); break; case PVRINPUT_FM: m_window->SetControlLabel(LABEL_TYPE, XBMC->GetLocalizedString(30033)); break; case DVB_ATSC: m_window->SetControlLabel(LABEL_TYPE, "ATSC"); break; } cRequestPacket vrp; uint32_t retCode = VNSI_RET_ERROR; vrp.init(VNSI_SCAN_START); vrp.add_U32(source); vrp.add_U8(m_radioButtonTV->IsSelected()); vrp.add_U8(m_radioButtonRadio->IsSelected()); vrp.add_U8(m_radioButtonFTA->IsSelected()); vrp.add_U8(m_radioButtonScrambled->IsSelected()); vrp.add_U8(m_radioButtonHD->IsSelected()); vrp.add_U32(m_spinCountries->GetValue()); vrp.add_U32(m_spinDVBCInversion->GetValue()); vrp.add_U32(m_spinDVBCSymbolrates->GetValue()); vrp.add_U32(m_spinDVBCqam->GetValue()); vrp.add_U32(m_spinDVBTInversion->GetValue()); vrp.add_U32(m_spinSatellites->GetValue()); vrp.add_U32(m_spinATSCType->GetValue()); { auto vresp = ReadResult(&vrp); if (!vresp) goto SCANError; retCode = vresp->extract_U32(); if (retCode != VNSI_RET_OK) goto SCANError; } return; SCANError: XBMC->Log(LOG_ERROR, "%s - Return error after start (%i)", __FUNCTION__, retCode); m_window->SetControlLabel(LABEL_STATUS, XBMC->GetLocalizedString(24071)); m_window->SetControlLabel(BUTTON_START, XBMC->GetLocalizedString(30024)); m_window->SetControlLabel(HEADER_LABEL, XBMC->GetLocalizedString(30043)); m_stopped = true; } void cVNSIChannelScan::StopScan() { cRequestPacket vrp; vrp.init(VNSI_SCAN_STOP); auto vresp = ReadResult(&vrp); if (!vresp) return; uint32_t retCode = vresp->extract_U32(); if (retCode != VNSI_RET_OK) { XBMC->Log(LOG_ERROR, "%s - Return error after stop (%i)", __FUNCTION__, retCode); m_window->SetControlLabel(LABEL_STATUS, XBMC->GetLocalizedString(24071)); m_window->SetControlLabel(BUTTON_START, XBMC->GetLocalizedString(30024)); m_window->SetControlLabel(HEADER_LABEL, XBMC->GetLocalizedString(30043)); m_stopped = true; } return; } void cVNSIChannelScan::ReturnFromProcessView() { if (m_running) { m_running = false; m_window->ClearProperties(); m_window->SetControlLabel(BUTTON_START, XBMC->GetLocalizedString(30010)); m_window->SetControlLabel(HEADER_LABEL, XBMC->GetLocalizedString(30009)); if (m_progressDone) { GUI->Control_releaseProgress(m_progressDone); m_progressDone = NULL; } if (m_progressSignal) { GUI->Control_releaseProgress(m_progressSignal); m_progressSignal = NULL; } } } void cVNSIChannelScan::SetProgress(int percent) { if (!m_progressDone) m_progressDone = GUI->Control_getProgress(m_window, PROGRESS_DONE); std::stringstream header; header << percent; m_window->SetControlLabel(HEADER_LABEL, header.str().c_str()); m_progressDone->SetPercentage((float)percent); } void cVNSIChannelScan::SetSignal(int percent, bool locked) { if (!m_progressSignal) m_progressSignal = GUI->Control_getProgress(m_window, PROGRESS_SIGNAL); std::stringstream signal; signal << percent; m_window->SetControlLabel(LABEL_SIGNAL, signal.str().c_str()); m_progressSignal->SetPercentage((float)percent); if (locked) m_window->SetProperty("Locked", "true"); else m_window->SetProperty("Locked", ""); } bool cVNSIChannelScan::OnClick(int controlId) { if (controlId == SPIN_CONTROL_SOURCE_TYPE) { int value = m_spinSourceType->GetValue(); SetControlsVisible((scantype_t)value); } else if (controlId == BUTTON_BACK) { m_window->Close(); GUI->Control_releaseSpin(m_spinSourceType); GUI->Control_releaseSpin(m_spinCountries); GUI->Control_releaseSpin(m_spinSatellites); GUI->Control_releaseSpin(m_spinDVBCInversion); GUI->Control_releaseSpin(m_spinDVBCSymbolrates); GUI->Control_releaseSpin(m_spinDVBCqam); GUI->Control_releaseSpin(m_spinDVBTInversion); GUI->Control_releaseSpin(m_spinATSCType); GUI->Control_releaseRadioButton(m_radioButtonTV); GUI->Control_releaseRadioButton(m_radioButtonRadio); GUI->Control_releaseRadioButton(m_radioButtonFTA); GUI->Control_releaseRadioButton(m_radioButtonScrambled); GUI->Control_releaseRadioButton(m_radioButtonHD); if (m_progressDone) { GUI->Control_releaseProgress(m_progressDone); m_progressDone = NULL; } if (m_progressSignal) { GUI->Control_releaseProgress(m_progressSignal); m_progressSignal = NULL; } } else if (controlId == BUTTON_START) { try { if (!m_running) { m_running = true; m_stopped = false; m_Canceled = false; m_window->SetProperty("Scanning", "running"); m_window->SetControlLabel(BUTTON_START, XBMC->GetLocalizedString(222)); StartScan(); } else if (!m_stopped) { m_stopped = true; m_Canceled = true; StopScan(); } else ReturnFromProcessView(); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return false; } } return true; } bool cVNSIChannelScan::OnFocus(int controlId) { return true; } bool cVNSIChannelScan::OnInit() { m_spinSourceType = GUI->Control_getSpin(m_window, SPIN_CONTROL_SOURCE_TYPE); m_spinSourceType->Clear(); m_spinSourceType->AddLabel("DVB-T", DVB_TERR); m_spinSourceType->AddLabel("DVB-C", DVB_CABLE); m_spinSourceType->AddLabel("DVB-S/S2", DVB_SAT); m_spinSourceType->AddLabel("Analog TV", PVRINPUT); m_spinSourceType->AddLabel("Analog Radio", PVRINPUT_FM); m_spinSourceType->AddLabel("ATSC", DVB_ATSC); m_spinDVBCInversion = GUI->Control_getSpin(m_window, CONTROL_SPIN_DVBC_INVERSION); m_spinDVBCInversion->Clear(); m_spinDVBCInversion->AddLabel("Auto", 0); m_spinDVBCInversion->AddLabel("On", 1); m_spinDVBCInversion->AddLabel("Off", 2); m_spinDVBCSymbolrates = GUI->Control_getSpin(m_window, CONTROL_SPIN_DVBC_SYMBOLRATE); m_spinDVBCSymbolrates->Clear(); m_spinDVBCSymbolrates->AddLabel("AUTO", 0); m_spinDVBCSymbolrates->AddLabel("6900", 1); m_spinDVBCSymbolrates->AddLabel("6875", 2); m_spinDVBCSymbolrates->AddLabel("6111", 3); m_spinDVBCSymbolrates->AddLabel("6250", 4); m_spinDVBCSymbolrates->AddLabel("6790", 5); m_spinDVBCSymbolrates->AddLabel("6811", 6); m_spinDVBCSymbolrates->AddLabel("5900", 7); m_spinDVBCSymbolrates->AddLabel("5000", 8); m_spinDVBCSymbolrates->AddLabel("3450", 9); m_spinDVBCSymbolrates->AddLabel("4000", 10); m_spinDVBCSymbolrates->AddLabel("6950", 11); m_spinDVBCSymbolrates->AddLabel("7000", 12); m_spinDVBCSymbolrates->AddLabel("6952", 13); m_spinDVBCSymbolrates->AddLabel("5156", 14); m_spinDVBCSymbolrates->AddLabel("4583", 15); m_spinDVBCSymbolrates->AddLabel("ALL (slow)", 16); m_spinDVBCqam = GUI->Control_getSpin(m_window, CONTROL_SPIN_DVBC_QAM); m_spinDVBCqam->Clear(); m_spinDVBCqam->AddLabel("AUTO", 0); m_spinDVBCqam->AddLabel("64", 1); m_spinDVBCqam->AddLabel("128", 2); m_spinDVBCqam->AddLabel("256", 3); m_spinDVBCqam->AddLabel("ALL (slow)", 4); m_spinDVBTInversion = GUI->Control_getSpin(m_window, CONTROL_SPIN_DVBT_INVERSION); m_spinDVBTInversion->Clear(); m_spinDVBTInversion->AddLabel("Auto", 0); m_spinDVBTInversion->AddLabel("On", 1); m_spinDVBTInversion->AddLabel("Off", 2); m_spinATSCType = GUI->Control_getSpin(m_window, CONTROL_SPIN_ATSC_TYPE); m_spinATSCType->Clear(); m_spinATSCType->AddLabel("VSB (aerial)", 0); m_spinATSCType->AddLabel("QAM (cable)", 1); m_spinATSCType->AddLabel("VSB + QAM (aerial + cable)", 2); m_radioButtonTV = GUI->Control_getRadioButton(m_window, CONTROL_RADIO_BUTTON_TV); m_radioButtonTV->SetSelected(true); m_radioButtonRadio = GUI->Control_getRadioButton(m_window, CONTROL_RADIO_BUTTON_RADIO); m_radioButtonRadio->SetSelected(true); m_radioButtonFTA = GUI->Control_getRadioButton(m_window, CONTROL_RADIO_BUTTON_FTA); m_radioButtonFTA->SetSelected(true); m_radioButtonScrambled = GUI->Control_getRadioButton(m_window, CONTROL_RADIO_BUTTON_SCRAMBLED); m_radioButtonScrambled->SetSelected(true); m_radioButtonHD = GUI->Control_getRadioButton(m_window, CONTROL_RADIO_BUTTON_HD); m_radioButtonHD->SetSelected(true); if (!ReadCountries()) return false; if (!ReadSatellites()) return false; SetControlsVisible(DVB_TERR); return true; } bool cVNSIChannelScan::OnAction(int actionId) { if (actionId == ADDON_ACTION_CLOSE_DIALOG || actionId == ADDON_ACTION_PREVIOUS_MENU) OnClick(BUTTON_BACK); return true; } bool cVNSIChannelScan::OnInitCB(GUIHANDLE cbhdl) { cVNSIChannelScan* scanner = static_cast(cbhdl); return scanner->OnInit(); } bool cVNSIChannelScan::OnClickCB(GUIHANDLE cbhdl, int controlId) { cVNSIChannelScan* scanner = static_cast(cbhdl); return scanner->OnClick(controlId); } bool cVNSIChannelScan::OnFocusCB(GUIHANDLE cbhdl, int controlId) { cVNSIChannelScan* scanner = static_cast(cbhdl); return scanner->OnFocus(controlId); } bool cVNSIChannelScan::OnActionCB(GUIHANDLE cbhdl, int actionId) { cVNSIChannelScan* scanner = static_cast(cbhdl); return scanner->OnAction(actionId); } bool cVNSIChannelScan::ReadCountries() { m_spinCountries = GUI->Control_getSpin(m_window, CONTROL_SPIN_COUNTRIES); m_spinCountries->Clear(); std::string dvdlang = XBMC->GetDVDMenuLanguage(); //dvdlang = dvdlang.ToUpper(); cRequestPacket vrp; vrp.init(VNSI_SCAN_GETCOUNTRIES); auto vresp = ReadResult(&vrp); if (!vresp) return false; int startIndex = -1; uint32_t retCode = vresp->extract_U32(); if (retCode == VNSI_RET_OK) { while (vresp->getRemainingLength() >= 4 + 2) { uint32_t index = vresp->extract_U32(); const char *isoName = vresp->extract_String(); const char *longName = vresp->extract_String(); m_spinCountries->AddLabel(longName, index); if (dvdlang == isoName) startIndex = index; } if (startIndex >= 0) m_spinCountries->SetValue(startIndex); } else { XBMC->Log(LOG_ERROR, "%s - Return error after reading countries (%i)", __FUNCTION__, retCode); } return retCode == VNSI_RET_OK; } bool cVNSIChannelScan::ReadSatellites() { m_spinSatellites = GUI->Control_getSpin(m_window, CONTROL_SPIN_SATELLITES); m_spinSatellites->Clear(); cRequestPacket vrp; vrp.init(VNSI_SCAN_GETSATELLITES); auto vresp = ReadResult(&vrp); if (!vresp) return false; uint32_t retCode = vresp->extract_U32(); if (retCode == VNSI_RET_OK) { while (vresp->getRemainingLength() >= 4 + 2) { uint32_t index = vresp->extract_U32(); const char *shortName = vresp->extract_String(); const char *longName = vresp->extract_String(); m_spinSatellites->AddLabel(longName, index); } m_spinSatellites->SetValue(6); /* default to Astra 19.2 */ } else { XBMC->Log(LOG_ERROR, "%s - Return error after reading satellites (%i)", __FUNCTION__, retCode); } return retCode == VNSI_RET_OK; } void cVNSIChannelScan::SetControlsVisible(scantype_t type) { m_spinCountries->SetVisible(type == DVB_TERR || type == DVB_CABLE || type == PVRINPUT); m_spinSatellites->SetVisible(type == DVB_SAT || type == DVB_ATSC); m_spinDVBCInversion->SetVisible(type == DVB_CABLE); m_spinDVBCSymbolrates->SetVisible(type == DVB_CABLE); m_spinDVBCqam->SetVisible(type == DVB_CABLE); m_spinDVBTInversion->SetVisible(type == DVB_TERR); m_spinATSCType->SetVisible(type == DVB_ATSC); m_radioButtonTV->SetVisible(type == DVB_TERR || type == DVB_CABLE || type == DVB_SAT || type == DVB_ATSC); m_radioButtonRadio->SetVisible(type == DVB_TERR || type == DVB_CABLE || type == DVB_SAT || type == DVB_ATSC); m_radioButtonFTA->SetVisible(type == DVB_TERR || type == DVB_CABLE || type == DVB_SAT || type == DVB_ATSC); m_radioButtonScrambled->SetVisible(type == DVB_TERR || type == DVB_CABLE || type == DVB_SAT || type == DVB_ATSC); m_radioButtonHD->SetVisible(type == DVB_TERR || type == DVB_CABLE || type == DVB_SAT || type == DVB_ATSC); } bool cVNSIChannelScan::OnResponsePacket(cResponsePacket* resp) { uint32_t requestID = resp->getRequestID(); if (requestID == VNSI_SCANNER_PERCENTAGE) { uint32_t percent = resp->extract_U32(); if (percent <= 100) SetProgress(percent); } else if (requestID == VNSI_SCANNER_SIGNAL) { uint32_t strength = resp->extract_U32(); uint32_t locked = resp->extract_U32(); SetSignal(strength, (locked>0)); } else if (requestID == VNSI_SCANNER_DEVICE) { char* str = resp->extract_String(); m_window->SetControlLabel(LABEL_DEVICE, str); } else if (requestID == VNSI_SCANNER_TRANSPONDER) { char* str = resp->extract_String(); m_window->SetControlLabel(LABEL_TRANSPONDER, str); } else if (requestID == VNSI_SCANNER_NEWCHANNEL) { uint32_t isRadio = resp->extract_U32(); uint32_t isEncrypted = resp->extract_U32(); uint32_t isHD = resp->extract_U32(); char* str = resp->extract_String(); CAddonListItem* item = GUI->ListItem_create(str, NULL, NULL, NULL, NULL); if (isEncrypted) item->SetProperty("IsEncrypted", "yes"); if (isRadio) item->SetProperty("IsRadio", "yes"); if (isHD) item->SetProperty("IsHD", "yes"); m_window->AddItem(item, 0); GUI->ListItem_destroy(item); } else if (requestID == VNSI_SCANNER_FINISHED) { if (!m_Canceled) { m_window->SetControlLabel(HEADER_LABEL, XBMC->GetLocalizedString(30036)); m_window->SetControlLabel(BUTTON_START, XBMC->GetLocalizedString(30024)); m_window->SetControlLabel(LABEL_STATUS, XBMC->GetLocalizedString(30041)); } else { m_window->SetControlLabel(HEADER_LABEL, XBMC->GetLocalizedString(30042)); } } else if (requestID == VNSI_SCANNER_STATUS) { uint32_t status = resp->extract_U32(); if (status == 0) { if (m_Canceled) m_window->SetControlLabel(LABEL_STATUS, XBMC->GetLocalizedString(16200)); else m_window->SetControlLabel(LABEL_STATUS, XBMC->GetLocalizedString(30040)); m_window->SetControlLabel(BUTTON_START, XBMC->GetLocalizedString(30024)); m_stopped = true; } else if (status == 1) { m_window->SetControlLabel(LABEL_STATUS, XBMC->GetLocalizedString(30039)); } else if (status == 2) { m_window->SetControlLabel(LABEL_STATUS, XBMC->GetLocalizedString(30037)); m_window->SetControlLabel(BUTTON_START, XBMC->GetLocalizedString(30024)); m_window->SetControlLabel(HEADER_LABEL, XBMC->GetLocalizedString(30043)); m_stopped = true; } else if (status == 3) { m_window->SetControlLabel(LABEL_STATUS, XBMC->GetLocalizedString(30038)); } } else { return false; } return true; } pvr.vdr.vnsi-3.6.4-Leia/src/VNSIChannelScan.h000066400000000000000000000053041362540622500205770ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "VNSIData.h" #include "client.h" #include #include typedef enum scantype { DVB_TERR = 0, DVB_CABLE = 1, DVB_SAT = 2, PVRINPUT = 3, PVRINPUT_FM = 4, DVB_ATSC = 5, } scantype_t; class cVNSIChannelScan : public cVNSIData { public: cVNSIChannelScan(); ~cVNSIChannelScan(); bool Open(const std::string& hostname, int port, const char* name = "XBMC channel scanner") override; bool OnClick(int controlId); bool OnFocus(int controlId); bool OnInit(); bool OnAction(int actionId); static bool OnClickCB(GUIHANDLE cbhdl, int controlId); static bool OnFocusCB(GUIHANDLE cbhdl, int controlId); static bool OnInitCB(GUIHANDLE cbhdl); static bool OnActionCB(GUIHANDLE cbhdl, int actionId); protected: bool OnResponsePacket(cResponsePacket* resp) override; private: bool ReadCountries(); bool ReadSatellites(); void SetControlsVisible(scantype_t type); void StartScan(); void StopScan(); void ReturnFromProcessView(); void SetProgress(int procent); void SetSignal(int procent, bool locked); std::string m_header; std::string m_Signal; bool m_running; bool m_stopped; bool m_Canceled; CAddonGUIWindow *m_window; CAddonGUISpinControl *m_spinSourceType; CAddonGUISpinControl *m_spinCountries; CAddonGUISpinControl *m_spinSatellites; CAddonGUISpinControl *m_spinDVBCInversion; CAddonGUISpinControl *m_spinDVBCSymbolrates; CAddonGUISpinControl *m_spinDVBCqam; CAddonGUISpinControl *m_spinDVBTInversion; CAddonGUISpinControl *m_spinATSCType; CAddonGUIRadioButton *m_radioButtonTV; CAddonGUIRadioButton *m_radioButtonRadio; CAddonGUIRadioButton *m_radioButtonFTA; CAddonGUIRadioButton *m_radioButtonScrambled; CAddonGUIRadioButton *m_radioButtonHD; CAddonGUIProgressControl *m_progressDone; CAddonGUIProgressControl *m_progressSignal; }; pvr.vdr.vnsi-3.6.4-Leia/src/VNSIChannels.cpp000066400000000000000000000104551362540622500205130ustar00rootroot00000000000000/* * Copyright (C) 2005-2013 Team XBMC * http://xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #include "VNSIChannels.h" #include CProvider::CProvider() :m_name(""), m_caid(0), m_whitelist(false) { } CProvider::CProvider(std::string name, int caid) :m_name(name), m_caid(caid), m_whitelist(false) { }; bool CProvider::operator==(const CProvider &rhs) const { if (rhs.m_caid != m_caid) return false; if (rhs.m_name.compare(m_name) != 0) return false; return true; } void CChannel::SetCaids(const char *caids) { m_caids.clear(); std::string strCaids = caids; size_t pos = strCaids.find("caids:"); if(pos == strCaids.npos) return; strCaids.erase(0,6); std::string token; int caid; char *pend; while ((pos = strCaids.find(";")) != strCaids.npos) { token = strCaids.substr(0, pos); caid = strtol(token.c_str(), &pend, 10); m_caids.push_back(caid); strCaids.erase(0, pos+1); } if (strCaids.length() > 1) { caid = strtol(strCaids.c_str(), &pend, 10); m_caids.push_back(caid); } } CVNSIChannels::CVNSIChannels() { m_loaded = false; m_mode = NONE; m_radio = false; } void CVNSIChannels::CreateProviders() { CProvider provider; m_providers.clear(); for (const auto &channel : m_channels) { provider.m_name = channel.m_provider; for (auto caid : channel.m_caids) { provider.m_caid = caid; auto p_it = std::find(m_providers.begin(), m_providers.end(), provider); if (p_it == m_providers.end()) { m_providers.push_back(provider); } } if (channel.m_caids.empty()) { provider.m_caid = 0; auto p_it = std::find(m_providers.begin(), m_providers.end(), provider); if (p_it == m_providers.end()) { m_providers.push_back(provider); } } } } void CVNSIChannels::LoadProviderWhitelist() { bool select = m_providerWhitelist.empty(); for (auto &provider : m_providers) { provider.m_whitelist = select; } for (auto &w : m_providerWhitelist) { auto p_it = std::find(m_providers.begin(), m_providers.end(), w); if(p_it != m_providers.end()) { p_it->m_whitelist = true; } } } void CVNSIChannels::LoadChannelBlacklist() { for (auto b : m_channelBlacklist) { auto it = m_channelsMap.find(b); if(it!=m_channelsMap.end()) { int idx = it->second; m_channels[idx].m_blacklist = true; } } } void CVNSIChannels::ExtractProviderWhitelist() { m_providerWhitelist.clear(); for (const auto &provider : m_providers) { if(provider.m_whitelist) m_providerWhitelist.push_back(provider); } if(m_providerWhitelist.size() == m_providers.size()) { m_providerWhitelist.clear(); } else if (m_providerWhitelist.empty()) { m_providerWhitelist.clear(); CProvider provider; provider.m_name = "no whitelist"; provider.m_caid = 0; m_providerWhitelist.push_back(provider); } } void CVNSIChannels::ExtractChannelBlacklist() { m_channelBlacklist.clear(); for (const auto &channel : m_channels) { if(channel.m_blacklist) m_channelBlacklist.push_back(channel.m_id); } } bool CVNSIChannels::IsWhitelist(const CChannel &channel) const { CProvider provider; provider.m_name = channel.m_provider; if (channel.m_caids.empty()) { provider.m_caid = 0; auto p_it = std::find(m_providers.begin(), m_providers.end(), provider); if(p_it!=m_providers.end() && p_it->m_whitelist) return true; } for (auto caid : channel.m_caids) { provider.m_caid = caid; auto p_it = std::find(m_providers.begin(), m_providers.end(), provider); if(p_it!=m_providers.end() && p_it->m_whitelist) return true; } return false; } pvr.vdr.vnsi-3.6.4-Leia/src/VNSIChannels.h000066400000000000000000000033071362540622500201560ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2005-2013 Team XBMC * http://xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #include "VNSIData.h" class CProvider { public: CProvider(); CProvider(std::string name, int caid); bool operator==(const CProvider &rhs) const; std::string m_name; int m_caid; bool m_whitelist; }; class CChannel { public: void SetCaids(const char *caids); unsigned int m_id; unsigned int m_number; std::string m_name; std::string m_provider; bool m_radio; std::vector m_caids; bool m_blacklist; }; class CVNSIChannels { public: CVNSIChannels(); void CreateProviders(); void LoadProviderWhitelist(); void LoadChannelBlacklist(); void ExtractProviderWhitelist(); void ExtractChannelBlacklist(); bool IsWhitelist(const CChannel &channel) const; std::vector m_channels; std::map m_channelsMap; std::vector m_providers; std::vector m_providerWhitelist; std::vector m_channelBlacklist; bool m_loaded; bool m_radio; enum { NONE, PROVIDER, CHANNEL }m_mode; }; pvr.vdr.vnsi-3.6.4-Leia/src/VNSIData.cpp000066400000000000000000001127541362540622500176360ustar00rootroot00000000000000/* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "VNSIData.h" #include "responsepacket.h" #include "requestpacket.h" #include "vnsicommand.h" #include #include #include #include // helper functions (taken from VDR) time_t IncDay(time_t t, int days) { struct tm tm = *localtime(&t); tm.tm_mday += days; int h = tm.tm_hour; tm.tm_isdst = -1; t = mktime(&tm); tm.tm_hour = h; return mktime(&tm); } int GetWDay(time_t t) { int weekday = localtime(&t)->tm_wday; return weekday == 0 ? 6 : weekday - 1; // we start with Monday==0! } bool DayMatches(time_t t, unsigned int weekdays) { return (weekdays & (1 << GetWDay(t))) != 0; } time_t SetTime(time_t t, int secondsFromMidnight) { struct tm tm = *localtime(&t); tm.tm_hour = secondsFromMidnight / 3600; tm.tm_min = (secondsFromMidnight % 3600) / 60; tm.tm_sec = secondsFromMidnight % 60; tm.tm_isdst = -1; // makes sure mktime() will determine the correct DST setting return mktime(&tm); } using namespace ADDON; using namespace P8PLATFORM; cVNSIData::SMessage & cVNSIData::Queue::Enqueue(uint32_t serial) { const CLockObject lock(m_mutex); return m_queue[serial]; } std::unique_ptr cVNSIData::Queue::Dequeue(uint32_t serial, SMessage &message) { const CLockObject lock(m_mutex); auto vresp = std::move(message.pkt); m_queue.erase(serial); return vresp; } void cVNSIData::Queue::Set(std::unique_ptr &&vresp) { CLockObject lock(m_mutex); SMessages::iterator it = m_queue.find(vresp->getRequestID()); if (it != m_queue.end()) { it->second.pkt = std::move(vresp); it->second.event.Broadcast(); } } cVNSIData::cVNSIData() { } cVNSIData::~cVNSIData() { m_abort = true; StopThread(0); Close(); } bool cVNSIData::Start(const std::string& hostname, int port, const char* name, const std::string& mac) { m_hostname = hostname; m_port = port; m_wolMac = mac; if (name != nullptr) m_name = name; PVR->ConnectionStateChange("VNSI started", PVR_CONNECTION_STATE_CONNECTING, "VNSI started"); m_abort = false; m_connectionLost = true; CreateThread(); return true; } void cVNSIData::OnDisconnect() { PVR->ConnectionStateChange("vnsi connection lost", PVR_CONNECTION_STATE_DISCONNECTED, XBMC->GetLocalizedString(30044)); } void cVNSIData::OnReconnect() { EnableStatusInterface(true, false); PVR->ConnectionStateChange("vnsi connection established", PVR_CONNECTION_STATE_CONNECTED, XBMC->GetLocalizedString(30045)); PVR->TriggerChannelUpdate(); PVR->TriggerTimerUpdate(); PVR->TriggerRecordingUpdate(); } std::unique_ptr cVNSIData::ReadResult(cRequestPacket* vrp) { SMessage &message = m_queue.Enqueue(vrp->getSerial()); if (cVNSISession::TransmitMessage(vrp) && !message.event.Wait(g_iConnectTimeout * 1000)) { XBMC->Log(LOG_ERROR, "%s - request timed out after %d seconds", __FUNCTION__, g_iConnectTimeout); } return m_queue.Dequeue(vrp->getSerial(), message); } bool cVNSIData::GetDriveSpace(long long *total, long long *used) { cRequestPacket vrp; vrp.init(VNSI_RECORDINGS_DISKSIZE); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } uint32_t totalspace = vresp->extract_U32(); uint32_t freespace = vresp->extract_U32(); /* vresp->extract_U32(); percent not used */ *total = totalspace; *used = (totalspace - freespace); /* Convert from kBytes to Bytes */ *total *= 1024; *used *= 1024; return true; } bool cVNSIData::SupportChannelScan() { cRequestPacket vrp; vrp.init(VNSI_SCAN_SUPPORTED); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } uint32_t ret = vresp->extract_U32(); return ret == VNSI_RET_OK ? true : false; } bool cVNSIData::SupportRecordingsUndelete() { if (GetProtocol() > 7) { cRequestPacket vrp; vrp.init(VNSI_RECORDINGS_DELETED_ACCESS_SUPPORTED); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_INFO, "%s - Can't get response packed", __FUNCTION__); return false; } uint32_t ret = vresp->extract_U32(); return ret == VNSI_RET_OK ? true : false; } XBMC->Log(LOG_INFO, "%s - Undelete not supported on backend (min. Ver. 1.3.0; Protocol 7)", __FUNCTION__); return false; } bool cVNSIData::EnableStatusInterface(bool onOff, bool wait) { cRequestPacket vrp; vrp.init(VNSI_ENABLESTATUSINTERFACE); vrp.add_U8(onOff); if (!wait) { cVNSISession::TransmitMessage(&vrp); return true; } auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } uint32_t ret = vresp->extract_U32(); return ret == VNSI_RET_OK ? true : false; } int cVNSIData::GetChannelsCount() { cRequestPacket vrp; vrp.init(VNSI_CHANNELS_GETCOUNT); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return -1; } uint32_t count = vresp->extract_U32(); return count; } bool cVNSIData::GetChannelsList(ADDON_HANDLE handle, bool radio) { cRequestPacket vrp; vrp.init(VNSI_CHANNELS_GETCHANNELS); vrp.add_U32(radio); vrp.add_U8(1); // apply filter auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } while (vresp->getRemainingLength() >= 3 * 4 + 3) { PVR_CHANNEL tag; memset(&tag, 0 , sizeof(tag)); tag.iChannelNumber = vresp->extract_U32(); char *strChannelName = vresp->extract_String(); strncpy(tag.strChannelName, strChannelName, sizeof(tag.strChannelName) - 1); char *strProviderName = vresp->extract_String(); tag.iUniqueId = vresp->extract_U32(); tag.iEncryptionSystem = vresp->extract_U32(); char *strCaids = vresp->extract_String(); if (m_protocol >= 6) { std::string path = g_szIconPath; std::string ref = vresp->extract_String(); if (!path.empty()) { if (path[path.length()-1] != '/') path += '/'; path += ref; path += ".png"; strncpy(tag.strIconPath, path.c_str(), sizeof(tag.strIconPath) - 1); } } tag.bIsRadio = radio; PVR->TransferChannelEntry(handle, &tag); } return true; } bool cVNSIData::GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL &channel, time_t start, time_t end) { cRequestPacket vrp; vrp.init(VNSI_EPG_GETFORCHANNEL); vrp.add_U32(channel.iUniqueId); vrp.add_U32(start); vrp.add_U32(end - start); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } while (vresp->getRemainingLength() >= 5 * 4 + 3) { EPG_TAG tag; memset(&tag, 0 , sizeof(tag)); tag.iUniqueChannelId = channel.iUniqueId; tag.iUniqueBroadcastId = vresp->extract_U32(); tag.startTime = vresp->extract_U32(); tag.endTime = tag.startTime + vresp->extract_U32(); uint32_t content = vresp->extract_U32(); tag.iGenreType = content & 0xF0; tag.iGenreSubType = content & 0x0F; tag.strGenreDescription = ""; tag.iParentalRating = vresp->extract_U32(); tag.strTitle = vresp->extract_String(); tag.strPlotOutline = vresp->extract_String(); tag.strPlot = vresp->extract_String(); tag.strOriginalTitle = ""; tag.strCast = ""; tag.strDirector = ""; tag.strWriter = ""; tag.iYear = 0; tag.strIMDBNumber = ""; if (tag.strPlotOutline) tag.strEpisodeName = strdup(tag.strPlotOutline); tag.iFlags = EPG_TAG_FLAG_UNDEFINED; PVR->TransferEpgEntry(handle, &tag); free((void*)tag.strEpisodeName); } return true; } /** OPCODE's 60 - 69: VNSI network functions for timer access */ int cVNSIData::GetTimersCount() { cRequestPacket vrp; vrp.init(VNSI_TIMER_GETCOUNT); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return -1; } uint32_t count = vresp->extract_U32(); return count; } PVR_ERROR cVNSIData::GetTimerInfo(unsigned int timernumber, PVR_TIMER &tag) { cRequestPacket vrp; memset(&tag, 0, sizeof(tag)); vrp.init(VNSI_TIMER_GET); vrp.add_U32(timernumber); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return PVR_ERROR_UNKNOWN; } uint32_t returnCode = vresp->extract_U32(); if (returnCode != VNSI_RET_OK) { if (returnCode == VNSI_RET_DATAUNKNOWN) return PVR_ERROR_FAILED; else if (returnCode == VNSI_RET_ERROR) return PVR_ERROR_SERVER_ERROR; } if (GetProtocol() >= 9) { tag.iTimerType = vresp->extract_U32(); } tag.iClientIndex = vresp->extract_U32(); int iActive = vresp->extract_U32(); int iRecording = vresp->extract_U32(); int iPending = vresp->extract_U32(); if (iRecording) tag.state = PVR_TIMER_STATE_RECORDING; else if (iPending || iActive) tag.state = PVR_TIMER_STATE_SCHEDULED; else tag.state = PVR_TIMER_STATE_DISABLED; tag.iPriority = vresp->extract_U32(); tag.iLifetime = vresp->extract_U32(); vresp->extract_U32(); // channel number - unused tag.iClientChannelUid = vresp->extract_U32(); tag.startTime = vresp->extract_U32(); tag.endTime = vresp->extract_U32(); tag.firstDay = vresp->extract_U32(); tag.iWeekdays = vresp->extract_U32(); char *strTitle = vresp->extract_String(); strncpy(tag.strTitle, strTitle, sizeof(tag.strTitle) - 1); if (GetProtocol() >= 9) { char *epgSearch = vresp->extract_String(); strncpy(tag.strEpgSearchString, epgSearch, sizeof(tag.strEpgSearchString) - 1); if (tag.iTimerType == VNSI_TIMER_TYPE_MAN && tag.iWeekdays) tag.iTimerType = VNSI_TIMER_TYPE_MAN_REPEAT; } if (GetProtocol() >= 10) { tag.iParentClientIndex = vresp->extract_U32(); } return PVR_ERROR_NO_ERROR; } bool cVNSIData::GetTimersList(ADDON_HANDLE handle) { cRequestPacket vrp; vrp.init(VNSI_TIMER_GETLIST); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return false; } uint32_t numTimers = vresp->extract_U32(); if (numTimers > 0) { while (vresp->getRemainingLength() >= 12 * 4 + 1) { PVR_TIMER tag; memset(&tag, 0, sizeof(tag)); if (GetProtocol() >= 9) { tag.iTimerType = vresp->extract_U32(); } tag.iClientIndex = vresp->extract_U32(); int iActive = vresp->extract_U32(); int iRecording = vresp->extract_U32(); int iPending = vresp->extract_U32(); if (iRecording) tag.state = PVR_TIMER_STATE_RECORDING; else if (iPending || iActive) tag.state = PVR_TIMER_STATE_SCHEDULED; else tag.state = PVR_TIMER_STATE_DISABLED; tag.iPriority = vresp->extract_U32(); tag.iLifetime = vresp->extract_U32(); vresp->extract_U32(); // channel number - unused tag.iClientChannelUid = vresp->extract_U32(); tag.startTime = vresp->extract_U32(); tag.endTime = vresp->extract_U32(); tag.firstDay = vresp->extract_U32(); tag.iWeekdays = vresp->extract_U32(); char *strTitle = vresp->extract_String(); strncpy(tag.strTitle, strTitle, sizeof(tag.strTitle) - 1); tag.iMarginStart = 0; tag.iMarginEnd = 0; if (GetProtocol() >= 9) { char *epgSearch = vresp->extract_String(); strncpy(tag.strEpgSearchString, epgSearch, sizeof(tag.strEpgSearchString) - 1); if (tag.iTimerType == VNSI_TIMER_TYPE_MAN && tag.iWeekdays) tag.iTimerType = VNSI_TIMER_TYPE_MAN_REPEAT; } if (GetProtocol() >= 10) { tag.iParentClientIndex = vresp->extract_U32(); } if (tag.startTime == 0) tag.bStartAnyTime = true; if (tag.endTime == 0) tag.bEndAnyTime = true; PVR->TransferTimerEntry(handle, &tag); if (tag.iTimerType == VNSI_TIMER_TYPE_MAN_REPEAT && tag.state != PVR_TIMER_STATE_DISABLED) { GenTimerChildren(tag, handle); } } } return true; } bool cVNSIData::GenTimerChildren(const PVR_TIMER &timer, ADDON_HANDLE handle) { time_t now = time(nullptr); time_t firstDay = timer.firstDay; time_t startTime = timer.startTime; time_t endTime = timer.endTime; struct tm *loctime = localtime(&startTime); int startSec = loctime->tm_hour * 3600 + loctime->tm_min * 60; loctime = localtime(&endTime); int stopSec = loctime->tm_hour * 3600 + loctime->tm_min * 60; int length = stopSec - startSec; if (length < 0) length += 3600 * 24; for (int n = 0; n < 2; ++n) { for (int i = -1; i <= 7; i++) { time_t t0 = IncDay(firstDay ? std::max(firstDay, now) : now, i); if (DayMatches(t0, timer.iWeekdays)) { time_t start = SetTime(t0, startSec); time_t stop = start + length; if ((!firstDay || start >= firstDay) && now < stop) { PVR_TIMER child = timer; child.iClientIndex = timer.iClientIndex + n | 0xF000; child.iParentClientIndex = timer.iClientIndex; child.iTimerType = VNSI_TIMER_TYPE_MAN_REPEAT_CHILD; child.startTime = start; child.endTime = stop; child.iWeekdays = 0; PVR->TransferTimerEntry(handle, &child); firstDay = start + length + 300; break; } } } } return true; } std::string cVNSIData::GenTimerFolder(std::string directory, std::string title) { // add directory in front of the title std::string path; if (strlen(directory.c_str()) > 0) { path += directory; if (path == "/") { path.clear(); } else if (path.size() > 1) { if (path[0] == '/') { path = path.substr(1); } } if (path.size() > 0 && path[path.size()-1] != '/') { path += "/"; } } // replace directory separators for (std::size_t i=0; i 0) { path += title; } // replace colons for (std::size_t i=0; iLog(LOG_ERROR, "%s - Empty filename !", __FUNCTION__); return PVR_ERROR_UNKNOWN; } // use timer margin to calculate start/end times uint32_t starttime = timerinfo.startTime - timerinfo.iMarginStart*60; uint32_t endtime = timerinfo.endTime + timerinfo.iMarginEnd*60; if (GetProtocol() >= 9) { vrp.add_U32(timerinfo.iTimerType); } vrp.add_U32(timerinfo.state == PVR_TIMER_STATE_SCHEDULED); vrp.add_U32(timerinfo.iPriority); vrp.add_U32(timerinfo.iLifetime); vrp.add_U32(timerinfo.iClientChannelUid); vrp.add_U32(starttime); vrp.add_U32(endtime); vrp.add_U32(timerinfo.iWeekdays != PVR_WEEKDAY_NONE ? timerinfo.firstDay : 0); vrp.add_U32(timerinfo.iWeekdays); vrp.add_String(path.c_str()); vrp.add_String(timerinfo.strTitle); if (GetProtocol() >= 9) { vrp.add_String(timerinfo.strEpgSearchString); } if (GetProtocol() >= 10) { vrp.add_U32(timerinfo.iMarginStart*60); vrp.add_U32(timerinfo.iMarginEnd*60); } auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return PVR_ERROR_UNKNOWN; } uint32_t returnCode = vresp->extract_U32(); if (returnCode == VNSI_RET_DATALOCKED) return PVR_ERROR_ALREADY_PRESENT; else if (returnCode == VNSI_RET_DATAINVALID) return PVR_ERROR_INVALID_PARAMETERS; else if (returnCode == VNSI_RET_ERROR) return PVR_ERROR_SERVER_ERROR; return PVR_ERROR_NO_ERROR; } PVR_ERROR cVNSIData::DeleteTimer(const PVR_TIMER &timerinfo, bool force) { cRequestPacket vrp; vrp.init(VNSI_TIMER_DELETE); vrp.add_U32(timerinfo.iClientIndex); vrp.add_U32(force); auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { return PVR_ERROR_UNKNOWN; } uint32_t returnCode = vresp->extract_U32(); if (returnCode == VNSI_RET_DATALOCKED) return PVR_ERROR_FAILED; else if (returnCode == VNSI_RET_RECRUNNING) return PVR_ERROR_RECORDING_RUNNING; else if (returnCode == VNSI_RET_DATAINVALID) return PVR_ERROR_INVALID_PARAMETERS; else if (returnCode == VNSI_RET_ERROR) return PVR_ERROR_SERVER_ERROR; return PVR_ERROR_NO_ERROR; } PVR_ERROR cVNSIData::RenameTimer(const PVR_TIMER &timerinfo, const char *newname) { PVR_TIMER timerinfo1; memset(&timerinfo1, 0, sizeof(timerinfo1)); PVR_ERROR ret = GetTimerInfo(timerinfo.iClientIndex, timerinfo1); if (ret != PVR_ERROR_NO_ERROR) return ret; strncpy(timerinfo1.strTitle, newname, sizeof(timerinfo1.strTitle) - 1); return UpdateTimer(timerinfo1); } PVR_ERROR cVNSIData::UpdateTimer(const PVR_TIMER &timerinfo) { // use timer margin to calculate start/end times uint32_t starttime = timerinfo.startTime - timerinfo.iMarginStart*60; uint32_t endtime = timerinfo.endTime + timerinfo.iMarginEnd*60; // add directory in front of the title std::string path = GenTimerFolder(timerinfo.strDirectory, timerinfo.strTitle); if (path.empty()) { XBMC->Log(LOG_ERROR, "%s - Empty filename !", __FUNCTION__); return PVR_ERROR_UNKNOWN; } cRequestPacket vrp; vrp.init(VNSI_TIMER_UPDATE); vrp.add_U32(timerinfo.iClientIndex); if (GetProtocol() >= 9) { vrp.add_U32(timerinfo.iTimerType); } vrp.add_U32(timerinfo.state == PVR_TIMER_STATE_SCHEDULED); vrp.add_U32(timerinfo.iPriority); vrp.add_U32(timerinfo.iLifetime); vrp.add_U32(timerinfo.iClientChannelUid); vrp.add_U32(starttime); vrp.add_U32(endtime); vrp.add_U32(timerinfo.iWeekdays != PVR_WEEKDAY_NONE ? timerinfo.firstDay : 0); vrp.add_U32(timerinfo.iWeekdays); vrp.add_String(path.c_str()); vrp.add_String(timerinfo.strTitle); if (GetProtocol() >= 9) { vrp.add_String(timerinfo.strEpgSearchString); } auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { return PVR_ERROR_UNKNOWN; } uint32_t returnCode = vresp->extract_U32(); if (returnCode == VNSI_RET_DATAUNKNOWN) return PVR_ERROR_FAILED; else if (returnCode == VNSI_RET_DATAINVALID) return PVR_ERROR_INVALID_PARAMETERS; else if (returnCode == VNSI_RET_ERROR) return PVR_ERROR_SERVER_ERROR; return PVR_ERROR_NO_ERROR; } PVR_ERROR cVNSIData::GetTimerTypes(PVR_TIMER_TYPE types[], int *size) { *size = 0; // One-shot manual memset(&types[*size], 0, sizeof(types[*size])); types[*size].iId = VNSI_TIMER_TYPE_MAN; strncpy(types[*size].strDescription, XBMC->GetLocalizedString(30200), 64); types[*size].iAttributes = PVR_TIMER_TYPE_IS_MANUAL | PVR_TIMER_TYPE_SUPPORTS_ENABLE_DISABLE | PVR_TIMER_TYPE_SUPPORTS_CHANNELS | PVR_TIMER_TYPE_SUPPORTS_START_TIME | PVR_TIMER_TYPE_SUPPORTS_END_TIME | PVR_TIMER_TYPE_SUPPORTS_PRIORITY | PVR_TIMER_TYPE_SUPPORTS_LIFETIME | PVR_TIMER_TYPE_SUPPORTS_RECORDING_FOLDERS; (*size)++; // Repeating manual memset(&types[*size], 0, sizeof(types[*size])); types[*size].iId = VNSI_TIMER_TYPE_MAN_REPEAT; strncpy(types[*size].strDescription, XBMC->GetLocalizedString(30201), 64); types[*size].iAttributes = PVR_TIMER_TYPE_IS_MANUAL | PVR_TIMER_TYPE_IS_REPEATING | PVR_TIMER_TYPE_SUPPORTS_ENABLE_DISABLE | PVR_TIMER_TYPE_SUPPORTS_CHANNELS | PVR_TIMER_TYPE_SUPPORTS_START_TIME | PVR_TIMER_TYPE_SUPPORTS_END_TIME | PVR_TIMER_TYPE_SUPPORTS_PRIORITY | PVR_TIMER_TYPE_SUPPORTS_LIFETIME | PVR_TIMER_TYPE_SUPPORTS_FIRST_DAY | PVR_TIMER_TYPE_SUPPORTS_WEEKDAYS | PVR_TIMER_TYPE_SUPPORTS_RECORDING_FOLDERS; (*size)++; // Repeating manual memset(&types[*size], 0, sizeof(types[*size])); types[*size].iId = VNSI_TIMER_TYPE_MAN_REPEAT_CHILD; strncpy(types[*size].strDescription, XBMC->GetLocalizedString(30205), 64); types[*size].iAttributes = PVR_TIMER_TYPE_IS_MANUAL | PVR_TIMER_TYPE_IS_READONLY | PVR_TIMER_TYPE_SUPPORTS_CHANNELS | PVR_TIMER_TYPE_SUPPORTS_START_TIME | PVR_TIMER_TYPE_SUPPORTS_END_TIME | PVR_TIMER_TYPE_SUPPORTS_PRIORITY | PVR_TIMER_TYPE_SUPPORTS_LIFETIME | PVR_TIMER_TYPE_SUPPORTS_RECORDING_FOLDERS; (*size)++; // One-shot epg-based memset(&types[*size], 0, sizeof(types[*size])); types[*size].iId = VNSI_TIMER_TYPE_EPG; strncpy(types[*size].strDescription, XBMC->GetLocalizedString(30202), 64); types[*size].iAttributes = PVR_TIMER_TYPE_SUPPORTS_ENABLE_DISABLE | PVR_TIMER_TYPE_REQUIRES_EPG_TAG_ON_CREATE | PVR_TIMER_TYPE_SUPPORTS_CHANNELS | PVR_TIMER_TYPE_SUPPORTS_START_TIME | PVR_TIMER_TYPE_SUPPORTS_END_TIME | PVR_TIMER_TYPE_SUPPORTS_PRIORITY | PVR_TIMER_TYPE_SUPPORTS_LIFETIME | PVR_TIMER_TYPE_SUPPORTS_RECORDING_FOLDERS; (*size)++; // addition timer supported by backend if (GetProtocol() >= 9) { cRequestPacket vrp; vrp.init(VNSI_TIMER_GETTYPES); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return PVR_ERROR_NO_ERROR; } uint32_t vnsitimers = vresp->extract_U32(); if (vnsitimers & VNSI_TIMER_TYPE_EPG_SEARCH) { // EPG search timer memset(&types[*size], 0, sizeof(types[*size])); types[*size].iId = VNSI_TIMER_TYPE_EPG_SEARCH; strncpy(types[*size].strDescription, XBMC->GetLocalizedString(30204), 64); types[*size].iAttributes = PVR_TIMER_TYPE_IS_REPEATING | PVR_TIMER_TYPE_SUPPORTS_ENABLE_DISABLE | PVR_TIMER_TYPE_SUPPORTS_CHANNELS | PVR_TIMER_TYPE_SUPPORTS_TITLE_EPG_MATCH | PVR_TIMER_TYPE_SUPPORTS_PRIORITY | PVR_TIMER_TYPE_SUPPORTS_LIFETIME; (*size)++; } // VPS Timer memset(&types[*size], 0, sizeof(types[*size])); types[*size].iId = VNSI_TIMER_TYPE_VPS; strncpy(types[*size].strDescription, XBMC->GetLocalizedString(30203), 64); types[*size].iAttributes = PVR_TIMER_TYPE_IS_MANUAL | PVR_TIMER_TYPE_SUPPORTS_ENABLE_DISABLE | PVR_TIMER_TYPE_SUPPORTS_CHANNELS | PVR_TIMER_TYPE_SUPPORTS_START_TIME | PVR_TIMER_TYPE_SUPPORTS_END_TIME | PVR_TIMER_TYPE_SUPPORTS_PRIORITY | PVR_TIMER_TYPE_SUPPORTS_LIFETIME | PVR_TIMER_TYPE_SUPPORTS_RECORDING_FOLDERS; (*size)++; } return PVR_ERROR_NO_ERROR; } int cVNSIData::GetRecordingsCount() { cRequestPacket vrp; vrp.init(VNSI_RECORDINGS_GETCOUNT); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return -1; } uint32_t count = vresp->extract_U32(); return count; } PVR_ERROR cVNSIData::GetRecordingsList(ADDON_HANDLE handle) { cRequestPacket vrp; vrp.init(VNSI_RECORDINGS_GETLIST); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return PVR_ERROR_UNKNOWN; } std::string strRecordingId; while (vresp->getRemainingLength() >= 5 * 4 + 5) { PVR_RECORDING tag; memset(&tag, 0, sizeof(tag)); tag.recordingTime = vresp->extract_U32(); tag.iDuration = vresp->extract_U32(); tag.iPriority = vresp->extract_U32(); tag.iLifetime = vresp->extract_U32(); tag.bIsDeleted = false; char *strChannelName = vresp->extract_String(); strncpy(tag.strChannelName, strChannelName, sizeof(tag.strChannelName) - 1); if (GetProtocol() >= 9) { tag.iChannelUid = -1; uint32_t uuid = vresp->extract_U32(); if (uuid > 0) tag.iChannelUid = uuid; uint8_t type = vresp->extract_U8(); if (type == 1) tag.channelType = PVR_RECORDING_CHANNEL_TYPE_RADIO; else if (type == 2) tag.channelType = PVR_RECORDING_CHANNEL_TYPE_TV; else tag.channelType = PVR_RECORDING_CHANNEL_TYPE_UNKNOWN; } else { tag.iChannelUid = PVR_CHANNEL_INVALID_UID; tag.channelType = PVR_RECORDING_CHANNEL_TYPE_UNKNOWN; } char *strTitle = vresp->extract_String(); strncpy(tag.strTitle, strTitle, sizeof(tag.strTitle) - 1); char *strEpisodeName = vresp->extract_String(); strncpy(tag.strEpisodeName, strEpisodeName, sizeof(tag.strEpisodeName) - 1); strncpy(tag.strPlotOutline, strEpisodeName, sizeof(tag.strEpisodeName) - 1); char *strPlot = vresp->extract_String(); strncpy(tag.strPlot, strPlot, sizeof(tag.strPlot) - 1); char *strDirectory = vresp->extract_String(); strncpy(tag.strDirectory, strDirectory, sizeof(tag.strDirectory) - 1); strRecordingId = StringUtils::Format("%i", vresp->extract_U32()); strncpy(tag.strRecordingId, strRecordingId.c_str(), sizeof(tag.strRecordingId) - 1); PVR->TransferRecordingEntry(handle, &tag); } return PVR_ERROR_NO_ERROR; } PVR_ERROR cVNSIData::RenameRecording(const PVR_RECORDING& recinfo, const char* newname) { cRequestPacket vrp; vrp.init(VNSI_RECORDINGS_RENAME); // add uid XBMC->Log(LOG_DEBUG, "%s - uid: %s", __FUNCTION__, recinfo.strRecordingId); vrp.add_U32(atoi(recinfo.strRecordingId)); // add new title vrp.add_String(newname); auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { return PVR_ERROR_SERVER_ERROR; } uint32_t returnCode = vresp->extract_U32(); if(returnCode != 0) return PVR_ERROR_FAILED; return PVR_ERROR_NO_ERROR; } PVR_ERROR cVNSIData::DeleteRecording(const PVR_RECORDING& recinfo) { cRequestPacket vrp; vrp.init(recinfo.bIsDeleted ? VNSI_RECORDINGS_DELETED_DELETE : VNSI_RECORDINGS_DELETE); vrp.add_U32(atoi(recinfo.strRecordingId)); auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { return PVR_ERROR_UNKNOWN; } uint32_t returnCode = vresp->extract_U32(); switch(returnCode) { case VNSI_RET_DATALOCKED: return PVR_ERROR_FAILED; case VNSI_RET_RECRUNNING: return PVR_ERROR_RECORDING_RUNNING; case VNSI_RET_DATAINVALID: return PVR_ERROR_INVALID_PARAMETERS; case VNSI_RET_ERROR: return PVR_ERROR_SERVER_ERROR; } return PVR_ERROR_NO_ERROR; } PVR_ERROR cVNSIData::GetRecordingEdl(const PVR_RECORDING& recinfo, PVR_EDL_ENTRY edl[], int *size) { cRequestPacket vrp; vrp.init(VNSI_RECORDINGS_GETEDL); vrp.add_U32(atoi(recinfo.strRecordingId)); *size = 0; auto vresp = ReadResult(&vrp); if (vresp == NULL) { return PVR_ERROR_UNKNOWN; } else if (vresp->noResponse()) { return PVR_ERROR_NO_ERROR; } while (vresp->getRemainingLength() >= 2 * 8 + 4 && *size < PVR_ADDON_EDL_LENGTH) { edl[*size].start = vresp->extract_S64(); edl[*size].end = vresp->extract_S64(); edl[*size].type = (PVR_EDL_TYPE)vresp->extract_S32(); (*size)++; } return PVR_ERROR_NO_ERROR; } int cVNSIData::GetDeletedRecordingsCount() { cRequestPacket vrp; vrp.init(VNSI_RECORDINGS_DELETED_GETCOUNT); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return -1; } uint32_t count = vresp->extract_U32(); return count; } PVR_ERROR cVNSIData::GetDeletedRecordingsList(ADDON_HANDLE handle) { cRequestPacket vrp; vrp.init(VNSI_RECORDINGS_DELETED_GETLIST); auto vresp = ReadResult(&vrp); if (!vresp) { XBMC->Log(LOG_ERROR, "%s - Can't get response packed", __FUNCTION__); return PVR_ERROR_UNKNOWN; } std::string strRecordingId; while (vresp->getRemainingLength() >= 5 * 4 + 5) { PVR_RECORDING tag; memset(&tag, 0, sizeof(tag)); tag.recordingTime = vresp->extract_U32(); tag.iDuration = vresp->extract_U32(); tag.iPriority = vresp->extract_U32(); tag.iLifetime = vresp->extract_U32(); tag.bIsDeleted = true; char *strChannelName = vresp->extract_String(); strncpy(tag.strChannelName, strChannelName, sizeof(tag.strChannelName) - 1); if (GetProtocol() >= 9) { tag.iChannelUid = vresp->extract_S32(); } else tag.iChannelUid = PVR_CHANNEL_INVALID_UID; char *strTitle = vresp->extract_String(); strncpy(tag.strTitle, strTitle, sizeof(tag.strTitle) - 1); char *strEpisodeName = vresp->extract_String(); strncpy(tag.strEpisodeName, strEpisodeName, sizeof(tag.strEpisodeName) - 1); strncpy(tag.strPlotOutline, strEpisodeName, sizeof(tag.strEpisodeName) - 1); char *strPlot = vresp->extract_String(); strncpy(tag.strPlot, strPlot, sizeof(tag.strPlot) - 1); char *strDirectory = vresp->extract_String(); strncpy(tag.strDirectory, strDirectory, sizeof(tag.strDirectory) - 1); strRecordingId = StringUtils::Format("%i", vresp->extract_U32()); strncpy(tag.strRecordingId, strRecordingId.c_str(), sizeof(tag.strRecordingId) - 1); PVR->TransferRecordingEntry(handle, &tag); } return PVR_ERROR_NO_ERROR; } PVR_ERROR cVNSIData::UndeleteRecording(const PVR_RECORDING& recinfo) { cRequestPacket vrp; vrp.init(VNSI_RECORDINGS_DELETED_UNDELETE); vrp.add_U32(atoi(recinfo.strRecordingId)); auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { return PVR_ERROR_UNKNOWN; } uint32_t returnCode = vresp->extract_U32(); switch(returnCode) { case VNSI_RET_DATALOCKED: return PVR_ERROR_FAILED; case VNSI_RET_RECRUNNING: return PVR_ERROR_RECORDING_RUNNING; case VNSI_RET_DATAINVALID: return PVR_ERROR_INVALID_PARAMETERS; case VNSI_RET_ERROR: return PVR_ERROR_SERVER_ERROR; } return PVR_ERROR_NO_ERROR; } PVR_ERROR cVNSIData::DeleteAllRecordingsFromTrash() { cRequestPacket vrp; vrp.init(VNSI_RECORDINGS_DELETED_DELETE_ALL); auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { return PVR_ERROR_UNKNOWN; } uint32_t returnCode = vresp->extract_U32(); switch(returnCode) { case VNSI_RET_DATALOCKED: return PVR_ERROR_FAILED; case VNSI_RET_RECRUNNING: return PVR_ERROR_RECORDING_RUNNING; case VNSI_RET_DATAINVALID: return PVR_ERROR_INVALID_PARAMETERS; case VNSI_RET_ERROR: return PVR_ERROR_SERVER_ERROR; } return PVR_ERROR_NO_ERROR; } bool cVNSIData::OnResponsePacket(cResponsePacket* pkt) { return false; } void *cVNSIData::Process() { std::unique_ptr vresp; while (!IsStopped()) { // try to reconnect if (m_connectionLost) { // First wake up the VDR server in case a MAC-Address is specified if (!m_wolMac.empty()) { if (!XBMC->WakeOnLan(m_wolMac.c_str())) { XBMC->Log(LOG_ERROR, "Error waking up VNSI Server at MAC-Address %s", m_wolMac.c_str()); } } cVNSISession::eCONNECTIONSTATE state = TryReconnect(); if (state != cVNSISession::CONN_ESABLISHED) { if (state == cVNSISession::CONN_HOST_NOT_REACHABLE) { PVR->ConnectionStateChange("vnsi server not reacheable", PVR_CONNECTION_STATE_SERVER_UNREACHABLE, nullptr); } Sleep(1000); continue; } } // if there's anything in the buffer, read it if ((vresp = cVNSISession::ReadMessage(5, 10000)) == NULL) { Sleep(5); continue; } // CHANNEL_REQUEST_RESPONSE if (vresp->getChannelID() == VNSI_CHANNEL_REQUEST_RESPONSE) { m_queue.Set(std::move(vresp)); } // CHANNEL_STATUS else if (vresp->getChannelID() == VNSI_CHANNEL_STATUS) { if (vresp->getRequestID() == VNSI_STATUS_MESSAGE) { uint32_t type = vresp->extract_U32(); char* msgstr = vresp->extract_String(); char* strMessageTranslated(NULL); if (g_bCharsetConv) strMessageTranslated = XBMC->UnknownToUTF8(msgstr); else strMessageTranslated = msgstr; if (type == 2) XBMC->QueueNotification(QUEUE_ERROR, strMessageTranslated); if (type == 1) XBMC->QueueNotification(QUEUE_WARNING, strMessageTranslated); else XBMC->QueueNotification(QUEUE_INFO, strMessageTranslated); if (g_bCharsetConv) XBMC->FreeString(strMessageTranslated); } else if (vresp->getRequestID() == VNSI_STATUS_RECORDING) { vresp->extract_U32(); // device currently unused vresp->extract_U32(); // on (not used) char* str1 = vresp->extract_String(); char* str2 = vresp->extract_String(); // PVR->Recording(str1, str2, on!=0?true:false); PVR->TriggerTimerUpdate(); } else if (vresp->getRequestID() == VNSI_STATUS_TIMERCHANGE) { XBMC->Log(LOG_DEBUG, "Server requested timer update"); PVR->TriggerTimerUpdate(); } else if (vresp->getRequestID() == VNSI_STATUS_CHANNELCHANGE) { XBMC->Log(LOG_DEBUG, "Server requested channel update"); PVR->TriggerChannelUpdate(); } else if (vresp->getRequestID() == VNSI_STATUS_RECORDINGSCHANGE) { XBMC->Log(LOG_DEBUG, "Server requested recordings update"); PVR->TriggerRecordingUpdate(); } else if (vresp->getRequestID() == VNSI_STATUS_EPGCHANGE) { uint32_t channel = vresp->extract_U32(); XBMC->Log(LOG_DEBUG, "Server requested Epg update for channel: %d", channel); PVR->TriggerEpgUpdate(channel); } } // UNKOWN CHANNELID else if (!OnResponsePacket(vresp.get())) { XBMC->Log(LOG_ERROR, "%s - Rxd a response packet on channel %lu !!", __FUNCTION__, vresp->getChannelID()); } } return NULL; } int cVNSIData::GetChannelGroupCount(bool automatic) { cRequestPacket vrp; vrp.init(VNSI_CHANNELGROUP_GETCOUNT); vrp.add_U32(automatic); auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { return 0; } uint32_t count = vresp->extract_U32(); return count; } bool cVNSIData::GetChannelGroupList(ADDON_HANDLE handle, bool bRadio) { cRequestPacket vrp; vrp.init(VNSI_CHANNELGROUP_LIST); vrp.add_U8(bRadio); auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { return false; } while (vresp->getRemainingLength() >= 1 + 1) { PVR_CHANNEL_GROUP tag; memset(&tag, 0, sizeof(tag)); char *strGroupName = vresp->extract_String(); strncpy(tag.strGroupName, strGroupName, sizeof(tag.strGroupName) - 1); tag.bIsRadio = vresp->extract_U8()!=0?true:false; tag.iPosition = 0; PVR->TransferChannelGroup(handle, &tag); } return true; } bool cVNSIData::GetChannelGroupMembers(ADDON_HANDLE handle, const PVR_CHANNEL_GROUP &group) { cRequestPacket vrp; vrp.init(VNSI_CHANNELGROUP_MEMBERS); vrp.add_String(group.strGroupName); vrp.add_U8(group.bIsRadio); vrp.add_U8(1); // filter channels auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { return false; } while (vresp->getRemainingLength() >= 2 * 4) { PVR_CHANNEL_GROUP_MEMBER tag; memset(&tag, 0, sizeof(tag)); strncpy(tag.strGroupName, group.strGroupName, sizeof(tag.strGroupName) - 1); tag.iChannelUniqueId = vresp->extract_U32(); tag.iChannelNumber = vresp->extract_U32(); PVR->TransferChannelGroupMember(handle, &tag); } return true; } pvr.vdr.vnsi-3.6.4-Leia/src/VNSIData.h000066400000000000000000000073541362540622500173020ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "VNSISession.h" #include "client.h" #include #include class cResponsePacket; class cRequestPacket; class cVNSIData : public cVNSISession, public P8PLATFORM::CThread { public: cVNSIData(); virtual ~cVNSIData(); bool Start(const std::string& hostname, int port, const char* name = NULL, const std::string& mac = ""); bool SupportChannelScan(); bool SupportRecordingsUndelete(); bool EnableStatusInterface(bool onOff, bool wait = true); bool GetDriveSpace(long long *total, long long *used); int GetChannelsCount(); bool GetChannelsList(ADDON_HANDLE handle, bool radio = false); bool GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL &channel, time_t start, time_t end); int GetChannelGroupCount(bool automatic); bool GetChannelGroupList(ADDON_HANDLE handle, bool bRadio); bool GetChannelGroupMembers(ADDON_HANDLE handle, const PVR_CHANNEL_GROUP &group); bool GetTimersList(ADDON_HANDLE handle); int GetTimersCount(); PVR_ERROR AddTimer(const PVR_TIMER &timerinfo); PVR_ERROR GetTimerInfo(unsigned int timernumber, PVR_TIMER &tag); PVR_ERROR DeleteTimer(const PVR_TIMER &timerinfo, bool force = false); PVR_ERROR RenameTimer(const PVR_TIMER &timerinfo, const char *newname); PVR_ERROR UpdateTimer(const PVR_TIMER &timerinfo); PVR_ERROR GetTimerTypes(PVR_TIMER_TYPE types[], int *size); bool GenTimerChildren(const PVR_TIMER &timer, ADDON_HANDLE handle); std::string GenTimerFolder(std::string directory, std::string title); int GetRecordingsCount(); PVR_ERROR GetRecordingsList(ADDON_HANDLE handle); PVR_ERROR RenameRecording(const PVR_RECORDING& recinfo, const char* newname); PVR_ERROR DeleteRecording(const PVR_RECORDING& recinfo); PVR_ERROR GetRecordingEdl(const PVR_RECORDING& recinfo, PVR_EDL_ENTRY edl[], int *size); int GetDeletedRecordingsCount(); PVR_ERROR GetDeletedRecordingsList(ADDON_HANDLE handle); PVR_ERROR UndeleteRecording(const PVR_RECORDING& recording); PVR_ERROR DeleteAllRecordingsFromTrash(); PVR_ERROR UndeleteAllRecordingsFromTrash(); std::unique_ptr ReadResult(cRequestPacket* vrp); protected: virtual void *Process(void) override; virtual bool OnResponsePacket(cResponsePacket *pkt); void OnDisconnect() override; void OnReconnect() override; private: struct SMessage { P8PLATFORM::CEvent event; std::unique_ptr pkt; }; class Queue { typedef std::map SMessages; SMessages m_queue; P8PLATFORM::CMutex m_mutex; public: SMessage &Enqueue(uint32_t serial); std::unique_ptr Dequeue(uint32_t serial, SMessage &message); void Set(std::unique_ptr &&vresp); }; Queue m_queue; std::string m_videodir; std::string m_wolMac; }; pvr.vdr.vnsi-3.6.4-Leia/src/VNSIDemux.cpp000066400000000000000000000356421362540622500200470ustar00rootroot00000000000000/* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include #include #include #include #include "VNSIDemux.h" #include "responsepacket.h" #include "requestpacket.h" #include "vnsicommand.h" #include "tools.h" using namespace ADDON; cVNSIDemux::cVNSIDemux() { } cVNSIDemux::~cVNSIDemux() { Close(); } void cVNSIDemux::Close() { if (IsOpen() && GetProtocol() >= 9) { XBMC->Log(LOG_DEBUG, "closing demuxer"); cRequestPacket vrp; vrp.init(VNSI_CHANNELSTREAM_CLOSE); try { auto resp = ReadResult(&vrp); if (!resp) { XBMC->Log(LOG_ERROR, "%s - failed to close streaming", __FUNCTION__); } } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); } } cVNSISession::Close(); } bool cVNSIDemux::OpenChannel(const PVR_CHANNEL &channelinfo) { m_channelinfo = channelinfo; if(!cVNSISession::Open(g_szHostname, g_iPort)) return false; if(!cVNSISession::Login()) return false; return SwitchChannel(m_channelinfo); } bool cVNSIDemux::GetStreamProperties(PVR_STREAM_PROPERTIES* props) { for (int i=0; istream[i], &m_streams.stream[i], sizeof(PVR_STREAM_PROPERTIES::PVR_STREAM)); } props->iStreamCount = m_streams.iStreamCount; return true; } void cVNSIDemux::Abort() { m_streams.iStreamCount = 0; } DemuxPacket* cVNSIDemux::Read() { if (m_connectionLost) { return nullptr; } ReadStatus(); auto resp = ReadMessage(1000, g_iConnectTimeout * 1000); if(resp == nullptr) return PVR->AllocateDemuxPacket(0); if (resp->getChannelID() != VNSI_CHANNEL_STREAM) { return nullptr; } if (resp->getOpCodeID() == VNSI_STREAM_CHANGE) { StreamChange(resp.get()); DemuxPacket* pkt = PVR->AllocateDemuxPacket(0); pkt->iStreamId = DMX_SPECIALID_STREAMCHANGE; return pkt; } else if (resp->getOpCodeID() == VNSI_STREAM_STATUS) { StreamStatus(resp.get()); } else if (resp->getOpCodeID() == VNSI_STREAM_SIGNALINFO) { StreamSignalInfo(resp.get()); } else if (resp->getOpCodeID() == VNSI_STREAM_CONTENTINFO) { // send stream updates only if there are changes if(StreamContentInfo(resp.get())) { DemuxPacket* pkt = PVR->AllocateDemuxPacket(0); pkt->iStreamId = DMX_SPECIALID_STREAMCHANGE; return pkt; } } else if (resp->getOpCodeID() == VNSI_STREAM_MUXPKT) { // figure out the stream id for this packet int pid = resp->getStreamID(); // stream found ? if(pid >= 0 && resp->getMuxSerial() == m_MuxPacketSerial) { DemuxPacket* p = (DemuxPacket*)resp->stealUserData(); p->iSize = resp->getUserDataLength(); p->duration = (double)resp->getDuration() * DVD_TIME_BASE / 1000000; p->dts = (double)resp->getDTS() * DVD_TIME_BASE / 1000000; p->pts = (double)resp->getPTS() * DVD_TIME_BASE / 1000000; p->iStreamId = pid; int idx = -1; for (int i=0; i= 0) type = m_streams.stream[idx].iCodecType; return p; } else if (pid >= 0 && resp->getMuxSerial() != m_MuxPacketSerial) { // ignore silently, may happen after a seek } else { XBMC->Log(LOG_DEBUG, "stream id %i not found", resp->getStreamID()); } } else if (resp->getOpCodeID() == VNSI_STREAM_TIMES) { m_bTimeshift = resp->extract_U8(); m_ReferenceTime = resp->extract_U32(); m_ReferenceDTS = (double)resp->extract_U64(); m_minPTS = (double)resp->extract_U64(); m_maxPTS = (double)resp->extract_U64(); } else if (resp->getOpCodeID() == VNSI_STREAM_BUFFERSTATS) { m_bTimeshift = resp->extract_U8(); m_minPTS = (resp->extract_U32() - m_ReferenceTime) * DVD_TIME_BASE + m_ReferenceDTS; m_maxPTS = (resp->extract_U32() - m_ReferenceTime) * DVD_TIME_BASE + m_ReferenceDTS; } else if (resp->getOpCodeID() == VNSI_STREAM_REFTIME) { m_ReferenceTime = resp->extract_U32(); m_ReferenceDTS = (double)resp->extract_U64(); } return PVR->AllocateDemuxPacket(0); } void cVNSIDemux::ReadStatus() { if (m_connectionLost || !m_statusCon.IsConnected()) { return; } while (true) { auto resp = m_statusCon.ReadStatus(); if (!resp) { if ((time(nullptr) - m_lastStatus) > 2) { cRequestPacket vrp; vrp.init(VNSI_CHANNELSTREAM_STATUS_REQUEST); if (!TransmitMessage(&vrp)) { SignalConnectionLost(); } } break; } if (resp->getOpCodeID() == VNSI_STREAM_TIMES) { m_bTimeshift = resp->extract_U8(); m_ReferenceTime = resp->extract_U32(); m_ReferenceDTS = (double)resp->extract_U64(); m_minPTS = (double)resp->extract_U64(); m_maxPTS = (double)resp->extract_U64(); } else if (resp->getOpCodeID() == VNSI_STREAM_SIGNALINFO) { StreamSignalInfo(resp.get()); } else if (resp->getOpCodeID() == VNSI_STREAM_STATUS) { StreamStatus(resp.get()); } m_lastStatus = time(nullptr); } } bool cVNSIDemux::GetStreamTimes(PVR_STREAM_TIMES *times) { ReadStatus(); times->startTime = m_ReferenceTime; times->ptsStart = m_ReferenceDTS; times->ptsBegin = m_minPTS; times->ptsEnd = m_maxPTS; return true; } bool cVNSIDemux::SeekTime(int time, bool backwards, double *startpts) { cRequestPacket vrp; int64_t seek_pts = (int64_t)time * 1000; if (startpts) *startpts = seek_pts; vrp.init(VNSI_CHANNELSTREAM_SEEK); vrp.add_S64(seek_pts); vrp.add_U8(backwards); auto resp = ReadResult(&vrp); if (!resp) { XBMC->Log(LOG_ERROR, "%s - failed to seek2", __FUNCTION__); return false; } uint32_t retCode = resp->extract_U32(); uint32_t serial = resp->extract_U32(); if (retCode == VNSI_RET_OK) { m_MuxPacketSerial = serial; return true; } else return false; } bool cVNSIDemux::SwitchChannel(const PVR_CHANNEL &channelinfo) { XBMC->Log(LOG_DEBUG, "changing to channel %d", channelinfo.iChannelNumber); cRequestPacket vrp1; vrp1.init(VNSI_GETSETUP); vrp1.add_String(CONFNAME_TIMESHIFT); auto resp = ReadResult(&vrp1); if (!resp) { XBMC->Log(LOG_ERROR, "%s - failed to get timeshift mode", __FUNCTION__); return false; } m_bTimeshift = resp->extract_U32(); cRequestPacket vrp2; vrp2.init(VNSI_CHANNELSTREAM_OPEN); vrp2.add_U32(channelinfo.iUniqueId); vrp2.add_S32(g_iPriority); vrp2.add_U8(g_iTimeshift); if (!ReadSuccess(&vrp2)) { XBMC->Log(LOG_ERROR, "%s - failed to set channel", __FUNCTION__); return false; } if (GetProtocol() >= 13) { int fd = m_statusCon.GetSocket(); if (fd >= 0) { cRequestPacket vrp; vrp.init(VNSI_CHANNELSTREAM_STATUS_SOCKET); vrp.add_S32(fd); if (ReadSuccess(&vrp)) { m_statusCon.ReleaseServerClient(); XBMC->Log(LOG_DEBUG, "%s - established status connection", __FUNCTION__); } } } m_channelinfo = channelinfo; m_streams.iStreamCount = 0; m_MuxPacketSerial = 0; m_ReferenceTime = 0; m_minPTS = 0; m_maxPTS = 0; return true; } bool cVNSIDemux::GetSignalStatus(PVR_SIGNAL_STATUS &qualityinfo) { if (m_Quality.fe_name.empty()) return true; strncpy(qualityinfo.strAdapterName, m_Quality.fe_name.c_str(), sizeof(qualityinfo.strAdapterName)); strncpy(qualityinfo.strAdapterStatus, m_Quality.fe_status.c_str(), sizeof(qualityinfo.strAdapterStatus)); qualityinfo.iSignal = (uint16_t)m_Quality.fe_signal; qualityinfo.iSNR = (uint16_t)m_Quality.fe_snr; qualityinfo.iBER = (uint32_t)m_Quality.fe_ber; qualityinfo.iUNC = (uint32_t)m_Quality.fe_unc; return true; } void cVNSIDemux::StreamChange(cResponsePacket *resp) { int count = 0; m_streams.iStreamCount = 0; while (resp->getRemainingLength() >= 4 + 1) { uint32_t pid = resp->extract_U32(); const char* type = resp->extract_String(); memset(&m_streams.stream[count], 0, sizeof(PVR_STREAM_PROPERTIES::PVR_STREAM)); CodecDescriptor codecId = CodecDescriptor::GetCodecByName(type); if (codecId.Codec().codec_type != XBMC_CODEC_TYPE_UNKNOWN) { m_streams.stream[count].iPID = pid; m_streams.stream[count].iCodecType = codecId.Codec().codec_type; m_streams.stream[count].iCodecId = codecId.Codec().codec_id; } else { return; } if (codecId.Codec().codec_type == XBMC_CODEC_TYPE_AUDIO) { const char *language = resp->extract_String(); m_streams.stream[count].iChannels = resp->extract_U32(); m_streams.stream[count].iSampleRate = resp->extract_U32(); m_streams.stream[count].iBlockAlign = resp->extract_U32(); m_streams.stream[count].iBitRate = resp->extract_U32(); m_streams.stream[count].iBitsPerSample = resp->extract_U32(); m_streams.stream[count].strLanguage[0] = language[0]; m_streams.stream[count].strLanguage[1] = language[1]; m_streams.stream[count].strLanguage[2] = language[2]; m_streams.stream[count].strLanguage[3] = 0; } else if (codecId.Codec().codec_type == XBMC_CODEC_TYPE_VIDEO) { m_streams.stream[count].iFPSScale = resp->extract_U32(); m_streams.stream[count].iFPSRate = resp->extract_U32(); m_streams.stream[count].iHeight = resp->extract_U32(); m_streams.stream[count].iWidth = resp->extract_U32(); m_streams.stream[count].fAspect = (float)resp->extract_Double(); m_streams.stream[count].strLanguage[0] = 0; m_streams.stream[count].strLanguage[1] = 0; m_streams.stream[count].strLanguage[2] = 0; m_streams.stream[count].strLanguage[3] = 0; } else if (codecId.Codec().codec_type == XBMC_CODEC_TYPE_SUBTITLE) { const char *language = resp->extract_String(); uint32_t composition_id = resp->extract_U32(); uint32_t ancillary_id = resp->extract_U32(); m_streams.stream[count].strLanguage[0] = language[0]; m_streams.stream[count].strLanguage[1] = language[1]; m_streams.stream[count].strLanguage[2] = language[2]; m_streams.stream[count].strLanguage[3] = 0; m_streams.stream[count].iSubtitleInfo = (composition_id & 0xffff) | ((ancillary_id & 0xffff) << 16); } else if (codecId.Codec().codec_type == XBMC_CODEC_TYPE_RDS) { const char *language = resp->extract_String(); uint32_t rel_channel_pid = resp->extract_U32(); m_streams.stream[count].strLanguage[0] = language[0]; m_streams.stream[count].strLanguage[1] = language[1]; m_streams.stream[count].strLanguage[2] = language[2]; m_streams.stream[count].strLanguage[3] = 0; } else { m_streams.iStreamCount = 0; return; } count++; } m_streams.iStreamCount = count; } void cVNSIDemux::StreamStatus(cResponsePacket *resp) { const char* status = resp->extract_String(); if(status != NULL) { XBMC->Log(LOG_DEBUG, "%s - %s", __FUNCTION__, status); XBMC->QueueNotification(QUEUE_INFO, status); } } void cVNSIDemux::StreamSignalInfo(cResponsePacket *resp) { const char* name = resp->extract_String(); const char* status = resp->extract_String(); m_Quality.fe_name = name; m_Quality.fe_status = status; m_Quality.fe_snr = resp->extract_U32(); m_Quality.fe_signal = resp->extract_U32(); m_Quality.fe_ber = resp->extract_U32(); m_Quality.fe_unc = resp->extract_U32(); } bool cVNSIDemux::StreamContentInfo(cResponsePacket *resp) { while (resp->getRemainingLength() >= 4) { uint32_t pid = resp->extract_U32(); PVR_STREAM_PROPERTIES::PVR_STREAM* props = nullptr; for (int i=0; iiCodecType == XBMC_CODEC_TYPE_AUDIO) { const char *language = resp->extract_String(); props->iChannels = resp->extract_U32(); props->iSampleRate = resp->extract_U32(); props->iBlockAlign = resp->extract_U32(); props->iBitRate = resp->extract_U32(); props->iBitsPerSample = resp->extract_U32(); props->strLanguage[0] = language[0]; props->strLanguage[1] = language[1]; props->strLanguage[2] = language[2]; props->strLanguage[3] = 0; } else if (props->iCodecType == XBMC_CODEC_TYPE_VIDEO) { props->iFPSScale = resp->extract_U32(); props->iFPSRate = resp->extract_U32(); props->iHeight = resp->extract_U32(); props->iWidth = resp->extract_U32(); props->fAspect = (float)resp->extract_Double(); } else if (props->iCodecType == XBMC_CODEC_TYPE_SUBTITLE) { const char *language = resp->extract_String(); uint32_t composition_id = resp->extract_U32(); uint32_t ancillary_id = resp->extract_U32(); props->iSubtitleInfo = (composition_id & 0xffff) | ((ancillary_id & 0xffff) << 16); props->strLanguage[0] = language[0]; props->strLanguage[1] = language[1]; props->strLanguage[2] = language[2]; props->strLanguage[3] = 0; } } else { XBMC->Log(LOG_ERROR, "%s - unknown stream id: %d", __FUNCTION__, pid); break; } } return true; } //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- int CVNSIDemuxStatus::GetSocket() { Close(); if (!Open(g_szHostname, g_iPort)) { return -1; } if (!Login()) { return -1; } cRequestPacket vrp; vrp.init(VNSI_GETSOCKET); auto resp = ReadResult(&vrp); if (!resp) { XBMC->Log(LOG_ERROR, "%s - failed to get socket", __FUNCTION__); return -1; } int fd = resp->extract_S32(); return fd; } void CVNSIDemuxStatus::ReleaseServerClient() { cRequestPacket vrp; vrp.init(VNSI_INVALIDATESOCKET); if (!ReadSuccess(&vrp)) { XBMC->Log(LOG_ERROR, "%s - failed to release server client", __FUNCTION__); } } std::unique_ptr CVNSIDemuxStatus::ReadStatus() { if (!IsOpen()) return nullptr; return ReadMessage(1, 10000); } bool CVNSIDemuxStatus::IsConnected() { return IsOpen(); } pvr.vdr.vnsi-3.6.4-Leia/src/VNSIDemux.h000066400000000000000000000046741362540622500175150ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "VNSISession.h" #include "client.h" #include #include #include "kodi/xbmc_pvr_types.h" class cResponsePacket; struct SQuality { std::string fe_name; std::string fe_status; uint32_t fe_snr; uint32_t fe_signal; uint32_t fe_ber; uint32_t fe_unc; }; class CVNSIDemuxStatus : public cVNSISession { public: CVNSIDemuxStatus() = default; virtual ~CVNSIDemuxStatus() = default; int GetSocket(); void ReleaseServerClient(); std::unique_ptr ReadStatus(); bool IsConnected(); }; class cVNSIDemux : public cVNSISession { public: cVNSIDemux(); virtual ~cVNSIDemux(); void Close(); bool OpenChannel(const PVR_CHANNEL &channelinfo); void Abort(); bool GetStreamProperties(PVR_STREAM_PROPERTIES* props); DemuxPacket* Read(); bool SwitchChannel(const PVR_CHANNEL &channelinfo); int CurrentChannel() { return m_channelinfo.iChannelNumber; } bool GetSignalStatus(PVR_SIGNAL_STATUS &qualityinfo); bool IsTimeshift() { return m_bTimeshift; } bool SeekTime(int time, bool backwards, double *startpts); bool GetStreamTimes(PVR_STREAM_TIMES *times); protected: void StreamChange(cResponsePacket *resp); void StreamStatus(cResponsePacket *resp); void StreamSignalInfo(cResponsePacket *resp); bool StreamContentInfo(cResponsePacket *resp); void ReadStatus(); PVR_STREAM_PROPERTIES m_streams; PVR_CHANNEL m_channelinfo; SQuality m_Quality; bool m_bTimeshift; uint32_t m_MuxPacketSerial; time_t m_ReferenceTime; double m_ReferenceDTS; double m_minPTS; double m_maxPTS; CVNSIDemuxStatus m_statusCon; time_t m_lastStatus = 0; }; pvr.vdr.vnsi-3.6.4-Leia/src/VNSIRecording.cpp000066400000000000000000000106661362540622500207000ustar00rootroot00000000000000/* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include #include "VNSIRecording.h" #include "responsepacket.h" #include "requestpacket.h" #include "vnsicommand.h" #define SEEK_POSSIBLE 0x10 // flag used to check if protocol allows seeks using namespace ADDON; cVNSIRecording::cVNSIRecording() { m_currentPlayingRecordLengthMSec = 0; } cVNSIRecording::~cVNSIRecording() { Close(); } bool cVNSIRecording::OpenRecording(const PVR_RECORDING& recinfo) { m_recinfo = recinfo; if(!cVNSISession::Open(g_szHostname, g_iPort, "XBMC RecordingStream Receiver")) return false; if(!cVNSISession::Login()) return false; cRequestPacket vrp; vrp.init(VNSI_RECSTREAM_OPEN); vrp.add_U32(atoi(recinfo.strRecordingId)); auto vresp = ReadResult(&vrp); if (!vresp) return false; uint32_t returnCode = vresp->extract_U32(); if (returnCode == VNSI_RET_OK) { m_currentPlayingRecordFrames = vresp->extract_U32(); m_currentPlayingRecordBytes = vresp->extract_U64(); m_currentPlayingRecordPosition = 0; } else XBMC->Log(LOG_ERROR, "%s - Can't open recording '%s'", __FUNCTION__, recinfo.strTitle); return (returnCode == VNSI_RET_OK); } void cVNSIRecording::Close() { if(IsOpen()) { try { cRequestPacket vrp; vrp.init(VNSI_RECSTREAM_CLOSE); ReadSuccess(&vrp); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); } } cVNSISession::Close(); } int cVNSIRecording::Read(unsigned char* buf, uint32_t buf_size) { if (m_connectionLost && TryReconnect() != cVNSISession::CONN_ESABLISHED) { *buf = 0; SleepMs(100); return 1; } if (m_currentPlayingRecordPosition >= m_currentPlayingRecordBytes) { GetLength(); if (m_currentPlayingRecordPosition >= m_currentPlayingRecordBytes) return 0; } cRequestPacket vrp; vrp.init(VNSI_RECSTREAM_GETBLOCK); vrp.add_U64(m_currentPlayingRecordPosition); vrp.add_U32(buf_size); auto vresp = ReadResult(&vrp); if (!vresp) return -1; uint32_t length = vresp->getUserDataLength(); uint8_t *data = vresp->getUserData(); if (length > buf_size) { XBMC->Log(LOG_ERROR, "%s: PANIC - Received more bytes as requested", __FUNCTION__); return 0; } memcpy(buf, data, length); m_currentPlayingRecordPosition += length; return length; } bool cVNSIRecording::GetStreamTimes(PVR_STREAM_TIMES *times) { GetLength(); if (m_currentPlayingRecordLengthMSec == 0) return false; times->startTime = 0; times->ptsStart = 0; times->ptsBegin = 0; times->ptsEnd = m_currentPlayingRecordLengthMSec * 1000; return true; } long long cVNSIRecording::Seek(long long pos, uint32_t whence) { uint64_t nextPos = m_currentPlayingRecordPosition; switch (whence) { case SEEK_SET: nextPos = pos; break; case SEEK_CUR: nextPos += pos; break; case SEEK_END: if (m_currentPlayingRecordBytes) nextPos = m_currentPlayingRecordBytes - pos; else return -1; break; case SEEK_POSSIBLE: return 1; default: return -1; } if (nextPos >= m_currentPlayingRecordBytes) { return 0; } m_currentPlayingRecordPosition = nextPos; return m_currentPlayingRecordPosition; } long long cVNSIRecording::Length(void) { return m_currentPlayingRecordBytes; } void cVNSIRecording::OnReconnect() { OpenRecording(m_recinfo); } void cVNSIRecording::GetLength() { cRequestPacket vrp; vrp.init(VNSI_RECSTREAM_GETLENGTH); auto vresp = ReadResult(&vrp); if (!vresp) return; m_currentPlayingRecordBytes = vresp->extract_U64(); if (GetProtocol() >= 12) m_currentPlayingRecordLengthMSec = vresp->extract_U64(); } pvr.vdr.vnsi-3.6.4-Leia/src/VNSIRecording.h000066400000000000000000000027541362540622500203440ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "VNSISession.h" #include "client.h" class cVNSIRecording : public cVNSISession { public: cVNSIRecording(); ~cVNSIRecording(); bool OpenRecording(const PVR_RECORDING& recinfo); void Close() override; int Read(unsigned char* buf, uint32_t buf_size); long long Seek(long long pos, uint32_t whence); long long Length(void); bool GetStreamTimes(PVR_STREAM_TIMES *times); protected: void OnReconnect() override; void GetLength(); private: PVR_RECORDING m_recinfo; uint64_t m_currentPlayingRecordBytes; uint64_t m_currentPlayingRecordLengthMSec; uint32_t m_currentPlayingRecordFrames; uint64_t m_currentPlayingRecordPosition; }; pvr.vdr.vnsi-3.6.4-Leia/src/VNSISession.cpp000066400000000000000000000235431362540622500204050ustar00rootroot00000000000000/* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "VNSISession.h" #include "client.h" #include #include #include #include #include "responsepacket.h" #include "requestpacket.h" #include "vnsicommand.h" #include "tools.h" #include "p8-platform/sockets/tcp.h" #include "p8-platform/util/timeutils.h" /* Needed on Mac OS/X */ #ifndef SOL_TCP #define SOL_TCP IPPROTO_TCP #endif using namespace ADDON; using namespace P8PLATFORM; cVNSISession::cVNSISession() : m_protocol(0) , m_socket(NULL) , m_connectionLost(false) { m_abort = false; } cVNSISession::~cVNSISession() { Close(); } void cVNSISession::Close() { CLockObject lock(m_mutex); if (IsOpen()) { m_socket->Close(); } delete m_socket; m_socket = NULL; } bool cVNSISession::Open(const std::string& hostname, int port, const char *name) { Close(); uint64_t iNow = GetTimeMs(); uint64_t iTarget = iNow + g_iConnectTimeout * 1000; if (!m_socket) m_socket = new CTcpConnection(hostname.c_str(), port); while (!m_socket->IsOpen() && iNow < iTarget && !m_abort) { if (!m_socket->Open(iTarget - iNow)) CEvent::Sleep(100); iNow = GetTimeMs(); } if (!m_socket->IsOpen() && !m_abort) { XBMC->Log(LOG_DEBUG, "%s - failed to connect to the backend (%s)", __FUNCTION__, m_socket->GetError().c_str()); return false; } // store connection data m_hostname = hostname; m_port = port; if (name != nullptr) m_name = name; return true; } bool cVNSISession::Login() { try { cRequestPacket vrp; vrp.init(VNSI_LOGIN); vrp.add_U32(VNSI_PROTOCOLVERSION); vrp.add_U8(false); // netlog if (!m_name.empty()) { vrp.add_String(m_name.c_str()); } else { vrp.add_String("XBMC Media Center"); } // read welcome std::unique_ptr vresp(ReadResult(&vrp)); if (!vresp) throw "failed to read greeting from server"; uint32_t protocol = vresp->extract_U32(); uint32_t vdrTime = vresp->extract_U32(); int32_t vdrTimeOffset = vresp->extract_S32(); const char *ServerName = vresp->extract_String(); const char *ServerVersion = vresp->extract_String(); m_server = ServerName; m_version = ServerVersion; m_protocol = (int)protocol; if (m_protocol < VNSI_MIN_PROTOCOLVERSION) throw "Protocol versions do not match"; if (m_name.empty()) { XBMC->Log(LOG_NOTICE, "Logged in at '%lu+%i' to '%s' Version: '%s' with protocol version '%d'", vdrTime, vdrTimeOffset, ServerName, ServerVersion, protocol); } } catch (const std::out_of_range& e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); Close(); return false; } catch (const char * str) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__,str); Close(); return false; } return true; } std::unique_ptr cVNSISession::ReadMessage(int iInitialTimeout /*= 10000*/, int iDatapacketTimeout /*= 10000*/) { uint32_t channelID = 0; uint32_t userDataLength = 0; uint8_t* userData = nullptr; cResponsePacket* vresp = nullptr; if(!ReadData((uint8_t*)&channelID, sizeof(uint32_t), iInitialTimeout)) return nullptr; // Data was read channelID = ntohl(channelID); if (channelID == VNSI_CHANNEL_STREAM) { vresp = new cResponsePacket(); if (!ReadData(vresp->getHeader(), vresp->getStreamHeaderLength(), iDatapacketTimeout)) { delete vresp; XBMC->Log(LOG_ERROR, "%s - lost sync on channel stream packet", __FUNCTION__); SignalConnectionLost(); return nullptr; } vresp->extractStreamHeader(); userDataLength = vresp->getUserDataLength(); if(vresp->getOpCodeID() == VNSI_STREAM_MUXPKT) { DemuxPacket* p = PVR->AllocateDemuxPacket(userDataLength); userData = (uint8_t*)p; if (userDataLength > 0) { if (!userData) return nullptr; if (!ReadData(p->pData, userDataLength, iDatapacketTimeout)) { PVR->FreeDemuxPacket(p); delete vresp; XBMC->Log(LOG_ERROR, "%s - lost sync on channel stream mux packet", __FUNCTION__); SignalConnectionLost(); return NULL; } } } else if (userDataLength > 0) { userData = (uint8_t*)malloc(userDataLength); if (!userData) return nullptr; if (!ReadData(userData, userDataLength, iDatapacketTimeout)) { free(userData); delete vresp; XBMC->Log(LOG_ERROR, "%s - lost sync on channel stream (other) packet", __FUNCTION__); SignalConnectionLost(); return NULL; } } vresp->setStream(userData, userDataLength); } else if (channelID == VNSI_CHANNEL_OSD) { vresp = new cResponsePacket(); if (!ReadData(vresp->getHeader(), vresp->getOSDHeaderLength(), iDatapacketTimeout)) { XBMC->Log(LOG_ERROR, "%s - lost sync on osd packet", __FUNCTION__); SignalConnectionLost(); return NULL; } vresp->extractOSDHeader(); userDataLength = vresp->getUserDataLength(); userData = NULL; if (userDataLength > 0) { userData = (uint8_t*)malloc(userDataLength); if (!userData) return nullptr; if (!ReadData(userData, userDataLength, iDatapacketTimeout)) { free(userData); delete vresp; XBMC->Log(LOG_ERROR, "%s - lost sync on additional osd packet", __FUNCTION__); SignalConnectionLost(); return NULL; } } vresp->setOSD(userData, userDataLength); } else { vresp = new cResponsePacket(); if (!ReadData(vresp->getHeader(), vresp->getHeaderLength(), iDatapacketTimeout)) { delete vresp; XBMC->Log(LOG_ERROR, "%s - lost sync on response packet", __FUNCTION__); SignalConnectionLost(); return NULL; } vresp->extractHeader(); userDataLength = vresp->getUserDataLength(); userData = NULL; if (userDataLength > 0) { userData = (uint8_t*)malloc(userDataLength); if (!userData) return nullptr; if (!ReadData(userData, userDataLength, iDatapacketTimeout)) { free(userData); delete vresp; XBMC->Log(LOG_ERROR, "%s - lost sync on additional response packet", __FUNCTION__); SignalConnectionLost(); return NULL; } } if (channelID == VNSI_CHANNEL_STATUS) vresp->setStatus(userData, userDataLength); else vresp->setResponse(userData, userDataLength); } return std::unique_ptr(vresp); } bool cVNSISession::TransmitMessage(cRequestPacket* vrp) { CLockObject lock(m_mutex); if (!IsOpen()) return false; ssize_t iWriteResult = m_socket->Write(vrp->getPtr(), vrp->getLen()); if (iWriteResult != (ssize_t)vrp->getLen()) { XBMC->Log(LOG_ERROR, "%s - Failed to write packet (%s), bytes written: %d of total: %d", __FUNCTION__, m_socket->GetError().c_str(), iWriteResult, vrp->getLen()); return false; } return true; } std::unique_ptr cVNSISession::ReadResult(cRequestPacket* vrp) { if (!TransmitMessage(vrp)) { SignalConnectionLost(); return nullptr; } std::unique_ptr pkt; while ((pkt = ReadMessage(10000, 10000))) { // Discard everything other as response packets until it is received if (pkt->getChannelID() == VNSI_CHANNEL_REQUEST_RESPONSE && pkt->getRequestID() == vrp->getSerial()) { return pkt; } } SignalConnectionLost(); return NULL; } bool cVNSISession::ReadSuccess(cRequestPacket* vrp) { std::unique_ptr pkt; if ((pkt = ReadResult(vrp)) == nullptr) { return false; } uint32_t retCode = pkt->extract_U32(); if (retCode != VNSI_RET_OK) { XBMC->Log(LOG_ERROR, "%s - failed with error code '%i'", __FUNCTION__, retCode); return false; } return true; } void cVNSISession::OnReconnect() { } void cVNSISession::OnDisconnect() { } cVNSISession::eCONNECTIONSTATE cVNSISession::TryReconnect() { if (!Open(m_hostname, m_port)) return CONN_HOST_NOT_REACHABLE; if (!Login()) return CONN_LOGIN_FAILED; XBMC->Log(LOG_DEBUG, "%s - reconnected", __FUNCTION__); m_connectionLost = false; OnReconnect(); return CONN_ESABLISHED; } bool cVNSISession::IsOpen() { CLockObject lock(m_mutex); return m_socket && m_socket->IsOpen(); } void cVNSISession::SignalConnectionLost() { if(m_connectionLost) return; XBMC->Log(LOG_ERROR, "%s - connection lost !!!", __FUNCTION__); m_connectionLost = true; Close(); OnDisconnect(); } bool cVNSISession::ReadData(uint8_t* buffer, int totalBytes, int timeout) { int bytesRead = m_socket->Read(buffer, totalBytes, timeout); if (bytesRead == totalBytes) return true; else if (m_socket->GetErrorNumber() == ETIMEDOUT && bytesRead > 0) { // we did read something. try to finish the read bytesRead += m_socket->Read(buffer+bytesRead, totalBytes-bytesRead, timeout); if (bytesRead == totalBytes) return true; } else if (m_socket->GetErrorNumber() == ETIMEDOUT) { return false; } SignalConnectionLost(); return false; } void cVNSISession::SleepMs(int ms) { CEvent::Sleep(ms); } pvr.vdr.vnsi-3.6.4-Leia/src/VNSISession.h000066400000000000000000000044461362540622500200530ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include #include #include #include "p8-platform/threads/threads.h" #include class cResponsePacket; class cRequestPacket; namespace P8PLATFORM { class CTcpConnection; } class cVNSISession { public: cVNSISession(); virtual ~cVNSISession(); virtual bool Open(const std::string& hostname, int port, const char *name = nullptr); virtual void Close(); int GetProtocol() const { return m_protocol; } const std::string& GetServerName() const { return m_server; } const std::string& GetVersion() const { return m_version; } enum eCONNECTIONSTATE { CONN_ESABLISHED = 0, CONN_HOST_NOT_REACHABLE, CONN_LOGIN_FAILED, CONN_UNKNOWN }; protected: virtual bool Login(); std::unique_ptr ReadMessage(int iInitialTimeout, int iDatapacketTimeout); bool TransmitMessage(cRequestPacket* vrp); std::unique_ptr ReadResult(cRequestPacket* vrp); bool ReadSuccess(cRequestPacket* m); void SleepMs(int ms); eCONNECTIONSTATE TryReconnect(); bool IsOpen(); virtual void OnDisconnect(); virtual void OnReconnect(); virtual void SignalConnectionLost(); std::string m_hostname; int m_port; std::string m_name; P8PLATFORM::CMutex m_mutex; int m_protocol; std::string m_server; std::string m_version; bool m_connectionLost; std::atomic_bool m_abort; private: bool ReadData(uint8_t* buffer, int totalBytes, int timeout); P8PLATFORM::CTcpConnection *m_socket; }; pvr.vdr.vnsi-3.6.4-Leia/src/client.cpp000066400000000000000000000634531362540622500175440ustar00rootroot00000000000000/* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "client.h" #include "kodi/xbmc_pvr_dll.h" #include "VNSIDemux.h" #include "VNSIRecording.h" #include "VNSIData.h" #include "VNSIChannelScan.h" #include "VNSIAdmin.h" #include "vnsicommand.h" #include "p8-platform/util/util.h" #include #include #include using namespace std; using namespace ADDON; using namespace P8PLATFORM; ADDON_STATUS m_CurStatus = ADDON_STATUS_UNKNOWN; /* User adjustable settings are saved here. * Default values are defined inside client.h * and exported to the other source files. */ std::string g_szHostname = DEFAULT_HOST; std::string g_szWolMac = ""; int g_iPort = DEFAULT_PORT; bool g_bCharsetConv = DEFAULT_CHARCONV; ///< Convert VDR's incoming strings to UTF8 character set int g_iConnectTimeout = DEFAULT_TIMEOUT; ///< The Socket connection timeout int g_iPriority = DEFAULT_PRIORITY; ///< The Priority this client have in response to other clients bool g_bAutoChannelGroups = DEFAULT_AUTOGROUPS; int g_iTimeshift = 1; std::string g_szIconPath = ""; int g_iChunkSize = DEFAULT_CHUNKSIZE; int prioVals[] = {0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,99,100}; CHelper_libXBMC_addon *XBMC = nullptr; CHelper_libKODI_guilib *GUI = nullptr; CHelper_libXBMC_pvr *PVR = nullptr; cVNSIDemux *VNSIDemuxer = nullptr; cVNSIData *VNSIData = nullptr; cVNSIRecording *VNSIRecording = nullptr; bool IsTimeshift; bool IsRealtime; int64_t PTSBufferEnd; P8PLATFORM::CMutex TimeshiftMutex; extern "C" { /*********************************************************** * Standart AddOn related public library functions ***********************************************************/ ADDON_STATUS ADDON_Create(void* hdl, void* props) { if (!hdl || !props) return ADDON_STATUS_UNKNOWN; XBMC = new CHelper_libXBMC_addon; if (!XBMC->RegisterMe(hdl)) { SAFE_DELETE(XBMC); return ADDON_STATUS_PERMANENT_FAILURE; } GUI = new CHelper_libKODI_guilib; if (!GUI->RegisterMe(hdl)) { SAFE_DELETE(GUI); SAFE_DELETE(XBMC); return ADDON_STATUS_PERMANENT_FAILURE; } PVR = new CHelper_libXBMC_pvr; if (!PVR->RegisterMe(hdl)) { SAFE_DELETE(PVR); SAFE_DELETE(GUI); SAFE_DELETE(XBMC); return ADDON_STATUS_PERMANENT_FAILURE; } XBMC->Log(LOG_DEBUG, "Creating VDR VNSI PVR-Client"); m_CurStatus = ADDON_STATUS_UNKNOWN; // Read setting "host" from settings.xml char * buffer = (char*) malloc(128); buffer[0] = 0; if (XBMC->GetSetting("host", buffer)) g_szHostname = buffer; else { // If setting is unknown fallback to defaults XBMC->Log(LOG_ERROR, "Couldn't get 'host' setting, falling back to '%s' as default", DEFAULT_HOST); g_szHostname = DEFAULT_HOST; } free(buffer); buffer = (char*) malloc(64); buffer[0] = 0; // Read setting "wol_mac" from settings.xml if (XBMC->GetSetting("wol_mac", buffer)) g_szWolMac = buffer; else { // If setting is unknown fallback to empty default XBMC->Log(LOG_ERROR, "Couldn't get 'wol_mac' setting, falling back to default"); g_szWolMac = ""; } free(buffer); // Read setting "port" from settings.xml if (!XBMC->GetSetting("port", &g_iPort)) { // If setting is unknown fallback to defaults XBMC->Log(LOG_ERROR, "Couldn't get 'port' setting, falling back to '%i' as default", DEFAULT_PORT); g_iPort = DEFAULT_PORT; } // Read setting "priority" from settings.xml int prio = DEFAULT_PRIORITY; if (!XBMC->GetSetting("priority", &prio)) { // If setting is unknown fallback to defaults XBMC->Log(LOG_ERROR, "Couldn't get 'priority' setting, falling back to %i as default", -1); prio = DEFAULT_PRIORITY; } g_iPriority = prioVals[prio]; /* Read setting "timeshift" from settings.xml */ if (!XBMC->GetSetting("timeshift", &g_iTimeshift)) { // If setting is unknown fallback to defaults XBMC->Log(LOG_ERROR, "Couldn't get 'timeshift' setting, falling back to %i as default", 1); g_iTimeshift = 1; } // Read setting "convertchar" from settings.xml if (!XBMC->GetSetting("convertchar", &g_bCharsetConv)) { /* If setting is unknown fallback to defaults */ XBMC->Log(LOG_ERROR, "Couldn't get 'convertchar' setting, falling back to 'false' as default"); g_bCharsetConv = DEFAULT_CHARCONV; } // Read setting "timeout" from settings.xml if (!XBMC->GetSetting("timeout", &g_iConnectTimeout)) { /* If setting is unknown fallback to defaults */ XBMC->Log(LOG_ERROR, "Couldn't get 'timeout' setting, falling back to %i seconds as default", DEFAULT_TIMEOUT); g_iConnectTimeout = DEFAULT_TIMEOUT; } // Read setting "autochannelgroups" from settings.xml if (!XBMC->GetSetting("autochannelgroups", &g_bAutoChannelGroups)) { // If setting is unknown fallback to defaults XBMC->Log(LOG_ERROR, "Couldn't get 'autochannelgroups' setting, falling back to 'false' as default"); g_bAutoChannelGroups = DEFAULT_AUTOGROUPS; } // Read setting "iconpath" from settings.xml buffer = (char*) malloc(512); buffer[0] = 0; /* Set the end of string */ if (XBMC->GetSetting("iconpath", buffer)) g_szIconPath = buffer; else { // If setting is unknown fallback to defaults XBMC->Log(LOG_ERROR, "Couldn't get 'iconpath' setting"); g_szIconPath = ""; } free(buffer); // Read setting "chunksize" from settings.xml if (!XBMC->GetSetting("chunksize", &g_iChunkSize)) { /* If setting is unknown fallback to defaults */ XBMC->Log(LOG_ERROR, "Couldn't get 'chunksize' setting, falling back to %i as default", DEFAULT_CHUNKSIZE); g_iChunkSize = DEFAULT_CHUNKSIZE; } try { VNSIData = new cVNSIData; m_CurStatus = ADDON_STATUS_OK; if (!VNSIData->Start(g_szHostname, g_iPort, nullptr, g_szWolMac)) { ADDON_Destroy(); m_CurStatus = ADDON_STATUS_PERMANENT_FAILURE; return m_CurStatus; } } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); ADDON_Destroy(); m_CurStatus = ADDON_STATUS_LOST_CONNECTION; return m_CurStatus; } PVR_MENUHOOK hook; hook.iHookId = 1; hook.category = PVR_MENUHOOK_SETTING; hook.iLocalizedStringId = 30107; PVR->AddMenuHook(&hook); return m_CurStatus; } ADDON_STATUS ADDON_GetStatus() { return m_CurStatus; } void ADDON_Destroy() { if (VNSIDemuxer) SAFE_DELETE(VNSIDemuxer); if (VNSIRecording) SAFE_DELETE(VNSIRecording); if (VNSIData) SAFE_DELETE(VNSIData); if (PVR) SAFE_DELETE(PVR); if (GUI) SAFE_DELETE(GUI); if (XBMC) SAFE_DELETE(XBMC); m_CurStatus = ADDON_STATUS_UNKNOWN; } ADDON_STATUS ADDON_SetSetting(const char *settingName, const void *settingValue) { string str = settingName; if (str == "host") { string tmp_sHostname; XBMC->Log(LOG_INFO, "Changed Setting 'host' from %s to %s", g_szHostname.c_str(), (const char*) settingValue); tmp_sHostname = g_szHostname; g_szHostname = (const char*) settingValue; if (tmp_sHostname != g_szHostname) return ADDON_STATUS_NEED_RESTART; } else if (str == "wol_mac") { XBMC->Log(LOG_INFO, "Changed Setting 'wol_mac'"); string tmp_sWol_mac; XBMC->Log(LOG_INFO, "Changed Setting 'wol_mac' from %s to %s", g_szWolMac.c_str(), (const char*) settingValue); tmp_sWol_mac = g_szWolMac; g_szWolMac = (const char*) settingValue; if (tmp_sWol_mac != g_szWolMac) return ADDON_STATUS_NEED_RESTART; } else if (str == "port") { XBMC->Log(LOG_INFO, "Changed Setting 'port' from %u to %u", g_iPort, *(int*)settingValue); if (g_iPort != *(int*)settingValue) { g_iPort = *(int*)settingValue; return ADDON_STATUS_NEED_RESTART; } } else if (str == "priority") { int newPrio = prioVals[*(int*)settingValue]; XBMC->Log(LOG_INFO, "Changed Setting 'priority' from %u to %u", g_iPriority, newPrio); g_iPriority = newPrio; } else if (str == "timeshift") { XBMC->Log(LOG_INFO, "Changed Setting 'timeshift' from %u to %u", g_iTimeshift, *(int*) settingValue); g_iTimeshift = *(int*) settingValue; } else if (str == "convertchar") { XBMC->Log(LOG_INFO, "Changed Setting 'convertchar' from %u to %u", g_bCharsetConv, *(bool*) settingValue); g_bCharsetConv = *(bool*) settingValue; } else if (str == "timeout") { XBMC->Log(LOG_INFO, "Changed Setting 'timeout' from %u to %u", g_iConnectTimeout, *(int*) settingValue); g_iConnectTimeout = *(int*) settingValue; } else if (str == "autochannelgroups") { XBMC->Log(LOG_INFO, "Changed Setting 'autochannelgroups' from %u to %u", g_bAutoChannelGroups, *(bool*) settingValue); if (g_bAutoChannelGroups != *(bool*) settingValue) { g_bAutoChannelGroups = *(bool*) settingValue; return ADDON_STATUS_NEED_RESTART; } } else if (str == "chunksize") { XBMC->Log(LOG_INFO, "Changed Setting 'chunksize' from %u to %u", g_iChunkSize, *(int*) settingValue); g_iChunkSize = *(int*) settingValue; } return ADDON_STATUS_OK; } void ADDON_Stop() { } /*********************************************************** * PVR Client AddOn specific public library functions ***********************************************************/ void OnSystemSleep() { } void OnSystemWake() { if (XBMC && !g_szWolMac.empty()) { XBMC->WakeOnLan(g_szWolMac.c_str()); } } void OnPowerSavingActivated() { } void OnPowerSavingDeactivated() { } PVR_ERROR GetAddonCapabilities(PVR_ADDON_CAPABILITIES* pCapabilities) { pCapabilities->bSupportsEPG = true; pCapabilities->bSupportsRecordings = true; pCapabilities->bSupportsRecordingEdl = true; pCapabilities->bSupportsTimers = true; pCapabilities->bSupportsTV = true; pCapabilities->bSupportsRadio = true; pCapabilities->bSupportsChannelGroups = true; pCapabilities->bHandlesInputStream = true; pCapabilities->bHandlesDemuxing = true; if (VNSIData && VNSIData->SupportChannelScan()) pCapabilities->bSupportsChannelScan = true; if (VNSIData && VNSIData->SupportRecordingsUndelete()) pCapabilities->bSupportsRecordingsUndelete = true; pCapabilities->bSupportsRecordingsRename = true; pCapabilities->bSupportsRecordingsLifetimeChange = false; pCapabilities->bSupportsDescrambleInfo = false; return PVR_ERROR_NO_ERROR; } const char * GetBackendName(void) { static std::string BackendName = VNSIData ? VNSIData->GetServerName() : "unknown"; return BackendName.c_str(); } const char * GetBackendVersion(void) { static std::string BackendVersion; if (VNSIData) { std::stringstream format; format << VNSIData->GetVersion() << "(Protocol: " << VNSIData->GetProtocol() << ")"; BackendVersion = format.str(); } return BackendVersion.c_str(); } const char * GetConnectionString(void) { static std::string ConnectionString; std::stringstream format; if (VNSIData) { format << g_szHostname << ":" << g_iPort; } else { format << g_szHostname << ":" << g_iPort << " (addon error!)"; } ConnectionString = format.str(); return ConnectionString.c_str(); } const char * GetBackendHostname(void) { return g_szHostname.c_str(); } PVR_ERROR GetDriveSpace(long long *iTotal, long long *iUsed) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; return (VNSIData->GetDriveSpace(iTotal, iUsed) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR); } PVR_ERROR OpenDialogChannelScan(void) { cVNSIChannelScan scanner; try { scanner.Open(g_szHostname, g_iPort); return PVR_ERROR_NO_ERROR; } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } /*******************************************/ /** PVR EPG Functions **/ PVR_ERROR GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL &channel, time_t iStart, time_t iEnd) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return (VNSIData->GetEPGForChannel(handle, channel, iStart, iEnd) ? PVR_ERROR_NO_ERROR: PVR_ERROR_SERVER_ERROR); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } /*******************************************/ /** PVR Channel Functions **/ int GetChannelsAmount(void) { if (!VNSIData) return 0; try { return VNSIData->GetChannelsCount(); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return 0; } } PVR_ERROR GetChannels(ADDON_HANDLE handle, bool bRadio) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return (VNSIData->GetChannelsList(handle, bRadio) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } /*******************************************/ /** PVR Channelgroups Functions **/ int GetChannelGroupsAmount() { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->GetChannelGroupCount(g_bAutoChannelGroups); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR GetChannelGroups(ADDON_HANDLE handle, bool bRadio) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { if(VNSIData->GetChannelGroupCount(g_bAutoChannelGroups) > 0) return VNSIData->GetChannelGroupList(handle, bRadio) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR; return PVR_ERROR_NO_ERROR; } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR GetChannelGroupMembers(ADDON_HANDLE handle, const PVR_CHANNEL_GROUP &group) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->GetChannelGroupMembers(handle, group) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR; } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } /*******************************************/ /** PVR Timer Functions **/ PVR_ERROR GetTimerTypes(PVR_TIMER_TYPE types[], int *size) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->GetTimerTypes(types, size); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } int GetTimersAmount(void) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->GetTimersCount(); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR GetTimers(ADDON_HANDLE handle) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return (VNSIData->GetTimersList(handle) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR AddTimer(const PVR_TIMER &timer) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->AddTimer(timer); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR DeleteTimer(const PVR_TIMER &timer, bool bForce) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->DeleteTimer(timer, bForce); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR UpdateTimer(const PVR_TIMER &timer) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->UpdateTimer(timer); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } /*******************************************/ /** PVR Recording Functions **/ int GetRecordingsAmount(bool deleted) { if (!VNSIData) return 0; try { if (!deleted) return VNSIData->GetRecordingsCount(); else return VNSIData->GetDeletedRecordingsCount(); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR GetRecordings(ADDON_HANDLE handle, bool deleted) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { if (!deleted) return VNSIData->GetRecordingsList(handle); else return VNSIData->GetDeletedRecordingsList(handle); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR RenameRecording(const PVR_RECORDING &recording) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->RenameRecording(recording, recording.strTitle); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR DeleteRecording(const PVR_RECORDING &recording) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->DeleteRecording(recording); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR UndeleteRecording(const PVR_RECORDING& recording) { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->UndeleteRecording(recording); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR DeleteAllRecordingsFromTrash() { if (!VNSIData) return PVR_ERROR_SERVER_ERROR; try { return VNSIData->DeleteAllRecordingsFromTrash(); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } /*******************************************/ /** PVR Live Stream Functions **/ bool OpenLiveStream(const PVR_CHANNEL &channel) { CloseLiveStream(); try { VNSIDemuxer = new cVNSIDemux; IsRealtime = true; if (!VNSIDemuxer->OpenChannel(channel)) { delete VNSIDemuxer; VNSIDemuxer = nullptr; return false; } return true; } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); delete VNSIDemuxer; VNSIDemuxer = NULL; return false; } } void CloseLiveStream(void) { delete VNSIDemuxer; VNSIDemuxer = NULL; } PVR_ERROR GetStreamProperties(PVR_STREAM_PROPERTIES* pProperties) { if (!VNSIDemuxer) return PVR_ERROR_SERVER_ERROR; return (VNSIDemuxer->GetStreamProperties(pProperties) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR); } void DemuxAbort(void) { if (VNSIDemuxer) VNSIDemuxer->Abort(); } DemuxPacket* DemuxRead(void) { if (!VNSIDemuxer) return NULL; DemuxPacket *pkt; try { pkt = VNSIDemuxer->Read(); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return NULL; } if (pkt) { const CLockObject lock(TimeshiftMutex); IsTimeshift = VNSIDemuxer->IsTimeshift(); if ((PTSBufferEnd - pkt->dts) / DVD_TIME_BASE > 10) IsRealtime = false; else IsRealtime = true; } return pkt; } PVR_ERROR GetStreamTimes(PVR_STREAM_TIMES *times) { if (VNSIDemuxer && VNSIDemuxer->GetStreamTimes(times)) { PTSBufferEnd = times->ptsEnd; return PVR_ERROR_NO_ERROR; } else if (VNSIRecording && VNSIRecording->GetStreamTimes(times)) { PTSBufferEnd = times->ptsEnd; return PVR_ERROR_NO_ERROR; } else return PVR_ERROR_SERVER_ERROR; } PVR_ERROR SignalStatus(PVR_SIGNAL_STATUS &signalStatus) { if (!VNSIDemuxer) return PVR_ERROR_SERVER_ERROR; try { return (VNSIDemuxer->GetSignalStatus(signalStatus) ? PVR_ERROR_NO_ERROR : PVR_ERROR_SERVER_ERROR); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } bool CanPauseStream(void) { bool ret = false; if (VNSIDemuxer) ret = VNSIDemuxer->IsTimeshift(); return ret; } bool CanSeekStream(void) { bool ret = false; if (VNSIDemuxer) ret = VNSIDemuxer->IsTimeshift(); return ret; } bool IsRealTimeStream() { if (VNSIDemuxer) { const CLockObject lock(TimeshiftMutex); if (!IsTimeshift) return true; if (IsRealtime) return true; } return false; } bool SeekTime(double time, bool backwards, double *startpts) { bool ret = false; try { if (VNSIDemuxer) ret = VNSIDemuxer->SeekTime(time, backwards, startpts); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); } return ret; } bool IsTimeshifting() { bool ret = false; if (VNSIDemuxer) { const CLockObject lock(TimeshiftMutex); ret = IsTimeshift; } return ret; } void SetSpeed(int) {}; void PauseStream(bool bPaused) {} /*******************************************/ /** PVR Recording Stream Functions **/ bool OpenRecordedStream(const PVR_RECORDING &recording) { if(!VNSIData) return false; CloseRecordedStream(); VNSIRecording = new cVNSIRecording; try { if (!VNSIRecording->OpenRecording(recording)) { delete VNSIRecording; VNSIRecording = nullptr; return false; } return true; } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); delete VNSIRecording; VNSIRecording = NULL; return false; } } void CloseRecordedStream(void) { delete VNSIRecording; VNSIRecording = NULL; } int ReadRecordedStream(unsigned char *pBuffer, unsigned int iBufferSize) { if (!VNSIRecording) return -1; try { return VNSIRecording->Read(pBuffer, iBufferSize); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return -1; } } long long SeekRecordedStream(long long iPosition, int iWhence /* = SEEK_SET */) { try { if (VNSIRecording) return VNSIRecording->Seek(iPosition, iWhence); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); } return -1; } long long LengthRecordedStream(void) { if (VNSIRecording) return VNSIRecording->Length(); return 0; } PVR_ERROR GetRecordingEdl(const PVR_RECORDING& recinfo, PVR_EDL_ENTRY edl[], int *size) { if(!VNSIData) return PVR_ERROR_UNKNOWN; try { return VNSIData->GetRecordingEdl(recinfo, edl, size); } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } PVR_ERROR GetStreamReadChunkSize(int* chunksize) { *chunksize = g_iChunkSize; return PVR_ERROR_NO_ERROR; } /*******************************************/ /** PVR Menu Hook Functions **/ PVR_ERROR CallMenuHook(const PVR_MENUHOOK &menuhook, const PVR_MENUHOOK_DATA &item) { try { if (menuhook.iHookId == 1) { cVNSIAdmin osd; osd.Open(g_szHostname, g_iPort); } return PVR_ERROR_NO_ERROR; } catch (std::exception e) { XBMC->Log(LOG_ERROR, "%s - %s", __FUNCTION__, e.what()); return PVR_ERROR_SERVER_ERROR; } } /** UNUSED API FUNCTIONS */ PVR_ERROR DeleteChannel(const PVR_CHANNEL &channel) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR RenameChannel(const PVR_CHANNEL &channel) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR OpenDialogChannelSettings(const PVR_CHANNEL &channel) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR OpenDialogChannelAdd(const PVR_CHANNEL &channel) { return PVR_ERROR_NOT_IMPLEMENTED; } void DemuxReset(void) {} void DemuxFlush(void) {} int ReadLiveStream(unsigned char *pBuffer, unsigned int iBufferSize) { return 0; } long long SeekLiveStream(long long iPosition, int iWhence /* = SEEK_SET */) { return -1; } long long LengthLiveStream(void) { return -1; } PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING &recording, int count) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING &recording, int lastplayedposition) { return PVR_ERROR_NOT_IMPLEMENTED; } int GetRecordingLastPlayedPosition(const PVR_RECORDING &recording) { return -1; } PVR_ERROR SetEPGTimeFrame(int) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR GetDescrambleInfo(PVR_DESCRAMBLE_INFO*) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR SetRecordingLifetime(const PVR_RECORDING*) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR GetChannelStreamProperties(const PVR_CHANNEL*, PVR_NAMED_VALUE*, unsigned int*) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR GetRecordingStreamProperties(const PVR_RECORDING*, PVR_NAMED_VALUE*, unsigned int*) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR IsEPGTagRecordable(const EPG_TAG*, bool*) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR IsEPGTagPlayable(const EPG_TAG*, bool*) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR GetEPGTagStreamProperties(const EPG_TAG*, PVR_NAMED_VALUE*, unsigned int*) { return PVR_ERROR_NOT_IMPLEMENTED; } PVR_ERROR GetEPGTagEdl(const EPG_TAG* epgTag, PVR_EDL_ENTRY edl[], int *size) { return PVR_ERROR_NOT_IMPLEMENTED; } } pvr.vdr.vnsi-3.6.4-Leia/src/client.h000066400000000000000000000036201362540622500171770ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "kodi/libXBMC_addon.h" #include "kodi/libXBMC_pvr.h" #include "kodi/libKODI_guilib.h" #define DEFAULT_HOST "127.0.0.1" #define DEFAULT_PORT 34890 #define DEFAULT_CHARCONV false #define DEFAULT_HANDLE_MSG true #define DEFAULT_PRIORITY 0 #define DEFAULT_TIMEOUT 3 #define DEFAULT_AUTOGROUPS false #define DEFAULT_CHUNKSIZE 65536 extern bool m_bCreated; extern std::string g_szHostname; ///< hostname or ip-address of the server extern int g_iPort; ///< TCP port of the vnsi server extern int g_iConnectTimeout; ///< Network connection / read timeout in seconds extern int g_iPriority; ///< The Priority this client have in response to other clients extern bool g_bCharsetConv; ///< Convert VDR's incoming strings to UTF8 character set extern int g_iTimeshift; extern std::string g_szIconPath; ///< path to channel icons extern ADDON::CHelper_libXBMC_addon *XBMC; extern CHelper_libKODI_guilib *GUI; extern CHelper_libXBMC_pvr *PVR; pvr.vdr.vnsi-3.6.4-Leia/src/requestpacket.cpp000066400000000000000000000106011362540622500211310ustar00rootroot00000000000000/* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "requestpacket.h" #include "vnsicommand.h" #include "tools.h" #include "p8-platform/sockets/tcp.h" #include #include #include uint32_t cRequestPacket::serialNumberCounter = 1; cRequestPacket::cRequestPacket() { buffer = NULL; bufSize = 0; bufUsed = 0; lengthSet = false; serialNumber = 0; opcode = 0; } cRequestPacket::~cRequestPacket() { free(buffer); } void cRequestPacket::init(uint32_t topcode, bool stream, bool setUserDataLength, size_t userDataLength) { assert(buffer == NULL); if (setUserDataLength) { bufSize = headerLength + userDataLength; lengthSet = true; } else { bufSize = 512; userDataLength = 0; // so the below will write a zero } buffer = (uint8_t*)malloc(bufSize); if (!buffer) throw std::bad_alloc(); if (!stream) channel = VNSI_CHANNEL_REQUEST_RESPONSE; else channel = VNSI_CHANNEL_STREAM; serialNumber = serialNumberCounter++; opcode = topcode; uint32_t ul; ul = htonl(channel); memcpy(&buffer[0], &ul, sizeof(uint32_t)); ul = htonl(serialNumber); memcpy(&buffer[4], &ul, sizeof(uint32_t)); ul = htonl(opcode); memcpy(&buffer[8], &ul, sizeof(uint32_t)); ul = htonl(userDataLength); memcpy(&buffer[userDataLenPos], &ul, sizeof(uint32_t)); bufUsed = headerLength; } void cRequestPacket::add_String(const char* string) { size_t len = strlen(string) + 1; checkExtend(len); memcpy(buffer + bufUsed, string, len); bufUsed += len; if (!lengthSet) { uint32_t tmp = htonl(bufUsed - headerLength); memcpy(&buffer[userDataLenPos], &tmp, sizeof(uint32_t)); } } void cRequestPacket::add_U8(uint8_t c) { checkExtend(sizeof(uint8_t)); buffer[bufUsed] = c; bufUsed += sizeof(uint8_t); if (!lengthSet) { uint32_t tmp = htonl(bufUsed - headerLength); memcpy(&buffer[userDataLenPos], &tmp, sizeof(uint32_t)); } } void cRequestPacket::add_S32(int32_t l) { checkExtend(sizeof(int32_t)); int32_t tmp = htonl(l); memcpy(&buffer[bufUsed], &tmp, sizeof(int32_t)); bufUsed += sizeof(int32_t); if (!lengthSet) { uint32_t tmp = htonl(bufUsed - headerLength); memcpy(&buffer[userDataLenPos], &tmp, sizeof(uint32_t)); } } void cRequestPacket::add_U32(uint32_t ul) { checkExtend(sizeof(uint32_t)); uint32_t tmp = htonl(ul); memcpy(&buffer[bufUsed], &tmp, sizeof(uint32_t)); bufUsed += sizeof(uint32_t); if (!lengthSet) { uint32_t tmp = htonl(bufUsed - headerLength); memcpy(&buffer[userDataLenPos], &tmp, sizeof(uint32_t)); } } void cRequestPacket::add_U64(uint64_t ull) { checkExtend(sizeof(uint64_t)); uint64_t tmp = htonll(ull); memcpy(&buffer[bufUsed], &tmp, sizeof(uint64_t)); bufUsed += sizeof(uint64_t); if (!lengthSet) { uint32_t tmp = htonl(bufUsed - headerLength); memcpy(&buffer[userDataLenPos], &tmp, sizeof(uint32_t)); } } void cRequestPacket::add_S64(int64_t ll) { checkExtend(sizeof(int64_t)); int64_t tmp = htonll(ll); memcpy(&buffer[bufUsed], &tmp, sizeof(int64_t)); bufUsed += sizeof(int64_t); if (!lengthSet) { uint32_t tmp = htonl(bufUsed - headerLength); memcpy(&buffer[userDataLenPos], &tmp, sizeof(uint32_t)); } } void cRequestPacket::checkExtend(size_t by) { if (lengthSet) return; if ((bufUsed + by) <= bufSize) return; uint8_t* newBuf = (uint8_t*)realloc(buffer, bufUsed + by); if (!newBuf) { newBuf = (uint8_t*)malloc(bufUsed + by); if (!newBuf) { throw std::bad_alloc(); } memcpy(newBuf, buffer, bufUsed); free(buffer); } buffer = newBuf; bufSize = bufUsed + by; } pvr.vdr.vnsi-3.6.4-Leia/src/requestpacket.h000066400000000000000000000035001362540622500205760ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include #include class cRequestPacket { public: cRequestPacket(); ~cRequestPacket(); void init(uint32_t opcode, bool stream = false, bool setUserDataLength = false, size_t userDataLength = 0); void add_String(const char* string); void add_U8(uint8_t c); void add_U32(uint32_t ul); void add_S32(int32_t l); void add_U64(uint64_t ull); void add_S64(int64_t ll); uint8_t* getPtr() const { return buffer; } size_t getLen() const { return bufUsed; } uint32_t getChannel() const { return channel; } uint32_t getSerial() const { return serialNumber; } uint32_t getOpcode() const { return opcode; } private: static uint32_t serialNumberCounter; uint8_t* buffer; size_t bufSize; size_t bufUsed; bool lengthSet; uint32_t channel; uint32_t serialNumber; uint32_t opcode; void checkExtend(size_t by); const static size_t headerLength = 16; const static size_t userDataLenPos = 12; }; pvr.vdr.vnsi-3.6.4-Leia/src/responsepacket.cpp000066400000000000000000000133521362540622500213050ustar00rootroot00000000000000/* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "responsepacket.h" #include "vnsicommand.h" #include "tools.h" #include "p8-platform/sockets/tcp.h" #include #include #include cResponsePacket::cResponsePacket() { userDataLength = 0; packetPos = 0; userData = NULL; channelID = 0; requestID = 0; streamID = 0; } cResponsePacket::~cResponsePacket() { if (userData) { if (channelID == VNSI_CHANNEL_STREAM && opcodeID == VNSI_STREAM_MUXPKT) PVR->FreeDemuxPacket((DemuxPacket*)userData); else free(userData); } } void cResponsePacket::getOSDData(uint32_t &wnd, uint32_t &color, uint32_t &x0, uint32_t &y0, uint32_t &x1, uint32_t &y1) { wnd = osdWnd; color = osdColor; x0 = osdX0; y0 = osdY0; x1 = osdX1; y1 = osdY1; } void cResponsePacket::setResponse(uint8_t* tuserData, size_t tuserDataLength) { channelID = VNSI_CHANNEL_REQUEST_RESPONSE; userData = tuserData; userDataLength = tuserDataLength; packetPos = 0; } void cResponsePacket::setStatus(uint8_t* tuserData, size_t tuserDataLength) { channelID = VNSI_CHANNEL_STATUS; userData = tuserData; userDataLength = tuserDataLength; packetPos = 0; } void cResponsePacket::setStream(uint8_t* tuserData, size_t tuserDataLength) { channelID = VNSI_CHANNEL_STREAM; // set pointer to user data userData = tuserData; userDataLength = tuserDataLength; packetPos = 0; } void cResponsePacket::setOSD(uint8_t* tuserData, size_t tuserDataLength) { channelID = VNSI_CHANNEL_OSD; // set pointer to user data userData = tuserData; userDataLength = tuserDataLength; packetPos = 0; } void cResponsePacket::extractHeader() { // set data pointers to header first userData = header; userDataLength = sizeof(header); packetPos = 0; requestID = extract_U32(); userDataLength = extract_U32(); userData = NULL; } void cResponsePacket::extractStreamHeader() { channelID = VNSI_CHANNEL_STREAM; // set data pointers to header first userData = header; userDataLength = sizeof(header); packetPos = 0; opcodeID = extract_U32(); streamID = extract_U32(); duration = extract_U32(); pts = extract_U64(); dts = extract_U64(); muxSerial= extract_U32(); userDataLength = extract_U32(); userData = NULL; } void cResponsePacket::extractOSDHeader() { channelID = VNSI_CHANNEL_OSD; // set data pointers to header first userData = header; userDataLength = sizeof(header); packetPos = 0; opcodeID = extract_U32(); osdWnd = extract_S32(); osdColor = extract_S32(); osdX0 = extract_S32(); osdY0 = extract_S32(); osdX1 = extract_S32(); osdY1 = extract_S32(); userDataLength = extract_U32(); } char* cResponsePacket::extract_String() { char *p = (char *)&userData[packetPos]; const char *end = (const char *)memchr(p, '\0', userDataLength - packetPos); if (end == NULL) /* string is not terminated - fail */ throw std::out_of_range("Malformed VNSI packet"); int length = end - p; packetPos += length + 1; return p; } uint8_t cResponsePacket::extract_U8() { if ((packetPos + sizeof(uint8_t)) > userDataLength) throw std::out_of_range("Malformed VNSI packet"); uint8_t uc = userData[packetPos]; packetPos += sizeof(uint8_t); return uc; } uint32_t cResponsePacket::extract_U32() { if ((packetPos + sizeof(uint32_t)) > userDataLength) throw std::out_of_range("Malformed VNSI packet"); uint32_t ul; memcpy(&ul, &userData[packetPos], sizeof(uint32_t)); ul = ntohl(ul); packetPos += sizeof(uint32_t); return ul; } uint64_t cResponsePacket::extract_U64() { if ((packetPos + sizeof(uint64_t)) > userDataLength) throw std::out_of_range("Malformed VNSI packet"); uint64_t ull; memcpy(&ull, &userData[packetPos], sizeof(uint64_t)); ull = ntohll(ull); packetPos += sizeof(uint64_t); return ull; } double cResponsePacket::extract_Double() { if ((packetPos + sizeof(uint64_t)) > userDataLength) throw std::out_of_range("Malformed VNSI packet"); uint64_t ull; memcpy(&ull, &userData[packetPos], sizeof(uint64_t)); ull = ntohll(ull); double d; memcpy(&d,&ull,sizeof(double)); packetPos += sizeof(uint64_t); return d; } int32_t cResponsePacket::extract_S32() { if ((packetPos + sizeof(int32_t)) > userDataLength) throw std::out_of_range("Malformed VNSI packet"); int32_t l; memcpy(&l, &userData[packetPos], sizeof(int32_t)); l = ntohl(l); packetPos += sizeof(int32_t); return l; } int64_t cResponsePacket::extract_S64() { if ((packetPos + sizeof(int64_t)) > userDataLength) throw std::out_of_range("Malformed VNSI packet"); int64_t ll; memcpy(&ll, &userData[packetPos], sizeof(int64_t)); ll = ntohll(ll); packetPos += sizeof(int64_t); return ll; } uint8_t* cResponsePacket::getUserData() { return userData; } uint8_t* cResponsePacket::stealUserData() { uint8_t *result = userData; userData = NULL; return result; } pvr.vdr.vnsi-3.6.4-Leia/src/responsepacket.h000066400000000000000000000057351362540622500207600ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include #include #include class cResponsePacket { public: cResponsePacket(); ~cResponsePacket(); void setResponse(uint8_t* packet, size_t packetLength); void setStatus(uint8_t* packet, size_t packetLength); void setStream(uint8_t* packet, size_t packetLength); void setOSD(uint8_t* packet, size_t packetLength); void extractHeader(); void extractStreamHeader(); void extractOSDHeader(); bool noResponse() { return (userData == NULL); }; size_t getUserDataLength() const { return userDataLength; } uint32_t getChannelID() const { return channelID; } uint32_t getRequestID() const { return requestID; } uint32_t getStreamID() const { return streamID; } uint32_t getOpCodeID() const { return opcodeID; } uint32_t getDuration() const { return duration; } int64_t getDTS() const { return dts; } int64_t getPTS() const { return pts; } uint32_t getMuxSerial() const { return muxSerial; } void getOSDData(uint32_t &wnd, uint32_t &color, uint32_t &x0, uint32_t &y0, uint32_t &x1, uint32_t &y1); size_t getPacketPos() const { return packetPos; } size_t getRemainingLength() const { return userDataLength - packetPos; } char* extract_String(); uint8_t extract_U8(); uint32_t extract_U32(); uint64_t extract_U64(); int32_t extract_S32(); int64_t extract_S64(); double extract_Double(); // If you call this, the memory becomes yours. Free with free() uint8_t* stealUserData(); uint8_t* getUserData(); uint8_t* getHeader() { return header; }; size_t getStreamHeaderLength() const { return 36; }; size_t getHeaderLength() const { return 8; }; size_t getOSDHeaderLength() const { return 32; } ; private: uint8_t header[40]; uint8_t* userData; size_t userDataLength; size_t packetPos; uint32_t channelID; uint32_t requestID; uint32_t streamID; uint32_t opcodeID; uint32_t duration; int64_t dts; int64_t pts; uint32_t muxSerial; int32_t osdWnd; int32_t osdColor; int32_t osdX0,osdY0,osdX1,osdY1; }; pvr.vdr.vnsi-3.6.4-Leia/src/shaders/000077500000000000000000000000001362540622500172005ustar00rootroot00000000000000pvr.vdr.vnsi-3.6.4-Leia/src/shaders/GUIShader.cpp000066400000000000000000000033111362540622500214550ustar00rootroot00000000000000/* * Copyright (C) 2005-2013 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #include "GUIShader.h" CGUIShader::CGUIShader(std::string vert, std::string frag ) : CShaderProgram(vert, frag) { } void CGUIShader::OnCompiledAndLinked() { // Variables passed directly to the Fragment shader m_hTex = glGetUniformLocation(ProgramHandle(), "m_samp"); // Variables passed directly to the Vertex shader m_hProj = glGetUniformLocation(ProgramHandle(), "m_proj"); m_hModel = glGetUniformLocation(ProgramHandle(), "m_model"); m_hPos = glGetAttribLocation(ProgramHandle(), "m_attrpos"); m_hCord = glGetAttribLocation(ProgramHandle(), "m_attrcord"); // It's okay to do this only one time. Textures units never change. glUseProgram(ProgramHandle()); glUniform1i(m_hTex, 0); glUseProgram(0); } bool CGUIShader::OnEnabled() { // This is called after glUseProgram() glUniformMatrix4fv(m_hProj, 1, GL_FALSE, GetMatrix(MM_PROJECTION)); glUniformMatrix4fv(m_hModel, 1, GL_FALSE, GetMatrix(MM_MODELVIEW)); return true; } void CGUIShader::Free() { CShaderProgram::Free(); } pvr.vdr.vnsi-3.6.4-Leia/src/shaders/GUIShader.h000066400000000000000000000023551362540622500211310ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2005-2013 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #include "Shader.h" #include "Matrix.h" class ATTRIBUTE_HIDDEN CGUIShader : public CShaderProgram, public CMatrix { public: CGUIShader(std::string vert, std::string frag); void OnCompiledAndLinked() override; bool OnEnabled() override; void Free(); GLint GetPosLoc() { return m_hPos; } GLint GetCordLoc() { return m_hCord; } protected: GLint m_hTex = -1; GLint m_hProj = -1; GLint m_hModel = -1; GLint m_hPos = -1; GLint m_hCord = -1; GLfloat *m_proj = nullptr; GLfloat *m_model = nullptr; }; pvr.vdr.vnsi-3.6.4-Leia/src/shaders/Matrix.cpp000066400000000000000000000273501362540622500211570ustar00rootroot00000000000000/* * Copyright (C) 2005-2013 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #include "Matrix.h" #include #define MODE_WITHIN_RANGE(m) ((m >= 0) && (m < (int)MM_MATRIXSIZE)) CMatrix::CMatrix() { for (unsigned int i=0; i < MM_MATRIXSIZE; i++) { m_matrices[i].push_back(MatrixWrapper()); MatrixMode((EMATRIXMODE)i); LoadIdentity(); } m_matrixMode = (EMATRIXMODE)-1; m_pMatrix = NULL; } CMatrix::~CMatrix() { } GLfloat* CMatrix::GetMatrix(EMATRIXMODE mode) { if (MODE_WITHIN_RANGE(mode)) { if (!m_matrices[mode].empty()) { return m_matrices[mode].back(); } } return NULL; } void CMatrix::MatrixMode(EMATRIXMODE mode) { if (MODE_WITHIN_RANGE(mode)) { m_matrixMode = mode; m_pMatrix = m_matrices[mode].back(); } else { m_matrixMode = (EMATRIXMODE)-1; m_pMatrix = NULL; } } void CMatrix::PushMatrix() { if (m_pMatrix && MODE_WITHIN_RANGE(m_matrixMode)) { m_matrices[m_matrixMode].push_back(MatrixWrapper(m_pMatrix)); m_pMatrix = m_matrices[m_matrixMode].back(); } } void CMatrix::PopMatrix() { if (MODE_WITHIN_RANGE(m_matrixMode)) { if (m_matrices[m_matrixMode].size() > 1) { m_matrices[m_matrixMode].pop_back(); } m_pMatrix = m_matrices[m_matrixMode].back(); } } void CMatrix::LoadIdentity() { if (m_pMatrix) { m_pMatrix[0] = 1.0f; m_pMatrix[4] = 0.0f; m_pMatrix[8] = 0.0f; m_pMatrix[12] = 0.0f; m_pMatrix[1] = 0.0f; m_pMatrix[5] = 1.0f; m_pMatrix[9] = 0.0f; m_pMatrix[13] = 0.0f; m_pMatrix[2] = 0.0f; m_pMatrix[6] = 0.0f; m_pMatrix[10] = 1.0f; m_pMatrix[14] = 0.0f; m_pMatrix[3] = 0.0f; m_pMatrix[7] = 0.0f; m_pMatrix[11] = 0.0f; m_pMatrix[15] = 1.0f; } } void CMatrix::Ortho(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) { GLfloat u = 2.0f / (r - l); GLfloat v = 2.0f / (t - b); GLfloat w = -2.0f / (f - n); GLfloat x = - (r + l) / (r - l); GLfloat y = - (t + b) / (t - b); GLfloat z = - (f + n) / (f - n); GLfloat matrix[16] = { u, 0.0f, 0.0f, 0.0f, 0.0f, v, 0.0f, 0.0f, 0.0f, 0.0f, w, 0.0f, x, y, z, 1.0f}; MultMatrixf(matrix); } void CMatrix::Ortho2D(GLfloat l, GLfloat r, GLfloat b, GLfloat t) { GLfloat u = 2.0f / (r - l); GLfloat v = 2.0f / (t - b); GLfloat x = - (r + l) / (r - l); GLfloat y = - (t + b) / (t - b); GLfloat matrix[16] = { u, 0.0f, 0.0f, 0.0f, 0.0f, v, 0.0f, 0.0f, 0.0f, 0.0f,-1.0f, 0.0f, x, y, 0.0f, 1.0f}; MultMatrixf(matrix); } void CMatrix::Frustum(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) { GLfloat u = (2.0f * n) / (r - l); GLfloat v = (2.0f * n) / (t - b); GLfloat w = (r + l) / (r - l); GLfloat x = (t + b) / (t - b); GLfloat y = - (f + n) / (f - n); GLfloat z = - (2.0f * f * n) / (f - n); GLfloat matrix[16] = { u, 0.0f, 0.0f, 0.0f, 0.0f, v, 0.0f, 0.0f, w, x, y,-1.0f, 0.0f, 0.0f, z, 0.0f}; MultMatrixf(matrix); } void CMatrix::Translatef(GLfloat x, GLfloat y, GLfloat z) { GLfloat matrix[16] = {1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, x, y, z, 1.0f}; MultMatrixf(matrix); } void CMatrix::Scalef(GLfloat x, GLfloat y, GLfloat z) { GLfloat matrix[16] = { x, 0.0f, 0.0f, 0.0f, 0.0f, y, 0.0f, 0.0f, 0.0f, 0.0f, z, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}; MultMatrixf(matrix); } void CMatrix::Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { GLfloat modulous = sqrt((x*x)+(y*y)+(z*z)); if (modulous != 0.0) { x /= modulous; y /= modulous; z /= modulous; } GLfloat cosine = cos(angle); GLfloat sine = sin(angle); GLfloat cos1 = 1 - cosine; GLfloat a = (x*x*cos1) + cosine; GLfloat b = (x*y*cos1) - (z*sine); GLfloat c = (x*z*cos1) + (y*sine); GLfloat d = (y*x*cos1) + (z*sine); GLfloat e = (y*y*cos1) + cosine; GLfloat f = (y*z*cos1) - (x*sine); GLfloat g = (z*x*cos1) - (y*sine); GLfloat h = (z*y*cos1) + (x*sine); GLfloat i = (z*z*cos1) + cosine; GLfloat matrix[16] = { a, d, g, 0.0f, b, e, h, 0.0f, c, f, i, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}; MultMatrixf(matrix); } #if defined(__ARM_NEON__) && !defined(__arm64__) inline void Matrix4Mul(const float* src_mat_1, const float* src_mat_2, float* dst_mat) { asm volatile ( // Store A & B leaving room at top of registers for result (q0-q3) "vldmia %1, { q4-q7 } \n\t" "vldmia %2, { q8-q11 } \n\t" // result = first column of B x first row of A "vmul.f32 q0, q8, d8[0]\n\t" "vmul.f32 q1, q8, d10[0]\n\t" "vmul.f32 q2, q8, d12[0]\n\t" "vmul.f32 q3, q8, d14[0]\n\t" // result += second column of B x second row of A "vmla.f32 q0, q9, d8[1]\n\t" "vmla.f32 q1, q9, d10[1]\n\t" "vmla.f32 q2, q9, d12[1]\n\t" "vmla.f32 q3, q9, d14[1]\n\t" // result += third column of B x third row of A "vmla.f32 q0, q10, d9[0]\n\t" "vmla.f32 q1, q10, d11[0]\n\t" "vmla.f32 q2, q10, d13[0]\n\t" "vmla.f32 q3, q10, d15[0]\n\t" // result += last column of B x last row of A "vmla.f32 q0, q11, d9[1]\n\t" "vmla.f32 q1, q11, d11[1]\n\t" "vmla.f32 q2, q11, d13[1]\n\t" "vmla.f32 q3, q11, d15[1]\n\t" // output = result registers "vstmia %2, { q0-q3 }" : //no output : "r" (dst_mat), "r" (src_mat_2), "r" (src_mat_1) // input - note *value* of pointer doesn't change : "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7", "q8", "q9", "q10", "q11" //clobber ); } void CMatrix::MultMatrixf(const GLfloat *matrix) { if (m_pMatrix) { GLfloat m[16]; Matrix4Mul(m_pMatrix, matrix, m); } } #else void CMatrix::MultMatrixf(const GLfloat *matrix) { if (m_pMatrix) { GLfloat a = (matrix[0] * m_pMatrix[0]) + (matrix[1] * m_pMatrix[4]) + (matrix[2] * m_pMatrix[8]) + (matrix[3] * m_pMatrix[12]); GLfloat b = (matrix[0] * m_pMatrix[1]) + (matrix[1] * m_pMatrix[5]) + (matrix[2] * m_pMatrix[9]) + (matrix[3] * m_pMatrix[13]); GLfloat c = (matrix[0] * m_pMatrix[2]) + (matrix[1] * m_pMatrix[6]) + (matrix[2] * m_pMatrix[10]) + (matrix[3] * m_pMatrix[14]); GLfloat d = (matrix[0] * m_pMatrix[3]) + (matrix[1] * m_pMatrix[7]) + (matrix[2] * m_pMatrix[11]) + (matrix[3] * m_pMatrix[15]); GLfloat e = (matrix[4] * m_pMatrix[0]) + (matrix[5] * m_pMatrix[4]) + (matrix[6] * m_pMatrix[8]) + (matrix[7] * m_pMatrix[12]); GLfloat f = (matrix[4] * m_pMatrix[1]) + (matrix[5] * m_pMatrix[5]) + (matrix[6] * m_pMatrix[9]) + (matrix[7] * m_pMatrix[13]); GLfloat g = (matrix[4] * m_pMatrix[2]) + (matrix[5] * m_pMatrix[6]) + (matrix[6] * m_pMatrix[10]) + (matrix[7] * m_pMatrix[14]); GLfloat h = (matrix[4] * m_pMatrix[3]) + (matrix[5] * m_pMatrix[7]) + (matrix[6] * m_pMatrix[11]) + (matrix[7] * m_pMatrix[15]); GLfloat i = (matrix[8] * m_pMatrix[0]) + (matrix[9] * m_pMatrix[4]) + (matrix[10] * m_pMatrix[8]) + (matrix[11] * m_pMatrix[12]); GLfloat j = (matrix[8] * m_pMatrix[1]) + (matrix[9] * m_pMatrix[5]) + (matrix[10] * m_pMatrix[9]) + (matrix[11] * m_pMatrix[13]); GLfloat k = (matrix[8] * m_pMatrix[2]) + (matrix[9] * m_pMatrix[6]) + (matrix[10] * m_pMatrix[10]) + (matrix[11] * m_pMatrix[14]); GLfloat l = (matrix[8] * m_pMatrix[3]) + (matrix[9] * m_pMatrix[7]) + (matrix[10] * m_pMatrix[11]) + (matrix[11] * m_pMatrix[15]); GLfloat m = (matrix[12] * m_pMatrix[0]) + (matrix[13] * m_pMatrix[4]) + (matrix[14] * m_pMatrix[8]) + (matrix[15] * m_pMatrix[12]); GLfloat n = (matrix[12] * m_pMatrix[1]) + (matrix[13] * m_pMatrix[5]) + (matrix[14] * m_pMatrix[9]) + (matrix[15] * m_pMatrix[13]); GLfloat o = (matrix[12] * m_pMatrix[2]) + (matrix[13] * m_pMatrix[6]) + (matrix[14] * m_pMatrix[10]) + (matrix[15] * m_pMatrix[14]); GLfloat p = (matrix[12] * m_pMatrix[3]) + (matrix[13] * m_pMatrix[7]) + (matrix[14] * m_pMatrix[11]) + (matrix[15] * m_pMatrix[15]); m_pMatrix[0] = a; m_pMatrix[4] = e; m_pMatrix[8] = i; m_pMatrix[12] = m; m_pMatrix[1] = b; m_pMatrix[5] = f; m_pMatrix[9] = j; m_pMatrix[13] = n; m_pMatrix[2] = c; m_pMatrix[6] = g; m_pMatrix[10] = k; m_pMatrix[14] = o; m_pMatrix[3] = d; m_pMatrix[7] = h; m_pMatrix[11] = l; m_pMatrix[15] = p; } } #endif // gluLookAt implementation taken from Mesa3D void CMatrix::LookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez, GLfloat centerx, GLfloat centery, GLfloat centerz, GLfloat upx, GLfloat upy, GLfloat upz) { GLfloat forward[3], side[3], up[3]; GLfloat m[4][4]; forward[0] = centerx - eyex; forward[1] = centery - eyey; forward[2] = centerz - eyez; up[0] = upx; up[1] = upy; up[2] = upz; GLfloat tmp = sqrt(forward[0]*forward[0] + forward[1]*forward[1] + forward[2]*forward[2]); if (tmp != 0.0) { forward[0] /= tmp; forward[1] /= tmp; forward[2] /= tmp; } side[0] = forward[1]*up[2] - forward[2]*up[1]; side[1] = forward[2]*up[0] - forward[0]*up[2]; side[2] = forward[0]*up[1] - forward[1]*up[0]; tmp = sqrt(side[0]*side[0] + side[1]*side[1] + side[2]*side[2]); if (tmp != 0.0) { side[0] /= tmp; side[1] /= tmp; side[2] /= tmp; } up[0] = side[1]*forward[2] - side[2]*forward[1]; up[1] = side[2]*forward[0] - side[0]*forward[2]; up[2] = side[0]*forward[1] - side[1]*forward[0]; m[0][0] = 1.0f; m[0][1] = 0.0f; m[0][2] = 0.0f; m[0][3] = 0.0f; m[1][0] = 0.0f; m[1][1] = 1.0f; m[1][2] = 0.0f; m[1][3] = 0.0f; m[2][0] = 0.0f; m[2][1] = 0.0f; m[2][2] = 1.0f; m[2][3] = 0.0f; m[3][0] = 0.0f; m[3][1] = 0.0f; m[3][2] = 0.0f; m[3][3] = 1.0f; m[0][0] = side[0]; m[1][0] = side[1]; m[2][0] = side[2]; m[0][1] = up[0]; m[1][1] = up[1]; m[2][1] = up[2]; m[0][2] = -forward[0]; m[1][2] = -forward[1]; m[2][2] = -forward[2]; MultMatrixf(&m[0][0]); Translatef(-eyex, -eyey, -eyez); } static void __gluMultMatrixVecf(const GLfloat matrix[16], const GLfloat in[4], GLfloat out[4]) { int i; for (i=0; i<4; i++) { out[i] = in[0] * matrix[0*4+i] + in[1] * matrix[1*4+i] + in[2] * matrix[2*4+i] + in[3] * matrix[3*4+i]; } } // gluProject implementation taken from Mesa3D bool CMatrix::Project(GLfloat objx, GLfloat objy, GLfloat objz, const GLfloat modelMatrix[16], const GLfloat projMatrix[16], const GLint viewport[4], GLfloat* winx, GLfloat* winy, GLfloat* winz) { GLfloat in[4]; GLfloat out[4]; in[0]=objx; in[1]=objy; in[2]=objz; in[3]=1.0; __gluMultMatrixVecf(modelMatrix, in, out); __gluMultMatrixVecf(projMatrix, out, in); if (in[3] == 0.0) return false; in[0] /= in[3]; in[1] /= in[3]; in[2] /= in[3]; /* Map x, y and z to range 0-1 */ in[0] = in[0] * 0.5 + 0.5; in[1] = in[1] * 0.5 + 0.5; in[2] = in[2] * 0.5 + 0.5; /* Map x,y to viewport */ in[0] = in[0] * viewport[2] + viewport[0]; in[1] = in[1] * viewport[3] + viewport[1]; *winx=in[0]; *winy=in[1]; *winz=in[2]; return true; } pvr.vdr.vnsi-3.6.4-Leia/src/shaders/Matrix.h000066400000000000000000000063111362540622500206160ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2005-2013 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #if defined(HAS_GL) #if defined(__APPLE__) #include #else #define GL_GLEXT_PROTOTYPES #include #include #endif//__APPLE__ #else #if defined(__APPLE__) #include #include #else #include #include #endif//__APPLE__ #endif #include "kodi/AddonBase.h" #include #include enum EMATRIXMODE { MM_PROJECTION = 0, MM_MODELVIEW, MM_TEXTURE, MM_MATRIXSIZE // Must be last! used for size of matrices }; class ATTRIBUTE_HIDDEN CMatrix { public: CMatrix(); virtual ~CMatrix(); GLfloat* GetMatrix(EMATRIXMODE mode); void MatrixMode(EMATRIXMODE mode); void PushMatrix(); void PopMatrix(); void LoadIdentity(); void Ortho(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); void Ortho2D(GLfloat l, GLfloat r, GLfloat b, GLfloat t); void Frustum(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); void Translatef(GLfloat x, GLfloat y, GLfloat z); void Scalef(GLfloat x, GLfloat y, GLfloat z); void Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); void MultMatrixf(const GLfloat *matrix); void LookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez, GLfloat centerx, GLfloat centery, GLfloat centerz, GLfloat upx, GLfloat upy, GLfloat upz); bool Project(GLfloat objx, GLfloat objy, GLfloat objz, const GLfloat modelMatrix[16], const GLfloat projMatrix[16], const GLint viewport[4], GLfloat* winx, GLfloat* winy, GLfloat* winz); protected: struct MatrixWrapper { MatrixWrapper(){}; MatrixWrapper( const float values[16]) { memcpy(m_values,values,sizeof(m_values)); } MatrixWrapper( const MatrixWrapper &rhs ) { memcpy(m_values, rhs.m_values, sizeof(m_values)); } MatrixWrapper &operator=( const MatrixWrapper &rhs ) { memcpy(m_values, rhs.m_values, sizeof(m_values)); return *this;} operator float*() { return m_values; } operator const float*() const { return m_values; } float m_values[16]; }; std::vector m_matrices[(int)MM_MATRIXSIZE]; GLfloat *m_pMatrix; EMATRIXMODE m_matrixMode; }; pvr.vdr.vnsi-3.6.4-Leia/src/shaders/Shader.cpp000066400000000000000000000132071362540622500211150ustar00rootroot00000000000000/* * Copyright (C) 2005-2013 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #include "Shader.h" #include #include "../client.h" #define LOG_SIZE 1024 #define GLchar char ////////////////////////////////////////////////////////////////////// // CShader ////////////////////////////////////////////////////////////////////// bool CShader::LoadSource(std::string &file) { char buffer[1024]; void* handle = XBMC->OpenFile(file.c_str(), 0); size_t len = XBMC->ReadFile(handle, buffer, sizeof(buffer)); m_source.assign(buffer); m_source[len] = 0; XBMC->CloseFile(handle); return true; } ////////////////////////////////////////////////////////////////////// // CGLSLVertexShader ////////////////////////////////////////////////////////////////////// bool CVertexShader::Compile() { GLint params[4]; Free(); m_vertexShader = glCreateShader(GL_VERTEX_SHADER); const char *ptr = m_source.c_str(); glShaderSource(m_vertexShader, 1, &ptr, 0); glCompileShader(m_vertexShader); glGetShaderiv(m_vertexShader, GL_COMPILE_STATUS, params); if (params[0] != GL_TRUE) { GLchar log[LOG_SIZE]; glGetShaderInfoLog(m_vertexShader, LOG_SIZE, NULL, log); m_lastLog = log; m_compiled = false; } else { GLchar log[LOG_SIZE]; glGetShaderInfoLog(m_vertexShader, LOG_SIZE, NULL, log); m_lastLog = log; m_compiled = true; } return m_compiled; } void CVertexShader::Free() { if (m_vertexShader) glDeleteShader(m_vertexShader); m_vertexShader = 0; } ////////////////////////////////////////////////////////////////////// // CVisGLSLPixelShader ////////////////////////////////////////////////////////////////////// bool CPixelShader::Compile() { GLint params[4]; Free(); if (m_source.length()==0) return true; m_pixelShader = glCreateShader(GL_FRAGMENT_SHADER); const char *ptr = m_source.c_str(); glShaderSource(m_pixelShader, 1, &ptr, 0); glCompileShader(m_pixelShader); glGetShaderiv(m_pixelShader, GL_COMPILE_STATUS, params); if (params[0] != GL_TRUE) { GLchar log[LOG_SIZE]; glGetShaderInfoLog(m_pixelShader, LOG_SIZE, NULL, log); m_lastLog = log; m_compiled = false; } else { GLchar log[LOG_SIZE]; glGetShaderInfoLog(m_pixelShader, LOG_SIZE, NULL, log); m_lastLog = log; m_compiled = true; } return m_compiled; } void CPixelShader::Free() { if (m_pixelShader) glDeleteShader(m_pixelShader); m_pixelShader = 0; } ////////////////////////////////////////////////////////////////////// // CShaderProgram ////////////////////////////////////////////////////////////////////// CShaderProgram::CShaderProgram(std::string &vert, std::string &frag) { char path[1024]; XBMC->GetSetting("__addonpath__", path); #if defined(HAS_GL) int major = 0; int minor = 0; const char* ver = (const char*)glGetString(GL_VERSION); if (ver != 0) { sscanf(ver, "%d.%d", &major, &minor); } if (major > 3 || (major == 3 && minor >= 2)) { strcat(path,"/resources/shaders/1.5/"); } else strcat(path,"/resources/shaders/1.2/"); #else strcat(path,"/resources/shaders/1.2/"); #endif std::string file; m_pFP = new CPixelShader(); file = path + frag; m_pFP->LoadSource(file); m_pVP = new CVertexShader(); file = path + vert; m_pVP->LoadSource(file); } void CShaderProgram::Free() { m_pVP->Free(); m_pFP->Free(); if (m_shaderProgram) glDeleteProgram(m_shaderProgram); m_shaderProgram = 0; m_ok = false; } bool CShaderProgram::CompileAndLink() { GLint params[4]; // free resources Free(); // compiled vertex shader if (!m_pVP->Compile()) return false; // compile pixel shader if (!m_pFP->Compile()) { m_pVP->Free(); return false; } // create program object if (!(m_shaderProgram = glCreateProgram())) goto error; // attach the vertex shader glAttachShader(m_shaderProgram, m_pVP->Handle()); glAttachShader(m_shaderProgram, m_pFP->Handle()); // link the program glLinkProgram(m_shaderProgram); glGetProgramiv(m_shaderProgram, GL_LINK_STATUS, params); if (params[0] != GL_TRUE) { GLchar log[LOG_SIZE]; glGetProgramInfoLog(m_shaderProgram, LOG_SIZE, NULL, log); goto error; } m_validated = false; m_ok = true; OnCompiledAndLinked(); return true; error: m_ok = false; Free(); return false; } bool CShaderProgram::Enable() { if (OK()) { glUseProgram(m_shaderProgram); if (OnEnabled()) { if (!m_validated) { // validate the program GLint params[4]; glValidateProgram(m_shaderProgram); glGetProgramiv(m_shaderProgram, GL_VALIDATE_STATUS, params); if (params[0] != GL_TRUE) { GLchar log[LOG_SIZE]; glGetProgramInfoLog(m_shaderProgram, LOG_SIZE, NULL, log); } m_validated = true; } return true; } else { glUseProgram(0); return false; } return true; } return false; } void CShaderProgram::Disable() { if (OK()) { glUseProgram(0); OnDisabled(); } } pvr.vdr.vnsi-3.6.4-Leia/src/shaders/Shader.h000066400000000000000000000101631362540622500205600ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2005-2013 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #if defined(HAS_GL) #if defined(__APPLE__) #include #else #define GL_GLEXT_PROTOTYPES #include #include #endif//__APPLE__ #else #if defined(__APPLE__) #include #include #else #include #include #endif//__APPLE__ #endif #include "kodi/AddonBase.h" #include #include ////////////////////////////////////////////////////////////////////// // CShader - base class ////////////////////////////////////////////////////////////////////// class ATTRIBUTE_HIDDEN CShader { public: CShader() = default; virtual ~CShader() = default; virtual bool Compile() = 0; virtual void Free() = 0; virtual GLuint Handle() = 0; bool LoadSource(std::string &file); bool OK() { return m_compiled; } protected: std::string m_source; std::string m_lastLog; std::vector m_attr; bool m_compiled = false; }; ////////////////////////////////////////////////////////////////////// // CVertexShader ////////////////////////////////////////////////////////////////////// class ATTRIBUTE_HIDDEN CVertexShader : public CShader { public: CVertexShader() = default; ~CVertexShader() override { Free(); } void Free() override; bool Compile() override; GLuint Handle() override { return m_vertexShader; } protected: GLuint m_vertexShader = 0; }; ////////////////////////////////////////////////////////////////////// // CPixelShader ////////////////////////////////////////////////////////////////////// class ATTRIBUTE_HIDDEN CPixelShader : public CShader { public: CPixelShader() = default; ~CPixelShader() { Free(); } void Free() override; bool Compile() override; GLuint Handle() override { return m_pixelShader; } protected: GLuint m_pixelShader = 0; }; ////////////////////////////////////////////////////////////////////// // CShaderProgram ////////////////////////////////////////////////////////////////////// class ATTRIBUTE_HIDDEN CShaderProgram { public: CShaderProgram(std::string &vert, std::string &frag); virtual ~CShaderProgram() { Free(); delete m_pFP; delete m_pVP; } bool Enable(); void Disable(); bool OK() { return m_ok; } void Free(); CVertexShader* VertexShader() { return m_pVP; } CPixelShader* PixelShader() { return m_pFP; } bool CompileAndLink(); virtual void OnCompiledAndLinked() {}; virtual bool OnEnabled() { return false; }; virtual void OnDisabled() {}; GLuint ProgramHandle() { return m_shaderProgram; } protected: CVertexShader* m_pVP = nullptr; CPixelShader* m_pFP = nullptr; GLuint m_shaderProgram = 0; bool m_ok = false; bool m_validated = false; }; pvr.vdr.vnsi-3.6.4-Leia/src/tools.cpp000066400000000000000000000030731362540622500174160ustar00rootroot00000000000000/* * Copyright (C) 2010 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include "tools.h" #ifndef TARGET_WINDOWS #define TYP_INIT 0 #define TYP_SMLE 1 #define TYP_BIGE 2 // need to check for ntohll definition // as it was added in iOS SDKs since 8.0 #if !defined(ntohll) uint64_t ntohll(uint64_t a) { return htonll(a); } #endif #if !defined(htonll) uint64_t htonll(uint64_t a) { static int typ = TYP_INIT; unsigned char c; union { uint64_t ull; unsigned char c[8]; } x; if (typ == TYP_INIT) { x.ull = 0x01; typ = (x.c[7] == 0x01ULL) ? TYP_BIGE : TYP_SMLE; } if (typ == TYP_BIGE) return a; x.ull = a; c = x.c[0]; x.c[0] = x.c[7]; x.c[7] = c; c = x.c[1]; x.c[1] = x.c[6]; x.c[6] = c; c = x.c[2]; x.c[2] = x.c[5]; x.c[5] = c; c = x.c[3]; x.c[3] = x.c[4]; x.c[4] = c; return x.ull; } #endif #endif pvr.vdr.vnsi-3.6.4-Leia/src/tools.h000066400000000000000000000021631362540622500170620ustar00rootroot00000000000000#pragma once /* * Copyright (C) 2010 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include #include "client.h" #ifndef TARGET_WINDOWS // need to check for ntohll definition // as it was added in iOS SDKs since 8.0 #if !defined(ntohll) uint64_t ntohll(uint64_t a); #endif #if !defined(htonll) uint64_t htonll(uint64_t a); #endif #endif #include "xbmc_codec_descriptor.hpp" pvr.vdr.vnsi-3.6.4-Leia/src/vnsicommand.h000066400000000000000000000145641362540622500202500ustar00rootroot00000000000000/* * Copyright (C) 2010 Alwin Esch (Team XBMC) * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #pragma once /** Current VNSI Protocol Version number */ #define VNSI_PROTOCOLVERSION 13 /** Start of RDS support protocol Version */ #define VNSI_RDS_PROTOCOLVERSION 8 /** Minimum VNSI Protocol Version number */ #define VNSI_MIN_PROTOCOLVERSION 5 /** Packet types */ #define VNSI_CHANNEL_REQUEST_RESPONSE 1 #define VNSI_CHANNEL_STREAM 2 #define VNSI_CHANNEL_KEEPALIVE 3 #define VNSI_CHANNEL_NETLOG 4 #define VNSI_CHANNEL_STATUS 5 #define VNSI_CHANNEL_SCAN 6 #define VNSI_CHANNEL_OSD 7 /** Response packets operation codes */ #define CONFNAME_PMTTIMEOUT "PmtTimeout" #define CONFNAME_TIMESHIFT "Timeshift" #define CONFNAME_TIMESHIFTBUFFERSIZE "TimeshiftBufferSize" #define CONFNAME_TIMESHIFTBUFFERFILESIZE "TimeshiftBufferFileSize" #define CONFNAME_TIMESHIFTBUFFERDIR "TimeshiftBufferDir" #define CONFNAME_PLAYRECORDING "PlayRecording" #define CONFNAME_AVOIDEPGSCAN "AvoidEPGScan" /* OPCODE 1 - 19: VNSI network functions for general purpose */ #define VNSI_LOGIN 1 #define VNSI_GETTIME 2 #define VNSI_ENABLESTATUSINTERFACE 3 #define VNSI_PING 7 #define VNSI_GETSETUP 8 #define VNSI_STORESETUP 9 #define VNSI_GETSOCKET 10 #define VNSI_INVALIDATESOCKET 11 /* OPCODE 20 - 39: VNSI network functions for live streaming */ #define VNSI_CHANNELSTREAM_OPEN 20 #define VNSI_CHANNELSTREAM_CLOSE 21 #define VNSI_CHANNELSTREAM_SEEK 22 #define VNSI_CHANNELSTREAM_STATUS_SOCKET 23 #define VNSI_CHANNELSTREAM_STATUS_REQUEST 24 /* OPCODE 40 - 59: VNSI network functions for recording streaming */ #define VNSI_RECSTREAM_OPEN 40 #define VNSI_RECSTREAM_CLOSE 41 #define VNSI_RECSTREAM_GETBLOCK 42 #define VNSI_RECSTREAM_POSTOFRAME 43 #define VNSI_RECSTREAM_FRAMETOPOS 44 #define VNSI_RECSTREAM_GETIFRAME 45 #define VNSI_RECSTREAM_GETLENGTH 46 /* OPCODE 60 - 79: VNSI network functions for channel access */ #define VNSI_CHANNELS_GETCOUNT 61 #define VNSI_CHANNELS_GETCHANNELS 63 #define VNSI_CHANNELGROUP_GETCOUNT 65 #define VNSI_CHANNELGROUP_LIST 66 #define VNSI_CHANNELGROUP_MEMBERS 67 #define VNSI_CHANNELS_GETCAIDS 68 #define VNSI_CHANNELS_GETWHITELIST 69 #define VNSI_CHANNELS_GETBLACKLIST 70 #define VNSI_CHANNELS_SETWHITELIST 71 #define VNSI_CHANNELS_SETBLACKLIST 72 /* OPCODE 80 - 99: VNSI network functions for timer access */ #define VNSI_TIMER_GETCOUNT 80 #define VNSI_TIMER_GET 81 #define VNSI_TIMER_GETLIST 82 #define VNSI_TIMER_ADD 83 #define VNSI_TIMER_DELETE 84 #define VNSI_TIMER_UPDATE 85 #define VNSI_TIMER_GETTYPES 86 /* OPCODE 100 - 119: VNSI network functions for recording access */ #define VNSI_RECORDINGS_DISKSIZE 100 #define VNSI_RECORDINGS_GETCOUNT 101 #define VNSI_RECORDINGS_GETLIST 102 #define VNSI_RECORDINGS_RENAME 103 #define VNSI_RECORDINGS_DELETE 104 #define VNSI_RECORDINGS_GETEDL 105 /* OPCODE 120 - 139: VNSI network functions for epg access and manipulating */ #define VNSI_EPG_GETFORCHANNEL 120 /* OPCODE 140 - 159: VNSI network functions for channel scanning */ #define VNSI_SCAN_SUPPORTED 140 #define VNSI_SCAN_GETCOUNTRIES 141 #define VNSI_SCAN_GETSATELLITES 142 #define VNSI_SCAN_START 143 #define VNSI_SCAN_STOP 144 /* OPCODE 160 - 179: VNSI network functions for channel scanning */ #define VNSI_OSD_CONNECT 160 #define VNSI_OSD_DISCONNECT 161 #define VNSI_OSD_HITKEY 162 /* OPCODE 180 - 189: VNSI network functions for deleted recording access */ #define VNSI_RECORDINGS_DELETED_ACCESS_SUPPORTED 180 #define VNSI_RECORDINGS_DELETED_GETCOUNT 181 #define VNSI_RECORDINGS_DELETED_GETLIST 182 #define VNSI_RECORDINGS_DELETED_DELETE 183 #define VNSI_RECORDINGS_DELETED_UNDELETE 184 #define VNSI_RECORDINGS_DELETED_DELETE_ALL 185 /** Stream packet types (server -> client) */ #define VNSI_STREAM_CHANGE 1 #define VNSI_STREAM_STATUS 2 #define VNSI_STREAM_QUEUESTATUS 3 #define VNSI_STREAM_MUXPKT 4 #define VNSI_STREAM_SIGNALINFO 5 #define VNSI_STREAM_CONTENTINFO 6 #define VNSI_STREAM_BUFFERSTATS 7 #define VNSI_STREAM_REFTIME 8 #define VNSI_STREAM_TIMES 9 /** Scan packet types (server -> client) */ #define VNSI_SCANNER_PERCENTAGE 1 #define VNSI_SCANNER_SIGNAL 2 #define VNSI_SCANNER_DEVICE 3 #define VNSI_SCANNER_TRANSPONDER 4 #define VNSI_SCANNER_NEWCHANNEL 5 #define VNSI_SCANNER_FINISHED 6 #define VNSI_SCANNER_STATUS 7 /** OSD packet types (server -> client) */ #define VNSI_OSD_MOVEWINDOW 1 #define VNSI_OSD_CLEAR 2 #define VNSI_OSD_OPEN 3 #define VNSI_OSD_CLOSE 4 #define VNSI_OSD_SETPALETTE 5 #define VNSI_OSD_SETBLOCK 6 /** Status packet types (server -> client) */ #define VNSI_STATUS_TIMERCHANGE 1 #define VNSI_STATUS_RECORDING 2 #define VNSI_STATUS_MESSAGE 3 #define VNSI_STATUS_CHANNELCHANGE 4 #define VNSI_STATUS_RECORDINGSCHANGE 5 #define VNSI_STATUS_EPGCHANGE 6 /** Timer */ #define VNSI_TIMER_TYPE_MAN 1 #define VNSI_TIMER_TYPE_MAN_REPEAT 2 #define VNSI_TIMER_TYPE_EPG 3 #define VNSI_TIMER_TYPE_VPS 4 #define VNSI_TIMER_TYPE_EPG_SEARCH 5 #define VNSI_TIMER_TYPE_MAN_REPEAT_CHILD 6 /** Packet return codes */ #define VNSI_RET_OK 0 #define VNSI_RET_RECRUNNING 1 #define VNSI_RET_NOTSUPPORTED 995 #define VNSI_RET_DATAUNKNOWN 996 #define VNSI_RET_DATALOCKED 997 #define VNSI_RET_DATAINVALID 998 #define VNSI_RET_ERROR 999 pvr.vdr.vnsi-3.6.4-Leia/src/xbmc_codec_descriptor.hpp000066400000000000000000000041641362540622500226110ustar00rootroot00000000000000/* * Copyright (C) 2005-2013 Team XBMC * http://xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, see * . * */ #ifndef XBMC_CODEC_DESCRIPTOR_HPP #define XBMC_CODEC_DESCRIPTOR_HPP #include "kodi/libXBMC_pvr.h" /** * Adapter which converts codec names used by tvheadend and VDR into their * FFmpeg equivalents. */ class CodecDescriptor { public: CodecDescriptor(void) { m_codec.codec_id = XBMC_INVALID_CODEC_ID; m_codec.codec_type = XBMC_CODEC_TYPE_UNKNOWN; } CodecDescriptor(xbmc_codec_t codec, const char* name) : m_codec(codec), m_strName(name) {} virtual ~CodecDescriptor(void) {} const std::string& Name(void) const { return m_strName; } xbmc_codec_t Codec(void) const { return m_codec; } static CodecDescriptor GetCodecByName(const char* strCodecName) { CodecDescriptor retVal; // some of Tvheadend's and VDR's codec names don't match ffmpeg's, so translate them to something ffmpeg understands if (!strcmp(strCodecName, "MPEG2AUDIO")) retVal = CodecDescriptor(PVR->GetCodecByName("MP2"), strCodecName); else if (!strcmp(strCodecName, "MPEGTS")) retVal = CodecDescriptor(PVR->GetCodecByName("MPEG2VIDEO"), strCodecName); else if (!strcmp(strCodecName, "TEXTSUB")) retVal = CodecDescriptor(PVR->GetCodecByName("TEXT"), strCodecName); else retVal = CodecDescriptor(PVR->GetCodecByName(strCodecName), strCodecName); return retVal; } private: xbmc_codec_t m_codec; std::string m_strName; }; #endif /* XBMC_CODEC_DESCRIPTOR_HPP */