diff --git a/.github/workflows/enigma2.yml b/.github/workflows/enigma2.yml deleted file mode 100644 index 8c740c16194..00000000000 --- a/.github/workflows/enigma2.yml +++ /dev/null @@ -1,111 +0,0 @@ -name: Enigma2 CI - -on: - push: - branches: [ develop ] - pull_request: - branches: [ develop ] - -jobs: - build: - runs-on: ubuntu-18.04 - strategy: - matrix: - gcc: [8, 10] - steps: - - uses: actions/checkout@v2 - - name: install gcc ${{ matrix.gcc }} - run: | - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test - sudo apt-get -q update - sudo apt install g++-${{ matrix.gcc }} - - name: install python packages - run: | - pip install netifaces pyopenssl python-wifi service_identity twisted - - name: install dev packages - run: | - sudo apt-get -q update - sudo apt-get install linux-libc-dev - sudo apt-get install git - sudo apt-get install build-essential - sudo apt-get install automake - sudo apt-get install libtool - sudo apt-get install python-dev - sudo apt-get install zlib1g-dev - sudo apt-get install gettext - sudo apt-get install swig - sudo apt-get install libgstreamer1.0-dev - sudo apt-get install libgstreamer-plugins-base1.0-dev - sudo apt-get install libfreetype6-dev - sudo apt-get install libsigc++-2.0-dev - sudo apt-get install libfribidi-dev - sudo apt-get install libssl-dev - sudo apt-get install libavahi-client-dev - sudo apt-get install libjpeg-turbo8-dev - sudo apt-get install libgif-dev - - name: build enigma2 dependencies - env: - CC: "gcc-${{ matrix.gcc }}" - CXX: "g++-${{ matrix.gcc }}" - run: | - echo installing libdvbsi++ - pushd . - cd /tmp - git clone --depth 1 git://git.opendreambox.org/git/obi/libdvbsi++.git - cd libdvbsi++ - autoreconf -i - ./configure - make - sudo make install - popd - echo installing tuxbox - pushd . - cd /tmp - git clone --depth 1 https://github.com/OpenPLi/tuxtxt.git - cd tuxtxt/libtuxtxt - autoreconf -i - ./configure --with-boxtype=generic DVB_API_VERSION=5 - make - sudo make install - cd ../tuxtxt - autoreconf -i - ./configure --with-boxtype=generic DVB_API_VERSION=5 - make - sudo make install - popd - - name: patch enigma cpp files - run: | - sed -i 's/eFatal/eDebug/g' lib/gdi/gfbdc.cpp - - name: build enigma2 - env: - CC: "gcc-${{ matrix.gcc }}" - CXX: "g++-${{ matrix.gcc }}" - run: | - echo compiling enigma2 - autoreconf -i - ./configure --with-libsdl=no --with-boxtype=nobox --enable-dependency-tracking ac_cv_prog_c_openmp=-fopenmp --with-textlcd - make - python -m compileall . - - name: patch enigma py files - run: | - sed -i 's/reloadWindowStyles() #/# reloadWindowStyles() #/g' lib/python/skin.py - sed -i 's/setResolution(xres, yres/setResolution(xres, yres, 8/g' lib/python/skin.py - sed -i '1 i\globals()["__builtins__"]["ngettext"] = ngettext' lib/python/Tools/Profile.py - sed -i '1 i\from gettext import ngettext' lib/python/Tools/Profile.py - sed -i 's/reactor.run/pass # reactor.run/g' lib/python/StartEnigma.py - sed -i 's/enigma.quitMainloop(5)/enigma.quitMainloop(1)/' lib/python/StartEnigma.py - sed -i 's/import enigma/import enigma\nenigma.quitMainloop(1)/' lib/python/StartEnigma.py - echo 'enigma.quitMainloop(0)' >> lib/python/StartEnigma.py - - name: install enigma - run: | - sudo make install - sudo mkdir -p '/usr/local/etc/enigma2' - sudo sh -c "echo 'config.misc.do_overscanwizard=false' > /usr/local/etc/enigma2/settings" - sudo sh -c "echo 'config.misc.firstrun=false' >> /usr/local/etc/enigma2/settings" - sudo sh -c "echo 'config.misc.initialchannelselection=false' >> /usr/local/etc/enigma2/settings" - sudo sh -c "echo 'config.misc.languageselected=false' >> /usr/local/etc/enigma2/settings" - sudo sh -c "echo 'config.misc.videowizardenabled=false' >> /usr/local/etc/enigma2/settings" - - name: start enigma2 - run: | - sudo LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib ENIGMA_DEBUG_LVL=5 enigma2 - echo done! diff --git a/.gitignore b/.gitignore index a7054731f56..6ea75e43397 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ # For a project mostly in C, the following would be a good set of # exclude patterns (uncomment them if you want to use them): *~ +*.pyc +*.pyo *.a aclocal.m4 autom4te.cache/ diff --git a/README b/README index 4b49a010ddc..b069404c5dc 100644 --- a/README +++ b/README @@ -1 +1,2 @@ To build enigma2, start reading here: https://wiki.openpli.org/Information_for_Developers +support dreambox diff --git a/README.en.md b/README.en.md new file mode 100644 index 00000000000..785b84803f1 --- /dev/null +++ b/README.en.md @@ -0,0 +1,73 @@ +The project is an open-source implementation of an Enigma2-based Digital Video Broadcasting (DVB) system, primarily tailored for embedded devices such as set-top boxes. It includes a wide range of components for handling DVB services, user interfaces, multimedia playback, and hardware interactions. + +--- + +## README + +### Project Overview + +This project is an open-source implementation of a Digital Video Broadcasting (DVB) system based on [Enigma2](https://github.com/OpenPLi/enigma2), primarily designed for embedded devices such as set-top boxes. It supports a wide range of functionalities, including DVB service handling, user interface management, multimedia playback control, and hardware interaction. + +### Features + +- **DVB Support**: Supports multiple DVB standards, including DVB-S (satellite), DVB-C (cable), DVB-T (terrestrial), and ATSC. +- **Hardware Control**: Provides control over audio/video outputs, HDMI CEC, infrared remote controls, and other hardware components. +- **EPG Support**: Supports automatic loading and caching of Electronic Program Guide (EPG) data. +- **User Interface**: Features an XML-based skin system supporting multiple languages and resolutions. +- **Network Streaming**: Supports media streaming via HTTP and HTTPS. +- **Recording and Playback**: Enables recording and playback of TV programs with timeshift functionality. +- **Plugin System**: Offers an extensible plugin architecture for integrating third-party functionalities. +- **Multilingual Support**: Supports multiple interface languages, including Chinese, English, German, French, and others. + +### Directory Structure + +- **data/**: Contains skins, fonts, icons, configuration files, and resource assets. +- **lib/**: Core functionality implementations, including DVB services, audio/video decoding, hardware control, and network stream handling. +- **lib/python/**: Python-based components and plugins for building the user interface and implementing business logic. +- **doc/**: Documentation and development guides. +- **include/**: C++ header files. + +### Development Documentation + +Development documentation is located in the `doc/` directory and includes: +- **BUTTONGUIDE**: Button operation guide. +- **DEFAULTS**: Default configuration explanations. +- **FILEFORMAT**: File format specifications. +- **NUMERICALTEXTINPUT**: Numerical text input methods. +- **PLUGINS**: Plugin development guide. +- **RETURNCODES**: Return code definitions. +- **RULES**: Development guidelines. +- **SKINS**: Skin development documentation. +- **SOURCES**: Source code structure overview. +- **TRANSLATIONS**: Multilingual support guide. +- **VIRTUALKEYBOARD**: Virtual keyboard usage instructions. + +### Build and Deployment + +This project uses `autotools` for build management and supports cross-platform compilation. Key dependencies include: +- **Python 2.x** (for certain components) +- **GStreamer** (for multimedia stream processing) +- **libdvb** (core DVB library) +- **libbase** (basic library for timers, threads, memory management, etc.) + +Build steps: +1. Run `autogen.sh` to generate the `configure` script. +2. Execute `./configure` to configure the build environment. +3. Run `make` to compile the project. + +### Usage + +This project is primarily used to build DVB-based set-top box firmware, supporting reception and playback of satellite, cable, and terrestrial TV signals. The user interface is based on an XML skin system, allowing high customization. + +### Contributions + +Contributions, patches, and improvements are welcome. Please adhere to the project’s coding standards and test your code before submission. + +### License + +This project is licensed under the GNU General Public License v2.0 or later. For details, refer to the `LICENSE` file. + +### Contact + +- Project Maintainer: jackgee2021 (https://gitee.com/jackgee2021) +- Project Homepage: [Gitee Enigma2 OpenPLi](https://gitee.com/jackgee2021/enigma2-openpli) \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000000..654b53b4e5c --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +The project is an open-source implementation of an Enigma2-based digital video broadcasting (DVB) system, primarily tailored for embedded devices such as set-top boxes. It includes a wide range of components for handling DVB services, user interfaces, multimedia playback, and hardware interactions. + +--- + +## README + +### 项目简介 + +该项目是基于 [Enigma2](https://github.com/OpenPLi/enigma2) 的开源数字视频广播 (DVB) 系统实现,主要用于嵌入式设备如机顶盒。该项目支持多种功能,包括 DVB 服务处理、用户界面管理、多媒体播放控制、硬件交互等。 + +### 功能特点 + +- **DVB 支持**:支持多种 DVB 标准,包括 DVB-S(卫星)、DVB-C(有线)、DVB-T(地面)和 ATSC。 +- **硬件控制**:提供对音视频输出、HDMI CEC、红外遥控器等硬件的控制功能。 +- **EPG 支持**:支持电子节目指南 (EPG) 的自动加载和缓存。 +- **用户界面**:提供基于 XML 的皮肤系统,支持多语言和多种分辨率。 +- **网络流媒体**:支持通过 HTTP 和 HTTPS 流媒体传输。 +- **录制与播放**:支持电视节目的录制和回放,并提供时间平移功能。 +- **插件系统**:提供插件扩展机制,支持第三方功能集成。 +- **多语言支持**:支持多种语言界面,包括中文、英文、德语、法语等。 + +### 目录结构 + +- **data/**:包含皮肤、字体、图标、配置文件和资源文件。 +- **lib/**:核心功能实现,包括 DVB 服务、音频/视频解码、硬件控制、网络流处理等。 +- **lib/python/**:基于 Python 的组件和插件,用于构建用户界面和实现业务逻辑。 +- **doc/**:文档和开发指南。 +- **include/**:C++ 头文件。 + +### 开发文档 + +开发文档位于 `doc/` 目录,包括: +- **BUTTONGUIDE**:按钮操作指南。 +- **DEFAULTS**:默认配置说明。 +- **FILEFORMAT**:文件格式说明。 +- **NUMERICALTEXTINPUT**:数字文本输入方法。 +- **PLUGINS**:插件开发指南。 +- **RETURNCODES**:返回码定义。 +- **RULES**:开发规范。 +- **SKINS**:皮肤开发文档。 +- **SOURCES**:源码结构说明。 +- **TRANSLATIONS**:多语言支持指南。 +- **VIRTUALKEYBOARD**:虚拟键盘使用说明。 + +### 构建与部署 + +该项目使用 `autotools` 进行构建管理,支持跨平台编译。主要依赖项包括: +- **Python 2.x**(部分组件) +- **GStreamer**(用于多媒体流处理) +- **libdvb**(DVB 核心库) +- **libbase**(基础库,如定时器、线程、内存管理等) + +构建步骤: +1. 运行 `autogen.sh` 生成 `configure` 脚本。 +2. 执行 `./configure` 以配置构建环境。 +3. 执行 `make` 编译项目。 + +### 使用 + +本项目主要用于构建基于 DVB 的机顶盒固件,支持卫星、有线和地面电视信号的接收与播放。用户界面基于 XML 皮肤,支持高度定制化。 + +### 贡献 + +欢迎开发者提交补丁和改进。请遵循项目编码规范,并在提交前测试代码。 + +### 授权协议 + +本项目使用 GNU General Public License v2.0 或更高版本授权。有关详细信息,请参阅 `LICENSE` 文件。 + +### 联系方式 + +- 项目维护者:jackgee2021 (https://gitee.com/jackgee2021) +- 项目主页:[Gitee Enigma2 OpenPLi](https://gitee.com/jackgee2021/enigma2-openpli) + +--- \ No newline at end of file diff --git a/configure.ac b/configure.ac index 5378c986020..ac7ef84d1db 100644 --- a/configure.ac +++ b/configure.ac @@ -57,12 +57,37 @@ AC_SUBST(BOXTYPE) AC_DEFINE_UNQUOTED(BOXTYPE,"$BOXTYPE",[box type]) AM_CONDITIONAL(DREAMBOX, test `echo "$BOXTYPE" | cut -b 1-2` == "dm") -AM_CONDITIONAL(HAVE_TEMPFANCONTROL, test "$BOXTYPE" == dm8000 -o "$BOXTYPE" == dm800se -o "$BOXTYPE" == dm500hd) +AM_CONDITIONAL(DM900, test "$BOXTYPE" == dm900) +AM_CONDITIONAL(DM920, test "$BOXTYPE" == dm920) +AM_CONDITIONAL(DM8000, test "$BOXTYPE" == dm8000) +AM_CONDITIONAL(DM7080, test "$BOXTYPE" == dm7080) +AM_CONDITIONAL(DM820, test "$BOXTYPE" == dm820) +AM_CONDITIONAL(DM520, test "$BOXTYPE" == dm520) +AM_CONDITIONAL(DM7020HD, test "$BOXTYPE" == dm7020hd) +AM_CONDITIONAL(DM7020HDV2, test "$BOXTYPE" == dm7020hdv2) +AM_CONDITIONAL(DM800, test "$BOXTYPE" == dm800) +AM_CONDITIONAL(DM800SE, test "$BOXTYPE" == dm800se) +AM_CONDITIONAL(DM800SEV2, test "$BOXTYPE" == dm800sev2) +AM_CONDITIONAL(DM500HD, test "$BOXTYPE" == dm500hd) +AM_CONDITIONAL(DM500HDV2, test "$BOXTYPE" == dm500hdv2) + if test `echo "$BOXTYPE" | cut -b 1-2` == "dm"; then AC_DEFINE(DREAMBOX, 1, [Dreambox hardware]) AC_DEFINE(KEY_PLAY_ACTUALLY_IS_KEY_PLAYPAUSE, 1,[define when rc sends a KEY_PLAY event for its KEY_PLAYPAUSE key]) fi +if test "$BOXTYPE" == "dm7080" -o "$BOXTYPE" == "dm820" -o "$BOXTYPE" == "dm800se" -o "$BOXTYPE" == "dm800sev2" -o "$BOXTYPE" == "dm7020hd" -o "$BOXTYPE" == "dm7020hdv2" -o "$BOXTYPE" == "dm900" -o "$BOXTYPE" == "dm920"; then + AC_DEFINE(DREAMBOX_DUAL_TUNER, 1,[define BOXTYPE DM7080]) +fi + +if test "$BOXTYPE" == "dm7080" -o "$BOXTYPE" == "dm820" -o "$BOXTYPE" == "dm900" -o "$BOXTYPE" == "dm920" -o "$BOXTYPE" == "dm520"; then + AC_DEFINE(CONFIG_ION, 1,[define BOX use ION Allocator]) +fi + +if test `echo "$BOXTYPE" | cut -b 1-3` == "dm9"; then + AC_DEFINE(DREAMBOX_MOVE_LCD, 1,[define when we need to move lcd text a bit to the right]) +fi + AC_ARG_WITH(textlcd, AC_HELP_STRING([--with-textlcd], [use ascii based lcd, yes or no]), [[withtextlcd=$withval]], @@ -327,8 +352,6 @@ lib/python/Plugins/SystemPlugins/FastChannelChange/meta/Makefile lib/python/Plugins/SystemPlugins/Hotplug/Makefile lib/python/Plugins/SystemPlugins/Hotplug/meta/Makefile lib/python/Plugins/SystemPlugins/Makefile -lib/python/Plugins/SystemPlugins/TempFanControl/Makefile -lib/python/Plugins/SystemPlugins/TempFanControl/meta/Makefile lib/python/Plugins/SystemPlugins/NetworkWizard/Makefile lib/python/Plugins/SystemPlugins/NetworkWizard/meta/Makefile lib/python/Plugins/SystemPlugins/PositionerSetup/Makefile diff --git a/data/display/skin_display_dm7020hd.xml b/data/display/skin_display_dm7020hd.xml new file mode 120000 index 00000000000..2ed7e4add61 --- /dev/null +++ b/data/display/skin_display_dm7020hd.xml @@ -0,0 +1 @@ +skin_display_dm8000.xml \ No newline at end of file diff --git a/data/display/skin_display_dm7020hdv2.xml b/data/display/skin_display_dm7020hdv2.xml new file mode 120000 index 00000000000..2ed7e4add61 --- /dev/null +++ b/data/display/skin_display_dm7020hdv2.xml @@ -0,0 +1 @@ +skin_display_dm8000.xml \ No newline at end of file diff --git a/data/display/skin_display_dm7080.xml b/data/display/skin_display_dm7080.xml new file mode 100644 index 00000000000..67e721b43aa --- /dev/null +++ b/data/display/skin_display_dm7080.xml @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + Name + + + Name + + + Progress + + + + Remaining + Follow + + + + + + + + + Name + + + Name + + + Progress + + + + + + + + + + + + + + + + Name + + + Position + + + + Position + + + + + + + + + + + + + + + + + + + + FileSize + + + RecordServiceName + + + + + + + + Name + + + Position + + + + Position + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RecordServiceName + + + + Name + + + + + FileSize + + + Duration + InMinutes + + + + + + + + + + + Name + + + + Position + + + + + + Remaining + + + + Default + + + + config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean + Blink + + + + + + + + + diff --git a/data/display/skin_display_dm800.xml b/data/display/skin_display_dm800.xml new file mode 120000 index 00000000000..2ed7e4add61 --- /dev/null +++ b/data/display/skin_display_dm800.xml @@ -0,0 +1 @@ +skin_display_dm8000.xml \ No newline at end of file diff --git a/data/display/skin_display_dm8000.xml b/data/display/skin_display_dm8000.xml new file mode 100644 index 00000000000..c423d3910fe --- /dev/null +++ b/data/display/skin_display_dm8000.xml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + Name + + + Name + + + Progress + + + + Remaining + Follow + + + + + + + + + Name + + + Name + + + Progress + + + + + + + + + + + + + + + + Name + + + Position + + + + Position + + + + + + + + + + + + + + + + + + + + FileSize + + + RecordServiceName + + + + + + + + Name + + + Position + + + + Position + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RecordServiceName + + + + Name + + + + + FileSize + + + Duration + InMinutes + + + + + + + + + + + Name + + + + Position + + + + + + Remaining + + + + Default + + + + config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean + Blink + + + + + + + + + diff --git a/data/display/skin_display_dm800sev2.xml b/data/display/skin_display_dm800sev2.xml new file mode 100644 index 00000000000..18c16c12f09 --- /dev/null +++ b/data/display/skin_display_dm800sev2.xml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + Name + + + Progress + + + + + + Remaining + NoSeconds + + + + + + + + + + Name + + + Name + + + Progress + + + + + + + + + + + + + + + + + + + + + Name + + + Position + + + Position + + + + + + + + + + + + + + + + + + + + + + RecordServiceName + + + FileSize + + + + + + + Name + + + + Position + + + Position + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ShortDate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/display/skin_display_dm820.xml b/data/display/skin_display_dm820.xml new file mode 120000 index 00000000000..c14598bf00a --- /dev/null +++ b/data/display/skin_display_dm820.xml @@ -0,0 +1 @@ +skin_display_dm800se.xml \ No newline at end of file diff --git a/data/display/skin_display_dm900.xml b/data/display/skin_display_dm900.xml new file mode 100644 index 00000000000..ec7a4429076 --- /dev/null +++ b/data/display/skin_display_dm900.xml @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + Name + + + Progress + + + Remaining + FOLLOW + + + + NUMBER + 0,0 + + + + NUMBER + 1,1 + + + + NUMBER + 2,2 + + + + NUMBER + 3,3 + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + Name + + + Position + + + Remaining,Negate + + + Format:%H:%M + + + + + + + + + + + + + + + + + FileSize + + + RecordServiceName + + + + + + + + + + Position + + + Remaining,Negate + + + Format:%H:%M + + + + + + Name + + + Name + + + Progress + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Format:%d.%m.%Y + + + Format:%H:%M + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + Position + + + + Position + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + + Position + + + + + + Format:%H:%M + + + + Remaining,Negate + + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + + + + + + + + + diff --git a/data/display/skin_display_dm920.xml b/data/display/skin_display_dm920.xml new file mode 100644 index 00000000000..1d75e758187 --- /dev/null +++ b/data/display/skin_display_dm920.xml @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + Name + + + Progress + + + Remaining + FOLLOW + + + + NUMBER + 0,0 + + + + NUMBER + 1,1 + + + + NUMBER + 2,2 + + + + NUMBER + 3,3 + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + Name + + + Position + + + Remaining,Plus + + + Format:%H:%M + + + + + + + + + + + + + + + + + FileSize + + + RecordServiceName + + + + + + + + + + Position + + + Remaining,Negate + + + Format:%H:%M + + + + + + Name + + + Name + + + Progress + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Format:%d.%m.%Y + + + Format:%H:%M + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + Position + + + + Position + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + + Position + + + + + + Format:%H:%M + + + + Remaining,Negate + + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + + + + + + + + + diff --git a/data/encoding.conf b/data/encoding.conf index b8ff59b2e16..dcc167fff31 100644 --- a/data/encoding.conf +++ b/data/encoding.conf @@ -95,7 +95,7 @@ pes UTF-8 20101 42 ISO8859-9 # Digital Platform 42°E 30901 42 ISO8859-9 # Digital Platform 42°E 40901 42 ISO8859-9 # Digital Platform 42°E -42001 42 ISO8859-9 # Digital Platform 42°E +42001 1070 ISO8859-9 # Digital Platform 42°E 43305 42 ISO8859-9 # Digital Platform 42°E 50600 42 ISO8859-9 # Digital Platform 42°E 30701 42 ISO8859-9 # Digital Platform 42°E @@ -115,7 +115,7 @@ pes UTF-8 40801 42 ISO8859-9 # Digital Platform 42°E 41005 42 ISO8859-9 # Digital Platform 42°E 41301 42 ISO8859-9 # Digital Platform 42°E -41401 42 ISO8859-9 # Digital Platform 42°E +41401 1070 ISO8859-9 # Digital Platform 42°E 41501 42 ISO8859-9 # Digital Platform 42°E 41703 42 ISO8859-9 # Digital Platform 42°E 41901 42 ISO8859-9 # Digital Platform 42°E diff --git a/data/keymap.xml b/data/keymap.xml index ec3987ca65a..73e82f80371 100644 --- a/data/keymap.xml +++ b/data/keymap.xml @@ -886,17 +886,23 @@ + + + + + + @@ -923,6 +929,8 @@ + + diff --git a/data/menu.xml b/data/menu.xml index 66789f9e364..b9dbefe6f40 100644 --- a/data/menu.xml +++ b/data/menu.xml @@ -97,5 +97,6 @@ 1 1 1 + 16 diff --git a/data/rc_models/rc_models.cfg b/data/rc_models/rc_models.cfg index a086d83bccf..dd60c8fe65b 100644 --- a/data/rc_models/rc_models.cfg +++ b/data/rc_models/rc_models.cfg @@ -19,6 +19,21 @@ # # When no entry matches at all, 'default' will be used as remoteName # +# Dreambox +dm8000 dmm0 +dm800 dmm1 +dm800se dmm1 +dm500hd dmm1 +dm7080 dmm2 +dm7020hd dmm2 +dm7020hdv2 dmm2 +dm800sev2 dmm2 +dm500hdv2 dmm2 +dm520 dmm2 +dm820 dmm2 +dm900 dmm2 +dm920 dmm2 +dreamone dmm2 # Amiko vipercombo amiko vipert2c amiko @@ -161,7 +176,9 @@ h8 zgemma h9 zgemma h9se zgemma h9combo zgemma +h9twin zgemma h9combose zgemma +h9twinse zgemma h10 zgemma h11 zgemma lc sh1 diff --git a/data/setup.xml b/data/setup.xml index a43c395c6f9..2779a944c76 100644 --- a/data/setup.xml +++ b/data/setup.xml @@ -2,6 +2,8 @@ config.timezone.area config.timezone.val + config.ntp.timesync + config.ntp.server @@ -13,7 +15,21 @@ config.usage.menu_show_numbers config.misc.softcam_setup.extension_menu config.misc.zapmode + config.misc.zapmodeDM config.usage.enable_tt_caching + config.usage.tt_res + config.usage.tuxtxt_UseTTF + config.usage.tuxtxt_TTFBold + config.usage.tuxtxt_TTFScreenResX + config.usage.tuxtxt_StartX + config.usage.tuxtxt_EndX + config.usage.tuxtxt_StartY + config.usage.tuxtxt_EndY + config.usage.tuxtxt_TTFShiftY + config.usage.tuxtxt_TTFShiftX + config.usage.tuxtxt_TTFWidthFactor16 + config.usage.tuxtxt_TTFHeightFactor16 + config.usage.tuxtxt_CleanAlgo config.usage.output_12V config.usage.alternatives_priority config.usage.frontend_priority @@ -219,6 +235,11 @@ config.osd.contrast + config.usage.frontled_color + config.usage.frontledrec_color + config.usage.frontledstdby_color + config.usage.frontledrecstdby_color + config.usage.frontled_speed config.lcd.showTv config.usage.LcdLiveTVMode config.usage.LcdLiveDecoder @@ -228,10 +249,10 @@ config.usage.powerLED config.usage.standbyLED config.usage.suspendLED - config.lcd.ledpowercolor + config.lcd.ledpowercolor config.lcd.ledstandbycolor config.lcd.ledsuspendcolor - config.lcd.power4x7on + config.lcd.power4x7on config.lcd.power4x7standby config.lcd.power4x7suspend config.usage.vfd_scroll_repeats diff --git a/data/skin_default/picon_default.png b/data/skin_default/picon_default.png index cba0568d5b2..5d395036496 100644 Binary files a/data/skin_default/picon_default.png and b/data/skin_default/picon_default.png differ diff --git a/data/skin_display_dm900.xml b/data/skin_display_dm900.xml new file mode 100644 index 00000000000..f8b85764524 --- /dev/null +++ b/data/skin_display_dm900.xml @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + Name + + + Progress + + + Remaining + FOLLOW + + + + NUMBER + 0,0 + + + + NUMBER + 1,1 + + + + NUMBER + 2,2 + + + + NUMBER + 3,3 + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + Name + + + Position + + + Remaining,Negate + + + Format:%H:%M + + + + + + + + + + + + + + + + + FileSize + + + RecordServiceName + + + + + + + + + + Position + + + Remaining,Negate + + + Format:%H:%M + + + + + + Name + + + Name + + + Progress + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Format:%d.%m.%Y + + + Format:%H:%M + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + Position + + + + Position + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + + Position + + + + + + Format:%H:%M + + + + Remaining,Negate + + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + + + + + + + + + diff --git a/data/skin_display_dm920.xml b/data/skin_display_dm920.xml new file mode 100644 index 00000000000..35dc58457b6 --- /dev/null +++ b/data/skin_display_dm920.xml @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + Name + + + Progress + + + Remaining + FOLLOW + + + + NUMBER + 0,0 + + + + NUMBER + 1,1 + + + + NUMBER + 2,2 + + + + NUMBER + 3,3 + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + Name + + + Position + + + Remaining,Plus + + + Format:%H:%M + + + + + + + + + + + + + + + + + FileSize + + + RecordServiceName + + + + + + + + + + Position + + + Remaining,Negate + + + Format:%H:%M + + + + + + Name + + + Name + + + Progress + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Format:%d.%m.%Y + + + Format:%H:%M + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + Position + + + + Position + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name + + + + Position + + + + + + Format:%H:%M + + + + Remaining,Negate + + + + + config.usage.blinking_rec_symbol_during_recording,True,CheckSourceBoolean + Blink + + + config.usage.blinking_rec_symbol_during_recording,False,CheckSourceBoolean + + + + + + + + + + + + + + + + + diff --git a/data/unicable.xml b/data/unicable.xml index fde1eeeab0d..5e96cdf1986 100644 --- a/data/unicable.xml +++ b/data/unicable.xml @@ -48,9 +48,9 @@ lofh: integer, alternative LOF/H value (optional, defaultvalue is 10600) - - - + + + @@ -60,10 +60,10 @@ lofh: integer, alternative LOF/H value (optional, defaultvalue is 10600) - + - - + + @@ -79,8 +79,9 @@ lofh: integer, alternative LOF/H value (optional, defaultvalue is 10600) + - + @@ -225,12 +226,12 @@ lofh: integer, alternative LOF/H value (optional, defaultvalue is 10600) - - - - - - + + + + + + @@ -259,22 +260,22 @@ lofh: integer, alternative LOF/H value (optional, defaultvalue is 10600) - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/interfaces/ion.h b/interfaces/ion.h new file mode 100644 index 00000000000..3af51b4188f --- /dev/null +++ b/interfaces/ion.h @@ -0,0 +1,204 @@ +/* + * drivers/staging/android/uapi/ion.h + * + * Copyright (C) 2011 Google, Inc. + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * 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. + * + */ + +#ifndef _UAPI_LINUX_ION_H +#define _UAPI_LINUX_ION_H + +#include +#include + +typedef int ion_user_handle_t; + +/** + * enum ion_heap_types - list of all possible types of heaps + * @ION_HEAP_TYPE_SYSTEM: memory allocated via vmalloc + * @ION_HEAP_TYPE_SYSTEM_CONTIG: memory allocated via kmalloc + * @ION_HEAP_TYPE_CARVEOUT: memory allocated from a prereserved + * carveout heap, allocations are physically + * contiguous + * @ION_HEAP_TYPE_DMA: memory allocated via DMA API + * @ION_NUM_HEAPS: helper for iterating over heaps, a bit mask + * is used to identify the heaps, so only 32 + * total heap types are supported + */ +enum ion_heap_type { + ION_HEAP_TYPE_SYSTEM, + ION_HEAP_TYPE_SYSTEM_CONTIG, + ION_HEAP_TYPE_CARVEOUT, + ION_HEAP_TYPE_CHUNK, + ION_HEAP_TYPE_DMA, + ION_HEAP_TYPE_CUSTOM, /* must be last so device specific heaps always + are at the end of this enum */ + ION_NUM_HEAPS = 16, +}; + +#define ION_HEAP_SYSTEM_MASK (1 << ION_HEAP_TYPE_SYSTEM) +#define ION_HEAP_SYSTEM_CONTIG_MASK (1 << ION_HEAP_TYPE_SYSTEM_CONTIG) +#define ION_HEAP_CARVEOUT_MASK (1 << ION_HEAP_TYPE_CARVEOUT) +#define ION_HEAP_TYPE_DMA_MASK (1 << ION_HEAP_TYPE_DMA) + +#define ION_NUM_HEAP_IDS sizeof(unsigned int) * 8 + +/** + * allocation flags - the lower 16 bits are used by core ion, the upper 16 + * bits are reserved for use by the heaps themselves. + */ +#define ION_FLAG_CACHED 1 /* mappings of this buffer should be + cached, ion will do cache + maintenance when the buffer is + mapped for dma */ +#define ION_FLAG_CACHED_NEEDS_SYNC 2 /* mappings of this buffer will created + at mmap time, if this is set + caches must be managed manually */ + +/** + * DOC: Ion Userspace API + * + * create a client by opening /dev/ion + * most operations handled via following ioctls + * + */ + +/** + * struct ion_allocation_data - metadata passed from userspace for allocations + * @len: size of the allocation + * @align: required alignment of the allocation + * @heap_id_mask: mask of heap ids to allocate from + * @flags: flags passed to heap + * @handle: pointer that will be populated with a cookie to use to + * refer to this allocation + * + * Provided by userspace as an argument to the ioctl + */ +struct ion_allocation_data { + size_t len; + size_t align; + unsigned int heap_id_mask; + unsigned int flags; + ion_user_handle_t handle; +}; + +/** + * struct ion_fd_data - metadata passed to/from userspace for a handle/fd pair + * @handle: a handle + * @fd: a file descriptor representing that handle + * + * For ION_IOC_SHARE or ION_IOC_MAP userspace populates the handle field with + * the handle returned from ion alloc, and the kernel returns the file + * descriptor to share or map in the fd field. For ION_IOC_IMPORT, userspace + * provides the file descriptor and the kernel returns the handle. + */ +struct ion_fd_data { + ion_user_handle_t handle; + int fd; +}; + +/** + * struct ion_handle_data - a handle passed to/from the kernel + * @handle: a handle + */ +struct ion_handle_data { + ion_user_handle_t handle; +}; + +/** + * struct ion_custom_data - metadata passed to/from userspace for a custom ioctl + * @cmd: the custom ioctl function to call + * @arg: additional data to pass to the custom ioctl, typically a user + * pointer to a predefined structure + * + * This works just like the regular cmd and arg fields of an ioctl. + */ +struct ion_custom_data { + unsigned int cmd; + unsigned long arg; +}; + +struct ion_phys_data { + ion_user_handle_t handle; + unsigned long addr; + size_t len; +}; + +#define ION_IOC_MAGIC 'I' + +/** + * DOC: ION_IOC_ALLOC - allocate memory + * + * Takes an ion_allocation_data struct and returns it with the handle field + * populated with the opaque handle for the allocation. + */ +#define ION_IOC_ALLOC _IOWR(ION_IOC_MAGIC, 0, \ + struct ion_allocation_data) + +/** + * DOC: ION_IOC_FREE - free memory + * + * Takes an ion_handle_data struct and frees the handle. + */ +#define ION_IOC_FREE _IOWR(ION_IOC_MAGIC, 1, struct ion_handle_data) + +/** + * DOC: ION_IOC_MAP - get a file descriptor to mmap + * + * Takes an ion_fd_data struct with the handle field populated with a valid + * opaque handle. Returns the struct with the fd field set to a file + * descriptor open in the current address space. This file descriptor + * can then be used as an argument to mmap. + */ +#define ION_IOC_MAP _IOWR(ION_IOC_MAGIC, 2, struct ion_fd_data) + +/** + * DOC: ION_IOC_SHARE - creates a file descriptor to use to share an allocation + * + * Takes an ion_fd_data struct with the handle field populated with a valid + * opaque handle. Returns the struct with the fd field set to a file + * descriptor open in the current address space. This file descriptor + * can then be passed to another process. The corresponding opaque handle can + * be retrieved via ION_IOC_IMPORT. + */ +#define ION_IOC_SHARE _IOWR(ION_IOC_MAGIC, 4, struct ion_fd_data) + +/** + * DOC: ION_IOC_IMPORT - imports a shared file descriptor + * + * Takes an ion_fd_data struct with the fd field populated with a valid file + * descriptor obtained from ION_IOC_SHARE and returns the struct with the handle + * filed set to the corresponding opaque handle. + */ +#define ION_IOC_IMPORT _IOWR(ION_IOC_MAGIC, 5, struct ion_fd_data) + +/** + * DOC: ION_IOC_SYNC - syncs a shared file descriptors to memory + * + * Deprecated in favor of using the dma_buf api's correctly (syncing + * will happend automatically when the buffer is mapped to a device). + * If necessary should be used after touching a cached buffer from the cpu, + * this will make the buffer in memory coherent. + */ +#define ION_IOC_SYNC _IOWR(ION_IOC_MAGIC, 7, struct ion_fd_data) + +/** + * DOC: ION_IOC_CUSTOM - call architecture specific ion ioctl + * + * Takes the argument of the architecture specific ioctl to call and + * passes appropriate userdata for that ioctl + */ +#define ION_IOC_CUSTOM _IOWR(ION_IOC_MAGIC, 6, struct ion_custom_data) + +#define ION_IOC_PHYS _IOWR(ION_IOC_MAGIC, 8, struct ion_phys_data) + +#endif /* _UAPI_LINUX_ION_H */ diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index 4a5436190e4..c2cdcd1617c 100644 --- a/lib/dvb/decoder.cpp +++ b/lib/dvb/decoder.cpp @@ -1,6 +1,7 @@ #include #include #include +#include // access to python config #include #include #include @@ -284,12 +285,14 @@ eDVBVideo::eDVBVideo(eDVBDemux *demux, int dev, bool fcc_enable) m_fd_demux = -1; } -#ifndef DREAMBOX +std::string zapmodeDM = eConfigManager::getConfigValue("config.misc.zapmodeDM"); +if (zapmodeDM == "hold") +{ if (m_fd >= 0) { ::ioctl(m_fd, VIDEO_SELECT_SOURCE, demux ? VIDEO_SOURCE_DEMUX : VIDEO_SOURCE_HDMI); } -#endif +} if (m_close_invalidates_attributes < 0) { /* @@ -318,7 +321,11 @@ eDVBVideo::eDVBVideo(eDVBDemux *demux, int dev, bool fcc_enable) #define VIDEO_STREAMTYPE_MPEG4_Part2 4 #define VIDEO_STREAMTYPE_VC1_SM 5 #define VIDEO_STREAMTYPE_MPEG1 6 +#ifdef DREAMBOX +#define VIDEO_STREAMTYPE_H265_HEVC 22 +#else #define VIDEO_STREAMTYPE_H265_HEVC 7 +#endif #define VIDEO_STREAMTYPE_AVS 16 #define VIDEO_STREAMTYPE_AVS2 40 diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index f48387d79ec..39e2f32e74d 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -409,16 +409,27 @@ eDVBUsbAdapter::eDVBUsbAdapter(int nr) goto error; } -#define VTUNER_GET_MESSAGE 1 -#define VTUNER_SET_RESPONSE 2 -#define VTUNER_SET_NAME 3 -#define VTUNER_SET_TYPE 4 -#define VTUNER_SET_HAS_OUTPUTS 5 -#define VTUNER_SET_FE_INFO 6 -#define VTUNER_SET_NUM_MODES 7 -#define VTUNER_SET_MODES 8 -#define VTUNER_SET_DELSYS 32 -#define VTUNER_SET_ADAPTER 33 +#if _IOC_NONE > 0 +#define VTUNER_GET_MESSAGE 1 +#define VTUNER_SET_RESPONSE 2 +#define VTUNER_SET_NAME 3 +#define VTUNER_SET_TYPE 4 +#define VTUNER_SET_HAS_OUTPUTS 5 +#define VTUNER_SET_FE_INFO 6 +#define VTUNER_SET_NUM_MODES 7 +#define VTUNER_SET_MODES 8 +#else +#define VTUNER_GET_MESSAGE 11 +#define VTUNER_SET_RESPONSE 12 +#define VTUNER_SET_NAME 13 +#define VTUNER_SET_TYPE 14 +#define VTUNER_SET_HAS_OUTPUTS 15 +#define VTUNER_SET_FE_INFO 16 +#define VTUNER_SET_NUM_MODES 17 +#define VTUNER_SET_MODES 18 +#endif +#define VTUNER_SET_DELSYS 32 +#define VTUNER_SET_ADAPTER 33 ioctl(vtunerFd, VTUNER_SET_NAME, name); ioctl(vtunerFd, VTUNER_SET_TYPE, type); ioctl(vtunerFd, VTUNER_SET_FE_INFO, &fe_info); @@ -2039,7 +2050,7 @@ void eDVBChannel::getNextSourceSpan(off_t current_offset, size_t bytes_read, off { /* in normal playback, just start at the next zone. */ start = i->first; - size = diff_upto(i->second, start, max); + size = align(diff_upto(i->second, start, max), blocksize); eDebug("[eDVBChannel] skip"); if (m_skipmode_m < 0) { diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp index 3398def2c1b..85c48313f71 100644 --- a/lib/dvb/epgcache.cpp +++ b/lib/dvb/epgcache.cpp @@ -2376,7 +2376,7 @@ PyObject *eEPGCache::search(ePyObject arg) { // UK broadcasters set the two top bits of crid_type, i.e. 0x31 and 0x32 rather than // the specification's 1 and 2 for episode and series respectively - if (((*crit)->getType() & 0xf) == casetype) + if (((*crit)->getType() & 0xf) == casetype && (*crit)->getBytes()->data() != NULL) { // Exact match required for CRID data if ((*crit)->getLength() == strlen && memcmp((*crit)->getBytes()->data(), str, strlen) == 0) diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 4c3bd4b62be..3721ac7e069 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -1323,6 +1323,10 @@ void eDVBFrontend::calculateSignalQuality(int snr, int &signalquality, int &sign ret = snr; sat_max = 1620; } + else if (!strcmp(m_description, "Vuplus DVB-S NIM(SI2166)")) // VU+ Zero4K + { + ret = snr / 40; + } else if (!strncmp(m_description, "Si216", 5)) // New models with SI tuners { ret = snr; diff --git a/lib/dvb_ci/dvbci.cpp b/lib/dvb_ci/dvbci.cpp index fe1f4f6d315..d2dfe390c19 100644 --- a/lib/dvb_ci/dvbci.cpp +++ b/lib/dvb_ci/dvbci.cpp @@ -26,6 +26,67 @@ #include +char* eDVBCISlot::readInputCI(int tuner_no) +{ + char id1[] = "NIM Socket"; + char id2[] = "Input_Name"; + char keys1[] = "1234567890"; + char keys2[] = "12ABCDabcd"; + char *inputName = 0; + char buf[256]; + FILE *f; + + f = fopen("/proc/bus/nim_sockets", "rt"); + if (f) + { + while (fgets(buf, sizeof(buf), f)) + { + char *p = strcasestr(buf, id1); + if (!p) + continue; + + p += strlen(id1); + p += strcspn(p, keys1); + if (*p && strtol(p, 0, 0) == tuner_no) + break; + } + + while (fgets(buf, sizeof(buf), f)) + { + if (strcasestr(buf, id1)) + break; + + char *p = strcasestr(buf, id2); + if (!p) + continue; + + p = strchr(p + strlen(id2), ':'); + if (!p) + continue; + + p++; + p += strcspn(p, keys2); + size_t len = strspn(p, keys2); + if (len > 0) + { + inputName = strndup(p, len); + break; + } + } + + fclose(f); + } + + return inputName; +} + +std::string eDVBCISlot::getTunerLetterDM(int tuner_no) +{ + char *srcCI = readInputCI(tuner_no); + if (srcCI) return std::string(srcCI); + return eDVBCISlot::getTunerLetter(tuner_no); +} + eDVBCIInterfaces *eDVBCIInterfaces::instance = 0; @@ -68,7 +129,11 @@ eDVBCIInterfaces::eDVBCIInterfaces() } for (eSmartPtrList::iterator it(m_slots.begin()); it != m_slots.end(); ++it) +#ifdef DREAMBOX_DUAL_TUNER + it->setSource(eDVBCISlot::getTunerLetterDM(0)); +#else it->setSource("A"); +#endif for (int tuner_no = 0; tuner_no < 26; ++tuner_no) // NOTE: this assumes tuners are A .. Z max. { @@ -79,7 +144,11 @@ eDVBCIInterfaces::eDVBCIInterfaces() if(::access(path.str().c_str(), R_OK) < 0) break; +#ifdef DREAMBOX_DUAL_TUNER + setInputSource(tuner_no, eDVBCISlot::getTunerLetterDM(tuner_no)); +#else setInputSource(tuner_no, eDVBCISlot::getTunerLetter(tuner_no)); +#endif } eDebug("[CI] done, found %d common interface slots", num_ci); @@ -311,7 +380,11 @@ void eDVBCIInterfaces::ciRemoved(eDVBCISlot *slot) if (slot->linked_next) slot->linked_next->setSource(slot->current_source); else // last CI in chain +#ifdef DREAMBOX_DUAL_TUNER + setInputSource(slot->current_tuner, eDVBCISlot::getTunerLetterDM(slot->current_tuner)); +#else setInputSource(slot->current_tuner, eDVBCISlot::getTunerLetter(slot->current_tuner)); +#endif slot->linked_next = 0; slot->use_count=0; slot->plugged=true; @@ -582,7 +655,11 @@ void eDVBCIInterfaces::recheckPMTHandlers() if (tunernum != -1) { setInputSource(tunernum, ci_source.str()); +#ifdef DREAMBOX_DUAL_TUNER + ci_it->setSource(eDVBCISlot::getTunerLetterDM(tunernum)); +#else ci_it->setSource(eDVBCISlot::getTunerLetter(tunernum)); +#endif } else { @@ -711,7 +788,11 @@ void eDVBCIInterfaces::removePMTHandler(eDVBServicePMTHandler *pmthandler) { case finish_use_tuner_a: { +#ifdef DREAMBOX_DUAL_TUNER + finish_source = eDVBCISlot::getTunerLetterDM(0); +#else finish_source = "A"; +#endif break; } @@ -734,7 +815,11 @@ void eDVBCIInterfaces::removePMTHandler(eDVBServicePMTHandler *pmthandler) if(finish_source == "") { eDebug("[CI] warning: CI streaming finish mode not set, assuming \"tuner A\""); +#ifdef DREAMBOX_DUAL_TUNER + finish_source = eDVBCISlot::getTunerLetterDM(0); +#else finish_source = "A"; +#endif } slot->setSource(finish_source); @@ -746,7 +831,11 @@ void eDVBCIInterfaces::removePMTHandler(eDVBServicePMTHandler *pmthandler) if (slot->linked_next) slot->linked_next->setSource(slot->current_source); else +#ifdef DREAMBOX_DUAL_TUNER + setInputSource(slot->current_tuner, eDVBCISlot::getTunerLetterDM(slot->current_tuner)); +#else setInputSource(slot->current_tuner, eDVBCISlot::getTunerLetter(slot->current_tuner)); +#endif if (base_slot != slot) { @@ -1027,6 +1116,14 @@ PyObject *eDVBCIInterfaces::readCICaIds(int slotid) return 0; } +int eDVBCIInterfaces::setCIEnabled(int slotid, bool enabled) +{ + eDVBCISlot *slot = getSlot(slotid); + if (slot) + return slot->setEnabled(enabled); + return -1; +} + int eDVBCIInterfaces::setCIClockRate(int slotid, int rate) { singleLock s(m_slot_lock); @@ -1231,6 +1328,20 @@ void eDVBCISlot::data(int what) DEFINE_REF(eDVBCISlot); eDVBCISlot::eDVBCISlot(eMainloop *context, int nr) +{ + char configStr[255]; + slotid = nr; + m_context = context; + state = stateDisabled; + snprintf(configStr, 255, "config.ci.%d.enabled", slotid); + bool enabled = eConfigManager::getConfigBoolValue(configStr, true); + if (enabled) + openDevice(); + else + /* emit */ eDVBCI_UI::getInstance()->m_messagepump.send(eDVBCIInterfaces::Message(eDVBCIInterfaces::Message::slotStateChanged, getSlotID(), 3)); // state disabled +} + +void eDVBCISlot::openDevice() { char filename[128]; @@ -1244,9 +1355,7 @@ eDVBCISlot::eDVBCISlot(eMainloop *context, int nr) plugged = true; m_ci_version = versionUnknown; - slotid = nr; - - sprintf(filename, "/dev/ci%d", nr); + sprintf(filename, "/dev/ci%d", slotid); // possible_caids.insert(0x1702); // possible_providers.insert(providerPair("PREMIERE", 0xC00000)); @@ -1259,7 +1368,7 @@ eDVBCISlot::eDVBCISlot(eMainloop *context, int nr) if (fd >= 0) { - notifier = eSocketNotifier::create(context, fd, eSocketNotifier::Read | eSocketNotifier::Priority | eSocketNotifier::Write); + notifier = eSocketNotifier::create(m_context, fd, eSocketNotifier::Read | eSocketNotifier::Priority | eSocketNotifier::Write); CONNECT(notifier->activated, eDVBCISlot::data); } else { @@ -1273,7 +1382,16 @@ eDVBCISlot::~eDVBCISlot() close(fd); } -void eDVBCISlot::setAppManager( eDVBCIApplicationManagerSession *session ) +void eDVBCISlot::closeDevice() +{ + close(fd); + fd = -1; + notifier->stop(); + data(eSocketNotifier::Priority); + state = stateDisabled; +} + +void eDVBCISlot::setAppManager(eDVBCIApplicationManagerSession *session) { singleLock s(eDVBCIInterfaces::m_slot_lock); application_manager=session; @@ -1607,4 +1725,22 @@ int eDVBCISlot::setClockRate(int rate) return 0; } +int eDVBCISlot::setEnabled(bool enabled) +{ + eDebug("[CI] Slot: %d Enabled: %d, state %d", getSlotID(), enabled, state); + if (enabled && state != stateDisabled) + return 0; + + if (!enabled && state == stateDisabled) + return 0; + + if(enabled) + openDevice(); + else { + closeDevice(); + /* emit */ eDVBCI_UI::getInstance()->m_messagepump.send(eDVBCIInterfaces::Message(eDVBCIInterfaces::Message::slotStateChanged, getSlotID(), 3)); // state disabled + } + return 0; +} + eAutoInitP0 init_eDVBCIInterfaces(eAutoInitNumbers::dvb, "CI Slots"); diff --git a/lib/dvb_ci/dvbci.h b/lib/dvb_ci/dvbci.h index 48dc019b569..53d698936bc 100644 --- a/lib/dvb_ci/dvbci.h +++ b/lib/dvb_ci/dvbci.h @@ -66,6 +66,7 @@ class eDVBCISlot: public iObject, public sigc::trackable bool user_mapped; void data(int); bool plugged; + eMainloop *m_context; eDVBCIApplicationManagerSession *getAppManager() { return application_manager; } eDVBCIMMISession *getMMIManager() { return mmi_session; } @@ -85,12 +86,17 @@ class eDVBCISlot: public iObject, public sigc::trackable int setSource(const std::string &source); int setClockRate(int); void determineCIVersion(); + int setEnabled(bool); static std::string getTunerLetter(int tuner_no) { return std::string(1, char(65 + tuner_no)); } + static std::string getTunerLetterDM(int); + static char* readInputCI(int); public: - enum {stateRemoved, stateInserted, stateInvalid, stateResetted}; + enum {stateRemoved, stateInserted, stateInvalid, stateResetted, stateDisabled}; enum {versionUnknown = -1, versionCI = 0, versionCIPlus1 = 1, versionCIPlus2 = 2}; eDVBCISlot(eMainloop *context, int nr); ~eDVBCISlot(); + void closeDevice(); + void openDevice(); int send(const unsigned char *data, size_t len); @@ -183,6 +189,7 @@ class eDVBCIInterfaces: public eMainloop, private eThread void ciRemoved(eDVBCISlot *slot); int getSlotState(int slot); + int setCIEnabled(int slot, bool enabled); int reset(int slot); int initialize(int slot); int startMMI(int slot); diff --git a/lib/dvb_ci/dvbci_ui.cpp b/lib/dvb_ci/dvbci_ui.cpp index a7adc037b48..d6bb5e787a4 100644 --- a/lib/dvb_ci/dvbci_ui.cpp +++ b/lib/dvb_ci/dvbci_ui.cpp @@ -96,5 +96,10 @@ int eDVBCI_UI::setClockRate(int slot, int rate) return eDVBCIInterfaces::getInstance()->setCIClockRate(slot, rate); } +int eDVBCI_UI::setEnabled(int slot, bool enabled) +{ + return eDVBCIInterfaces::getInstance()->setCIEnabled(slot, enabled); +} + //FIXME: correct "run/startlevel" eAutoInitP0 init_dvbciui(eAutoInitNumbers::rc, "DVB-CI UI"); diff --git a/lib/dvb_ci/dvbci_ui.h b/lib/dvb_ci/dvbci_ui.h index d08f2573375..fea09648268 100644 --- a/lib/dvb_ci/dvbci_ui.h +++ b/lib/dvb_ci/dvbci_ui.h @@ -34,6 +34,7 @@ class eDVBCI_UI: public eMMI_UI int answerEnq(int slot, char *val); int cancelEnq(int slot); int setClockRate(int slot, int rate); + int setEnabled(int slot, bool enabled); }; #endif diff --git a/lib/gdi/epng.cpp b/lib/gdi/epng.cpp index 95a86b9cdeb..348d41053f7 100644 --- a/lib/gdi/epng.cpp +++ b/lib/gdi/epng.cpp @@ -136,25 +136,30 @@ int loadPNG(ePtr &result, const char *filename, int accel, int cached) if (png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE)) { png_color *palette; png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette); - if (num_palette) + if (num_palette) { surface->clut.data = new gRGB[num_palette]; - else - surface->clut.data = 0; - surface->clut.colors = num_palette; + surface->clut.colors = num_palette; - for (int i = 0; i < num_palette; i++) { - surface->clut.data[i].a = 0; - surface->clut.data[i].r = palette[i].red; - surface->clut.data[i].g = palette[i].green; - surface->clut.data[i].b = palette[i].blue; - } - if (trns) { - png_byte *trans; - png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, 0); - for (int i = 0; i < num_trans; i++) - surface->clut.data[i].a = 255 - trans[i]; - for (int i = num_trans; i < num_palette; i++) + for (int i = 0; i < num_palette; i++) { surface->clut.data[i].a = 0; + surface->clut.data[i].r = palette[i].red; + surface->clut.data[i].g = palette[i].green; + surface->clut.data[i].b = palette[i].blue; + } + + if (trns) { + png_byte *trans; + png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, 0); + for (int i = 0; i < num_trans; i++) + surface->clut.data[i].a = 255 - trans[i]; + for (int i = num_trans; i < num_palette; i++) + surface->clut.data[i].a = 0; + } + + } + else { + surface->clut.data = 0; + surface->clut.colors = num_palette; } } else { diff --git a/lib/gdi/fb.cpp b/lib/gdi/fb.cpp index 66c1e5e56a8..23cf5e894c6 100644 --- a/lib/gdi/fb.cpp +++ b/lib/gdi/fb.cpp @@ -13,9 +13,19 @@ #define FBIO_WAITFORVSYNC _IOW('F', 0x20, uint32_t) #endif -#ifndef FBIO_BLIT +#ifdef CONFIG_ION + +#include +#include +#define ION_HEAP_TYPE_BMEM (ION_HEAP_TYPE_CUSTOM + 1) +#define ION_HEAP_ID_MASK (1 << ION_HEAP_TYPE_BMEM) +#define ACCEL_MEM_SIZE (32*1024*1024) + +#elif !defined(FBIO_BLIT) + #define FBIO_SET_MANUAL_BLIT _IOW('F', 0x21, __u8) #define FBIO_BLIT 0x22 + #endif fbClass *fbClass::instance; @@ -38,6 +48,10 @@ fbClass::fbClass(const char *fb) cmap.green=green; cmap.blue=blue; cmap.transp=trans; + +#ifdef CONFIG_ION + int ion; +#endif fbFd=open(fb, O_RDWR); if (fbFd<0) @@ -62,13 +76,93 @@ fbClass::fbClass(const char *fb) available=fix.smem_len; m_phys_mem = fix.smem_start; - eDebug("[fb] %s: %dk video mem", fb, available/1024); +#if defined(CONFIG_ION) + /* allocate accel memory here... its independent from the framebuffer */ + ion = open("/dev/ion", O_RDWR | O_CLOEXEC); + if (ion >= 0) + { + struct ion_allocation_data alloc_data; + struct ion_fd_data share_data; + struct ion_handle_data free_data; + struct ion_phys_data phys_data; + int ret; + unsigned char *lion; + + eDebug("[fb] Using ION allocator"); + + memset(&alloc_data, 0, sizeof(alloc_data)); + alloc_data.len = ACCEL_MEM_SIZE; + alloc_data.align = 4096; // 4k aligned + alloc_data.heap_id_mask = ION_HEAP_ID_MASK; + ret = ioctl(ion, ION_IOC_ALLOC, &alloc_data); + if (ret < 0) + { + eDebug("[fb] ION_IOC_ALLOC failed"); + eFatal("[fb] failed to allocate accel memory!!!"); + return; + } + + memset(&phys_data, 0, sizeof(phys_data)); + phys_data.handle = alloc_data.handle; + ret = ioctl(ion, ION_IOC_PHYS, &phys_data); + if (ret < 0) + { + eDebug("[fb] ION_IOC_PHYS failed"); + goto err_ioc_free; + } + + memset(&share_data, 0, sizeof(share_data)); + share_data.handle = alloc_data.handle; + ret = ioctl(ion, ION_IOC_SHARE, &share_data); + if (ret < 0) + { + eDebug("[fb] ION_IOC_SHARE failed"); + goto err_ioc_free; + } + + memset(&free_data, 0, sizeof(free_data)); + free_data.handle = alloc_data.handle; + if (ioctl(ion, ION_IOC_FREE, &free_data) < 0) + eDebug("[fb] ION_IOC_FREE failed"); + + m_accel_fd = share_data.fd; + lion=(unsigned char*)mmap(0, ACCEL_MEM_SIZE, PROT_WRITE|PROT_READ, MAP_SHARED, share_data.fd, 0); + + if (lion) + { + eDebug("[fb] %dkB available for acceleration surfaces (via ION).", ACCEL_MEM_SIZE / 1024); + gAccel::getInstance()->setAccelMemorySpace(lion, phys_data.addr, ACCEL_MEM_SIZE); + } + else + { + close(m_accel_fd); + eDebug("[fb] mmap lion failed"); +err_ioc_free: + eFatal("[fb] failed to allocate accel memory via ION!!!"); + m_accel_fd = -1; + memset(&free_data, 0, sizeof(free_data)); + free_data.handle = alloc_data.handle; + if (ioctl(ion, ION_IOC_FREE, &free_data) < 0) + eDebug("[fb] ION_IOC_FREE %m"); + } + close(ion); + } + else + { + eFatal("[fb] failed to open ION device node! no allocate accel memory available !!"); + m_accel_fd = -1; + } +#else + eDebug("[fb] %dk video mem", available/1024); lfb=(unsigned char*)mmap(0, available, PROT_WRITE|PROT_READ, MAP_SHARED, fbFd, 0); +#endif +#ifndef CONFIG_ION if (!lfb) { - eDebug("[fb] mmap: %m"); + eDebug("[fb] mmap %m"); goto nolfb; } +#endif showConsole(0); @@ -101,6 +195,11 @@ int fbClass::showConsole(int state) int fbClass::SetMode(int nxRes, int nyRes, int nbpp) { if (fbFd < 0) return -1; +#ifdef CONFIG_ION + /* unmap old framebuffer with old size */ + if (lfb) + munmap(lfb, stride * screeninfo.yres_virtual); +#endif screeninfo.xres_virtual=screeninfo.xres=nxRes; screeninfo.yres_virtual=(screeninfo.yres=nyRes)*2; screeninfo.height=0; @@ -148,6 +247,7 @@ int fbClass::SetMode(int nxRes, int nyRes, int nbpp) eDebug("[fb] double buffering available!"); m_number_of_pages = screeninfo.yres_virtual / nyRes; + eDebug("[fb] %d page(s) available!", m_number_of_pages); ioctl(fbFd, FBIOGET_VSCREENINFO, &screeninfo); @@ -167,6 +267,14 @@ int fbClass::SetMode(int nxRes, int nyRes, int nbpp) eDebug("[fb] FBIOGET_FSCREENINFO: %m"); } stride=fix.line_length; + +#ifdef CONFIG_ION + m_phys_mem = fix.smem_start; + available = fix.smem_len; + /* map new framebuffer */ + lfb=(unsigned char*)mmap(0, stride * screeninfo.yres_virtual, PROT_WRITE|PROT_READ, MAP_SHARED, fbFd, 0); +#endif + memset(lfb, 0, stride*yRes); blit(); return 0; @@ -197,14 +305,20 @@ int fbClass::waitVSync() void fbClass::blit() { if (fbFd < 0) return; +#if !defined(CONFIG_ION) if (m_manual_blit == 1) { if (ioctl(fbFd, FBIO_BLIT) < 0) eDebug("[fb] FBIO_BLIT: %m"); } +#endif } fbClass::~fbClass() { +#ifdef CONFIG_ION + if (m_accel_fd > -1) + close(m_accel_fd); +#endif if (lfb) { msync(lfb, available, MS_SYNC); @@ -252,21 +366,25 @@ void fbClass::unlock() void fbClass::enableManualBlit() { +#ifndef CONFIG_ION unsigned char tmp = 1; if (fbFd < 0) return; if (ioctl(fbFd,FBIO_SET_MANUAL_BLIT, &tmp)<0) eDebug("[fb] enable FBIO_SET_MANUAL_BLIT: %m"); else m_manual_blit = 1; +#endif } void fbClass::disableManualBlit() { +#ifndef CONFIG_ION unsigned char tmp = 0; if (fbFd < 0) return; if (ioctl(fbFd,FBIO_SET_MANUAL_BLIT, &tmp)<0) eDebug("[fb] disable FBIO_SET_MANUAL_BLIT: %m"); else m_manual_blit = 0; +#endif } diff --git a/lib/gdi/fb.h b/lib/gdi/fb.h index 0eb04915dce..6656dd84c57 100644 --- a/lib/gdi/fb.h +++ b/lib/gdi/fb.h @@ -29,6 +29,9 @@ class fbClass #else public: unsigned char *lfb; +#ifdef CONFIG_ION + int m_accel_fd; +#endif void enableManualBlit(); void disableManualBlit(); int showConsole(int state); diff --git a/lib/gdi/gfbdc.cpp b/lib/gdi/gfbdc.cpp index 1be9f6c2e34..30ea4015642 100644 --- a/lib/gdi/gfbdc.cpp +++ b/lib/gdi/gfbdc.cpp @@ -7,12 +7,25 @@ #include +#ifdef CONFIG_ION +#include + +extern void bcm_accel_blit( + int src_addr, int src_width, int src_height, int src_stride, int src_format, + int dst_addr, int dst_width, int dst_height, int dst_stride, + int src_x, int src_y, int width, int height, + int dst_x, int dst_y, int dwidth, int dheight, + int pal_addr, int flags); +#endif + gFBDC::gFBDC() { fb=new fbClass; +#ifndef CONFIG_ION if (!fb->Available()) eFatal("[gFBDC] no framebuffer available"); +#endif int xres; int yres; @@ -144,6 +157,30 @@ void gFBDC::exec(const gOpcode *o) } case gOpcode::flush: fb->blit(); +#ifdef CONFIG_ION + if (surface_back.data_phys) + { + gUnmanagedSurface s(surface); + surface = surface_back; + surface_back = s; + + fb->waitVSync(); + if (surface.data_phys > surface_back.data_phys) + { + fb->setOffset(0); + } + else + { + fb->setOffset(surface_back.y); + } + bcm_accel_blit( + surface_back.data_phys, surface_back.x, surface_back.y, surface_back.stride, 0, + surface.data_phys, surface.x, surface.y, surface.stride, + 0, 0, surface.x, surface.y, + 0, 0, surface.x, surface.y, + 0, 0); + } +#endif break; default: gDC::exec(o); @@ -180,8 +217,14 @@ void gFBDC::setResolution(int xres, int yres, int bpp) if (m_pixmap && (surface.x == xres) && (surface.y == yres) && (surface.bpp == bpp)) return; +#ifndef CONFIG_ION if (gAccel::getInstance()) gAccel::getInstance()->releaseAccelMemorySpace(); +#else + gRC *grc = gRC::getInstance(); + if (grc) + grc->lock(); +#endif fb->SetMode(xres, yres, bpp); @@ -209,11 +252,15 @@ void gFBDC::setResolution(int xres, int yres, int bpp) surface_back.data_phys = 0; } +#ifndef CONFIG_ION eDebug("[gFBDC] resolution: %dx%dx%d stride=%d, %dkB available for acceleration surfaces.", surface.x, surface.y, surface.bpp, fb->Stride(), (fb->Available() - fb_size)/1024); if (gAccel::getInstance()) gAccel::getInstance()->setAccelMemorySpace(fb->lfb + fb_size, surface.data_phys + fb_size, fb->Available() - fb_size); +#else + eDebug("[gFBDC] resolution: %d x %d x %d (stride: %d) pages: %d", surface.x, surface.y, surface.bpp, fb->Stride(), fb->getNumPages()); +#endif if (!surface.clut.data) { @@ -225,6 +272,11 @@ void gFBDC::setResolution(int xres, int yres, int bpp) surface_back.clut = surface.clut; m_pixmap = new gPixmap(&surface); + +#ifdef CONFIG_ION + if (grc) + grc->unlock(); +#endif } void gFBDC::saveSettings() diff --git a/lib/gdi/grc.cpp b/lib/gdi/grc.cpp index 1d76fab0712..ba5296a957f 100644 --- a/lib/gdi/grc.cpp +++ b/lib/gdi/grc.cpp @@ -44,6 +44,22 @@ gRC::gRC(): rp(0), wp(0) m_spinneronoff = 1; } +#ifdef CONFIG_ION +void gRC::lock() +{ +#ifndef SYNC_PAINT + pthread_mutex_lock(&mutex); +#endif +} + +void gRC::unlock() +{ +#ifndef SYNC_PAINT + pthread_mutex_unlock(&mutex); +#endif +} +#endif + DEFINE_REF(gRC); gRC::~gRC() diff --git a/lib/gdi/grc.h b/lib/gdi/grc.h index 92ec1874ee3..9cba0fd4521 100644 --- a/lib/gdi/grc.h +++ b/lib/gdi/grc.h @@ -186,6 +186,11 @@ class gRC: public iObject, public sigc::trackable virtual ~gRC(); void submit(const gOpcode &o); + +#ifdef CONFIG_ION + void lock(); + void unlock(); +#endif sigc::signal0 notify; diff --git a/lib/gdi/lcd.cpp b/lib/gdi/lcd.cpp index fd0376b95a0..d6ef8c08e11 100644 --- a/lib/gdi/lcd.cpp +++ b/lib/gdi/lcd.cpp @@ -268,7 +268,22 @@ void eDBoxLCD::update() write(lcdfd, raw, _stride * height); } else +#if !defined(DREAMBOX_MOVE_LCD) write(lcdfd, _buffer, _stride * res.height()); +#else + { + unsigned char gb_buffer[_stride * res.height()]; + for (int offset = 0; offset < ((_stride * res.height())>>2); offset ++) + { + unsigned int src = 0; + if (offset%(_stride>>2) >= 4) // 4 is offset for dm9x0 + src = ((unsigned int*)_buffer)[offset - 4]; + // blue red green low green high + ((unsigned int*)gb_buffer)[offset] = ((src >> 3) & 0x001F001F) | ((src << 3) & 0xF800F800) | ((src >> 8) & 0x00E000E0) | ((src << 8) & 0x07000700); + } + write(lcdfd, gb_buffer, _stride * res.height()); + } +#endif } else /* lcd_type == 1 */ { diff --git a/lib/nav/core.cpp b/lib/nav/core.cpp index 223a6dcfb40..dd125f2f002 100644 --- a/lib/nav/core.cpp +++ b/lib/nav/core.cpp @@ -29,7 +29,7 @@ RESULT eNavigation::playService(const eServiceReference &service) { RESULT res = -1; - if (m_fccmgr->tryFCCService(service, m_runningService) == -1) + if (! m_fccmgr || m_fccmgr->tryFCCService(service, m_runningService) == -1) { stopService(); ASSERT(m_servicehandler); @@ -79,7 +79,7 @@ RESULT eNavigation::stopService(void) /* kill service. */ m_service_event_conn = 0; - m_fccmgr->cleanupFCCService(); + m_fccmgr && m_fccmgr->cleanupFCCService(); return 0; } diff --git a/lib/python/BoxBrandingTest.py b/lib/python/BoxBrandingTest.py new file mode 100644 index 00000000000..f456ddc4acc --- /dev/null +++ b/lib/python/BoxBrandingTest.py @@ -0,0 +1,56 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +from __future__ import print_function +import boxbranding +print("getVisionVersion=%s<" %boxbranding.getVisionVersion()) +print("getVisionRevision=%s<" %boxbranding.getVisionRevision()) +print("getDeveloperName=%s<" %boxbranding.getDeveloperName()) +print("getBoxBrand=%s<" %boxbranding.getBoxBrand()) +print("getOEVersion=%s<" %boxbranding.getOEVersion()) +print("getImageDistro=%s<" %boxbranding.getImageDistro()) +print("getBoxType=%s<" %boxbranding.getBoxType()) +print("getMachineBuild=%s<" %boxbranding.getMachineBuild()) +print("getImageVersion=%s<" %boxbranding.getImageVersion()) +print("getImageBuild=%s<" %boxbranding.getImageBuild()) +print("getImageDevBuild=%s<" %boxbranding.getImageDevBuild()) +print("getImageType=%s<" %boxbranding.getImageType()) +print("getFeedsUrl=%s<" %boxbranding.getFeedsUrl()) +print("getImageFolder=%s<" %boxbranding.getImageFolder()) +print("getImageFileSystem=%s<" %boxbranding.getImageFileSystem()) +print("getMachineMtdBoot=%s<" %boxbranding.getMachineMtdBoot()) +print("getMachineMtdRoot=%s<" %boxbranding.getMachineMtdRoot()) +print("getMachineMtdKernel=%s<" %boxbranding.getMachineMtdKernel()) +print("getMachineRootFile=%s<" %boxbranding.getMachineRootFile()) +print("getMachineKernelFile=%s<" %boxbranding.getMachineKernelFile()) +print("getMachineMKUBIFS=%s<" %boxbranding.getMachineMKUBIFS()) +print("getMachineUBINIZE=%s<" %boxbranding.getMachineUBINIZE()) +print("getForceMode=%s<" %boxbranding.getForceMode()) +print("getImageArch=%s<" %boxbranding.getImageArch()) +print("getImageFPU=%s<" %boxbranding.getImageFPU()) +print("getDisplayType=%s<" %boxbranding.getDisplayType()) +print("getHaveSmallFlash=%s<" %boxbranding.getHaveSmallFlash()) +print("getHaveMiddleFlash=%s<" %boxbranding.getHaveMiddleFlash()) +print("getHaveTranscoding=%s<" %boxbranding.getHaveTranscoding()) +print("getHaveMultiTranscoding=%s<" %boxbranding.getHaveMultiTranscoding()) +print("getHaveMultiLib=%s<" %boxbranding.getHaveMultiLib()) +print("getMachineProcModel=%s<" %boxbranding.getMachineProcModel()) +print("getHaveHDMI=%s<" %boxbranding.getHaveHDMI()) +print("getHaveYUV=%s<" %boxbranding.getHaveYUV()) +print("getHaveRCA=%s<" %boxbranding.getHaveRCA()) +print("getHaveAVJACK=%s<" %boxbranding.getHaveAVJACK()) +print("getHaveSCART=%s<" %boxbranding.getHaveSCART()) +print("getHaveDVI=%s<" %boxbranding.getHaveDVI()) +print("getHaveSVIDEO=%s<" %boxbranding.getHaveSVIDEO()) +print("getHaveHDMIinHD=%s<" %boxbranding.getHaveHDMIinHD()) +print("getHaveHDMIinFHD=%s<" %boxbranding.getHaveHDMIinFHD()) +print("getHaveWOL=%s<" %boxbranding.getHaveWOL()) +print("getHaveCI=%s<" %boxbranding.getHaveCI()) +print("getBlindscanBin=%s<" %boxbranding.getBlindscanBin()) +print("getSoCFamily=%s<" %boxbranding.getSoCFamily()) +print("getHaveVFDSymbol=%s<" %boxbranding.getHaveVFDSymbol()) +print("getKernelVersion=%s<" %boxbranding.getKernelVersion()) +print("getRCType=%s<" %boxbranding.getRCType()) +print("getRCName=%s<" %boxbranding.getRCName()) +print("getRCIDNum=%s<" %boxbranding.getRCIDNum()) +print("getFHDSkin=%s<" %boxbranding.getFHDSkin()) +print("getE2Service=%s<" % boxbranding.getE2Service()) diff --git a/lib/python/Components/AVSwitch.py b/lib/python/Components/AVSwitch.py index a7da2011111..2d4d743dafe 100644 --- a/lib/python/Components/AVSwitch.py +++ b/lib/python/Components/AVSwitch.py @@ -1,8 +1,10 @@ from config import config, ConfigSlider, ConfigSelection, ConfigYesNo, ConfigEnableDisable, ConfigSubsection, ConfigBoolean, ConfigSelectionNumber, ConfigNothing, NoSave from enigma import eAVSwitch, eDVBVolumecontrol, getDesktop from SystemInfo import SystemInfo +from Tools.Directories import fileExists import os - +from boxbranding import getBoxType +boxtype = getBoxType() class AVSwitch: def setInput(self, input): @@ -23,11 +25,10 @@ def getOutputAspect(self): if valstr in ("4_3_letterbox", "4_3_panscan"): # 4:3 return (4, 3) elif valstr == "16_9": # auto ... 4:3 or 16:9 - try: - if "1" in open("/proc/stb/vmpeg/0/aspect", "r").read(): # 4:3 - return (4, 3) - except IOError: - pass + if fileExists("/proc/stb/vmpeg/0/aspect"): + with open("/proc/stb/vmpeg/0/aspect", "r") as f: + if "1" in f.read(): + return (4,3) elif valstr in ("16_9_always", "16_9_letterbox"): # 16:9 pass elif valstr in ("16_10_letterbox", "16_10_panscan"): # 16:10 @@ -101,18 +102,14 @@ def InitAVSwitch(): "panscan": _("Pan&scan"), # TRANSLATORS: (aspect ratio policy: scale as close to fullscreen as possible) "scale": _("Just scale")} - try: - if "full" in open("/proc/stb/video/policy2_choices").read(): - # TRANSLATORS: (aspect ratio policy: display as fullscreen, even if the content aspect ratio does not match the screen ratio) - policy2_choices.update({"full": _("Full screen")}) - except: - pass - try: - if "auto" in open("/proc/stb/video/policy2_choices").read(): - # TRANSLATORS: (aspect ratio policy: automatically select the best aspect ratio mode) - policy2_choices.update({"auto": _("Auto")}) - except: - pass + if fileExists("/proc/stb/video/policy2_choices"): + with open("/proc/stb/video/policy2_choices") as f: + if "full" in f.read(): + # TRANSLATORS: (aspect ratio policy: display as fullscreen, even if the content aspect ratio does not match the screen ratio) + policy2_choices.update({"full": _("Full screen")}) + elif "auto" in f.read(): + # TRANSLATORS: (aspect ratio policy: automatically select the best aspect ratio mode) + policy2_choices.update({"auto": _("Auto")}) config.av.policy_169 = ConfigSelection(choices=policy2_choices, default="letterbox") policy_choices = { # TRANSLATORS: (aspect ratio policy: black bars on left/right) in doubt, keep english term. @@ -121,24 +118,17 @@ def InitAVSwitch(): "panscan": _("Pan&scan"), # TRANSLATORS: (aspect ratio policy: scale as close to fullscreen as possible) "scale": _("Just scale")} - try: - if "nonlinear" in open("/proc/stb/video/policy_choices").read(): - # TRANSLATORS: (aspect ratio policy: display as fullscreen, with stretching the left/right) - policy_choices.update({"nonlinear": _("Nonlinear")}) - except: - pass - try: - if "full" in open("/proc/stb/video/policy_choices").read(): - # TRANSLATORS: (aspect ratio policy: display as fullscreen, even if the content aspect ratio does not match the screen ratio) - policy_choices.update({"full": _("Full screen")}) - except: - pass - try: - if "auto" in open("/proc/stb/video/policy_choices").read(): - # TRANSLATORS: (aspect ratio policy: automatically select the best aspect ratio mode) - policy_choices.update({"auto": _("Auto")}) - except: - pass + if fileExists("/proc/stb/video/policy_choices"): + with open("/proc/stb/video/policy_choices") as f: + if "nonlinear" in f.read(): + # TRANSLATORS: (aspect ratio policy: display as fullscreen, with stretching the left/right) + policy_choices.update({"nonlinear": _("Nonlinear")}) + elif "full" in f.read(): + # TRANSLATORS: (aspect ratio policy: display as fullscreen, even if the content aspect ratio does not match the screen ratio) + policy_choices.update({"full": _("Full screen")}) + elif "auto" in f.read(): + # TRANSLATORS: (aspect ratio policy: automatically select the best aspect ratio mode) + policy_choices.update({"auto": _("Auto")}) config.av.policy_43 = ConfigSelection(choices=policy_choices, default="pillarbox") config.av.tvsystem = ConfigSelection(choices={"pal": "PAL", "ntsc": "NTSC", "multinorm": "multinorm"}, default="pal") config.av.wss = ConfigEnableDisable(default=True) @@ -184,141 +174,85 @@ def readChoices(procx, choices, default): default = choiceslist[0] return (choices, default) - if SystemInfo["HasMultichannelPCM"]: - def setMultichannelPCM(configElement): - open(SystemInfo["HasMultichannelPCM"], "w").write(configElement.value and "enable" or "disable") - config.av.multichannel_pcm = ConfigYesNo(default=False) - config.av.multichannel_pcm.addNotifier(setMultichannelPCM) - if SystemInfo["CanDownmixAC3"]: def setAC3Downmix(configElement): - open("/proc/stb/audio/ac3", "w").write(configElement.value) - choices = [("downmix", _("Downmix")), ("passthrough", _("Passthrough"))] - default = "downmix" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/ac3_choices" - (choices, default) = readChoices(f, choices, default) - config.av.downmix_ac3 = ConfigSelection(choices=choices, default=default) + with open("/proc/stb/audio/ac3", "w") as f: + if SystemInfo["DreamBoxAudio"]: + f.write(configElement.value) + else: + f.write(configElement.value and "downmix" or "passthrough") + if SystemInfo["DreamBoxAudio"]: + choice_list = [("downmix", _("Downmix")), ("passthrough", _("Passthrough")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI"))] + config.av.downmix_ac3 = ConfigSelection(choices=choice_list, default="downmix") + else: + config.av.downmix_ac3 = ConfigYesNo(default=True) config.av.downmix_ac3.addNotifier(setAC3Downmix) - if SystemInfo["CanAC3Transcode"]: + if SystemInfo["CanAC3plusTranscode"]: def setAC3plusTranscode(configElement): - open("/proc/stb/audio/ac3plus", "w").write(configElement.value) - choices = [("use_hdmi_caps", _("controlled by HDMI")), ("force_ac3", _("convert to AC3"))] - default = "force_ac3" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/ac3plus_choices" - (choices, default) = readChoices(f, choices, default) - config.av.transcodeac3plus = ConfigSelection(choices=choices, default=default) + with open("/proc/stb/audio/ac3plus", "w") as f: + f.write(configElement.value) + if SystemInfo["DreamBoxAudio"]: + choice_list = [("use_hdmi_caps", _("controlled by HDMI")), ("force_ac3", _("convert to AC3")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI")), ("force_ddp", _("force AC3plus"))] + config.av.transcodeac3plus = ConfigSelection(choices=choice_list, default="force_ac3") + else: + choice_list = [("use_hdmi_caps", _("controlled by HDMI")), ("force_ac3", _("convert to AC3"))] + config.av.transcodeac3plus = ConfigSelection(choices=choice_list, default="force_ac3") config.av.transcodeac3plus.addNotifier(setAC3plusTranscode) if SystemInfo["CanDownmixDTS"]: def setDTSDownmix(configElement): - open("/proc/stb/audio/dts", "w").write(configElement.value) - choices = [("downmix", _("Downmix")), ("passthrough", _("Passthrough"))] - default = "downmix" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/dts_choices" - (choices, default) = readChoices(f, choices, default) - config.av.downmix_dts = ConfigSelection(choices=choices, default=default) + with open("/proc/stb/audio/dts", "w") as f: + f.write(configElement.value and "downmix" or "passthrough") + config.av.downmix_dts = ConfigYesNo(default=True) config.av.downmix_dts.addNotifier(setDTSDownmix) if SystemInfo["CanDTSHD"]: def setDTSHD(configElement): - open("/proc/stb/audio/dtshd", "w").write(configElement.value) - choices = [("downmix", _("Downmix")), ("force_dts", _("convert to DTS")), ("use_hdmi_caps", _("controlled by HDMI")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI"))] - default = "downmix" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/dtshd_choices" - (choices, default) = readChoices(f, choices, default) - config.av.dtshd = ConfigSelection(choices=choices, default=default) + with open("/proc/stb/audio/dtshd", "w") as f: + f.write(configElement.value) + if boxtype in ("dm7080", "dm820"): + choice_list = [("use_hdmi_caps", _("controlled by HDMI")), ("force_dts", _("convert to DTS"))] + config.av.dtshd = ConfigSelection(choices=choice_list, default="use_hdmi_caps") + else: + choice_list = [("downmix", _("Downmix")), ("force_dts", _("convert to DTS")), ("use_hdmi_caps", _("controlled by HDMI")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI"))] + config.av.dtshd = ConfigSelection(choices=choice_list, default="downmix") config.av.dtshd.addNotifier(setDTSHD) - if SystemInfo["CanDownmixAAC"]: - def setAACDownmix(configElement): - open("/proc/stb/audio/aac", "w").write(configElement.value) - choices = [ - ("downmix", _("Downmix")), - ("passthrough", _("Passthrough")) - ] - default = "downmix" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/aac_choices" - (choices, default) = readChoices(f, choices, default) - config.av.downmix_aac = ConfigSelection(choices=choices, default=default) - config.av.downmix_aac.addNotifier(setAACDownmix) - - if SystemInfo["CanDownmixAACPlus"]: - def setAACDownmixPlus(configElement): - open("/proc/stb/audio/aacplus", "w").write(configElement.value) - choices = [ - ("downmix", _("Downmix")), - ("passthrough", _("Passthrough")), - ("multichannel", _("convert to multi-channel PCM")), - ("force_ac3", _("convert to AC3")), - ("force_dts", _("convert to DTS")), - ("use_hdmi_cacenter", _("use_hdmi_cacenter")), - ("wide", _("wide")), - ("extrawide", _("extrawide")) - ] - default = "downmix" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/aacplus_choices" - (choices, default) = readChoices(f, choices, default) - config.av.downmix_aacplus = ConfigSelection(choices=choices, default=default) - config.av.downmix_aacplus.addNotifier(setAACDownmixPlus) - - if SystemInfo["CanAACTranscode"]: - def setAACTranscode(configElement): - open("/proc/stb/audio/aac_transcode", "w").write(configElement.value) - choices = [("off", _("off")), ("ac3", _("AC3")), ("dts", _("DTS"))] - default = "off" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/aac_transcode_choices" - (choices, default) = readChoices(f, choices, default) - config.av.transcodeaac = ConfigSelection(choices=choices, default=default) - config.av.transcodeaac.addNotifier(setAACTranscode) - if SystemInfo["CanWMAPRO"]: def setWMAPRO(configElement): - open("/proc/stb/audio/wmapro", "w").write(configElement.value) - choices = [("downmix", _("Downmix")), ("passthrough", _("Passthrough")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI"))] - default = "downmix" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/wmapro_choices" - (choices, default) = readChoices(f, choices, default) - config.av.wmapro = ConfigSelection(choices=choices, default=default) + with open("/proc/stb/audio/wmapro", "w") as f: + f.write(configElement.value) + choice_list = [("downmix", _("Downmix")), ("passthrough", _("Passthrough")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI"))] + config.av.wmapro = ConfigSelection(choices = choice_list, default = "downmix") config.av.wmapro.addNotifier(setWMAPRO) - if SystemInfo["CanBTAudio"]: - def setBTAudio(configElement): - open("/proc/stb/audio/btaudio", "w").write(configElement.value) - choices = [("off", _("Off")), ("on", _("On"))] - default = "off" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/btaudio_choices" - (choices, default) = readChoices(f, choices, default) - config.av.btaudio = ConfigSelection(choices=choices, default="off") - config.av.btaudio.addNotifier(setBTAudio) + if SystemInfo["CanDownmixAAC"]: + def setAACDownmix(configElement): + with open("/proc/stb/audio/aac", "w") as f: + if SystemInfo["DreamBoxAudio"]: + f.write(configElement.value) + else: + f.write(configElement.value and "downmix" or "passthrough") + if SystemInfo["DreamBoxAudio"]: + choice_list = [("downmix", _("Downmix")), ("passthrough", _("Passthrough")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI"))] + config.av.downmix_aac = ConfigSelection(choices=choice_list, default="downmix") + else: + config.av.downmix_aac = ConfigYesNo(default=True) + config.av.downmix_aac.addNotifier(setAACDownmix) - if SystemInfo["CanBTAudioDelay"]: - def setBTAudioDelay(configElement): - try: - with open(SystemInfo["CanBTAudioDelay"], "w") as fd: - fd.write(format(configElement.value * 90, "x")) - except: - SystemInfo["CanBTAudioDelay"] = False - config.av.btaudiodelay = ConfigSelectionNumber(-1000, 1000, 5, default=0) - config.av.btaudiodelay.addNotifier(setBTAudioDelay) - - try: - SystemInfo["CanChangeOsdAlpha"] = open("/proc/stb/video/alpha", "r") and True or False - except: + if fileExists("/proc/stb/video/alpha"): + f = open("/proc/stb/video/alpha", "r") + SystemInfo["CanChangeOsdAlpha"] = f and True or False + f.close() + else: SystemInfo["CanChangeOsdAlpha"] = False if SystemInfo["CanChangeOsdAlpha"]: def setAlpha(config): - open("/proc/stb/video/alpha", "w").write(str(config.value)) + f = open("/proc/stb/video/alpha", "w") + f.write(str(config.value)) + f.close() config.av.osd_alpha = ConfigSlider(default=255, limits=(0, 255)) config.av.osd_alpha.addNotifier(setAlpha) @@ -327,145 +261,173 @@ def setScaler_sharpness(config): myval = int(config.value) try: print "--> setting scaler_sharpness to: %0.8X" % myval - open("/proc/stb/vmpeg/0/pep_scaler_sharpness", "w").write("%0.8X" % myval) - open("/proc/stb/vmpeg/0/pep_apply", "w").write("1") + f = open("/proc/stb/vmpeg/0/pep_scaler_sharpness", "w") + f.write("%0.8X" % myval) + f.close() except IOError: print "couldn't write pep_scaler_sharpness" + if fileExists("/proc/stb/vmpeg/0/pep_apply"): + try: + f = open("/proc/stb/vmpeg/0/pep_apply", "w") + f.write("1") + f.close() + except IOError: + print "couldn't write pep_apply" + config.av.scaler_sharpness = ConfigSlider(default=13, limits=(0, 26)) config.av.scaler_sharpness.addNotifier(setScaler_sharpness) else: config.av.scaler_sharpness = NoSave(ConfigNothing()) + if SystemInfo["HasMultichannelPCM"]: + def setMultichannelPCM(configElement): + f = open(SystemInfo["HasMultichannelPCM"], "w") + f.write(configElement.value and "enable" or "disable") + f.close() + config.av.multichannel_pcm = ConfigYesNo(default=False) + config.av.multichannel_pcm.addNotifier(setMultichannelPCM) + if SystemInfo["HasAutoVolume"]: def setAutoVolume(configElement): - open(SystemInfo["HasAutoVolume"], "w").write(configElement.value) - choices = [("none", _("off")), ("hdmi", "HDMI"), ("spdif", "SPDIF"), ("dac", "DAC")] - default = "none" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/avl_choices" - (choices, default) = readChoices(f, choices, default) - config.av.autovolume = ConfigSelection(choices=choices, default=default) + f = open(SystemInfo["HasAutoVolume"], "w") + f.write(configElement.value) + f.close() + config.av.autovolume = ConfigSelection(default="none", choices=[("none", _("off")), ("hdmi", "HDMI"), ("spdif", "SPDIF"), ("dac", "DAC")]) config.av.autovolume.addNotifier(setAutoVolume) if SystemInfo["HasAutoVolumeLevel"]: def setAutoVolumeLevel(configElement): - open(SystemInfo["HasAutoVolumeLevel"], "w").write(configElement.value and "enabled" or "disabled") + f = open(SystemInfo["HasAutoVolumeLevel"], "w") + f.write(configElement.value and "enabled" or "disabled") + f.close() config.av.autovolumelevel = ConfigYesNo(default=False) config.av.autovolumelevel.addNotifier(setAutoVolumeLevel) if SystemInfo["Has3DSurround"]: def set3DSurround(configElement): - open(SystemInfo["Has3DSurround"], "w").write(configElement.value) - choices = [("none", _("off")), ("hdmi", _("HDMI")), ("spdif", _("SPDIF")), ("dac", _("DAC"))] - default = "none" - if SystemInfo["CanProc"]: - f = "/proc/stb/audio/3d_surround_choices" - (choices, default) = readChoices(f, choices, default) - config.av.surround_3d = ConfigSelection(choices=choices, default=default) + f = open(SystemInfo["Has3DSurround"], "w") + f.write(configElement.value) + f.close() + config.av.surround_3d = ConfigSelection(default="none", choices=[("none", _("off")), ("hdmi", "HDMI"), ("spdif", "SPDIF"), ("dac", "DAC")]) config.av.surround_3d.addNotifier(set3DSurround) if SystemInfo["Has3DSpeaker"]: def set3DSpeaker(configElement): - open(SystemInfo["Has3DSpeaker"], "w").write(configElement.value) + f = open(SystemInfo["Has3DSpeaker"], "w") + f.write(configElement.value) + f.close() config.av.speaker_3d = ConfigSelection(default="center", choices=[("center", _("center")), ("wide", _("wide")), ("extrawide", _("extra wide"))]) config.av.speaker_3d.addNotifier(set3DSpeaker) if SystemInfo["Has3DSurroundSpeaker"]: def set3DSurroundSpeaker(configElement): - open(SystemInfo["Has3DSurroundSpeaker"], "w").write(configElement.value) - config.av.surround_3d_speaker = ConfigSelection(default="center", choices=[("center", _("center")), ("wide", _("wide")), ("extrawide", _("extra wide"))]) + f = open(SystemInfo["Has3DSurroundSpeaker"], "w") + f.write(configElement.value) + f.close() + config.av.surround_3d_speaker = ConfigSelection(default="disabled", choices=[("disabled", _("off")), ("center", _("center")), ("wide", _("wide")), ("extrawide", _("extra wide"))]) config.av.surround_3d_speaker.addNotifier(set3DSurroundSpeaker) if SystemInfo["Has3DSurroundSoftLimiter"]: def set3DSurroundSoftLimiter(configElement): - open(SystemInfo["Has3DSurroundSoftLimiter"], "w").write(configElement.value and "enabled" or "disabled") + f = open(SystemInfo["Has3DSurroundSoftLimiter"], "w") + f.write(configElement.value and "enabled" or "disabled") + f.close() config.av.surround_softlimiter_3d = ConfigYesNo(default=False) config.av.surround_softlimiter_3d.addNotifier(set3DSurroundSoftLimiter) if SystemInfo["HDMIAudioSource"]: def setHDMIAudioSource(configElement): - open(SystemInfo["HDMIAudioSource"], "w").write(configElement.value) + f = open(SystemInfo["HDMIAudioSource"], "w") + f.write(configElement.value) + f.close() config.av.hdmi_audio_source = ConfigSelection(default="pcm", choices=[("pcm", "PCM"), ("spdif", "SPDIF")]) config.av.hdmi_audio_source.addNotifier(setHDMIAudioSource) - def setVolumeStepsize(configElement): - eDVBVolumecontrol.getInstance().setVolumeSteps(int(configElement.value)) - config.av.volume_stepsize = ConfigSelectionNumber(1, 10, 1, default=5) - config.av.volume_stepsize.addNotifier(setVolumeStepsize) - if SystemInfo["HasBypassEdidChecking"]: def setHasBypassEdidChecking(configElement): - open(SystemInfo["HasBypassEdidChecking"], "w").write("00000001" if configElement.value else "00000000") + with open(SystemInfo["HasBypassEdidChecking"], "w") as fp: + fp.write("00000001" if configElement.value else "00000000") config.av.bypassEdidChecking = ConfigYesNo(default=False) config.av.bypassEdidChecking.addNotifier(setHasBypassEdidChecking) if SystemInfo["HasColorspace"]: def setHaveColorspace(configElement): - open(SystemInfo["HasColorspace"], "w").write(configElement.value) + with open(SystemInfo["HasColorspace"], "w") as fp: + fp.write(configElement.value) if SystemInfo["HasColorspaceSimple"]: choices = [("Edid(Auto)", "auto"), ("Hdmi_Rgb", "RGB"), ("444", "YCbCr 4:4:4"), ("422", "YCbCr 4:2:2"), ("420", "YCbCr 4:2:0")] default = "Edid(Auto)" else: choices = [("auto", "auto"), ("rgb", "RGB"), ("420", "4:2:0"), ("422", "4:2:2"), ("444", "4:4:4")] default = "auto" - if os.path.exists("/proc/stb/video/hdmi_colorspace_choices") and SystemInfo["CanProc"]: - f = "/proc/stb/video/hdmi_colorspace_choices" + f = "/proc/stb/video/hdmi_colorspace_choices" + if os.path.exists(f): (choices, default) = readChoices(f, choices, default) config.av.hdmicolorspace = ConfigSelection(choices=choices, default=default) config.av.hdmicolorspace.addNotifier(setHaveColorspace) if SystemInfo["HasColordepth"]: def setHaveColordepth(configElement): - open(SystemInfo["HasColordepth"], "w").write(configElement.value) + with open(SystemInfo["HasColordepth"], "w") as fp: + fp.write(configElement.value) choices = [("auto", "auto"), ("8bit", "8bit"), ("10bit", "10bit"), ("12bit", "12bit")] default = "auto" - if os.path.exists("/proc/stb/video/hdmi_colordepth_choices") and SystemInfo["CanProc"]: - f = "/proc/stb/video/hdmi_colordepth_choices" + f = "/proc/stb/video/hdmi_colordepth_choices" + if os.path.exists(f): (choices, default) = readChoices(f, choices, default) config.av.hdmicolordepth = ConfigSelection(choices=choices, default=default) config.av.hdmicolordepth.addNotifier(setHaveColordepth) if SystemInfo["HasHDMIpreemphasis"]: def setHDMIpreemphasis(configElement): - open(SystemInfo["HasHDMIpreemphasis"], "w").write("on" if configElement.value else "off") + with open(SystemInfo["HasHDMIpreemphasis"], "w") as fp: + fp.write("on" if configElement.value else "off") config.av.hdmipreemphasis = ConfigYesNo(default=False) config.av.hdmipreemphasis.addNotifier(setHDMIpreemphasis) if SystemInfo["HasColorimetry"]: def setColorimetry(configElement): - open(SystemInfo["HasColorimetry"], "w").write(configElement.value) - choices=[("auto", "auto"), ("bt2020ncl", "BT 2020 NCL"), ("bt2020cl", "BT 2020 CL"), ("bt709", "BT 709")] - default = "auto" - if os.path.exists("/proc/stb/video/hdmi_colorimetry_choices") and SystemInfo["CanProc"]: - f = "/proc/stb/video/hdmi_colorimetry_choices" - (choices, default) = readChoices(f, choices, default) - config.av.hdmicolorimetry = ConfigSelection(choices=choices, default=default) + with open(SystemInfo["HasColorimetry"], "w") as fp: + fp.write(configElement.value) + config.av.hdmicolorimetry = ConfigSelection(default="auto", choices=[("auto", _("auto")), ("bt2020ncl", "BT 2020 NCL"), ("bt2020cl", "BT 2020 CL"), ("bt709", "BT 709")]) config.av.hdmicolorimetry.addNotifier(setColorimetry) if SystemInfo["HasHdrType"]: def setHdmiHdrType(configElement): - open(SystemInfo["HasHdrType"], "w").write(configElement.value) + with open(SystemInfo["HasHdrType"], "w") as fp: + fp.write(configElement.value) config.av.hdmihdrtype = ConfigSelection(default="auto", choices={"auto": _("auto"), "none": "SDR", "hdr10": "HDR10", "hlg": "HLG", "dolby": "Dolby Vision"}) config.av.hdmihdrtype.addNotifier(setHdmiHdrType) if SystemInfo["HDRSupport"]: def setHlgSupport(configElement): - open("/proc/stb/hdmi/hlg_support", "w").write(configElement.value) - config.av.hlg_support = ConfigSelection(default="auto(EDID)", choices=[("auto(EDID)", _("controlled by HDMI")), ("yes", _("force enabled")), ("no", _("force disabled"))]) + with open("/proc/stb/hdmi/hlg_support", "w") as fp: + fp.write(configElement.value) + config.av.hlg_support = ConfigSelection(default="auto(EDID)", + choices=[("auto(EDID)", _("auto")), ("yes", _("force enabled")), ("no", _("force disabled"))]) config.av.hlg_support.addNotifier(setHlgSupport) def setHdr10Support(configElement): - open("/proc/stb/hdmi/hdr10_support", "w").write(configElement.value) - config.av.hdr10_support = ConfigSelection(default="auto(EDID)", choices=[("auto(EDID)", _("controlled by HDMI")), ("yes", _("force enabled")), ("no", _("force disabled"))]) + with open("/proc/stb/hdmi/hdr10_support", "w") as fp: + fp.write(configElement.value) + config.av.hdr10_support = ConfigSelection(default="auto(EDID)", + choices=[("auto(EDID)", _("auto")), ("yes", _("force enabled")), ("no", _("force disabled"))]) config.av.hdr10_support.addNotifier(setHdr10Support) def setDisable12Bit(configElement): - open("/proc/stb/video/disable_12bit", "w").write("1" if configElement.value else "0") + with open("/proc/stb/video/disable_12bit", "w") as fp: + fp.write("on" if configElement.value else "off") config.av.allow_12bit = ConfigYesNo(default=False) config.av.allow_12bit.addNotifier(setDisable12Bit) def setDisable10Bit(configElement): - open("/proc/stb/video/disable_10bit", "w").write("1" if configElement.value else "0") + with open("/proc/stb/video/disable_10bit", "w") as fp: + fp.write("on" if configElement.value else "off") config.av.allow_10bit = ConfigYesNo(default=False) config.av.allow_10bit.addNotifier(setDisable10Bit) + + def setVolumeStepsize(configElement): + eDVBVolumecontrol.getInstance().setVolumeSteps(int(configElement.value)) + config.av.volume_stepsize = ConfigSelectionNumber(1, 10, 1, default=5) + config.av.volume_stepsize.addNotifier(setVolumeStepsize) diff --git a/lib/python/Components/About.py b/lib/python/Components/About.py index c9a178a7e83..f38c9adece2 100644 --- a/lib/python/Components/About.py +++ b/lib/python/Components/About.py @@ -4,7 +4,21 @@ import time import re from Tools.HardwareInfo import HardwareInfo +from boxbranding import getBoxType +from subprocess import PIPE, Popen +boxtype = getBoxType() +def getOpenSSLVersion(): + try: + process = Popen(("/usr/bin/openssl", "version"), stdout=PIPE, stderr=PIPE, universal_newlines=True) + stdout, stderr = process.communicate() + if process.returncode == 0: + data = stdout.strip().split() + if len(data) > 1 and data[0] == "OpenSSL": + return data[1] + except: + pass + return _("unknown") def getVersionString(): return getImageVersionString() @@ -31,8 +45,9 @@ def getFlashDateString(): def getBuildDateString(): try: if os.path.isfile('/etc/version'): - version = open("/etc/version", "r").read() - return "%s-%s-%s" % (version[:4], version[4:6], version[6:8]) + with open("/etc/version", "r") as fp: + version = fp.read() + return "%s-%s-%s" % (version[:4], version[4:6], version[6:8]) except: pass return _("unknown") @@ -41,9 +56,10 @@ def getBuildDateString(): def getUpdateDateString(): try: from glob import glob - build = [x.split("-")[-2:-1][0][-8:] for x in open(glob("/var/lib/opkg/info/openpli-bootlogo.control")[0], "r") if x.startswith("Version:")][0] - if build.isdigit(): - return "%s-%s-%s" % (build[:4], build[4:6], build[6:]) + with open(glob("/var/lib/opkg/info/openpli-bootlogo.control")[0], "r") as fp: + build = [x.split("-")[-2:-1][0][-8:] for x in fp if x.startswith("Version:")][0] + if build.isdigit(): + return "%s-%s-%s" % (build[:4], build[4:6], build[6:]) except: pass return _("unknown") @@ -60,24 +76,27 @@ def getEnigmaVersionString(): def getGStreamerVersionString(): try: from glob import glob - gst = [x.split("Version: ") for x in open(glob("/var/lib/opkg/info/gstreamer[0-9].[0-9].control")[0], "r") if x.startswith("Version:")][0] - return "%s" % gst[1].split("+")[0].replace("\n", "") + with open(glob("/var/lib/opkg/info/gstreamer[0-9].[0-9].control")[0], "r") as fp: + gst = [x.split("Version: ") for x in fp if x.startswith("Version:")][0] + return "%s" % gst[1].split("+")[0].replace("\n", "") except: - return _("Not Installed") + return "" def getffmpegVersionString(): try: from glob import glob - ffmpeg = [x.split("Version: ") for x in open(glob("/var/lib/opkg/info/ffmpeg.control")[0], "r") if x.startswith("Version:")][0] - return "%s" % ffmpeg[1].split("-")[0].replace("\n", "") + with open(glob("/var/lib/opkg/info/ffmpeg.control")[0], "r") as fp: + ffmpeg = [x.split("Version: ") for x in fp if x.startswith("Version:")][0] + return "%s" % ffmpeg[1].split("-")[0].replace("\n", "") except: - return _("Not Installed") + return "" def getKernelVersionString(): try: - return open("/proc/version", "r").read().split(' ', 4)[2].split('-', 2)[0] + with open("/proc/version", "r") as fp: + return fp.read().split(' ', 4)[2].split('-', 2)[0] except: return _("unknown") @@ -88,8 +107,9 @@ def getHardwareTypeString(): def getImageTypeString(): try: - image_type = open("/etc/issue").readlines()[-2].strip()[:-6] - return image_type.capitalize().replace("develop", "Nightly Build") + with open("/etc/issue") as fp: + image_type = fp.readlines()[-2].strip()[:-6] + return image_type.capitalize().replace("develop", "Nightly Build") except: return _("undefined") @@ -99,44 +119,54 @@ def getCPUInfoString(): cpu_count = 0 cpu_speed = 0 processor = "" - for line in open("/proc/cpuinfo").readlines(): - line = [x.strip() for x in line.strip().split(":")] - if not processor and line[0] in ("system type", "model name", "Processor"): - processor = line[1].split()[0] - elif not cpu_speed and line[0] == "cpu MHz": - cpu_speed = "%1.0f" % float(line[1]) - elif line[0] == "processor": - cpu_count += 1 + with open("/proc/cpuinfo") as fp: + for line in fp.readlines(): + line = [x.strip() for x in line.strip().split(":")] + if not processor and line[0] in ("system type", "model name", "Processor"): + processor = line[1].split()[0] + elif not cpu_speed and line[0] == "cpu MHz": + cpu_speed = "%1.0f" % float(line[1]) + elif line[0] == "processor": + cpu_count += 1 if processor.startswith("ARM") and os.path.isfile("/proc/stb/info/chipset"): - processor = "%s (%s)" % (open("/proc/stb/info/chipset").readline().strip().upper(), processor) + with open("/proc/stb/info/chipset") as fp: + processor = "%s (%s)" % (fp.readline().strip().upper(), processor) if not cpu_speed: try: - cpu_speed = int(open("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq").read()) / 1000 + with open("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq") as fp: + cpu_speed = int(fp.read()) / 1000 except: try: import binascii - cpu_speed = int(int(binascii.hexlify(open('/sys/firmware/devicetree/base/cpus/cpu@0/clock-frequency', 'rb').read()), 16) / 100000000) * 100 + with open('/sys/firmware/devicetree/base/cpus/cpu@0/clock-frequency', 'rb') as fp: + cpu_speed = int(int(binascii.hexlify(fp.read()), 16) / 100000000) * 100 except: cpu_speed = "-" temperature = None freq = _("MHz") if os.path.isfile('/proc/stb/fp/temp_sensor_avs'): - temperature = open("/proc/stb/fp/temp_sensor_avs").readline().replace('\n', '') + with open("/proc/stb/fp/temp_sensor_avs") as fp: + temperature = fp.readline().replace('\n', '') elif os.path.isfile('/proc/stb/power/avs'): - temperature = open("/proc/stb/power/avs").readline().replace('\n', '') + with open("/proc/stb/power/avs") as fp: + temperature = fp.readline().replace('\n', '') elif os.path.isfile('/proc/stb/fp/temp_sensor'): - temperature = open("/proc/stb/fp/temp_sensor").readline().replace('\n', '') + with open("/proc/stb/fp/temp_sensor") as fp: + temperature = fp.readline().replace('\n', '') elif os.path.isfile("/sys/devices/virtual/thermal/thermal_zone0/temp"): try: - temperature = int(open("/sys/devices/virtual/thermal/thermal_zone0/temp").read().strip()) / 1000 + with open("/sys/devices/virtual/thermal/thermal_zone0/temp") as fp: + temperature = int(fp.read().strip()) / 1000 except: pass + elif os.path.isfile("/proc/hisi/msp/pm_cpu"): try: - temperature = re.search('temperature = (\d+) degree', open("/proc/hisi/msp/pm_cpu").read()).group(1) + with open("/proc/hisi/msp/pm_cpu") as fp: + temperature = re.search('temperature = (\d+) degree', fp.read()).group(1) except: pass if temperature: @@ -150,15 +180,21 @@ def getDriverInstalledDate(): try: from glob import glob try: - driver = [x.split("-")[-2:-1][0][-8:] for x in open(glob("/var/lib/opkg/info/*-dvb-modules-*.control")[0], "r") if x.startswith("Version:")][0] - return "%s-%s-%s" % (driver[:4], driver[4:6], driver[6:]) + with open(glob("/var/lib/opkg/info/*-dvb-modules-*.control")[0], "r") as fp: + if boxtype in ("dm800", "dm8000"): + driver = [x.split("-")[-2:-1][0][-9:] for x in fp if x.startswith("Version:")][0] + else: + driver = [x.split("-")[-2:-1][0][-8:] for x in fp if x.startswith("Version:")][0] + return "%s-%s-%s" % (driver[:4], driver[4:6], driver[6:]) except: try: - driver = [x.split("Version:") for x in open(glob("/var/lib/opkg/info/*-dvb-proxy-*.control")[0], "r") if x.startswith("Version:")][0] - return "%s" % driver[1].replace("\n", "") + with open(glob("/var/lib/opkg/info/*-dvb-proxy-*.control")[0], "r") as fp: + driver = [x.split("Version:") for x in fp if x.startswith("Version:")][0] + return "%s" % driver[1].replace("\n", "") except: - driver = [x.split("Version:") for x in open(glob("/var/lib/opkg/info/*-platform-util-*.control")[0], "r") if x.startswith("Version:")][0] - return "%s" % driver[1].replace("\n", "") + with open(glob("/var/lib/opkg/info/*-platform-util-*.control")[0], "r") as fp: + driver = [x.split("Version:") for x in fp if x.startswith("Version:")][0] + return "%s" % driver[1].replace("\n", "") except: return _("unknown") diff --git a/lib/python/Components/Converter/ClockToText.py b/lib/python/Components/Converter/ClockToText.py index c11e8a052af..b90c3d77f9b 100644 --- a/lib/python/Components/Converter/ClockToText.py +++ b/lib/python/Components/Converter/ClockToText.py @@ -99,7 +99,7 @@ def fix_space(string): return fix_space("%2d:%02d" % (t.tm_hour, t.tm_min)) elif self.type == self.DATE: # TRANSLATORS: full date representation dayname daynum monthname year in strftime() format! See 'man strftime' - d = _("%A %e %B %Y") + d = _("%Y.%m.%e %A") elif self.type == self.FULL: # TRANSLATORS: long date representation short dayname daynum short monthname hour:minute in strftime() format! See 'man strftime' d = _("%a %e/%m %-H:%M") diff --git a/lib/python/Components/Converter/FrontendInfo.py b/lib/python/Components/Converter/FrontendInfo.py index a0768fa57f7..b5bc3728e2d 100644 --- a/lib/python/Components/Converter/FrontendInfo.py +++ b/lib/python/Components/Converter/FrontendInfo.py @@ -60,6 +60,8 @@ def getText(self): elif self.type == self.SNR or self.type == self.SNRdB: if self.source.snr_db is not None: return _("%3.01f dB") % (self.source.snr_db / 100.0) + elif self.source.snr_db is None: + return _("%3.01f dB") % (0 / 100.0) elif self.source.snr is not None: #fallback to normal SNR... percent = self.source.snr elif self.type == self.TUNER_TYPE: diff --git a/lib/python/Components/Converter/HddState.py b/lib/python/Components/Converter/HddState.py index 487bdddbe9f..21341cb8970 100644 --- a/lib/python/Components/Converter/HddState.py +++ b/lib/python/Components/Converter/HddState.py @@ -101,7 +101,8 @@ def updateHddState(self, force=False): self.state_text = string if prev_state != self.isActive or force: if SystemInfo["LCDsymbol_hdd"]: - open(SystemInfo["LCDsymbol_hdd"], "w").write(self.isActive and "1" or "0") + with open(SystemInfo["LCDsymbol_hdd"], "w") as f: + f.write(self.isActive and "1" or "0") self.changed((self.CHANGED_ALL,)) def setStandbyTime(self, cfgElem): diff --git a/lib/python/Components/Converter/Makefile.am b/lib/python/Components/Converter/Makefile.am index 2ba8ddca020..257fdc7a1ce 100644 --- a/lib/python/Components/Converter/Makefile.am +++ b/lib/python/Components/Converter/Makefile.am @@ -8,4 +8,4 @@ install_PYTHON = \ ServiceOrbitalPosition.py CryptoInfo.py TextCase.py \ ValueBitTest.py TunerInfo.py ConfigEntryTest.py ClientsStreaming.py TemplatedMultiContent.py ProgressToText.py \ Combine.py SensorToText.py ValueToPixmap.py PliExtraInfo.py genre.py TransponderInfo.py \ - RotorPosition.py VfdDisplay.py AnalogClock.py HddState.py + RotorPosition.py VfdDisplay.py AnalogClock.py VtiTempFan.py OpenEcmInfo.py VNetSpeedInfo.py HddState.py diff --git a/lib/python/Components/Converter/OpenEcmInfo.py b/lib/python/Components/Converter/OpenEcmInfo.py new file mode 100644 index 00000000000..679906fffbc --- /dev/null +++ b/lib/python/Components/Converter/OpenEcmInfo.py @@ -0,0 +1,120 @@ +from Components.Converter.Poll import Poll +from Components.Converter.Converter import Converter +from enigma import eTimer, iPlayableService, iServiceInformation +from Components.Element import cached + +try: + from Components.Converter.bitratecalc import eBitrateCalculator + ISBITRATE = True +except ImportError: + ISBITRATE = False + +class OpenEcmInfo(Poll, Converter, object): + bitrate = 0 + vbitrate = 1 + abitrate = 2 + videoBitrate = None + audioBitrate = None + videoBitrate_conn = None + audioBitrate_conn = None + video = audio = 0 + + def __init__(self, type): + Converter.__init__(self, type) + Poll.__init__(self) + self.type = type + self.poll_interval = 1000 + self.poll_enabled = True + if type == "bitrate": + self.type = self.bitrate + elif type == "vbitrate": + self.type = self.vbitrate + elif type == "abitrate": + self.type = self.abitrate + self.clearData() + self.initTimer = eTimer() + try: + self.initTimer.callback.append(self.initBitrateCalc) + except: + self.initTimer_conn = self.initTimer.timeout.connect(self.initBitrateCalc) + + + def clearData(self): + self.videoBitrate = None + self.audioBitrate = None + self.video = self.audio = 0 + + def initBitrateCalc(self): + service = self.source.service + vpid = apid = dvbnamespace = tsid = onid = -1 + if service: + serviceInfo = service.info() + vpid = serviceInfo.getInfo(iServiceInformation.sVideoPID) + apid = serviceInfo.getInfo(iServiceInformation.sAudioPID) + tsid = serviceInfo.getInfo(iServiceInformation.sTSID) + onid = serviceInfo.getInfo(iServiceInformation.sONID) + dvbnamespace = serviceInfo.getInfo(iServiceInformation.sNamespace) + + if vpid > 0 and ISBITRATE and (self.type == self.vbitrate or self.type == self.bitrate): + try: + self.videoBitrate = eBitrateCalculator(vpid, dvbnamespace, tsid, onid, 1000, 1024*1024) + self.videoBitrate.callback.append(self.getVideoBitrateData) + except: + self.videoBitrate = eBitrateCalculator(vpid, dvbnamespace, tsid, onid, 1000, 1024*1024) + self.videoBitrate_conn = self.videoBitrate.timeout.connect(self.getVideoBitrateData) + + if apid > 0 and ISBITRATE and (self.type == self.bitrate or self.type == self.abitrate): + try: + self.audioBitrate = eBitrateCalculator(apid, dvbnamespace, tsid, onid, 1000, 64*1024) + self.audioBitrate.callback.append(self.getAudioBitrateData) + except: + self.audioBitrate = eBitrateCalculator(apid, dvbnamespace, tsid, onid, 1000, 64*1024) + self.audioBitrate_conn = self.audioBitrate.timeout.connect(self.getAudioBitrateData) + + @cached + def getText(self): + service = self.source.service + info = service and service.info() + if not info: + return "" + + if service.streamed() is not None: + return "" + + if self.type == self.bitrate: + return _("Video:") + str(self.video) + " " + _("Audio:") + str(self.audio) + + elif self.type == self.vbitrate: + return _("Video:") + str(self.video) + + elif self.type == self.abitrate: + return _("Audio:") + str(self.audio) + + text = property(getText) + + def getVideoBitrateData(self, value, status): + if status: + self.video = value + else: + self.videoBitrate = None + self.video = 0 + Converter.changed(self, (self.CHANGED_POLL,)) + + def getAudioBitrateData(self, value, status): + if status: + self.audio = value + else: + self.audioBitrate = None + self.audio = 0 + Converter.changed(self, (self.CHANGED_POLL,)) + + def changed(self, what): + if what[0] == self.CHANGED_SPECIFIC: + if what[1] == iPlayableService.evStart: + self.initTimer.stop + self.initTimer.start(1000, True) + elif what[1] == iPlayableService.evEnd: + self.clearData() + Converter.changed(self, what) + elif what[0] == self.CHANGED_POLL: + self.downstream_elements.changed(what) diff --git a/lib/python/Components/Converter/PliExtraInfo.py b/lib/python/Components/Converter/PliExtraInfo.py index d31a30a13b5..33edc6976ed 100644 --- a/lib/python/Components/Converter/PliExtraInfo.py +++ b/lib/python/Components/Converter/PliExtraInfo.py @@ -9,24 +9,28 @@ from Tools.GetEcmInfo import GetEcmInfo from Poll import Poll from skin import parameters +import os caid_data = ( - ("0x0100", "0x01ff", "Seca", "S", True), - ("0x0500", "0x05ff", "Via", "V", True), - ("0x0600", "0x06ff", "Irdeto", "I", True), - ("0x0900", "0x09ff", "NDS", "Nd", True), - ("0x0b00", "0x0bff", "Conax", "Co", True), - ("0x0d00", "0x0dff", "CryptoW", "Cw", True), - ("0x0e00", "0x0eff", "PowerVU", "P", False), - ("0x1000", "0x10FF", "Tandberg", "TB", False), - ("0x1700", "0x17ff", "Beta", "B", True), - ("0x1800", "0x18ff", "Nagra", "N", True), - ("0x2600", "0x2600", "Biss", "Bi", False), - ("0x2700", "0x2710", "Dre3", "D3", False), - ("0x4ae0", "0x4ae1", "Dre", "D", False), - ("0x4aee", "0x4aee", "BulCrypt", "B1", False), - ("0x5581", "0x5581", "BulCrypt", "B2", False), - ("0x5601", "0x5604", "Verimatrix", "Vm", False) + ("0x4a30", "0x4a30", _("DVN-JET"), "TB", False), + ("0x4ad2", "0x4ad3", _("STREAMGUARD"), "SM", False), + ("0x4a02", "0x4a02", _("TONGFANG"), "TF", False), + ( "0x100", "0x1ff", _("Seca"), "S", True ), + ( "0x500", "0x5ff", _("Via"), "V", True ), + ( "0x600", "0x6ff", _("Irdeto"), "I", True ), + ( "0x900", "0x9ff", _("NDS"), "Nd", True ), + ( "0xb00", "0xbff", _("Conax"), "Co", True ), + ( "0xd00", "0xdff", _("CryptoW"), "Cw", True ), + ( "0xe00", "0xeff", _("PowerVU"), "P", False), + ("0x1000", "0x10FF", _("Tandberg"), "T", False), + ("0x1700", "0x17ff", _("Beta"), "B", True ), + ("0x1800", "0x18ff", _("Nagra"), "N", True ), + ("0x2600", "0x2600", _("Biss"), "Bi", False), + ("0x2700", "0x2710", _("Dre3"), "D3", False), + ("0x4ae0", "0x4ae1", _("Dre"), "D", False), + ("0x4aee", "0x4aee", _("BulCrypt"), "B1", False), + ("0x5581", "0x5581", _("BulCrypt"), "B2", False), + ("0x5601", "0x5604", _("Verimatrix"), "Vm", False) ) # stream type to codec map @@ -72,38 +76,44 @@ def __init__(self, type): self.poll_interval = 1000 self.poll_enabled = True self.ca_table = ( - ("CryptoCaidSecaAvailable", "S", False), - ("CryptoCaidViaAvailable", "V", False), - ("CryptoCaidIrdetoAvailable", "I", False), - ("CryptoCaidNDSAvailable", "Nd", False), - ("CryptoCaidConaxAvailable", "Co", False), - ("CryptoCaidCryptoWAvailable", "Cw", False), - ("CryptoCaidPowerVUAvailable", "P", False), - ("CryptoCaidBetaAvailable", "B", False), - ("CryptoCaidNagraAvailable", "N", False), - ("CryptoCaidBissAvailable", "Bi", False), - ("CryptoCaidDre3Available", "D3", False), - ("CryptoCaidDreAvailable", "D", False), - ("CryptoCaidBulCrypt1Available", "B1", False), - ("CryptoCaidBulCrypt2Available", "B2", False), - ("CryptoCaidVerimatrixAvailable", "Vm", False), - ("CryptoCaidTandbergAvailable", "TB", False), - ("CryptoCaidSecaSelected", "S", True), - ("CryptoCaidViaSelected", "V", True), - ("CryptoCaidIrdetoSelected", "I", True), - ("CryptoCaidNDSSelected", "Nd", True), - ("CryptoCaidConaxSelected", "Co", True), - ("CryptoCaidCryptoWSelected", "Cw", True), - ("CryptoCaidPowerVUSelected", "P", True), - ("CryptoCaidBetaSelected", "B", True), - ("CryptoCaidNagraSelected", "N", True), - ("CryptoCaidBissSelected", "Bi", True), - ("CryptoCaidDre3Selected", "D3", True), - ("CryptoCaidDreSelected", "D", True), - ("CryptoCaidBulCrypt1Selected", "B1", True), - ("CryptoCaidBulCrypt2Selected", "B2", True), - ("CryptoCaidVerimatrixSelected", "Vm", True), - ("CryptoCaidTandbergSelected", "TB", True), + ("CryptoCaidDvnAvailable", "TB", False), + ("CryptoCaidSmsxAvailable", "SM", False), + ("CryptoCaidTongfangAvailable", "TF", False), + ("CryptoCaidSecaAvailable", "S", False), + ("CryptoCaidViaAvailable", "V", False), + ("CryptoCaidIrdetoAvailable", "I", False), + ("CryptoCaidNDSAvailable", "Nd", False), + ("CryptoCaidConaxAvailable", "Co", False), + ("CryptoCaidCryptoWAvailable", "Cw", False), + ("CryptoCaidPowerVUAvailable", "P", False), + ("CryptoCaidBetaAvailable", "B", False), + ("CryptoCaidNagraAvailable", "N", False), + ("CryptoCaidBissAvailable", "Bi", False), + ("CryptoCaidDre3Available", "D3", False), + ("CryptoCaidDreAvailable", "D", False), + ("CryptoCaidBulCrypt1Available","B1", False), + ("CryptoCaidBulCrypt2Available","B2", False), + ("CryptoCaidVerimatrixAvailable","Vm", False), + ("CryptoCaidTandbergAvailable", "T", False), + ("CryptoCaidDvnSelected", "TB", True ), + ("CryptoCaidSmsxSelected", "SM", True ), + ("CryptoCaidTongfangSelected", "TF", True ), + ("CryptoCaidSecaSelected", "S", True ), + ("CryptoCaidViaSelected", "V", True ), + ("CryptoCaidIrdetoSelected", "I", True ), + ("CryptoCaidNDSSelected", "Nd", True ), + ("CryptoCaidConaxSelected", "Co", True ), + ("CryptoCaidCryptoWSelected", "Cw", True ), + ("CryptoCaidPowerVUSelected", "P", True ), + ("CryptoCaidBetaSelected", "B", True ), + ("CryptoCaidNagraSelected", "N", True ), + ("CryptoCaidBissSelected", "Bi", True ), + ("CryptoCaidDre3Selected", "D3", True ), + ("CryptoCaidDreSelected", "D", True ), + ("CryptoCaidBulCrypt1Selected", "B1", True ), + ("CryptoCaidBulCrypt2Selected", "B2", True ), + ("CryptoCaidVerimatrixSelected","Vm", True ), + ("CryptoCaidTandbergSelected", "T", True ), ) self.ecmdata = GetEcmInfo() self.feraw = self.fedata = self.updateFEdata = None @@ -147,13 +157,18 @@ def createCryptoBar(self, info): return res def createCryptoSpecial(self, info): - caid_name = "FTA" + caid_system = _("CA System: ") + caid_name = _("FTA") + if int(self.current_caid,16) == 0: + return caid_system + caid_name try: for caid_entry in caid_data: if int(caid_entry[0], 16) <= int(self.current_caid, 16) <= int(caid_entry[1], 16): caid_name = caid_entry[2] break - return caid_name + ":%04x:%04x:%04x:%04x" % (int(self.current_caid, 16), int(self.current_provid, 16), info.getInfo(iServiceInformation.sSID), int(self.current_ecmpid, 16)) + caid_num = "%04x" % (int(self.current_caid,16)) + caid_num = caid_num.upper() + return caid_system + caid_name + "@" + caid_num except: pass return "" @@ -166,10 +181,16 @@ def createResolution(self, info): mode = ("i", "p", " ")[info.getInfo(iServiceInformation.sProgressive)] fps = (info.getInfo(iServiceInformation.sFrameRate) + 500) / 1000 if not fps or fps == -1: - try: - fps = (int(open("/proc/stb/vmpeg/0/framerate", "r").read()) + 500) / 1000 - except: - pass + if os.path.exists("/proc/stb/vmpeg/0/framerate"): + with open("/proc/stb/vmpeg/0/framerate", "r") as fp: + fps = (int(fp.read()) + 500) / 1000 + elif os.path.exists("/proc/stb/vmpeg/0/fallback_framerate"): + with open("/proc/stb/vmpeg/0/fallback_framerate", "r") as fp: + fps = (int(fp.read()) + 0) / 1000 + if not mode: + if os.path.exists("/proc/stb/vmpeg/0/progressive"): + with open("/proc/stb/vmpeg/0/progressive", "r") as fp: + mode = "p" if int(fp.read(),16) else "i" return "%sx%s%s%s" % (xres, yres, mode, fps) def createGamma(self, info): diff --git a/lib/python/Components/Converter/ServiceInfo.py b/lib/python/Components/Converter/ServiceInfo.py index 4b28ed56daa..a3e49819e4d 100644 --- a/lib/python/Components/Converter/ServiceInfo.py +++ b/lib/python/Components/Converter/ServiceInfo.py @@ -29,6 +29,11 @@ class ServiceInfo(Converter): SUBTITLES_AVAILABLE = 19 EDITMODE = 20 IS_STREAM = 21 + + HAS_NOT_HBBTV = 38 + HAS_NOT_TELETEXT = 39 + IS_NOT_CRYPTED = 40 + IS_SD = 22 IS_HD = 23 IS_SD_AND_WIDESCREEN = 24 @@ -50,11 +55,13 @@ def __init__(self, type): Converter.__init__(self, type) self.type, self.interesting_events = { "HasTelext": (self.HAS_TELETEXT, (iPlayableService.evUpdatedInfo,)), + "HasNotTelext": (self.HAS_NOT_TELETEXT, (iPlayableService.evUpdatedInfo,)), "IsMultichannel": (self.IS_MULTICHANNEL, (iPlayableService.evUpdatedInfo,)), "IsStereo": (self.IS_STEREO, (iPlayableService.evUpdatedInfo,)), "IsCrypted": (self.IS_CRYPTED, (iPlayableService.evUpdatedInfo,)), - "IsWidescreen": (self.IS_WIDESCREEN, (iPlayableService.evVideoSizeChanged,)), - "IsNotWidescreen": (self.IS_NOT_WIDESCREEN, (iPlayableService.evVideoSizeChanged,)), + "IsNotCrypted": (self.IS_NOT_CRYPTED, (iPlayableService.evUpdatedInfo,)), + "IsWidescreen": (self.IS_WIDESCREEN, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)), + "IsNotWidescreen": (self.IS_NOT_WIDESCREEN, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)), "SubservicesAvailable": (self.SUBSERVICES_AVAILABLE, (iPlayableService.evStart,)), "VideoWidth": (self.XRES, (iPlayableService.evVideoSizeChanged,)), "VideoHeight": (self.YRES, (iPlayableService.evVideoSizeChanged,)), @@ -69,6 +76,7 @@ def __init__(self, type): "Framerate": (self.FRAMERATE, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)), "TransferBPS": (self.TRANSFERBPS, (iPlayableService.evUpdatedInfo)), "HasHBBTV": (self.HAS_HBBTV, (iPlayableService.evUpdatedInfo, iPlayableService.evHBBTVInfo, iPlayableService.evStart)), + "HasNotHBBTV": (self.HAS_NOT_HBBTV, (iPlayableService.evUpdatedInfo,iPlayableService.evHBBTVInfo, iPlayableService.evStart)), "AudioTracksAvailable": (self.AUDIOTRACKS_AVAILABLE, (iPlayableService.evUpdatedInfo, iPlayableService.evStart)), "SubtitlesAvailable": (self.SUBTITLES_AVAILABLE, (iPlayableService.evUpdatedInfo, iPlayableService.evStart)), "Editmode": (self.EDITMODE, (iPlayableService.evUpdatedInfo, iPlayableService.evStart)), @@ -113,6 +121,9 @@ def getBoolean(self): if self.type == self.HAS_TELETEXT: tpid = info.getInfo(iServiceInformation.sTXTPID) return tpid != -1 + elif self.type == self.HAS_NOT_TELETEXT: + tpid = info.getInfo(iServiceInformation.sTXTPID) + return tpid == -1 elif self.type in (self.IS_MULTICHANNEL, self.IS_STEREO): # FIXME. but currently iAudioTrackInfo doesn't provide more information. audio = service.audioTracks() @@ -135,10 +146,14 @@ def getBoolean(self): return False elif self.type == self.IS_CRYPTED: return info.getInfo(iServiceInformation.sIsCrypted) == 1 + elif self.type == self.IS_NOT_CRYPTED: + return info.getInfo(iServiceInformation.sIsCrypted) != 1 elif self.type == self.SUBSERVICES_AVAILABLE: return hasActiveSubservicesForCurrentChannel(service) elif self.type == self.HAS_HBBTV: return info.getInfoString(iServiceInformation.sHBBTVUrl) != "" + elif self.type == self.HAS_NOT_HBBTV: + return info.getInfoString(iServiceInformation.sHBBTVUrl) == "" elif self.type == self.AUDIOTRACKS_AVAILABLE: audio = service.audioTracks() return bool(audio and audio.getNumberOfTracks() > 1) @@ -215,6 +230,8 @@ def getText(self): return self.getServiceInfoString(info, iServiceInformation.sTransferBPS, lambda x: _("%d kB/s") % (x / 1024)) elif self.type == self.HAS_HBBTV: return info.getInfoString(iServiceInformation.sHBBTVUrl) + elif self.type == self.HAS_NOT_HBBTV: + return "" elif self.isVideoService(info): if self.type == self.XRES: return self.getServiceInfoString(info, iServiceInformation.sVideoWidth) diff --git a/lib/python/Components/Converter/VNetSpeedInfo.py b/lib/python/Components/Converter/VNetSpeedInfo.py new file mode 100644 index 00000000000..ff33a11c745 --- /dev/null +++ b/lib/python/Components/Converter/VNetSpeedInfo.py @@ -0,0 +1,306 @@ +from Components.Label import Label +from Components.Converter.Converter import Converter +from Components.Element import cached +from Components.Converter.Poll import Poll + +class VNetSpeedInfo(Poll, Converter, object): + RCL = 0 + TML = 1 + RCW = 2 + TMW = 3 + RCLT = 4 + TMLT = 5 + RCWT = 6 + TMWT = 7 + RCL_MB = 8 + TML_MB = 9 + RCW_MB = 10 + TMW_MB = 11 + RC = 12 + TM = 13 + RCT = 14 + TMT = 15 + RC_MB = 16 + TM_MB = 17 + NET_TYP = 18 + ERR_RCL = 19 + ERR_TML = 20 + DRO_RCL = 21 + DRO_TML = 22 + ERR_RCW = 23 + ERR_TMW = 24 + DRO_RCW = 25 + DRO_TMW = 26 + + def __init__(self, type,update_interval = 1500): + Poll.__init__(self) + self.poll_interval = 2000 + self.poll_enabled = True + self.lanreceivetotal=0 + self.lanreceivetotalout=0 + self.lanreceive=0 + self.lanreceivemb=0 + self.wlanreceivetotal=0 + self.wlanreceivetotalout=0 + self.wlanreceive=0 + self.wlanreceivemb=0 + self.lantransmittotal=0 + self.lantransmittotalout=0 + self.lantransmit=0 + self.lantransmitmb=0 + self.wlantransmittotal=0 + self.wlantransmittotalout=0 + self.wlantransmit=0 + self.wlantransmitmb=0 + self.receivetotal=0 + self.receive=0 + self.transmittotal=0 + self.transmit=0 + self.receivemb=0 + self.nettyp="NONE" + self.error_lanreceive=0 + self.drop_lanreceive=0 + self.error_lantransmite=0 + self.drop_lantransmite=0 + self.error_wlanreceive=0 + self.drop_wlanreceive=0 + self.error_wlantransmite=0 + self.drop_wlantransmite=0 + + Converter.__init__(self, type) + self.type = type + self.type = type + if type == "RCL": + self.type = self.RCL + elif type == "TML": + self.type = self.TML + elif type == "RCW": + self.type = self.RCW + elif type == "TMW": + self.type = self.TMW + elif type == "RCLT": + self.type = self.RCLT + elif type == "TMLT": + self.type = self.TMLT + elif type == "RCWT": + self.type = self.RCWT + elif type == "TMWT": + self.type = self.TMWT + elif type == "RCL_MB": + self.type = self.RCL_MB + elif type == "TML_MB": + self.type = self.TML_MB + elif type == "RCW_MB": + self.type = self.RCW_MB + elif type == "TMW_MB": + self.type = self.TMW_MB + elif type == "RC": + self.type = self.RC + elif type == "TM": + self.type = self.TM + elif type == "RCT": + self.type = self.RCT + elif type == "TMT": + self.type = self.TMT + elif type == "RC_MB": + self.type = self.RC_MB + elif type == "TM_MB": + self.type = self.TM_MB + elif type == "NET_TYP": + self.type = self.NET_TYP + elif type == "ERR_RCL": + self.type = self.ERR_RCL + elif type == "ERR_TML": + self.type = self.ERR_TML + elif type == "DRO_RCL": + self.type = self.DRO_RCL + elif type == "DRO_TML": + self.type = self.DRO_TML + elif type == "ERR_RCW": + self.type = self.ERR_RCW + elif type == "ERR_TMW": + self.type = self.ERR_TMW + elif type == "DRO_RCW": + self.type = self.DRO_RCW + elif type == "DRO_TMW": + self.type = self.DRO_TMW + + @cached + def getText(self): + service = self.source.service + info = service and service.info() + if not info: + return "" + if service.streamed() is None: + return "" + textvalue = "" + textvalue = self.updateNetSpeedInfoStatus() + return textvalue + + text = property(getText) + + def updateNetSpeedInfoStatus(self): + flaglan=0 + flagwlan=0 + bwm=open("/proc/net/dev") + bw = bwm.readline() + bw = bwm.readline() + sp=[] + while (bw): + bw = bwm.readline() + while bw.find(" ") is not -1: + bw=bw.replace(" "," ") + if bw.find("eth") is not -1: + flaglan=1 + sp=bw.split(":") + bw=sp[1].lstrip() + sp=bw.split(" ") + if len(sp[0]) is 0: + sp[0]="0" + if len(sp[2]) is 0: + sp[2]="0" + if len(sp[3]) is 0: + sp[3]="0" + if len(sp[8]) is 0: + sp[8]="0" + if len(sp[10]) is 0: + sp[10]="0" + if len(sp[11]) is 0: + sp[11]="0" + newlanreceive=int(sp[0])/1024 + self.error_lanrecive=int(sp[2]) + self.drop_lanreceive=int(sp[3]) + if self.lanreceivetotal > 0: + self.lanreceive=float(newlanreceive-self.lanreceivetotal)*8/1024 + self.lanreceivemb=float(newlanreceive-self.lanreceivetotal)/1024 + else: + self.lanreceive=0 + self.lanreceivetotal=newlanreceive + self.lanreceivetotalout=newlanreceive/1024 + newlantransmit=int(sp[8])/1024 + self.error_lantransmite=int(sp[10]) + self.drop_lantransmite=int(sp[11]) + if self.lantransmittotal > 0: + self.lantransmit=float(newlantransmit-self.lantransmittotal)*8/1024 + self.lantransmitmb=float(newlantransmit-self.lantransmittotal)/1024 + else: + self.lantransmit=0 + self.lantransmittotal=newlantransmit + self.lantransmittotalout=newlantransmit/1024 + if (self.lantransmittotal + self.lanreceivetotal) == 0: + flaglan = 0 + if (bw.find("ra") is not -1) or (bw.find("wlan") is not -1) or (bw.find("wifi") is not -1): + flagwlan=1 + sp=bw.split(":") + bw=sp[1].lstrip() + sp=bw.split(" ") + if len(sp[0]) is 0: + sp[0]="0" + if len(sp[2]) is 0: + sp[2]="0" + if len(sp[3]) is 0: + sp[3]="0" + if len(sp[8]) is 0: + sp[8]="0" + if len(sp[10]) is 0: + sp[10]="0" + if len(sp[11]) is 0: + sp[11]="0" + newwlanreceive=int(sp[0])/1024 + self.error_wlanrecive=int(sp[2]) + self.drop_wlanreceive=int(sp[3]) + if self.wlanreceivetotal > 0: + self.wlanreceive=float(newwlanreceive-self.wlanreceivetotal)*8/1024 + self.wlanreceivemb=float(newwlanreceive-self.wlanreceivetotal)/1024 + else: + self.wlanreceive=0 + self.wlanreceivetotal=newwlanreceive + self.wlanreceivetotalout=newwlanreceive/1024 + newwlantransmit=int(sp[8])/1024 + self.error_wlantransmite=int(sp[10]) + self.drop_wlantransmite=int(sp[11]) + if self.wlantransmittotal > 0: + self.wlantransmit=float(newwlantransmit-self.wlantransmittotal)*8/1024 + self.wlantransmitmb=float(newwlantransmit-self.wlantransmittotal)/1024 + else: + self.wlantransmit=0 + self.wlantransmittotal=newwlantransmit + self.wlantransmittotalout=newwlantransmit/1024 + bwm.close() + + if flaglan == 1: + self.receive = self.lanreceive + self.transmit = self.lantransmit + self.receivetotal = self.lanreceivetotal + self.transmittotal = self.lantransmittotal + if flagwlan == 1: + self.nettyp = "LAN+WLAN" + else: + self.nettyp = "LAN" + elif (flaglan == 0) and (flagwlan == 1): + self.receive = self.wlanreceive + self.transmit = self.wlantransmit + self.receivetotal = self.wlanreceivetotal + self.transmittotal = self.wlantransmittotal + self.nettyp = "WLAN" + if (flaglan == 1) or (flagwlan == 1): + self.receivemb = self.receive/8 + self.transmitmb = self.transmit/8 + if self.type == self.RCL: + return "%3.1fMb/s" % self.lanreceive + elif self.type == self.TML: + return "%3.1fMb/s" % self.lantransmit + elif self.type == self.RCW: + return "%3.1fMb/s" % self.wlanreceive + elif self.type == self.TMW: + return "%3.1fMb/s" % self.wlantransmit + elif self.type == self.RCLT: + return "%d" % self.lanreceivetotalout + elif self.type == self.TMLT: + return "%d" % self.lantransmittotalout + elif self.type == self.RCWT: + return "%d" % self.wlanreceivetotalout + elif self.type == self.TMWT: + return "%d" % self.wlantransmittotalout + elif self.type == self.RCL_MB: + return "%3.1fMb/s" % self.lanreceivemb + elif self.type == self.TML_MB: + return "%3.1fMb/s" % self.lantransmitmb + elif self.type == self.RCW_MB: + return "%3.1fMb/s" % self.wlanreceivemb + elif self.type == self.TMW_MB: + return "%3.1fMb/s" % self.wlantransmitmb + elif self.type == self.RC: + return _("RC:%3.1fM/s") % self.receive + elif self.type == self.TM: + return _("TM:%3.1fM/s") % self.transmit + elif self.type == self.RCT: + return "%d" % self.receivetotalout + elif self.type == self.TMT: + return "%d" % self.transmittotalout + elif self.type == self.RC_MB: + return "%3.1fMb/s" % self.receivemb + elif self.type == self.TM_MB: + return "%3.1fMb/s" % self.transmitmb + elif self.type == self.NET_TYP: + return "%s" % self.nettyp + elif self.type == self.ERR_RCL: + return "%d" % self.error_lanreceive + elif self.type == self.ERR_TML: + return "%d" % self.error_lantransmite + elif self.type == self.DRO_RCL: + return "%d" % self.drop_lanreceive + elif self.type == self.DRO_TML: + return "%d" % self.drop_lantransmite + elif self.type == self.ERR_RCW: + return "%d" % self.error_wlanreceive + elif self.type == self.ERR_TMW: + return "%d" % self.error_wlantransmite + elif self.type == self.DRO_RCW: + return "%d" % self.drop_wlanreceive + elif self.type == self.DRO_TMW: + return "%d" % self.drop_wlantransmite + + def changed(self, what): + if what[0] == self.CHANGED_POLL: + Converter.changed(self, what) diff --git a/lib/python/Components/Converter/VtiTempFan.py b/lib/python/Components/Converter/VtiTempFan.py new file mode 100644 index 00000000000..e6d0cb761c1 --- /dev/null +++ b/lib/python/Components/Converter/VtiTempFan.py @@ -0,0 +1,185 @@ +from Components.Converter.Converter import Converter +from Components.Element import cached +from Components.Converter.Poll import Poll +import os + +class VtiTempFan(Poll, Converter, object): + + def __init__(self, type): + Poll.__init__(self) + Converter.__init__(self, type) + self.type = type + self.poll_interval = 5000 + self.poll_enabled = True + self.TEMPINFO = 0 + self.FANINFO = 1 + self.ALL = 2 + self.CAMNAME = 3 + + if type == "TempInfo": + self.type = self.TEMPINFO + elif type == "FanInfo": + self.type = self.FANINFO + elif type == "AllInfo": + self.type = self.ALL + elif type == "CamName": + self.type = self.CAMNAME + + @cached + def getText(self): + textvalue = "" + if self.type == self.TEMPINFO: + textvalue = self.tempfile() + elif self.type == self.FANINFO: + textvalue = self.fanfile() + elif self.type == self.ALL: + textvalue = self.tempfile() + " " + self.fanfile() + elif self.type == self.CAMNAME: + textvalue = self.getCamName() + return textvalue + + text = property(getText) + + def tempfile(self): + tempinfo = "" + mark = str("\xc2\xb0") + sensor_info = None + temperature = 0 + if os.path.exists("/proc/stb/sensors/temp0/value"): + f = open("/proc/stb/sensors/temp0/value", "r") + tempinfo = str(f.readline().strip()) + f.close() + if tempinfo and int(tempinfo) > 0: + tempinfo = _("Temp:") + tempinfo + mark + "C" + return tempinfo + + elif os.path.exists("/proc/stb/fp/temp_sensor"): + f = open("/proc/stb/fp/temp_sensor", "r") + tempinfo = str(f.readline().strip()) + f.close() + if tempinfo and int(tempinfo) > 0: + tempinfo = _("Temp:") + tempinfo + mark + "C" + return tempinfo + + elif os.path.exists("/proc/stb/sensors/temp/value"): + f = open("/proc/stb/sensors/temp/value", "r") + tempinfo = str(f.readline().strip()) + f.close() + if tempinfo and int(tempinfo) > 0: + tempinfo = _("Temp:") + tempinfo + mark + "C" + return tempinfo + + elif os.path.exists('/proc/stb/fp/temp_sensor_avs'): + f = open('/proc/stb/fp/temp_sensor_avs', 'r') + tempinfo = str(f.readline().strip()) + f.close() + if tempinfo and int(tempinfo) > 0: + tempinfo = _("Temp:") + tempinfo + mark + "C" + return tempinfo + + elif os.path.exists('/proc/hisi/msp/pm_cpu'): + with open("/proc/hisi/msp/pm_cpu") as fp: + tempinfo = search('temperature = (\d+) degree', fp.read()).group(1) + tempinfo = str(tempinfo.strip()) + if tempinfo and int(tempinfo) > 0: + tempinfo = _("Temp:") + tempinfo + mark + "C" + return tempinfo + + elif os.path.isfile("/sys/devices/virtual/thermal/thermal_zone0/temp"): + with open("/sys/devices/virtual/thermal/thermal_zone0/temp") as fp: + temperature = int(fp.read().strip())/1000 + if temperature > 0: + tempinfo = _("Temp:") + str(temperature) + mark + "C" + return tempinfo + + return tempinfo + + def getFlashMemory(self, folder='/'): + try: + diskSpace = os.statvfs(folder) + available = float(diskSpace.f_bsize * diskSpace.f_bavail) + return round(float((available) / (1024.0*1024.0)),2) + except: + pass + return None + + def fanfile(self): + fan = None + if os.path.exists("/proc/stb/fp/fan_speed"): + f = open("/proc/stb/fp/fan_speed", "rb") + fan = str(f.readline().strip()) + f.close() + if fan: + return _("Fan:") + fan + fm = float(self.getFlashMemory()) + if fm > 1024: + return _("Flash: %s GB") % str(round(float(fm / 1024.0),1)) + else: + return _("Flash: %s MB") % str(round(fm,1)) + + def getCamName(self): + if os.path.exists("/etc/CurrentBhCamName"): + with open("/etc/CurrentBhCamName") as fp: + for line in fp: + line = line.lower() + if "wicardd" in line: + return "Wicardd" + elif "incubus" in line: + return "Incubus" + elif "gbox" in line: + return "Gbox" + elif "mbox" in line: + return "Mbox" + elif "cccam" in line: + return "CCcam" + elif "oscam" in line: + return "OScam" + elif "camd3" in line: + if "mgcamd" not in line: + return "Camd3" + elif "mgcamd" in line: + return "Mgcamd" + elif "gcam" in line: + if "mgcamd" not in line: + return "GCam" + elif "ncam" in line: + return "NCam" + elif "common" in line: + return "CI" + elif "interface" in line: + return "CI" + elif os.path.exists("/etc/init.d/softcam"): + with open("/etc/init.d/softcam") as fp: + for line in fp: + line = line.lower() + if "wicardd" in line: + return "Wicardd" + elif "incubus" in line: + return "Incubus" + elif "gbox" in line: + return "Gbox" + elif "mbox" in line: + return "Mbox" + elif "cccam" in line: + return "CCcam" + elif "oscam" in line: + return "OScam" + elif "camd3" in line: + if "mgcamd" not in line: + return "Camd3" + elif "mgcamd" in line: + return "Mgcamd" + elif "gcam" in line: + if "mgcamd" not in line: + return "GCam" + elif "ncam" in line: + return "NCam" + elif "common" in line: + return "CI" + elif "interface" in line: + return "CI" + return "" + + def changed(self, what): + if what[0] == self.CHANGED_POLL: + Converter.changed(self, what) diff --git a/lib/python/Components/FanControl.py b/lib/python/Components/FanControl.py index 7a59bc817e3..709a7dc307e 100644 --- a/lib/python/Components/FanControl.py +++ b/lib/python/Components/FanControl.py @@ -85,23 +85,27 @@ def hasFanControl(self, fanid): return os.path.exists("/proc/stb/fp/fan_vlt") or os.path.exists("/proc/stb/fp/fan_pwm") def getFanSpeed(self, fanid): - return int(open("/proc/stb/fp/fan_speed", "r").readline().strip()[:-4]) + with open("/proc/stb/fp/fan_speed", "r") as f: + return int(f.readline().strip()[:-4]) def getVoltage(self, fanid): - return int(open("/proc/stb/fp/fan_vlt", "r").readline().strip(), 16) + with open("/proc/stb/fp/fan_vlt", "r") as f: + return int(f.readline().strip(), 16) def setVoltage(self, fanid, value): if value > 255: return - open("/proc/stb/fp/fan_vlt", "w").write("%x" % value) + with open("/proc/stb/fp/fan_vlt", "w") as f: + f.write("%x" % value) def getPWM(self, fanid): - return int(open("/proc/stb/fp/fan_pwm", "r").readline().strip(), 16) + with open("/proc/stb/fp/fan_pwm", "r") as f: + return int(f.readline().strip(), 16) def setPWM(self, fanid, value): if value > 255: return - open("/proc/stb/fp/fan_pwm", "w").write("%x" % value) - + with open("/proc/stb/fp/fan_pwm", "w") as f: + f.write("%x" % value) fancontrol = FanControl() diff --git a/lib/python/Components/Harddisk.py b/lib/python/Components/Harddisk.py index 56e86683b56..6b81728710d 100644 --- a/lib/python/Components/Harddisk.py +++ b/lib/python/Components/Harddisk.py @@ -3,37 +3,40 @@ from Tools.CList import CList from SystemInfo import SystemInfo from Components.Console import Console +from Tools.Directories import fileExists import Task def readFile(filename): - file = open(filename) - data = file.read().strip() - file.close() - return data - + ret = None + if fileExists(filename): + with open(filename) as f: + ret = f.read().strip() + return ret def getProcMounts(): - try: - mounts = open("/proc/mounts", 'r') - except IOError, ex: - print "[Harddisk] Failed to open /proc/mounts", ex + if fileExists("/proc/mounts"): + result = [] + with open("/proc/mounts", 'r') as f: + tmp = [line.strip().split(' ') for line in f] + for item in tmp: + # Spaces are encoded as \040 in mounts + item[1] = item[1].replace('\\040', ' ') + result.append(item) + return result + else: + print "[Harddisk] Failed to open /proc/mounts" return [] - result = [line.strip().split(' ') for line in mounts] - for item in result: - # Spaces are encoded as \040 in mounts - item[1] = item[1].replace('\\040', ' ') - return result - def isFileSystemSupported(filesystem): - try: - for fs in open('/proc/filesystems', 'r'): - if fs.strip().endswith(filesystem): - return True - return False - except Exception, ex: - print "[Harddisk] Failed to read /proc/filesystems:", ex + if fileExists("/proc/filesystems"): + with open('/proc/filesystems', 'r') as fp: + for fs in fp: + if fs.strip().endswith(filesystem): + return True + else: + print "[Harddisk] Failed to read /proc/filesystems" + return False def findMountPoint(path): @@ -78,10 +81,12 @@ def __init__(self, device, removable=False): self.removable = removable self.internal = "pci" in self.phys_path or "ahci" in self.phys_path or "sata" in self.phys_path - try: - data = open("/sys/block/%s/queue/rotational" % device, "r").read().strip() + if fileExists("/sys/block/%s/queue/rotational" % device): + f = open("/sys/block/%s/queue/rotational" % device, "r") + data = f.read().strip() self.rotational = int(data) - except: + f.close() + else: self.rotational = True if self.type == DEVTYPE_UDEV: @@ -382,14 +387,19 @@ def createInitializeJob(self): if isFileSystemSupported("ext4"): task.setTool("mkfs.ext4") if size > 20000: - try: - version = map(int, open("/proc/version", "r").read().split(' ', 4)[2].split('.', 2)[:2]) - if (version[0] > 3) or (version[0] > 2 and version[1] >= 2): - # Linux version 3.2 supports bigalloc and -C option, use 256k blocks - task.args += ["-C", "262144"] - big_o_options.append("bigalloc") - except Exception, ex: - print "Failed to detect Linux version:", ex + if fileExists("/proc/version"): + try: + f = open("/proc/version","r") + version = map(int, f.read().split(' ', 4)[2].split('.',2)[:2]) + if (version[0] > 3) or (version[0] > 2 and version[1] >= 2): + # Linux version 3.2 supports bigalloc and -C option, use 256k blocks + task.args += ["-C", "262144"] + big_o_options.append("bigalloc") + f.close() + except: + pass + else: + print "Failed to detect Linux version" else: task.setTool("mkfs.ext3") if size > 250000: @@ -402,7 +412,7 @@ def createInitializeJob(self): big_o_options.append("sparse_super") elif size > 2048: # Over 2GB: 32 i-nodes per megabyte - task.args += ["-T", "largefile", "-N", str(size * 32)] + task.args += ["-T", "largefile", "-N", str(int(size * 32))] task.args += ["-m0", "-O", ",".join(big_o_options), self.partitionPath("1")] task = MountTask(job, self) @@ -457,12 +467,14 @@ def getDeviceName(self): # any access has been made to the disc. If there has been no access over a specifed time, # we set the hdd into standby. def readStats(self): - try: - l = open("/sys/block/%s/stat" % self.device).read() - except IOError: - return -1, -1 - data = l.split(None, 5) - return (int(data[0]), int(data[4])) + if os.path.exists("/sys/block/%s/stat" % self.device): + f = open("/sys/block/%s/stat" % self.device) + l = f.read() + f.close() + data = l.split(None,5) + return int(data[0]), int(data[4]) + else: + return -1,-1 def startIdle(self): from enigma import eTimer @@ -548,10 +560,12 @@ def total(self): return None def tabbedDescription(self): - if self.mountpoint.startswith('/media/net') or self.mountpoint.startswith('/media/autofs'): - # Network devices have a user defined name + try: + if self.mountpoint.startswith('/media/net') or self.mountpoint.startswith('/media/autofs'): + return self.description + return self.description + '\t' + self.mountpoint + except: return self.description - return self.description + '\t' + self.mountpoint def mounted(self, mounts=None): # THANK YOU PYTHON FOR STRIPPING AWAY f_fsid. @@ -628,10 +642,10 @@ def getBlockDevInfo(self, blockdev): try: if os.path.exists(devpath + "/removable"): removable = bool(int(readFile(devpath + "/removable"))) - if os.path.exists(devpath + "/dev"): - dev = readFile(devpath + "/dev") - subdev = False if int(dev.split(':')[1]) % 32 == 0 else True - dev = int(dev.split(':')[0]) + if os.path.exists(devpath + "/uevent"): + uevent = {k.lower():v.strip() for k, v in (l.split('=') for l in open(devpath + "/uevent"))} + dev = int(uevent['major']) + subdev = False if uevent['devtype'] == "disk" else True else: dev = None subdev = False @@ -664,7 +678,8 @@ def getBlockDevInfo(self, blockdev): # check for medium medium_found = True try: - open("/dev/" + blockdev).close() + if os.path.exists("/dev/" + blockdev): + open("/dev/" + blockdev).close() except IOError, err: if err.errno == 159: # no medium present medium_found = False @@ -758,11 +773,14 @@ def HDDCount(self): def HDDList(self): list = [] for hd in self.hdd: - hdd = hd.model() + " - " + hd.bus() - cap = hd.capacity() - if cap != "": - hdd += " (" + cap + ")" - list.append((hdd, hd)) + try: + hdd = hd.model() + " - " + hd.bus() + cap = hd.capacity() + if cap != "": + hdd += " (" + cap + ")" + list.append((hdd, hd)) + except: + pass return list def getCD(self): @@ -781,7 +799,7 @@ def getMountedPartitions(self, onlyhotplug=False, mounts=None): devs.remove(dev) # return all devices which are not removed due to being a wholedisk when a partition exists - return [x for x in parts if not x.device or x.device in devs] + return [x for x in parts if (not x.device or x.device in devs) and x.mountpoint] def splitDeviceName(self, devname): # this works for: sdaX, hdaX, sr0 (which is in fact dev="sr0", part=""). It doesn't work for other names like mtdblock3, but they are blacklisted anyway. diff --git a/lib/python/Components/HdmiCec.py b/lib/python/Components/HdmiCec.py index 02c337ee618..d3beb15439a 100644 --- a/lib/python/Components/HdmiCec.py +++ b/lib/python/Components/HdmiCec.py @@ -78,7 +78,7 @@ config.hdmicec.volume_forwarding = ConfigYesNo(default=False) config.hdmicec.control_receiver_wakeup = ConfigYesNo(default=False) config.hdmicec.control_receiver_standby = ConfigYesNo(default=False) -config.hdmicec.handle_deepstandby_events = ConfigYesNo(default=False) +config.hdmicec.handle_deepstandby_events = ConfigSelection(default="no", choices=[("no", _("No")), ("yes", _("Yes")), ("poweroff", _("Only power off"))]) choicelist = [] for i in (10, 50, 100, 150, 250, 500, 750, 1000): choicelist.append(("%d" % i, _("%d ms") % i)) @@ -131,7 +131,7 @@ def __init__(self): if config.hdmicec.report_active_source.value and NavigationInstance.instance and not NavigationInstance.instance.isRestartUI(): self.sendMessage(0, "sourceinactive") self.sendMessage(0, "menuactive") - if config.hdmicec.handle_deepstandby_events.value and (not getFPWasTimerWakeup() or (config.usage.startup_to_standby.value == "no" and config.misc.prev_wakeup_time_type.value == 3)): + if config.hdmicec.handle_deepstandby_events.value == "yes" and (not getFPWasTimerWakeup() or (config.usage.startup_to_standby.value == "no" and config.misc.prev_wakeup_time_type.value == 3)): self.onLeaveStandby() def getPhysicalAddress(self): @@ -298,7 +298,7 @@ def onEnterStandby(self, configElement): self.standbyMessages() def onEnterDeepStandby(self, configElement): - if config.hdmicec.enabled.value and config.hdmicec.handle_deepstandby_events.value: + if config.hdmicec.enabled.value and config.hdmicec.handle_deepstandby_events.value != "no": if config.hdmicec.next_boxes_detect.value: self.delay.start(750, True) else: @@ -521,7 +521,7 @@ def fdebug(self, output): log_path = config.hdmicec.log_path.value path = os.path.join(log_path, LOGFILE) if pathExists(log_path): - fp = file(path, 'a') + fp = open(path, 'a') fp.write(output) fp.close() diff --git a/lib/python/Components/ImportChannels.py b/lib/python/Components/ImportChannels.py index e3bb3b64af2..ad0f896e35b 100644 --- a/lib/python/Components/ImportChannels.py +++ b/lib/python/Components/ImportChannels.py @@ -139,7 +139,8 @@ def threaded_function(self): if epg_location: print "[Import Channels] Copy EPG file..." try: - open(os.path.join(self.tmp_dir, "epg.dat"), "wb").write(self.getUrl("%s/file?file=%s" % (self.url, epg_location)).read()) + with open(os.path.join(self.tmp_dir, "epg.dat"), "wb") as fp: + fp.write(self.getUrl("%s/file?file=%s" % (self.url, epg_location)).read()) shutil.move(os.path.join(self.tmp_dir, "epg.dat"), config.misc.epgcache_filename.value) except: self.ImportChannelsDone(False, _("Error while retreiving epg.dat from server")) @@ -160,7 +161,8 @@ def threaded_function(self): for file in files: print "[Import Channels] Downloading %s..." % file try: - open(os.path.join(self.tmp_dir, os.path.basename(file)), "wb").write(self.getUrl("%s/file?file=%s/%s" % (self.url, e2path, quote(file))).read()) + with open(os.path.join(self.tmp_dir, os.path.basename(file)), "wb") as fp: + fp.write(self.getUrl("%s/file?file=%s/%s" % (self.url, e2path, quote(file))).read()) except Exception as e: print "[Import Channels] Exception: %s" % str(e) diff --git a/lib/python/Components/InputDevice.py b/lib/python/Components/InputDevice.py index 45e4754d10b..44e86047921 100644 --- a/lib/python/Components/InputDevice.py +++ b/lib/python/Components/InputDevice.py @@ -200,7 +200,8 @@ class RcTypeControl(): def __init__(self): if SystemInfo["RcTypeChangable"] and os.path.exists('/proc/stb/info/boxtype'): self.isSupported = True - self.boxType = open('/proc/stb/info/boxtype', 'r').read().strip() + with open('/proc/stb/info/boxtype', 'r') as fp: + self.boxType = fp.read().strip() if config.plugins.remotecontroltype.rctype.value != 0: self.writeRcType(config.plugins.remotecontroltype.rctype.value) else: @@ -214,12 +215,14 @@ def getBoxType(self): def writeRcType(self, rctype): if self.isSupported and rctype > 0: - open('/proc/stb/ir/rc/type', 'w').write('%d' % rctype) + with open('/proc/stb/ir/rc/type', 'w') as fp: + fp.write('%d' % rctype) def readRcType(self): rc = 0 if self.isSupported: - rc = open('/proc/stb/ir/rc/type', 'r').read().strip() + with open('/proc/stb/ir/rc/type', 'r') as fp: + rc = fp.read().strip() return int(rc) diff --git a/lib/python/Components/Language.py b/lib/python/Components/Language.py index 85181fa7753..c84da2fb42e 100644 --- a/lib/python/Components/Language.py +++ b/lib/python/Components/Language.py @@ -5,6 +5,7 @@ from Tools.Directories import SCOPE_LANGUAGE, resolveFilename +LPATH = resolveFilename(SCOPE_LANGUAGE, "") class Language: def __init__(self): @@ -14,7 +15,13 @@ def __init__(self): self.activeLanguage = 0 self.catalog = None self.lang = {} + self.InitLang() + self.callbacks = [] + + def InitLang(self): self.langlist = [] + self.langlistselection = [] + self.ll = os.listdir(LPATH) # FIXME make list dynamically # name, iso-639 language, iso-3166 country. Please don't mix language&country! self.addLanguage("Arabic", "ar", "AE", "ISO-8859-15") @@ -61,39 +68,75 @@ def __init__(self): self.addLanguage("SChinese", "zh", "CN", "UTF-8") self.addLanguage("TChinese", "zh", "HK", "UTF-8") - self.callbacks = [] - def addLanguage(self, name, lang, country, encoding): try: - self.lang[str(lang + "_" + country)] = ((name, lang, country, encoding)) - self.langlist.append(str(lang + "_" + country)) + if lang in self.ll or (lang + "_" + country) in self.ll: + self.lang[str(lang + "_" + country)] = ((name, lang, country, encoding)) + self.langlist.append(str(lang + "_" + country)) except: print "Language " + str(name) + " not found" + self.langlistselection.append((str(lang + "_" + country), name)) def activateLanguage(self, index): try: if index not in self.lang: print "Selected language %s does not exist, fallback to en_EN!" % index index = "en_EN" + Notifications.AddNotification(MessageBox, _("The selected langugage is unavailable - using en_EN"), MessageBox.TYPE_INFO, timeout=3) lang = self.lang[index] print "Activating language " + lang[0] os.environ["LANGUAGE"] = lang[1] # set languange in order gettext to work properly on external plugins - self.catalog = gettext.translation('enigma2', resolveFilename(SCOPE_LANGUAGE, ""), languages=[index]) + self.catalog = gettext.translation('enigma2', resolveFilename(SCOPE_LANGUAGE, ""), languages=[index], fallback=True) self.catalog.install(names=("ngettext", "pgettext")) self.activeLanguage = index for x in self.callbacks: - x() + if x: + x() except: print "Error in activating language!" + + # These should always be C.UTF-8 (or POSIX if C.UTF-8 is unavaible) or program code might behave + # differently depending on language setting + try: + locale.setlocale(locale.LC_CTYPE, ('C', 'UTF-8')) + except: + pass + try: + locale.setlocale(locale.LC_COLLATE, ('C', 'UTF-8')) + except: + try: + locale.setlocale(locale.LC_COLLATE, ('POSIX', '')) + except: + pass + # NOTE: we do not use LC_ALL, because LC_ALL will not set any of the categories, when one of the categories fails. # We'd rather try to set all available categories, and ignore the others - for category in [locale.LC_CTYPE, locale.LC_COLLATE, locale.LC_TIME, locale.LC_MONETARY, locale.LC_MESSAGES, locale.LC_NUMERIC]: + for category in [locale.LC_TIME, locale.LC_MONETARY, locale.LC_MESSAGES, locale.LC_NUMERIC]: try: locale.setlocale(category, (self.getLanguage(), 'UTF-8')) except: pass + + # Also write a locale.conf as /home/root/.config/locale.conf to apply language to interactive shells as well: + try: + os.stat('/home/root/.config') + except: + os.mkdir('/home/root/.config') + + localeconf = open('/home/root/.config/locale.conf', 'w') + for category in ["LC_TIME", "LC_DATE", "LC_MONETARY", "LC_MESSAGES", "LC_NUMERIC", "LC_NAME", "LC_TELEPHONE", "LC_ADDRESS", "LC_PAPER", "LC_IDENTIFICATION", "LC_MEASUREMENT", "LANG" ]: + if category == "LANG" or (category == "LC_DATE" and os.path.exists('/usr/lib/locale/' + self.getLanguage() + '/LC_TIME')) or os.path.exists('/usr/lib/locale/' + self.getLanguage() + '/' + category): + localeconf.write('export %s="%s.%s"\n' % (category, self.getLanguage(), "UTF-8" )) + else: + if os.path.exists('/usr/lib/locale/C.UTF-8/' + category): + localeconf.write('export %s="C.UTF-8"\n' % category) + else: + localeconf.write('export %s="POSIX"\n' % category) + localeconf.close() + # HACK: sometimes python 2.7 reverts to the LC_TIME environment value, so make sure it has the correct value os.environ["LC_TIME"] = self.getLanguage() + '.UTF-8' + os.environ["LANGUAGE"] = self.getLanguage() + '.UTF-8' os.environ["GST_SUBTITLE_ENCODING"] = self.getGStreamerSubtitleEncoding() def activateLanguageIndex(self, index): @@ -132,5 +175,4 @@ def getGStreamerSubtitleEncoding(self): def addCallback(self, callback): self.callbacks.append(callback) - language = Language() diff --git a/lib/python/Components/Lcd.py b/lib/python/Components/Lcd.py index 02232a9fa0d..cd2ce6159cc 100644 --- a/lib/python/Components/Lcd.py +++ b/lib/python/Components/Lcd.py @@ -3,6 +3,7 @@ from Components.SystemInfo import SystemInfo from Screens.InfoBar import InfoBar from Screens.Screen import Screen +from enigma import getBoxType class dummyScreen(Screen): @@ -80,7 +81,10 @@ def setLCDflipped(configElement): config.lcd.contrast.addNotifier(setLCDcontrast) else: config.lcd.contrast = ConfigNothing() - standby_default = 1 + if getBoxType() in ('dm900','dm920'): + standby_default = 4 + else: + standby_default = 1 config.lcd.standby = ConfigSlider(default=standby_default, limits=(0, 10)) config.lcd.standby.addNotifier(setLCDbright) @@ -99,37 +103,49 @@ def setLCDflipped(configElement): if SystemInfo["LedPowerColor"]: def setLedPowerColor(configElement): - open(SystemInfo["LedPowerColor"], "w").write(configElement.value) + f = open(SystemInfo["LedPowerColor"], "w") + f.write(configElement.value) + f.close() config.lcd.ledpowercolor = ConfigSelection(default="1", choices=[("0", _("off")), ("1", _("blue")), ("2", _("red")), ("3", _("violet"))]) config.lcd.ledpowercolor.addNotifier(setLedPowerColor) if SystemInfo["LedStandbyColor"]: def setLedStandbyColor(configElement): - open(SystemInfo["LedStandbyColor"], "w").write(configElement.value) + f = open(SystemInfo["LedStandbyColor"], "w") + f.write(configElement.value) + f.close() config.lcd.ledstandbycolor = ConfigSelection(default="3", choices=[("0", _("off")), ("1", _("blue")), ("2", _("red")), ("3", _("violet"))]) config.lcd.ledstandbycolor.addNotifier(setLedStandbyColor) if SystemInfo["LedSuspendColor"]: def setLedSuspendColor(configElement): - open(SystemInfo["LedSuspendColor"], "w").write(configElement.value) + f = open(SystemInfo["LedSuspendColor"], "w") + f.write(configElement.value) + f.close() config.lcd.ledsuspendcolor = ConfigSelection(default="2", choices=[("0", _("off")), ("1", _("blue")), ("2", _("red")), ("3", _("violet"))]) config.lcd.ledsuspendcolor.addNotifier(setLedSuspendColor) if SystemInfo["Power4x7On"]: def setPower4x7On(configElement): - open(SystemInfo["Power4x7On"], "w").write(configElement.value) + f = open(SystemInfo["Power4x7On"], "w") + f.write(configElement.value) + f.close() config.lcd.power4x7on = ConfigSelection(default="on", choices=[("off", _("Off")), ("on", _("On"))]) config.lcd.power4x7on.addNotifier(setPower4x7On) if SystemInfo["Power4x7Standby"]: def setPower4x7Standby(configElement): - open(SystemInfo["Power4x7Standby"], "w").write(configElement.value) + f = open(SystemInfo["Power4x7Standby"], "w") + f.write(configElement.value) + f.close() config.lcd.power4x7standby = ConfigSelection(default="on", choices=[("off", _("Off")), ("on", _("On"))]) config.lcd.power4x7standby.addNotifier(setPower4x7Standby) if SystemInfo["Power4x7Suspend"]: def setPower4x7Suspend(configElement): - open(SystemInfo["Power4x7Suspend"], "w").write(configElement.value) + f = open(SystemInfo["Power4x7Suspend"], "w") + f.write(configElement.value) + f.close() config.lcd.power4x7suspend = ConfigSelection(default="off", choices=[("off", _("Off")), ("on", _("On"))]) config.lcd.power4x7suspend.addNotifier(setPower4x7Suspend) @@ -153,12 +169,15 @@ def doNothing(): config.misc.standbyCounter.addNotifier(standbyCounterChanged, initial_call=False) - def setLCDLiveTv(value): if "live_enable" in SystemInfo["LcdLiveTV"]: - open(SystemInfo["LcdLiveTV"], "w").write(value and "enable" or "disable") + f = open(SystemInfo["LcdLiveTV"], "w") + f.write(value and "enable" or "disable") + f.close() else: - open(SystemInfo["LcdLiveTV"], "w").write(value and "0" or "1") + f = open(SystemInfo["LcdLiveTV"], "w") + f.write(value and "0" or "1") + f.close() if not value: try: InfoBarInstance = InfoBar.instance diff --git a/lib/python/Components/Makefile.am b/lib/python/Components/Makefile.am index a246bf6bf01..4bbf73375ca 100644 --- a/lib/python/Components/Makefile.am +++ b/lib/python/Components/Makefile.am @@ -21,4 +21,4 @@ install_PYTHON = \ Task.py Console.py ResourceManager.py TuneTest.py \ Keyboard.py Sensors.py FanControl.py HdmiCec.py RcModel.py \ Netlink.py InputHotplug.py \ - ImportChannels.py + ImportChannels.py PowerOffTimer.py diff --git a/lib/python/Components/Network.py b/lib/python/Components/Network.py index 22766ead52c..7e3fc9acc34 100644 --- a/lib/python/Components/Network.py +++ b/lib/python/Components/Network.py @@ -2,6 +2,7 @@ import re import netifaces as ni from socket import * +from enigma import eTimer from Components.Console import Console from Components.PluginComponent import plugins from Plugins.Plugin import PluginDescriptor @@ -42,7 +43,7 @@ def onRemoteRootFS(self): return self.remoteRootFS def isBlacklisted(self, iface): - return iface in ('lo', 'wifi0', 'wmaster0', 'sit0', 'tun0', 'sys0', 'p2p0') + return iface in ('lo', 'wifi0', 'wmaster0', 'sit0', 'tun0', 'sys0', 'p2p0', 'wg0') def getInterfaces(self, callback=None): self.configuredInterfaces = [] @@ -65,9 +66,11 @@ def convertIP(self, ip): def getAddrInet(self, iface, callback): data = {'up': False, 'dhcp': False, 'preup': False, 'predown': False} try: - if os.path.exists('/sys/class/net/%s/carrier' % iface): - data['up'] = open('/sys/class/net/%s/carrier' % iface).read().strip() == '1' - if data['up']: + if os.path.exists('/sys/class/net/%s/operstate' % iface): + fp = open('/sys/class/net/%s/flags' % iface, 'r') + data['up'] = int(fp.read().strip(), 16) & 1 == 1 + fp.close() + if data['up'] and iface not in self.configuredInterfaces: self.configuredInterfaces.append(iface) nit = ni.ifaddresses(iface) data['ip'] = self.convertIP(nit[ni.AF_INET][0]['addr']) # ipv4 @@ -544,6 +547,7 @@ def isWirelessInterface(self, iface): ifnames.append(device.search(line).group()[:-1]) except AttributeError: pass + fp.close() if iface in ifnames: return True @@ -631,5 +635,31 @@ def hotplug(self, event): iNetwork = Network() +class NetworkCheck: + def __init__(self): + self.Timer = eTimer() + self.Timer.callback.append(self.startCheckNetwork) + + def startCheckNetwork(self): + self.Timer.stop() + if self.Retry > 0: + try: + gws = ni.gateways() + if 'default' in gws and len(gws['default']) > 0: + print("[NetworkCheck] CheckNetwork - Done - Reload interface data") + iNetwork.getInterfaces() + return + self.Retry = self.Retry - 1 + self.Timer.start(1000, True) + except Exception as e: + print("[NetworkCheck] CheckNetwork - Error: %s" % str(e)) + + def Start(self): + self.Retry = 30 + self.Timer.start(1000, True) + + def InitNetwork(): - pass + global networkCheck + networkCheck = NetworkCheck() + networkCheck.Start() diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index c29ab4c787b..f5000d9c807 100644 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -641,12 +641,14 @@ def internallyConnectableTo(self): def setInternalLink(self): if self.internally_connectable is not None: print "[NIM] setting internal link on frontend id", self.frontend_id - open("/proc/stb/frontend/%d/rf_switch" % self.frontend_id, "w").write("internal") + with open("/proc/stb/frontend/%d/rf_switch" % self.frontend_id, "w") as fp: + fp.write("internal") def removeInternalLink(self): if self.internally_connectable is not None: print "[NIM] removing internal link on frontend id", self.frontend_id - open("/proc/stb/frontend/%d/rf_switch" % self.frontend_id, "w").write("external") + with open("/proc/stb/frontend/%d/rf_switch" % self.frontend_id, "w") as fp: + fp.write("external") def isMultiType(self): return not self.isCombined() and bool(len(self.multi_type)) @@ -879,7 +881,8 @@ def enumerateNIMs(self): self.nim_slots = [] try: - nimfile = open("/proc/bus/nim_sockets") + if os.path.exists("/proc/bus/nim_sockets"): + nimfile = open("/proc/bus/nim_sockets") except IOError: return @@ -1541,18 +1544,21 @@ def scpcSearchRangeChanged(configElement): fe_id = configElement.fe_id slot_id = configElement.slot_id if os.path.exists("/proc/stb/frontend/%d/use_scpc_optimized_search_range" % fe_id): - open("/proc/stb/frontend/%d/use_scpc_optimized_search_range" % (fe_id), "w").write(configElement.value) + with open("/proc/stb/frontend/%d/use_scpc_optimized_search_range" % (fe_id), "w") as fp: + fp.write(configElement.value) def toneAmplitudeChanged(configElement): fe_id = configElement.fe_id slot_id = configElement.slot_id if os.path.exists("/proc/stb/frontend/%d/tone_amplitude" % fe_id): - open("/proc/stb/frontend/%d/tone_amplitude" % (fe_id), "w").write(configElement.value) + with open("/proc/stb/frontend/%d/tone_amplitude" % (fe_id), "w") as fp: + fp.write(configElement.value) def t2miRawModeChanged(configElement): slot = configElement.slot if os.path.exists("/proc/stb/frontend/%d/t2mirawmode" % slot): - open("/proc/stb/frontend/%d/t2mirawmode" % slot, "w").write(configElement.value) + with open("/proc/stb/frontend/%d/t2mirawmode" % slot, "w") as fp: + fp.write(configElement.value) def createSatConfig(nim, slot_id): nim.toneAmplitude = ConfigSelection([("11", "340mV"), ("10", "360mV"), ("9", "600mV"), ("8", "700mV"), ("7", "800mV"), ("6", "900mV"), ("5", "1100mV")], "7") @@ -1695,25 +1701,30 @@ def tunerTypeChanged(nimmgr, configElement, initial=False): if not hasattr(config.misc, 'firstrun') or not config.misc.firstrun.value: configElement.save() elif is_changed_mode: - cur_type = int(open("/proc/stb/frontend/%d/mode" % (fe_id), "r").read()) + with open("/proc/stb/frontend/%d/mode" % (fe_id), "r") as fp: + cur_type = int(fp.read()) if cur_type != int(configElement.value): print "[InitNimManager] tunerTypeChanged feid %d from %d to mode %d" % (fe_id, cur_type, int(configElement.value)) is_dvb_shutdown_timeout = os.path.exists("/sys/module/dvb_core/parameters/dvb_shutdown_timeout") if is_dvb_shutdown_timeout: try: - oldvalue = open("/sys/module/dvb_core/parameters/dvb_shutdown_timeout", "r").readline() - open("/sys/module/dvb_core/parameters/dvb_shutdown_timeout", "w").write("0") + with open("/sys/module/dvb_core/parameters/dvb_shutdown_timeout", "r") as fp: + oldvalue = fp.readline() + with open("/sys/module/dvb_core/parameters/dvb_shutdown_timeout", "w") as fp: + fp.write("0") except: print "[InitNimManager] tunerTypeChanged read /sys/module/dvb_core/parameters/dvb_shutdown_timeout failed" frontend.closeFrontend() - open("/proc/stb/frontend/%d/mode" % (fe_id), "w").write(configElement.value) + with open("/proc/stb/frontend/%d/mode" % (fe_id), "w") as fp: + fp.write(configElement.value) frontend.reopenFrontend() if is_dvb_shutdown_timeout: try: - open("/sys/module/dvb_core/parameters/dvb_shutdown_timeout", "w").write(oldvalue) + with open("/sys/module/dvb_core/parameters/dvb_shutdown_timeout", "w") as fp: + fp.write(oldvalue) except: print "[InitNimManager] tunerTypeChanged write to /sys/module/dvb_core/parameters/dvb_shutdown_timeout failed" diff --git a/lib/python/Components/Opkg.py b/lib/python/Components/Opkg.py index 4cf2c4357cc..d1d587ddac3 100644 --- a/lib/python/Components/Opkg.py +++ b/lib/python/Components/Opkg.py @@ -45,8 +45,9 @@ def enumFeeds(): for fn in os.listdir('/etc/opkg'): if fn.endswith('-feed.conf'): try: - for feed in open(os.path.join('/etc/opkg', fn)): - yield feed.split()[1] + with open(os.path.join('/etc/opkg', fn)) as f: + for feed in f: + yield feed.split()[1] except IndexError: pass except IOError: @@ -58,43 +59,45 @@ def enumPlugins(filter_start=''): for feed in enumFeeds(): package = None try: - for line in open(os.path.join(list_dir, feed), 'r'): - if line.startswith('Package:'): - package = line.split(":", 1)[1].strip() - version = '' - description = '' - if package.startswith(filter_start) and not package.endswith('-dev') and not package.endswith('-staticdev') and not package.endswith('-dbg') and not package.endswith('-doc') and not package.endswith('-src'): + with open(os.path.join(list_dir, feed), 'r') as f: + for line in f: + if line.startswith('Package:'): + package = line.split(":",1)[1].strip() + version = '' + description = '' + if package.startswith(filter_start) and not package.endswith('-dev') and not package.endswith('-staticdev') and not package.endswith('-dbg') and not package.endswith('-doc') and not package.endswith('-src'): + continue + package = None + if package is None: continue - package = None - if package is None: - continue - if line.startswith('Version:'): - version = line.split(":", 1)[1].strip() - elif line.startswith('Description:'): - description = line.split(":", 1)[1].strip() - elif description and line.startswith(' '): - description += line[:-1] - elif len(line) <= 1: - d = description.split(' ', 3) - if len(d) > 3: - # Get rid of annoying "version" and package repeating strings - if d[1] == 'version': - description = d[3] - if description.startswith('gitAUTOINC'): - description = description.split(' ', 1)[1] - yield package, version, description.strip() - package = None + if line.startswith('Version:'): + version = line.split(":",1)[1].strip() + elif line.startswith('Description:'): + description = line.split(":",1)[1].strip() + elif description and line.startswith(' '): + description += line[:-1] + elif len(line) <= 1: + d = description.split(' ',3) + if len(d) > 3: + # Get rid of annoying "version" and package repeating strings + if d[1] == 'version': + description = d[3] + if description.startswith('gitAUTOINC'): + description = description.split(' ',1)[1] + yield package, version, description.strip() + package = None except IOError: pass def listsDirPath(): try: - for line in open('/etc/opkg/opkg.conf', "r"): - if line.startswith('option'): - line = line.split(' ', 2) - if len(line) > 2 and line[1] == ('lists_dir'): - return line[2].strip() + with open('/etc/opkg/opkg.conf', "r") as f: + for line in f: + if line.startswith('option'): + line = line.split(' ', 2) + if len(line) > 2 and line[1] == ('lists_dir'): + return line[2].strip() except Exception, ex: print "[opkg]", ex return '/var/lib/opkg/lists' diff --git a/lib/python/Components/ParentalControl.py b/lib/python/Components/ParentalControl.py index 51026d545fa..2467f74490d 100644 --- a/lib/python/Components/ParentalControl.py +++ b/lib/python/Components/ParentalControl.py @@ -203,9 +203,10 @@ def saveListToFile(self, sWhichList, vList): def openListFromFile(self, sWhichList): result = {} try: - for x in open(resolveFilename(SCOPE_CONFIG, sWhichList), 'r'): - sPlain = x.strip() - self.serviceMethodWrapper(sPlain, self.addServiceToList, result) + with open(resolveFilename(SCOPE_CONFIG, sWhichList ), 'r') as fp: + for x in fp: + sPlain = x.strip() + self.serviceMethodWrapper(sPlain, self.addServiceToList, result) except: pass return result diff --git a/lib/python/Components/PowerOffTimer.py b/lib/python/Components/PowerOffTimer.py new file mode 100644 index 00000000000..e0eda421e57 --- /dev/null +++ b/lib/python/Components/PowerOffTimer.py @@ -0,0 +1,157 @@ +from RecordTimer import RecordTimerEntry +from Screens.MessageBox import MessageBox +from Screens import Standby +from Tools import Notifications +from Components.config import config +from Components.Harddisk import internalHDDNotSleeping +from Components.Task import job_manager +from Components.Converter.ClientsStreaming import ClientsStreaming +from enigma import eTimer, eDVBLocalTimeHandler +from time import time, localtime, mktime +import math + +# format string ((Tool name, func status running)) +exceptionsExternalTools = [] + +def isExternalToolsRunning(): + for func in exceptionsExternalTools: + try: + running = func[1]() + if running: + print "[PowerOffTimer] Found exception time for %s !!!" % func[0] + return True + except Exception as e: + print "[PowerOffTimer] external tool status running error: ", e + return False + +class PowerOffTimerPoller: + def __init__(self): + self.session = None + self.wait_nextday = self.dont_currentday = False + self.poweroff_time = self.nextday_time = -1 + self.wait_nextday_time = 300 + self.doPowerOffTimer = eTimer() + self.doPowerOffTimer.callback.append(self.doPowerOffRun) + self.timeHandler = None + if config.usage.poweroff_enabled.value: + self.timeHandler = eDVBLocalTimeHandler.getInstance() + if self.timeHandler: + if self.timeHandler.ready(): + self.timeHandler = None + self.powerStateTimerChanged() + else: + self.timeHandler.m_timeUpdated.get().append(self.powerStateTimerChanged) + + def setSession(self, session=None): + if session: + self.session = session + + def getDontCurrentday(self): + return self.dont_currentday + + def powerStateTimerChanged(self, wait_nextday_time=-1, dont_currentday=False): + self.doPowerOffTimer.stop() + self.wait_nextday = False + self.dont_currentday = dont_currentday + self.poweroff_time = self.nextday_time = -1 + if wait_nextday_time != -1 and isinstance(wait_nextday_time, int): + self.wait_nextday_time = wait_nextday_time + curtime = localtime(time()) + if curtime.tm_year > 1970: + if self.timeHandler: + self.timeHandler.m_timeUpdated.get().remove(self.powerStateTimerChanged) + self.timeHandler = None + if config.usage.poweroff_enabled.value: + self.poweroff_time, self.nextday_time = self.isNextPoweroffTime() + time_wait = math.trunc(self.poweroff_time - time()) + if self.poweroff_time != -1 and time_wait >= 0: + print "[PowerOffTimer] Start power off timer (poweroff_time=%s, nextday_time=%s, time_wait=%s sec)" % (self.poweroff_time, self.nextday_time, time_wait) + self.doPowerOffTimer.start(time_wait * 1000, True) + + def doPowerOffRun(self): + if self.session: + if self.wait_nextday: + if time() >= self.nextday_time: + print "[PowerOffTimer] Cancel waiting shutdown, over limit, set next day." + self.powerStateTimerChanged() + return + try_poweroff = True + if isExternalToolsRunning(): + try_poweroff = False + if RecordTimerEntry.wasInDeepStandby: + try_poweroff = False + if try_poweroff: + if not self.session.nav.getRecordings(): + rec_time = self.session.nav.RecordTimer.getNextRecordingTime() + if rec_time > 0 and (rec_time - time()) < 360: + try_poweroff = False + else: + try_poweroff = False + if try_poweroff: + jobs = len(job_manager.getPendingJobs()) + if Standby.inStandby is None: + if not config.usage.poweroff_force.value: + try_poweroff = False + elif jobs or self.session.screen["TunerInfo"].tuner_use_mask or internalHDDNotSleeping(): + try_poweroff = False + if try_poweroff: + if Standby.inStandby is None: + reason = _("Power off timer") + '\n\n' + if jobs: + if jobs == 1: + job = job_manager.getPendingJobs()[0] + reason += "%s: %s (%d%%)\n" % (job.getStatustext(), job.name, int(100*job.progress/float(job.end))) + else: + reason += (ngettext("%d job is running in the background!", "%d jobs are running in the background!", jobs) % jobs) + '\n' + if self.session.nav.getClientsStreaming(): + clients = ClientsStreaming("SHORT_ALL") + reason += clients.getText() + '\n' + self.session.openWithCallback(self.doPowerOffAnswer, MessageBox, reason + _("Really shutdown now?"), type = MessageBox.TYPE_YESNO, timeout = 180) + else: + self.doPowerOffAnswer(True) + else: + print "[PowerOffTimer] Don't shutdown, box in use. Wait 5 min..." + self.doPowerOffTimer.start(self.wait_nextday_time * 1000, True) + self.wait_nextday = True + + def doPowerOffAnswer(self, answer): + dont_currentday = time() > self.poweroff_time + if answer: + if not Standby.inTryQuitMainloop: + print "[PowerOffTimer] Goto auto shutdown box." + if Standby.inStandby: + RecordTimerEntry.TryQuitMainloop() + else: + Notifications.AddNotificationWithID("Shutdown", Standby.TryQuitMainloop, 1) + self.powerStateTimerChanged(dont_currentday=dont_currentday) + else: + print "[PowerOffTimer] Shutdown canceled by the user (dont_currentday=%s)" % dont_currentday + self.powerStateTimerChanged(dont_currentday=dont_currentday) + + def isNextPoweroffTime(self): + if config.usage.poweroff_enabled.value: + poweroff_day, poweroff_time, nextday_time = self.PoweroffDayTimeOfWeek() + if poweroff_day == -1: + return -1, -1 + elif poweroff_day == 0: + return poweroff_time, nextday_time + return poweroff_time + (86400 * poweroff_day), nextday_time + return -1, -1 + + def PoweroffDayTimeOfWeek(self): + now = localtime() + current_day = int(now.tm_wday) + if current_day >= 0: + if not self.dont_currentday and config.usage.poweroff_day[current_day].value: + nextday_time = (int(mktime((now.tm_year, now.tm_mon, now.tm_mday, config.usage.poweroff_nextday.value[0], config.usage.poweroff_nextday.value[1], 0, now.tm_wday, now.tm_yday, now.tm_isdst)))) + 86400 + poweroff_time = int(mktime((now.tm_year, now.tm_mon, now.tm_mday, config.usage.poweroff_time[current_day].value[0], config.usage.poweroff_time[current_day].value[1], 0, now.tm_wday, now.tm_yday, now.tm_isdst))) + if poweroff_time > time() and nextday_time > poweroff_time: + return 0, poweroff_time, nextday_time + for i in range(1,8): + if config.usage.poweroff_day[(current_day+i)%7].value: + nextday_time = (int(mktime((now.tm_year, now.tm_mon, now.tm_mday, config.usage.poweroff_nextday.value[0], config.usage.poweroff_nextday.value[1], 0, now.tm_wday, now.tm_yday, now.tm_isdst)))) + 86400 + (86400 * i) + poweroff_time = int(mktime((now.tm_year, now.tm_mon, now.tm_mday, config.usage.poweroff_time[(current_day+i)%7].value[0], config.usage.poweroff_time[(current_day+i)%7].value[1], 0, now.tm_wday, now.tm_yday, now.tm_isdst))) + return i, poweroff_time, nextday_time + return -1, None, -1 + +powerOffTimer = PowerOffTimerPoller() diff --git a/lib/python/Components/RcModel.py b/lib/python/Components/RcModel.py index 1316d8f2024..502925cce4f 100644 --- a/lib/python/Components/RcModel.py +++ b/lib/python/Components/RcModel.py @@ -2,7 +2,6 @@ from Tools.HardwareInfo import HardwareInfo from Tools.Directories import SCOPE_SKIN, resolveFilename - class RcModel: RcModels = {} @@ -10,10 +9,12 @@ def __init__(self): self.model = HardwareInfo().get_device_model() # cfg files has modelname rcname entries. # modelname is boxname optionally followed by .rctype - for line in open((resolveFilename(SCOPE_SKIN, 'rc_models/rc_models.cfg')), 'r'): - if line.startswith(self.model): - m, r = line.strip().split() - self.RcModels[m] = r + if os.path.exists(resolveFilename(SCOPE_SKIN, 'rc_models/rc_models.cfg')): + with open(resolveFilename(SCOPE_SKIN, 'rc_models/rc_models.cfg'), 'r') as fp: + for line in fp: + if line.startswith(self.model): + m, r = line.strip().split() + self.RcModels[m] = r def rcIsDefault(self): # Default RC can only happen with DMM type remote controls... @@ -22,8 +23,9 @@ def rcIsDefault(self): def getRcFile(self, ext): # check for rc/type every time so rctype changes will be noticed if os.path.exists('/proc/stb/ir/rc/type'): - rc = open('/proc/stb/ir/rc/type').read().strip() - modeltype = '%s.%s' % (self.model, rc) + with open('/proc/stb/ir/rc/type') as fp: + rc = fp.read().strip() + modeltype = '%s.%s' % (self.model, rc) else: modeltype = None @@ -44,5 +46,4 @@ def getRcImg(self): def getRcPositions(self): return self.getRcFile('xml') - rc_model = RcModel() diff --git a/lib/python/Components/Renderer/CiModuleControl.py b/lib/python/Components/Renderer/CiModuleControl.py index b86182cd354..9160ff76fad 100644 --- a/lib/python/Components/Renderer/CiModuleControl.py +++ b/lib/python/Components/Renderer/CiModuleControl.py @@ -44,7 +44,7 @@ def changed(self, what): add_num = True if string: string += " " - if state != -1: + if state not in (-1, 3): if state == 0: if not self.allVisible: string += "" diff --git a/lib/python/Components/Renderer/FrontpanelLed.py b/lib/python/Components/Renderer/FrontpanelLed.py index ef10ae8fe61..5e12253d884 100644 --- a/lib/python/Components/Renderer/FrontpanelLed.py +++ b/lib/python/Components/Renderer/FrontpanelLed.py @@ -1,43 +1,15 @@ from Components.Element import Element +from Tools.Directories import fileExists +from Components.config import config # this is not a GUI renderer. -# | two leds | single led | -# recordstate standby red green -# false false off on off -# true false blnk on blnk -# false true on off off -# true true blnk off blnk -PATTERN_ON = (20, 0xffffffff, 0xffffffff) -PATTERN_OFF = (20, 0, 0) -PATTERN_BLINK = (20, 0x55555555, 0xa7fccf7a) - - -class LedPatterns(): - def __init__(self): - self.__led0_patterns = [PATTERN_OFF, PATTERN_BLINK, PATTERN_ON, PATTERN_BLINK] - self.__led1_patterns = [PATTERN_ON, PATTERN_ON, PATTERN_OFF, PATTERN_OFF] - - def setLedPatterns(self, which, patterns): - if which == 0: - self.__led0_patterns = patterns - else: - self.__led1_patterns = patterns - - def getLedPatterns(self, which): - if which == 0: - return self.__led0_patterns - return self.__led1_patterns - - -ledPatterns = LedPatterns() - class FrontpanelLed(Element): - def __init__(self, which=0, patterns=[PATTERN_ON, PATTERN_BLINK], boolean=True, get_patterns=None): + def __init__(self, which=0, patterns=[(20, 0, 0xffffffff), (20, 0x55555555, 0x84fc8c04)], boolean=True): self.which = which self.boolean = boolean - self.patterns = get_patterns if get_patterns else patterns + self.patterns = patterns Element.__init__(self) def changed(self, *args, **kwargs): @@ -46,19 +18,34 @@ def changed(self, *args, **kwargs): else: val = self.source.value - (speed, pattern, pattern_4bit) = self.patterns[val] if self.patterns != True else ledPatterns.getLedPatterns(self.which)[val] - - try: - open("/proc/stb/fp/led%d_pattern" % self.which, "w").write("%08x" % pattern) - except IOError: - pass - if self.which == 0: + (speed, pattern, pattern_4bit) = self.patterns[val] + speed = int(config.usage.frontled_speed.value) + if fileExists("/proc/stb/fp/led%d_pattern" % self.which): try: - open("/proc/stb/fp/led_set_pattern", "w").write("%08x" % pattern_4bit) - open("/proc/stb/fp/led_set_speed", "w").write("%d" % speed) - except IOError: - pass - try: - open("/proc/stb/fp/led_pattern_speed", "w").write("%d" % speed) - except IOError: + f = open("/proc/stb/fp/led%d_pattern" % self.which, "w") + f.write("%08x" % pattern) + f.close() + except: pass + if self.which == 0: + if fileExists("/proc/stb/fp/led_set_pattern"): + try: + f = open("/proc/stb/fp/led_set_pattern", "w") + f.write("%08x" % pattern_4bit) + f.close() + except: + pass + if fileExists("/proc/stb/fp/led_set_speed"): + try: + f = open("/proc/stb/fp/led_set_speed", "w") + f.write("%d" % speed) + f.close() + except: + pass + if fileExists("/proc/stb/fp/led_pattern_speed"): + try: + f = open("/proc/stb/fp/led_pattern_speed", "w") + f.write("%d" % speed) + f.close() + except: + pass diff --git a/lib/python/Components/Sensors.py b/lib/python/Components/Sensors.py index e7206619c25..1f69e86ba37 100644 --- a/lib/python/Components/Sensors.py +++ b/lib/python/Components/Sensors.py @@ -41,7 +41,8 @@ def getSensorValue(self, sensorid): value = -1 sensor = self.sensors_list[sensorid] if sensor[0] == self.TYPE_TEMPERATURE: - value = int(open("%s/value" % sensor[3], "r").readline().strip()) + with open("%s/value" % sensor[3], "r") as fp: + value = int(fp.readline().strip()) elif sensor[0] == self.TYPE_FAN_RPM: value = fancontrol.getFanSpeed(sensor[3]) return value @@ -54,8 +55,10 @@ def addSensors(self): if os.path.exists("/proc/stb/sensors"): for dirname in os.listdir("/proc/stb/sensors"): if dirname.find("temp", 0, 4) == 0: - name = open("/proc/stb/sensors/%s/name" % dirname, "r").readline().strip() - unit = open("/proc/stb/sensors/%s/unit" % dirname, "r").readline().strip() + with open("/proc/stb/sensors/%s/name" % dirname, "r") as fp: + name = fp.readline().strip() + with open("/proc/stb/sensors/%s/unit" % dirname, "r") as fp: + unit = fp.readline().strip() self.sensors_list.append((self.TYPE_TEMPERATURE, name, unit, "/proc/stb/sensors/%s" % dirname)) for fanid in range(fancontrol.getFanCount()): if fancontrol.hasRPMSensor(fanid): diff --git a/lib/python/Components/Sources/EventInfo.py b/lib/python/Components/Sources/EventInfo.py index 965e8c94bd3..e15815d5b36 100644 --- a/lib/python/Components/Sources/EventInfo.py +++ b/lib/python/Components/Sources/EventInfo.py @@ -1,3 +1,5 @@ +from time import time + from Components.PerServiceDisplay import PerServiceBase from Components.Element import cached from enigma import iPlayableService, iServiceInformation, eServiceReference, eEPGCache @@ -9,7 +11,7 @@ class pServiceEvent(object): NOW = 0 NEXT = 1 - def __init__(self, info, now_or_next): + def __init__(self, info, now_or_next, service): self.now_or_next = now_or_next self.m_EventNameNow = "" @@ -18,6 +20,8 @@ def __init__(self, info, now_or_next): self.m_ShortDescriptionNext = "" self.m_ExtendedDescriptionNow = "" self.m_ExtendedDescriptionNext = "" + self.m_Duration = 0 + self.m_Begin = time() sTagTitle = info.getInfoString(iServiceInformation.sTagTitle) if sTagTitle: @@ -47,6 +51,15 @@ def __init__(self, info, now_or_next): element6 = sTagLocation self.m_ExtendedDescriptionNow += "\n\n" + element6 + seek = service and service.seek() + if seek: + length = seek.getLength() + if length[0] == 0: + self.m_Duration = length[1] / 90000 + position = seek.getPlayPosition() + if position[0] == 0: + self.m_Begin = time() - position[1] / 90000 + def getEventName(self): return self.m_EventNameNow if self.now_or_next == self.NOW else self.m_EventNameNext @@ -57,13 +70,13 @@ def getExtendedDescription(self): return self.m_ExtendedDescriptionNow if self.now_or_next == self.NOW else self.m_ExtendedDescriptionNext def getBeginTime(self): - return 0 + return self.m_Begin if self.now_or_next == self.NOW else 0 def getEndTime(self): return 0 def getDuration(self): - return 0 + return self.m_Duration if self.now_or_next == self.NOW else 0 def getEventId(self): return 0 @@ -108,6 +121,7 @@ def __init__(self, navcore, now_or_next): PerServiceBase.__init__(self, navcore, { iPlayableService.evStart: self.gotEvent, + iPlayableService.evUpdatedInfo: self.gotEvent, iPlayableService.evUpdatedEventInfo: self.gotEvent, iPlayableService.evEnd: self.gotEvent }, with_event=True) @@ -124,7 +138,7 @@ def getEvent(self): refstr = info.getInfoString(iServiceInformation.sServiceref) ret = self.epgQuery(eServiceReference(refstr), -1, self.now_or_next and 1 or 0) if not ret and refstr.split(':')[0] in ['4097', '5001', '5002', '5003']: # No EPG Try to get Meta - ev = pServiceEvent(info, self.now_or_next) + ev = pServiceEvent(info, self.now_or_next, service) if ev.getEventName: return ev return ret diff --git a/lib/python/Components/Sources/RecordState.py b/lib/python/Components/Sources/RecordState.py index 2a459f90e9d..3ba16482e94 100644 --- a/lib/python/Components/Sources/RecordState.py +++ b/lib/python/Components/Sources/RecordState.py @@ -17,7 +17,8 @@ def gotRecordEvent(self, service, event): if event in (iRecordableService.evEnd, iRecordableService.evStart, None): recs = self.session.nav.getRecordings() if SystemInfo["LCDsymbol_circle_recording"]: - open(SystemInfo["LCDsymbol_circle_recording"], "w").write(recs and "1" or "0") + with open(SystemInfo["LCDsymbol_circle_recording"], "w") as fp: + fp.write(recs and "1" or "0") self.records_running = len(recs) if self.records_running != prev_records: self.changed((self.CHANGED_ALL,)) diff --git a/lib/python/Components/SystemInfo.py b/lib/python/Components/SystemInfo.py index 4bc9383f223..0c3f1141694 100644 --- a/lib/python/Components/SystemInfo.py +++ b/lib/python/Components/SystemInfo.py @@ -3,6 +3,7 @@ from enigma import Misc_Options, eDVBCIInterfaces, eDVBResourceManager, eGetEnigmaDebugLvl from Tools.Directories import SCOPE_PLUGINS, fileCheck, fileExists, fileHas, pathExists, resolveFilename from Tools.HardwareInfo import HardwareInfo +from boxbranding import getBoxBrand SystemInfo = {} @@ -14,26 +15,22 @@ cmdline = fd.read() cmdline = {k: v.strip('"') for k, v in re.findall(r'(\S+)=(".*?"|\S+)', cmdline)} - def getNumVideoDecoders(): numVideoDecoders = 0 while fileExists("/dev/dvb/adapter0/video%d" % numVideoDecoders, "f"): numVideoDecoders += 1 return numVideoDecoders - def countFrontpanelLEDs(): numLeds = fileExists("/proc/stb/fp/led_set_pattern") and 1 or 0 while fileExists("/proc/stb/fp/led%d_pattern" % numLeds): numLeds += 1 return numLeds - def hassoftcaminstalled(): from Tools.camcontrol import CamControl return len(CamControl("softcam").getList()) > 1 - def getBootdevice(): dev = ("root" in cmdline and cmdline["root"].startswith("/dev/")) and cmdline["root"][5:] while dev and not fileExists("/sys/block/%s" % dev): @@ -42,6 +39,7 @@ def getBootdevice(): model = HardwareInfo().get_device_model() +SystemInfo["RecoveryMode"] = fileCheck("/proc/stb/fp/boot_mode") SystemInfo["InDebugMode"] = eGetEnigmaDebugLvl() >= 4 SystemInfo["CommonInterface"] = model in ("h9combo", "h9combose", "h10","pulse4kmini") and 1 or eDVBCIInterfaces.getInstance().getNumOfSlots() SystemInfo["CommonInterfaceCIDelay"] = fileCheck("/proc/stb/tsmux/rmx_delay") @@ -54,6 +52,8 @@ def getBootdevice(): SystemInfo["CanMeasureFrontendInputPower"] = eDVBResourceManager.getInstance().canMeasureFrontendInputPower() SystemInfo["12V_Output"] = Misc_Options.getInstance().detected_12V_output() SystemInfo["ZapMode"] = fileCheck("/proc/stb/video/zapmode") or fileCheck("/proc/stb/video/zapping_mode") +SystemInfo["ISDREAMBOX"] = getBoxBrand() in ("dreambox",) +SystemInfo["HaveTouchSensor"] = model in ("dm520", "dm525", "dm900", "dm920") SystemInfo["NumFrontpanelLEDs"] = countFrontpanelLEDs() SystemInfo["FrontpanelDisplay"] = fileExists("/dev/dbox/oled0") or fileExists("/dev/dbox/lcd0") SystemInfo["LCDsymbol_circle_recording"] = fileCheck("/proc/stb/lcd/symbol_circle") or model in ("hd51", "vs1500") and fileCheck("/proc/stb/lcd/symbol_recording") @@ -91,9 +91,10 @@ def getBootdevice(): SystemInfo["3DMode"] = fileCheck("/proc/stb/fb/3dmode") or fileCheck("/proc/stb/fb/primary/3d") SystemInfo["3DZNorm"] = fileCheck("/proc/stb/fb/znorm") or fileCheck("/proc/stb/fb/primary/zoffset") SystemInfo["Blindscan_t2_available"] = fileCheck("/proc/stb/info/vumodel") and model.startswith("vu") -SystemInfo["RcTypeChangable"] = not (model.startswith("et8500") or model.startswith("et7")) and pathExists("/proc/stb/ir/rc/type") +SystemInfo["RcTypeChangable"] = not (model in ("gbquad4k", "gbue4k", "et8500") or model.startswith("et7")) and pathExists("/proc/stb/ir/rc/type") SystemInfo["HasFullHDSkinSupport"] = model not in ("et4000", "et5000", "sh1", "hd500c", "hd1100", "xp1000", "lc") SystemInfo["HasBypassEdidChecking"] = fileCheck("/proc/stb/hdmi/bypass_edid_checking") +SystemInfo["HasMultichannelPCM"] = fileCheck("/proc/stb/audio/multichannel_pcm") SystemInfo["HasMMC"] = "root" in cmdline and cmdline["root"].startswith("/dev/mmcblk") SystemInfo["HasColorspace"] = fileCheck("/proc/stb/video/hdmi_colorspace") SystemInfo["HasColorspaceSimple"] = SystemInfo["HasColorspace"] and SystemInfo["HasMMC"] and SystemInfo["Blindscan_t2_available"] @@ -109,41 +110,40 @@ def getBootdevice(): SystemInfo["HasHdrType"] = fileCheck("/proc/stb/video/hdmi_hdrtype") SystemInfo["HasScaler_sharpness"] = pathExists("/proc/stb/vmpeg/0/pep_scaler_sharpness") SystemInfo["HasHDMIin"] = model in ("vuduo4k", "vuduo4kse", "vuultimo4k", "vuuno4kse", "gbquad4k", "hd2400", "et10000") +SystemInfo["DMHDMI"] = model in ("dm7080", "dm820", "dm900", "dm920", "dreamone", "dreamtwo") SystemInfo["HasHDMI-CEC"] = HardwareInfo().has_hdmi() and fileExists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/HdmiCEC/plugin.pyo")) and (fileExists("/dev/cec0") or fileExists("/dev/hdmi_cec") or fileExists("/dev/misc/hdmi_cec0")) SystemInfo["HasYPbPr"] = model in ("dm8000", "et5000", "et6000", "et6500", "et9000", "et9200", "et9500", "et10000", "formuler1", "mbtwinplus", "spycat", "vusolo", "vuduo", "vuduo2", "vuultimo") -SystemInfo["HasScart"] = model in ("dm8000", "et4000", "et6500", "et8000", "et9000", "et9200", "et9500", "et10000", "formuler1", "hd1100", "hd1200", "hd1265", "hd2400", "vusolo", "vusolo2", "vuduo", "vuduo2", "vuultimo", "vuuno", "xp1000") +SystemInfo["HasScart"] = model in ("dm7020hd", "dm7020hdv2", "dm500hd", "dm800", "dm800se", "dm800sev2", "dm8000", "et4000", "et6500", "et8000", "et9000", "et9200", "et9500", "et10000", "formuler1", "hd1100", "hd1200", "hd1265", "hd2400", "vusolo", "vusolo2", "vuduo", "vuduo2", "vuultimo", "vuuno", "xp1000") SystemInfo["HasSVideo"] = model in ("dm8000") -SystemInfo["HasComposite"] = model not in ("i55", "gbquad4k", "gbue4k", "hd1500", "osnino", "osninoplus", "purehd", "purehdse", "revo4k", "vusolo4k", "vuzero4k", "vuduo4k", "vuduo4kse", "vuuno4k", "vuuno4kse", "vuultimo4k") +SystemInfo["HasComposite"] = model not in ("dm900", "dm920", "i55", "gbquad4k", "gbue4k", "hd1500", "osnino", "osninoplus", "purehd", "purehdse", "revo4k", "vusolo4k", "vuzero4k", "vuduo4k", "vuduo4kse", "vuuno4k", "vuuno4kse", "vuultimo4k") +SystemInfo["HasAutoVolume"] = fileExists("/proc/stb/audio/avl_choices") and fileCheck("/proc/stb/audio/avl") +SystemInfo["HasAutoVolumeLevel"] = fileExists("/proc/stb/audio/autovolumelevel_choices") and fileCheck("/proc/stb/audio/autovolumelevel") +SystemInfo["Has3DSurround"] = fileExists("/proc/stb/audio/3d_surround_choices") and fileCheck("/proc/stb/audio/3d_surround") +SystemInfo["Has3DSpeaker"] = fileExists("/proc/stb/audio/3d_surround_speaker_position_choices") and fileCheck("/proc/stb/audio/3d_surround_speaker_position") +SystemInfo["Has3DSurroundSpeaker"] = fileExists("/proc/stb/audio/3dsurround_choices") and fileCheck("/proc/stb/audio/3dsurround") +SystemInfo["Has3DSurroundSoftLimiter"] = fileExists("/proc/stb/audio/3dsurround_softlimiter_choices") and fileCheck("/proc/stb/audio/3dsurround_softlimiter") SystemInfo["hasXcoreVFD"] = model in ("osmega", "spycat4k", "spycat4kmini", "spycat4kcombo") and fileCheck("/sys/module/brcmstb_%s/parameters/pt6302_cgram" % model) SystemInfo["HasOfflineDecoding"] = model not in ("osmini", "osminiplus", "et7000mini", "et11000", "mbmicro", "mbtwinplus", "mbmicrov2", "et7000", "et8500") +SystemInfo["hasKexec"] = fileHas("/proc/cmdline", "kexec=1") SystemInfo["MultibootStartupDevice"] = getMultibootStartupDevice() SystemInfo["canMode12"] = "%s_4.boxmode" % model in cmdline and cmdline["%s_4.boxmode" % model] in ("1", "12") and "192M" SystemInfo["canMultiBoot"] = getMultibootslots() SystemInfo["canDualBoot"] = fileExists("/dev/block/by-name/flag") SystemInfo["canFlashWithOfgwrite"] = not(model.startswith("dm")) SystemInfo["HDRSupport"] = fileExists("/proc/stb/hdmi/hlg_support_choices") and fileCheck("/proc/stb/hdmi/hlg_support") -SystemInfo["CanProc"] = SystemInfo["HasMMC"] and not SystemInfo["Blindscan_t2_available"] -SystemInfo["HasMultichannelPCM"] = fileCheck("/proc/stb/audio/multichannel_pcm") -SystemInfo["HasAutoVolume"] = fileExists("/proc/stb/audio/avl_choices") and fileCheck("/proc/stb/audio/avl") -SystemInfo["HasAutoVolumeLevel"] = fileExists("/proc/stb/audio/autovolumelevel_choices") and fileCheck("/proc/stb/audio/autovolumelevel") -SystemInfo["Has3DSurround"] = fileExists("/proc/stb/audio/3d_surround_choices") and fileCheck("/proc/stb/audio/3d_surround") -SystemInfo["Has3DSpeaker"] = fileExists("/proc/stb/audio/3d_surround_speaker_position_choices") and fileCheck("/proc/stb/audio/3d_surround_speaker_position") -SystemInfo["Has3DSurroundSpeaker"] = fileExists("/proc/stb/audio/3dsurround_choices") and fileCheck("/proc/stb/audio/3dsurround") -SystemInfo["Has3DSurroundSoftLimiter"] = fileExists("/proc/stb/audio/3dsurround_softlimiter_choices") and fileCheck("/proc/stb/audio/3dsurround_softlimiter") +SystemInfo["DreamBoxAudio"] = model in ("dm7080", "dm820", 'dm900', 'dm920', 'dreamone', 'dreamtwo') SystemInfo["CanDownmixAC3"] = fileHas("/proc/stb/audio/ac3_choices", "downmix") +SystemInfo["CanAC3plusTranscode"] = fileExists("/proc/stb/audio/ac3plus_choices") SystemInfo["CanDownmixDTS"] = fileHas("/proc/stb/audio/dts_choices", "downmix") +SystemInfo["CanWMAPRO"] = fileExists("/proc/stb/audio/wmapro") SystemInfo["CanDownmixAAC"] = fileHas("/proc/stb/audio/aac_choices", "downmix") +SystemInfo["CanDTSHD"] = fileExists("/proc/stb/audio/dtshd_choices") SystemInfo["HDMIAudioSource"] = fileCheck("/proc/stb/hdmi/audio_source") -SystemInfo["CanAC3Transcode"] = fileHas("/proc/stb/audio/ac3plus_choices", "force_ac3") -SystemInfo["CanDTSHD"] = fileHas("/proc/stb/audio/dtshd_choices", "downmix") -SystemInfo["CanDownmixAACPlus"] = fileHas("/proc/stb/audio/aacplus_choices", "downmix") -SystemInfo["CanAACTranscode"] = fileHas("/proc/stb/audio/aac_transcode_choices", "off") -SystemInfo["CanWMAPRO"] = fileHas("/proc/stb/audio/wmapro_choices", "downmix") -SystemInfo["CanBTAudio"] = fileHas("/proc/stb/audio/btaudio_choices", "off") -SystemInfo["CanBTAudioDelay"] = fileCheck("/proc/stb/audio/btaudio_delay") or fileCheck("/proc/stb/audio/btaudio_delay_pcm") SystemInfo["BootDevice"] = getBootdevice() SystemInfo["FbcTunerPowerAlwaysOn"] = model in ("vusolo4k", "vuduo4k", "vuduo4kse", "vuultimo4k", "vuuno4k", "vuuno4kse") SystemInfo["HasPhysicalLoopthrough"] = ["Vuplus DVB-S NIM(AVL2108)", "GIGA DVB-S2 NIM (Internal)"] +if model in ("et7500", "et8500"): + SystemInfo["HasPhysicalLoopthrough"].append("AVL6211") SystemInfo["HasFBCtuner"] = ["Vuplus DVB-C NIM(BCM3158)", "Vuplus DVB-C NIM(BCM3148)", "Vuplus DVB-S NIM(7376 FBC)", "Vuplus DVB-S NIM(45308X FBC)", "Vuplus DVB-S NIM(45208 FBC)", "DVB-S2 NIM(45208 FBC)", "DVB-S2X NIM(45308X FBC)", "DVB-S2 NIM(45308 FBC)", "DVB-C NIM(3128 FBC)", "BCM45208", "BCM45308X", "BCM3158"] SystemInfo["HasHiSi"] = pathExists("/proc/hisi") SystemInfo["FCCactive"] = False diff --git a/lib/python/Components/Timezones.py b/lib/python/Components/Timezones.py index bcb11a99fae..3acbce679a9 100644 --- a/lib/python/Components/Timezones.py +++ b/lib/python/Components/Timezones.py @@ -45,13 +45,10 @@ # DEFAULT_AREA = "Classic" # Use the classic time zone based list of time zones. # DEFAULT_AREA = "Australia" # Beyonwiz DEFAULT_AREA = "Europe" # OpenATV, OpenPLi, OpenViX -DEFAULT_ZONE = "Amsterdam" # OpenPLi -# DEFAULT_ZONE = "Berlin" # OpenATV -# DEFAULT_ZONE = "London" # OpenViX -TIMEZONE_FILE = "/etc/timezone.xml" # This should be SCOPE_TIMEZONES_FILE! This file moves arond the filesystem!!! :( +DEFAULT_ZONE = "Athens" # OpenPLi +TIMEZONE_FILE = "/usr/share/enigma2/timezone.xml" # This should be SCOPE_TIMEZONES_FILE! This file moves arond the filesystem!!! :( TIMEZONE_DATA = "/usr/share/zoneinfo/" # This should be SCOPE_TIMEZONES_DATA! - def InitTimeZones(): config.timezone = ConfigSubsection() config.timezone.area = ConfigSelection(default=DEFAULT_AREA, choices=timezones.getTimezoneAreaList()) diff --git a/lib/python/Components/UsageConfig.py b/lib/python/Components/UsageConfig.py index 8afe63444f2..005f5d5443f 100644 --- a/lib/python/Components/UsageConfig.py +++ b/lib/python/Components/UsageConfig.py @@ -5,7 +5,6 @@ from enigma import setTunerTypePriorityOrder, setPreferredTuner, setSpinnerOnOff, setEnableTtCachingOnOff, eEnv, eDVBDB, Misc_Options, eBackgroundFileEraser, eServiceEvent, eDVBLocalTimeHandler, eEPGCache from Components.About import GetIPsFromNetworkInterfaces from Components.NimManager import nimmanager -from Components.Renderer.FrontpanelLed import ledPatterns, PATTERN_ON, PATTERN_OFF, PATTERN_BLINK from Components.ServiceList import refreshServiceList from SystemInfo import SystemInfo import os @@ -16,6 +15,20 @@ visuallyImpairedCommentary = "NAR qad" +def leaveStandby(): + if not config.usage.powerLED.value: + with open(SystemInfo["PowerLED"], "w") as fp: + fp.write("0") + + +def standbyCounterChanged(dummy): + from Screens.Standby import inStandby + inStandby.onClose.append(leaveStandby) + if not config.usage.standbyLED.value: + with open(SystemInfo["StandbyLED"], "w") as fp: + fp.write("0") + + def InitUsageConfig(): config.usage = ConfigSubsection() config.usage.subnetwork = ConfigYesNo(default=True) @@ -143,7 +156,7 @@ def alternativeNumberModeChange(configElement): config.usage.leave_movieplayer_onExit = ConfigSelection(default="popup", choices=[ ("no", _("no")), ("popup", _("With popup")), ("without popup", _("Without popup")), ("movielist", _("Return to movie list"))]) - config.usage.setup_level = ConfigSelection(default="simple", choices=[ + config.usage.setup_level = ConfigSelection(default="expert", choices=[ ("simple", _("Normal")), ("intermediate", _("Advanced")), ("expert", _("Expert"))]) @@ -164,6 +177,15 @@ def alternativeNumberModeChange(configElement): config.usage.wakeup_day[i] = ConfigEnableDisable(default=False) config.usage.wakeup_time[i] = ConfigClock(default=((6 * 60 + 0) * 60)) + config.usage.poweroff_enabled = ConfigYesNo(default=False) + config.usage.poweroff_force = ConfigYesNo(default=False) + config.usage.poweroff_nextday = ConfigClock(default = ((6 * 60 + 0) * 60)) + config.usage.poweroff_day = ConfigSubDict() + config.usage.poweroff_time = ConfigSubDict() + for i in range(7): + config.usage.poweroff_day[i] = ConfigEnableDisable(default=False) + config.usage.poweroff_time[i] = ConfigClock(default = ((1 * 60 + 0) * 60)) + choicelist = [("0", _("Do nothing"))] for i in range(3600, 21601, 3600): h = abs(i / 3600) @@ -271,7 +293,7 @@ def remote_fallback_changed(configElement): preferredTunerChoicesUpdate() - config.misc.disable_background_scan = ConfigYesNo(default=False) + config.misc.disable_background_scan = ConfigYesNo(default=True) config.misc.use_ci_assignment = ConfigYesNo(default=False) config.usage.show_event_progress_in_servicelist = ConfigSelection(default='barright', choices=[ ('barleft', _("Progress bar left")), @@ -298,6 +320,177 @@ def remote_fallback_changed(configElement): config.usage.swap_snr_on_osd = ConfigYesNo(default=False) + config.usage.frontled_color = ConfigSelection(default = "1", choices = [("0", _("Off")), ("1", _("Blue")), ("2", _("Red")), ("3", _("Blinking blue")), ("4", _("Blinking red"))]) + config.usage.frontledrec_color = ConfigSelection(default = "3", choices = [("0", _("Off")), ("1", _("Blue")), ("2", _("Red")), ("3", _("Blinking blue")), ("4", _("Blinking red"))]) + config.usage.frontledstdby_color = ConfigSelection(default = "0", choices = [("0", _("Off")), ("1", _("Blue")), ("2", _("Red")), ("3", _("Blinking blue")), ("4", _("Blinking red"))]) + config.usage.frontledrecstdby_color = ConfigSelection(default = "3", choices = [("0", _("Off")), ("1", _("Blue")), ("2", _("Red")), ("3", _("Blinking blue")), ("4", _("Blinking red"))]) + config.usage.frontled_speed = ConfigInteger(default=20, limits=(1, 99)) + + config.usage.tt_res = ConfigSelection(default = "TTF_FHD", choices=[("X11_SD", _("Fixed X11 font (SD)")), ("TTF_SD", _("TrueType font (SD)")), ("TTF_HD", _("TrueType font (HD)")), ("TTF_FHD", _("TrueType font (full-HD)")), ("EXP_MODE", _("Expert mode"))]) + config.usage.tuxtxt_UseTTF = ConfigSelection(default="1", choices=[("0", "0"), ("1", "1")]) + config.usage.tuxtxt_TTFBold = ConfigSelection(default="0", choices=[("0", "0"), ("1", "1")]) + config.usage.tuxtxt_TTFScreenResX = ConfigSelection(default="1920", choices=[("720", "720"), ("1280", "1280"), ("1920", "1920")]) + config.usage.tuxtxt_StartX = ConfigInteger(default=140, limits=(0, 200)) + config.usage.tuxtxt_EndX = ConfigInteger(default=1780, limits=(500, 1920)) + config.usage.tuxtxt_StartY = ConfigInteger(default=52, limits=(0, 200)) + config.usage.tuxtxt_EndY = ConfigInteger(default=1027, limits=(400, 1080)) + config.usage.tuxtxt_TTFShiftY = ConfigSelection(default="-6", choices=[("-9", "-9"), ("-8", "-8"), ("-7", "-7"), ("-6", "-6"), ("-5", "-5"), ("-4", "-4"), ("-3", "-3"), ("-2", "-2"), ("-1", "-1"), ("0", "0"), ("1", "1"), ("2", "2"), ("3", "3"), ("4", "4"), ("5", "5"), ("6", "6"), ("7", "7"), ("8", "8"), ("9", "9")]) + config.usage.tuxtxt_TTFShiftX = ConfigSelection(default="0", choices=[("-9", "-9"), ("-8", "-8"), ("-7", "-7"), ("-6", "-6"), ("-5", "-5"), ("-4", "-4"), ("-3", "-3"), ("-2", "-2"), ("-1", "-1"), ("0", "0"), ("1", "1"), ("2", "2"), ("3", "3"), ("4", "4"), ("5", "5"), ("6", "6"), ("7", "7"), ("8", "8"), ("9", "9")]) + config.usage.tuxtxt_TTFWidthFactor16 = ConfigInteger(default=26, limits=(8, 31)) + config.usage.tuxtxt_TTFHeightFactor16 = ConfigInteger(default=14, limits=(8, 31)) + config.usage.tuxtxt_CleanAlgo = ConfigInteger(default=0, limits=(0, 9)) + def TtResChanged(configElement): + try: + command = "cp -f /etc/tuxtxt/" + configElement.value + " /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to copy tuxtxt2.conf!") + config.usage.tt_res.addNotifier(TtResChanged, immediate_feedback=False) + + def UseTTFChanged(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("UseTTF", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_UseTTF.addNotifier(UseTTFChanged, immediate_feedback=False) + + def TTFBoldChanged(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("TTFBold", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_TTFBold.addNotifier(TTFBoldChanged, immediate_feedback=False) + + def TTFScreenResXChanged(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("TTFScreenResX", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_TTFScreenResX.addNotifier(TTFScreenResXChanged, immediate_feedback=False) + + def StartXChanged(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("StartX", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_StartX.addNotifier(StartXChanged, immediate_feedback=False) + + def EndXChanged(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("EndX", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_EndX.addNotifier(EndXChanged, immediate_feedback=False) + + def StartYChanged(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("StartY", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_StartY.addNotifier(StartYChanged, immediate_feedback=False) + + def EndYChanged(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("EndY", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_EndY.addNotifier(EndYChanged, immediate_feedback=False) + + def TTFShiftYChanged(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("TTFShiftY", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_TTFShiftY.addNotifier(TTFShiftYChanged, immediate_feedback=False) + + def TTFShiftXChanged(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("TTFShiftX", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_TTFShiftX.addNotifier(TTFShiftXChanged, immediate_feedback=False) + + def TTFWidthFactor16Changed(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("TTFWidthFactor16", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_TTFWidthFactor16.addNotifier(TTFWidthFactor16Changed, immediate_feedback=False) + + def TTFHeightFactor16Changed(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("TTFHeightFactor16", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_TTFHeightFactor16.addNotifier(TTFHeightFactor16Changed, immediate_feedback=False) + + def CleanAlgoChanged(configElement): + try: + command = "sed -i -r '" + command += "s|(%s)\s+([-0-9]+)|\\1 %d|;" % ("CleanAlgo", int(configElement.value)) + command += "' %s" % "/etc/tuxtxt/EXP_MODE" + Console().ePopen(command) + command = "cp -f /etc/tuxtxt/EXP_MODE /etc/tuxtxt/tuxtxt2.conf" + Console().ePopen(command) + except: + print("Error: failed to modify tuxtxt2.conf!") + config.usage.tuxtxt_CleanAlgo.addNotifier(CleanAlgoChanged, immediate_feedback=False) + def SpinnerOnOffChanged(configElement): setSpinnerOnOff(int(configElement.value)) config.usage.show_spinner.addNotifier(SpinnerOnOffChanged) @@ -325,85 +518,96 @@ def PreferredTunerChanged(configElement): if SystemInfo["Fan"]: choicelist = [('off', _("Off")), ('on', _("On")), ('auto', _("Auto"))] if os.path.exists("/proc/stb/fp/fan_choices"): - choicelist = [x for x in choicelist if x[0] in open("/proc/stb/fp/fan_choices", "r").read().strip().split(" ")] + with open("/proc/stb/fp/fan_choices", "r") as fp: + choicelist = [x for x in choicelist if x[0] in fp.read().strip().split(" ")] config.usage.fan = ConfigSelection(choicelist) def fanChanged(configElement): - open(SystemInfo["Fan"], "w").write(configElement.value) + with open(SystemInfo["Fan"], "w") as fp: + fp.write(configElement.value) config.usage.fan.addNotifier(fanChanged) if SystemInfo["FanPWM"]: def fanSpeedChanged(configElement): - open(SystemInfo["FanPWM"], "w").write(hex(configElement.value)[2:]) + with open(SystemInfo["FanPWM"], "w") as fp: + fp.write(hex(configElement.value)[2:]) config.usage.fanspeed = ConfigSlider(default=127, increment=8, limits=(0, 255)) config.usage.fanspeed.addNotifier(fanSpeedChanged) if SystemInfo["PowerLED"]: def powerLEDChanged(configElement): - if "fp" in SystemInfo["PowerLED"]: - open(SystemInfo["PowerLED"], "w").write(configElement.value and "1" or "0") - patterns = [PATTERN_ON, PATTERN_ON, PATTERN_OFF, PATTERN_OFF] if configElement.value else [PATTERN_OFF, PATTERN_OFF, PATTERN_OFF, PATTERN_OFF] - ledPatterns.setLedPatterns(1, patterns) - else: - open(SystemInfo["PowerLED"], "w").write(configElement.value and "on" or "off") + with open(SystemInfo["PowerLED"], "w") as fs: + if "fp" in SystemInfo["PowerLED"]: + fs.write(configElement.value and "1" or "0") + else: + fs.write(configElement.value and "on" or "off") config.usage.powerLED = ConfigYesNo(default=True) config.usage.powerLED.addNotifier(powerLEDChanged) if SystemInfo["StandbyLED"]: def standbyLEDChanged(configElement): - if "fp" in SystemInfo["StandbyLED"]: - patterns = [PATTERN_OFF, PATTERN_BLINK, PATTERN_ON, PATTERN_BLINK] if configElement.value else [PATTERN_OFF, PATTERN_OFF, PATTERN_OFF, PATTERN_OFF] - ledPatterns.setLedPatterns(0, patterns) - else: - open(SystemInfo["StandbyLED"], "w").write(configElement.value and "on" or "off") + with open(SystemInfo["StandbyLED"], "w") as fp: + fp.write(configElement.value and "on" or "off") config.usage.standbyLED = ConfigYesNo(default=True) - config.usage.standbyLED.addNotifier(standbyLEDChanged) + if not "fp" in SystemInfo["StandbyLED"]: + config.usage.standbyLED.addNotifier(standbyLEDChanged) + + if SystemInfo["PowerLED"] and "fp" in SystemInfo["PowerLED"] and not config.usage.powerLED.value or (SystemInfo["StandbyLED"] and "fp" in SystemInfo["StandbyLED"] and not config.usage.standbyLED.value): + config.misc.standbyCounter.addNotifier(standbyCounterChanged, initial_call=False) if SystemInfo["SuspendLED"]: def suspendLEDChanged(configElement): - if "fp" in SystemInfo["SuspendLED"]: - open(SystemInfo["SuspendLED"], "w").write(configElement.value and "1" or "0") - else: - open(SystemInfo["SuspendLED"], "w").write(configElement.value and "on" or "off") + with open(SystemInfo["SuspendLED"], "w") as fs: + if "fp" in SystemInfo["SuspendLED"]: + fs.write(configElement.value and "1" or "0") + else: + fs.write(configElement.value and "on" or "off") config.usage.suspendLED = ConfigYesNo(default=True) config.usage.suspendLED.addNotifier(suspendLEDChanged) if SystemInfo["PowerOffDisplay"]: def powerOffDisplayChanged(configElement): - open(SystemInfo["PowerOffDisplay"], "w").write(configElement.value and "1" or "0") + with open(SystemInfo["PowerOffDisplay"], "w") as fp: + fp.write(configElement.value and "1" or "0") config.usage.powerOffDisplay = ConfigYesNo(default=True) config.usage.powerOffDisplay.addNotifier(powerOffDisplayChanged) if SystemInfo["LCDshow_symbols"]: def lcdShowSymbols(configElement): - open(SystemInfo["LCDshow_symbols"], "w").write(configElement.value and "1" or "0") + with open(SystemInfo["LCDshow_symbols"], "w") as fp: + fp.write(configElement.value and "1" or "0") config.usage.lcd_show_symbols = ConfigYesNo(default=True) config.usage.lcd_show_symbols.addNotifier(lcdShowSymbols) if SystemInfo["WakeOnLAN"]: def wakeOnLANChanged(configElement): if "fp" in SystemInfo["WakeOnLAN"]: - open(SystemInfo["WakeOnLAN"], "w").write(configElement.value and "enable" or "disable") + with open(SystemInfo["WakeOnLAN"], "w") as f: + f.write(configElement.value and "enable" or "disable") else: - open(SystemInfo["WakeOnLAN"], "w").write(configElement.value and "on" or "off") + with open(SystemInfo["WakeOnLAN"], "w") as f: + f.write(configElement.value and "on" or "off") config.usage.wakeOnLAN = ConfigYesNo(default=False) config.usage.wakeOnLAN.addNotifier(wakeOnLANChanged) if SystemInfo["hasXcoreVFD"]: def set12to8characterVFD(configElement): - open(SystemInfo["hasXcoreVFD"], "w").write(not configElement.value and "1" or "0") + with open(SystemInfo["hasXcoreVFD"], "w") as fp: + fp.write(not configElement.value and "1" or "0") config.usage.toggle12to8characterVFD = ConfigYesNo(default=False) config.usage.toggle12to8characterVFD.addNotifier(set12to8characterVFD) if SystemInfo["LcdLiveTVMode"]: def setLcdLiveTVMode(configElement): - open(SystemInfo["LcdLiveTVMode"], "w").write(configElement.value) + with open(SystemInfo["LcdLiveTVMode"], "w") as fp: + fp.write(configElement.value) config.usage.LcdLiveTVMode = ConfigSelection(default="0", choices=[str(x) for x in range(0, 9)]) config.usage.LcdLiveTVMode.addNotifier(setLcdLiveTVMode) if SystemInfo["LcdLiveDecoder"]: def setLcdLiveDecoder(configElement): - open(SystemInfo["LcdLiveDecoder"], "w").write(configElement.value) + with open(SystemInfo["LcdLiveDecoder"], "w") as fp: + fp.write(configElement.value) config.usage.LcdLiveDecoder = ConfigSelection(default="0", choices=[str(x) for x in range(0, 4)]) config.usage.LcdLiveDecoder.addNotifier(setLcdLiveDecoder) @@ -526,14 +730,22 @@ def updateEraseFlags(el): if SystemInfo["ZapMode"]: def setZapmode(el): - open(SystemInfo["ZapMode"], "w").write(el.value) + with open(SystemInfo["ZapMode"], "w") as fp: + fp.write(el.value) config.misc.zapmode = ConfigSelection(default="mute", choices=[ ("mute", _("Black screen")), ("hold", _("Hold screen")), ("mutetilllock", _("Black screen till locked")), ("holdtilllock", _("Hold till locked"))]) config.misc.zapmode.addNotifier(setZapmode, immediate_feedback=False) + if SystemInfo["ISDREAMBOX"]: + def setZapmodeDM(el): + print('[UsageConfig] >>> zapmodeDM') + config.misc.zapmodeDM = ConfigSelection(default="black", choices=[("black", _("Black screen")), ("hold", _("Hold screen"))]) + config.misc.zapmodeDM.addNotifier(setZapmodeDM, immediate_feedback = False) + if SystemInfo["VFD_scroll_repeats"]: def scroll_repeats(el): - open(SystemInfo["VFD_scroll_repeats"], "w").write(el.value) + with open(SystemInfo["VFD_scroll_repeats"], "w") as fp: + fp.write(el.value) choicelist = [] for i in range(1, 11, 1): choicelist.append((str(i))) @@ -542,7 +754,8 @@ def scroll_repeats(el): if SystemInfo["VFD_scroll_delay"]: def scroll_delay(el): - open(SystemInfo["VFD_scroll_delay"], "w").write(el.value) + with open(SystemInfo["VFD_scroll_delay"], "w") as fp: + fp.write(el.value) choicelist = [] for i in range(0, 1001, 50): choicelist.append((str(i))) @@ -551,7 +764,8 @@ def scroll_delay(el): if SystemInfo["VFD_initial_scroll_delay"]: def initial_scroll_delay(el): - open(SystemInfo["VFD_initial_scroll_delay"], "w").write(el.value) + with open(SystemInfo["VFD_initial_scroll_delay"], "w") as fp: + fp.write(el.value) choicelist = [] for i in range(0, 20001, 500): choicelist.append((str(i))) @@ -560,7 +774,8 @@ def initial_scroll_delay(el): if SystemInfo["VFD_final_scroll_delay"]: def final_scroll_delay(el): - open(SystemInfo["VFD_final_scroll_delay"], "w").write(el.value) + with open(SystemInfo["VFD_final_scroll_delay"], "w") as fp: + fp.write(el.value) choicelist = [] for i in range(0, 20001, 500): choicelist.append((str(i))) diff --git a/lib/python/Components/config.py b/lib/python/Components/config.py index ab0232f6097..ea5933eac28 100644 --- a/lib/python/Components/config.py +++ b/lib/python/Components/config.py @@ -1823,7 +1823,8 @@ def pickle(self): self.pickle_this("config", self.saved_value, result) return ''.join(result) - def unpickle(self, lines, base_file=True): + def unpickle(self, filename, base_file=True): + lines = open(filename, "r") tree = {} configbase = tree.setdefault("config", {}) for l in lines: @@ -1852,6 +1853,7 @@ def unpickle(self, lines, base_file=True): configEntry.value = val except (SyntaxError, KeyError): pass + lines.close() # we inherit from ConfigSubsection, so ... # object.__setattr__(self, "saved_value", tree["config"]) @@ -1872,7 +1874,10 @@ def saveToFile(self, filename): print "Config: Couldn't write %s" % filename def loadFromFile(self, filename, base_file=True): - self.unpickle(open(filename, "r"), base_file) + if os.path.isfile(filename): + self.unpickle(filename, base_file) + else: + print "Config File: %s not find" % filename config = Config() diff --git a/lib/python/Navigation.py b/lib/python/Navigation.py index d0e993520a6..3e14a0c9410 100644 --- a/lib/python/Navigation.py +++ b/lib/python/Navigation.py @@ -1,4 +1,4 @@ -from enigma import eServiceCenter, eServiceReference, pNavigation, getBestPlayableServiceReference, iPlayableService, setPreferredTuner, eStreamServer, iRecordableServicePtr +from enigma import eTimer, eServiceCenter, eServiceReference, pNavigation, getBestPlayableServiceReference, iPlayableService, setPreferredTuner, eStreamServer, iRecordableServicePtr from Components.ImportChannels import ImportChannels from Components.ParentalControl import parentalControl from Components.SystemInfo import SystemInfo @@ -43,12 +43,12 @@ def __init__(self): self.__isRestartUI = config.misc.RestartUI.value startup_to_standby = config.usage.startup_to_standby.value wakeup_time_type = config.misc.prev_wakeup_time_type.value - wakeup_timer_enabled = False + self.wakeup_timer_enabled = False if config.usage.remote_fallback_import_restart.value: ImportChannels() if self.__wasTimerWakeup: - wakeup_timer_enabled = wakeup_time_type == 3 and config.misc.prev_wakeup_time.value - if not wakeup_timer_enabled: + self.wakeup_timer_enabled = wakeup_time_type == 3 and config.misc.prev_wakeup_time.value + if not self.wakeup_timer_enabled: RecordTimer.RecordTimerEntry.setWasInDeepStandby() if config.misc.RestartUI.value: config.misc.RestartUI.value = False @@ -59,12 +59,18 @@ def __init__(self): ImportChannels() if startup_to_standby == "yes" or self.__wasTimerWakeup and config.misc.prev_wakeup_time.value and (wakeup_time_type == 0 or wakeup_time_type == 1 or (wakeup_time_type == 3 and startup_to_standby == "except")): if not Screens.Standby.inTryQuitMainloop: - Notifications.AddNotification(Screens.Standby.Standby, wakeup_timer_enabled and 1 or True) + self.standbytimer = eTimer() + self.standbytimer.callback.append(self.gotostandby) + self.standbytimer.start(15000, True) # Time increse 15 second for standby. if config.misc.prev_wakeup_time.value: config.misc.prev_wakeup_time.value = 0 config.misc.prev_wakeup_time.save() configfile.save() + def gotostandby(self): + if not Screens.Standby.inStandby and not Screens.Standby.inTryQuitMainloop: + Notifications.AddNotification(Screens.Standby.Standby, self.wakeup_timer_enabled and 1 or True) + def wasTimerWakeup(self): return self.__wasTimerWakeup @@ -126,6 +132,11 @@ def playService(self, ref, checkParentalControl=True, forceRestart=False, adjust print "[Navigation] Failed to start: ", alternativeref.toString() self.currentlyPlayingServiceReference = None self.currentlyPlayingServiceOrGroup = None + if oldref and "://" in oldref.getPath(): + print "[Navigation] Streaming was active -> try again" # use timer to give the streamserver the time to deallocate the tuner + self.retryServicePlayTimer = eTimer() + self.retryServicePlayTimer.callback.append(boundFunction(self.playService, ref, checkParentalControl, forceRestart, adjust)) + self.retryServicePlayTimer.start(500, True) else: print "[Navigation] alternative ref as simulate: ", alternativeref.toString() return 0 @@ -136,6 +147,10 @@ def playService(self, ref, checkParentalControl=True, forceRestart=False, adjust else: playref = ref if self.pnav: + if not SystemInfo["FCCactive"]: + self.pnav.stopService() + else: + self.skipServiceReferenceReset = True self.currentlyPlayingServiceReference = playref self.currentlyPlayingServiceOrGroup = ref if startPlayingServiceOrGroup and startPlayingServiceOrGroup.flags & eServiceReference.isGroup and not ref.flags & eServiceReference.isGroup: @@ -170,11 +185,15 @@ def playService(self, ref, checkParentalControl=True, forceRestart=False, adjust if config.usage.frontend_priority_dvbs.value != config.usage.frontend_priority.value: setPreferredTuner(int(config.usage.frontend_priority_dvbs.value)) setPriorityFrontend = True - self.skipServiceReferenceReset = True if self.pnav.playService(playref): print "[Navigation] Failed to start: ", playref.toString() self.currentlyPlayingServiceReference = None self.currentlyPlayingServiceOrGroup = None + if oldref and "://" in oldref.getPath(): + print "[Navigation] Streaming was active -> try again" # use timer to give the streamserver the time to deallocate the tuner + self.retryServicePlayTimer = eTimer() + self.retryServicePlayTimer.callback.append(boundFunction(self.playService, ref, checkParentalControl, forceRestart, adjust)) + self.retryServicePlayTimer.start(500, True) self.skipServiceReferenceReset = False if setPriorityFrontend: setPreferredTuner(int(config.usage.frontend_priority.value)) diff --git a/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py b/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py index b8cd8cd67dd..256c50b9bfe 100644 --- a/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py +++ b/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py @@ -64,6 +64,8 @@ def __init__(self, session, args=0): appname = _("Slot %d") % (slot + 1) + " - " + _("init modules") elif state == 2: appname = _("Slot %d") % (slot + 1) + " - " + eDVBCI_UI.getInstance().getAppName(slot) + elif state == 3: + appname = _("Slot %d") % (slot + 1) + " - " + _("module disabled") self.list.append((appname, ConfigNothing(), 0, slot)) else: self.list.append((_("no CI slots found"), ConfigNothing(), 1, -1)) @@ -273,7 +275,7 @@ def finishedCAidSelection(self, *args): def saveXML(self): try: - fp = file(self.filename, 'w') + fp = open(self.filename, 'w') fp.write("\n") fp.write("\n") fp.write("\t\n") diff --git a/lib/python/Plugins/SystemPlugins/Makefile.am b/lib/python/Plugins/SystemPlugins/Makefile.am index 39d6848e1b5..a2b9e1872cf 100644 --- a/lib/python/Plugins/SystemPlugins/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/Makefile.am @@ -6,9 +6,5 @@ SUBDIRS = SoftwareManager PositionerSetup Satfinder \ CableScan FastScan OSDPositionSetup OSD3DSetup HdmiCEC VideoClippingSetup \ VideoEnhancement WirelessLan NetworkWizard FastChannelChange -if HAVE_TEMPFANCONTROL -SUBDIRS += TempFanControl -endif - install_PYTHON = \ __init__.py diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index bb9b9a088c7..4b124070138 100644 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -1380,7 +1380,7 @@ def __init__(self, session, configfile=None): text = "" if self.configfile: try: - fp = file(configfile, 'r') + fp = open(configfile, 'r') sources = fp.readlines() if sources: text = sources[0] @@ -1432,7 +1432,7 @@ def layoutFinished(self): def go(self): text = self["text"].getText() if text: - fp = file(self.configfile, 'w') + fp = open(self.configfile, 'w') fp.write(text) fp.write("\n") fp.close() diff --git a/lib/python/Plugins/SystemPlugins/VideoEnhancement/plugin.py b/lib/python/Plugins/SystemPlugins/VideoEnhancement/plugin.py index 75c5e7f505e..b269286659e 100644 --- a/lib/python/Plugins/SystemPlugins/VideoEnhancement/plugin.py +++ b/lib/python/Plugins/SystemPlugins/VideoEnhancement/plugin.py @@ -343,6 +343,21 @@ def keyCancel(self): pass self.close() + # for summary: + def changedEntry(self): + for x in self.onChangedEntry: + x() + self.selectionChanged() + + def getCurrentEntry(self): + return self["config"].getCurrent()[0] + + def getCurrentValue(self): + return str(self["config"].getCurrent()[1].getText()) + + def createSummary(self): + from Screens.Setup import SetupSummary + return SetupSummary def videoEnhancementSetupMain(session, **kwargs): session.open(VideoEnhancementSetup) diff --git a/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py b/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py index bfab190ad30..fae562cb3c0 100644 --- a/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py +++ b/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py @@ -54,9 +54,9 @@ class VideoHardware: "auto": {50: "2160p25", 60: "2160p30", 24: "2160p24"}} rates["2160p"] = {"50Hz": {50: "2160p50"}, - "60Hz": {60: "2160p"}, - "multi": {50: "2160p50", 60: "2160p"}, - "auto": {50: "2160p50", 60: "2160p", 24: "2160p24"}} + "60Hz": {60: "2160p60"}, + "multi": {50: "2160p50", 60: "2160p60"}, + "auto": {50: "2160p50", 60: "2160p60", 24: "2160p24"}} rates["PC"] = { "1024x768": {60: "1024x768"}, # not possible on DM7025 diff --git a/lib/python/Plugins/SystemPlugins/Videomode/plugin.py b/lib/python/Plugins/SystemPlugins/Videomode/plugin.py index aaa44ed6f2c..8a76ab6791b 100644 --- a/lib/python/Plugins/SystemPlugins/Videomode/plugin.py +++ b/lib/python/Plugins/SystemPlugins/Videomode/plugin.py @@ -117,30 +117,22 @@ def createSetup(self): self.list.append(getConfigListEntry(_("Audio volume step size"), config.av.volume_stepsize, _("Configure the general audio volume step size (limit 1-10)."))) if SystemInfo["CanDownmixAC3"]: self.list.append(getConfigListEntry(_("AC3 downmix"), config.av.downmix_ac3, _("Configure whether multi channel sound tracks should be downmixed to stereo."))) + if SystemInfo["CanAC3plusTranscode"]: + self.list.append(getConfigListEntry(_("AC3 Plus transcoding"), config.av.transcodeac3plus, _("Choose whether AC3 Plus sound tracks should be transcoded to AC3."))) if SystemInfo["CanDownmixDTS"]: self.list.append(getConfigListEntry(_("DTS downmix"), config.av.downmix_dts, _("Configure whether multi channel sound tracks should be downmixed to stereo."))) - if SystemInfo["CanDownmixAAC"]: - self.list.append(getConfigListEntry(_("AAC downmix"), config.av.downmix_aac, _("Configure whether multi channel sound tracks should be downmixed to stereo."))) - if SystemInfo["CanDownmixAACPlus"]: - self.list.append(getConfigListEntry(_("AAC+ downmix"), config.av.downmix_aacplus, _("Choose whether multi channel aac+ sound tracks should be downmixed to stereo."))) - if SystemInfo["CanAC3Transcode"]: - self.list.append(getConfigListEntry(_("AC3 transcoding"), config.av.transcodeac3plus, _("Choose whether AC3 sound tracks should be transcoded."))) - if SystemInfo["CanAACTranscode"]: - self.list.append(getConfigListEntry(_("AAC transcoding"), config.av.transcodeaac, _("Choose whether AAC sound tracks should be transcoded."))) if SystemInfo["CanDTSHD"]: - self.list.append(getConfigListEntry(_("DTS-HD HR/DTS-HD MA/DTS"), config.av.dtshd, ("Choose whether multi channel DTSHD sound tracks should be downmixed or transcoded."))) + self.list.append(getConfigListEntry(_("DTS/DTS-HD HR/DTS-HD MA/DTS:X"), config.av.dtshd, _("Choose whether DTS channel sound tracks should be downmixed or transcoded."))) if SystemInfo["CanWMAPRO"]: - self.list.append(getConfigListEntry(_("WMA Pro downmix"), config.av.wmapro, _("Choose whether WMA Pro sound tracks should be downmixed."))) - if SystemInfo["HasMultichannelPCM"]: - self.list.append(getConfigListEntry(_("Multichannel PCM"), config.av.multichannel_pcm, _("Configure whether multi channel PCM sound should be enabled."))) + self.list.append(getConfigListEntry(_("WMA Pro"), config.av.wmapro, _("Choose whether WMA Pro channel sound tracks should be downmixed or transcoded."))) + if SystemInfo["CanDownmixAAC"]: + self.list.append(getConfigListEntry(_("AAC downmix"), config.av.downmix_aac, _("Configure whether multi channel sound tracks should be downmixed to stereo."))) self.list.extend(( getConfigListEntry(_("General AC3 delay"), config.av.generalAC3delay, _("Configure the general audio delay of Dolby Digital sound tracks.")), getConfigListEntry(_("General PCM delay"), config.av.generalPCMdelay, _("Configure the general audio delay of stereo sound tracks.")) )) - if SystemInfo["CanBTAudio"]: - self.list.append(getConfigListEntry(_("Enable bluetooth audio"), config.av.btaudio, _("This option allows you to switch audio to bluetooth speakers."))) - if SystemInfo["CanBTAudioDelay"]: - self.list.append(getConfigListEntry(_("General bluetooth audio delay"), config.av.btaudiodelay, _("This option configures the general audio delay for bluetooth speakers."))) + if SystemInfo["HasMultichannelPCM"]: + self.list.append(getConfigListEntry(_("Multichannel PCM"), config.av.multichannel_pcm, _("Configure whether multi channel PCM sound should be enabled."))) if SystemInfo["HasAutoVolume"] or SystemInfo["HasAutoVolumeLevel"]: self.list.append(getConfigListEntry(_("Audio auto volume level"), SystemInfo["HasAutoVolume"] and config.av.autovolume or config.av.autovolumelevel, _("This option allows you can to set the auto volume level."))) if SystemInfo["Has3DSurround"]: diff --git a/lib/python/Plugins/SystemPlugins/WirelessLan/Wlan.py b/lib/python/Plugins/SystemPlugins/WirelessLan/Wlan.py index 47e3c285374..1d1823611c6 100644 --- a/lib/python/Plugins/SystemPlugins/WirelessLan/Wlan.py +++ b/lib/python/Plugins/SystemPlugins/WirelessLan/Wlan.py @@ -223,7 +223,7 @@ def writeConfig(self, iface): self.writeBcmWifiConfig(iface, essid, encryption, psk) return - fp = file(getWlanConfigName(iface), 'w') + fp = open(getWlanConfigName(iface), 'w') fp.write('#WPA Supplicant Configuration by enigma2\n') fp.write('ctrl_interface=/var/run/wpa_supplicant\n') fp.write('eapol_version=1\n') @@ -273,7 +273,7 @@ def loadConfig(self, iface): try: #parse the wpasupplicant configfile print "[Wlan.py] parsing configfile: ", configfile - fp = file(configfile, 'r') + fp = open(configfile, 'r') supplicant = fp.readlines() fp.close() essid = None diff --git a/lib/python/RecordTimer.py b/lib/python/RecordTimer.py index 444d6dfa164..016e5f94ea9 100644 --- a/lib/python/RecordTimer.py +++ b/lib/python/RecordTimer.py @@ -382,6 +382,12 @@ def sendactivesource(self): print "[TIMER] sourceactive was send" def activate(self): + if not self.InfoBarInstance: + try: + self.InfoBarInstance = Screens.InfoBar.InfoBar.instance + except: + print "[RecordTimer] import 'Screens.InfoBar' failed" + next_state = self.state + 1 self.log(5, "activating state %d" % next_state) @@ -1263,7 +1269,7 @@ def isInTimer(self, eventid, begin, duration, service): type_offset = 5 if (timer_end - x.begin) <= 1: timer_end += 60 - if x.pipzap: + if x.pipzap and not x.repeated: type_offset = 30 if x.always_zap: type_offset = 10 diff --git a/lib/python/Screens/About.py b/lib/python/Screens/About.py index 39793dab487..3e2099e66f7 100644 --- a/lib/python/Screens/About.py +++ b/lib/python/Screens/About.py @@ -19,7 +19,10 @@ from Components.GUIComponent import GUIComponent from skin import applySkinFactor, parameters, parseScale +from boxbranding import getImageBuild + import os +import glob class About(Screen): @@ -31,7 +34,7 @@ def __init__(self, session): AboutText = _("Hardware: ") + about.getHardwareTypeString() + "\n" cpu = about.getCPUInfoString() AboutText += _("CPU: ") + cpu + "\n" - AboutText += _("Image: ") + about.getImageTypeString() + "\n" + AboutText += _("Image: ") + about.getImageTypeString() + "-" + getImageBuild() + "\n" AboutText += _("Build date: ") + about.getBuildDateString() + "\n" AboutText += _("Last update: ") + about.getUpdateDateString() + "\n" @@ -52,17 +55,27 @@ def __init__(self, session): AboutText += _("DVB driver version: ") + about.getDriverInstalledDate() + "\n" - GStreamerVersion = _("Media player: GStreamer, version ") + about.getGStreamerVersionString().replace("GStreamer", "") + GStreamerVersion = about.getGStreamerVersionString().replace("GStreamer", "") self["GStreamerVersion"] = StaticText(GStreamerVersion) - ffmpegVersion = _("Media player: ffmpeg, version ") + about.getffmpegVersionString() + ffmpegVersion = about.getffmpegVersionString() self["ffmpegVersion"] = StaticText(ffmpegVersion) + player = None if cpu.upper().startswith('HI') or os.path.isdir('/proc/hisi'): - AboutText += ffmpegVersion + "\n" - else: - AboutText += GStreamerVersion + "\n" + if os.path.isdir("/usr/lib/hisilicon") and glob.glob("/usr/lib/hisilicon/libavcodec.so.*"): + player = _("Media player") + ": ffmpeg, " + _("Hardware Accelerated") + elif ffmpegVersion and ffmpegVersion[0].isdigit(): + player = _("Media player") + ": ffmpeg, " + _("version") + " " + ffmpegVersion + + if player is None: + if GStreamerVersion: + player = _("Media player") + ": Gstreamer, " + _("version") + " " + GStreamerVersion + else: + player = _("Media player") + ": " + _("Not Installed") + AboutText += player + "\n" + AboutText += _("OpenSSL version: ") + about.getOpenSSLVersion() + "\n" AboutText += _("Python version: ") + about.getPythonVersionString() + "\n" AboutText += _("Enigma (re)starts: %d\n") % config.misc.startCounter.value @@ -72,7 +85,7 @@ def __init__(self, session): fp_version = getFPVersion() if fp_version is None: fp_version = "" - else: + elif fp_version != 0: fp_version = _("Frontprocessor version: %s") % fp_version AboutText += fp_version + "\n" @@ -204,16 +217,10 @@ def __init__(self, session): self["key_red"] = Button(_("Cancel")) - # get the branch to display from the Enigma version - try: - branch = "?sha=" + "-".join(about.getEnigmaVersionString().split("-")[3:]) - except: - branch = "" - self.project = 0 self.projects = [ - ("https://api.github.com/repos/openpli/enigma2/commits" + branch, "Enigma2"), - ("https://api.github.com/repos/openpli/openpli-oe-core/commits" + branch, "Openpli Oe Core"), + ("https://api.github.com/repos/jack2015/enigma2-openpli/commits", "Enigma2"), + ("https://api.github.com/repos/jack2015/openpli-dreambox-oe-core/commits", "Openpli Oe Core"), ("https://api.github.com/repos/openpli/enigma2-plugins/commits", "Enigma2 Plugins"), ("https://api.github.com/repos/openpli/aio-grab/commits", "Aio Grab"), ("https://api.github.com/repos/openpli/enigma2-plugin-extensions-epgimport/commits", "Plugin EPGImport"), @@ -309,25 +316,26 @@ def getMemoryInfo(self): mem = 1 free = 0 rows_in_column = self["params"].rows_in_column - for i, line in enumerate(open('/proc/meminfo', 'r')): - s = line.strip().split(None, 2) - if len(s) == 3: - name, size, units = s - elif len(s) == 2: - name, size = s - units = "" - else: - continue - if name.startswith("MemTotal"): - mem = int(size) - if name.startswith("MemFree") or name.startswith("Buffers") or name.startswith("Cached"): - free += int(size) - if i < rows_in_column: - ltext += "".join((name, "\n")) - lvalue += "".join((size, " ", units, "\n")) - else: - rtext += "".join((name, "\n")) - rvalue += "".join((size, " ", units, "\n")) + with open('/proc/meminfo', 'r') as fp: + for i, line in enumerate(fp): + s = line.strip().split(None, 2) + if len(s) == 3: + name, size, units = s + elif len(s) == 2: + name, size = s + units = "" + else: + continue + if name.startswith("MemTotal"): + mem = int(size) + if name.startswith("MemFree") or name.startswith("Buffers") or name.startswith("Cached"): + free += int(size) + if i < rows_in_column: + ltext += "".join((name, "\n")) + lvalue += "".join((size, " ", units, "\n")) + else: + rtext += "".join((name, "\n")) + rvalue += "".join((size, " ", units, "\n")) self['lmemtext'].setText(ltext) self['lmemvalue'].setText(lvalue) self['rmemtext'].setText(rtext) @@ -340,7 +348,8 @@ def getMemoryInfo(self): def clearMemory(self): eConsoleAppContainer().execute("sync") - open("/proc/sys/vm/drop_caches", "w").write("3") + with open("/proc/sys/vm/drop_caches", "w") as fp: + fp.write("3") self.getMemoryInfo() @@ -437,7 +446,8 @@ def run_console(self): command = self.commands[self.commandIndex] if command.startswith("cat "): try: - self["AboutScrollLabel"].setText(open(command[4:], "r").read()) + with open(command[4:], "r") as fp: + self["AboutScrollLabel"].setText(fp.read()) except: self["AboutScrollLabel"].setText(_("Logfile does not exist anymore")) else: @@ -454,11 +464,9 @@ def cancel(self): self.close() def getDebugFilesList(self): - import glob return [x for x in sorted(glob.glob("/home/root/enigma.*.debuglog"), key=lambda x: os.path.isfile(x) and os.path.getmtime(x))] def getLogFilesList(self): - import glob home_root = "/home/root/enigma2_crash.log" tmp = "/tmp/enigma2_crash.log" return [x for x in sorted(glob.glob("/mnt/hdd/*.log"), key=lambda x: os.path.isfile(x) and os.path.getmtime(x))] + (os.path.isfile(home_root) and [home_root] or []) + (os.path.isfile(tmp) and [tmp] or []) diff --git a/lib/python/Screens/AudioSelection.py b/lib/python/Screens/AudioSelection.py index fe3e06a08aa..4a3cfc1ffca 100644 --- a/lib/python/Screens/AudioSelection.py +++ b/lib/python/Screens/AudioSelection.py @@ -13,7 +13,7 @@ from Components.SystemInfo import SystemInfo from Components.VolumeControl import VolumeControl -from enigma import iPlayableService, eTimer, eSize, eDVBDB, eServiceReference, eServiceCenter, iServiceInformation +from enigma import iPlayableService, eTimer, eSize, eDVBDB, eServiceReference, eServiceCenter, iServiceInformation, getBoxType FOCUS_CONFIG, FOCUS_STREAMS = range(2) [PAGE_AUDIO, PAGE_SUBTITLES] = ["audio", "subtitles"] @@ -93,17 +93,17 @@ def fillList(self, arg=None): self.audioTracks = audio = service and service.audioTracks() n = audio and audio.getNumberOfTracks() or 0 if SystemInfo["CanDownmixAC3"]: - downmix_ac3_value = config.av.downmix_ac3.value - if downmix_ac3_value in ("downmix", "passthrough"): - self.settings.downmix = ConfigSelection(choices=[("downmix", _("Downmix")), ("passthrough", _("Passthrough"))], default=downmix_ac3_value) - self.settings.downmix.addNotifier(self.changeAC3Downmix, initial_call=False) - extra_text = " - AC3" - if SystemInfo["CanDownmixDTS"]: - extra_text += ",DTS" - if SystemInfo["CanDownmixAAC"]: - extra_text += ",AAC" - conflist.append(getConfigListEntry(_("Multi channel downmix") + extra_text, self.settings.downmix)) - self["key_red"].setBoolean(True) + if SystemInfo["DreamBoxAudio"]: + choice_list = [("downmix", _("Downmix")), ("passthrough", _("Passthrough")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI"))] + self.settings.downmix_ac3 = ConfigSelection(choices=choice_list, default=config.av.downmix_ac3.value) + else: + self.settings.downmix_ac3 = ConfigOnOff(default=config.av.downmix_ac3.value) + self.settings.downmix_ac3.addNotifier(self.changeAC3Downmix, initial_call=False) + conflist.append(getConfigListEntry(_("AC3 downmix"), self.settings.downmix_ac3, None)) + self["key_red"].setBoolean(True) + else: + conflist.append(getConfigListEntry(_("No AC3"), ConfigNothing())) + self["key_red"].setBoolean(True) if n > 0: self.audioChannel = service.audioChannel() @@ -111,11 +111,11 @@ def fillList(self, arg=None): choicelist = [("0", _("left")), ("1", _("stereo")), ("2", _("right"))] self.settings.channelmode = ConfigSelection(choices=choicelist, default=str(self.audioChannel.getCurrentChannel())) self.settings.channelmode.addNotifier(self.changeMode, initial_call=False) - conflist.append(getConfigListEntry(_("Channel"), self.settings.channelmode)) + conflist.append(getConfigListEntry(_("AudioChannel"), self.settings.channelmode)) self["key_green"].setBoolean(True) else: - conflist.append(('',)) - self["key_green"].setBoolean(False) + conflist.append(getConfigListEntry(_("No AudioChannel"), ConfigNothing())) + self["key_green"].setBoolean(True) selectedAudio = self.audioTracks.getCurrentTrack() for x in range(n): number = str(x + 1) @@ -147,15 +147,15 @@ def fillList(self, arg=None): else: streams = [] - conflist.append(('',)) - self["key_green"].setBoolean(False) + conflist.append(getConfigListEntry(_("No AudioChannel"), ConfigNothing())) + self["key_green"].setBoolean(True) if subtitlelist: self["key_yellow"].setBoolean(True) conflist.append(getConfigListEntry(_("To subtitle selection"), self.settings.menupage)) else: - self["key_yellow"].setBoolean(False) - conflist.append(('',)) + self["key_yellow"].setBoolean(True) + conflist.append(getConfigListEntry(_("No subtitle"), ConfigNothing())) from Components.PluginComponent import plugins from Plugins.Plugin import PluginDescriptor @@ -180,6 +180,47 @@ def __call__(self, *args, **kwargs): conflist.append(getConfigListEntry(self.Plugins[0][0], ConfigNothing())) self.plugincallfunc = self.Plugins[0][1] + if SystemInfo["CanDownmixAAC"]: + if SystemInfo["DreamBoxAudio"]: + choice_list = [("downmix", _("Downmix")), ("passthrough", _("Passthrough")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI"))] + self.settings.downmix_aac = ConfigSelection(choices=choice_list, default=config.av.downmix_aac.value) + else: + self.settings.downmix_aac = ConfigOnOff(default=config.av.downmix_aac.value) + self.settings.downmix_aac.addNotifier(self.changeAACDownmix, initial_call=False) + conflist.append(getConfigListEntry(_("AAC downmix"), self.settings.downmix_aac, None)) + else: + conflist.append(getConfigListEntry(_("No AAC"), ConfigNothing())) + + if SystemInfo["CanAC3plusTranscode"]: + if SystemInfo["DreamBoxAudio"]: + choice_list = [("use_hdmi_caps", _("controlled by HDMI")), ("force_ac3", _("convert to AC3")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI")), ("force_ddp", _("force AC3plus"))] + else: + choice_list = [("use_hdmi_caps", _("controlled by HDMI")), ("force_ac3", _("convert to AC3"))] + self.settings.transcodeac3plus = ConfigSelection(choices=choice_list, default=config.av.transcodeac3plus.value) + self.settings.transcodeac3plus.addNotifier(self.setAC3plusTranscode, initial_call=False) + conflist.append(getConfigListEntry(_("AC3plus transcoding"), self.settings.transcodeac3plus, None)) + else: + conflist.append(getConfigListEntry(_("No AC3 Plus"), ConfigNothing())) + + if SystemInfo["CanDTSHD"]: + if getBoxType() in ("dm7080", "dm820"): + choice_list = [("use_hdmi_caps", _("controlled by HDMI")), ("force_dts", _("convert to DTS"))] + else: + choice_list = [("downmix", _("Downmix")), ("force_dts", _("convert to DTS")), ("use_hdmi_caps", _("controlled by HDMI")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI"))] + self.settings.dtshd = ConfigSelection(choices=choice_list, default=config.av.dtshd.value) + self.settings.dtshd.addNotifier(self.setDTSHD, initial_call=False) + conflist.append(getConfigListEntry(_("DTS HD downmix"), self.settings.dtshd, None)) + else: + conflist.append(getConfigListEntry(_("No DTS HD"), ConfigNothing())) + + if SystemInfo["CanWMAPRO"]: + choice_list = [("downmix", _("Downmix")), ("passthrough", _("Passthrough")), ("multichannel", _("convert to multi-channel PCM")), ("hdmi_best", _("use best / controlled by HDMI"))] + self.settings.wmapro = ConfigSelection(choices=choice_list, default=config.av.wmapro.value) + self.settings.wmapro.addNotifier(self.setWMAPro, initial_call=False) + conflist.append(getConfigListEntry(_("WMA Pro downmix"), self.settings.wmapro, None)) + else: + conflist.append(getConfigListEntry(_("No WMA Pro"), ConfigNothing())) + elif self.settings.menupage.getValue() == PAGE_SUBTITLES: self.setTitle(_("Subtitle selection")) @@ -254,15 +295,42 @@ def getSubtitleList(self): subtitlelist.append(self.selectedSubtitle) return subtitlelist - def changeAC3Downmix(self, configElement): - config.av.downmix_ac3.value = configElement.value + def changeAC3Downmix(self, downmix): + if SystemInfo["DreamBoxAudio"]: + config.av.downmix_ac3.setValue(downmix.value) + else: + if downmix.value: + config.av.downmix_ac3.setValue(True) + if SystemInfo["HasMultichannelPCM"]: + config.av.multichannel_pcm.setValue(False) + else: + config.av.downmix_ac3.setValue(False) config.av.downmix_ac3.save() - if SystemInfo["CanDownmixDTS"]: - config.av.downmix_dts.value = configElement.value - config.av.downmix_dts.save() - if SystemInfo["CanDownmixAAC"]: - config.av.downmix_aac.value = configElement.value - config.av.downmix_aac.save() + if SystemInfo["HasMultichannelPCM"]: + config.av.multichannel_pcm.save() + self.fillList() + + def changeAACDownmix(self, downmix): + if SystemInfo["DreamBoxAudio"]: + config.av.downmix_aac.setValue(downmix.value) + else: + if downmix.value: + config.av.downmix_aac.setValue(True) + else: + config.av.downmix_aac.setValue(False) + config.av.downmix_aac.save() + + def setAC3plusTranscode(self, transcode): + config.av.transcodeac3plus.setValue(transcode.value) + config.av.transcodeac3plus.save() + + def setWMAPro(self, downmix): + config.av.wmapro.setValue(downmix.value) + config.av.wmapro.save() + + def setDTSHD(self, downmix): + config.av.dtshd.setValue(downmix.value) + config.av.dtshd.save() def changeMode(self, mode): if mode is not None and self.audioChannel: @@ -282,9 +350,7 @@ def keyLeft(self): def keyRight(self, config=False): if config or self.focus == FOCUS_CONFIG: - if self["config"].getCurrentIndex() < 3: - ConfigListScreen.keyRight(self) - elif self["config"].getCurrentIndex() == 3: + if self["config"].getCurrentIndex() == 3: if self.settings.menupage.getValue() == PAGE_AUDIO and hasattr(self, "plugincallfunc"): if len(self.Plugins) > 1: def runPluginAction(choice): @@ -295,6 +361,8 @@ def runPluginAction(choice): self.plugincallfunc() elif self.settings.menupage.getValue() == PAGE_SUBTITLES and self.infobar.selected_subtitle and self.infobar.selected_subtitle != (0, 0, 0, 0): self.session.open(QuickSubtitlesConfigMenu, self.infobar) + else: + ConfigListScreen.keyRight(self) if self.focus == FOCUS_STREAMS and self["streams"].count() and config == False: self["streams"].setIndex(self["streams"].count() - 1) diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index 269e90e3f23..a36887d06b0 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -1931,6 +1931,8 @@ def gotoCurrentServiceOrProvider(self, ref): class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelectionEPG, SelectionEventInfo): + ALLOW_SUSPEND = True + def __init__(self, session): ChannelSelectionBase.__init__(self, session) ChannelSelectionEdit.__init__(self) diff --git a/lib/python/Screens/ChoiceBox.py b/lib/python/Screens/ChoiceBox.py index acae7f94b80..3385bd53509 100644 --- a/lib/python/Screens/ChoiceBox.py +++ b/lib/python/Screens/ChoiceBox.py @@ -213,18 +213,19 @@ def keyBlue(self): def updateSummary(self, curpos=0): self.displayDescription(curpos) - pos = 0 summarytext = "" - for entry in self.summarylist: + for pos, entry in enumerate(self.summarylist): if curpos - 2 < pos < curpos + 5: if pos == curpos: summarytext += ">" - self["summary_selection"].setText(entry[1]) + if entry[1] is not None: + self["summary_selection"].text = entry[1] else: - summarytext += entry[0] - summarytext += ' ' + entry[1] + '\n' - pos += 1 - self["summary_list"].setText(summarytext) + if entry[0] is not None: + summarytext += entry[0] + if entry[1] is not None: + summarytext += ' ' + entry[1] + '\n' + self["summary_list"].text = summarytext def displayDescription(self, curpos=0): if self.list and len(self.list[curpos][0]) > 2 and isinstance(self.list[curpos][0][2], str): diff --git a/lib/python/Screens/Ci.py b/lib/python/Screens/Ci.py index 5135e6733aa..9869863cde2 100644 --- a/lib/python/Screens/Ci.py +++ b/lib/python/Screens/Ci.py @@ -13,18 +13,21 @@ forceNotShowCiMessages = False - def setCIBitrate(configElement): eDVBCI_UI.getInstance().setClockRate(configElement.slotid, eDVBCI_UI.rateNormal if configElement.value == "no" else eDVBCI_UI.rateHigh) +def setCIEnabled(configElement): + eDVBCI_UI.getInstance().setEnabled(configElement.slotid, configElement.value) def setdvbCiDelay(configElement): - open(SystemInfo["CommonInterfaceCIDelay"], "w").write(configElement.value) + with open(SystemInfo["CommonInterfaceCIDelay"], "w") as fp: + fp.write(configElement.value) configElement.save() def setRelevantPidsRouting(configElement): - open(SystemInfo["CI%dRelevantPidsRoutingSupport" % configElement.slotid], "w").write("yes" if configElement.value else "no") + with open(SystemInfo["CI%dRelevantPidsRoutingSupport" % configElement.slotid], "w") as fp: + fp.write("yes" if configElement.value else "no") def InitCiConfig(): @@ -33,6 +36,9 @@ def InitCiConfig(): if SystemInfo["CommonInterface"]: for slot in range(SystemInfo["CommonInterface"]): config.ci.append(ConfigSubsection()) + config.ci[slot].enabled = ConfigYesNo(default=True) + config.ci[slot].enabled.slotid = slot + config.ci[slot].enabled.addNotifier(setCIEnabled) config.ci[slot].canDescrambleMultipleServices = ConfigSelection(choices=[("auto", _("auto")), ("no", _("no")), ("yes", _("yes"))], default="auto") config.ci[slot].use_static_pin = ConfigYesNo(default=True) config.ci[slot].static_pin = ConfigPIN(default=0) @@ -431,16 +437,19 @@ def appendEntries(self, slot, state): self.state[slot] = state if self.slot > 1: self.list.append(("**************************", ConfigNothing(), 3, slot)) + self.list.append((_("CI enabled"), config.ci[slot].enabled, -1, slot)) + if self.state[slot] in (0, 3): + self.list.append((self.state[slot] == 0 and _("no module found") or _("module disabled"), ConfigNothing(), 2, slot)) + return self.list.append((_("Reset"), ConfigNothing(), 0, slot)) self.list.append((_("Init"), ConfigNothing(), 1, slot)) - if self.state[slot] == 0: #no module - self.list.append((_("no module found"), ConfigNothing(), 2, slot)) - elif self.state[slot] == 1: #module in init + if self.state[slot] == 1: #module in init self.list.append((_("init module"), ConfigNothing(), 2, slot)) elif self.state[slot] == 2: #module ready appname = eDVBCI_UI.getInstance().getAppName(slot) self.list.append((appname, ConfigNothing(), 2, slot)) + self.list.append(getConfigListEntry(_("Set persistent PIN code"), config.ci[slot].use_static_pin, 3, slot)) self.list.append((_("Enter persistent PIN code"), ConfigNothing(), 5, slot)) self.list.append((_("Reset persistent PIN code"), ConfigNothing(), 6, slot)) @@ -454,24 +463,13 @@ def appendEntries(self, slot, state): self.list.append(getConfigListEntry(_("DVB CI Delay"), config.cimisc.dvbCiDelay, 3, slot)) def updateState(self, slot): - state = eDVBCI_UI.getInstance().getState(slot) - self.state[slot] = state - - slotidx = 0 - while len(self.list[slotidx]) < 3 or self.list[slotidx][3] != slot: - slotidx += 1 - - slotidx += 1 #do not change Reset - slotidx += 1 #do not change Init - - if state == 0: #no module - self.list[slotidx] = (_("no module found"), ConfigNothing(), 2, slot) - elif state == 1: #module in init - self.list[slotidx] = (_("init module"), ConfigNothing(), 2, slot) - elif state == 2: #module ready - appname = eDVBCI_UI.getInstance().getAppName(slot) - self.list[slotidx] = (appname, ConfigNothing(), 2, slot) - + self.list = [] + self.slot = 0 + for module in range(SystemInfo["CommonInterface"]): + state = eDVBCI_UI.getInstance().getState(module) + if state != -1: + self.slot += 1 + self.appendEntries(module, state) lst = self["entries"] lst.list = self.list lst.l.setList(self.list) @@ -505,7 +503,7 @@ def okbuttonClick(self): config.ci[slot].static_pin.value = 0 config.ci[slot].static_pin.save() self.session.openWithCallback(self.cancelCB, MessageBox, _("The saved PIN was cleared."), MessageBox.TYPE_INFO) - elif self.state[slot] == 2: + elif action == 2 and self.state[slot] == 2: self.dlg = self.session.openWithCallback(self.dlgClosed, MMIDialog, slot, action) def cancelCB(self, value): diff --git a/lib/python/Screens/FlashImage.py b/lib/python/Screens/FlashImage.py index 24fecbad85f..b3134d2fa67 100644 --- a/lib/python/Screens/FlashImage.py +++ b/lib/python/Screens/FlashImage.py @@ -262,16 +262,20 @@ def checkIfDevice(path, diskstats): st_dev = os.stat(path).st_dev return (os.major(st_dev), os.minor(st_dev)) in diskstats - diskstats = [(int(x[0]), int(x[1])) for x in [x.split()[0:3] for x in open('/proc/diskstats').readlines()] if x[2].startswith("sd")] + with open('/proc/diskstats') as fp: + diskstats = [(int(x[0]), int(x[1])) for x in [x.split()[0:3] for x in fp.readlines()] if x[2].startswith("sd")] if os.path.isdir(path) and checkIfDevice(path, diskstats) and avail(path) > 500: return (path, True) mounts = [] devices = [] for path in ['/media/%s' % x for x in os.listdir('/media')] + (['/media/net/%s' % x for x in os.listdir('/media/net')] if os.path.isdir('/media/net') else []): - if checkIfDevice(path, diskstats): - devices.append((path, avail(path))) - else: - mounts.append((path, avail(path))) + try: + if checkIfDevice(path, diskstats): + devices.append((path, avail(path))) + else: + mounts.append((path, avail(path))) + except OSError: + pass devices.sort(key=lambda x: x[1], reverse=True) mounts.sort(key=lambda x: x[1], reverse=True) return ((devices[0][1] > 500 and (devices[0][0], True)) if devices else mounts and mounts[0][1] > 500 and (mounts[0][0], False)) or (None, None) @@ -518,7 +522,8 @@ def doReboot(self, answer): startupFileContents = "boot emmcflash0.kernel%s 'root=/dev/mmcblk0p%s rw rootwait %s_4.boxmode=1'\n" % (slot[0], slot[0] * 2 + 1, model) else: startupFileContents = "boot emmcflash0.kernel%s 'brcm_cma=520M@248M brcm_cma=%s@768M root=/dev/mmcblk0p%s rw rootwait %s_4.boxmode=12'\n" % (slot[0], SystemInfo["canMode12"], slot[0] * 2 + 1, model) - open(os.path.join(self.tmp_dir, "STARTUP"), 'w').write(startupFileContents) + with open(os.path.join(self.tmp_dir, "STARTUP"), 'w') as fp: + fp.write(startupFileContents) self.cancel(2) def selectionChanged(self): diff --git a/lib/python/Screens/Hotkey.py b/lib/python/Screens/Hotkey.py index d888d272b06..95e50a9f5d9 100644 --- a/lib/python/Screens/Hotkey.py +++ b/lib/python/Screens/Hotkey.py @@ -29,6 +29,8 @@ class hotkey: ("F2" + " " + _("long"), "f2_long", ""), ("F3", "f3", ""), ("F3" + " " + _("long"), "f3_long", ""), + ("F4", "f4", ""), + ("F4" + " " + _("long"), "f4_long", ""), (_("Red"), "red", ""), (_("Green"), "green", ""), (_("Yellow"), "yellow", ""), @@ -99,6 +101,8 @@ class hotkey: ("Power" + " " + _("long"), "power_long", "Menu/shutdown"), ("HDMIin", "HDMIin", "Infobar/HDMIIn"), ("HDMIin" + " " + _("long"), "HDMIin_long", ""), + ("Magic", "magic", ""), + ("Magic" + " " + _("long"), "magic_long", ""), ("Media", "media", ""), ("Media" + " " + _("long"), "media_long", ""), ("Favorites", "favorites", "Infobar/openFavouritesList"), diff --git a/lib/python/Screens/InfoBar.py b/lib/python/Screens/InfoBar.py index 7ff682446a2..726124e339e 100644 --- a/lib/python/Screens/InfoBar.py +++ b/lib/python/Screens/InfoBar.py @@ -19,7 +19,7 @@ InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarBuffer, \ InfoBarSummarySupport, InfoBarMoviePlayerSummarySupport, InfoBarTimeshiftState, InfoBarTeletextPlugin, InfoBarExtensions, \ InfoBarSubtitleSupport, InfoBarPiP, InfoBarPlugins, InfoBarServiceErrorPopupSupport, InfoBarJobman, InfoBarPowersaver, \ - InfoBarHDMI, setResumePoint, delResumePoint + InfoBarHDMI, InfoBarHDMI2, setResumePoint, delResumePoint from Screens.Hotkey import InfoBarHotkey profile("LOAD:InitBar_Components") @@ -38,7 +38,7 @@ class InfoBar(InfoBarBase, InfoBarShowHide, InfoBarSubserviceSelection, InfoBarTimeshift, InfoBarSeek, InfoBarCueSheetSupport, InfoBarBuffer, InfoBarSummarySupport, InfoBarTimeshiftState, InfoBarTeletextPlugin, InfoBarExtensions, InfoBarPiP, InfoBarPlugins, InfoBarSubtitleSupport, InfoBarServiceErrorPopupSupport, InfoBarJobman, InfoBarPowersaver, - InfoBarHDMI, InfoBarHotkey, Screen): + InfoBarHDMI, InfoBarHDMI2, InfoBarHotkey, Screen): ALLOW_SUSPEND = True instance = None @@ -63,7 +63,7 @@ def __init__(self, session): InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, InfoBarSubserviceSelection, InfoBarBuffer, \ InfoBarTimeshift, InfoBarSeek, InfoBarCueSheetSupport, InfoBarSummarySupport, InfoBarTimeshiftState, \ InfoBarTeletextPlugin, InfoBarExtensions, InfoBarPiP, InfoBarSubtitleSupport, InfoBarJobman, InfoBarPowersaver, \ - InfoBarPlugins, InfoBarServiceErrorPopupSupport, InfoBarHotkey: + InfoBarHDMI2, InfoBarPlugins, InfoBarServiceErrorPopupSupport, InfoBarHotkey: x.__init__(self) self.helpList.append((self["actions"], "InfobarActions", [("showMovies", _("Watch recordings..."))])) @@ -140,6 +140,8 @@ def movieSelected(self, service): if service is None: if ref and not self.session.nav.getCurrentlyPlayingServiceOrGroup(): self.session.nav.playService(ref) + elif isinstance(service, bool) and service: + self.showMovies() else: from Components.ParentalControl import parentalControl if parentalControl.isServicePlayable(service, self.openMoviePlayer): @@ -152,7 +154,7 @@ def openMoviePlayer(self, ref): class MoviePlayer(InfoBarBase, InfoBarShowHide, InfoBarMenu, InfoBarSeek, InfoBarShowMovies, InfoBarInstantRecord, InfoBarVmodeButton, InfoBarAudioSelection, HelpableScreen, InfoBarNotifications, InfoBarServiceNotifications, InfoBarPVRState, InfoBarCueSheetSupport, InfoBarMoviePlayerSummarySupport, InfoBarSubtitleSupport, Screen, InfoBarTeletextPlugin, - InfoBarServiceErrorPopupSupport, InfoBarExtensions, InfoBarPlugins, InfoBarPiP, InfoBarHDMI, InfoBarHotkey): + InfoBarServiceErrorPopupSupport, InfoBarExtensions, InfoBarPlugins, InfoBarPiP, InfoBarHDMI, InfoBarHDMI2, InfoBarHotkey): ENABLE_RESUME_SUPPORT = True ALLOW_SUSPEND = True @@ -509,7 +511,11 @@ def showMovies(self): self.movieselection_dlg = self.session.openWithCallback(self.movieSelected, Screens.MovieSelection.MovieSelection, ref) def movieSelected(self, service): - if service is not None: + if isinstance(service, bool) and service: + self.showMovies() + elif service is not None: + if self.cur_service and self.cur_service != service: + setResumePoint(self.session) self.cur_service = service self.is_closing = False self.session.nav.playService(service) diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 567eb92369a..c61ee10d011 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -112,8 +112,8 @@ def saveResumePoints(): global resumePointCache, resumePointCacheLast import cPickle try: - f = open('/etc/enigma2/resumepoints.pkl', 'wb') - cPickle.dump(resumePointCache, f, cPickle.HIGHEST_PROTOCOL) + with open('/etc/enigma2/resumepoints.pkl', 'wb') as f: + cPickle.dump(resumePointCache, f, cPickle.HIGHEST_PROTOCOL) except Exception, ex: print "[InfoBar] Failed to write resumepoints:", ex resumePointCacheLast = int(time()) @@ -122,7 +122,12 @@ def saveResumePoints(): def loadResumePoints(): import cPickle try: - return cPickle.load(open('/etc/enigma2/resumepoints.pkl', 'rb')) + if os.path.isfile('/etc/enigma2/resumepoints.pkl'): + with open('/etc/enigma2/resumepoints.pkl', 'rb') as f: + return cPickle.load(f) + else: + print "[InfoBar] resumepoints is lost" + return {} except Exception, ex: print "[InfoBar] Failed to load resumepoints:", ex return {} @@ -137,7 +142,11 @@ class whitelist: def reload_whitelist_vbi(): - whitelist.vbi = [line.strip() for line in open('/etc/enigma2/whitelist_vbi', 'r').readlines()] if os.path.isfile('/etc/enigma2/whitelist_vbi') else [] + if os.path.isfile('/etc/enigma2/whitelist_vbi'): + with open('/etc/enigma2/whitelist_vbi', 'r') as f: + whitelist.vbi = [line.strip() for line in f.readlines()] + else: + whitelist.vbi = [] reload_whitelist_vbi() @@ -153,7 +162,8 @@ def reload_subservice_groupslist(force=False): groupedservices = "/etc/enigma2/groupedservices" if not os.path.isfile(groupedservices): groupedservices = "/usr/share/enigma2/groupedservices" - subservice.groupslist = [list(g) for k, g in itertools.groupby([line.split('#')[0].strip() for line in open(groupedservices).readlines()], lambda x:not x) if not k] + with open(groupedservices) as fp: + subservice.groupslist = [list(g) for k, g in itertools.groupby([line.split('#')[0].strip() for line in fp.readlines()], lambda x:not x) if not k] except: subservice.groupslist = [] @@ -464,7 +474,8 @@ def ToggleHideVBI(self, service=None): whitelist.vbi.remove(service) else: whitelist.vbi.append(service) - open('/etc/enigma2/whitelist_vbi', 'w').write('\n'.join(whitelist.vbi)) + with open('/etc/enigma2/whitelist_vbi', 'w') as f: + f.write('\n'.join(whitelist.vbi)) self.showHideVBI() @@ -618,6 +629,18 @@ def __init__(self): }) def keyNumberGlobal(self, number): + seekable = self.getSeek() + if seekable: + length = seekable.getLength() or (None, 0) + if length[1] > 0: + key = int(number) + time = (-config.seek.selfdefined_13.value, False, config.seek.selfdefined_13.value, + -config.seek.selfdefined_46.value, False, config.seek.selfdefined_46.value, + -config.seek.selfdefined_79.value, False, config.seek.selfdefined_79.value)[key - 1] + + time = time * 90000 + seekable.seekRelative(time < 0 and -1 or 1, abs(time)) + return if number == 0: if isinstance(self, InfoBarPiP) and self.pipHandles0Action(): self.pipDoHandle0Action() @@ -2071,7 +2094,8 @@ def __seekableStatusChanged(self): def setLCDsymbolTimeshift(self): if SystemInfo["LCDsymbol_timeshift"]: - open(SystemInfo["LCDsymbol_timeshift"], "w").write(self.timeshiftEnabled() and "1" or "0") + with open(SystemInfo["LCDsymbol_timeshift"], "w") as fp: + fp.write(self.timeshiftEnabled() and "1" or "0") def __serviceStarted(self): self.pvrStateDialog.hide() @@ -2435,6 +2459,7 @@ def swapPiP(self): currentServicePath = slist.getCurrentServicePath() currentBouquet = slist.getRoot() slist.setCurrentServicePath(self.session.pip.servicePath, doZap=False) + self.session.nav.stopService() self.session.pip.playService(swapservice) self.session.nav.playService(pipref, checkParentalControl=False, adjust=False) if slist: @@ -3610,7 +3635,6 @@ def goStandby(self): print "[InfoBarPowersaver] goto standby" self.session.open(Screens.Standby.Standby) - class InfoBarHDMI: def HDMIIn(self): slist = self.servicelist @@ -3630,3 +3654,37 @@ def HDMIIn(self): self.session.nav.playService(slist.servicelist.getCurrent()) else: self.session.nav.playService(self.cur_service) + +class InfoBarHDMI2: + def __init__(self): + self.hdmi_enabled_input = False + if SystemInfo["DMHDMI"]: + if not self.hdmi_enabled_input: + self.addExtension((self.getHDMIInputScreen, self.HDMIInput, lambda: True), "green") + + def getHDMIInputScreen(self): + if not self.hdmi_enabled_input: + return _("Turn on HDMI-IN mode") + else: + return _("Turn off HDMI-IN mode") + + def HDMIInput(self): + f = open("/proc/stb/hdmi-rx/0/hdmi_rx_monitor", "r") + check = f.read() + f.close() + if check.startswith("off"): + f = open("/proc/stb/audio/hdmi_rx_monitor", "w") + f.write("on") + f.close() + f = open("/proc/stb/hdmi-rx/0/hdmi_rx_monitor", "w") + f.write("on") + f.close() + self.hdmi_enabled_input = True + else: + f = open("/proc/stb/audio/hdmi_rx_monitor", "w") + f.write("off") + f.close() + f = open("/proc/stb/hdmi-rx/0/hdmi_rx_monitor", "w") + f.write("off") + f.close() + self.hdmi_enabled_input = False diff --git a/lib/python/Screens/LocationBox.py b/lib/python/Screens/LocationBox.py index e35f97c873e..9e0ab5a8335 100644 --- a/lib/python/Screens/LocationBox.py +++ b/lib/python/Screens/LocationBox.py @@ -284,13 +284,14 @@ def createDirCallback(self, res): def removeDir(self): sel = self["filelist"].getSelection() - if sel and os.path.exists(sel[0]): - self.session.openWithCallback( - boundFunction(self.removeDirCallback, sel[0]), - MessageBox, - _("Do you really want to remove directory %s from the disk?") % (sel[0]), - type=MessageBox.TYPE_YESNO - ) + if sel is not None: + if os.path.exists(sel[0]): + self.session.openWithCallback( + boundFunction(self.removeDirCallback, sel[0]), + MessageBox, + _("Do you really want to remove directory %s from the disk?") % (sel[0]), + type=MessageBox.TYPE_YESNO + ) else: self.session.open( MessageBox, @@ -468,7 +469,7 @@ def showMenu(self): ) def menuCallback(self, choice): - if choice: + if choice is not None: choice[1]() def usermodeOn(self): diff --git a/lib/python/Screens/MovieSelection.py b/lib/python/Screens/MovieSelection.py index 3354898537f..73ca7111ed4 100644 --- a/lib/python/Screens/MovieSelection.py +++ b/lib/python/Screens/MovieSelection.py @@ -615,6 +615,7 @@ def __init__(self, session, selectedmovie=None, timeshiftEnabled=False): "down": (self.keyDown, _("Go down the list")) }, prio=-2) + self.initUserDefinedActions() def getinitUserDefinedActionsDescription(key): return _(userDefinedActions.get(eval("config.movielist.%s.value" % key), _("Not defined"))) @@ -731,7 +732,10 @@ def initUserDefinedActions(self): prefix = _("Goto") + ": " for d, p in locations: if p and p.startswith('/'): - userDefinedActions[p] = prefix + d + try: + userDefinedActions[p] = prefix + d + except: + pass config.movielist.btn_red = ConfigSelection(default='delete', choices=userDefinedActions) config.movielist.btn_green = ConfigSelection(default='move', choices=userDefinedActions) config.movielist.btn_yellow = ConfigSelection(default='bookmarks', choices=userDefinedActions) @@ -759,22 +763,23 @@ def initUserDefinedActions(self): self._updateButtonTexts() def _callButton(self, name): - if name.startswith('@'): - item = self.getCurrentSelection() - if isSimpleFile(item): - name = name[1:] - for p in plugins.getPlugins(PluginDescriptor.WHERE_MOVIELIST): - if name == p.name: - p(self.session, item[0]) - elif name.startswith('/'): - self.gotFilename(name) - else: - try: - a = getattr(self, 'do_' + name) - except Exception: - # Undefined action - return - a() + if not self["waitingtext"].getVisible(): + if name.startswith('@'): + item = self.getCurrentSelection() + if isSimpleFile(item): + name = name[1:] + for p in plugins.getPlugins(PluginDescriptor.WHERE_MOVIELIST): + if name == p.name: + p(self.session, item[0]) + elif name.startswith('/'): + self.gotFilename(name) + else: + try: + a = getattr(self, 'do_' + name) + except Exception: + # Undefined action + return + a() def btn_red(self): self._callButton(config.movielist.btn_red.value) @@ -1209,7 +1214,8 @@ def saveLocalSettings(self): if config.movielist.settings_per_directory.value: try: path = os.path.join(config.movielist.last_videodir.value, ".e2settings.pkl") - pickle.dump(self.settings, open(path, "wb")) + with open(path, "wb") as fp: + pickle.dump(self.settings, fp) except Exception, e: print "Failed to save settings to %s: %s" % (path, e) # Also set config items, in case the user has a read-only disk @@ -1226,7 +1232,8 @@ def loadLocalSettings(self): if config.movielist.settings_per_directory.value: try: path = os.path.join(config.movielist.last_videodir.value, ".e2settings.pkl") - updates = pickle.load(open(path, "rb")) + with open(path, "rb") as fp: + updates = pickle.load(fp) self.applyConfigSettings(updates) except IOError, e: updates = { @@ -1407,7 +1414,7 @@ def reloadWithDelay(self): def enablePathSelect(self): self.pathselectEnabled = True if self.initialRun: - self.callLater(self.initUserDefinedActions) + # self.callLater(self.initUserDefinedActions) self.initialRun = False def doPathSelect(self): diff --git a/lib/python/Screens/NetworkSetup.py b/lib/python/Screens/NetworkSetup.py index b545c17dbfe..639604fdc0f 100644 --- a/lib/python/Screens/NetworkSetup.py +++ b/lib/python/Screens/NetworkSetup.py @@ -126,7 +126,7 @@ def updateList(self): os.unlink("/etc/default_gw") if os.path.exists("/etc/default_gw"): - fp = file('/etc/default_gw', 'r') + fp = open('/etc/default_gw', 'r') result = fp.read() fp.close() default_gw = result diff --git a/lib/python/Screens/PictureInPicture.py b/lib/python/Screens/PictureInPicture.py index a66a839f659..46a2ec1117c 100644 --- a/lib/python/Screens/PictureInPicture.py +++ b/lib/python/Screens/PictureInPicture.py @@ -19,7 +19,8 @@ def timedStopPipPigMode(): from Screens.InfoBar import InfoBar if InfoBar.instance and InfoBar.instance.session: if SystemInfo["hasPIPVisibleProc"]: - open(SystemInfo["hasPIPVisibleProc"], "w").write("1") + with open(SystemInfo["hasPIPVisibleProc"], "w") as fp: + fp.write("1") elif hasattr(InfoBar.instance.session, "pip"): InfoBar.instance.session.pip.relocate() global PipPigModeEnabled @@ -37,7 +38,8 @@ def PipPigMode(value): global PipPigModeEnabled if not PipPigModeEnabled: if SystemInfo["hasPIPVisibleProc"]: - open(SystemInfo["hasPIPVisibleProc"], "w").write("0") + with open(SystemInfo["hasPIPVisibleProc"], "w") as fp: + fp.write("0") else: import skin x, y, w, h = skin.parameters.get("PipHidePosition", (16, 16, 16, 16)) @@ -82,7 +84,8 @@ def __init__(self, session): self.onLayoutFinish.append(self.LayoutFinished) def __del__(self): - del self.pipservice + if hasattr(self, "pipservice"): + del self.pipservice self.setExternalPiP(False) self.setSizePosMainWindow() if hasattr(self, "dishpipActive") and self.dishpipActive is not None: @@ -154,7 +157,8 @@ def setSizePosMainWindow(self, x=0, y=0, w=0, h=0): def setExternalPiP(self, onoff): if SystemInfo["HasExternalPIP"]: - open(SystemInfo["HasExternalPIP"], "w").write(onoff and "on" or "off") + with open(SystemInfo["HasExternalPIP"], "w") as fp: + fp.write(onoff and "on" or "off") def active(self): self.pipActive.show() @@ -196,9 +200,14 @@ def playService(self, service): if not config.usage.hide_zap_errors.value: Notifications.AddPopup(text="PiP...\n" + _("Connected transcoding, limit - no PiP!"), type=MessageBox.TYPE_ERROR, timeout=5, id="ZapPipError") return False - if self.isPlayableForPipService(ref): - print "playing pip service", ref and ref.toString() - else: + if ref.toString().startswith("4097"): + self.pipservice = None + self.currentService = None + self.currentServiceReference = None + if not config.usage.hide_zap_errors.value: + Notifications.AddPopup(text=_("Service type 4097 incorrect for PiP!"), type=MessageBox.TYPE_ERROR, timeout=5, id="ZapPipError") + return False + if not self.isPlayableForPipService(ref): if not config.usage.hide_zap_errors.value: Notifications.AddPopup(text="PiP...\n" + _("No free tuner!"), type=MessageBox.TYPE_ERROR, timeout=5, id="ZapPipError") return False @@ -209,11 +218,13 @@ def playService(self, service): self.pipservice.start() self.currentService = service self.currentServiceReference = ref + print "[PictureInPicture] playing pip service", ref and ref.toString() return True else: self.pipservice = None self.currentService = None self.currentServiceReference = None + print "[PictureInPicture] error play pip service", ref and ref.toString() if not config.usage.hide_zap_errors.value: Notifications.AddPopup(text=_("Incorrect service type for Picture in Picture!"), type=MessageBox.TYPE_ERROR, timeout=5, id="ZapPipError") return False diff --git a/lib/python/Screens/ScanSetup.py b/lib/python/Screens/ScanSetup.py index c1ce8e0d86a..8613f74df87 100644 --- a/lib/python/Screens/ScanSetup.py +++ b/lib/python/Screens/ScanSetup.py @@ -694,7 +694,7 @@ def createSetup(self): self.list.append(self.typeOfScanEntry) elif self.DVB_type.value == "DVB-C": if config.Nims[index_to_scan].cable.scan_type.value != "provider": # only show predefined transponder if in provider mode - if self.scan_typecable.value == "predefined_transponder": + if self.scan_typecable.value == "predefined_transponder" and self.last_scan_typecable in ("single_transponder", "complete"): self.scan_typecable.value = self.cable_toggle[self.last_scan_typecable] self.last_scan_typecable = self.scan_typecable.value self.typeOfScanEntry = getConfigListEntry(_("Type of scan"), self.scan_typecable) diff --git a/lib/python/Screens/SessionGlobals.py b/lib/python/Screens/SessionGlobals.py index b438505c8e9..47b64c13c75 100644 --- a/lib/python/Screens/SessionGlobals.py +++ b/lib/python/Screens/SessionGlobals.py @@ -8,7 +8,8 @@ from Components.Sources.Boolean import Boolean from Components.Sources.RecordState import RecordState from Components.Converter.Combine import Combine -from Components.Renderer.FrontpanelLed import FrontpanelLed, PATTERN_OFF, PATTERN_BLINK +from Components.Renderer.FrontpanelLed import FrontpanelLed +from Components.config import config class SessionGlobals(Screen): @@ -26,15 +27,74 @@ def __init__(self, session): from Components.SystemInfo import SystemInfo - nr_leds = SystemInfo.get("NumFrontpanelLEDs", 0) + combine = Combine(func=lambda s: {(False, False): 0, (False, True): 1, (True, False): 2, (True, True): 3}[(s[0].boolean, s[1].boolean)]) + combine.connect(self["Standby"]) + combine.connect(self["RecordState"]) + + # | two leds | single led | + # recordstate standby red green + # false false off on off + # true false blnk on blnk + # false true on off off + # true true blnk off blnk + + PATTERN_ON = (20, 0xffffffff, 0xffffffff) + PATTERN_OFF = (20, 0, 0) + PATTERN_BLINK = (20, 0x55555555, 0xa7fccf7a) + + NormalLed0 = PATTERN_OFF + NormalLed1 = PATTERN_OFF + if config.usage.frontled_color.value == "1": + NormalLed0 = PATTERN_ON + if config.usage.frontled_color.value == "2": + NormalLed1 = PATTERN_ON + if config.usage.frontled_color.value == "3": + NormalLed0 = PATTERN_BLINK + if config.usage.frontled_color.value == "4": + NormalLed1 = PATTERN_BLINK - if nr_leds > 0: - combine = Combine(func=lambda s: {(False, False): 0, (False, True): 1, (True, False): 2, (True, True): 3}[(s[0].boolean, s[1].boolean)]) - combine.connect(self["Standby"]) - combine.connect(self["RecordState"]) + RecLed0 = PATTERN_OFF + RecLed1 = PATTERN_OFF + if config.usage.frontledrec_color.value == "1": + RecLed0 = PATTERN_ON + if config.usage.frontledrec_color.value == "2": + RecLed1 = PATTERN_ON + if config.usage.frontledrec_color.value == "3": + RecLed0 = PATTERN_BLINK + if config.usage.frontledrec_color.value == "4": + RecLed1 = PATTERN_BLINK + + StandbyLed0 = PATTERN_OFF + StandbyLed1 = PATTERN_OFF + if config.usage.frontledstdby_color.value == "1": + StandbyLed0 = PATTERN_ON + if config.usage.frontledstdby_color.value == "2": + StandbyLed1 = PATTERN_ON + if config.usage.frontledstdby_color.value == "3": + StandbyLed0 = PATTERN_BLINK + if config.usage.frontledstdby_color.value == "4": + StandbyLed1 = PATTERN_BLINK + + RecstdbyLed0 = PATTERN_OFF + RecstdbyLed1 = PATTERN_OFF + if config.usage.frontledrecstdby_color.value == "1": + RecstdbyLed0 = PATTERN_ON + if config.usage.frontledrecstdby_color.value == "2": + RecstdbyLed1 = PATTERN_ON + if config.usage.frontledrecstdby_color.value == "3": + RecstdbyLed0 = PATTERN_BLINK + if config.usage.frontledrecstdby_color.value == "4": + RecstdbyLed1 = PATTERN_BLINK + + nr_leds = SystemInfo.get("NumFrontpanelLEDs", 0) + have_touch_sensor = SystemInfo.get("HaveTouchSensor", False) - if nr_leds == 1: - FrontpanelLed(which=0, boolean=False, patterns=[PATTERN_OFF, PATTERN_BLINK, PATTERN_OFF, PATTERN_BLINK]).connect(combine) - elif nr_leds == 2: - FrontpanelLed(which=0, boolean=False, get_patterns=True).connect(combine) - FrontpanelLed(which=1, boolean=False, get_patterns=True).connect(combine) + if nr_leds == 1: + FrontpanelLed(which = 0, boolean = False, patterns = [PATTERN_OFF, PATTERN_BLINK, PATTERN_OFF, PATTERN_BLINK]).connect(combine) + elif nr_leds == 2: + if have_touch_sensor: + FrontpanelLed(which = 0, boolean = False, patterns = [NormalLed0, RecLed0, StandbyLed0, RecstdbyLed0]).connect(combine) + FrontpanelLed(which = 1, boolean = False, patterns = [NormalLed1, RecLed1, StandbyLed1, RecstdbyLed1]).connect(combine) + else: + FrontpanelLed(which = 0, boolean = False, patterns = [PATTERN_OFF, PATTERN_BLINK, PATTERN_ON, PATTERN_BLINK]).connect(combine) + FrontpanelLed(which = 1, boolean = False, patterns = [PATTERN_ON, PATTERN_ON, PATTERN_OFF, PATTERN_OFF]).connect(combine) diff --git a/lib/python/Screens/Setup.py b/lib/python/Screens/Setup.py index f167c8f94e6..e522414662e 100644 --- a/lib/python/Screens/Setup.py +++ b/lib/python/Screens/Setup.py @@ -15,10 +15,10 @@ # read the setupmenu try: # first we search in the current path - setupfile = file('data/setup.xml', 'r') + setupfile = open('data/setup.xml', 'r') except: # if not found in the current path, we use the global datadir-path - setupfile = file(eEnv.resolve('${datadir}/enigma2/setup.xml'), 'r') + setupfile = open(eEnv.resolve('${datadir}/enigma2/setup.xml'), 'r') setupdom = xml.etree.cElementTree.parse(setupfile) setupfile.close() diff --git a/lib/python/Screens/SleepTimerEdit.py b/lib/python/Screens/SleepTimerEdit.py index 83646fcd075..ed3e8a34353 100644 --- a/lib/python/Screens/SleepTimerEdit.py +++ b/lib/python/Screens/SleepTimerEdit.py @@ -113,10 +113,38 @@ def createSetup(self): if config.usage.wakeup_day[i].value: self.list.append(getConfigListEntry(_("Wakeup time"), config.usage.wakeup_time[i])) + self.list.append(getConfigListEntry(_("Enable power off timer"), + config.usage.poweroff_enabled, + _("Automatically power off box to deep standby mode."))) + if config.usage.poweroff_enabled.value: + for i in range(7): + self.list.append(getConfigListEntry([_("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday"), _("Sunday")][i], + config.usage.poweroff_day[i])) + if config.usage.poweroff_day[i].value: + self.list.append(getConfigListEntry(_("Power off time"), + config.usage.poweroff_time[i])) + self.list.append(getConfigListEntry(_("Next day starts at"), + config.usage.poweroff_nextday, + _("If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here."))) + self.list.append(getConfigListEntry(_("Force power off (even when not in standby)"), + config.usage.poweroff_force, + _("Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected."))) self["config"].list = self.list def ok(self): if self["config"].isChanged(): + from Components.PowerOffTimer import powerOffTimer + powerOffTimer.powerStateTimerChanged(dont_currentday=powerOffTimer.getDontCurrentday()) + active_on = active_off = False + for i in range(7): + if config.usage.wakeup_day[i].value: + active_on = True + if config.usage.poweroff_day[i].value: + active_off = True + if not active_on: + config.usage.wakeup_enabled.value = "no" + if not active_off: + config.usage.poweroff_enabled.value = False for x in self["config"].list: x[1].save() if self.getCurrentEntry().startswith(_("Sleeptimer")): @@ -126,7 +154,7 @@ def ok(self): else: sleepTimer = int(sleepTimer) if sleepTimer or not self.getCurrentEntry().endswith(_("(not activated)")): - InfoBar.instance.setSleepTimer(sleepTimer) + InfoBar.instance and InfoBar.instance.setSleepTimer(sleepTimer) self.close(True) self.close() @@ -153,8 +181,8 @@ def currentEventTime(self): remaining = 0 ref = self.session.nav.getCurrentlyPlayingServiceReference() if ref: - path = ref.getPath() - if path: # Movie + refstr = ref.toString() + if "%3a//" not in refstr and refstr.rsplit(":", 1)[1].startswith("/"): # Movie service = self.session.nav.getCurrentService() seek = service and service.seek() if seek: @@ -189,7 +217,7 @@ def isNextWakeupTime(standby_timer=False): return -1 wakeup_day, wakeup_time = WakeupDayTimeOfWeek() if wakeup_day == -1: - return -1 + return -1 elif wakeup_day == 0: return wakeup_time return wakeup_time + (86400 * wakeup_day) diff --git a/lib/python/Screens/SoftwareUpdate.py b/lib/python/Screens/SoftwareUpdate.py index 4a5a80729ae..59f935094a1 100644 --- a/lib/python/Screens/SoftwareUpdate.py +++ b/lib/python/Screens/SoftwareUpdate.py @@ -101,7 +101,8 @@ def checkTraficLight(self): try: # get image version and machine name machine = HardwareInfo().get_machine_name() - version = open("/etc/issue").readlines()[-2].split()[1] + with open("/etc/issue") as fp: + version = fp.readlines()[-2].split()[1] # do we have an entry for this version if (version in status or 'all' in status) and (machine in status[version]['machines'] or 'all' in status[version]['machines']): @@ -139,6 +140,8 @@ def checkTraficLight(self): # show the user the message first if message is not None: + if type(message) == unicode: + message = message.encode('utf-8') if abort: self.session.openWithCallback(self.close, MessageBox, message, type=MessageBox.TYPE_MESSAGE, picon=picon) else: @@ -296,7 +299,9 @@ def startActualUpgrade(self, answer): text = "\n".join([x[0] for x in sorted(self.opkg.getFetchedList(), key=lambda d: d[0])]) self.session.openWithCallback(boundFunction(self.opkgCallback, OpkgComponent.EVENT_DONE, None), TextBox, text, _("Packages to update"), True) elif answer[1] == "log": - text = open("/home/root/opkgupgrade.log", "r").read() + if os.path.isfile("/home/root/opkgupgrade.log"): + with open("/home/root/opkgupgrade.log", "r") as fp: + text = fp.read() self.session.openWithCallback(boundFunction(self.opkgCallback, OpkgComponent.EVENT_DONE, None), TextBox, text, _("Latest update log"), True) else: self.opkg.startCmd(OpkgComponent.CMD_UPGRADE, args={'test_only': False}) diff --git a/lib/python/Screens/Standby.py b/lib/python/Screens/Standby.py index adbbd446093..d2361b81863 100644 --- a/lib/python/Screens/Standby.py +++ b/lib/python/Screens/Standby.py @@ -28,7 +28,7 @@ QUIT_ERROR_RESTART = 5 QUIT_DEBUG_RESTART = 6 QUIT_MANUFACTURER_RESET = 7 -QUIT_MAINT = 16 +QUIT_REBOOT_RECOVERY = 16 QUIT_UPGRADE_PROGRAM = 42 QUIT_IMAGE_RESTORE = 43 @@ -86,7 +86,7 @@ def __init__(self, session, StandbyCounterIncrease=True): self.prev_running_service = eServiceReference(config.tv.lastservice.value) service = self.prev_running_service and self.prev_running_service.toString() if service: - if service.rsplit(":", 1)[1].startswith("/"): + if "%3a//" not in service and service.rsplit(":", 1)[1].startswith("/"): self.paused_service = hasattr(self.session.current_dialog, "pauseService") and hasattr(self.session.current_dialog, "unPauseService") and self.session.current_dialog or self.infoBarInstance self.paused_action = hasattr(self.paused_service, "seekstate") and hasattr(self.paused_service, "SEEK_STATE_PLAY") and self.paused_service.seekstate == self.paused_service.SEEK_STATE_PLAY self.paused_action and self.paused_service.pauseService() @@ -101,8 +101,11 @@ def __init__(self, session, StandbyCounterIncrease=True): else: self.timeHandler.m_timeUpdated.get().append(self.stopService) - if self.session.pipshown: + if hasattr(self.session, "pipshown") and self.session.pipshown: self.infoBarInstance and hasattr(self.infoBarInstance, "showPiP") and self.infoBarInstance.showPiP() + if hasattr(self.session, "pip"): + del self.session.pip + self.session.pipshown = False if SystemInfo["ScartSwitch"]: self.avswitch.setInput("SCART") @@ -250,6 +253,7 @@ def __init__(self, session, retvalue=QUIT_SHUTDOWN): from Components.Label import Label text = { QUIT_SHUTDOWN: _("Your receiver is shutting down"), + QUIT_REBOOT_RECOVERY: _("Your receiver is rebooting into Recovery Mode"), QUIT_REBOOT: _("Your receiver is rebooting"), QUIT_RESTART: _("The user interface of your receiver is restarting"), QUIT_UPGRADE_FP: _("Your frontprocessor will be updated\nPlease wait until your receiver reboots\nThis may take a few minutes"), @@ -295,6 +299,7 @@ def __init__(self, session, retvalue=QUIT_SHUTDOWN, timeout=-1, default_yes=Fals if reason: text = { QUIT_SHUTDOWN: _("Really shutdown now?"), + QUIT_REBOOT_RECOVERY: _("Really reboot into Recovery Mode?"), QUIT_REBOOT: _("Really reboot now?"), QUIT_RESTART: _("Really restart now?"), QUIT_UPGRADE_FP: _("Really update the frontprocessor and reboot now?"), @@ -338,9 +343,10 @@ def close(self, value): if not inStandby: if os.path.exists("/usr/script/standby_enter.sh"): Console().ePopen("/usr/script/standby_enter.sh") - if SystemInfo["HasHDMI-CEC"] and config.hdmicec.enabled.value and config.hdmicec.control_tv_standby.value and config.hdmicec.next_boxes_detect.value: - import Components.HdmiCec - Components.HdmiCec.hdmi_cec.secondBoxActive() + if SystemInfo["HasHDMI-CEC"] and config.hdmicec.enabled.value and ((config.hdmicec.control_tv_standby.value and config.hdmicec.next_boxes_detect.value) or config.hdmicec.handle_deepstandby_events.value != "no"): + if config.hdmicec.control_tv_standby.value and config.hdmicec.next_boxes_detect.value: + import Components.HdmiCec + Components.HdmiCec.hdmi_cec.secondBoxActive() self.delay = eTimer() self.delay.timeout.callback.append(self.quitMainloop) self.delay.start(1500, True) diff --git a/lib/python/Screens/StartWizard.py b/lib/python/Screens/StartWizard.py index 31d72e9d823..374912ed702 100644 --- a/lib/python/Screens/StartWizard.py +++ b/lib/python/Screens/StartWizard.py @@ -107,7 +107,8 @@ def __init__(self, session): self.package = None import glob - mac_address = open('/sys/class/net/eth0/address', 'r').readline().strip().replace(":", "") + with open('/sys/class/net/eth0/address', 'r') as fp: + mac_address = fp.readline().strip().replace(":", "") autoinstallfiles = glob.glob('/media/*/backup/autoinstall%s' % mac_address) + glob.glob('/media/net/*/backup/autoinstall%s' % mac_address) if not autoinstallfiles: autoinstallfiles = glob.glob('/media/*/backup/autoinstall') + glob.glob('/media/net/*/backup/autoinstall') @@ -115,7 +116,8 @@ def __init__(self, session): for autoinstallfile in autoinstallfiles: if os.path.isfile(autoinstallfile): autoinstalldir = os.path.dirname(autoinstallfile) - self.packages = [package.strip() for package in open(autoinstallfile).readlines()] + [os.path.join(autoinstalldir, file) for file in os.listdir(autoinstalldir) if file.endswith(".ipk")] + with open(autoinstallfile) as fp: + self.packages = [package.strip() for package in fp.readlines()] + [os.path.join(autoinstalldir, file) for file in os.listdir(autoinstalldir) if file.endswith(".ipk")] if self.packages: self.number_of_packages = len(self.packages) # make sure we have a valid package list before attempting to restore packages @@ -126,7 +128,8 @@ def __init__(self, session): def run_console(self): self["progress"].setValue(100 * (self.number_of_packages - len(self.packages)) / self.number_of_packages) try: - open("/proc/progress", "w").write(str(self["progress"].value)) + with open("/proc/progress", "w") as fp: + fp.write(str(self["progress"].value)) except IOError: pass self.package = self.packages.pop(0) @@ -148,7 +151,8 @@ def appClosed(self, retval=False): self.dataAvail("An error occurred during installing %s - Please try again later\n" % self.package) else: self.dataAvail("An error occurred during opkg update - Please try again later\n") - installed = [line.strip().split(":", 1)[1].strip() for line in open('/var/lib/opkg/status').readlines() if line.startswith('Package:')] + with open('/var/lib/opkg/status') as fp: + installed = [line.strip().split(":", 1)[1].strip() for line in fp.readlines() if line.startswith('Package:')] self.packages = [package for package in self.packages if package not in installed] if self.packages: self.run_console() diff --git a/lib/python/StartEnigma.py b/lib/python/StartEnigma.py index cb022f3503e..00437233ead 100644 --- a/lib/python/StartEnigma.py +++ b/lib/python/StartEnigma.py @@ -458,6 +458,7 @@ def runScreenTest(): session = Session(desktop=enigma.getDesktop(0), summary_desktop=enigma.getDesktop(1), navigation=nav) CiHandler.setSession(session) + powerOffTimer.setSession(session) screensToRun = [p.__call__ for p in plugins.getPlugins(PluginDescriptor.WHERE_WIZARD)] @@ -587,6 +588,24 @@ def runNextScreen(session, screensToRun, *result): import Components.Lcd Components.Lcd.InitLcd() +from boxbranding import getBoxType + +if getBoxType() in ('dm7080', 'dm820', 'dm900', 'dm920', 'dreamone', 'dreamtwo'): + f = open("/proc/stb/hdmi-rx/0/hdmi_rx_monitor", "r") + check = f.read() + f.close() + if check.startswith("on"): + f = open("/proc/stb/hdmi-rx/0/hdmi_rx_monitor", "w") + f.write("off") + f.close() + f = open("/proc/stb/audio/hdmi_rx_monitor", "r") + check = f.read() + f.close() + if check.startswith("on"): + f = open("/proc/stb/audio/hdmi_rx_monitor", "w") + f.write("off") + f.close() + profile("RFMod") import Components.RFmod Components.RFmod.InitRFmod() @@ -598,6 +617,9 @@ def runNextScreen(session, screensToRun, *result): profile("RcModel") import Components.RcModel +profile("Init:PowerOffTimer") +from Components.PowerOffTimer import powerOffTimer + #from enigma import dump_malloc_stats #t = eTimer() #t.callback.append(dump_malloc_stats) diff --git a/lib/python/Tools/FallbackTimer.py b/lib/python/Tools/FallbackTimer.py index fcac01ce438..f335de5ec17 100644 --- a/lib/python/Tools/FallbackTimer.py +++ b/lib/python/Tools/FallbackTimer.py @@ -106,7 +106,7 @@ def addTimer(self, timer, fallbackFunction, fallbackFunctionNOK=None): timer.justplay, timer.afterEvent, timer.repeated, - timer.dirname, + quote(timer.dirname), timer.eit or 0, ) self.getUrl(url).addCallback(self.getUrlFallback).addErrback(self.fallback) @@ -127,7 +127,7 @@ def editTimer(self, timer, fallbackFunction, fallbackFunctionNOK=None): timer.service_ref_prev, timer.begin_prev, timer.end_prev, - timer.dirname, + quote(timer.dirname), timer.eit or 0, ) self.getUrl(url).addCallback(self.getUrlFallback).addErrback(self.fallback) diff --git a/lib/python/Tools/GetEcmInfo.py b/lib/python/Tools/GetEcmInfo.py index 11fbe6a55aa..dbd3dbcac55 100644 --- a/lib/python/Tools/GetEcmInfo.py +++ b/lib/python/Tools/GetEcmInfo.py @@ -31,7 +31,11 @@ def pollEcmData(self): info['ecminterval1'] = oecmi0 old_ecm_time = ecm_time try: - ecm = open(ECM_INFO, 'rb').readlines() + if os.path.isfile(ECM_INFO): + with open(ECM_INFO, 'rb') as fp: + ecm = fp.readlines() + else: + ecm = '' except: ecm = '' for line in ecm: @@ -79,7 +83,9 @@ def getText(self): if info['decode'] == 'Network': cardid = 'id:' + info.get('prov', '') try: - share = open('/tmp/share.info', 'rb').readlines() + if os.path.isfile('/tmp/share.info'): + with open('/tmp/share.info', 'rb') as fp: + share = fp.readlines() for line in share: if cardid in line: self.textvalue = line.strip() diff --git a/lib/python/Tools/HardwareInfo.py b/lib/python/Tools/HardwareInfo.py index 9e5b7e735f2..ebcb4b1c906 100644 --- a/lib/python/Tools/HardwareInfo.py +++ b/lib/python/Tools/HardwareInfo.py @@ -1,4 +1,5 @@ from Tools.Directories import SCOPE_SKIN, resolveFilename +from os.path import isfile hw_info = None @@ -19,31 +20,30 @@ def __init__(self): print "[HardwareInfo] Scanning hardware info" # Version - try: - self.device_version = open("/proc/stb/info/version").read().strip() - except: - pass + if isfile("/proc/stb/info/version"): + with open("/proc/stb/info/version") as fp: + self.device_version = fp.read().strip() # Revision - try: - self.device_revision = open("/proc/stb/info/board_revision").read().strip() - except: - pass + if isfile("/proc/stb/info/board_revision"): + with open("/proc/stb/info/board_revision") as fp: + self.device_revision = fp.read().strip() # Name ... bit odd, but history prevails - try: - self.device_name = open("/proc/stb/info/model").read().strip() - except: - pass + if isfile("/proc/stb/info/model"): + with open("/proc/stb/info/model") as fp: + self.device_name = fp.read().strip() # Brandname ... bit odd, but history prevails try: - self.device_brandname = open("/proc/stb/info/brandname").read().strip() + with open("/proc/stb/info/brandname") as fp: + self.device_brandname = fp.read().strip() except: pass # Model - for line in open((resolveFilename(SCOPE_SKIN, 'hw_info/hw_info.cfg')), 'r'): + fp = open((resolveFilename(SCOPE_SKIN, 'hw_info/hw_info.cfg')), 'r') + for line in fp: if not line.startswith('#') and not line.isspace(): l = line.strip().replace('\t', ' ') if ' ' in l: @@ -51,11 +51,13 @@ def __init__(self): else: infoFname = l prefix = "" - try: - self.device_model = prefix + open("/proc/stb/info/" + infoFname).read().strip() + + if isfile("/proc/stb/info/" + infoFname): + fd = open("/proc/stb/info/" + infoFname) + self.device_model = prefix + fd.read().strip() + fd.close() break - except: - pass + fp.close() # standard values self.device_model = self.device_model or self.device_name diff --git a/lib/python/Tools/Multiboot.py b/lib/python/Tools/Multiboot.py index a4fa31a47fe..ee4e87294a4 100644 --- a/lib/python/Tools/Multiboot.py +++ b/lib/python/Tools/Multiboot.py @@ -1,9 +1,11 @@ from Components.SystemInfo import SystemInfo from Components.Console import Console +from Tools.Directories import fileHas, fileExists import os import glob import tempfile - +import subprocess +import re class tmp: dir = None @@ -11,14 +13,18 @@ class tmp: def getMultibootStartupDevice(): tmp.dir = tempfile.mkdtemp(prefix="Multiboot") - for device in ('/dev/block/by-name/bootoptions', '/dev/mmcblk0p1', '/dev/mmcblk1p1', '/dev/mmcblk0p3', '/dev/mmcblk0p4'): + if SystemInfo["hasKexec"]: # kexec kernel multiboot + bootList = ("/dev/mmcblk0p4", "/dev/mmcblk0p7", "/dev/mmcblk0p9") + else: #legacy multiboot + bootList = ("/dev/mmcblk0p1", "/dev/mmcblk1p1", "/dev/mmcblk0p3", "/dev/mmcblk0p4", "/dev/mtdblock2", "/dev/block/by-name/bootoptions") + for device in bootList: if os.path.exists(device): if os.path.exists("/dev/block/by-name/flag"): Console().ePopen('mount --bind %s %s' % (device, tmp.dir)) else: Console().ePopen('mount %s %s' % (device, tmp.dir)) if os.path.isfile(os.path.join(tmp.dir, "STARTUP")): - print '[Multiboot] Startupdevice found:', device + print('[Multiboot] Startupdevice found:', device) return device Console().ePopen('umount %s' % tmp.dir) if not os.path.ismount(tmp.dir): @@ -41,15 +47,20 @@ def getMultibootslots(): slotnumber = file.rsplit('_', 1)[1] if slotnumber.isdigit() and slotnumber not in bootslots: slot = {} - for line in open(file).readlines(): - if 'root=' in line: - device = getparam(line, 'root') - if os.path.exists(device): - slot['device'] = device - slot['startupfile'] = os.path.basename(file) - if 'rootsubdir' in line: - slot['rootsubdir'] = getparam(line, 'rootsubdir') - break + with open(file) as fp: + for line in fp.readlines(): + if 'root=' in line: + device = getparam(line, 'root') + if "UUID=" in device: + slotx = str(getUUIDtoSD(device)) + if slotx is not None: + device = slotx + if os.path.exists(device) or device == 'ubi0:ubifs': + slot['device'] = device + slot['startupfile'] = os.path.basename(file) + if 'rootsubdir' in line: + slot['rootsubdir'] = getparam(line, 'rootsubdir') + break if slot: bootslots[int(slotnumber)] = slot Console().ePopen('umount %s' % tmp.dir) @@ -65,18 +76,29 @@ def getMultibootslots(): def getCurrentImage(): if SystemInfo["canMultiBoot"]: - slot = [x[-1] for x in open('/sys/firmware/devicetree/base/chosen/bootargs', 'r').read().split() if x.startswith('rootsubdir')] - if slot: - return int(slot[0]) - else: - device = getparam(open('/sys/firmware/devicetree/base/chosen/bootargs', 'r').read(), 'root') - for slot in SystemInfo["canMultiBoot"].keys(): - if SystemInfo["canMultiBoot"][slot]['device'] == device: - return slot + if SystemInfo["hasKexec"]: # kexec kernel multiboot + with open('/sys/firmware/devicetree/base/chosen/bootargs', 'r') as fp: + rootsubdir = [x for x in fp.read().split() if x.startswith("rootsubdir")] + char = "/" if "/" in rootsubdir[0] else "=" + return int(rootsubdir[0].rsplit(char, 1)[1][11:]) + else: #legacy multiboot + with open('/sys/firmware/devicetree/base/chosen/bootargs', 'r') as fp: + slot = [x[-1] for x in fp.read().split() if x.startswith('rootsubdir')] + if slot: + return int(slot[0]) + else: + with open('/sys/firmware/devicetree/base/chosen/bootargs', 'r') as fp: + device = getparam(fp.read(), 'root') + for slot in SystemInfo["canMultiBoot"].keys(): + if SystemInfo["canMultiBoot"][slot]['device'] == device: + return slot def getCurrentImageMode(): - return bool(SystemInfo["canMultiBoot"]) and SystemInfo["canMode12"] and int(open('/sys/firmware/devicetree/base/chosen/bootargs', 'r').read().replace('\0', '').split('=')[-1]) + if SystemInfo["canMultiBoot"] and SystemInfo["canMode12"]: + with open("/sys/firmware/devicetree/base/chosen/bootargs", "r") as fp: + results = re.search(r"\bboxmode=(\d+)\b", fp.read()) + return results and int(results.group(1)) def deleteImage(slot): @@ -101,13 +123,26 @@ def restoreImages(): if not os.path.ismount(tmp.dir): os.rmdir(tmp.dir) +def getUUIDtoSD(UUID): # returns None on failure + check = "/sbin/blkid" + if fileExists(check): + lines = subprocess.check_output([check]).decode(encoding="utf8", errors="ignore").split("\n") + for line in lines: + if UUID in line.replace('"', ''): + return line.split(":")[0].strip() + else: + return None + def getImagelist(): imagelist = {} if SystemInfo["canMultiBoot"]: tmp.dir = tempfile.mkdtemp(prefix="Multiboot") for slot in sorted(SystemInfo["canMultiBoot"].keys()): - Console().ePopen('mount %s %s' % (SystemInfo["canMultiBoot"][slot]['device'], tmp.dir)) + if SystemInfo["canMultiBoot"][slot]['device'] == 'ubi0:ubifs': + Console().ePopen('mount -t ubifs %s %s' % (SystemInfo["canMultiBoot"][slot]['device'], tmp.dir)) + else: + Console().ePopen('mount %s %s' % (SystemInfo["canMultiBoot"][slot]['device'], tmp.dir)) imagedir = os.sep.join(filter(None, [tmp.dir, SystemInfo["canMultiBoot"][slot].get('rootsubdir', '')])) if os.path.isfile(os.path.join(imagedir, 'usr/bin/enigma2')): try: @@ -118,7 +153,8 @@ def getImagelist(): date = max(date, datetime.fromtimestamp(os.stat(os.path.join(imagedir, "usr/bin/enigma2")).st_mtime).strftime('%Y-%m-%d')) except: date = _("Unknown") - imagelist[slot] = {'imagename': "%s (%s)" % (open(os.path.join(imagedir, "etc/issue")).readlines()[-2].capitalize().strip()[:-6], date)} + with open(os.path.join(imagedir, "etc/issue")) as fp: + imagelist[slot] = {'imagename': "%s (%s)" % (fp.readlines()[-2].capitalize().strip()[:-6], date)} elif os.path.isfile(os.path.join(imagedir, 'usr/bin/enigma2.bak')): imagelist[slot] = {'imagename': _("Deleted image")} else: diff --git a/lib/python/Tools/Profile.py b/lib/python/Tools/Profile.py index 01f9a649aeb..1365367b99f 100644 --- a/lib/python/Tools/Profile.py +++ b/lib/python/Tools/Profile.py @@ -12,7 +12,8 @@ profile_file = None try: - profile_old = open(resolveFilename(SCOPE_CONFIG, "profile"), "r").readlines() + with open(resolveFilename(SCOPE_CONFIG, "profile"), "r") as fp: + profile_old = fp.readlines() t = None for line in profile_old: @@ -41,7 +42,8 @@ def profile(id): else: perc = PERCENTAGE_START try: - open("/proc/progress", "w").write("%d \n" % perc) + with open("/proc/progress", "w") as fp: + fp.write("%d \n" % perc) except IOError: pass diff --git a/lib/python/Tools/StbHardware.py b/lib/python/Tools/StbHardware.py index 2c8ff6341de..37256979630 100644 --- a/lib/python/Tools/StbHardware.py +++ b/lib/python/Tools/StbHardware.py @@ -2,99 +2,109 @@ from fcntl import ioctl from struct import pack, unpack from time import time, localtime, gmtime - +from enigma import getBoxType +from Tools.Directories import fileExists def getFPVersion(): ret = None - try: - ret = long(open("/proc/stb/fp/version", "r").read()) - except IOError: - try: - fp = open("/dev/dbox/fp0") - ret = ioctl(fp.fileno(), 0) - except IOError: - try: - ret = open("/sys/firmware/devicetree/base/bolt/tag", "r").read().rstrip("\0") - except: - print "getFPVersion failed!" - return ret - + if fileExists("/proc/stb/fp/version"): + with open("/proc/stb/fp/version", "r") as fp: + if getBoxType() in ('dm7080','dm820','dm520','dm525','dm900','dm920'): + ret = fp.read() + else: + ret = long(fp.read()) + return ret + elif fileExists("/dev/dbox/fp0"): + with open("/dev/dbox/fp0") as fp: + ret = ioctl(fp.fileno(),0) + return ret + elif fileExists("/sys/firmware/devicetree/base/bolt/tag"): + with open("/sys/firmware/devicetree/base/bolt/tag", "r") as fp: + ret = fp.read().rstrip("\0") + return ret + else: + print "getFPVersion failed!" + return ret def setFPWakeuptime(wutime): - try: - open("/proc/stb/fp/wakeup_time", "w").write(str(wutime)) - except IOError: - try: - fp = open("/dev/dbox/fp0") - ioctl(fp.fileno(), 6, pack('L', wutime)) # set wake up - except IOError: - print "setFPWakeupTime failed!" - + if fileExists("/proc/stb/fp/wakeup_time"): + with open("/proc/stb/fp/wakeup_time", "w") as fp: + fp.write(str(wutime)) + return + elif fileExists("/dev/dbox/fp0"): + with open("/dev/dbox/fp0") as fp: + ioctl(fp.fileno(), 6, pack('L', wutime)) + return + else: + print "setFPWakeupTime failed!" def setRTCoffset(forsleep=None): if forsleep is None: - forsleep = (localtime(time()).tm_hour - gmtime(time()).tm_hour) * 3600 - try: - open("/proc/stb/fp/rtc_offset", "w").write(str(forsleep)) - print "[RTC] set RTC offset to %s sec." % (forsleep) - except IOError: - print "setRTCoffset failed!" - + forsleep = (localtime(time()).tm_hour-gmtime(time()).tm_hour)*3600 + with open("/proc/stb/fp/rtc_offset", "w") as fp: + fp.write(str(forsleep)) + print "[RTC] set RTC offset to %s sec." % (forsleep) def setRTCtime(wutime): if path.exists("/proc/stb/fp/rtc_offset"): setRTCoffset() - try: - open("/proc/stb/fp/rtc", "w").write(str(wutime)) - except IOError: - try: - fp = open("/dev/dbox/fp0") - ioctl(fp.fileno(), 0x101, pack('L', wutime)) # set wake up - except IOError: - print "setRTCtime failed!" - + if fileExists("/proc/stb/fp/rtc"): + with open("/proc/stb/fp/rtc", "w") as fp: + fp.write(str(wutime)) + return + elif fileExists("/dev/dbox/fp0"): + with open("/dev/dbox/fp0") as fp: + ioctl(fp.fileno(), 0x101, pack('L', wutime)) + return + else: + print "setRTCtime failed!" def getFPWakeuptime(): ret = 0 - try: - ret = long(open("/proc/stb/fp/wakeup_time", "r").read()) - except IOError: - try: - fp = open("/dev/dbox/fp0") - ret = unpack('L', ioctl(fp.fileno(), 5, ' '))[0] # get wakeuptime - except IOError: - print "getFPWakeupTime failed!" - return ret + if fileExists("/proc/stb/fp/wakeup_time"): + with open("/proc/stb/fp/wakeup_time", "r") as fp: + ret = long(fp.read()) + return ret + elif fileExists("/dev/dbox/fp0"): + with open("/dev/dbox/fp0") as fp: + ret = unpack('L', ioctl(fp.fileno(), 5, ' '))[0] + return ret + else: + print "getFPWakeupTime failed!" + return ret wasTimerWakeup = None - def getFPWasTimerWakeup(): global wasTimerWakeup if wasTimerWakeup is not None: return wasTimerWakeup wasTimerWakeup = False - try: - wasTimerWakeup = int(open("/proc/stb/fp/was_timer_wakeup", "r").read()) and True or False - except: - try: - fp = open("/dev/dbox/fp0") + if fileExists("/proc/stb/fp/was_timer_wakeup"): + with open("/proc/stb/fp/was_timer_wakeup", "r") as fp: + wasTimerWakeup = int(fp.read()) and True or False + if wasTimerWakeup: + clearFPWasTimerWakeup() + return wasTimerWakeup + elif fileExists("/dev/dbox/fp0"): + with open("/dev/dbox/fp0") as fp: wasTimerWakeup = unpack('B', ioctl(fp.fileno(), 9, ' '))[0] and True or False - except IOError: - print "wasTimerWakeup failed!" - if wasTimerWakeup: - # clear hardware status - clearFPWasTimerWakeup() - return wasTimerWakeup - + if wasTimerWakeup: + clearFPWasTimerWakeup() + return wasTimerWakeup + else: + print "wasTimerWakeup failed!" + return wasTimerWakeup def clearFPWasTimerWakeup(): - try: - open("/proc/stb/fp/was_timer_wakeup", "w").write('0') - except: - try: - fp = open("/dev/dbox/fp0") + if fileExists("/proc/stb/fp/was_timer_wakeup"): + with open("/proc/stb/fp/was_timer_wakeup", "w") as fp: + fp.write('0') + return + elif fileExists("/dev/dbox/fp0"): + with open("/dev/dbox/fp0") as fp: ioctl(fp.fileno(), 10) - except IOError: - print "clearFPWasTimerWakeup failed!" + return + else: + print "clearFPWasTimerWakeup failed!" diff --git a/lib/python/keymapparser.py b/lib/python/keymapparser.py index 65d427e4bcb..a3031463ea6 100644 --- a/lib/python/keymapparser.py +++ b/lib/python/keymapparser.py @@ -1,5 +1,6 @@ import enigma import xml.etree.cElementTree +from Tools.Directories import fileExists from keyids import KEYIDS @@ -80,9 +81,9 @@ def readKeymap(filename): p = enigma.eActionMap.getInstance() assert p - try: + if fileExists(filename): source = open(filename) - except: + else: print "[keymapparser] keymap file " + filename + " not found" return @@ -91,6 +92,7 @@ def readKeymap(filename): except: raise KeymapError("[keymapparser] keymap %s not well-formed." % filename) + source.close() keymap = dom.getroot() for cmap in keymap.findall("map"): diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 304d6fdd0c6..720e567b80a 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -1332,6 +1332,7 @@ RESULT eDVBServicePlay::start() eServiceReferenceDVB service = (eServiceReferenceDVB&)m_reference; bool scrambled = true; int packetsize = 188; + RESULT ret = 0; eDVBServicePMTHandler::serviceType type = eDVBServicePMTHandler::livetv; if(tryFallbackTuner(/*REF*/service, /*REF*/m_is_stream, m_is_pvr, /*simulate*/false)) @@ -1379,7 +1380,7 @@ RESULT eDVBServicePlay::start() m_first_program_info = 1; ePtr source = createTsSource(service, packetsize); - m_service_handler.tuneExt(service, source, service.path.c_str(), m_cue, false, m_dvb_service, type, scrambled); + ret = m_service_handler.tuneExt(service, source, service.path.c_str(), m_cue, false, m_dvb_service, type, scrambled); if (m_is_pvr) { @@ -1396,7 +1397,7 @@ RESULT eDVBServicePlay::start() } m_event(this, evStart); } - return 0; + return ret; } RESULT eDVBServicePlay::stop() diff --git a/po/ar.po b/po/ar.po index e64ef86c181..de48cc1cd3f 100644 --- a/po/ar.po +++ b/po/ar.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: OBH enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2019-04-12 12:36+0300\n" "Last-Translator: mosad - مساعد الجعيد \n" "Language-Team: mosad - مساعد الجعيد\n" @@ -1288,6 +1288,9 @@ msgstr "بحث آلـى" msgid "Automatic scan" msgstr "بحث آلـى" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1563,6 +1566,10 @@ msgstr "ضبط الكامة الداخلية (واجهة المستخدم)" msgid "CI assignment" msgstr "مهمة واجهة المستخدم" +#, fuzzy +msgid "CI enabled" +msgstr "تم التفعيل" + msgid "CI slot: " msgstr "" @@ -1849,6 +1856,10 @@ msgstr "اختار ما إذا كانت المسارات الصوتية متعد msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "اختار ما إذا كانت المسارات الصوتية متعددة القنوات يجب أن تكون مختلطة إلى ستريو." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "اختار ما إذا كانت المسارات الصوتية متعددة القنوات يجب أن تكون مختلطة إلى ستريو." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "اختار ما إذا كانت المسارات الصوتية متعددة القنوات يجب أن تكون مختلطة إلى ستريو." @@ -2626,8 +2637,9 @@ msgstr "" msgid "DTS downmix" msgstr "الصوت الدولبي / نظام المسرح الرقمي المزدوج" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "الصوت الدولبي / نظام المسرح الرقمي المزدوج" msgid "DUAL LAYER DVD" msgstr "ديفيدي ثنائي الشاشة" @@ -3458,6 +3470,10 @@ msgstr "تمكين جدول معلومات الحدث في دليل البرام msgid "Enable parental protection" msgstr "تمكين الحماية الأبوية" +#, fuzzy +msgid "Enable power off timer" +msgstr "تمكين وضع التحريك للقنوات" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -4078,9 +4094,15 @@ msgstr "سيتم تنفيذ المهام التالية بعد الضغط على msgid "Force legacy signal stats" msgstr "فرض إحصاءات الإشارات القديمة" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "تهئية" @@ -4461,6 +4483,9 @@ msgstr "ضبط القرص الصلب" msgid "Harddisk Setup" msgstr "ضبط القرص الصلب" +msgid "Hardware Accelerated" +msgstr "" + msgid "Hardware: " msgstr "" @@ -4650,6 +4675,9 @@ msgstr "إذا تم تعيينها على قيم إشارة 'نعم' (معدل msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5405,13 +5433,6 @@ msgstr "مايوت" msgid "Media player" msgstr "مشغل الوسائط" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "إصدار جديد:" - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "باحث الوسائط" @@ -5814,6 +5835,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "التالي" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "نيكاراغوا" @@ -6150,6 +6174,10 @@ msgstr "فقط حرك الطبق بسرعة قبل هذه الساعة." msgid "Only on startup" msgstr "فقط عند بدء التشغيل" +#, fuzzy +msgid "Only power off" +msgstr "تمكين وضع التحريك للقنوات" + #, fuzzy msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "حدد فقط 'نعم' إذا كنت تستخدم جهاز القسام المتعدد الذي يتطلب إشارة أمر الدايزك بمنفذ أ. بالنسبة إلى جميع الإعدادات الأخرى ، حدد 'لا'." @@ -6177,7 +6205,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6744,6 +6772,13 @@ msgstr "الأغلاق" msgid "Power management. Consult your receiver's manual for more information." msgstr "إدارة الإغلاق. راجع دليل المتلقي الخاص بك للحصول على المعلومات." +#, fuzzy +msgid "Power off time" +msgstr "وقت البدء" + +msgid "Power off timer" +msgstr "" + #, fuzzy msgid "Power on display" msgstr "إغلاق شاشة العرض الصغيرة" @@ -8307,6 +8342,9 @@ msgstr "بحث عـن القنـوات" msgid "Service title mode" msgstr "وضع عنوان الخدمة" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -9432,7 +9470,7 @@ msgstr "" msgid "Switch on the display during Suspend Mode" msgstr "" -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "" #, fuzzy @@ -12039,10 +12077,6 @@ msgstr "فيلم تجريبي/فيديو" msgid "extra wide" msgstr "عريض واسع" -#, fuzzy -msgid "extrawide" -msgstr "عريض واسع" - msgid "failed" msgstr "فشل" @@ -12245,6 +12279,10 @@ msgstr "القائمة" msgid "mins" msgstr "دقائق" +#, fuzzy +msgid "module disabled" +msgstr "تم التعطيل" + msgid "month" msgstr "شهر" @@ -12732,10 +12770,10 @@ msgstr "تفعيل" msgid "until standby/restart" msgstr "حتى وضع الانتظار/إعادة التشغيل" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -12748,6 +12786,9 @@ msgstr "محدده من قبل المستخدم" msgid "variety show" msgstr "عرض متنوع" +msgid "version" +msgstr "إصدار" + msgid "vertical" msgstr "رأسي" diff --git a/po/bg.po b/po/bg.po index 2baf1721024..3898bdf1de5 100644 --- a/po/bg.po +++ b/po/bg.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: enigma2 3.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-15 17:58+0200\n" -"PO-Revision-Date: 2022-05-07 14:01+0300\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" +"PO-Revision-Date: 2022-05-29 15:28+0300\n" "Last-Translator: Мартин Петков \n" "Language-Team: Bulgarian\n" "Language: bg\n" @@ -1021,9 +1021,8 @@ msgstr "Армения" msgid "Artist" msgstr "Артист" -#, fuzzy msgid "Arts/Culture (without music)" -msgstr "изкуство/култура (без музика, общо)" +msgstr "Изкуство/Култура (без музика)" msgid "Aruba" msgstr "Аруба" @@ -1178,6 +1177,9 @@ msgstr "Автоматични отметки" msgid "Automatic scan" msgstr "Автоматично Търсене" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Автоматично постави ТВ в режим готовност независимо дали приемника се изключва или преминава в режим готовност." @@ -1440,6 +1442,10 @@ msgstr "Настройка CI (Common Interface) модул" msgid "CI assignment" msgstr "CI назначаване" +#, fuzzy +msgid "CI enabled" +msgstr "FCC активиране" + msgid "CI slot: " msgstr "CI слот: " @@ -1719,6 +1725,10 @@ msgstr "Изберете дали АА3 звукови пътечки да се msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Изберете дали WMA Pro звук да се сведе до стерео." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Настройка дали многоканален aac+ звук да се сведе до стерео." + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Настройка дали многоканален aac+ звук да се сведе до стерео." @@ -2412,9 +2422,8 @@ msgstr "Чехия" msgid "D" msgstr "D" -#, fuzzy msgid "DAC" -msgstr "AC3" +msgstr "DAC" msgid "DHCP" msgstr "DHCP" @@ -2426,13 +2435,14 @@ msgid "DMM normal" msgstr "DMM нормален" msgid "DTS" -msgstr "" +msgstr "DTS" msgid "DTS downmix" msgstr "DTS downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS downmix" msgid "DUAL LAYER DVD" msgstr "DUAL LAYER DVD" @@ -2731,9 +2741,8 @@ msgstr "Директорията съдържа %(file)s и %(subdir)s." msgid "Disable" msgstr "Спри" -#, fuzzy msgid "Disable FCC during recordings" -msgstr "Винаги включвай ECM в записите" +msgstr "Спри FCC по време на запис" msgid "Disable Picture in Picture" msgstr "Спри Картина в Картината" @@ -2756,9 +2765,8 @@ msgstr "Спрян" msgid "Disk space to reserve for recordings (in GB)" msgstr "Запазено дисково пространство за записи (в GB)" -#, fuzzy msgid "Disk state: " -msgstr "състояние търсене" +msgstr "Състояние на диска: " msgid "Display 16:9 content as" msgstr "Покажи 16:9 като" @@ -2977,9 +2985,8 @@ msgstr "Има нови плъгини за теглене" msgid "Downloadable plugins" msgstr "Плъгини за теглене" -#, fuzzy msgid "Downloaded Images" -msgstr "Изтегляне на Имиджа" +msgstr "Изтеглени Имиджи" msgid "Downloading" msgstr "Изтегляне" @@ -2993,12 +3000,11 @@ msgstr "Опит за изтегляне на нов списък с пакет msgid "Downloading plugin information. Please wait..." msgstr "Изтеглям информация за плъгина. Моля изчакайте..." -#, fuzzy msgid "Downmix" -msgstr "DTS downmix" +msgstr "Свеждане до стерео" msgid "Drama and Films" -msgstr "" +msgstr "Драма и Филми" msgid "Drop unconfigured satellites" msgstr "Оставете неконфигурираните сателити" @@ -3040,12 +3046,9 @@ msgstr "EPG:" msgid "ERROR - failed to scan (%s)!" msgstr "Грешка при сканиране (%s)!" -#, fuzzy, python-format +#, python-format msgid "ERROR downloading file %s/%s" -msgstr "" -"Грешка при изтегляне на имиджа\n" -"%s\n" -"%s" +msgstr "Грешка при изтегляне на файл %s/%s" msgid "East" msgstr "Изток" @@ -3107,9 +3110,8 @@ msgstr "Електронен Програмен Гайд" msgid "Emergency" msgstr "Аварийно" -#, fuzzy msgid "Empty Trash" -msgstr "Празен слот" +msgstr "Изпразни Боклук" msgid "Empty slot" msgstr "Празен слот" @@ -3196,6 +3198,10 @@ msgstr "Активиране или деактивиране на HDMI-CEC." msgid "Enable parental protection" msgstr "Активиране на родителски контрол" +#, fuzzy +msgid "Enable power off timer" +msgstr "Активиране на таймер за включване" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Разрешете да се опита пускането на стрийм на канал от допълнителен enigma2 приемник, ако локалния тунер е зает.Укажете пълния URL, включително http:// и номер на порта (обикновено ...:8001), пример: http://IP_допълн.приемник:8001." @@ -3590,13 +3596,11 @@ msgstr "" "FBC - автоматично\n" "неактивен" -#, fuzzy msgid "FCC enabled" -msgstr "разрешен" +msgstr "FCC активиране" -#, fuzzy msgid "FCCSetup" -msgstr "Настройки" +msgstr "FCC Настройка" msgid "FEC" msgstr "FEC" @@ -3692,13 +3696,13 @@ msgid "Fast" msgstr "Бърз" msgid "Fast Channel Change" -msgstr "" +msgstr "Бързо Превключване на Канали" msgid "Fast Channel Change Setup" -msgstr "" +msgstr "Настройки за Бързо Превключване на Канали" msgid "Fast Channel Change setup" -msgstr "" +msgstr "Настройки за Бързо Превключване на Канали" msgid "Fast DiSEqC" msgstr "Бърз DiSEqC" @@ -3712,7 +3716,6 @@ msgstr "Скорости за превъртане напред" msgid "FastScan" msgstr "Бързо Сканиране" -#, fuzzy msgid "Fastscan" msgstr "Бързо Сканиране" @@ -3793,9 +3796,16 @@ msgstr "Следните задачи ще бъдат изпълнени, сле msgid "Force legacy signal stats" msgstr "Избиране на старите стат.данни за сигнала" +#, fuzzy +msgid "Force power off (even when not in standby)" +msgstr "Принудително превключване на запис канал в режим на готовност" + msgid "Force zap to recording service in standby" msgstr "Принудително превключване на запис канал в режим на готовност" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Форматиране" @@ -3867,9 +3877,8 @@ msgstr "Пълна прозрачност" msgid "Full view resolution" msgstr "Резолюция на пълен преглед" -#, fuzzy msgid "Fullbackup Images" -msgstr "Резервен Таймер" +msgstr "Резервен Имидж" msgid "Function of OK button" msgstr "Функция на OK бутон" @@ -3883,9 +3892,8 @@ msgstr "Допълнителни опции" msgid "G" msgstr "G" -#, fuzzy msgid "GB" -msgstr "B" +msgstr "GB" msgid "GUI Settings" msgstr "GUI Настройки" @@ -3915,9 +3923,8 @@ msgstr "Общо AC3 закъснение" msgid "General PCM delay" msgstr "Общо PCM закъснение" -#, fuzzy msgid "General bluetooth audio delay" -msgstr "Включване на bluetooth аудио" +msgstr "Общо bluetooth аудио закъснение" msgid "Genre" msgstr "Жанр" @@ -4141,6 +4148,10 @@ msgstr "Твърд диск" msgid "Harddisk Setup" msgstr "Настройки на твърдия диск" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Хардуер: " + msgid "Hardware: " msgstr "Хардуер: " @@ -4318,6 +4329,9 @@ msgstr "При ‘Да’, данните за сигнала (SNR,и т.н.) щ msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Ако е поставено на 'да', същите команди ще бъдат изпратени до ТВ независимо дали приемника е изключен, или в режим готовност." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "При използване на няколко несвързани ключа, DiSEqC командите трябва да се изпратят няколко пъти. Въведете броя на несвързани ключове във веригата минус един." @@ -4906,12 +4920,11 @@ msgstr "Люксембург" msgid "Luxembourgish" msgstr "Люксембургски" -#, fuzzy msgid "MB" -msgstr "B" +msgstr "MB" msgid "MHz" -msgstr "" +msgstr "MHz" msgid "MMC card" msgstr "MMC карта" @@ -5034,12 +5047,6 @@ msgstr "Майот" msgid "Media player" msgstr "Медиа плейър" -msgid "Media player: GStreamer, version " -msgstr "Медиа плейър: GStreamer, версия " - -msgid "Media player: ffmpeg, version " -msgstr "Медиа плейър: ffmpeg, версия " - msgid "Media scanner" msgstr "Медиа скенер" @@ -5417,6 +5424,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Следва" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Никарагуа" @@ -5729,6 +5739,10 @@ msgstr "Завъртай антената бързо само преди тоз msgid "Only on startup" msgstr "Само при старт" +#, fuzzy +msgid "Only power off" +msgstr "Активиране на таймер за включване" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Изберете ‘да’ само ако използвате мултиключ който изисква сигнал от DiSEqC Порт-A. За всички останали конфигурации изберете ‘не’." @@ -5753,7 +5767,8 @@ msgstr "LED статус при изключено състояние" msgid "Operating LED status in standby mode" msgstr "LED статус в режим готовност" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "LED статус когато приемника работи." msgid "Opkg" @@ -5771,9 +5786,8 @@ msgstr "Обикновен" msgid "Original" msgstr "Оригинал" -#, fuzzy msgid "Original audio" -msgstr "Оригинал" +msgstr "Оригинален звук" msgid "Other" msgstr "Друг" @@ -6292,6 +6306,13 @@ msgstr "LED на бутон Включване" msgid "Power management. Consult your receiver's manual for more information." msgstr "Управление на захранването. За повече информация се консултирайте с инструкцията за вашия приемник." +#, fuzzy +msgid "Power off time" +msgstr "По време" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Включване на дисплея" @@ -6437,7 +6458,7 @@ msgid "Press or select button and then press 'OK' for attach next function or ed msgstr "Натиснете или изберете бутон и след това натиснете 'OK' за прикачване на следваща функция или редактиране на прикачената." msgid "Press yellow button to set CEC address again" -msgstr "" +msgstr "Натиснете жълтия бутон за повторно задаване на CEC адрес" msgid "Press yellow to set this interface as default interface." msgstr "Натиснете жълтия бутон за избор на този интерфейс като дефолтен." @@ -7452,9 +7473,8 @@ msgstr "Изберете конфигурацията на сателитнат msgid "Select how you want your receiver to keep the correct time, either from the DVB transponder, or from the internet using NTP. Or use Auto, which will favour using NTP, but will fall back to transponder time when no internet connection is available." msgstr "Изберете как приемника да поддържа точно време, или от DVB транспондера, или от интернет, използвайки NTP. Или използвайте Авто, който ще предпочита използването на NTP, но ще се връща към времето от транспондера, когато няма връзка с интернет." -#, fuzzy msgid "Select image" -msgstr "Изтриване на имидж" +msgstr "Изберете имидж" msgid "Select in which resolution pictures are displayed with picture viewer or movie player." msgstr "Настройте с каква резолюция да се показват снимките в 'Преглед на снимки' и 'Видеоплейър'." @@ -7723,6 +7743,9 @@ msgstr "Търсене на Канали" msgid "Service title mode" msgstr "Режим име на канала" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8036,9 +8059,8 @@ msgstr "Показвай иконки за записи" msgid "Show record indicator" msgstr "Показвай индикатор за запис" -#, fuzzy msgid "Show satellites list" -msgstr "Покажи списъка с канали" +msgstr "Покажи списъка със спътници" msgid "Show screen path" msgstr "Показвай пътя към менюто" @@ -8073,9 +8095,8 @@ msgstr "Показвай статус иконки в списъка с филм msgid "Show status icons in movielist" msgstr "Показвай статус иконки в списъка с филми" -#, fuzzy msgid "Show sub-menu" -msgstr "Показвай колонки" +msgstr "Покажи под-меню" msgid "Show subservice selection" msgstr "Показвай избор на подканали" @@ -8448,9 +8469,8 @@ msgstr "Шри Ланка" msgid "Standard" msgstr "Cтандарт" -#, fuzzy msgid "Standard list" -msgstr "Cтандарт" +msgstr "Cтандартен списък" msgid "Standby" msgstr "Готовност" @@ -8532,9 +8552,8 @@ msgstr "Стъпка на изток" msgid "Stepped west" msgstr "Стъпка на запад" -#, fuzzy msgid "Steps" -msgstr "Стъпка на изток" +msgstr "Стъпки" msgid "Stop" msgstr "Стоп" @@ -8769,7 +8788,8 @@ msgstr "Включете дисплея по време на режим Гото msgid "Switch on the display during Suspend Mode" msgstr "Включете дисплея по време на режим Спиране" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Включете дисплея по време на работа." msgid "Switch to Android" @@ -8855,7 +8875,7 @@ msgstr "ТЕКСТ" #. TRANSLATORS: Add here whatever should be shown in the "translator" about screen, up to 6 lines (use \n for newline) msgid "TRANSLATOR_INFO" -msgstr "Мартин Петков - България - 13.05.2022" +msgstr "Мартин Петков - България - 29.05.2022" msgid "TS file is too large for ISO9660 level 1!" msgstr "TS файл е твърде голям за ISO9660 ниво 1!" @@ -10755,7 +10775,7 @@ msgid "" "Please wait until your receiver reboots\n" "This may take a few minutes" msgstr "" -"Вашия фронтпроцесор ще се актуализира​​\n" +"Вашия фронтпроцесор ще се актуализира??\n" "Изчакайте докато Вашия приемник се рестартира\n" "Това може да отнеме няколко минути" @@ -11215,9 +11235,6 @@ msgstr "експериментален филм/видео" msgid "extra wide" msgstr "екстра широк" -msgid "extrawide" -msgstr "екстра широк" - msgid "failed" msgstr "неуспешно" @@ -11407,6 +11424,10 @@ msgstr "меню" msgid "mins" msgstr "мин" +#, fuzzy +msgid "module disabled" +msgstr "принудително спрян" + msgid "month" msgstr "месец" @@ -11855,13 +11876,12 @@ msgstr "непроверено" msgid "until standby/restart" msgstr "до режим готовност/рестарт" -#, fuzzy -msgid "use best / controlled by HDMI" -msgstr "контролиран от HDMI" - -msgid "use_hdmi_cacenter" +msgid "use HDMI cacenter" msgstr "" +msgid "use best / controlled by HDMI" +msgstr "най-добре / контролиран от HDMI" + msgid "user defined" msgstr "потребителски" @@ -11871,6 +11891,9 @@ msgstr "потребителски скрит" msgid "variety show" msgstr "вариететно шоу" +msgid "version" +msgstr "версия" + msgid "vertical" msgstr "вертикална" diff --git a/po/ca.po b/po/ca.po index ba9d4904954..87ecd644e11 100644 --- a/po/ca.po +++ b/po/ca.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" -"PO-Revision-Date: 2021-09-22 23:58+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" +"PO-Revision-Date: 2022-06-19 18:41+0200\n" "Last-Translator: Oriol Pellicer \n" "Language-Team: angelodos angelo2807@hotmail.com\n" "Language: ca\n" @@ -15,14 +15,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SourceCharset: iso-8859-1\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 3.1\n" # -#, fuzzy msgid "" "\n" " Do you want to switch to Android ?" -msgstr "Voleu reproduir DVD a la unitat?" +msgstr "" +"\n" +"Vols canviar a Android?" # msgid "" @@ -137,7 +138,7 @@ msgstr "%.2f GB" #, python-format msgid "%.3f MHz" -msgstr "" +msgstr "%.3f MHz" #, python-format msgid "%02d:%02d" @@ -249,11 +250,11 @@ msgid "%d ms" msgstr "%d ms" # -#, fuzzy, python-format +#, python-format msgid "%d package selected." msgid_plural "%d packages selected." -msgstr[0] " paquet seleccionat" -msgstr[1] " paquet seleccionat" +msgstr[0] "%d paquet seleccionat" +msgstr[1] "%d paquets seleccionats" #, python-format msgid "%d pixel wide" @@ -340,11 +341,11 @@ msgstr "%s %d.%d" #, python-format msgid "%s KSymb/s" -msgstr "" +msgstr "%s KSymb/s" #, python-format msgid "%s MHz" -msgstr "" +msgstr "%s MHz" #, python-format msgid "%s imported from fallback tuner" @@ -562,13 +563,11 @@ msgstr "??" msgid "A" msgstr "A" -#, fuzzy msgid "A completed recording timer is about to put your receiver in standby mode. Would you like to proceed?" -msgstr "Un temporitzador de registres acabat vol configurar la vostra receptor en espera. Ara, això?" +msgstr "Un temporitzador de gravació completat està a punt de posar el vostre receptor en mode d'espera. Vols continuar?" -#, fuzzy msgid "A completed recording timer is about to shut down your receiver. Would you like to proceed?" -msgstr "Un temporitzador de registres acabat vol apagar-se el receptor. Apagat ara?" +msgstr "Un temporitzador de gravació completat està a punt d'apagar el vostre receptor. Vols continuar?" #, python-format msgid "A configuration file (%s) has been modified since it was installed. Would you like to keep the modified version?" @@ -607,9 +606,8 @@ msgstr "Actualment s’està executant una gravació. Atureu la gravació abans msgid "A recording is currently running. Please stop the recording before starting a service scan." msgstr "Actualment s’està executant una gravació. Atureu la gravació abans d’intentar escanejar." -#, fuzzy msgid "A repeating event is currently recording. What would you like to do?" -msgstr "S'està gravant un canal programat repetidament. Què vols fer?" +msgstr "Actualment s'està gravant un esdeveniment que es repeteix. Què t'agradaria fer?" # #, python-format @@ -630,13 +628,11 @@ msgstr "" "\n" "Voleu desactivar la segona interfície de xarxa?" -#, fuzzy msgid "A sleep timer is about to put your receiver in standby mode. Would you like to proceed?" -msgstr "Un temporitzador de son vol configurar la vostra receptor en espera. Ara, això?" +msgstr "Un temporitzador de repòs està a punt de posar el vostre receptor en mode d'espera. Vols continuar?" -#, fuzzy msgid "A sleep timer is about to shut down your receiver. Would you like to proceed?" -msgstr "Un temporitzador de son vol apagar-se el receptor. Apagat ara?" +msgstr "Un temporitzador de repòs està a punt d'apagar el vostre receptor. Vols continuar?" # msgid "A small overview of the available icon states and actions." @@ -657,23 +653,20 @@ msgstr "Configuracions A/V" msgid "AAC downmix" msgstr "AAC downmix" -#, fuzzy msgid "AAC transcoding" -msgstr "Transcodificació:" +msgstr "Transcodificació AAC" -#, fuzzy msgid "AAC+ downmix" -msgstr "AAC downmix" +msgstr "Downmix AAC+" msgid "AC3" -msgstr "" +msgstr "AC3" msgid "AC3 downmix" msgstr "AC3 downmix" -#, fuzzy msgid "AC3 transcoding" -msgstr "Transcodificació:" +msgstr "Transcodificació AC3" msgid "ACQUIRING TSID/ONID" msgstr "ACQUIRING TSID/ONID" @@ -1143,9 +1136,8 @@ msgstr "Armenia" msgid "Artist" msgstr "Artista" -#, fuzzy msgid "Arts/Culture (without music)" -msgstr "arts / cultura (sense música, general)" +msgstr "Arts / cultura (sense música, general)" msgid "Aruba" msgstr "Aruba" @@ -1204,7 +1196,7 @@ msgid "Audio auto volume level" msgstr "Nivell de volum automàtic d’àudio" msgid "Audio description for the visually impaired" -msgstr "" +msgstr "Audiodescripció per a persones amb discapacitat visual" msgid "Audio language selection 1" msgstr "Selecció d’idiomes d’àudio 1" @@ -1316,6 +1308,9 @@ msgstr "Favorits automàtics" msgid "Automatic scan" msgstr "Escaneig automàtic" +msgid "Automatically power off box to deep standby mode." +msgstr "Apagueu automàticament la caixa al mode d'espera profund." + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Col·loqueu el televisor automàticament en espera quan el receptor passi en espera o en espera profunda." @@ -1333,7 +1328,7 @@ msgid "Available locales are:" msgstr "Els locals disponibles són:" msgid "Axas E4HD Ultra" -msgstr "" +msgstr "Axas E4HD Ultra" msgid "Azerbaijan" msgstr "Azerbaidjan" @@ -1611,6 +1606,11 @@ msgstr "Configuració de CI (Interfície comuna)" msgid "CI assignment" msgstr "Assignació de CI" +# +#, fuzzy +msgid "CI enabled" +msgstr "FCC activat" + msgid "CI slot: " msgstr "CI slot: " @@ -1626,7 +1626,7 @@ msgstr "Escaneig de cables" #, python-format msgid "Cable scan executable utility not found '%s'!" -msgstr "" +msgstr "No s'ha trobat la utilitat executable d'exploració de cables '%s'!" msgid "Cabo Verde" msgstr "Cabo Verd" @@ -1886,9 +1886,8 @@ msgstr "" "Comprovació del sintonitzador %s\n" "Port DiSEqC %s per a %s" -#, fuzzy msgid "Children/Youth/Education/Science" -msgstr "Educació / Ciència / …" +msgstr "Infantil/Juventud/Educació/Ciència" msgid "Chile" msgstr "Chile" @@ -1908,27 +1907,26 @@ msgstr "Trieu Sintonitzador" msgid "Choose bouquet" msgstr "Tria el ram" -#, fuzzy msgid "Choose whether AAC sound tracks should be transcoded." -msgstr "Configureu si les pistes de so multicanal s’han de barrejar en estèreo." +msgstr "Trieu si les pistes de so AAC s'han de transcodificar." -#, fuzzy msgid "Choose whether AC3 sound tracks should be transcoded." -msgstr "Configureu si les pistes de so multicanal s’han de barrejar en estèreo." +msgstr "Trieu si les pistes de so AC3 s'han de transcodificar." -#, fuzzy msgid "Choose whether WMA Pro sound tracks should be downmixed." -msgstr "Configureu si les pistes de so multicanal s’han de barrejar en estèreo." +msgstr "Trieu si les pistes de so de WMA Pro s'han de rebaixar." + +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Trieu si les pistes de so multicanal DTS-HD(HR/MA) s'han de barrejar o transcodificar." -#, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." -msgstr "Configureu si les pistes de so multicanal s’han de barrejar en estèreo." +msgstr "Trieu si les pistes de so aac+ multicanal s'han de baixar a estèreo." msgid "Choose whether to scan a single transponder, one satellite or multiple satellites." -msgstr "" +msgstr "Trieu si voleu escanejar un sol transpondedor, un satèl·lit o diversos satèl·lits." msgid "Choose whether to scan for free services only or whether to include paid/encrypted services too." -msgstr "" +msgstr "Trieu si voleu buscar només serveis gratuïts o si voleu incloure també serveis de pagament o xifrats." msgid "Choose which tuner to configure." msgstr "Trieu quin sintonitzador configureu." @@ -2675,9 +2673,8 @@ msgstr "Txèquia" msgid "D" msgstr "D" -#, fuzzy msgid "DAC" -msgstr "PDC" +msgstr "DAC" # msgid "DHCP" @@ -2691,13 +2688,13 @@ msgid "DMM normal" msgstr "DMM normal" msgid "DTS" -msgstr "" +msgstr "DTS" msgid "DTS downmix" msgstr "DTS downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS-HD(HR/MA) downmix" # msgid "DUAL LAYER DVD" @@ -2796,7 +2793,7 @@ msgid "Default+Picon" msgstr "Predeterminat + picó" msgid "Define additional delay in milliseconds before start of http(s) streams, e.g. to connect a remote tuner, you use a complex system of DiSEqC." -msgstr "" +msgstr "Definiu un retard addicional en mil·lisegons abans de l'inici dels fluxos http(s), p. ex. per connectar un sintonitzador remot, utilitzeu un sistema complex de DiSEqC." msgid "Define the location of the EPG Cache file." msgstr "Definiu la ubicació del fitxer de memòria cau EPG." @@ -2964,9 +2961,8 @@ msgstr "Detecteu les caselles següents abans del mode d’espera" msgid "Detected NIMs:" msgstr "NIMs detectats:" -#, fuzzy msgid "Detected storage devices:" -msgstr "Disc dur detectat:" +msgstr "Dispositius d'emmagatzematge detectats:" msgid "Device name:" msgstr "Nom del dispositiu:" @@ -3037,9 +3033,8 @@ msgstr "El directori conté %(file)s i %(subdir)s." msgid "Disable" msgstr "Deshabilitar" -#, fuzzy msgid "Disable FCC during recordings" -msgstr "Incloeu sempre l’ECM als enregistraments" +msgstr "Desactiveu FCC durant les gravacions" # msgid "Disable Picture in Picture" @@ -3066,9 +3061,8 @@ msgid "Disk space to reserve for recordings (in GB)" msgstr "Espai de disc per reservar per a enregistraments (en GB)" # -#, fuzzy msgid "Disk state: " -msgstr "estat de la recerca" +msgstr "Estat del disc:" # msgid "Display 16:9 content as" @@ -3327,9 +3321,8 @@ msgid "Downloadable plugins" msgstr "Plugins descarregables" # -#, fuzzy msgid "Downloaded Images" -msgstr "Descarregant imatge" +msgstr "Descarregant Imatge" # msgid "Downloading" @@ -3347,12 +3340,11 @@ msgstr "Intenteu descarregar una nova llista de paquets. Espereu …" msgid "Downloading plugin information. Please wait..." msgstr "Descarregant informació del plugin. Espera..." -#, fuzzy msgid "Downmix" -msgstr "DTS downmix" +msgstr "Downmix" msgid "Drama and Films" -msgstr "" +msgstr "Drama i pel·lícules" msgid "Drop unconfigured satellites" msgstr "Col·loca satèl·lits no configurats" @@ -3399,9 +3391,9 @@ msgstr "EPG:" msgid "ERROR - failed to scan (%s)!" msgstr "ERROR - ha fallat la recerca (%s)!" -#, fuzzy, python-format +#, python-format msgid "ERROR downloading file %s/%s" -msgstr "ERROR baixant el fitxer %s" +msgstr "ERROR en baixar el fitxer %s/%s" # msgid "East" @@ -3533,9 +3525,8 @@ msgid "Enable auto fastscan for %s" msgstr "Activa l’exploració ràpida automàtica per a %s" # -#, fuzzy msgid "Enable bluetooth audio" -msgstr "Activar l'edició de la llista" +msgstr "Activa l'àudio bluetooth" # msgid "Enable bouquet edit" @@ -3572,6 +3563,9 @@ msgstr "Activa HDMI-CEC." msgid "Enable parental protection" msgstr "Habilita la protecció dels pares" +msgid "Enable power off timer" +msgstr "Activa el temporitzador d'apagada" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Habiliteu el receptor enigma2 remot per intentar sintonitzar serveis que no es poden ajustar localment (per exemple, el sintonitzador està ocupat o el tipus de servei no està disponible al sintonitzador local. Especifiqueu l’URL complet inclòs el número http: // i el port (normalment …: 8001 ), per exemple, http: // second_box: 8001." @@ -4007,14 +4001,12 @@ msgstr "" "inactiu" # -#, fuzzy msgid "FCC enabled" -msgstr "activat" +msgstr "FCC activat" # -#, fuzzy msgid "FCCSetup" -msgstr "Configuració" +msgstr "FFCConfiguració" # msgid "FEC" @@ -4117,13 +4109,13 @@ msgid "Fast" msgstr "Ràpid" msgid "Fast Channel Change" -msgstr "" +msgstr "Canvi ràpid de canal" msgid "Fast Channel Change Setup" -msgstr "" +msgstr "Configuració ràpida del canvi de canal" msgid "Fast Channel Change setup" -msgstr "" +msgstr "Configuració de canvi ràpid de canal" # msgid "Fast DiSEqC" @@ -4227,9 +4219,15 @@ msgstr "Les següents tasques es faran després de prémer OK." msgid "Force legacy signal stats" msgstr "Força les estadístiques de senyal heretades" +msgid "Force power off (even when not in standby)" +msgstr "Força l'apagat (fins i tot quan no està en espera)" + msgid "Force zap to recording service in standby" msgstr "Força el zap al servei de gravació en espera" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "Força el mode d'espera profund, fins i tot quan no està en mode d'espera. Les gravacions programades no es veuen afectades." + # msgid "Format" msgstr "Format" @@ -4312,9 +4310,8 @@ msgstr "Total transparència" msgid "Full view resolution" msgstr "Resolució de vista completa" -#, fuzzy msgid "Fullbackup Images" -msgstr "Temporitzador de caiguda" +msgstr "Imatges de còpia de seguretat completa" msgid "Function of OK button" msgstr "Funció del botó D’acord" @@ -4363,9 +4360,8 @@ msgstr "Retard general AC3" msgid "General PCM delay" msgstr "Retard general del PCM" -#, fuzzy msgid "General bluetooth audio delay" -msgstr "Retard general AC3" +msgstr "Retard general d'àudio bluetooth" # msgid "Genre" @@ -4539,12 +4535,11 @@ msgstr "HD list" msgid "HD2400" msgstr "HD2400" -#, fuzzy msgid "HD60/HD66SE/Multibox/Multibox SE" -msgstr "HD60/Multibox/Multibox SE" +msgstr "HD60/HD66SE/Multibox/Multibox SE" msgid "HDMI" -msgstr "" +msgstr "HDMI" msgid "HDMI Colordepth" msgstr "Colordepth HDMI" @@ -4565,9 +4560,8 @@ msgid "HDMI-CEC Source Inactive" msgstr "Font HDMI-CEC Inactiva" # -#, fuzzy msgid "HDMI-CEC address" -msgstr "Adreça ip" +msgstr "HDMI-CEC direccio" msgid "HDMI-CEC setup" msgstr "Configuració HDMI-CEC" @@ -4613,6 +4607,10 @@ msgstr "Disc dur" msgid "Harddisk Setup" msgstr "Configuració del disc dur" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Maquinari:" + msgid "Hardware: " msgstr "Maquinari:" @@ -4660,9 +4658,8 @@ msgstr "Informació sobre jerarquia" msgid "High bitrate support" msgstr "Suport elevat de bits" -#, fuzzy msgid "History Prev/Next" -msgstr "Història següent" +msgstr "Història Anterior/Següent" msgid "History back" msgstr "Història de tornada" @@ -4722,7 +4719,7 @@ msgid "How many minutes do you want to record?" msgstr "Quants minuts vols gravar?" msgid "Http(s) stream start delay" -msgstr "" +msgstr "Retard de l'inici del flux HTTP(s)." # msgid "Hue" @@ -4803,6 +4800,9 @@ msgstr "Si es defineix a “sí”, els valors de senyal (SNR, etc.) es calcular msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Si s’estableix a “sí”, s’enviaran les mateixes ordres al televisor per als esdeveniments d’espera profunda, com s’envien durant els esdeveniments d’espera habituals." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "Si se suposa que la caixa entra en un mode d'espera profund, p. dilluns a la nit a la 1 del matí, en realitat ja és dimarts. Per habilitar-ho de totes maneres, aquí es pot especificar l'hora d'inici del dia següent." + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Si utilitzeu diversos interruptors no compromes, les ordres DiSEqC s’han d’enviar diverses vegades. Estableix el nombre de commutadors no comesos a la cadena menys un." @@ -5467,7 +5467,7 @@ msgid "MB" msgstr "MB" msgid "MHz" -msgstr "" +msgstr "MHz" # msgid "MMC card" @@ -5589,9 +5589,8 @@ msgid "Mauritius" msgstr "Maurici" # -#, fuzzy msgid "Max channels" -msgstr "Canals" +msgstr "Màxim canals" msgid "Max memory positions" msgstr "Posicions de memòria màx" @@ -5609,13 +5608,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Reproductor" -# -msgid "Media player: GStreamer, version " -msgstr "Versió GStreamer" - -msgid "Media player: ffmpeg, version " -msgstr "Reproductor multimèdia: ffmpeg, versió" - # msgid "Media scanner" msgstr "Escàner multimèdia" @@ -6040,9 +6032,8 @@ msgstr "Nova Caledònia" msgid "New Zealand" msgstr "Nova Zelanda" -#, fuzzy msgid "News/Current Affairs/Social" -msgstr "Notícies Actualitat" +msgstr "Notícies/Actualitat/Socials" msgctxt "button label, 'next screen'" msgid "Next" @@ -6052,6 +6043,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Seguent" +msgid "Next day starts at" +msgstr "L'endemà comença a les" + msgid "Nicaragua" msgstr "Nicaragua" @@ -6405,6 +6399,10 @@ msgstr "Es pot moure el pla després de passar una hora." msgid "Only on startup" msgstr "Només a l’inici" +#, fuzzy +msgid "Only power off" +msgstr "Activa el temporitzador d'apagada" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Seleccioneu només “sí” si utilitzeu un interruptor multiswitch que requereix un senyal de comandament DiSEqC Port-A. Per a la resta de configuracions, seleccioneu “no”." @@ -6431,7 +6429,8 @@ msgstr "Funcionament de l’estat del LED en mode d’espera profunda" msgid "Operating LED status in standby mode" msgstr "Funcionament de l’estat del LED en mode d’espera" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "Funcionament de l’estat del LED mentre s’executa." msgid "Opkg" @@ -6449,9 +6448,8 @@ msgstr "Ordinària" msgid "Original" msgstr "Original" -#, fuzzy msgid "Original audio" -msgstr "Original" +msgstr "Àudio original" msgid "Other" msgstr "Altres" @@ -6571,7 +6569,7 @@ msgid "Parental control setup" msgstr "Configuració control parental" msgid "Passthrough" -msgstr "" +msgstr "Passar per" msgid "Password" msgstr "Contrasenya" @@ -7058,6 +7056,13 @@ msgstr "Alimentació LED" msgid "Power management. Consult your receiver's manual for more information." msgstr "Gestió d’energia. Consulteu el manual del vostre receptor per obtenir més informació." +# +msgid "Power off time" +msgstr "Hora d'apagada" + +msgid "Power off timer" +msgstr "Temporitzador d'apagada" + msgid "Power on display" msgstr "Potència en pantalla" @@ -7219,7 +7224,7 @@ msgid "Press or select button and then press 'OK' for attach next function or ed msgstr "Premeu o seleccioneu el botó i, a continuació, premeu ‘D’acord’ per adjuntar la següent funció o editar l’adjunt." msgid "Press yellow button to set CEC address again" -msgstr "" +msgstr "Premeu el botó groc per tornar a configurar l'adreça CEC" # msgid "Press yellow to set this interface as default interface." @@ -7431,7 +7436,7 @@ msgid "Recall to previous service" msgstr "Voleu el servei anterior" msgid "Receiver or driver does not support FCC" -msgstr "" +msgstr "El receptor o el controlador no admet FCC" # msgid "Reception settings" @@ -7616,7 +7621,7 @@ msgid "Remove terrestrial services" msgstr "Eliminar els serveis terrestres" msgid "Remove the services on scanned transponders before re-adding services?" -msgstr "" +msgstr "Eliminar els serveis dels transpondedors escanejats abans de tornar a afegir serveis?" msgid "Remove this logfile" msgstr "Elimineu aquest fitxer de registre" @@ -7912,7 +7917,7 @@ msgid "SNR:" msgstr "SNR:" msgid "SPDIF" -msgstr "" +msgstr "SPDIF" msgid "SRT file" msgstr "SRT fila" @@ -8116,7 +8121,7 @@ msgid "Scan state" msgstr "Estat d’escaneig" msgid "Scan using transponders on NIT table? 'No' will use transponders in xml file." -msgstr "" +msgstr "Escanejar amb transpondedors a la taula NIT? \"No\" utilitzarà transponders al fitxer xml." msgid "Scan wireless networks" msgstr "Escaneig de xarxes sense fil" @@ -8383,9 +8388,8 @@ msgstr "Seleccioneu com voleu que el receptor mantingui l’hora correcta, ja si msgid "Select image" msgstr "Selecciona una imatge" -#, fuzzy msgid "Select in which resolution pictures are displayed with picture viewer or movie player." -msgstr "Configureu en quina resolució es mostren les imatges amb el visualitzador d’imatges i el reproductor de pel·lícules." +msgstr "Seleccioneu en quina resolució es mostraran les imatges amb el visualitzador d'imatges o el reproductor de pel·lícules." msgid "Select input device" msgstr "Seleccioneu el dispositiu d’entrada" @@ -8522,17 +8526,15 @@ msgstr "Selecciona la manera de vídeo" msgid "Select whether your SCR device is externally powered." msgstr "Seleccioneu si el vostre dispositiu SCR està alimentat externament." -#, fuzzy msgid "Select which satellite to scan." -msgstr "Selecciona satèl·lits" +msgstr "Seleccioneu quin satèl·lit voleu escanejar." # -#, fuzzy msgid "Select which transponder to scan." -msgstr "Selecciona proveïdor per afegir …" +msgstr "Seleccioneu quin transponder voleu escanejar." msgid "Select which tuner to use for the scan." -msgstr "" +msgstr "Seleccioneu quin sintonitzador voleu utilitzar per a l'escaneig." # msgid "Select wireless network" @@ -8685,6 +8687,9 @@ msgstr "Buscar canals" msgid "Service title mode" msgstr "Mode títol del servei" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + # msgid "" "Service unavailable!\n" @@ -8722,9 +8727,8 @@ msgid "Set blocktimes by weekday" msgstr "Establiu l’horari de sortida el dia laborable" # -#, fuzzy msgid "Set cursor on service from channel history" -msgstr "Canvia al canal anterior de la història" +msgstr "Posa el cursor al servei des de l'historial del canal" msgid "Set default" msgstr "Instal · lat per defecte" @@ -9099,9 +9103,8 @@ msgstr "Mostra l’avís abans de definir “Ignora conflicte”" msgid "Show warning when timeshift is stopped" msgstr "Mostra l’avís quan s’atura el torn horari" -#, fuzzy msgid "Show/Game Show/Leisure hobbies" -msgstr "Aficions de lleure" +msgstr "Espectacle/Concurs de TV/Hobbies d'oci" msgid "Show/hide window" msgstr "Mostra / oculta la finestra" @@ -9248,11 +9251,11 @@ msgstr "Slot %d" #, python-format msgid "Slot %s / FBC in %s" -msgstr "" +msgstr "Ranura %s / FBC a %s" -#, fuzzy, python-format +#, python-format msgid "Slot %s / FBC virtual %s" -msgstr "FBC virtual" +msgstr "Ranura %s/ FBC virtual %s" msgid "Slovak" msgstr "Eslovac" @@ -9472,7 +9475,6 @@ msgstr "Sri Lanka" msgid "Standard" msgstr "Estàndard" -#, fuzzy msgid "Standard list" msgstr "Llista estàndard" @@ -9569,9 +9571,8 @@ msgid "Stepped west" msgstr "Pujada a l’oest" # -#, fuzzy msgid "Steps" -msgstr "Pas a l'est" +msgstr "Passos" # msgid "Stop" @@ -9836,12 +9837,12 @@ msgstr "Mostra la llista d’extensions de visualització i d’interfície d’ msgid "Switch on the display during Suspend Mode" msgstr "Mostra la llista d’extensions de visualització i d’interfície d’usuari disponibles" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Enceneu la pantalla durant el funcionament." -#, fuzzy msgid "Switch to Android" -msgstr "Canviar a la modalitat de TV" +msgstr "Canvia a Android" msgid "Switch to TV mode" msgstr "Canviar a la modalitat de TV" @@ -10330,9 +10331,8 @@ msgstr "Aquesta opció ens permet mostrar tots els símbols a la pantalla." msgid "This option allows you to show the full screen path leading to the current screen." msgstr "Aquesta opció us permet mostrar el camí de pantalla completa que condueix a la pantalla actual." -#, fuzzy msgid "This option allows you to switch audio to bluetooth speakers." -msgstr "Aquesta opció us permet establir el nivell de volum automàtic." +msgstr "Aquesta opció us permet canviar l'àudio als altaveus bluetooth." msgid "This option allows you to view the old and new settings side by side." msgstr "Aquesta opció us permet visualitzar la configuració antiga i la nova de costat." @@ -10340,9 +10340,8 @@ msgstr "Aquesta opció us permet visualitzar la configuració antiga i la nova d msgid "This option can be useful for long HDMI cables." msgstr "Aquesta opció pot ser útil per a cables HDMI llargs." -#, fuzzy msgid "This option configures the general audio delay for bluetooth speakers." -msgstr "Configura el retard general d’àudio de les pistes de so estèreo." +msgstr "Aquesta opció configura el retard d'àudio general per als altaveus bluetooth." msgid "This option set the level of surpression of mosquito noise (Mosquito Noise is random aliasing as a result of strong compression). Obviously this goes at the cost of picture details." msgstr "Aquesta opció va establir el nivell de supressió del soroll dels mosquits (Mosquito Noise és un aliasing aleatori com a conseqüència d’una forta compressió). Evidentment, això costa el cost dels detalls de les imatges." @@ -11291,9 +11290,9 @@ msgid "View details" msgstr "Veure detalls" # -#, fuzzy, python-format +#, python-format msgid "View list of available %s extensions." -msgstr "Vegeu la llista de disponibles" +msgstr "Mostra la llista de %s extensions disponibles." # msgid "View list of available CommonInterface extensions" @@ -11373,7 +11372,7 @@ msgid "Virtual keyboard" msgstr "Teclat virtual" msgid "Visually impaired commentary" -msgstr "" +msgstr "Comentari amb discapacitat visual" # msgid "Voltage mode" @@ -11399,9 +11398,8 @@ msgstr "O" msgid "WLAN connection" msgstr "Connexió WLAN" -#, fuzzy msgid "WMA Pro downmix" -msgstr "AAC downmix" +msgstr "Downmix de WMA Pro" # msgid "WSS on 4:3" @@ -11710,9 +11708,8 @@ msgstr "Quan estigui activat, els subtítols de teletext es mostraran a la seva msgid "When enabled, the VCR scart option will be shown on the main menu" msgstr "Quan està activat, l’opció Scart VCR es mostrarà al menú principal" -#, fuzzy msgid "When enabled, the channel selection list will be hidden while listening to a radio channel. When disabled, the option 'Auto play last service in radio mode' is available." -msgstr "Quan estigui habilitat, la llista de selecció de canals s’amagarà mentre s’escolta un canal de ràdio" +msgstr "Quan està activat, la llista de selecció de canals s'amagarà mentre s'escolta un canal de ràdio. Quan està desactivada, l'opció \"Reprodueix automàticament l'últim servei en mode de ràdio\" està disponible." msgid "When enabled, the infobar will be displayed when a new event starts." msgstr "Quan està activat, es visualitzarà la infobar quan s’iniciï un nou esdeveniment." @@ -11741,9 +11738,8 @@ msgstr "Quan estigui habilitat, el receptor seleccionarà una pista AC3 (quan es msgid "When enabled, the receiver will select an AC3+ track (when available)." msgstr "Quan estigui habilitat, el receptor seleccionarà una pista AC3 + (quan estigui disponible)." -#, fuzzy msgid "When enabled, then when changing bouquets, set the cursor on the service from the channel history in the channel selection list." -msgstr "Quan està activat, podeu controlar el volum amb els botons de fletxa en lloc d’obtenir la llista de selecció de canals" +msgstr "Quan estigui habilitat, després quan canvieu de rams, col·loqueu el cursor al servei des de l'historial de canals a la llista de selecció de canals." msgid "When enabled, this setting has more weight than 'Preferred tuner for recordings'." msgstr "Si està activat, aquest paràmetre té més pes que el “Sintonitzador preferit per a enregistraments”." @@ -12037,9 +12033,9 @@ msgstr "" "La vostra connexió a Internet no funciona.\n" "Seleccioneu què voleu fer a continuació." -#, fuzzy, python-format +#, python-format msgid "Your internet connection is working (IP address: %s)" -msgstr "La vostra connexió a Internet funciona (IP: %s)" +msgstr "La vostra connexió a Internet funciona (adreça IP: %s)" # msgid "Your network configuration has been activated." @@ -12113,9 +12109,8 @@ msgstr "Zambia" msgid "Zap" msgstr "Zappejar" -#, fuzzy msgid "Zap Up/Down" -msgstr "Zap cap avall" +msgstr "Zap amunt/avall" # msgid "Zap back to previously tuned service?" @@ -12167,9 +12162,8 @@ msgstr "S’ha empès el servei de temporització %s!" msgid "Zgemma H.S/H.2S/H.2H/H5/H7(old model)" msgstr "Zgemma H.S/H.2S/H.2H/H5/H7(model antic)" -#, fuzzy msgid "Zgemma H9(old model)/I55Plus/H8" -msgstr "Zgemma H9(antic model)/I55Plus" +msgstr "Zgemma H9(model antic)/I55Plus/H8" msgid "Zgemma Star S/2S/H1/H2" msgstr "Zgemma Star S/2S/H1/H2" @@ -12215,9 +12209,8 @@ msgstr "activa la configuració de l’adaptador de xarxa" msgid "active" msgstr "actiu" -#, fuzzy msgid "active " -msgstr "actiu" +msgstr "actiu " msgid "actual time only" msgstr "temps real només" @@ -12225,9 +12218,8 @@ msgstr "temps real només" msgid "additional cable of rotor" msgstr "cable addicional de rotor" -#, fuzzy msgid "adult movie" -msgstr "pel·lícula / drama per a adults" +msgstr "pel·lícula per a adults" # msgid "advanced" @@ -12358,9 +12350,8 @@ msgstr "centrat, embolicat" msgid "chapters" msgstr "capítols" -#, fuzzy msgid "childrens's youth program (general)" -msgstr "programa infantil / juvenil (general)" +msgstr "programa infantil juvenil (general)" # msgid "circular left" @@ -12388,14 +12379,13 @@ msgid "controlled by HDMI" msgstr "controlat per HDMI" msgid "convert to AC3" -msgstr "" +msgstr "convertir a AC3" msgid "convert to DTS" -msgstr "" +msgstr "convertir a DTS" -#, fuzzy msgid "convert to multi-channel PCM" -msgstr "Multicanal PCM" +msgstr "convertir a PCM multicanal" msgid "cooking" msgstr "cuina" @@ -12459,9 +12449,8 @@ msgstr "est" msgid "economics/social advisory" msgstr "economia / assessorament social" -#, fuzzy msgid "educational/science/factual topics (general)" -msgstr "temes d’educació / ciència / fets (generals)" +msgstr "temes educatius/ciències/factuals (general)" msgid "embedded" msgstr "encastat" @@ -12536,10 +12525,6 @@ msgstr "pel·lícula / vídeo experimental" msgid "extra wide" msgstr "molt ampli" -#, fuzzy -msgid "extrawide" -msgstr "molt ampli" - msgid "failed" msgstr "fracassat" @@ -12563,9 +12548,8 @@ msgstr "pel·lícula / cinema" msgid "fine arts" msgstr "belles Arts" -#, fuzzy msgid "fitness and health" -msgstr "condició física i salut" +msgstr "fitness i salut" msgid "flat alphabetic" msgstr "plana alfabètica" @@ -12730,9 +12714,8 @@ msgstr "escolta esdeveniments del hotplug" msgid "literature" msgstr "literatura" -#, fuzzy msgid "local sports" -msgstr "Esports d’equip" +msgstr "esports locals" # msgid "locked" @@ -12762,6 +12745,11 @@ msgstr "menú" msgid "mins" msgstr "minuts" +# +#, fuzzy +msgid "module disabled" +msgstr "força desactivada" + # msgid "month" msgstr "mes" @@ -12788,9 +12776,8 @@ msgstr "aneu fins a la primera entrada" msgid "move up to previous entry" msgstr "aneu a l’entrada anterior" -#, fuzzy msgid "movie (general)" -msgstr "pel·lícula / drama (general)" +msgstr "pel·lícula (general)" msgid "multi" msgstr "multi" @@ -12866,9 +12853,8 @@ msgstr "desbloquejat" msgid "not running" msgstr "no corre" -#, fuzzy msgid "not set" -msgstr "no testad" +msgstr "no establert" msgid "not supported" msgstr "no suport" @@ -12961,12 +12947,11 @@ msgid "pre-school children's program" msgstr "programa infantil d’educació infantil" msgid "preserve bookmarks in cuts" -msgstr "" +msgstr "conservar els marcadors en detalls" # -#, fuzzy msgid "priority" -msgstr "Prioritat" +msgstr "prioritat" msgid "receiver software because updates are available." msgstr "programari del receptor perquè hi ha actualitzacions disponibles." @@ -12998,9 +12983,8 @@ msgid "remove before this position" msgstr "esborra abans d'aquesta posició" # -#, fuzzy msgid "remove bookmarks in cuts" -msgstr "Esborrar marca" +msgstr "eliminar els marcadors als talls" # msgid "remove this mark" @@ -13060,9 +13044,8 @@ msgstr "selecciona l’entrada del menú" msgid "serious music/classic music" msgstr "música seriosa / música clàssica" -#, fuzzy msgid "serious/classical/religious/historical drama" -msgstr "pel·lícula / drama seriós / clàssic / religiós / històric" +msgstr "drama seriós/clàssic/religiós/històric" # msgid "service off-air" @@ -13147,16 +13130,14 @@ msgstr "ranura%s - %s, amb còpia de seguretat" msgid "slot%s - %s, without backup" msgstr "ranura%s - %s, sense còpia de seguretat" -#, fuzzy msgid "soap/melodrama/folkloric" -msgstr "sabó / melodram / folklòric" +msgstr "sabó/melodrama/folklòric" msgid "social/political issues/economics (general)" msgstr "qüestions socials / polítiques / economia (general)" -#, fuzzy msgid "social/spiritual sciences" -msgstr "ciències socials / espirituals" +msgstr "ciències socials/espirituals" msgid "space" msgstr "espai" @@ -13178,7 +13159,6 @@ msgid "standard" msgstr "estàndard" # -#, fuzzy msgid "standby " msgstr "Repòs" @@ -13215,11 +13195,10 @@ msgid "talk show" msgstr "xerrada" msgid "team sports/excluding football" -msgstr "" +msgstr "esports d'equip/excepte el futbol" -#, fuzzy msgid "technology/natural sciences" -msgstr "tecnologia / ciències naturals" +msgstr "tecnologia/ciències naturals" # msgid "template file" @@ -13281,12 +13260,11 @@ msgstr "indestable" msgid "until standby/restart" msgstr "fins que s’iniciï el mode d’espera / reinici" -#, fuzzy -msgid "use best / controlled by HDMI" -msgstr "controlat per HDMI" +msgid "use HDMI cacenter" +msgstr "utilitzar HDMI cacenter" -msgid "use_hdmi_cacenter" -msgstr "" +msgid "use best / controlled by HDMI" +msgstr "ús millor / controlat per HDMI" # msgid "user defined" @@ -13299,6 +13277,9 @@ msgstr "definit per l'usuaridefinit per l’usuari amagat" msgid "variety show" msgstr "espectacle de varietats" +msgid "version" +msgstr "versió" + # msgid "vertical" msgstr "vertical" diff --git a/po/cs.po b/po/cs.po index b1c8bcdce2e..d2aec9b7426 100644 --- a/po/cs.po +++ b/po/cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OpenPLi enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: \n" "Last-Translator: IMS \n" "Language-Team: PLi \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.1.1\n" # msgid "" @@ -1363,6 +1363,9 @@ msgstr "Automatické záložky" msgid "Automatic scan" msgstr "Automatické prohledávání" +msgid "Automatically power off box to deep standby mode." +msgstr "Automaticky vypne box do hlubokého spánku." + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Při přepnutí přijímače do pohotovostního režimu nebo hlubokého spánku se bude vypínat i televizní přijímač." @@ -1660,6 +1663,10 @@ msgstr "CI (Common Interface)" msgid "CI assignment" msgstr "CI přiřazení" +# +msgid "CI enabled" +msgstr "CI povolen" + # msgid "CI slot: " msgstr "CI slot: " @@ -1971,6 +1978,9 @@ msgstr "Zvolte, zda by měly být zvukové stopy AC3 překódovány." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Zvolte, zda mají být zvukové stopy WMA přepočítávány." +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Vyberte, zda se mají vícekanálové zvukové stopy DTS-HD (HR/MA) sloučit nebo překódovat." + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Zvolte, zda by měly být vícekanálové zvukové stopy acc+ přepočítávány na stereo." @@ -2775,8 +2785,8 @@ msgstr "DTS" msgid "DTS downmix" msgstr "DTS přepočet" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS-HD (HE/MA) přepočet" # msgid "DUAL LAYER DVD" @@ -3676,6 +3686,10 @@ msgstr "Povoluje nebo zakazuje používání HDMI-CEC." msgid "Enable parental protection" msgstr "Povolit rodičovskou ochranu" +# +msgid "Enable power off timer" +msgstr "Povolit časovač vypnutí" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Na vzdáleném přijímači se budou zkoušet naladit služby, které nelze naladit lokálně (např. tuner je obsazený nebo typ služby není k dispozici na místním tuneru). Zadejte úplnou URL adresu včetně http:// a číslo portu (normálně ...:8001), například http://druhy_box:8001." @@ -4346,9 +4360,15 @@ msgstr "Následující úlohy budou provedeny po stisknutí OK!" msgid "Force legacy signal stats" msgstr "Vynutit starší signálové statistiky" +msgid "Force power off (even when not in standby)" +msgstr "Vynucené vypnutí (i když není v pohotovostním režimu)" + msgid "Force zap to recording service in standby" msgstr "V pohotovostním režimu vynutit přepnutí na nahrávaný program" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "Vynutí hluboký spánek, i když není v pohotovostním režimu. Naplánovaná nahrávání zůstávají nedotčena." + # msgid "Format" msgstr "Formát" @@ -4732,6 +4752,9 @@ msgstr "Pevný disk" msgid "Harddisk Setup" msgstr "Nastavení pevného disku" +msgid "Hardware Accelerated" +msgstr "HW akcelerace" + msgid "Hardware: " msgstr "Hardware: " @@ -4927,6 +4950,9 @@ msgstr "Pokud je nastaveno 'Ano', hodnoty signálu (SNR, atd.) budou počítány msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Při přechodu do hlubokého spánku se budou posílat stejné příkazy jako při přechodu přijímače do pohotovostního režimu." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "Pokud má box přejít do hlubokého spánku - např. v pondělí večer v 1:00 - ve skutečnosti je už úterý. Chcete-li to přesto povolit, můžete zde zadat jiný čas začátku následujícího dne." + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Pokud používáte více uncommited přepínačů, musí být příkazy DiSEqC odesílány několikrát. Nastavte počet uncommited přepínačů v řetězci zmenšený o jeden." @@ -5762,12 +5788,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Přehrávač médií" -msgid "Media player: GStreamer, version " -msgstr "Media player: GStreamer, verze " - -msgid "Media player: ffmpeg, version " -msgstr "Media player: ffmpeg, verze " - # msgid "Media scanner" msgstr "Prohledávání médií" @@ -6210,6 +6230,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Další" +msgid "Next day starts at" +msgstr "Další den zapnout v" + msgid "Nicaragua" msgstr "Nikaragua" @@ -6573,6 +6596,10 @@ msgstr "Rychlé otáčení paraboly pouze před touto hodinou." msgid "Only on startup" msgstr "Pouze při startu" +# +msgid "Only power off" +msgstr "Pouze vypnutí" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Zvolte pouze 'Ano', pokud používáte multiswitch, který vyžaduje DiSEqC Port-A příkazový signál. Pro všechna ostatní nastavení zvolte 'Ne'." @@ -6595,13 +6622,13 @@ msgid "Open the movie list" msgstr "Otevřít seznam filmů" msgid "Operating LED status in deep standby mode" -msgstr "Stav provozní LED v hlubokém spánku." +msgstr "Stav provozní LED v hlubokém spánku" msgid "Operating LED status in standby mode" -msgstr "Stav provozní LED v pohotovostním stavu." +msgstr "Stav provozní LED v pohotovostním stavu" -msgid "Operating LED status while running." -msgstr "Stav provozní LED při provozu." +msgid "Operating LED status while running" +msgstr "Stav provozní LED při provozu" msgid "Opkg" msgstr "Opkg" @@ -7241,6 +7268,13 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "Řízení spotřeby. Další informace získáte v návodu k přijímači." +# +msgid "Power off time" +msgstr "Čas vypnutí" + +msgid "Power off timer" +msgstr "Časovač vypnutí" + msgid "Power on display" msgstr "Zapnout displej" @@ -8905,6 +8939,9 @@ msgstr "Vyhledávání programů" msgid "Service title mode" msgstr "Názvy programů" +msgid "Service type 4097 incorrect for PiP!" +msgstr "Program typu 4097 je nekorektní pro PiP!" + # msgid "" "Service unavailable!\n" @@ -10105,8 +10142,8 @@ msgid "Switch on the display during Suspend Mode" msgstr "Zapnout display v režimu pozastavení" # -msgid "Switch on the display during operation." -msgstr "Zapnout display během provozu." +msgid "Switch on the display during operation" +msgstr "Zapnout display během provozu" msgid "Switch to Android" msgstr "Přepnout na Android" @@ -10205,7 +10242,7 @@ msgstr "" "Pro případné korekce můžete kontaktovat autora\n" "na výše uvedené adrese.\n" "\n" -"®18.5.2022" +"®8.8.2022" # msgid "TS file is too large for ISO9660 level 1!" @@ -12635,7 +12672,7 @@ msgstr "blacklist" # msgid "blue" -msgstr "Modré" +msgstr "Modrá" msgid "bottom" msgstr "Dole" @@ -12841,9 +12878,6 @@ msgstr "experimentální film/video" msgid "extra wide" msgstr "Extra široký" -msgid "extrawide" -msgstr "extra široký" - # msgid "failed" msgstr "selhalo" @@ -13067,6 +13101,10 @@ msgstr "menu" msgid "mins" msgstr "minut" +# +msgid "module disabled" +msgstr "modul zakázán" + # msgid "month" msgstr "měsíc" @@ -13292,7 +13330,7 @@ msgstr "nahrávání.." # msgid "red" -msgstr "Červené" +msgstr "Červená" msgid "religion" msgstr "náboženství" @@ -13593,12 +13631,12 @@ msgstr "netestovatelné" msgid "until standby/restart" msgstr "do standby/restartu" +msgid "use HDMI cacenter" +msgstr "použít HDMI cacenter" + msgid "use best / controlled by HDMI" msgstr "použít nejlepší / řízeno pomocí HDMI" -msgid "use_hdmi_cacenter" -msgstr "" - # msgid "user defined" msgstr "Uživatelské" @@ -13610,12 +13648,15 @@ msgstr "Uživatelské skryté" msgid "variety show" msgstr "varieté" +msgid "version" +msgstr "verze" + # msgid "vertical" msgstr "Vertikální" msgid "violet" -msgstr "fialová" +msgstr "Fialová" # msgid "wait for ci..." diff --git a/po/da.po b/po/da.po index c32b229a38c..6b8c0135469 100644 --- a/po/da.po +++ b/po/da.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2017-01-18 16:38+0100\n" "Last-Translator: lupine \n" "Language-Team: \n" @@ -1333,6 +1333,9 @@ msgstr "Automatisk Skan" msgid "Automatic scan" msgstr "Automatisk søgning" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1639,6 +1642,11 @@ msgstr "CI (Common Interface) Setup" msgid "CI assignment" msgstr "CI tildeling" +# +#, fuzzy +msgid "CI enabled" +msgstr "Tilsluttet" + msgid "CI slot: " msgstr "CI port: " @@ -1940,6 +1948,10 @@ msgstr "Konfigurer hvorvidt multikanal lydspor skal nedmixes til stereo." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Konfigurer hvorvidt multikanal lydspor skal nedmixes til stereo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Konfigurer hvorvidt multikanal lydspor skal nedmixes til stereo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Konfigurer hvorvidt multikanal lydspor skal nedmixes til stereo." @@ -2754,8 +2766,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS downmix" # msgid "DUAL LAYER DVD" @@ -3656,6 +3669,10 @@ msgstr "Aktiver EIT EPG" msgid "Enable parental protection" msgstr "Aktiver forældrebeskyttelse" +#, fuzzy +msgid "Enable power off timer" +msgstr "Aktiver wakeup timer" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Aktiver trådløs enigma2 receiver for at prøve at tune ind til services der ikke kan tunes ind på lokalt (f.eks. tuner er optaget eller service typen er ikke tilgængelig på den lokale tuner. Specificer komplet URL inkluderet http:// og port nummer (normalt ...:8001), f.eks. http://second_box:8001." @@ -4321,9 +4338,15 @@ msgstr "Følgende opgaver vil blive udført efter tryk på OK!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Formatere" @@ -4720,6 +4743,10 @@ msgstr "Harddisk..." msgid "Harddisk Setup" msgstr "Harddisk Setup" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardware:" + msgid "Hardware: " msgstr "Hardware:" @@ -4915,6 +4942,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5749,14 +5779,6 @@ msgstr "" msgid "Media player" msgstr "Medie afspiller" -# -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Kernel version:" - -msgid "Media player: ffmpeg, version " -msgstr "" - # msgid "Media scanner" msgstr "Mediescanner" @@ -6207,6 +6229,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Næste" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -6574,6 +6599,10 @@ msgstr "" msgid "Only on startup" msgstr "Kun ved opstart" +#, fuzzy +msgid "Only power off" +msgstr "Aktiver wakeup timer" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -6600,7 +6629,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -7246,6 +7275,14 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +# +#, fuzzy +msgid "Power off time" +msgstr "Sorter tid" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -8914,6 +8951,9 @@ msgstr "Kanal søgning" msgid "Service title mode" msgstr "Kanal titel modus" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + # msgid "" "Service unavailable!\n" @@ -10114,7 +10154,7 @@ msgstr "Vis oplistning af tilgængelige visnings- og brugerinterface udvidelser. # #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Vis oplistning af tilgængelige visnings- og brugerinterface udvidelser." #, fuzzy @@ -12898,9 +12938,6 @@ msgstr "eksperimentel film/video " msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "fejlet" @@ -13131,6 +13168,11 @@ msgstr "menu" msgid "mins" msgstr "min" +# +#, fuzzy +msgid "module disabled" +msgstr "slukket" + # msgid "month" msgstr "måned" @@ -13659,10 +13701,10 @@ msgstr "ikke muligt at teste" msgid "until standby/restart" msgstr "indtil standby/genstart" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" # @@ -13677,6 +13719,9 @@ msgstr "brugerdefineret" msgid "variety show" msgstr "variety show" +msgid "version" +msgstr "version" + # msgid "vertical" msgstr "vertikal" diff --git a/po/de.po b/po/de.po index 752d47b657c..e80e92af7f0 100644 --- a/po/de.po +++ b/po/de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2021-04-30 16:06+0200\n" "Last-Translator: kueken\n" "Language-Team: OpenPLi\n" @@ -1184,6 +1184,9 @@ msgstr "Automatische Lesezeichen" msgid "Automatic scan" msgstr "Automatische Suche" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Fernseher wird automatisch mit dem Receiver ausgeschaltet (Standby / Deep Standby)" @@ -1446,6 +1449,10 @@ msgstr "CI (Common Interface) Einstellungen" msgid "CI assignment" msgstr "CI-Zuweisung" +#, fuzzy +msgid "CI enabled" +msgstr "Aktiviert" + msgid "CI slot: " msgstr "CI-Slot: " @@ -1729,6 +1736,10 @@ msgstr "Heruntermischen von Multi-Kanal-Sound in Stereo." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Heruntermischen von Multi-Kanal-Sound in Stereo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Heruntermischen von Multi-Kanal-Sound in Stereo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Heruntermischen von Multi-Kanal-Sound in Stereo." @@ -2446,8 +2457,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS downmix" msgid "DUAL LAYER DVD" msgstr "Doppelschicht DVD (DUAL LAYER)" @@ -3204,6 +3216,10 @@ msgstr "Aktiviere oder deaktiviere HDMI-CEC" msgid "Enable parental protection" msgstr "Jugendschutz aktivieren" +#, fuzzy +msgid "Enable power off timer" +msgstr "Aktiviere Aufwach-Timer" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Aktiviert einen Reserve-Receiver, der versucht wird wenn ein Sender lokal nicht empfangen werden kann. (z.B. wenn Tuner belegt oder Sender lokal nicht verfügbar ist). Angabe der kompletten URL inklusive http:// und Port-Nummer (normal ...:8001), z.B. http://zweite_box:8001 notwendig." @@ -3803,9 +3819,15 @@ msgstr "Folgendes wird ausgeführt, nachdem Sie OK gedrückt haben!" msgid "Force legacy signal stats" msgstr "Erzwinge Legacy-Signal-Statistiken" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Formatieren" @@ -4153,6 +4175,10 @@ msgstr "Festplatte" msgid "Harddisk Setup" msgstr "Festplatten Einstellungen" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardware: " + msgid "Hardware: " msgstr "Hardware: " @@ -4332,6 +4358,9 @@ msgstr "Bei “Ja” werden die Signalwerte (SNR usw.) aus API V3 berechnet. Die msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Wenn hier \"ja\" gewählt wird, dann wird Standby und Deep-Standby am TV HDMI gleich behandelt." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Wenn mehrere nicht festgeschriebene Switches verwendet werden, müssen die DiSEqC-Befehle mehrmals gesendet werden. Legen Sie die Anzahl der nicht festgeschriebenen Switches in der Kette minus eins fest." @@ -5051,12 +5080,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Media Player" -msgid "Media player: GStreamer, version " -msgstr "GStreamer-Version:" - -msgid "Media player: ffmpeg, version " -msgstr "FFmpeg-Version: " - msgid "Media scanner" msgstr "Media Scanner" @@ -5435,6 +5458,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Danach" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nicaragua" @@ -5749,6 +5775,10 @@ msgstr "Bewegen Sie die Satellitenschüssel erst kurz vor dieser Stunde." msgid "Only on startup" msgstr "Nur beim Start" +#, fuzzy +msgid "Only power off" +msgstr "Aktiviere Aufwach-Timer" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Wählen Sie nur “Ja”, wenn Sie einen Multiswitch verwenden, der ein DiSEqC Port-A-Befehlssignal benötigt. Für alle anderen Setups wählen Sie ‘Nein’." @@ -5773,7 +5803,8 @@ msgstr "Status LED im Deep Standby" msgid "Operating LED status in standby mode" msgstr "Status LED im Standy" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "Status LED im Betrieb" msgid "Opkg" @@ -6313,6 +6344,13 @@ msgstr "Power-LED" msgid "Power management. Consult your receiver's manual for more information." msgstr "Energieverwaltung. Weitere Informationen finden Sie in der Bedienungsanleitung Ihres Receivers." +#, fuzzy +msgid "Power off time" +msgstr "Sortiere nach Zeit" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Display einschalten" @@ -7747,6 +7785,9 @@ msgstr "Kanalsuche" msgid "Service title mode" msgstr "Kanal Titel Modus" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8801,7 +8842,8 @@ msgstr "Display im Standby anschalten" msgid "Switch on the display during Suspend Mode" msgstr "Display im Deep Standby anschalten" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Display im normalen Betrieb anschalten" #, fuzzy @@ -11280,10 +11322,6 @@ msgstr "Experimentelle Filme/Video" msgid "extra wide" msgstr "extra breit" -#, fuzzy -msgid "extrawide" -msgstr "extra breit" - msgid "failed" msgstr "fehlgeschlagen" @@ -11476,6 +11514,10 @@ msgstr "Menü" msgid "mins" msgstr "Minuten" +#, fuzzy +msgid "module disabled" +msgstr "deaktiviert erzwingen" + msgid "month" msgstr "Monat" @@ -11935,13 +11977,13 @@ msgstr "untestbar" msgid "until standby/restart" msgstr "Bis zum Standby/Neustart" +msgid "use HDMI cacenter" +msgstr "" + #, fuzzy msgid "use best / controlled by HDMI" msgstr "gesteuert von HDMI" -msgid "use_hdmi_cacenter" -msgstr "" - msgid "user defined" msgstr "Benutzerdefiniert" @@ -11951,6 +11993,9 @@ msgstr "Benutzerdefiniert versteckt" msgid "variety show" msgstr "Abwechslungsreiche Sendung" +msgid "version" +msgstr "version" + msgid "vertical" msgstr "Vertikal" diff --git a/po/el.po b/po/el.po index dcc8ea04827..541358a3001 100644 --- a/po/el.po +++ b/po/el.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: OpenPLI Enigma2 Official Greek Translation\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: \n" "Last-Translator: MCelliotG \n" "Language-Team: MCelliotG \n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.1.1\n" "X-Poedit-SourceCharset: UTF-8\n" msgid "" @@ -593,23 +593,20 @@ msgstr "Ρυθμίσεις εικόνας/ήχου" msgid "AAC downmix" msgstr "Αποκωδικοποίηση & μίξη AAC" -#, fuzzy msgid "AAC transcoding" -msgstr "Διακωδικοποίηση: " +msgstr "Διακωδικοποίηση AAC" -#, fuzzy msgid "AAC+ downmix" -msgstr "Αποκωδικοποίηση & μίξη AAC" +msgstr "Αποκωδικοποίηση & μίξη AAC+" msgid "AC3" -msgstr "" +msgstr "AC3" msgid "AC3 downmix" msgstr "Αποκωδικοποίηση & μίξη AC3" -#, fuzzy msgid "AC3 transcoding" -msgstr "Διακωδικοποίηση: " +msgstr "Διακωδικοποίηση AC3" msgid "ACQUIRING TSID/ONID" msgstr "ΛΗΨΗ TSID/ONID" @@ -642,7 +639,7 @@ msgid "Access point:" msgstr "Σημείο πρόσβασης:" msgid "Activate HbbTV (Redbutton)" -msgstr "Ενεργοποίηση HbbTV (Κόκκινο πλήκτρο)" +msgstr "Ενεργοποίηση HbbTV (κόκκινο πλήκτρο)" msgid "Activate Picture in Picture" msgstr "Ενεργοποίηση Picture in Picture" @@ -1018,9 +1015,8 @@ msgstr "Αρμενία" msgid "Artist" msgstr "Καλλιτέχνης" -#, fuzzy msgid "Arts/Culture (without music)" -msgstr "τέχνες/πολιτισμός (χωρίς μουσική, γενικά)" +msgstr "Τέχνες/Πολιτισμός (χωρίς μουσική)" msgid "Aruba" msgstr "Αρούμπα" @@ -1175,6 +1171,9 @@ msgstr "Αυτόματοι σελιδοδείκτες" msgid "Automatic scan" msgstr "Αυτόματη ανίχνευση" +msgid "Automatically power off box to deep standby mode." +msgstr "Αυτόματη απενεργοποίηση του δέκτη σε κατάσταση βαθιάς αναμονής." + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Θέστε αυτόματα την TV σε αναμονή κάθε φορά που ο δέκτης μεταβαίνει σε κατάσταση κοινής ή βαθιάς αναμονής." @@ -1191,7 +1190,7 @@ msgid "Available locales are:" msgstr "Οι διαθέσιμες τοπικές ρυθμίσεις είναι:" msgid "Axas E4HD Ultra" -msgstr "" +msgstr "Axas E4HD Ultra" msgid "Azerbaijan" msgstr "Αζερμπαϊτζάν" @@ -1437,6 +1436,9 @@ msgstr "Ρυθμίσεις CI (κοινής διεπαφής)" msgid "CI assignment" msgstr "Ανάθεση CI" +msgid "CI enabled" +msgstr "CI ενεργό" + msgid "CI slot: " msgstr "Θύρα CI: " @@ -1451,7 +1453,7 @@ msgstr "Καλωδιακή ανίχνευση" #, python-format msgid "Cable scan executable utility not found '%s'!" -msgstr "" +msgstr "Το εκτελέσιμο εργαλείο καλωδιακής ανίχνευσης δεν βρέθηκε '%s'!" msgid "Cabo Verde" msgstr "Πράσινο Ακρωτήρι" @@ -1686,9 +1688,8 @@ msgstr "" "Έλεγχος tuner %s\n" "Πόρτα DiSEqC %s για το %s" -#, fuzzy msgid "Children/Youth/Education/Science" -msgstr "Εκπαίδευση/Επιστήμη/..." +msgstr "Παιδικά/Νεανικά/Εκπαίδευση/Επιστήμη" msgid "Chile" msgstr "Χιλή" @@ -1708,21 +1709,20 @@ msgstr "Επιλογή tuner" msgid "Choose bouquet" msgstr "Επιλογή μπουκέτου" -#, fuzzy msgid "Choose whether AAC sound tracks should be transcoded." -msgstr "Ρυθμίστε εάν οι πολυκάναλες φέρουσες ήχου πρέπει να υποβιβάζονται σε στέρεο." +msgstr "Επιλέξτε αν οι φέρουσες ήχου AAC πρέπει να διακωδικοποιούνται." -#, fuzzy msgid "Choose whether AC3 sound tracks should be transcoded." -msgstr "Ρυθμίστε εάν οι πολυκάναλες φέρουσες ήχου πρέπει να υποβιβάζονται σε στέρεο." +msgstr "Επιλέξτε αν οι φέρουσες ήχου AC3 πρέπει να διακωδικοποιούνται." -#, fuzzy msgid "Choose whether WMA Pro sound tracks should be downmixed." -msgstr "Ρυθμίστε εάν οι πολυκάναλες φέρουσες ήχου πρέπει να υποβιβάζονται σε στέρεο." +msgstr "Επιλέξτε αν οι φέρουσες ήχου WMA Pro πρέπει να υποβιβάζονται σε στέρεο." + +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Επιλέξτε αν οι πολυκάναλες φέρουσες ήχου DTS-HD(HR/MA) πρέπει να διακωδικοποιούνται ή να υποβιβάζονται σε στέρεο." -#, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." -msgstr "Ρυθμίστε εάν οι πολυκάναλες φέρουσες ήχου πρέπει να υποβιβάζονται σε στέρεο." +msgstr "Επιλέξτε αν οι πολυκάναλες φέρουσες ήχου aac+ πρέπει να διακωδικοποιούνται ή να υποβιβάζονται σε στέρεο." msgid "Choose whether to scan a single transponder, one satellite or multiple satellites." msgstr "Επιλέξτε αν θα πραγματοποιήσετε ανίχνευση σε έναν αναμεταδότη, έναν δορυφόρο ή πολλούς δορυφόρους." @@ -2414,9 +2414,8 @@ msgstr "Τσεχία" msgid "D" msgstr "D" -#, fuzzy msgid "DAC" -msgstr "PDC" +msgstr "DAC" msgid "DHCP" msgstr "DHCP" @@ -2428,13 +2427,13 @@ msgid "DMM normal" msgstr "DMM κανονικό" msgid "DTS" -msgstr "" +msgstr "DTS" msgid "DTS downmix" msgstr "Αποκωδικοποίηση & μίξη DTS" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +msgid "DTS-HD(HR/MA) downmix" +msgstr "Αποκωδικοποίηση & μίξη DTS-HD (HR/MA)" msgid "DUAL LAYER DVD" msgstr "DVD ΔΙΠΛΗΣ ΣΤΡΩΣΗΣ" @@ -2515,7 +2514,7 @@ msgid "Default+Picon" msgstr "Προεπιλογή + Λογότυπο" msgid "Define additional delay in milliseconds before start of http(s) streams, e.g. to connect a remote tuner, you use a complex system of DiSEqC." -msgstr "" +msgstr "Ορισμός πρόσθετης καθυστέρησης σε χιλιοστά του δευτερολέπτου πριν την έναρξη των ροών http(s), π.χ. για σύνδεση σε έναν απομακρυσμένο δέκτη, χρησιμοποιήστε ένα πολύπλοκο σύστημα DiSEqC." msgid "Define the location of the EPG Cache file." msgstr "Καθορισμός της θέσης του αρχείου πληροφοριών EPG." @@ -2733,9 +2732,8 @@ msgstr "Ο φάκελος περιέχει %(file)s και %(subdir)s." msgid "Disable" msgstr "Απενεργοποίηση" -#, fuzzy msgid "Disable FCC during recordings" -msgstr "Συμπερίληψη πάντα του ECM στις εγγραφές" +msgstr "Απενεργοποίηση του FCC κατά τη διάρκεια των εγγραφών" msgid "Disable Picture in Picture" msgstr "Απενεργοποίηση Εικόνας σε Εικόνα" @@ -2974,9 +2972,8 @@ msgstr "Νέα πρόσθετα για λήψη" msgid "Downloadable plugins" msgstr "Πρόσθετα για λήψη" -#, fuzzy msgid "Downloaded Images" -msgstr "Λήψη image" +msgstr "Images που λήφθηκαν" msgid "Downloading" msgstr "Λήψη" @@ -2990,12 +2987,11 @@ msgstr "Λήψη νέας λίστας πακέτων. Παρακαλώ περι msgid "Downloading plugin information. Please wait..." msgstr "Λήψη πληροφοριών προσθέτων. Παρακαλώ περιμένετε..." -#, fuzzy msgid "Downmix" -msgstr "Αποκωδικοποίηση & μίξη DTS" +msgstr "Αποκωδικοποίηση & μίξη" msgid "Drama and Films" -msgstr "" +msgstr "Δράμα και Ταινίες" msgid "Drop unconfigured satellites" msgstr "Αγνόηση μη ρυθμισμένων δορυφόρων" @@ -3037,9 +3033,9 @@ msgstr "EPG:" msgid "ERROR - failed to scan (%s)!" msgstr "ΣΦΑΛΜΑ - Αποτυχία ανίχνευσης (%s)!" -#, fuzzy, python-format +#, python-format msgid "ERROR downloading file %s/%s" -msgstr "ΣΦΑΛΜΑ κατά τη λήψη του αρχείου %s" +msgstr "ΣΦΑΛΜΑ κατά τη λήψη του αρχείου %s/%s" msgid "East" msgstr "Ανατολικά" @@ -3156,9 +3152,8 @@ msgstr "Ενεργοποίηση της αυτόματης γρήγορης αν msgid "Enable auto fastscan for %s" msgstr "Ενεργοποίηση αυτόματης γρήγορης ανίχνευσης για το %s" -#, fuzzy msgid "Enable bluetooth audio" -msgstr "Eνεργοποίηση επεξεργασίας μπουκέτου" +msgstr "Eνεργοποίηση ήχου bluetooth" msgid "Enable bouquet edit" msgstr "Eνεργοποίηση επεξεργασίας μπουκέτου" @@ -3190,6 +3185,9 @@ msgstr "Ενεργοποίηση ή απενεργοποίηση του HDMI-CEC msgid "Enable parental protection" msgstr "Ενεργοποίηση γονικής προστασίας" +msgid "Enable power off timer" +msgstr "Ενεργοποίηση χρονοδιακόπτη απενεργοποίησης" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Χρήση απομακρυσμένου enigma2 δέκτη για υπηρεσίες που δεν δύναται να συντονιστούν τοπικά (π.χ. το tuner είναι απασχολημένο ή ο τύπος της υπηρεσίας δεν είναι διαθέσιμος στο τοπικό tuner). Πρέπει να οριστεί μία διεύθυνση URL που να συμπεριλαμβάνει το http:// και τον αριθμό θύρας (συνήθως ...:8001), π.χ. http://δεύτερος_δέκτης:8001." @@ -3584,13 +3582,11 @@ msgstr "" "FBC αυτόματο\n" "ανενεργό" -#, fuzzy msgid "FCC enabled" -msgstr "ενεργό" +msgstr "FCC ενεργό" -#, fuzzy msgid "FCCSetup" -msgstr "Ρυθμίσεις" +msgstr "Ρυθμίσεις FCC" msgid "FEC" msgstr "FEC" @@ -3686,13 +3682,13 @@ msgid "Fast" msgstr "Γρήγορο" msgid "Fast Channel Change" -msgstr "" +msgstr "Γρήγορη αλλαγή καναλιών" msgid "Fast Channel Change Setup" -msgstr "" +msgstr "Ρυθμίσεις γρήγορης αλλαγής καναλιών" msgid "Fast Channel Change setup" -msgstr "" +msgstr "Ρυθμίσεις γρήγορης αλλαγής καναλιών" msgid "Fast DiSEqC" msgstr "Γρήγορο DiSEqC" @@ -3786,9 +3782,15 @@ msgstr "Οι ακόλουθες ενέργειες θα εκτελεστούν msgid "Force legacy signal stats" msgstr "Εξαναγκασμός στατιστικών σήματος παλαιού τύπου" +msgid "Force power off (even when not in standby)" +msgstr "Επιβολή απενεργοποίησης (ακόμα και όταν δεν υπάρχει κατάσταση αναμονής)" + msgid "Force zap to recording service in standby" msgstr "Mετάβαση στο κανάλι εγγραφής κατά την αναμονή" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "Αναγκαστική μετάβαση σε βαθιά αναμονή, ακόμα και όταν δεν είναι ενεργή η αναμονή. Οι προγραμματισμένες εγγραφές παραμένουν ανεπηρέαστες." + msgid "Format" msgstr "Φορμά" @@ -3860,9 +3862,8 @@ msgstr "Πλήρης διαφάνεια" msgid "Full view resolution" msgstr "Ανάλυση πλήρους οθόνης" -#, fuzzy msgid "Fullbackup Images" -msgstr "Εφεδρικός χρονοδιακόπτης" +msgstr "Πλήρης εφεδρεία των images" msgid "Function of OK button" msgstr "Λειτουργία κουμπιού OK" @@ -3907,9 +3908,8 @@ msgstr "Γενική καθυστέρηση AC3" msgid "General PCM delay" msgstr "Γενική καθυστέρηση PCM" -#, fuzzy msgid "General bluetooth audio delay" -msgstr "Γενική καθυστέρηση AC3" +msgstr "Γενική καθυστέρηση ήχου bluetooth" msgid "Genre" msgstr "Είδος" @@ -4067,12 +4067,11 @@ msgstr "Λίστα HD" msgid "HD2400" msgstr "HD2400" -#, fuzzy msgid "HD60/HD66SE/Multibox/Multibox SE" -msgstr "HD60/Multibox/Multibox SE" +msgstr "HD60/HD66SE/Multibox/Multibox SE" msgid "HDMI" -msgstr "" +msgstr "HDMI" msgid "HDMI Colordepth" msgstr "Βάθος χρώματος HDMI" @@ -4134,6 +4133,9 @@ msgstr "Σκληρός δίσκος" msgid "Harddisk Setup" msgstr "Ρύθμιση σκληρού δίσκου" +msgid "Hardware Accelerated" +msgstr "Με επιτάχυνση υλικού" + msgid "Hardware: " msgstr "Υλικό: " @@ -4179,9 +4181,8 @@ msgstr "Πληροφορίες ιεραρχίας" msgid "High bitrate support" msgstr "Υποστήριξη υψηλού bitrate" -#, fuzzy msgid "History Prev/Next" -msgstr "Ιστορικό επόμενο" +msgstr "Ιστορικό προηγούμενο/επόμενο" msgid "History back" msgstr "Ιστορικό πίσω" @@ -4238,7 +4239,7 @@ msgid "How many minutes do you want to record?" msgstr "Ποσά λεπτά θέλετε να εγγραφούν;" msgid "Http(s) stream start delay" -msgstr "" +msgstr "Έναρξη καθυστέρησης ροής http(s)" msgid "Hue" msgstr "Απόχρωση" @@ -4312,6 +4313,9 @@ msgstr "Αν επιλεγεί το 'ναι' οι τιμές σήματος (SNR, msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Αν επιλεγεί το 'ναι', οι ίδιες εντολές που στέλνονται στην TV για την κοινή αναμονή, θα αποστέλλονται και για τη βαθιά αναμονή." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "Εάν ο δέκτης υποτίθεται ότι θα εισέλθει σε βαθιά αναμονή, π.χ. Δευτέρα βράδυ στη 1 π.μ., στην πραγματικότητα είναι ήδη Τρίτη. Για να το ενεργοποιήσετε αυτό ούτως ή άλλως, εδώ μπορεί να καθοριστεί διαφορετική ώρα έναρξης της επόμενης ημέρας." + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Αν χρησιμοποιείτε πολλαπλές μη δεσμευμένες εντολές DiSEqC, αυτές πρέπει να σταλούν πολλές φορές. Ορίστε τον αριθμό των μη δεσμευμένων διακοπτών στην αλληλουχία πλην ενός." @@ -5011,9 +5015,8 @@ msgstr "Μαυριτανία" msgid "Mauritius" msgstr "Μαυρίκιος" -#, fuzzy msgid "Max channels" -msgstr "Κανάλια" +msgstr "Μέγιστος αριθμός καναλιών" msgid "Max memory positions" msgstr "Μέγιστος αριθμός θέσεων" @@ -5030,12 +5033,6 @@ msgstr "Μαγιότ" msgid "Media player" msgstr "Αναπαραγωγή πολυμέσων" -msgid "Media player: GStreamer, version " -msgstr "Αναπαραγωγός πολυμέσων: GStreamer, έκδοση " - -msgid "Media player: ffmpeg, version " -msgstr "Αναπαραγωγός πολυμέσων: ffmpeg, έκδοση " - msgid "Media scanner" msgstr "Ανίχνευση πολυμέσων" @@ -5402,9 +5399,8 @@ msgstr "Νέα Καληδονία" msgid "New Zealand" msgstr "Νέα Ζηλανδία" -#, fuzzy msgid "News/Current Affairs/Social" -msgstr "Ειδήσεις & Επικαιρότητα" +msgstr "Ειδήσεις/Επικαιρότητα/Κοινωνικά" msgctxt "button label, 'next screen'" msgid "Next" @@ -5414,6 +5410,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Επόμενο" +msgid "Next day starts at" +msgstr "Η επόμενη μέρα ξεκινάει στις " + msgid "Nicaragua" msgstr "Νικαράγουα" @@ -5726,6 +5725,9 @@ msgstr "Γρήγορη κίνηση του κατόπτρου μόνο πριν msgid "Only on startup" msgstr "Μόνο κατά την εκκίνηση" +msgid "Only power off" +msgstr "Μόνο απενεργοποίηση" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Επιλέξτε το 'ναι' μόνο αν χρησιμοποιείτε έναν πολλαπλό διακόπτη που απαιτεί εντολή από τη θύρα Α του DiSEqC. Για όλες τις άλλες ρυθμίσεις επιλέξτε 'όχι'." @@ -5750,8 +5752,8 @@ msgstr "Κατάσταση λειτουργίας LED κατά τη βαθιά msgid "Operating LED status in standby mode" msgstr "Κατάσταση λειτουργίας LED κατά την αναμονή" -msgid "Operating LED status while running." -msgstr "Κατάσταση λειτουργίας LED κατά την εκτέλεση." +msgid "Operating LED status while running" +msgstr "Κατάσταση λειτουργίας LED κατά την εκτέλεση" msgid "Opkg" msgstr "Opkg" @@ -5878,7 +5880,7 @@ msgid "Parental control setup" msgstr "Παραμετροποίηση γονικού ελέγχου" msgid "Passthrough" -msgstr "" +msgstr "Διέλευση" msgid "Password" msgstr "Κωδικός" @@ -6288,6 +6290,12 @@ msgstr "LED ένδειξης λειτουργίας" msgid "Power management. Consult your receiver's manual for more information." msgstr "Διαχείριση ισχύος. Συμβουλευτείτε το εγχειρίδιο χρήσης του δέκτη σας για περισσότερες πληροφορίες." +msgid "Power off time" +msgstr "Ώρα απενεργοποίησης" + +msgid "Power off timer" +msgstr "Απενεργοποίηση χρονοδιακόπτη" + msgid "Power on display" msgstr "Ενεργοποίηση οθόνης πρόσοψης" @@ -6622,7 +6630,7 @@ msgid "Recall to previous service" msgstr "Επιστροφή στην προηγούμενη υπηρεσία" msgid "Receiver or driver does not support FCC" -msgstr "" +msgstr "Ο δέκτης ή ο οδηγός δεν υποστηρίζει FCC" msgid "Reception settings" msgstr "Ρυθμίσεις λήψης" @@ -6782,7 +6790,7 @@ msgid "Remove terrestrial services" msgstr "Διαγραφή επίγειων υπηρεσιών" msgid "Remove the services on scanned transponders before re-adding services?" -msgstr "Διαγραφή των υπηρεσιών από τους αναμεταδότες, προτού γίνει εκ νέου ανίχνευση σε αυτούς." +msgstr "Διαγραφή των υπηρεσιών από τους αναμεταδότες, προτού γίνει εκ νέου ανίχνευση σε αυτούς;" msgid "Remove this logfile" msgstr "Διαγραφή του αρχείου καταγραφής" @@ -7037,7 +7045,7 @@ msgid "SNR:" msgstr "SNR:" msgid "SPDIF" -msgstr "" +msgstr "SPDIF" msgid "SRT file" msgstr "αρχείο SRT" @@ -7718,6 +7726,9 @@ msgstr "Ανίχνευση υπηρεσιών" msgid "Service title mode" msgstr "Λειτουργία τίτλου υπηρεσίας" +msgid "Service type 4097 incorrect for PiP!" +msgstr "Ο τύπος υπηρεσίας 4097 δεν είναι σωστός για PiP!" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -7752,9 +7763,8 @@ msgstr "Ορισμός ως υπηρεσία εκκίνησης" msgid "Set blocktimes by weekday" msgstr "Ορισμός χρονοπλαισίων ανά" -#, fuzzy msgid "Set cursor on service from channel history" -msgstr "Μετάβαση στο προηγούμενο κανάλι στο ιστορικό" +msgstr "Τοποθέτηση του κέρσορα σε υπηρεσία από το ιστορικό καναλιών" msgid "Set default" msgstr "Ορισμός προεπιλογής" @@ -8107,9 +8117,8 @@ msgstr "Εμφάνιση προειδοποίησης πριν τον ορισμ msgid "Show warning when timeshift is stopped" msgstr "Εμφάνιση προειδοποίησης όταν η χρονομετατόπιση έχει σταματήσει" -#, fuzzy msgid "Show/Game Show/Leisure hobbies" -msgstr "Χόμπι αναψυχής" +msgstr "Σόου/Τηλεπαιχνίδι/Χόμπι αναψυχής" msgid "Show/hide window" msgstr "Εμφάνιση/απόκρυψη παραθύρου" @@ -8764,8 +8773,8 @@ msgstr "Ενεργοποίηση της οθόνης κατά τη λειτου msgid "Switch on the display during Suspend Mode" msgstr "Ενεργοποίηση της οθόνης κατά τη λειτουργία αναστολής" -msgid "Switch on the display during operation." -msgstr "Ενεργοποίηση της οθόνης πρόσοψης κατά τη λειτουργία του δέκτη." +msgid "Switch on the display during operation" +msgstr "Ενεργοποίηση της οθόνης πρόσοψης κατά τη λειτουργία του δέκτη" msgid "Switch to Android" msgstr "Αλλαγή σε Android" @@ -9223,9 +9232,8 @@ msgstr "Αυτή η επιλογή επιτρέπει την εμφάνιση α msgid "This option allows you to show the full screen path leading to the current screen." msgstr "Αυτή η επιλογή επιτρέπει την εμφάνιση της πλήρους διαδρομής που οδηγεί στην τρέχουσα οθόνη." -#, fuzzy msgid "This option allows you to switch audio to bluetooth speakers." -msgstr "Αυτή η επιλογή ρυθμίζει την αυτόματη ένταση του ήχου." +msgstr "Αυτή η επιλογή επιτρέπει την αλλαγή του ήχου στα ηχεία bluetooth." msgid "This option allows you to view the old and new settings side by side." msgstr "Αυτή η επιλογή επιτρέπει την επισκόπηση των παλιών με τις νέες ρυθμίσεις σε παράθεση." @@ -9233,9 +9241,8 @@ msgstr "Αυτή η επιλογή επιτρέπει την επισκόπησ msgid "This option can be useful for long HDMI cables." msgstr "Αυτή η επιλογή μπορεί να είναι χρήσιμη για μακριά καλώδια HDMI." -#, fuzzy msgid "This option configures the general audio delay for bluetooth speakers." -msgstr "Ρύθμιση γενικής καθυστέρησης των στερεοφωνικών καναλιών ήχου." +msgstr "Αυτή η επιλογή ρυθμίζει τη γενική καθυστέρηση ήχου για τα ηχεία bluetooth." msgid "This option set the level of surpression of mosquito noise (Mosquito Noise is random aliasing as a result of strong compression). Obviously this goes at the cost of picture details." msgstr "Αυτή η επιλογή ορίζει το επίπεδο μείωσης του θορύβου κουνουπιού (ο Θόρυβος Κουνουπιού είναι η τυχαία παραποίηση της εικόνας ως αποτέλεσμα της έντονης συμπίεσης). Προφανώς αυτό μειώνει τις λεπτομέρειες της εικόνας." @@ -10168,9 +10175,8 @@ msgstr "Δ" msgid "WLAN connection" msgstr "Σύνδεση WLAN" -#, fuzzy msgid "WMA Pro downmix" -msgstr "Αποκωδικοποίηση & μίξη AAC" +msgstr "Αποκωδικοποίηση & μίξη WMA Pro" msgid "WSS on 4:3" msgstr "WSS σε 4:3" @@ -10312,7 +10318,7 @@ msgid "What type of service scan do you want?" msgstr "Ποιον τύπο ανίχνευσης επιθυμείτε;" msgid "When enabled enigma2 will load unlinked userbouquets. This means that userbouquets that are available, but not included in the bouquets.tv or bouquets.radio files, will still be loaded. This allows you for example to keep your own user bouquet while installed settings are updated" -msgstr "Όταν είναι ενεργό, το enigma2 θα φορτώνει τα ασύνδετα μπουκέτα χρήστη. Αυτό σημαίνει ότι τα μπουκέτα που είναι διαθέσιμα, αλλά δεν συμπεριλαμβάνονται στα αρχεία bouquets.tv ή bouquets.radio, θα φορτώνονται επίσης. Αυτό σας επιτρέπει για παράδειγμα να διατηρείτε το δικό σας μπουκέτον χρήστη όταν τα εγκατεστημένα θα ενημερώνονται." +msgstr "Όταν είναι ενεργό, το enigma2 θα φορτώνει τα ασύνδετα μπουκέτα χρήστη. Αυτό σημαίνει ότι τα μπουκέτα που είναι διαθέσιμα, αλλά δεν συμπεριλαμβάνονται στα αρχεία bouquets.tv ή bouquets.radio, θα φορτώνονται επίσης. Αυτό σας επιτρέπει για παράδειγμα να διατηρείτε το δικό σας μπουκέτο χρήστη, όταν τα εγκατεστημένα θα ενημερώνονται." msgid "When enabled the Picture in Picture window can be closed with 'exit' button." msgstr "Όταν είναι ενεργό, το PiP μπορεί να τερματιστεί με το πλήκτρο εξόδου." @@ -10467,9 +10473,8 @@ msgstr "Όταν είναι ενεργό, οι υπότιτλοι τηλεκει msgid "When enabled, the VCR scart option will be shown on the main menu" msgstr "Όταν είναι ενεργό, η επιλογή VCR scart θα εμφανίζεται στο κύριο μενού" -#, fuzzy msgid "When enabled, the channel selection list will be hidden while listening to a radio channel. When disabled, the option 'Auto play last service in radio mode' is available." -msgstr "Όταν είναι ενεργό, η λίστα επιλογής καναλιών δεν θα εμφανίζεται κατά την ακρόαση ραδιοφώνου" +msgstr "Όταν είναι ενεργό, η λίστα επιλογής καναλιών δεν θα εμφανίζεται κατά την ακρόαση ραδιοφώνου. Όταν είναι ανενεργό, είναι διαθέσιμη η επιλογή 'Αυτόματη αναπαραγωγή της τελευταίας υπηρεσίας σε λειτουργία ραδιοφώνου'" msgid "When enabled, the infobar will be displayed when a new event starts." msgstr "Όταν είναι ενεργό, η μπάρα πληροφοριών θα εμφανίζεται όταν ένα νέο πρόγραμμα αρχίζει." @@ -10498,9 +10503,8 @@ msgstr "Όταν είναι ενεργό, ο δέκτης θα επιλέγει msgid "When enabled, the receiver will select an AC3+ track (when available)." msgstr "Όταν είναι ενεργό, ο δέκτης θα επιλέγει έναν ήχο AC3+ (όταν είναι διαθέσιμος)." -#, fuzzy msgid "When enabled, then when changing bouquets, set the cursor on the service from the channel history in the channel selection list." -msgstr "Όταν είναι ενεργό, μπορείτε να ελέγχετε την ένταση του ήχου με τα πλήκτρα βέλη αντί να μεταβαίνετε στη λίστα επιλογής καναλιών." +msgstr "Όταν είναι ενεργό, τότε κατά την αλλαγή των μπουκέτων, ο κέρσορας θα τοποθετηθεί στην υπηρεσία από το ιστορικό των καναλιών στη λίστα επιλογής καναλιών." msgid "When enabled, this setting has more weight than 'Preferred tuner for recordings'." msgstr "Όταν είναι ενεργό, αυτή η ρύθμιση έχει προτεραιότητα αντί του 'Προτιμώμενο tuner για εγγραφές'." @@ -10850,9 +10854,8 @@ msgstr "Ζάμπια" msgid "Zap" msgstr "Μετάβαση" -#, fuzzy msgid "Zap Up/Down" -msgstr "Ζάπινγκ προς τα κάτω" +msgstr "Ζάπινγκ επάνω/κάτω" msgid "Zap back to previously tuned service?" msgstr "Επιστροφή στην προηγούμενη υπηρεσία;" @@ -10901,9 +10904,8 @@ msgstr "Έγινε μετάβαση στην υπηρεσία χρονοδιακ msgid "Zgemma H.S/H.2S/H.2H/H5/H7(old model)" msgstr "Zgemma H.S/H.2S/H.2H/H5/H7(παλιό μοντέλο)" -#, fuzzy msgid "Zgemma H9(old model)/I55Plus/H8" -msgstr "Zgemma H9(παλιό μοντέλο)/I55Plus" +msgstr "Zgemma H9(παλιό μοντέλο)/I55Plus/H8" msgid "Zgemma Star S/2S/H1/H2" msgstr "Zgemma Star S/2S/H1/H2" @@ -10950,9 +10952,8 @@ msgstr "μόνο ο πραγματικός χρόνος" msgid "additional cable of rotor" msgstr "πρόσθετο καλώδιο μοτέρ" -#, fuzzy msgid "adult movie" -msgstr "ταινία ενηλίκων/δράμα" +msgstr "ταινία ενηλίκων" msgid "advanced" msgstr "προχωρημένο" @@ -11072,9 +11073,8 @@ msgstr "στο κέντρο, σε αναδίπλωση" msgid "chapters" msgstr "κεφάλαια" -#, fuzzy msgid "childrens's youth program (general)" -msgstr "παδικά/νεανικό πρόγραμμα (γενικά)" +msgstr "παιδικό νεανικό πρόγραμμα (γενικά)" msgid "circular left" msgstr "αριστερόστροφη" @@ -11098,14 +11098,13 @@ msgid "controlled by HDMI" msgstr "ελέγχεται από το HDMI" msgid "convert to AC3" -msgstr "" +msgstr "μετατροπή σε AC3" msgid "convert to DTS" -msgstr "" +msgstr "μετατροπή σε DTS" -#, fuzzy msgid "convert to multi-channel PCM" -msgstr "Πολυκάναλο PCM" +msgstr "μετατροπή σε πολυκάναλο PCM" msgid "cooking" msgstr "μαγειρική" @@ -11161,7 +11160,6 @@ msgstr "ανατολικά" msgid "economics/social advisory" msgstr "οικονομία/κοινωνική συμβουλευτική" -#, fuzzy msgid "educational/science/factual topics (general)" msgstr "εκπαίδευση/επιστήμη/πραγματικά θέματα (γενικά)" @@ -11231,10 +11229,6 @@ msgstr "πειραματικές ταινίες/βίντεο" msgid "extra wide" msgstr "πολύ πλατιά" -#, fuzzy -msgid "extrawide" -msgstr "πολύ πλατιά" - msgid "failed" msgstr "αποτυχία" @@ -11256,9 +11250,8 @@ msgstr "φιλμ/κινηματογράφος" msgid "fine arts" msgstr "καλές τέχνες" -#, fuzzy msgid "fitness and health" -msgstr "άσκηση & υγεία" +msgstr "άσκηση και υγεία" msgid "flat alphabetic" msgstr "αλφαβητική ταξινόμηση" @@ -11398,9 +11391,8 @@ msgstr "ακρόαση συμβάντων σύνδεσης και άμεσης msgid "literature" msgstr "λογοτεχνία" -#, fuzzy msgid "local sports" -msgstr "ομαδικά αθλήματα" +msgstr "τοπικά αθλήματα" msgid "locked" msgstr "κλειδωμένο" @@ -11426,6 +11418,9 @@ msgstr "μενού" msgid "mins" msgstr "λεπτά" +msgid "module disabled" +msgstr "άρθρωμα ανενεργό" + msgid "month" msgstr "μήνας" @@ -11447,9 +11442,8 @@ msgstr "μετάβαση στο πρώτο στοιχείο" msgid "move up to previous entry" msgstr "μετάβαση στο προηγούμενο στοιχείο" -#, fuzzy msgid "movie (general)" -msgstr "ταινία/δράμα (γενικά)" +msgstr "ταινία (γενικά)" msgid "multi" msgstr "πολλαπλό" @@ -11599,11 +11593,10 @@ msgid "pre-school children's program" msgstr "πρόγραμμα για παιδιά προσχολικής ηλικίας" msgid "preserve bookmarks in cuts" -msgstr "" +msgstr "διατήρηση των σελιδοδεικτών στις αποκοπές" -#, fuzzy msgid "priority" -msgstr "Προτεραιότητα" +msgstr "προτεραιότητα" msgid "receiver software because updates are available." msgstr "λογισμικού του δέκτη, διότι υπάρχουν διαθέσιμες ενημερώσεις." @@ -11629,9 +11622,8 @@ msgstr "διαγραφή μετά από αυτό το σημείο" msgid "remove before this position" msgstr "διαγραφή πριν από αυτό το σημείο" -#, fuzzy msgid "remove bookmarks in cuts" -msgstr "Διαγραφή σελιδοδείκτη" +msgstr "αφαίρεση σελιδοδείκτη στις αποκοπές" msgid "remove this mark" msgstr "διαγραφή αυτού του σημειωτή" @@ -11684,9 +11676,8 @@ msgstr "επιλογή σημείου μενού" msgid "serious music/classic music" msgstr "σοβαρή μουσική/κλασική μουσική" -#, fuzzy msgid "serious/classical/religious/historical drama" -msgstr "σοβαρή/κλασική/θρησκευτική/ιστορική ταινία/δράμα" +msgstr "σοβαρή/κλασική/θρησκευτική/ιστορικό δράμα" msgid "service off-air" msgstr "υπηρεσία εκτός λειτουργίας" @@ -11764,16 +11755,14 @@ msgstr "θέση%s - %s, με εφεδρεία" msgid "slot%s - %s, without backup" msgstr "θέση%s - %s, χωρίς εφεδρεία" -#, fuzzy msgid "soap/melodrama/folkloric" msgstr "σαπουνόπερα/μελόδραμα/φολκλόρ" msgid "social/political issues/economics (general)" msgstr "κοινωνικά/πολιτική επικαιρότητα/οικονομία (γενικά)" -#, fuzzy msgid "social/spiritual sciences" -msgstr "κοινωνικά/διανόηση" +msgstr "κοινωνικά/επιστήμες διανόησης" msgid "space" msgstr "κενό διάστημα" @@ -11824,9 +11813,8 @@ msgid "talk show" msgstr "συζητήσεις" msgid "team sports/excluding football" -msgstr "" +msgstr "ομαδικά αθλήματα/εξαιρείται το ποδόσφαιρο" -#, fuzzy msgid "technology/natural sciences" msgstr "τεχνολογία/φυσικές επιστήμες" @@ -11881,12 +11869,11 @@ msgstr "μη εφικτός έλεγχος" msgid "until standby/restart" msgstr "μέχρι την αναμονή/επανεκκίνηση" -#, fuzzy -msgid "use best / controlled by HDMI" -msgstr "ελέγχεται από το HDMI" +msgid "use HDMI cacenter" +msgstr "χρήση κέντρο ελέγχου HDMI" -msgid "use_hdmi_cacenter" -msgstr "" +msgid "use best / controlled by HDMI" +msgstr "χρήση βέλτιστου/ έλεγχος από το HDMI" msgid "user defined" msgstr "ορισμένο από τον χρήστη" @@ -11897,6 +11884,9 @@ msgstr "ορισμένo από τον χρήστη κρυφά" msgid "variety show" msgstr "βαριετέ" +msgid "version" +msgstr "έκδοση" + msgid "vertical" msgstr "κάθετη" diff --git a/po/en.po b/po/en.po index 64839231a25..42e6911781b 100644 --- a/po/en.po +++ b/po/en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: \n" "Last-Translator: satdreamgr\n" "Language-Team: \n" @@ -1189,6 +1189,9 @@ msgstr "Automatic scan" msgid "Automatic scan" msgstr "Automatic scan" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1458,6 +1461,10 @@ msgstr "" msgid "CI assignment" msgstr "CI assignment" +#, fuzzy +msgid "CI enabled" +msgstr "enabled" + msgid "CI slot: " msgstr "" @@ -1731,6 +1738,10 @@ msgstr "Configure whether multi channel sound tracks should be downmixed to ster msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Configure whether multi channel sound tracks should be downmixed to stereo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Configure whether multi channel sound tracks should be downmixed to stereo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Configure whether multi channel sound tracks should be downmixed to stereo." @@ -2458,7 +2469,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" msgid "DUAL LAYER DVD" @@ -3242,6 +3253,10 @@ msgstr "Enable EIT EPG" msgid "Enable parental protection" msgstr "" +#, fuzzy +msgid "Enable power off timer" +msgstr "Enable move mode" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -3829,9 +3844,15 @@ msgstr "Following tasks will be done after you press OK!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Format" @@ -4189,6 +4210,10 @@ msgstr "Harddisk" msgid "Harddisk Setup" msgstr "" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardware: " + msgid "Hardware: " msgstr "Hardware: " @@ -4371,6 +4396,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5098,13 +5126,6 @@ msgstr "" msgid "Media player" msgstr "Media player" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Kernel version: " - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "Media scanner" @@ -5497,6 +5518,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Next" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -5819,6 +5843,10 @@ msgstr "" msgid "Only on startup" msgstr "" +#, fuzzy +msgid "Only power off" +msgstr "Enable move mode" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -5843,7 +5871,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6395,6 +6423,13 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +#, fuzzy +msgid "Power off time" +msgstr "Sort time" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -7863,6 +7898,9 @@ msgstr "Service scan" msgid "Service title mode" msgstr "Service title mode" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8940,7 +8978,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "View list of available display and userinterface extensions." #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "View list of available display and userinterface extensions." #, fuzzy @@ -11416,9 +11454,6 @@ msgstr "experimental film/video" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -11616,6 +11651,10 @@ msgstr "menu" msgid "mins" msgstr "mins" +#, fuzzy +msgid "module disabled" +msgstr "disabled" + msgid "month" msgstr "month" @@ -12082,10 +12121,10 @@ msgstr "" msgid "until standby/restart" msgstr "until standby/restart" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -12098,6 +12137,9 @@ msgstr "user defined" msgid "variety show" msgstr "variety show" +msgid "version" +msgstr "version" + msgid "vertical" msgstr "vertical" diff --git a/po/es.po b/po/es.po index b70740af478..986821844e2 100644 --- a/po/es.po +++ b/po/es.po @@ -4,8 +4,8 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" -"PO-Revision-Date: 2021-05-25 18:08+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" +"PO-Revision-Date: 2022-06-19 14:37+0200\n" "Last-Translator: Jose Juan \n" "Language-Team: ANGELODOS angelo2807@hotmail.com\n" "Language: es\n" @@ -13,15 +13,16 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 3.1\n" "X-Poedit-SourceCharset: iso-8859-1\n" # -#, fuzzy msgid "" "\n" " Do you want to switch to Android ?" -msgstr "Ejecutar el DVD de la unidad?" +msgstr "" +"\n" +"¿Quieres cambiar a Android?" # msgid "" @@ -63,9 +64,8 @@ msgstr "" "¡El temporizador '%s' está deshabilitado!" # -#, fuzzy msgid " (+5 volt terrestrial)" -msgstr "Terrestre" +msgstr "(+5 voltios terrestre)" msgid " (0 - all networks)" msgstr "(0 - todas las redes)" @@ -103,7 +103,7 @@ msgid " (lower than any auto)" msgstr "(menor que en automático)" msgid " - Unicable/JESS LNBs not found" -msgstr "" +msgstr "LNB Unicable/JESS no encontrados" msgid " Warning: the selected tuner should not use SCR Unicable type for LNBs because each tuner need a own SCR number." msgstr " Advertencia: el sintonizador seleccionado no debe utilizar el tipo SCR Unicable para LNBs porque cada sintonizador necesita un propio número SCR." @@ -116,7 +116,7 @@ msgid " ms" msgstr "ms" msgid " unicable LNB input of rotor" -msgstr "" +msgstr "entrada LNB unicable del rotor" # #, python-format @@ -137,7 +137,7 @@ msgstr "%.2f GB" #, python-format msgid "%.3f MHz" -msgstr "" +msgstr "%.3f MHz" #, python-format msgid "%02d:%02d" @@ -249,11 +249,11 @@ msgid "%d ms" msgstr "%d ms" # -#, fuzzy, python-format +#, python-format msgid "%d package selected." msgid_plural "%d packages selected." -msgstr[0] "paquetes seleccionados." -msgstr[1] "paquetes seleccionados." +msgstr[0] "%d paquete seleccionado." +msgstr[1] "%d paquete seleccionado." #, python-format msgid "%d pixel wide" @@ -338,11 +338,11 @@ msgstr "%s %d.%d" #, python-format msgid "%s KSymb/s" -msgstr "" +msgstr "%s KSymb/s" #, python-format msgid "%s MHz" -msgstr "" +msgstr "%s MHz" #, python-format msgid "%s imported from fallback tuner" @@ -452,9 +452,8 @@ msgid "2" msgstr "2" # -#, fuzzy msgid "2 new lines" -msgstr "Dos lineas" +msgstr "2 nuevas lineas" msgid "20 MB/s" msgstr "20 MB/s" @@ -655,23 +654,20 @@ msgstr "Configurar A/V" msgid "AAC downmix" msgstr "AAC downmix" -#, fuzzy msgid "AAC transcoding" -msgstr "Transcodificación:" +msgstr "Transcodificar AAC" -#, fuzzy msgid "AAC+ downmix" -msgstr "AAC downmix" +msgstr "mezcla AAC+" msgid "AC3" -msgstr "" +msgstr "AC3" msgid "AC3 downmix" msgstr "AC3 downmix" -#, fuzzy msgid "AC3 transcoding" -msgstr "Transcodificación:" +msgstr " AC3 transcodificación:" msgid "ACQUIRING TSID/ONID" msgstr "ADQUISICIÓN DE TSID / ONID" @@ -1147,9 +1143,8 @@ msgstr "Armenia" msgid "Artist" msgstr "Artista" -#, fuzzy msgid "Arts/Culture (without music)" -msgstr "Artes / cultura (sin música, general)" +msgstr "Arte/Cultura (sin música)" msgid "Aruba" msgstr "Aruba" @@ -1211,7 +1206,7 @@ msgid "Audio auto volume level" msgstr "Nivel de volumen automático" msgid "Audio description for the visually impaired" -msgstr "" +msgstr "Audiodescripción para personas con discapacidad visual" msgid "Audio language selection 1" msgstr "Selección de idioma de audio 1" @@ -1322,6 +1317,9 @@ msgstr "Marcadores automáticos" msgid "Automatic scan" msgstr "Búsqueda automática" +msgid "Automatically power off box to deep standby mode." +msgstr "Apague automáticamente la caja al modo de espera profundo." + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Ponga automáticamente el televisor en modo de espera siempre que el receptor entre en modo de espera o en modo de espera total." @@ -1340,7 +1338,7 @@ msgid "Available locales are:" msgstr "Los locales disponibles son:" msgid "Axas E4HD Ultra" -msgstr "" +msgstr "Axas E4HD Ultra" msgid "Azerbaijan" msgstr "Azerbaijan" @@ -1616,6 +1614,11 @@ msgstr "Configurar interfaz común" msgid "CI assignment" msgstr "Asignación CI" +# +#, fuzzy +msgid "CI enabled" +msgstr "CI %s activado" + msgid "CI slot: " msgstr "Ranura CI:" @@ -1631,7 +1634,7 @@ msgstr "Búsqueda de cable" #, python-format msgid "Cable scan executable utility not found '%s'!" -msgstr "" +msgstr "¡No se encontró la utilidad ejecutable de escaneo de cable '%s'!" msgid "Cabo Verde" msgstr "Cabo verde" @@ -1866,7 +1869,7 @@ msgid "Check the internet connection again" msgstr "Compruebe la conexión a Internet de nuevo" msgid "Checking ONID/TSID" -msgstr "" +msgstr "Comprobación de ONID/TSID" # msgid "Checking filesystem..." @@ -1883,9 +1886,8 @@ msgstr "" "Comprobando el sintonizador %s\n" "Puerto DiSEqC %s para %s" -#, fuzzy msgid "Children/Youth/Education/Science" -msgstr "Educación / Ciencia / ..." +msgstr "Infantil/Juventud/Educación/Ciencia" msgid "Chile" msgstr "Chile" @@ -1905,27 +1907,26 @@ msgstr "Elige sintonizador" msgid "Choose bouquet" msgstr "Elige Favorito" -#, fuzzy msgid "Choose whether AAC sound tracks should be transcoded." -msgstr "Configure si las pistas de sonido multicanal deben mezclarse a estéreo." +msgstr "Elija si las pistas de sonido AAC deben transcodificarse." -#, fuzzy msgid "Choose whether AC3 sound tracks should be transcoded." -msgstr "Configure si las pistas de sonido multicanal deben mezclarse a estéreo." +msgstr "Elija si las pistas de sonido AC3 deben transcodificarse." -#, fuzzy msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Configure si las pistas de sonido multicanal deben mezclarse a estéreo." -#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Elija si las pistas de sonido multicanal DTS-HD (HR/MA) deben mezclarse o transcodificarse." + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." -msgstr "Configure si las pistas de sonido multicanal deben mezclarse a estéreo." +msgstr "Elija si las pistas de sonido multicanal aac+ deben mezclarse a estéreo." msgid "Choose whether to scan a single transponder, one satellite or multiple satellites." -msgstr "" +msgstr "Elija si desea escanear un solo transpondedor, un satélite o varios satélites." msgid "Choose whether to scan for free services only or whether to include paid/encrypted services too." -msgstr "" +msgstr "Elija si desea escanear solo para servicios gratuitos o si desea incluir también servicios de pago/encriptados." msgid "Choose which tuner to configure." msgstr "Elija el sintonizador que desea configurar." @@ -2175,7 +2176,7 @@ msgid "Configure remote control type" msgstr "Tipo de control de adultos" msgid "Configure separator type used in full description for separate short and extended descriptions." -msgstr "" +msgstr "Configure el tipo de separador utilizado en la descripción completa para separar descripciones cortas y ampliadas." msgid "Configure the DiSEqC mode for this LNB." msgstr "Configure el modo DiSEqC para este LNB." @@ -2687,9 +2688,8 @@ msgstr "Czechia" msgid "D" msgstr "D" -#, fuzzy msgid "DAC" -msgstr "PDC" +msgstr "DAC" # msgid "DHCP" @@ -2703,13 +2703,13 @@ msgid "DMM normal" msgstr "avanzado" msgid "DTS" -msgstr "" +msgstr "DTS" msgid "DTS downmix" msgstr "AAC downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +msgid "DTS-HD(HR/MA) downmix" +msgstr "Mezcla descendente DTS-HD (HR/MA)" msgid "DUAL LAYER DVD" msgstr "DVD DOBLE CAPA" @@ -2804,7 +2804,7 @@ msgid "Default+Picon" msgstr "Predeterminado + Picon" msgid "Define additional delay in milliseconds before start of http(s) streams, e.g. to connect a remote tuner, you use a complex system of DiSEqC." -msgstr "" +msgstr "Defina un retraso adicional en milisegundos antes del inicio de las transmisiones de http(s), p. para conectar un sintonizador remoto, utiliza un complejo sistema de DiSEqC." msgid "Define the location of the EPG Cache file." msgstr "Defina la ubicación del archivo EPG Cache." @@ -3045,9 +3045,8 @@ msgstr "El directorio contiene %(file)s y %(subdir)s." msgid "Disable" msgstr "Desabilitar" -#, fuzzy msgid "Disable FCC during recordings" -msgstr "Incluya siempre ECM en grabaciones" +msgstr "Deshabilitar FCC durante las grabaciones" # msgid "Disable Picture in Picture" @@ -3074,9 +3073,8 @@ msgid "Disk space to reserve for recordings (in GB)" msgstr "Espacio en disco para reservar para grabaciones (en GB)" # -#, fuzzy msgid "Disk state: " -msgstr "estado de la búsqueda" +msgstr "Estado del disco:" # msgid "Display 16:9 content as" @@ -3327,9 +3325,8 @@ msgstr "Nuevos plugins descargables" msgid "Downloadable plugins" msgstr "Plugins descargables" -#, fuzzy msgid "Downloaded Images" -msgstr "Descarga de imagen" +msgstr "Descarga de imagenes" # msgid "Downloading" @@ -3346,12 +3343,11 @@ msgstr "Intentando descargar una nueva lista de paquetes. Espere..." msgid "Downloading plugin information. Please wait..." msgstr "Descargando información del plugin. Espere..." -#, fuzzy msgid "Downmix" -msgstr "AAC downmix" +msgstr "Mezcla descendente" msgid "Drama and Films" -msgstr "" +msgstr "Teatro y Cine" msgid "Drop unconfigured satellites" msgstr "Soltar satélites no configurados" @@ -3398,9 +3394,9 @@ msgstr "EPG" msgid "ERROR - failed to scan (%s)!" msgstr "ERROR - ¡falló la búsqueda (%s)!" -#, fuzzy, python-format +#, python-format msgid "ERROR downloading file %s/%s" -msgstr "ERROR descargando archivo %s" +msgstr "ERROR descargando archivo %s/%s" # msgid "East" @@ -3531,9 +3527,8 @@ msgid "Enable auto fastscan for %s" msgstr "Habilitar exploración rápida automática para %s" # -#, fuzzy msgid "Enable bluetooth audio" -msgstr "Habilitar edición de lista" +msgstr "Habilitar audio bluetooth" # msgid "Enable bouquet edit" @@ -3570,6 +3565,9 @@ msgstr "Activar HDMI- CEC." msgid "Enable parental protection" msgstr "añadir a protección de adultos" +msgid "Enable power off timer" +msgstr "Habilitar temporizador de apagado" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Habilite el receptor enigma2 remoto para que intente sintonizar los servicios que no se pueden sintonizar localmente (por ejemplo, el sintonizador está ocupado o el tipo de servicio no está disponible en el sintonizador local) Especifique la URL completa incluyendo http:// y el número de puerto (normalmente ...:8001), Por ejemplo, http://second_box:8001." @@ -3701,7 +3699,7 @@ msgid "Enter the service PIN" msgstr "Ponga el PIN del canal" msgid "Enter valid ONID/TSID" -msgstr "" +msgstr "Introduzca un ONID/TSID válido" msgid "Enter your current latitude. This is the number of degrees you are from the equator as a decimal." msgstr "Ingrese su latitud actual. Este es el número de grados que eres del ecuador como un decimal." @@ -4003,14 +4001,12 @@ msgstr "" "inactivo" # -#, fuzzy msgid "FCC enabled" -msgstr "activado" +msgstr " FCC activado" # -#, fuzzy msgid "FCCSetup" -msgstr "Configuración" +msgstr "FCC Configuración" # msgid "FEC" @@ -4113,13 +4109,13 @@ msgid "Fast" msgstr "Rápido" msgid "Fast Channel Change" -msgstr "" +msgstr "Cambio rápido de canal" msgid "Fast Channel Change Setup" -msgstr "" +msgstr "Configuración de cambio rápido de canal" msgid "Fast Channel Change setup" -msgstr "" +msgstr "Configuración de cambio rápido de canal" # msgid "Fast DiSEqC" @@ -4223,8 +4219,14 @@ msgstr "¡Las siguientes tareas serán hechas después de pulsar OK!" msgid "Force legacy signal stats" msgstr "Forzar estadísticas de señales heredadas" +msgid "Force power off (even when not in standby)" +msgstr "Forzar el apagado (incluso cuando no está en modo de espera)" + msgid "Force zap to recording service in standby" -msgstr "" +msgstr "Forzar zap a servicio de grabación en espera" + +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "Fuerza el modo de espera profundo, incluso cuando no está en modo de espera. Las grabaciones programadas no se ven afectadas." # msgid "Format" @@ -4294,7 +4296,7 @@ msgid "Frontprocessor version: %s" msgstr "Versión de FrontProcessor: %s" msgid "Full description separator" -msgstr "" +msgstr "Separador de descripción completa" #. TRANSLATORS: (aspect ratio policy: display as fullscreen, even if the content aspect ratio does not match the screen ratio) msgid "Full screen" @@ -4306,9 +4308,8 @@ msgstr "Transparencia total" msgid "Full view resolution" msgstr "Resolución Fulview" -#, fuzzy msgid "Fullbackup Images" -msgstr "Temporizador de retroceso" +msgstr "Imágenes de copia de seguridad completa" msgid "Function of OK button" msgstr "Función del botón OK" @@ -4323,9 +4324,8 @@ msgid "G" msgstr "G" # -#, fuzzy msgid "GB" -msgstr "RGB" +msgstr "GB" # msgid "GUI Settings" @@ -4361,9 +4361,8 @@ msgid "General PCM delay" msgstr "Retraso general del PCM" # -#, fuzzy msgid "General bluetooth audio delay" -msgstr "Retraso General AC3" +msgstr "Retraso general de audio bluetooth" # msgid "Genre" @@ -4537,12 +4536,11 @@ msgstr "Lista de alta definición" msgid "HD2400" msgstr "HD2400" -#, fuzzy msgid "HD60/HD66SE/Multibox/Multibox SE" -msgstr "HD60/Multibox/Multibox SE" +msgstr "HD60/HD66SE/Multibox/Multibox SE" msgid "HDMI" -msgstr "" +msgstr "HDMI" msgid "HDMI Colordepth" msgstr "HDMI Colordepth" @@ -4563,9 +4561,8 @@ msgid "HDMI-CEC Source Inactive" msgstr "HDMI-CEC Fuente Inactiva" # -#, fuzzy msgid "HDMI-CEC address" -msgstr "Dirección Ip" +msgstr "Dirección HDMI-CEC" msgid "HDMI-CEC setup" msgstr "Configuración de HDMI-CEC" @@ -4610,6 +4607,10 @@ msgstr "Disco duro" msgid "Harddisk Setup" msgstr "Configuración del disco duro" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardware: " + msgid "Hardware: " msgstr "Hardware: " @@ -4645,7 +4646,7 @@ msgid "Hide player" msgstr "Ocultar player" msgid "Hide sub-menu" -msgstr "" +msgstr "Ocultar sub-menu" msgid "Hide zap errors" msgstr "Ocultar errores de zap" @@ -4657,9 +4658,8 @@ msgstr "Información de jerarquía" msgid "High bitrate support" msgstr "Soporte de bitrate alto" -#, fuzzy msgid "History Prev/Next" -msgstr "Historia siguiente" +msgstr "Historial Anterior/Siguiente" msgid "History back" msgstr "Historia atrás" @@ -4718,7 +4718,7 @@ msgid "How many minutes do you want to record?" msgstr "¿Cuántos minutos quiere grabar?" msgid "Http(s) stream start delay" -msgstr "" +msgstr "Retraso en el inicio de la transmisión Http(s)" # msgid "Hue" @@ -4737,9 +4737,8 @@ msgstr "I" msgid "I do not want to perform any service scans" msgstr "No quiero realizar ningún escaneo de servicio" -#, fuzzy msgid "I55SE/H7(new model)/H9(new model)/H9COMBO/H9TWIN/H9SE/H9COMBOSE/H10/H11" -msgstr "Zgemma H7(nuevo modelo)/H9(nuevo modelo)/H9COMBO/H9TWIN/H10" +msgstr "I55SE/H7(new model)/H9(nuevo modelo)/H9COMBO/H9TWIN/H9SE/H9COMBOSE/H10/H11" msgid "IDLE" msgstr "IDLE" @@ -4798,6 +4797,9 @@ msgstr "Si se establece en ‘sí’, los valores de señal (SNR, etc.) se calcu msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Si se establece en ‘sí’, los mismos comandos se enviarán al televisor para eventos de espera profunda, como se envían durante eventos de espera regulares." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "Si el receptor ha de entrar en reposo profundo por ejemplo, lunes por la noche a la 1:00, realmente ya es el martes. Para que esto sea posible de todos modos, debe especificarse, cuando comienza un nuevo día." + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Si utiliza múltiples interruptores no comprometidos, los comandos DiSEqC se deben enviar varias veces. Establezca la cantidad de interruptores no asignados en la cadena menos uno." @@ -5464,12 +5466,11 @@ msgid "Luxembourgish" msgstr "Luxemburgués" # -#, fuzzy msgid "MB" -msgstr "B" +msgstr "MB" msgid "MHz" -msgstr "" +msgstr "MHz" # msgid "MMC card" @@ -5589,9 +5590,8 @@ msgid "Mauritius" msgstr "Mauricio" # -#, fuzzy msgid "Max channels" -msgstr "Canales" +msgstr "Canales maximos" msgid "Max memory positions" msgstr "Máximas posiciones de memoria" @@ -5610,12 +5610,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Reproductor" -msgid "Media player: GStreamer, version " -msgstr "Versión GStreamer" - -msgid "Media player: ffmpeg, version " -msgstr "Reproductor multimedia: ffmpeg, versión" - # msgid "Media scanner" msgstr "Escáner de medios" @@ -6038,9 +6032,8 @@ msgstr "Nueva Caledonia" msgid "New Zealand" msgstr "Nueva Zelanda" -#, fuzzy msgid "News/Current Affairs/Social" -msgstr "Noticias" +msgstr "Noticias/Actualidad/Social" msgctxt "button label, 'next screen'" msgid "Next" @@ -6050,6 +6043,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Siguiente" +msgid "Next day starts at" +msgstr "El día siguiente comienza a las" + msgid "Nicaragua" msgstr "Nicaragua" @@ -6403,6 +6399,10 @@ msgstr "Solo mueva el plato rápidamente antes de esta hora." msgid "Only on startup" msgstr "Sólo al inicio" +#, fuzzy +msgid "Only power off" +msgstr "Habilitar temporizador de apagado" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Solo seleccione ‘sí’ si está usando un multiswich que requiere una señal de comando DiSEqC Port-A. Para todas las demás configuraciones, seleccione ‘no’." @@ -6429,7 +6429,8 @@ msgstr "Estado de funcionamiento del LED en modo de espera profundo" msgid "Operating LED status in standby mode" msgstr "Estado operativo del LED en modo de espera" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "Estado de funcionamiento del LED mientras se ejecuta." msgid "Opkg" @@ -6447,9 +6448,8 @@ msgstr "Ordinario" msgid "Original" msgstr "Original" -#, fuzzy msgid "Original audio" -msgstr "Original" +msgstr "Audio original" msgid "Other" msgstr "Otro" @@ -6508,7 +6508,7 @@ msgid "PPanel" msgstr "PPanel" msgid "PULSe 4K(mini)" -msgstr "" +msgstr "PULSe 4K(mini)" # msgid "Package list update" @@ -6568,7 +6568,7 @@ msgid "Parental control setup" msgstr "Configuración del control de adultos" msgid "Passthrough" -msgstr "" +msgstr "Pasar por" msgid "Password" msgstr "Contraseña" @@ -7051,6 +7051,13 @@ msgstr "LED de encendido" msgid "Power management. Consult your receiver's manual for more information." msgstr "Administración de energía Consulte el manual de su receptor para más información." +# +msgid "Power off time" +msgstr "tiempo de apagado" + +msgid "Power off timer" +msgstr "Temporizador de apagado" + msgid "Power on display" msgstr "Poder en la pantalla" @@ -7211,7 +7218,7 @@ msgid "Press or select button and then press 'OK' for attach next function or ed msgstr "Presione o seleccione el botón y luego presione ‘OK’ para adjuntar la siguiente función o la edición adjunta." msgid "Press yellow button to set CEC address again" -msgstr "" +msgstr "Presione el botón amarillo para configurar la dirección CEC nuevamente" # msgid "Press yellow to set this interface as default interface." @@ -7425,7 +7432,7 @@ msgid "Recall to previous service" msgstr "Recordar el servicio anterior" msgid "Receiver or driver does not support FCC" -msgstr "" +msgstr "El receptor o el controlador no es compatible con FCC" # msgid "Reception settings" @@ -7611,7 +7618,7 @@ msgid "Remove terrestrial services" msgstr "Eliminar los servicios terrenales" msgid "Remove the services on scanned transponders before re-adding services?" -msgstr "" +msgstr "Eliminar los servicios en transpondedores escaneados antes de volver a agregar servicios?" msgid "Remove this logfile" msgstr "Eliminar este archivo de registro" @@ -7665,7 +7672,7 @@ msgid "Replace `- ` in dialogs with colored text per speaker (like teletext subt msgstr "Reemplace `-` en diálogos con texto de color por altavoz (como los subtítulos de teletexto para personas con discapacidad auditiva)" msgid "Replace newlines in EPG" -msgstr "" +msgstr "Reemplazar líneas nuevas en EPG" msgid "Request for physical address report" msgstr "Solicitud de informe de dirección física" @@ -7899,7 +7906,7 @@ msgid "SNR:" msgstr "SNR:" msgid "SPDIF" -msgstr "" +msgstr "SPDIF" msgid "SRT file" msgstr "Archivo SRT" @@ -8100,7 +8107,7 @@ msgid "Scan state" msgstr "Estado de escaneo" msgid "Scan using transponders on NIT table? 'No' will use transponders in xml file." -msgstr "" +msgstr "Escanear usando transpondedores en la tabla NIT? 'No' utilizará transpondedores en el archivo xml." # msgid "Scan wireless networks" @@ -8322,7 +8329,7 @@ msgid "Select channel to record from" msgstr "Seleccione canal a grabar" msgid "Select char for replacing newlines in EPG." -msgstr "" +msgstr "Seleccione caracterr para reemplazar líneas nuevas en EPG." msgid "Select copy destination for:" msgstr "Seleccione el destino de la copia para:" @@ -8359,9 +8366,8 @@ msgstr "Seleccione cómo se configura la antena parabólica. es decir, plato fij msgid "Select how you want your receiver to keep the correct time, either from the DVB transponder, or from the internet using NTP. Or use Auto, which will favour using NTP, but will fall back to transponder time when no internet connection is available." msgstr "Seleccione cómo desea que su receptor mantenga la hora correcta, ya sea desde el transpondedor DVB o desde Internet usando NTP. O use Auto, que favorecerá el uso de NTP, pero volverá al tiempo del transpondedor cuando no haya conexión a Internet disponible." -#, fuzzy msgid "Select image" -msgstr "Borrar imagen" +msgstr "Seleccionar imagen" msgid "Select in which resolution pictures are displayed with picture viewer or movie player." msgstr "Configurar en qué imágenes de resolución se muestran con el visor de imágenes y el reproductor de películas." @@ -8500,17 +8506,15 @@ msgstr "Seleccionar el modo de video" msgid "Select whether your SCR device is externally powered." msgstr "Seleccione si su dispositivo SCR está alimentado externamente." -#, fuzzy msgid "Select which satellite to scan." -msgstr "Seleccionar satélites" +msgstr "Seleccione qué sateliter escanear." # -#, fuzzy msgid "Select which transponder to scan." -msgstr "Seleccione proveedor a añadir..." +msgstr "Seleccione qué transpondedor escanear." msgid "Select which tuner to use for the scan." -msgstr "" +msgstr "Seleccione qué sintonizador usar para el escaneo." # msgid "Select wireless network" @@ -8660,6 +8664,9 @@ msgstr "Buscar canales" msgid "Service title mode" msgstr "Modo de título de servicio" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + # msgid "" "Service unavailable!\n" @@ -8698,9 +8705,8 @@ msgid "Set blocktimes by weekday" msgstr "Establecer tiempos de bloque por día de la semana" # -#, fuzzy msgid "Set cursor on service from channel history" -msgstr "Cambiar al canal anterior en historia" +msgstr "Coloca el cursor en el servicio desde el historial del canal" msgid "Set default" msgstr "Establecer predeterminado" @@ -9037,9 +9043,8 @@ msgstr "Mostrar iconos de estado en la lista de películas" msgid "Show status icons in movielist" msgstr "Mostrar iconos de estado en la lista de películas" -#, fuzzy msgid "Show sub-menu" -msgstr "Mostrar columnas" +msgstr "Mostrar submenú" msgid "Show subservice selection" msgstr "Mostrar selección de servicios" @@ -9081,9 +9086,8 @@ msgstr "Mostrar advertencia antes de establecer ‘Ignorar conflicto’" msgid "Show warning when timeshift is stopped" msgstr "Mostrar advertencia cuando se detiene el turno de tiempo" -#, fuzzy msgid "Show/Game Show/Leisure hobbies" -msgstr "Pasatiempos de ocio" +msgstr "Espectáculo/Programa de juegos/Pasatiempos de ocio" msgid "Show/hide window" msgstr "Mostrar / ocultar la ventana" @@ -9229,11 +9233,11 @@ msgstr "Slot %d" #, python-format msgid "Slot %s / FBC in %s" -msgstr "" +msgstr "Ranura %s / FBC en %s" #, python-format msgid "Slot %s / FBC virtual %s" -msgstr "" +msgstr "Ranura %s / FBC virtual %s" msgid "Slovak" msgstr "eslovaco" @@ -9457,7 +9461,6 @@ msgstr "Sri Lanka" msgid "Standard" msgstr "Estándar" -#, fuzzy msgid "Standard list" msgstr "Lista estándar" @@ -9553,9 +9556,8 @@ msgid "Stepped west" msgstr "Camino hacia el oeste" # -#, fuzzy msgid "Steps" -msgstr "Paso este" +msgstr "Pasos" # msgid "Stop" @@ -9599,9 +9601,8 @@ msgid "Stop entry" msgstr "Detener la entrada" # -#, fuzzy msgid "Stop live TV service" -msgstr "Ir al último servicio" +msgstr "Detener el servicio de TV en vivo" msgid "Stop play TV" msgstr "Deja de jugar TV" @@ -9822,12 +9823,12 @@ msgid "Switch on the display during Suspend Mode" msgstr "Ver la lista de extensiones de pantalla y de interfaz de usuario disponibles" # -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Encienda la pantalla durante la operación." -#, fuzzy msgid "Switch to Android" -msgstr "Cambiar al modo de TV" +msgstr "Cambiar a Android" msgid "Switch to TV mode" msgstr "Cambiar al modo de TV" @@ -10219,7 +10220,7 @@ msgid "This bouquet is protected by a parental control PIN" msgstr "Este ramo está protegido por un PIN de control parental" msgid "This can be useful when using the CI(+) module. After the end of the recording, the service will be automatically stopped." -msgstr "" +msgstr "Esto puede ser útil cuando se utiliza el módulo CI(+). Después del final de la grabación, el servicio se detendrá automáticamente." #, python-format msgid "This field allows you to search an additional symbol rate up to %s." @@ -10241,7 +10242,7 @@ msgid "This is the order in which DiSEqC commands are sent to the aerial system. msgstr "el suyo es el orden en que los comandos DiSEqC se envían al sistema aéreo. La orden debe corresponderse exactamente con el orden en que los dispositivos físicos están dispuestos a lo largo del cable de señal (comenzando desde el extremo del receptor)." msgid "This not valid ONID/TSID" -msgstr "" +msgstr "Esto no es válido ONID / TSID" msgid "This option allows to reduce the block-noise in the picture. Obviously this is at the cost of the picture's sharpness." msgstr "Esta opción te permite reducir el bloqueo de ruido en la imagen. Obviamente, se reduce la nitidez de la imagen." @@ -10321,9 +10322,8 @@ msgstr "Esta opción le permite mostrar enlaces rápidos de menú y / o número msgid "This option allows you to show the full screen path leading to the current screen." msgstr "Esta opción le permite mostrar la ruta de pantalla completa que conduce a la pantalla actual." -#, fuzzy msgid "This option allows you to switch audio to bluetooth speakers." -msgstr "Esta opción le permite configurar el nivel de volumen automático." +msgstr "Esta opción le permite cambiar el audio a los altavoces bluetooth." msgid "This option allows you to view the old and new settings side by side." msgstr "Esta opción te permite ver los ajustes nuevos y antiguos, lado a lado." @@ -10331,9 +10331,8 @@ msgstr "Esta opción te permite ver los ajustes nuevos y antiguos, lado a lado." msgid "This option can be useful for long HDMI cables." msgstr "Esta opción puede ser útil para cables HDMI largos." -#, fuzzy msgid "This option configures the general audio delay for bluetooth speakers." -msgstr "Configure el retardo de audio general de las pistas de sonido Dolby Digital." +msgstr "Esta opción configura el retardo de audio general para altavoces bluetooth." msgid "This option set the level of surpression of mosquito noise (Mosquito Noise is random aliasing as a result of strong compression). Obviously this goes at the cost of picture details." msgstr "Esta opción establece el nivel de supresión del ruido del mosquito (Mosquito Noise es un alias aleatorio como resultado de una fuerte compresión). Obviamente, esto va a costa de los detalles de la imagen." @@ -10453,7 +10452,7 @@ msgid "This test detects your configured LAN adapter." msgstr "Esta prueba detecta su adaptador LAN configurado." msgid "This valid ONID/TSID" -msgstr "" +msgstr "Este ONID/TSID válido" msgid "" "This will (re-)calculate all positions of your rotor and may remove previously memorised positions and fine-tuning!\n" @@ -11131,11 +11130,11 @@ msgstr "Tipo de búsqueda de canales usada" #, python-format msgid "User Band %d" -msgstr "" +msgstr "Banda de usuario %d" #, python-format msgid "User Band %d (%s)" -msgstr "" +msgstr "Banda de usuario %d (%s)" # msgid "User ID" @@ -11194,7 +11193,7 @@ msgid "VU+" msgstr "VU+" msgid "Valid ONID/TSID look at www.lyngsat.com..." -msgstr "" +msgstr "Válido ONID/TSID mira www.lyngsat.com..." msgid "Vanuatu" msgstr "Vanuatu" @@ -11282,9 +11281,9 @@ msgid "View details" msgstr "Ver detalles" # -#, fuzzy, python-format +#, python-format msgid "View list of available %s extensions." -msgstr "Ver lista de extensiones de EPG disponibles." +msgstr "Ver la lista de extensiones %s disponibles." # msgid "View list of available CommonInterface extensions" @@ -11368,7 +11367,7 @@ msgid "Virtual keyboard" msgstr "Teclado virtual" msgid "Visually impaired commentary" -msgstr "" +msgstr "Comentario para personas con discapacidad visual" # msgid "Voltage mode" @@ -11394,9 +11393,8 @@ msgstr "W" msgid "WLAN connection" msgstr "Conexión WLAN" -#, fuzzy msgid "WMA Pro downmix" -msgstr "AAC downmix" +msgstr "Mezcla descendente WMA Pro" # msgid "WSS on 4:3" @@ -11461,7 +11459,7 @@ msgstr "" "Realmente desactivar la detección de conflictos del temporizador?" msgid "Warning: FBC-C V1 tuner should be connected to the first slot to work correctly. Otherwise, only 2 out of 8 demodulators will be available when connected in the second slot. " -msgstr "" +msgstr "Advertencia: el sintonizador FBC-C V1 debe conectarse a la primera ranura para que funcione correctamente. De lo contrario, solo 2 de los 8 demoduladores estarán disponibles cuando se conecten en la segunda ranura." msgid "Warning: no LNB; using factory defaults." msgstr "Advertencia: no hay LNB; Utilizando los valores predeterminados de fábrica." @@ -11704,9 +11702,8 @@ msgstr "Cuando está activado, los subtítulos de teletexto se mostrarán en su msgid "When enabled, the VCR scart option will be shown on the main menu" msgstr "Cuando está activada, la opción de scart del VCR aparecerá en el menú principal" -#, fuzzy msgid "When enabled, the channel selection list will be hidden while listening to a radio channel. When disabled, the option 'Auto play last service in radio mode' is available." -msgstr "Cuando está activada, la lista de selección de canales se oculta mientras escucha un canal de radio" +msgstr "Cuando está activada, la lista de selección de canales se oculta mientras escucha un canal de radio." msgid "When enabled, the infobar will be displayed when a new event starts." msgstr "Cuando se activa, la infobar se mostrará cuando se inicie un nuevo evento." @@ -11735,9 +11732,8 @@ msgstr "Cuando está activado, el receptor seleccionará una pista AC3 (cuando e msgid "When enabled, the receiver will select an AC3+ track (when available)." msgstr "Cuando está activado, el receptor seleccionará una pista AC3 + (cuando esté disponible)." -#, fuzzy msgid "When enabled, then when changing bouquets, set the cursor on the service from the channel history in the channel selection list." -msgstr "Cuando está activado, puede controlar el volumen con los botones de flecha en lugar de obtener la lista de selección de canales" +msgstr "Cuando está activado, puede controlar el volumen con los botones de flecha en lugar de obtener la lista de selección de canales." msgid "When enabled, this setting has more weight than 'Preferred tuner for recordings'." msgstr "Cuando está activado, este ajuste tiene más peso que ‘Sintonizador preferido para grabaciones’." @@ -11998,7 +11994,7 @@ msgstr "No ha seleccionado un canal desde el cual grabar." #, python-format msgid "You have to wait %(min)d minutes, %(sec)d seconds!" -msgstr "" +msgstr "Tienes que esperar %(min)d minutos, %(sec)d segundos!" #, python-format msgid "You must switch to the service %s (%s - '%s')!\n" @@ -12109,9 +12105,8 @@ msgstr "Zambia" msgid "Zap" msgstr "zapear" -#, fuzzy msgid "Zap Up/Down" -msgstr "Zap hacia abajo" +msgstr "Zap arriba/abajo" msgid "Zap back to previously tuned service?" msgstr "¿Volver al último canal sintonizado?" @@ -12161,9 +12156,8 @@ msgstr "Zapped al servicio de temporizador %s!" msgid "Zgemma H.S/H.2S/H.2H/H5/H7(old model)" msgstr "Zgemma H.S/H.2S/H.2H/H5/H7(old model)" -#, fuzzy msgid "Zgemma H9(old model)/I55Plus/H8" -msgstr "Zgemma H9(old model)/i55 Plus" +msgstr "Zgemma H9(antiguo modelo)/i55 Plus" msgid "Zgemma Star S/2S/H1/H2" msgstr "Zgemma Star S/2S/H1/H2" @@ -12209,9 +12203,8 @@ msgstr "activar configuración del adaptador de red" msgid "active" msgstr "Activo" -#, fuzzy msgid "active " -msgstr "Activo" +msgstr "activo" msgid "actual time only" msgstr "solo tiempo real" @@ -12219,9 +12212,8 @@ msgstr "solo tiempo real" msgid "additional cable of rotor" msgstr "cable adicional de rotor" -#, fuzzy msgid "adult movie" -msgstr "Película para adultos / drama" +msgstr "película para adultos " # msgid "advanced" @@ -12354,9 +12346,8 @@ msgstr "Centrado, envuelto" msgid "chapters" msgstr "capítulos" -#, fuzzy msgid "childrens's youth program (general)" -msgstr "Programa para niños / jóvenes (general)" +msgstr "programa para niños / jóvenes (general)" # msgid "circular left" @@ -12384,14 +12375,13 @@ msgid "controlled by HDMI" msgstr "controlado por HDMI" msgid "convert to AC3" -msgstr "" +msgstr "convertir a AC3" msgid "convert to DTS" -msgstr "" +msgstr "convertir a DTS" -#, fuzzy msgid "convert to multi-channel PCM" -msgstr "PCM multicanal" +msgstr "convertir a PCM multicanal" msgid "cooking" msgstr "cocina" @@ -12456,9 +12446,8 @@ msgstr "este" msgid "economics/social advisory" msgstr "Economía / asesoramiento social" -#, fuzzy msgid "educational/science/factual topics (general)" -msgstr "Educación / ciencia / temas fácticos (general)" +msgstr "educación / ciencia / temas fácticos (general)" msgid "embedded" msgstr "incrustado" @@ -12533,10 +12522,6 @@ msgstr "Película experimental / video" msgid "extra wide" msgstr "extra ancho" -#, fuzzy -msgid "extrawide" -msgstr "extra ancho" - msgid "failed" msgstr "fallido" @@ -12560,9 +12545,8 @@ msgstr "Cine / cine" msgid "fine arts" msgstr "Bellas Artes" -#, fuzzy msgid "fitness and health" -msgstr "Fitness y salud" +msgstr "fitness y salud" # msgid "flat alphabetic" @@ -12680,9 +12664,8 @@ msgid "jump to chapter by number" msgstr "Ump al capítulo por número" # -#, fuzzy msgid "kB" -msgstr "B" +msgstr "kB" msgid "languages" msgstr "idiomas" @@ -12730,9 +12713,8 @@ msgstr "escucha eventos hotplug" msgid "literature" msgstr "literatura" -#, fuzzy msgid "local sports" -msgstr "Deportes de equipo" +msgstr "deportes de equipo" # msgid "locked" @@ -12762,6 +12744,10 @@ msgstr "menú" msgid "mins" msgstr "mins" +# +msgid "module disabled" +msgstr "módulo desactivado" + # msgid "month" msgstr "mes" @@ -12788,9 +12774,8 @@ msgstr "mover arriba la primera entrada" msgid "move up to previous entry" msgstr "mover arriba la entrada anterior" -#, fuzzy msgid "movie (general)" -msgstr "Película / drama (general)" +msgstr "película / drama (general)" msgid "multi" msgstr "multi" @@ -12809,9 +12794,8 @@ msgid "never" msgstr "nunca" # -#, fuzzy msgid "new line" -msgstr "Dos lineas" +msgstr "nueva linea" msgid "new media" msgstr "nuevos medios de comunicacion" @@ -12867,9 +12851,8 @@ msgstr "no bloqueado" msgid "not running" msgstr "no corras" -#, fuzzy msgid "not set" -msgstr "no probado" +msgstr "no establecido" msgid "not supported" msgstr "no soportado" @@ -12884,9 +12867,8 @@ msgid "not_tested" msgstr "no probado" # -#, fuzzy msgid "nothing" -msgstr "no hacer nada" +msgstr " nada" # msgid "nothing connected" @@ -12911,7 +12893,7 @@ msgid "offset is" msgstr "El desplazamiento es" msgid "omit" -msgstr "" +msgstr "omitir" # msgid "on" @@ -12963,12 +12945,11 @@ msgid "pre-school children's program" msgstr "Programa infantil de preescolar" msgid "preserve bookmarks in cuts" -msgstr "" +msgstr "conservar marcadores en cortes" # -#, fuzzy msgid "priority" -msgstr "Prioridad" +msgstr "prioridad" msgid "receiver software because updates are available." msgstr "Receptor porque las actualizaciones están disponibles." @@ -13000,9 +12981,8 @@ msgid "remove before this position" msgstr "borrar antes de esta posición" # -#, fuzzy msgid "remove bookmarks in cuts" -msgstr "Eliminar marcador" +msgstr "eliminar marcador" # msgid "remove this mark" @@ -13062,9 +13042,8 @@ msgstr "seleccionar la entrada de menú" msgid "serious music/classic music" msgstr "Música seria / música clásica" -#, fuzzy msgid "serious/classical/religious/historical drama" -msgstr "Seria / clásica / religiosa / película histórica / drama" +msgstr "seria / clásica / religiosa / película histórica / drama" msgid "service off-air" msgstr "servicio fuera del aire" @@ -13148,19 +13127,17 @@ msgstr "ranura%s - %s, con copia de seguridad" msgid "slot%s - %s, without backup" msgstr "ranura%s - %s, sin copia de seguridad" -#, fuzzy msgid "soap/melodrama/folkloric" -msgstr "Jabón / melodram / folclórico" +msgstr "jabón / melodram / folclórico" msgid "social/political issues/economics (general)" msgstr "Cuestiones sociales / políticas / economía (general)" -#, fuzzy msgid "social/spiritual sciences" -msgstr "Ciencia social / espiritual" +msgstr "ciencia social / espiritual" msgid "space" -msgstr "" +msgstr "espacio" msgid "special events" msgstr "especial eventos" @@ -13179,9 +13156,8 @@ msgid "standard" msgstr "estándar" # -#, fuzzy msgid "standby " -msgstr "Reposo" +msgstr "reposo" # msgid "start cut here" @@ -13216,11 +13192,10 @@ msgid "talk show" msgstr "programa de entrevistas" msgid "team sports/excluding football" -msgstr "" +msgstr "deportes de equipo/excepto fútbol" -#, fuzzy msgid "technology/natural sciences" -msgstr "Tecnología / ciencia natural" +msgstr "tecnología / ciencia natural" # msgid "template file" @@ -13280,12 +13255,11 @@ msgstr "Intachable" msgid "until standby/restart" msgstr "hasta reposo/reinicio" -#, fuzzy -msgid "use best / controlled by HDMI" -msgstr "controlado por HDMI" +msgid "use HDMI cacenter" +msgstr "usar cacenter HDMI" -msgid "use_hdmi_cacenter" -msgstr "" +msgid "use best / controlled by HDMI" +msgstr "Usar mejor / controlado por HDMI" # msgid "user defined" @@ -13298,6 +13272,9 @@ msgstr "Definido por el usuario oculto" msgid "variety show" msgstr "Espectáculo de variedades" +msgid "version" +msgstr "versión" + # msgid "vertical" msgstr "vertical" diff --git a/po/et.po b/po/et.po index 058f01c3eb3..3da781febbd 100644 --- a/po/et.po +++ b/po/et.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Openpli\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2019-04-03 06:49+0300\n" "Last-Translator: \n" "Language-Team: Raivo, Henkka, eesatfan, rimas, zeros\\n faas, sateks, valgekotkas, tigekala, rootsikunn\\n kain, i70, mustkass, pelmeen, Scott\\n \n" @@ -1192,6 +1192,9 @@ msgstr "Automaatne järjehoidjad" msgid "Automatic scan" msgstr "Automaatotsing" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1456,6 +1459,10 @@ msgstr "CI (Common Interface) määrangud" msgid "CI assignment" msgstr "CI määrangud" +#, fuzzy +msgid "CI enabled" +msgstr "lubatud" + msgid "CI slot: " msgstr "CI pesa: " @@ -1728,6 +1735,10 @@ msgstr "Määra, kas mitmekanaline heli tuleks taandada stereoks." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Määra, kas mitmekanaline heli tuleks taandada stereoks." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Määra, kas mitmekanaline heli tuleks taandada stereoks." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Määra, kas mitmekanaline heli tuleks taandada stereoks." @@ -2448,8 +2459,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS > stereo" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS > stereo" msgid "DUAL LAYER DVD" msgstr "Kahekihiline DVD" @@ -3230,6 +3242,10 @@ msgstr "Luba HDMI-CEC" msgid "Enable parental protection" msgstr "Luba vanemate poolne kontroll" +#, fuzzy +msgid "Enable power off timer" +msgstr "Luba äratustaimer" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Luba E2 kaugvastuvõtjal proovida häälestuda teenustele, mida ei saa kohapeal kasutada (näiteks kohaliku vastuvõtja tuuner on hõivatud või teenuse tüüp on kohalikule tuunerile sobimatu. Määra terviklik URL mis sisaldab http:// ja pordi numbrit (tavaliselt ...:8001), näiteks http://second_box:8001" @@ -3831,9 +3847,15 @@ msgstr "Järgmised toimingud tehakse pärast OK vajutamist!" msgid "Force legacy signal stats" msgstr "Kasuta aegunud signaalistatistikat" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Vorming" @@ -4185,6 +4207,10 @@ msgstr "Kõvaketas" msgid "Harddisk Setup" msgstr "Kõvaketta seadistamine" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Riistvara: " + msgid "Hardware: " msgstr "Riistvara: " @@ -4363,6 +4389,9 @@ msgstr "Määrates 'jah', arvutatakse signaali väärused (SNR, jms.) API V3 põ msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5081,13 +5110,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Meediamängija" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "GStreameri versioon: " - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "Meediaotsija" @@ -5476,6 +5498,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Järgmine" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nicaragua" @@ -5792,6 +5817,10 @@ msgstr "Liiguta antenni kiiresti ainult enne seda kellaaega." msgid "Only on startup" msgstr "Ainult alustamisel" +#, fuzzy +msgid "Only power off" +msgstr "Luba äratustaimer" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Vali 'jah' ainult juhul, kui kasutatav multiswich lüliti nõuab DiSEqC Port-A käsu signaali. Kõigil teistel juhtudel vali 'ei'." @@ -5816,7 +5845,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6361,6 +6390,13 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "Toitehaldus. Uuri lähemalt vastuvõtja käsiraamatust." +#, fuzzy +msgid "Power off time" +msgstr "Aja järgi" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Sisselülitus näidikul" @@ -7820,6 +7856,9 @@ msgstr "Kanaliotsing" msgid "Service title mode" msgstr "Kanalinime kuju" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8883,7 +8922,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "Vaata saadaolevate kasutajaliidese laienduste nimekirja." #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Vaata saadaolevate kasutajaliidese laienduste nimekirja." #, fuzzy @@ -11413,10 +11452,6 @@ msgstr "eksperimentaalne film/video" msgid "extra wide" msgstr "eriti lai" -#, fuzzy -msgid "extrawide" -msgstr "eriti lai" - msgid "failed" msgstr "nurjus" @@ -11613,6 +11648,10 @@ msgstr "menüü" msgid "mins" msgstr "min" +#, fuzzy +msgid "module disabled" +msgstr "jõuga keelatud" + msgid "month" msgstr "kuu" @@ -12075,10 +12114,10 @@ msgstr "ebastabiilne" msgid "until standby/restart" msgstr "kuni ooterežiimini/taaskäivitamiseni" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -12091,6 +12130,9 @@ msgstr "kasutaja määratud" msgid "variety show" msgstr "mitmekesine show" +msgid "version" +msgstr "versioon" + msgid "vertical" msgstr "vertikaal" diff --git a/po/fa.po b/po/fa.po index 81d60a7cf31..77d25b100b8 100644 --- a/po/fa.po +++ b/po/fa.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2018-02-14 16:51+0330\n" "Last-Translator: Persian Prince \n" "Language-Team: Persian Professionals \n" @@ -1202,6 +1202,9 @@ msgstr "اسکن خودکار" msgid "Automatic scan" msgstr "اسکن خودکار" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1476,6 +1479,10 @@ msgstr "" msgid "CI assignment" msgstr "CI وظیفه" +#, fuzzy +msgid "CI enabled" +msgstr "فعال شد" + msgid "CI slot: " msgstr "" @@ -1752,6 +1759,9 @@ msgstr "" msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "" +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "" + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "" @@ -2493,7 +2503,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" # @@ -3290,6 +3300,9 @@ msgstr "فعال کردن EIT EPG" msgid "Enable parental protection" msgstr "" +msgid "Enable power off timer" +msgstr "" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -3887,9 +3900,15 @@ msgstr "وظایف زیر بعد از فشار دادن دکمه OK انجام msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "فرمت" @@ -4255,6 +4274,10 @@ msgstr "هارد" msgid "Harddisk Setup" msgstr "" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "سخت افزار: " + msgid "Hardware: " msgstr "سخت افزار: " @@ -4441,6 +4464,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5186,13 +5212,6 @@ msgstr "" msgid "Media player" msgstr "پخش کننده صوتی و تصویری" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "نسخه GStreamer: " - -msgid "Media player: ffmpeg, version " -msgstr "" - #, fuzzy msgid "Media scanner" msgstr "پخش کننده صوتی و تصویری" @@ -5590,6 +5609,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -5915,6 +5937,9 @@ msgstr "" msgid "Only on startup" msgstr "" +msgid "Only power off" +msgstr "" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -5941,7 +5966,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6499,6 +6524,13 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +#, fuzzy +msgid "Power off time" +msgstr "چیدمان بر اساس زمان" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -8005,6 +8037,9 @@ msgstr "جستجوی کانال" msgid "Service title mode" msgstr "انتخاب حالت تصویر" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -9115,7 +9150,7 @@ msgstr "" msgid "Switch on the display during Suspend Mode" msgstr "" -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "" #, fuzzy @@ -11500,10 +11535,6 @@ msgstr "" msgid "extra wide" msgstr "" -#, fuzzy -msgid "extrawide" -msgstr "عریض" - msgid "failed" msgstr "" @@ -11698,6 +11729,10 @@ msgstr "" msgid "mins" msgstr "دقیقه" +#, fuzzy +msgid "module disabled" +msgstr "غیر فعال شد" + msgid "month" msgstr "ماه" @@ -12153,10 +12188,10 @@ msgstr "" msgid "until standby/restart" msgstr "" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -12168,6 +12203,9 @@ msgstr "" msgid "variety show" msgstr "" +msgid "version" +msgstr "نسخه" + msgid "vertical" msgstr "عمودی" diff --git a/po/fi.po b/po/fi.po index d3c9fe2a5ea..6faeb7fe236 100644 --- a/po/fi.po +++ b/po/fi.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2020-05-16 18:41+0200\n" "Last-Translator: jamu\n" "Language-Team: BoxFreak/jamu\n" @@ -1314,6 +1314,9 @@ msgstr "Automaattiset kirjanmerkit" msgid "Automatic scan" msgstr "Automaattihaku" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1607,6 +1610,11 @@ msgstr "CI-liitäntä/CAM" msgid "CI assignment" msgstr "CI-määritys" +# +#, fuzzy +msgid "CI enabled" +msgstr "Päällä" + msgid "CI slot: " msgstr "" @@ -1905,6 +1913,10 @@ msgstr "Määritä haluatko että monikanavaääni miksataan stereoääneksi." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Määritä haluatko että monikanavaääni miksataan stereoääneksi." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Määritä haluatko että monikanavaääni miksataan stereoääneksi." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Määritä haluatko että monikanavaääni miksataan stereoääneksi." @@ -2683,8 +2695,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS muunnos stereoksi" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS muunnos stereoksi" msgid "DUAL LAYER DVD" msgstr "DUAL LAYER DVD" @@ -3573,6 +3586,10 @@ msgstr "Ota käyttöön HDMI-CEC" msgid "Enable parental protection" msgstr "Ota käyttöön lapsilukko" +#, fuzzy +msgid "Enable power off timer" +msgstr "Herätysajastin" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Ota käyttöön etävastaanotin. Etävastaanotinta kokeillaan kun paikallisia virittimiä ei voida käyttään - esimerkiksi kun virittimet ovat varattu, tai soveltuvia virittimiä ei ole. Määrittele koko URL mukaanlukien http:// ja portti (yleensä :8001), esimerkiksi http://toinen_laite:8001." @@ -4214,9 +4231,15 @@ msgstr "Seuraavat tehtävät suoritetaan kun painat OK!" msgid "Force legacy signal stats" msgstr "Pakota vanhat signaalitiedot" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Alusta" @@ -4603,6 +4626,10 @@ msgstr "Kiintolevy" msgid "Harddisk Setup" msgstr "" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Järjestelmä: " + msgid "Hardware: " msgstr "Järjestelmä: " @@ -4795,6 +4822,9 @@ msgstr "Jos päällä, signaalitiedot (SNR, jne) lasketaan API V3:lla. Tämä on msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5621,13 +5651,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Mediasoitin" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "GStreamer versio:" - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "Mediaskanneri" @@ -6076,6 +6099,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Seuraava" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nicaragua" @@ -6440,6 +6466,10 @@ msgstr "" msgid "Only on startup" msgstr "Vain käynnistyksessä" +#, fuzzy +msgid "Only power off" +msgstr "Herätysajastin" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -6464,7 +6494,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -7093,6 +7123,14 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +# +#, fuzzy +msgid "Power off time" +msgstr "Aikajärj." + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -8742,6 +8780,9 @@ msgstr "Kanavahaku" msgid "Service title mode" msgstr "Kanavan otsikko" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + # msgid "" "Service unavailable!\n" @@ -9933,7 +9974,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "Näytä saatavilla olevat näyttö- ja käyttöliittymälaajennukset." #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Näytä saatavilla olevat näyttö- ja käyttöliittymälaajennukset." # @@ -12650,10 +12691,6 @@ msgstr "kokeellinen elokuva/video" msgid "extra wide" msgstr "Erikoisleveä" -#, fuzzy -msgid "extrawide" -msgstr "Erikoisleveä" - msgid "failed" msgstr "epäonnistui" @@ -12874,6 +12911,10 @@ msgstr "Valikko" msgid "mins" msgstr "minuuttia" +#, fuzzy +msgid "module disabled" +msgstr "Pois päältä" + # msgid "month" msgstr "kuukausi" @@ -13404,13 +13445,13 @@ msgstr "" msgid "until standby/restart" msgstr "valmiustilaan/uudelleenkäynnistykseen asti" +msgid "use HDMI cacenter" +msgstr "" + #, fuzzy msgid "use best / controlled by HDMI" msgstr "HDMI:n määrittelemä" -msgid "use_hdmi_cacenter" -msgstr "" - # msgid "user defined" msgstr "Käyttäjän määrittelemä" @@ -13423,6 +13464,9 @@ msgstr "Käyttäjän määrittelemä" msgid "variety show" msgstr "varietee" +msgid "version" +msgstr "versio" + # msgid "vertical" msgstr "Vertikaali" diff --git a/po/fr.po b/po/fr.po index b6a79dc8e4a..aedbeffda0f 100644 --- a/po/fr.po +++ b/po/fr.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" -"PO-Revision-Date: 2022-05-08 10:55+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" +"PO-Revision-Date: 2022-07-30 14:56+0200\n" "Last-Translator: Pr2\n" "Language-Team: french\n" "Language: fr\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.1.1\n" msgid "" "\n" @@ -1177,6 +1177,9 @@ msgstr "Signets automatiques" msgid "Automatic scan" msgstr "Recherche automatique" +msgid "Automatically power off box to deep standby mode." +msgstr "Éteindre automatiquement le récepteur en mode veille profonde." + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Mettre automatiquement le téléviseur en veille chaque fois que le récepteur est en veille ou en veille profonde." @@ -1439,6 +1442,9 @@ msgstr "Configuration CI (Interface Commune)" msgid "CI assignment" msgstr "Assignation CI" +msgid "CI enabled" +msgstr "CI activé" + msgid "CI slot: " msgstr "Slot CI: " @@ -1718,6 +1724,9 @@ msgstr "Défini si la piste son AC3 doit être transcodée." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Défini si la piste audio WMA Pro doit être remixées en stéréo." +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Choisissez si les pistes sonores multicanaux DTS-HD(HR/MA) doivent être downmixées ou transcodées." + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Défini si la piste audio multi canaux AAC+ doit être remixées en stéréo." @@ -2429,8 +2438,8 @@ msgstr "DTS" msgid "DTS downmix" msgstr "Downmix DTS" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" +msgstr "Downmix DTS-HD(HR/MA)" msgid "DUAL LAYER DVD" msgstr "DVD DOUBLE COUCHE" @@ -3186,6 +3195,9 @@ msgstr "Activer ou désactiver à l’aide de HDMI-CEC." msgid "Enable parental protection" msgstr "Activer la protection parentale" +msgid "Enable power off timer" +msgstr "Activation de la minuterie de mise hors tension" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Activer un récepteur enigma2 distant pour essayer de syntoniser les services qui ne peuvent pas l'être localement (p.e. tuners occupés ou le type de service n'est pas disponible sur les tuners locaux. Spécifier l'URL complète http:// et le numéro de port (normalement ...: 8001), p.e. http://second_demo:8001." @@ -3781,9 +3793,15 @@ msgstr "Les tâches suivantes seront réalisées après avoir appuyé sur OK!" msgid "Force legacy signal stats" msgstr "Forcer les statistiques de signal hérité" +msgid "Force power off (even when not in standby)" +msgstr "Forcer la mise hors tension (même si il n'est pas en veille)" + msgid "Force zap to recording service in standby" msgstr "Forcer le zap vers le service à enregistrer en veille" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "Forcer la veille profonde, même lorsqu'il n'est pas en veille. Les enregistrements programmés ne sont pas impactés." + msgid "Format" msgstr "Format" @@ -4126,6 +4144,9 @@ msgstr "Disque dur" msgid "Harddisk Setup" msgstr "Paramètres du disque dur" +msgid "Hardware Accelerated" +msgstr "Accélération matérielle" + msgid "Hardware: " msgstr "Matériel: " @@ -4303,6 +4324,9 @@ msgstr "Si défini à ‘oui’ les valeurs du signal (SNR,etc) seront calculés msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Si elles sont définies comme « oui », les mêmes commandes seront envoyées à la télévision pour des événements de veille profonde, comme cela est envoyé lors d’événements de veille réguliers." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "Si le récepteur est censé entrer en veille profonde, par exemple le lundi soir à 1 heure du matin, il est en fait déjà mardi. Pour l'activer de toute façon, il est possible de spécifier ici une heure de démarrage différente du jour suivant." + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Si vous utilisez plusieurs commutateurs DiSEqC non-commité les commandes doivent être envoyées plusieurs fois. Définir le nombre de commutateur non commité dans la chaîne moins un." @@ -5017,12 +5041,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Lecteur multimédia" -msgid "Media player: GStreamer, version " -msgstr "Lecteur multimédia: GStreamer, version " - -msgid "Media player: ffmpeg, version " -msgstr "Lecteur multimédia: ffmpeg, version " - msgid "Media scanner" msgstr "Media scanner" @@ -5400,6 +5418,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Suivant" +msgid "Next day starts at" +msgstr "Le jour suivant commence à" + msgid "Nicaragua" msgstr "Nicaragua" @@ -5712,6 +5733,9 @@ msgstr "Déplacer uniquement l’antenne rapidement avant cette heure." msgid "Only on startup" msgstr "Seulement au démarrage" +msgid "Only power off" +msgstr "Mise hors tension uniquement" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Choisir ‘oui’ uniquement si vous utilisez un multiswitch qui requière un signal de commande DiSEqC Port-A. Pour toutes les autres configuration choisir ‘non’." @@ -5736,8 +5760,8 @@ msgstr "État de la LED de fonctionnement en veille profonde" msgid "Operating LED status in standby mode" msgstr "État de la LED de fonctionnement en veille" -msgid "Operating LED status while running." -msgstr "État de la LED de fonctionnement en activité" +msgid "Operating LED status while running" +msgstr "État des LED de fonctionnement en cours d'exécution" msgid "Opkg" msgstr "Opkg" @@ -6274,6 +6298,12 @@ msgstr "LED d'alimentation" msgid "Power management. Consult your receiver's manual for more information." msgstr "Gestion de l’alimentation. Consultez le manuel de votre récepteur pour plus d’information." +msgid "Power off time" +msgstr "Heure de mise hors tension" + +msgid "Power off timer" +msgstr "Minuterie de mise hors tension" + msgid "Power on display" msgstr "Allumage de l’affichage" @@ -7704,6 +7734,9 @@ msgstr "Recherche des services" msgid "Service title mode" msgstr "Picon et/ou nom du service" +msgid "Service type 4097 incorrect for PiP!" +msgstr "Type de service 4097 incorrect pour PiP !" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8748,8 +8781,8 @@ msgstr "Activer l’écran en mode veille" msgid "Switch on the display during Suspend Mode" msgstr "Activer l’affichage pendant la veille profonde" -msgid "Switch on the display during operation." -msgstr "Activer l’affichage en fonctionnement." +msgid "Switch on the display during operation" +msgstr "Allumer l'écran pendant le fonctionnement" msgid "Switch to Android" msgstr "Basculer vers Android" @@ -8839,7 +8872,7 @@ msgstr "" "\n" "Support: https://www.openpli.org/\n" "Traducteur: Pr2\n" -"Dernière MÀJ: 08-05-2022" +"Dernière MÀJ: 06-07-2022" msgid "TS file is too large for ISO9660 level 1!" msgstr "Fichier TS trop grand pour le niveau 1 ISO9660!" @@ -11213,9 +11246,6 @@ msgstr "Film expérimental/Vidéo" msgid "extra wide" msgstr "extra large" -msgid "extrawide" -msgstr "extra large" - msgid "failed" msgstr "échoué" @@ -11405,6 +11435,9 @@ msgstr "Menu" msgid "mins" msgstr "Mins" +msgid "module disabled" +msgstr "module désactivé" + msgid "month" msgstr "Mois" @@ -11853,12 +11886,12 @@ msgstr "non testable" msgid "until standby/restart" msgstr "Jusqu'à veille/redémarrage" +msgid "use HDMI cacenter" +msgstr "utiliser HDMI cacenter" + msgid "use best / controlled by HDMI" msgstr "utilise le meilleur / contrôlé par HDMI" -msgid "use_hdmi_cacenter" -msgstr "utiliser_hdmi_cacenter" - msgid "user defined" msgstr "Défini par l'utilisateur" @@ -11868,6 +11901,9 @@ msgstr "utilisateur défini caché" msgid "variety show" msgstr "Spectacle de variété" +msgid "version" +msgstr "version" + msgid "vertical" msgstr "Verticale" diff --git a/po/fy.po b/po/fy.po index 263ff38ed8e..e2e31fa201c 100644 --- a/po/fy.po +++ b/po/fy.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2008-12-29 16:22+0100\n" "Last-Translator: gerrit \n" "Language-Team: gerrit \n" @@ -1338,6 +1338,9 @@ msgstr "Automatysk sykjen" msgid "Automatic scan" msgstr "Automatysk sykjen" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1645,6 +1648,11 @@ msgstr "" msgid "CI assignment" msgstr "" +# +#, fuzzy +msgid "CI enabled" +msgstr "ynskeakele" + msgid "CI slot: " msgstr "" @@ -1947,6 +1955,9 @@ msgstr "" msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "" +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "" + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "" @@ -2767,7 +2778,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" # @@ -3677,6 +3688,11 @@ msgstr "" msgid "Enable parental protection" msgstr "" +# +#, fuzzy +msgid "Enable power off timer" +msgstr "Ferpleatsen mode oan" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -4341,9 +4357,15 @@ msgstr "" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Formaat" @@ -4746,6 +4768,9 @@ msgstr "Hurde skiif" msgid "Harddisk Setup" msgstr "" +msgid "Hardware Accelerated" +msgstr "" + msgid "Hardware: " msgstr "" @@ -4942,6 +4967,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5794,14 +5822,6 @@ msgstr "" msgid "Media player" msgstr "Media Spieler" -# -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Nije ferzje:" - -msgid "Media player: ffmpeg, version " -msgstr "" - # #, fuzzy msgid "Media scanner" @@ -6264,6 +6284,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -6633,6 +6656,11 @@ msgstr "" msgid "Only on startup" msgstr "" +# +#, fuzzy +msgid "Only power off" +msgstr "Ferpleatsen mode oan" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -6661,7 +6689,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -7314,6 +7342,14 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +# +#, fuzzy +msgid "Power off time" +msgstr "Sorteer op Tiid" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -9011,6 +9047,9 @@ msgstr "Kanaal sykje" msgid "Service title mode" msgstr "Kies fideo moadus" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + # msgid "" "Service unavailable!\n" @@ -10234,7 +10273,7 @@ msgstr "" msgid "Switch on the display during Suspend Mode" msgstr "" -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "" # @@ -12953,9 +12992,6 @@ msgstr "" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -13185,6 +13221,11 @@ msgstr "menu" msgid "mins" msgstr "min" +# +#, fuzzy +msgid "module disabled" +msgstr "útskeakele" + # msgid "month" msgstr "maand" @@ -13705,10 +13746,10 @@ msgstr "" msgid "until standby/restart" msgstr "" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" # @@ -13723,6 +13764,9 @@ msgstr "brûkers ynstelling" msgid "variety show" msgstr "" +msgid "version" +msgstr "ferzje" + # msgid "vertical" msgstr "ferticaal" diff --git a/po/gl.po b/po/gl.po index ab99936b88e..3389731fd62 100644 --- a/po/gl.po +++ b/po/gl.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2021-10-16 21:21+0200\n" "Last-Translator: Luis A. Martínez \n" "Language-Team: LAMS\n" @@ -1322,6 +1322,9 @@ msgstr "Marcadores automáticos" msgid "Automatic scan" msgstr "Escaneo automático" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Pór a TV automaticamente en repouso cando o receptor pasa a repouso ou repouso profundo." @@ -1616,6 +1619,11 @@ msgstr "Axustes da CI (Interface Común)" msgid "CI assignment" msgstr "Asignación de CI" +# +#, fuzzy +msgid "CI enabled" +msgstr "activado" + msgid "CI slot: " msgstr "Rañura CI: " @@ -1924,6 +1932,10 @@ msgstr "Configurar se as pistas de son multicanle deben mesturarse a estéreo." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Configurar se as pistas de son multicanle deben mesturarse a estéreo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Configurar se as pistas de son multicanle deben mesturarse a estéreo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Configurar se as pistas de son multicanle deben mesturarse a estéreo." @@ -2715,8 +2727,9 @@ msgstr "" msgid "DTS downmix" msgstr "Mestura AAC" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "Mestura AAC" msgid "DUAL LAYER DVD" msgstr "DVD DOBLE CAPA" @@ -3577,6 +3590,10 @@ msgstr "Activar ou desactivar usando HDMI-CEC." msgid "Enable parental protection" msgstr "Activar a protección paterna" +#, fuzzy +msgid "Enable power off timer" +msgstr "Activar o temporizador de activación" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Activar o receptor enigma2 remoto para que intente sintonizar os servizos que non se poden sintonizar localmente (por exemplo, o sintonizador está ocupado ou o tipo de servizo no está dispoñible no sintonizador local) Especifica o URL completo incluíndo http:// e o porto (normalmente 8001 ), Por exemplo, http://outro_receptor.com:8001." @@ -4230,9 +4247,16 @@ msgstr "Ao pulsar OK faranse as seguintes tarefas!" msgid "Force legacy signal stats" msgstr "Forzar estatísticas de sinais heredados" +#, fuzzy +msgid "Force power off (even when not in standby)" +msgstr "Forzar o cambio á canle para grabar durante repouso" + msgid "Force zap to recording service in standby" msgstr "Forzar o cambio á canle para grabar durante repouso" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Formato" @@ -4616,6 +4640,10 @@ msgstr "Disco duro" msgid "Harddisk Setup" msgstr "Configuración do disco duro" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardware: " + msgid "Hardware: " msgstr "Hardware: " @@ -4803,6 +4831,9 @@ msgstr "Se o estableces a ‘si’, os valores de sinal (SNR, etc.) calcularanse msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Se o estableces a ‘si’, envíanse ao TV os mesmos comandos dos eventos de repouso profundo, ao igual que se fai cos eventos de repouso normal." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Se utilizas múltiples conmutadores non comprometidos hai que enviar os comandos DiSEqC varias veces. Axústao á cantidade de conmutadores na cadea menos un." @@ -5615,12 +5646,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Reprodutor multimedia" -msgid "Media player: GStreamer, version " -msgstr "Reprodutor multimedia: GStreamer, versión " - -msgid "Media player: ffmpeg, version " -msgstr "Reprodutor multimedia: ffmpeg, versión " - # msgid "Media scanner" msgstr "Escáner de medios" @@ -6055,6 +6080,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Seguinte" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nicaragua" @@ -6408,6 +6436,10 @@ msgstr "Mover o prato rápidamente só antes desta hora." msgid "Only on startup" msgstr "Só ao inicio" +#, fuzzy +msgid "Only power off" +msgstr "Activar o temporizador de activación" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Selecciona ‘si’ só se estás a usar un multiswich que require un sinal DiSEqC de comando Port-A. Para todas as demás configuracións, selecciona ‘non’." @@ -6434,7 +6466,8 @@ msgstr "Estado do LED en modo de repouso profundo" msgid "Operating LED status in standby mode" msgstr "Estado do LED en modo de repouso" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "Estado do LED en modo acendido." msgid "Opkg" @@ -7056,6 +7089,14 @@ msgstr "LED de alimentación" msgid "Power management. Consult your receiver's manual for more information." msgstr "Administración de enerxía. Consulta o manual do teu receptor para máis información." +# +#, fuzzy +msgid "Power off time" +msgstr "Ordenar por data" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Pantalla de acendido" @@ -8664,6 +8705,9 @@ msgstr "Escaneo de servizos" msgid "Service title mode" msgstr "Modo de título do servizo" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + # msgid "" "Service unavailable!\n" @@ -9824,7 +9868,8 @@ msgid "Switch on the display during Suspend Mode" msgstr "Acender a pantalla duranto o modo de suspensión" # -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Acender a pantalla durante a operación." #, fuzzy @@ -12536,10 +12581,6 @@ msgstr "película/vídeo experimental" msgid "extra wide" msgstr "extra ancho" -#, fuzzy -msgid "extrawide" -msgstr "extra ancho" - msgid "failed" msgstr "fallou" @@ -12764,6 +12805,11 @@ msgstr "menú" msgid "mins" msgstr "mins" +# +#, fuzzy +msgid "module disabled" +msgstr "forzar desactivación" + # msgid "month" msgstr "mes" @@ -13280,13 +13326,13 @@ msgstr "non probable" msgid "until standby/restart" msgstr "ata reposo/reinicio" +msgid "use HDMI cacenter" +msgstr "" + #, fuzzy msgid "use best / controlled by HDMI" msgstr "controlado por HDMI" -msgid "use_hdmi_cacenter" -msgstr "" - # msgid "user defined" msgstr "definido polo usuario" @@ -13298,6 +13344,9 @@ msgstr "definido polo usuario oculto" msgid "variety show" msgstr "espectáculo de variedades" +msgid "version" +msgstr "versión" + # msgid "vertical" msgstr "vertical" diff --git a/po/he.po b/po/he.po index 8541d4a7943..b3b114b3f24 100644 --- a/po/he.po +++ b/po/he.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tuxbox-enigma 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2012-03-08 10:40+0330\n" "Last-Translator: \n" "Language-Team: Arabic \n" @@ -1283,6 +1283,9 @@ msgstr "סריקה אוטומטית" msgid "Automatic scan" msgstr "סריקה אוטומטית" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1571,6 +1574,10 @@ msgstr "" msgid "CI assignment" msgstr "" +#, fuzzy +msgid "CI enabled" +msgstr "אופשר" + msgid "CI slot: " msgstr "" @@ -1857,6 +1864,9 @@ msgstr "" msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "" +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "" + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "" @@ -2615,7 +2625,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" msgid "DUAL LAYER DVD" @@ -3454,6 +3464,11 @@ msgstr "" msgid "Enable parental protection" msgstr "" +# +#, fuzzy +msgid "Enable power off timer" +msgstr "Enable move mode" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -4075,9 +4090,15 @@ msgstr "OK הפעולה הבאה תתבצע לאחר לחיצה על" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "פורמט" @@ -4462,6 +4483,9 @@ msgstr "כונן קשיח" msgid "Harddisk Setup" msgstr "" +msgid "Hardware Accelerated" +msgstr "" + msgid "Hardware: " msgstr "" @@ -4649,6 +4673,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5463,14 +5490,6 @@ msgstr "" msgid "Media player" msgstr "נגן המוזיקה" -# -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr ":גרסה חדשה" - -msgid "Media player: ffmpeg, version " -msgstr "" - # #, fuzzy msgid "Media scanner" @@ -5900,6 +5919,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -6254,6 +6276,11 @@ msgstr "" msgid "Only on startup" msgstr "" +# +#, fuzzy +msgid "Only power off" +msgstr "Enable move mode" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -6280,7 +6307,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6881,6 +6908,14 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +# +#, fuzzy +msgid "Power off time" +msgstr "Sort Time" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -8448,6 +8483,9 @@ msgstr "סריקת שירותים" msgid "Service title mode" msgstr "Select video mode" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -9640,7 +9678,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "View list of available Display and Userinterface extensions." #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "View list of available Display and Userinterface extensions." #, fuzzy @@ -12224,9 +12262,6 @@ msgstr "" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -12438,6 +12473,10 @@ msgstr "תפריט" msgid "mins" msgstr "דקות" +#, fuzzy +msgid "module disabled" +msgstr "disabled" + msgid "month" msgstr "חודש" @@ -12919,10 +12958,10 @@ msgstr "" msgid "until standby/restart" msgstr "until standby/restart" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" # @@ -12937,6 +12976,10 @@ msgstr "user defined" msgid "variety show" msgstr "" +# +msgid "version" +msgstr "גִרְסָה" + # msgid "vertical" msgstr "vertical" diff --git a/po/hr.po b/po/hr.po index e8d4b74da00..604fb134fee 100644 --- a/po/hr.po +++ b/po/hr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2022-03-28 16:33+0200\n" "Last-Translator: Željko \n" "Language-Team: Željko\n" @@ -1195,6 +1195,9 @@ msgstr "Automatsko stvaranje oznaka" msgid "Automatic scan" msgstr "Automatska pretraga" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Automatski stavite TV u stanje čekanja kada resiver pređe u stanje čekanja ili u duboko stanje čekanja." @@ -1457,6 +1460,10 @@ msgstr "Postavljanje CI modula (Zajedničko sućelje)" msgid "CI assignment" msgstr "CI zadatak" +#, fuzzy +msgid "CI enabled" +msgstr "omogućeno" + msgid "CI slot: " msgstr "CI utor: " @@ -1739,6 +1746,10 @@ msgstr "Konfigurirajte da li se višekanalni zvučni zapisi trebaju miješati u msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Konfigurirajte da li se višekanalni zvučni zapisi trebaju miješati u stereo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Konfigurirajte da li se višekanalni zvučni zapisi trebaju miješati u stereo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Konfigurirajte da li se višekanalni zvučni zapisi trebaju miješati u stereo." @@ -2452,8 +2463,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS miješanje" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS miješanje" msgid "DUAL LAYER DVD" msgstr "DUAL LAYER (dvoslojni) DVD" @@ -3215,6 +3227,10 @@ msgstr "Omogućite ili onemogućite korištenje HDMI-CEC-a." msgid "Enable parental protection" msgstr "Omogućite roditeljsku zaštitu" +#, fuzzy +msgid "Enable power off timer" +msgstr "Omogućite odbrojavanje vremena" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Omogućavanje pokušaja podešavanja udaljenog enigma2 prijamnika u usluge koje se ne mogu lokalno ugađati (npr. tjuner je zauzet ili vrsta usluge nije dostupna na lokalnom tjuneru. Navedite potpuni URL uključujući http:// i broj porta (normalno ...:8001), primjer: http://ip_udaljeni_resiver:8001." @@ -3811,9 +3827,16 @@ msgstr "Sljedeći zadaci bit će izvršeni nakon što pritisnete OK!" msgid "Force legacy signal stats" msgstr "Forsiraj statistiku naslijeđenih signala" +#, fuzzy +msgid "Force power off (even when not in standby)" +msgstr "Prisilno zaustavite uslugu snimanja u stanju pripravnosti" + msgid "Force zap to recording service in standby" msgstr "Prisilno zaustavite uslugu snimanja u stanju pripravnosti" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Format" @@ -4157,6 +4180,10 @@ msgstr "Hard disk" msgid "Harddisk Setup" msgstr "Hard disk postavke" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardver: " + msgid "Hardware: " msgstr "Hardver: " @@ -4335,6 +4362,9 @@ msgstr "Ako je postavljeno na \"da\" vrijednosti signala (SNR, itd.) Izračunat msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Ako je postavljeno na \"da\", iste će se naredbe slati na televizor za događaje u dubokom stanju čekanja, kao i tijekom redovnih događaja u stanju čekanja." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Ako koristite višestruke neopredijeljene prekidače, naredbe se moraju poslati više puta. Postavite broj neopredijeljenih prekidača na minus jedan." @@ -5054,12 +5084,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Medija player" -msgid "Media player: GStreamer, version " -msgstr "Media player: GStreamer, verzija " - -msgid "Media player: ffmpeg, version " -msgstr "Media player: ffmpeg, verzija " - msgid "Media scanner" msgstr "Medija skener" @@ -5437,6 +5461,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Sljedeći" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nikaragva" @@ -5749,6 +5776,10 @@ msgstr "Pokrenuti tanjur brzo prije tog vremena." msgid "Only on startup" msgstr "Samo pri pokretanju" +#, fuzzy +msgid "Only power off" +msgstr "Omogućite odbrojavanje vremena" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Odaberite 'da' samo ako koristite multiswich koji zahtijeva DiSEqC naredbeni signal. Za sve ostale postavke odaberite 'ne'." @@ -5773,7 +5804,8 @@ msgstr "Radni LED status u dubokom stanju čekanja" msgid "Operating LED status in standby mode" msgstr "Radni LED status u stanju čekanja" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "Operativni LED status dok se izvodi." msgid "Opkg" @@ -6311,6 +6343,13 @@ msgstr "Napajanje LED-a" msgid "Power management. Consult your receiver's manual for more information." msgstr "Upravljanje napajanjem. Dodatne informacije potražite u priručniku prijemnika." +#, fuzzy +msgid "Power off time" +msgstr "Sortiranje po vremenu" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Prikaz na zaslonu" @@ -7744,6 +7783,9 @@ msgstr "Pretraživanje usluga" msgid "Service title mode" msgstr "Način naziva kanala" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8788,7 +8830,8 @@ msgstr "Uključite zaslon tijekom stanja čekanja" msgid "Switch on the display during Suspend Mode" msgstr "Uključite zaslon tijekom obustave" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Uključite zaslon tijekom rada." msgid "Switch to Android" @@ -11249,10 +11292,6 @@ msgstr "eksperimentalni film/video" msgid "extra wide" msgstr "izuzetno širok" -#, fuzzy -msgid "extrawide" -msgstr "izuzetno širok" - msgid "failed" msgstr "neuspješno" @@ -11442,6 +11481,10 @@ msgstr "izbornik" msgid "mins" msgstr "min" +#, fuzzy +msgid "module disabled" +msgstr "prisilno onemogućen" + msgid "month" msgstr "mjesec" @@ -11891,13 +11934,13 @@ msgstr "nestabilan" msgid "until standby/restart" msgstr "do stanja čekanja/restarta" +msgid "use HDMI cacenter" +msgstr "" + #, fuzzy msgid "use best / controlled by HDMI" msgstr "upravljano po HDMI" -msgid "use_hdmi_cacenter" -msgstr "" - msgid "user defined" msgstr "korisnički definirano" @@ -11907,6 +11950,9 @@ msgstr "korisnički definirano skriveno" msgid "variety show" msgstr "variete šou" +msgid "version" +msgstr "verzija" + msgid "vertical" msgstr "vertikalno" diff --git a/po/hu.po b/po/hu.po index ddcb94626f1..c04667a359f 100644 --- a/po/hu.po +++ b/po/hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2021-11-03 15:10+0100\n" "Last-Translator: mcfly82\n" "Language-Team: mcfly82 & wysless\n" @@ -1179,6 +1179,9 @@ msgstr "Automatikus könyvjelzők" msgid "Automatic scan" msgstr "Automatikus keresés" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Automatikusan készenléti módba helyezi a TV-készüléket, amikor a beltéri egységet készenlétbe vagy mély-készenlétbe kapcsolja." @@ -1441,6 +1444,10 @@ msgstr "CI (Common Interface) beállítása" msgid "CI assignment" msgstr "CI hozzárendelés" +#, fuzzy +msgid "CI enabled" +msgstr "engedélyezve" + msgid "CI slot: " msgstr "CI foglalat: " @@ -1724,6 +1731,10 @@ msgstr "A többcsatornás hangsávok (pl. 5.1-es) lekeverése sztereóra." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "A többcsatornás hangsávok (pl. 5.1-es) lekeverése sztereóra." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "A többcsatornás hangsávok (pl. 5.1-es) lekeverése sztereóra." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "A többcsatornás hangsávok (pl. 5.1-es) lekeverése sztereóra." @@ -2435,8 +2446,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS lekeverése" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS lekeverése" msgid "DUAL LAYER DVD" msgstr "Kétréteges DVD" @@ -3197,6 +3209,10 @@ msgstr "HDMI-CEC engedélyezése vagy letiltása" msgid "Enable parental protection" msgstr "Gyermekzár védelem engedélyezése" +#, fuzzy +msgid "Enable power off timer" +msgstr "Felébresztés időzítő engedélyezése" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Lehetővé teszi, hogy egy távoli enigma2 készülékről próbálja meg a csatorna megjelenítését, ha a helyi tuner erre nem képes (pl. a tuner foglalt, mert egy másik csatornán felvétel van folyamatban). Adja meg a tljes URL-t, beleértve a 'http://' részt és a port számát is. Pl: http://second_box:8001." @@ -3789,9 +3805,16 @@ msgstr "A műveletek az OK gomb lenyomása után lesznek végrehajtva!" msgid "Force legacy signal stats" msgstr "Hagyományos jel-statisztikák kényszerítése" +#, fuzzy +msgid "Force power off (even when not in standby)" +msgstr "Készenléti módban a felvétel esetén az adott csatornára ugrás kényszerítése" + msgid "Force zap to recording service in standby" msgstr "Készenléti módban a felvétel esetén az adott csatornára ugrás kényszerítése" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Formázás" @@ -4138,6 +4161,10 @@ msgstr "Háttértár" msgid "Harddisk Setup" msgstr "Háttértár beállítások" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardver: " + msgid "Hardware: " msgstr "Hardver: " @@ -4318,6 +4345,9 @@ msgstr "'Igen' beállítás esetén a jelszint értékek (SNR, stb.) az API V3-b msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Ha 'igen'-re állítja, ugyanazokat a parancsokat küldi a TV-készüléknek mély-készenlét eseményeknél, mint a hagyományos készenlét eseményeknél." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Ha több nem elkötelezett DiSEqC kapcsolót használ, a parancsokat többször kell elküldeni. Adja meg a rendszerében lévő kapcsolók számát eggyel csökkentve." @@ -5036,12 +5066,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Médialejátszó" -msgid "Media player: GStreamer, version " -msgstr "Media player: GStreamer, verzió" - -msgid "Media player: ffmpeg, version " -msgstr "Media player: ffmpeg, verzió" - msgid "Media scanner" msgstr "Média kereső" @@ -5420,6 +5444,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Következik" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nicaragua" @@ -5734,6 +5761,10 @@ msgstr "Az antenna gyors forgatása ezen óra előtt." msgid "Only on startup" msgstr "Csak indításkor" +#, fuzzy +msgid "Only power off" +msgstr "Felébresztés időzítő engedélyezése" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Csak akkor válassza az 'igen'-t, ha olyan multiswich-et használ, amely megköveteli a DiSEqC Port-A parancs jelet. Minden egyéb esetben válassza a 'nem'-et." @@ -5758,7 +5789,8 @@ msgstr "A működési LED állapota mély készenlét módban" msgid "Operating LED status in standby mode" msgstr "A működési LED állapota készenlét módban" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "A működési LED állapota bekapcsolt módban" msgid "Opkg" @@ -6297,6 +6329,13 @@ msgstr "LED jelző fény" msgid "Power management. Consult your receiver's manual for more information." msgstr "Energiagazdálkodás. További információkért olvassa el készüléke használati útmutatóját." +#, fuzzy +msgid "Power off time" +msgstr "Rendez: Idő" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Előlapi kijelző" @@ -7729,6 +7768,9 @@ msgstr "Csatornakeresés" msgid "Service title mode" msgstr "Csatornanév mód" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8778,7 +8820,8 @@ msgstr "A kijelző bekapcsolása Készenlét módban" msgid "Switch on the display during Suspend Mode" msgstr "A kijelző bekapcsolása Felfüggesztett módban" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "A kijelző bekapcsolása működés közben." #, fuzzy @@ -11251,10 +11294,6 @@ msgstr "kísérleti filmezés" msgid "extra wide" msgstr "extra széles" -#, fuzzy -msgid "extrawide" -msgstr "extra széles" - msgid "failed" msgstr "sikertelen" @@ -11446,6 +11485,10 @@ msgstr "menü" msgid "mins" msgstr "perc" +#, fuzzy +msgid "module disabled" +msgstr "kényszerített tiltás" + msgid "month" msgstr "hónap" @@ -11903,13 +11946,13 @@ msgstr "nem tesztelhető" msgid "until standby/restart" msgstr "kikapcsolásig/újraindításig" +msgid "use HDMI cacenter" +msgstr "" + #, fuzzy msgid "use best / controlled by HDMI" msgstr "HDMI által vezérelve" -msgid "use_hdmi_cacenter" -msgstr "" - msgid "user defined" msgstr "felhasználó által megadva" @@ -11919,6 +11962,9 @@ msgstr "'felhasználó által megadva' elrejtése" msgid "variety show" msgstr "varieté" +msgid "version" +msgstr "verzió" + msgid "vertical" msgstr "vertikális" diff --git a/po/id.po b/po/id.po index 783a87ccb7e..e9b331f09ae 100644 --- a/po/id.po +++ b/po/id.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2021-03-06\n" "Last-Translator: LinuxSTV\n" "Language-Team: \n" @@ -1211,6 +1211,9 @@ msgstr "Penanda buku otomatis" msgid "Automatic scan" msgstr "Pelacakan otomatis" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1480,6 +1483,10 @@ msgstr "Pengaturan CI (Common Interface)" msgid "CI assignment" msgstr "penetapan CI" +#, fuzzy +msgid "CI enabled" +msgstr "aktifkan" + msgid "CI slot: " msgstr "slot CI" @@ -1771,6 +1778,10 @@ msgstr "Atur apakah jalur suara kanal banyak ingin diturunkan ke stereo." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Atur apakah jalur suara kanal banyak ingin diturunkan ke stereo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Atur apakah jalur suara kanal banyak ingin diturunkan ke stereo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Atur apakah jalur suara kanal banyak ingin diturunkan ke stereo." @@ -2504,8 +2515,9 @@ msgstr "" msgid "DTS downmix" msgstr "downmix DTS" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "downmix DTS" msgid "DUAL LAYER DVD" msgstr "DVD Dua Lapis" @@ -3299,6 +3311,10 @@ msgstr "Aktifkan EPG EIT" msgid "Enable parental protection" msgstr "Aktifkan perlindungan orangtua" +#, fuzzy +msgid "Enable power off timer" +msgstr "Aktifkan pewaktu bangun tidur" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Aktifkan rx enigma2 dari jauh untuk mencoba menala layanan yang tidak bisa ditala secara lokal (misalnya penala sedang digunakan atau tipe layanan tidak tersedia pada penala lokal. Tentukan URL lengkap termasuk http:// dan nomor port (biasanya ...:8001), misalnya http://box_kedua:8001." @@ -3923,9 +3939,15 @@ msgstr "Tugas berikut akan dilakukan setelah anda tekan OK!" msgid "Force legacy signal stats" msgstr "Paksa statistik sinyal lawas" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Format" @@ -4286,6 +4308,10 @@ msgstr "Harddisk" msgid "Harddisk Setup" msgstr "Pengaturan Harddisk" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Perangkat keras: " + msgid "Hardware: " msgstr "Perangkat keras: " @@ -4470,6 +4496,9 @@ msgstr "Jika diset ke 'ya' nilai sinyal (SNR, dlsb) akan dihitung dari API V3. I msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Jika menggunakan saklar tak terikat multi, perintah DiSEqC musti dikirim berulangkali. Set pada nomor saklar tak terikat pada deretan kurang satu." @@ -5207,13 +5236,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Pemutar media" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Versi Gstreamer: " - -msgid "Media player: ffmpeg, version " -msgstr "Pemutar media: ffmpeg, versi" - msgid "Media scanner" msgstr "Pemindai media" @@ -5611,6 +5633,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Berikutnya" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nikaragua" @@ -5933,6 +5958,10 @@ msgstr "Gerakkan parabola secepatnya hanya sebelum jam ini" msgid "Only on startup" msgstr "Hanya saat memulai" +#, fuzzy +msgid "Only power off" +msgstr "Aktifkan pewaktu bangun tidur" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Hanya pilih 'ya' jika anda menggunakan saklarmulti yang membutuhkan sinyal perintah DiSEqC Port-A. Untuk semua pengaturan lainnya pilih 'tidak'." @@ -5957,7 +5986,8 @@ msgstr "Jalankan status LED pada mode siaga dalam" msgid "Operating LED status in standby mode" msgstr "Jalankan status LED pada mode siaga" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "Jalankan status LED saat berlangsung" msgid "Opkg" @@ -6511,6 +6541,13 @@ msgstr "LED Power" msgid "Power management. Consult your receiver's manual for more information." msgstr "Pengelolaan daya. Periksa manual Rx anda untuk informasi lanjut." +#, fuzzy +msgid "Power off time" +msgstr "Pilah waktu" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Tampilan daya" @@ -7985,6 +8022,9 @@ msgstr "Pelacakan layanan" msgid "Service title mode" msgstr "Mode judul layanan" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -9065,7 +9105,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "Tinjau daftar ketersedaan ekstensi penampil dan antarmuka pengguna." #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Tinjau daftar ketersedaan ekstensi penampil dan antarmuka pengguna." #, fuzzy @@ -11599,10 +11639,6 @@ msgstr "percobaan film/video" msgid "extra wide" msgstr "lebar ekstra" -#, fuzzy -msgid "extrawide" -msgstr "lebar ekstra" - msgid "failed" msgstr "gagal" @@ -11801,6 +11837,10 @@ msgstr "menu" msgid "mins" msgstr "mnt" +#, fuzzy +msgid "module disabled" +msgstr "dimatikan" + msgid "month" msgstr "bulan" @@ -12268,13 +12308,13 @@ msgstr "takbisa dites" msgid "until standby/restart" msgstr "sampai standby/mulai ulang" +msgid "use HDMI cacenter" +msgstr "" + #, fuzzy msgid "use best / controlled by HDMI" msgstr "dikontrol HDMI" -msgid "use_hdmi_cacenter" -msgstr "" - msgid "user defined" msgstr "ditentukan pengguna" @@ -12285,6 +12325,9 @@ msgstr "ditentukan pengguna" msgid "variety show" msgstr "variety show" +msgid "version" +msgstr "versi" + msgid "vertical" msgstr "vertical" diff --git a/po/is.po b/po/is.po index a7267cf355e..6ff83a0c5a6 100644 --- a/po/is.po +++ b/po/is.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2020-05-16 18:44+0200\n" "Last-Translator: Baldur \n" "Language-Team: Polar Team/LT Team \n" @@ -1310,6 +1310,9 @@ msgstr "Sjálfvirk leit" msgid "Automatic scan" msgstr "Sjálfvirk leit" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1587,6 +1590,11 @@ msgstr "" msgid "CI assignment" msgstr "CI stillingar" +# +#, fuzzy +msgid "CI enabled" +msgstr "virkt" + msgid "CI slot: " msgstr "" @@ -1866,6 +1874,9 @@ msgstr "" msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "" +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "" + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "" @@ -2629,7 +2640,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" msgid "DUAL LAYER DVD" @@ -3528,6 +3539,11 @@ msgstr "" msgid "Enable parental protection" msgstr "" +# +#, fuzzy +msgid "Enable power off timer" +msgstr "Virkja færlsu stöðu" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -4175,9 +4191,15 @@ msgstr "Eftirfarandi aðgerðir verða framkvæmdar eftir að þú ýtir á OK!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Forma" @@ -4584,6 +4606,9 @@ msgstr "Harður diskur" msgid "Harddisk Setup" msgstr "" +msgid "Hardware Accelerated" +msgstr "" + msgid "Hardware: " msgstr "" @@ -4780,6 +4805,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5627,14 +5655,6 @@ msgstr "" msgid "Media player" msgstr "Spilari" -# -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Ný útgáfa:" - -msgid "Media player: ffmpeg, version " -msgstr "" - # #, fuzzy msgid "Media scanner" @@ -6094,6 +6114,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -6466,6 +6489,11 @@ msgstr "" msgid "Only on startup" msgstr "" +# +#, fuzzy +msgid "Only power off" +msgstr "Virkja færlsu stöðu" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -6494,7 +6522,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -7141,6 +7169,14 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +# +#, fuzzy +msgid "Power off time" +msgstr "Raða Tíma" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -8826,6 +8862,9 @@ msgstr "Rása leit" msgid "Service title mode" msgstr "Veldu mynd stillingu" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + # msgid "" "Service unavailable!\n" @@ -10065,7 +10104,7 @@ msgstr "Skoða lista af tiltækum Skjá og viðmóts viðbótum." # #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Skoða lista af tiltækum Skjá og viðmóts viðbótum." # @@ -12779,9 +12818,6 @@ msgstr "" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -13010,6 +13046,11 @@ msgstr "valmynd" msgid "mins" msgstr "mín" +# +#, fuzzy +msgid "module disabled" +msgstr "óvirkt" + # msgid "month" msgstr "mánuður" @@ -13528,10 +13569,10 @@ msgstr "" msgid "until standby/restart" msgstr "bíða til biðstöðu/endurræsingu" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" # @@ -13546,6 +13587,10 @@ msgstr "stillt af notanda" msgid "variety show" msgstr "" +# +msgid "version" +msgstr "útgáfa" + # msgid "vertical" msgstr "lóðrétt" diff --git a/po/it.po b/po/it.po index b83e8371df1..bfbc7c74759 100644 --- a/po/it.po +++ b/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OpenPLi-enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2020-05-16 18:46+0200\n" "Last-Translator: Gringo \n" "Language-Team: www.linsat.net \n" @@ -1197,6 +1197,9 @@ msgstr "Segnalibri automatici" msgid "Automatic scan" msgstr "Ricerca automatica" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1460,6 +1463,10 @@ msgstr "Configurazione CI (Common Interface)" msgid "CI assignment" msgstr "Assegnazione CI" +#, fuzzy +msgid "CI enabled" +msgstr "Abilitato" + msgid "CI slot: " msgstr "Slot CI: " @@ -1729,6 +1736,10 @@ msgstr "Scegliere se deve essere effettuato il downmix in stereo delle tracce au msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Scegliere se deve essere effettuato il downmix in stereo delle tracce audio multicanale." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Scegliere se deve essere effettuato il downmix in stereo delle tracce audio multicanale." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Scegliere se deve essere effettuato il downmix in stereo delle tracce audio multicanale." @@ -2445,8 +2456,9 @@ msgstr "" msgid "DTS downmix" msgstr "Downmix DTS" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "Downmix DTS" msgid "DUAL LAYER DVD" msgstr "DVD doppio strato" @@ -3219,6 +3231,10 @@ msgstr "Abilitare HDMI-CEC" msgid "Enable parental protection" msgstr "Abilitare il Controllo genitori" +#, fuzzy +msgid "Enable power off timer" +msgstr "Abilitare il timer di riattivazione" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Abilitare il tentativo di utilizzare un ricevitore remoto per sintonizzare i canali che non possono essere sintonizzati localmente, ad es. il sintonizzatore è occupato o il tipo di canale non è disponibile sul sintonizzatore locale. Specificare l'URL completo incluso http:// e il numero della porta (in genere ....:8001), ad es. http://ricevitore_secondario:8001." @@ -3823,9 +3839,15 @@ msgstr "Le seguenti operazioni saranno eseguite dopo aver premuto il tasto OK!" msgid "Force legacy signal stats" msgstr "Forzare le statistiche del segnale legacy" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Formato" @@ -4176,6 +4198,10 @@ msgstr "Disco rigido" msgid "Harddisk Setup" msgstr "Configurazione Disco rigido" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardware: " + msgid "Hardware: " msgstr "Hardware: " @@ -4354,6 +4380,9 @@ msgstr "Se si sceglie \"Sì\" i parametri del segnale (SNR, ecc.) verranno calco msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Se si utilizzano multipli switch uncommitted i comandi DiSEqC devono essere inviati più volte. Impostare il numero meno uno di switch uncommitted presenti nella catena." @@ -5073,13 +5102,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Lettore multimediale" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Versione GStreamer: " - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "Ricerca multimediale" @@ -5471,6 +5493,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Successivo" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nicaragua" @@ -5783,6 +5808,10 @@ msgstr "Muovere la parabola velocemente solo prima di questa ora siderale." msgid "Only on startup" msgstr "Solo all'avvio" +#, fuzzy +msgid "Only power off" +msgstr "Abilitare il timer di riattivazione" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Scegliere \"Sì\" solo se si sta utilizzando un multiswitch che ha bisogno di un comando DiSEqC Porta A. Per tutte le altre configurazioni scegliere \"No\"." @@ -5807,7 +5836,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6347,6 +6376,13 @@ msgstr "Accendere LED" msgid "Power management. Consult your receiver's manual for more information." msgstr "Gestione dell'alimentazione. Consultare il manuale del ricevitore per ulteriori informazioni." +#, fuzzy +msgid "Power off time" +msgstr "Ordine per orario" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Schermata di accensione" @@ -7791,6 +7827,9 @@ msgstr "Ricerca canali" msgid "Service title mode" msgstr "Modalità titolo canale" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8849,7 +8888,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "Mostrare l'elenco delle estensioni disponibili per lo schermo e l'interfaccia utente." #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Mostrare l'elenco delle estensioni disponibili per lo schermo e l'interfaccia utente." #, fuzzy @@ -11344,10 +11383,6 @@ msgstr "Film/video sperimentali" msgid "extra wide" msgstr "Super esteso" -#, fuzzy -msgid "extrawide" -msgstr "Super esteso" - msgid "failed" msgstr "Non riuscito" @@ -11540,6 +11575,10 @@ msgstr "Menu" msgid "mins" msgstr "min" +#, fuzzy +msgid "module disabled" +msgstr "forza disabilitata" + msgid "month" msgstr "mese" @@ -12002,10 +12041,10 @@ msgstr "Non verificabile" msgid "until standby/restart" msgstr "Fino a Sospensione/Riavvio" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -12017,6 +12056,9 @@ msgstr "Definito dall'utente" msgid "variety show" msgstr "Varietà" +msgid "version" +msgstr "versione" + msgid "vertical" msgstr "Verticale" diff --git a/po/ku.po b/po/ku.po index f4af9188b3f..3ecd4831742 100644 --- a/po/ku.po +++ b/po/ku.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2 Kurdish translation\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2013-04-22 04:29+0330\n" "Last-Translator: dimili21\n" "Language-Team: \n" @@ -1197,6 +1197,9 @@ msgstr "Automatic Légerin" msgid "Automatic scan" msgstr "Automatic Légerin" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1466,6 +1469,10 @@ msgstr "" msgid "CI assignment" msgstr "CI assignment" +#, fuzzy +msgid "CI enabled" +msgstr "enabled" + msgid "CI slot: " msgstr "" @@ -1739,6 +1746,10 @@ msgstr "Configure whether multi channel sound tracks should be downmixed to ster msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Configure whether multi channel sound tracks should be downmixed to stereo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Configure whether multi channel sound tracks should be downmixed to stereo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Configure whether multi channel sound tracks should be downmixed to stereo." @@ -2466,8 +2477,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS downmix" msgid "DUAL LAYER DVD" msgstr "DUAL LAYER DVD" @@ -3251,6 +3263,10 @@ msgstr "Enable EIT EPG" msgid "Enable parental protection" msgstr "" +#, fuzzy +msgid "Enable power off timer" +msgstr "Enable move mode" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -3839,9 +3855,15 @@ msgstr "Following tasks will be done after you press OK!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Format" @@ -4199,6 +4221,10 @@ msgstr "Harddisk" msgid "Harddisk Setup" msgstr "" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardware: " + msgid "Hardware: " msgstr "Hardware: " @@ -4381,6 +4407,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5106,13 +5135,6 @@ msgstr "" msgid "Media player" msgstr "Media player" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Kernel version: " - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "Media scanner" @@ -5505,6 +5527,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Next" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -5827,6 +5852,10 @@ msgstr "" msgid "Only on startup" msgstr "" +#, fuzzy +msgid "Only power off" +msgstr "Enable move mode" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -5851,7 +5880,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6403,6 +6432,13 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +#, fuzzy +msgid "Power off time" +msgstr "Sort time" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -7871,6 +7907,9 @@ msgstr "Service scan" msgid "Service title mode" msgstr "Service title mode" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8947,7 +8986,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "View list of available display and userinterface extensions." #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "View list of available display and userinterface extensions." #, fuzzy @@ -11421,9 +11460,6 @@ msgstr "experimental film/video" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -11621,6 +11657,10 @@ msgstr "menu" msgid "mins" msgstr "mins" +#, fuzzy +msgid "module disabled" +msgstr "disabled" + msgid "month" msgstr "month" @@ -12087,10 +12127,10 @@ msgstr "" msgid "until standby/restart" msgstr "until standby/restart" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -12103,6 +12143,9 @@ msgstr "user defined" msgid "variety show" msgstr "variety show" +msgid "version" +msgstr "awa" + msgid "vertical" msgstr "vertical" diff --git a/po/lt.po b/po/lt.po index 245b8d350aa..3fe18357234 100644 --- a/po/lt.po +++ b/po/lt.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: PLi enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" -"PO-Revision-Date: 2022-04-12 21:59+0300\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" +"PO-Revision-Date: 2022-07-06 01:01+0300\n" "Last-Translator: Audronis \n" "Language-Team: Adga (C) \n" "Language: lt_LT\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\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" "X-Poedit-SourceCharset: UTF-8\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.1\n" msgid "" "\n" @@ -1191,6 +1191,9 @@ msgstr "Automatinės žymos" msgid "Automatic scan" msgstr "Automatinė paieška" +msgid "Automatically power off box to deep standby mode." +msgstr "Automatiškai išjunkite imtuvą į gilų budėjimo režimą." + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Automatiškai nustatykite televizorių į budėjimo režimą, kai imtuvas pereina į budėjimo režimą arba gilų budėjimo režimą." @@ -1453,6 +1456,9 @@ msgstr "CI (įstatomo modulio) sąranka" msgid "CI assignment" msgstr "CI priskyrimas" +msgid "CI enabled" +msgstr "CI įjungtas" + msgid "CI slot: " msgstr "CI lizdas: " @@ -1732,6 +1738,9 @@ msgstr "Pasirinkite, ar AC3 garso takeliai turi būti perkoduoti." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Pasirinkite, ar WMA Pro garso takeliai turėtų būti sulieti." +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Pasirinkite, ar kelių kanalų DTS-HD(HR/MA) garso takeliai turėtų būti sumaišyti ar perkoduoti." + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Pasirinkite, ar kelių kanalų aac+ garso takeliai turi būti sulieti su stereofoniniu ryšiu." @@ -2443,8 +2452,8 @@ msgstr "DTS" msgid "DTS downmix" msgstr "DTS suliejimas" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS-HD (HR/MA) suliejimas" msgid "DUAL LAYER DVD" msgstr "DVISLUOKSNIS DVD" @@ -2525,7 +2534,7 @@ msgid "Default+Picon" msgstr "Numatytasis + logotipas" msgid "Define additional delay in milliseconds before start of http(s) streams, e.g. to connect a remote tuner, you use a complex system of DiSEqC." -msgstr "" +msgstr "Nustatykite papildomą milisekundžių delsą prieš paleidžiant http (-us) srautus, pvz., norėdami prijungti nuotolinį imtuvą, naudokite sudėtingą DiSEqC sistemą." msgid "Define the location of the EPG Cache file." msgstr "Nustatykite EPG talpyklos failo vietą." @@ -3203,6 +3212,9 @@ msgstr "Įjungti arba išjungti HDMI-CEC." msgid "Enable parental protection" msgstr "Įjungti tėvų kontrolę" +msgid "Enable power off timer" +msgstr "Įjunkite maitinimo išjungimo laikmatį" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Įjungti nuotolinį enigma2 imtuvą, kad būtų galima žiūrėti kanalus, kurie negali būti priimti lokaliai (pvz., imtuvas užimtas, arba kanalas nepasiekiamas vietiniam imtuvui. Nurodykite pilną internetinį adresą, įskaitant http://ir prievado numerį (paprastai ...:8001), pvz., http://antrasis_aparatas:8001." @@ -3793,9 +3805,15 @@ msgstr "Šios užduotys bus atliktos, kai paspausite 'OK'!" msgid "Force legacy signal stats" msgstr "Priverstinė pasenusių signalų statistika" +msgid "Force power off (even when not in standby)" +msgstr "Priverstinis maitinimas išjungtas (net jei jis nėra budėjimo režime)" + msgid "Force zap to recording service in standby" msgstr "Priversti jungti įrašymo paslaugą budėjimo režime" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "Priverstinis ėjimas į gilų budėjimą, kai nėra budėjimo režime. Suplanuoti įrašai nesikeičia." + msgid "Format" msgstr "Formatas" @@ -4138,6 +4156,10 @@ msgstr "Kietas diskas" msgid "Harddisk Setup" msgstr "HDD valdymas" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Techninė įranga: " + msgid "Hardware: " msgstr "Techninė įranga: " @@ -4241,7 +4263,7 @@ msgid "How many minutes do you want to record?" msgstr "Kiek minučių norite daryti įrašą?" msgid "Http(s) stream start delay" -msgstr "" +msgstr "Http(-ų) srauto pradžios delsa" msgid "Hue" msgstr "Atspalvis" @@ -4317,6 +4339,9 @@ msgstr "Jei nustatyta \"taip\", signalo reikšmės (SNR ir t.t.) bus apskaičiuo msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Jei nustatyta į 'taip', į televizorių bus siunčiamos tos pačios komandos gilaus budėjimo režimo įvykiams, kaip ir įprastų laukimo režimo įvykių metu." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "Jei šis imtuvas turėtų patekti gilų laukimą, pvz pirmadienį vakare 1 val, o iš tikrųjų jau yra antradienis. Bet kuriuo atveju norint tai padaryti, čia galima nurodyti skirtingą kitos dienos pradžios laiką." + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Jei naudojate kelis neprijungtus jungiklius, DiSEqC komandos turi būti siunčiamos kelis kartus. Nustatykite nenaudojamų jungiklių skaičių grandinėje, atėmus vieną." @@ -5034,12 +5059,6 @@ msgstr "Majotas" msgid "Media player" msgstr "Media grotuvas" -msgid "Media player: GStreamer, version " -msgstr "Medija grotuvas: GStreamer, versija " - -msgid "Media player: ffmpeg, version " -msgstr "Medija grotuvas: ffmpeg, versija " - msgid "Media scanner" msgstr "Media failų paieška" @@ -5417,6 +5436,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Toliau programoje" +msgid "Next day starts at" +msgstr "Kita diena prasideda nuo" + msgid "Nicaragua" msgstr "Nikaragva" @@ -5729,6 +5751,10 @@ msgstr "Tik greitai perkelti anteną iki šios valandos." msgid "Only on startup" msgstr "Tik paleidimo metu" +#, fuzzy +msgid "Only power off" +msgstr "Įjunkite maitinimo išjungimo laikmatį" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Pasirinkite tik \"taip\", jei naudojate \"multiswich\", kurio komandinis signalas \"DiSEqC Port-A\" reikalingas. Visoms kitoms sąrankoms pasirinkite \"ne\"." @@ -5753,7 +5779,8 @@ msgstr "LED būsenos veikimas gilaus laukimo režimu" msgid "Operating LED status in standby mode" msgstr "LED būsenos veikimas laukimo režimu" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "LED būsena veikimo metu." msgid "Opkg" @@ -6291,6 +6318,12 @@ msgstr "Maitinimo LED" msgid "Power management. Consult your receiver's manual for more information." msgstr "Maitinimo valdymas. Daugiau informacijos ieškokite savo imtuvo naudojimo instrukcijoje." +msgid "Power off time" +msgstr "Išjungimo laikas" + +msgid "Power off timer" +msgstr "Išjungimo laikmatis" + msgid "Power on display" msgstr "Maitinimas ekrane" @@ -7724,6 +7757,9 @@ msgstr "Kanalo paieška" msgid "Service title mode" msgstr "Kanalo pavadinimo režimas" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8770,7 +8806,8 @@ msgstr "Įjungti ekraną budėjimo režime" msgid "Switch on the display during Suspend Mode" msgstr "Įjungti ekraną laukimo režime" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Veikimo metu išjunkite ekraną." msgid "Switch to Android" @@ -8858,7 +8895,7 @@ msgstr "TEKSTAS" msgid "TRANSLATOR_INFO" msgstr "" "P&C Adga, adga45@gmail.com\n" -"Pasvalys, 2022-04-12 versija" +"Pasvalys, 2022-07-06 versija" msgid "TS file is too large for ISO9660 level 1!" msgstr "TS failas per didelis 1 lygio ISO9660!" @@ -11230,9 +11267,6 @@ msgstr "eksperimentinis filmas/video" msgid "extra wide" msgstr "ypač platus" -msgid "extrawide" -msgstr "ypač plačiai" - msgid "failed" msgstr "nepavyko" @@ -11422,6 +11456,9 @@ msgstr "meniu" msgid "mins" msgstr "min" +msgid "module disabled" +msgstr "modulis išjungtas" + msgid "month" msgstr "mėnuo" @@ -11870,12 +11907,12 @@ msgstr "netikrintinas" msgid "until standby/restart" msgstr "iki budėjimo/paleidimo iš naujo" +msgid "use HDMI cacenter" +msgstr "naudokite HDMI cacenter" + msgid "use best / controlled by HDMI" msgstr "naudoti geriausią / valdoma HDMI" -msgid "use_hdmi_cacenter" -msgstr "naudoti_hdmi_cacenter" - msgid "user defined" msgstr "naudotojo nustatytas" @@ -11885,6 +11922,9 @@ msgstr "vartotojo nustatytas paslėptas" msgid "variety show" msgstr "įvairūs šou" +msgid "version" +msgstr "versija" + msgid "vertical" msgstr "vertikali" diff --git a/po/lv.po b/po/lv.po index fdb4c98ea73..078446b8466 100644 --- a/po/lv.po +++ b/po/lv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2014-11-12 00:49+0200\n" "Last-Translator: Taapat \n" "Language-Team: Taapat \n" @@ -1192,6 +1192,9 @@ msgstr "Veidot grāmatzīmes automātiski" msgid "Automatic scan" msgstr "Automātiskā meklēšana" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Pārslēgt TV gaidīšanas režīmā neatkarīgi no tā vai uztvērējs izslēdzas vai pārslēdzas gaidīšanas režīmā." @@ -1454,6 +1457,10 @@ msgstr "Common interfeiss" msgid "CI assignment" msgstr "CI piešķiršana" +#, fuzzy +msgid "CI enabled" +msgstr "FCC aktivizēts" + msgid "CI slot: " msgstr "CI slots: " @@ -1733,6 +1740,10 @@ msgstr "Izvēlieties, vai AC3 skaņas celiņi tiks pārkodēti." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Izvēlieties, vai WMA Pro skaņas celiņi tiks dekodēti." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Izvēlieties kā daudzkanālu skaņu celiņi tiks dekodēti uz stereo." + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Izvēlieties kā daudzkanālu skaņu celiņi tiks dekodēti uz stereo." @@ -2444,8 +2455,9 @@ msgstr "DTS" msgid "DTS downmix" msgstr "DTS dekodēšana" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "DTS-HD HR/DTS-HD MA/DTS" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS dekodēšana" msgid "DUAL LAYER DVD" msgstr "Dubultslāņu DVD" @@ -3202,6 +3214,10 @@ msgstr "Ieslēgt vai izslēgt HDMI-CEC." msgid "Enable parental protection" msgstr "Aktivizēt vecāku kontroli" +#, fuzzy +msgid "Enable power off timer" +msgstr "Aktivizēt pamodināšanas taimeri" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Izmantot citu Enigma2 uztvērēju, kuru lietot lai mēģinātu uztvert kanālu kurš nav uztverams lokāli (piem. uztvērējs ir aizņemts vai kanāla veids nav pieejams lokālajā uztvērējā). Norādiet pilnu adresi ieskaitot http:// un porta numuru (pēc noklusējuma ...:8001), piem. http://second_box:8001." @@ -3796,9 +3812,16 @@ msgstr "Šādi uzdevumi tiks veikti pēc tam, kad nospiedīsiet OK!" msgid "Force legacy signal stats" msgstr "Piespiedu mantoto signālu statistika" +#, fuzzy +msgid "Force power off (even when not in standby)" +msgstr "Gaidstāvē pārslēgt uz ierakstāmo kanālu" + msgid "Force zap to recording service in standby" msgstr "Gaidstāvē pārslēgt uz ierakstāmo kanālu" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Formatēt" @@ -4141,6 +4164,10 @@ msgstr "Cietais disks" msgid "Harddisk Setup" msgstr "Cietā diska iestatījumi" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Aparatūra: " + msgid "Hardware: " msgstr "Aparatūra: " @@ -4318,6 +4345,9 @@ msgstr "Ja iestatīts 'jā', signāla vērtības (SNR utt.) tiks aprēķinātas msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Ja iestatīts 'jā', uz TV tieks sūtītas vienādas komandas gan izslēdzoties, gan pārslēdzoties gaidstāvē." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Ja izmanto vairākus nesaistītus slēdžus (uncommitted switches), DiSEqC komandas ir jānosūta vairākas reizes. Iestatiet nesaistīto slēdžu skaitu, atskaitot vienu." @@ -5034,12 +5064,6 @@ msgstr "Majota" msgid "Media player" msgstr "Mediju atskaņotājs" -msgid "Media player: GStreamer, version " -msgstr "Mediju atskaņotājs: GStreamer " - -msgid "Media player: ffmpeg, version " -msgstr "Mediju atskaņotājs: Fmpeg " - msgid "Media scanner" msgstr "Mediju skenētājs" @@ -5417,6 +5441,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Nākamais" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nikaragva" @@ -5729,6 +5756,10 @@ msgstr "Ātri pārvietot satelītantenu tikai pirms šīs stundas." msgid "Only on startup" msgstr "Tikai startējot" +#, fuzzy +msgid "Only power off" +msgstr "Aktivizēt pamodināšanas taimeri" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Izvēlieties 'jā', ja izmantojat multiswitch, kuram nepieciešams DiSEqC Port-A komanda. Visiem citiem iestatījumiem izvēlieties 'nē'." @@ -5753,7 +5784,8 @@ msgstr "LED izslēdzot" msgid "Operating LED status in standby mode" msgstr "LED gaidstāvē" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "LED darbojoties" msgid "Opkg" @@ -6291,6 +6323,13 @@ msgstr "Ieslēgt LED" msgid "Power management. Consult your receiver's manual for more information." msgstr "Barošanas pārvaldīšana. Lai iegūtu papildinformāciju, skatiet uztvērēja rokasgrāmatu." +#, fuzzy +msgid "Power off time" +msgstr "Kārt. laiks" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Ieslēgt displeju" @@ -7724,6 +7763,9 @@ msgstr "Kanālu meklēšana" msgid "Service title mode" msgstr "Izvēlieties kanāla attēla režīmu" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8768,7 +8810,8 @@ msgstr "Ieslēgt displeju gaidstāvē." msgid "Switch on the display during Suspend Mode" msgstr "Ieslēgt displeju izslēdzot." -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Ieslēgt displeju darbojoties." msgid "Switch to Android" @@ -11223,9 +11266,6 @@ msgstr "eksperimentālās filmas/video" msgid "extra wide" msgstr "ļoti plašs" -msgid "extrawide" -msgstr "ļoti plašs" - msgid "failed" msgstr "neizdevās" @@ -11415,6 +11455,10 @@ msgstr "izvēlne" msgid "mins" msgstr "min." +#, fuzzy +msgid "module disabled" +msgstr "piespiedu izslēgts" + msgid "month" msgstr "mēnesis" @@ -11863,12 +11907,13 @@ msgstr "netestēts" msgid "until standby/restart" msgstr "līdz gaidstāvei/pārstartēšanai" +#, fuzzy +msgid "use HDMI cacenter" +msgstr "izmantot hdmi cacenter" + msgid "use best / controlled by HDMI" msgstr "izmantot labāko no HDMI" -msgid "use_hdmi_cacenter" -msgstr "izmantot hdmi cacenter" - msgid "user defined" msgstr "lietotāja definēts" @@ -11878,6 +11923,9 @@ msgstr "lietotāja slēpti" msgid "variety show" msgstr "varietē šovi" +msgid "version" +msgstr "versija" + msgid "vertical" msgstr "vertikālā" diff --git a/po/mk.po b/po/mk.po index d6a662dd35a..b8543ab053e 100644 --- a/po/mk.po +++ b/po/mk.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2021-02-19 14:49+0100\n" "Last-Translator: \n" "Language-Team: Muzoss-VELEBRDO\n" @@ -1183,6 +1183,9 @@ msgstr "Автоматски обележувачи" msgid "Automatic scan" msgstr "Автоматско пребарување" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1445,6 +1448,10 @@ msgstr "Поставки за CI (Заеднички интерфејс)" msgid "CI assignment" msgstr "Назначување на CI" +#, fuzzy +msgid "CI enabled" +msgstr "овозможено" + msgid "CI slot: " msgstr "CI слот: " @@ -1728,6 +1735,10 @@ msgstr "Мешање на повеќеканален звук во стерео. msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Мешање на повеќеканален звук во стерео." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Мешање на повеќеканален звук во стерео." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Мешање на повеќеканален звук во стерео." @@ -2441,8 +2452,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS downmix" msgid "DUAL LAYER DVD" msgstr "DUAL LAYER DVD" @@ -3204,6 +3216,10 @@ msgstr "Активирај или деактивирај користење на msgid "Enable parental protection" msgstr "Активирај родителска заштита" +#, fuzzy +msgid "Enable power off timer" +msgstr "Активирајте тајмер за будење" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Дозволете да пробате да пренесувате канал од дополнителен приемник енигма2 ако локалниот тјунер е зафатен. Наведете го целиот URL, вклучително и http:// и бројот на портата (обично ...:8001), пример: http://IP_addition.Приемник:8001." @@ -3800,9 +3816,15 @@ msgstr "Следниве задачи ќе бидат направени отк msgid "Force legacy signal stats" msgstr "Принудени статистики за наследниот сигнал" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Форматирање" @@ -4149,6 +4171,10 @@ msgstr "Хардиск" msgid "Harddisk Setup" msgstr "Поставки на хард диск" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Хардвер: " + msgid "Hardware: " msgstr "Хардвер: " @@ -4328,6 +4354,9 @@ msgstr "Ако е избрано „Да“, вредноста на сигна msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Ако е поставено на „да“, истите команди ќе бидат испратени до телевизорот за настани во дееп стендбај, како што се испраќаат за време на редовни настани во стендбај." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Ако се користат неколку неконтригирани switches - прекинувачи, командите DiSEqC мора да се испраќаат неколку пати. Поставете го бројот на неповрзани switches - прекинувачи на ланецот минус еден." @@ -5046,13 +5075,6 @@ msgstr "Мајот" msgid "Media player" msgstr "Медиа плеер" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Верзија за GStreamer: " - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "Медиумски скенер" @@ -5431,6 +5453,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Следно" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Никарагва" @@ -5743,6 +5768,10 @@ msgstr "Завртете ја сателитскиот антена кратко msgid "Only on startup" msgstr "На почеток" +#, fuzzy +msgid "Only power off" +msgstr "Активирајте тајмер за будење" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Изберете „Да“ само ако користите multiswich за кој е потребен команден сигнал DiSEqC Port-A. За сите други поставувања, изберете \"Не\"." @@ -5767,7 +5796,8 @@ msgstr "LED-статус во Дееп Стандбај" msgid "Operating LED status in standby mode" msgstr "LED-статус во Стандбај" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "LED статус во функција." msgid "Opkg" @@ -6306,6 +6336,13 @@ msgstr "ЛЕД-напојување" msgid "Power management. Consult your receiver's manual for more information." msgstr "Моќен менаџмент. За повеќе информации, видете ги упатствата за работа на вашиот приемник." +#, fuzzy +msgid "Power off time" +msgstr "Сортирај според времето" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Вклучете го екранот" @@ -7739,6 +7776,9 @@ msgstr "Пребарување на канали" msgid "Service title mode" msgstr "Наслов на канал" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8785,7 +8825,8 @@ msgstr "Вклучете го екранот во стендбај" msgid "Switch on the display during Suspend Mode" msgstr "Вклучете го екранот во дееп стендбај" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Вклучете го дисплејот во нормална работа." #, fuzzy @@ -11245,10 +11286,6 @@ msgstr "експериментален филм / видео" msgid "extra wide" msgstr "екстра широк" -#, fuzzy -msgid "extrawide" -msgstr "екстра широк" - msgid "failed" msgstr "неуспешно" @@ -11441,6 +11478,10 @@ msgstr "мени" msgid "mins" msgstr "мин" +#, fuzzy +msgid "module disabled" +msgstr "принудно оневозможена" + msgid "month" msgstr "месец" @@ -11902,13 +11943,13 @@ msgstr "неиспитано" msgid "until standby/restart" msgstr "до стендбај / рестартирање" +msgid "use HDMI cacenter" +msgstr "" + #, fuzzy msgid "use best / controlled by HDMI" msgstr "контролирана од HDMI" -msgid "use_hdmi_cacenter" -msgstr "" - msgid "user defined" msgstr "корисник дефиниран" @@ -11918,6 +11959,9 @@ msgstr "корисникот дефиниран скриен" msgid "variety show" msgstr "естрада" +msgid "version" +msgstr "верзија" + msgid "vertical" msgstr "вертикално" diff --git a/po/nb.po b/po/nb.po index 535a2c8ca46..bce5c68e420 100644 --- a/po/nb.po +++ b/po/nb.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2022-04-29 18:05+0200\n" "Last-Translator: GeirJ \n" "Language-Team: GeirJ\n" @@ -1300,6 +1300,9 @@ msgstr "Huskeliste" msgid "Automatic scan" msgstr "Automatisk søk" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Sett TV-en automatisk i standby når mottakeren går i standby eller dyp standby." @@ -1595,6 +1598,11 @@ msgstr "CI (Common Interface) oppsett" msgid "CI assignment" msgstr "CI tildeling" +# +#, fuzzy +msgid "CI enabled" +msgstr "FCC aktivert" + # msgid "CI slot: " msgstr "CI spor: " @@ -1905,6 +1913,10 @@ msgstr "Velg om AC3 lydspor skal transkodes." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Velg om WMA Pro lydspor skal nedmikses." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Velg om flerkanals aac+-lydspor skal nedmikses til stereo." + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Velg om flerkanals aac+-lydspor skal nedmikses til stereo." @@ -2679,8 +2691,9 @@ msgstr "DTS" msgid "DTS downmix" msgstr "DTS nedskalering" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "DTS-HD HR/DTS-HD MA/DTS" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS nedskalering" # msgid "DUAL LAYER DVD" @@ -3533,6 +3546,10 @@ msgstr "Aktiver eller deaktiver ved hjelp av HDMI-CEC." msgid "Enable parental protection" msgstr "Aktiver foreldrekontroll" +#, fuzzy +msgid "Enable power off timer" +msgstr "Bruk våkne timer" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Aktiver ekstern enigma2 mottaker som kan brukes til å søke opp kanaler/tjenester som ikke kan nåes lokalt (eks.tuner er opptatt eller kanal/tjeneste er utenfor rekkevidde for lokal tuner). Tast inn komplett URL inkludert http:// og port nummer (normalt ...:8001), eks. http://andre_boks:8001." @@ -4195,9 +4212,16 @@ msgstr "Følgende oppgaver vil bli utført etter at du trykker OK!" msgid "Force legacy signal stats" msgstr "Bruk eldre type signalstatistikk" +#, fuzzy +msgid "Force power off (even when not in standby)" +msgstr "Tving zap til opptakstjeneste i standby" + msgid "Force zap to recording service in standby" msgstr "Tving zap til opptakstjeneste i standby" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Format" @@ -4575,6 +4599,10 @@ msgstr "Lagrings innstilling" msgid "Harddisk Setup" msgstr "Lagrings oppsett" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Maskinvare: " + msgid "Hardware: " msgstr "Maskinvare: " @@ -4768,6 +4796,9 @@ msgstr "Hvis satt til 'Ja' signal verdier (SNR, etc) vil bli beregnet fra API v3 msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Hvis satt til 'ja' blir de samme kommandoene sendt til TV-en for dyp standby og vanlig standby." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Hvis du bruker flere ubegrensede switcher, må DiSEqC-kommandoene sendes flere ganger. Angi antall ubegrensede switcher i kjeden minus en." @@ -5585,13 +5616,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Mediespiller" -# -msgid "Media player: GStreamer, version " -msgstr "Mediespiller: GStreamer, versjon " - -msgid "Media player: ffmpeg, version " -msgstr "Mediespiller: ffmpeg, versjon " - msgid "Media scanner" msgstr "Mediesøker" @@ -6017,6 +6041,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Neste" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nicaragua" @@ -6364,6 +6391,10 @@ msgstr "Bare flytt parabolen raskt før denne time." msgid "Only on startup" msgstr "Bare etter oppstart" +#, fuzzy +msgid "Only power off" +msgstr "Bruk våkne timer" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Bare velg 'Ja' Hvis du bruker en multiswich som krever et DiSEqC Port-A kommando signal. For alle andre oppsett velger du \"nei\"." @@ -6391,7 +6422,8 @@ msgstr "LED-status i dyp standby-modus" msgid "Operating LED status in standby mode" msgstr "LED-status i standby-modus" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "LED-status under bruk." msgid "Opkg" @@ -7012,6 +7044,14 @@ msgstr "Strøm-LED" msgid "Power management. Consult your receiver's manual for more information." msgstr "Strømstyring. Se i din mottakers bruksanvisning for mer informasjon." +# +#, fuzzy +msgid "Power off time" +msgstr "Sorter tid" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Slå på display" @@ -8588,6 +8628,9 @@ msgstr "Kanalsøk" msgid "Service title mode" msgstr "Kanalvalg" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -9751,7 +9794,8 @@ msgstr "Slå på displayet under standby-modus" msgid "Switch on the display during Suspend Mode" msgstr "Slå på displayet under hvilemodus" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Slå på displayet under drift." # @@ -12432,9 +12476,6 @@ msgstr "eksperimentell film/video" msgid "extra wide" msgstr "ekstra wide" -msgid "extrawide" -msgstr "ekstra bred" - # msgid "failed" msgstr "feilet" @@ -12656,6 +12697,11 @@ msgstr "meny" msgid "mins" msgstr "min" +# +#, fuzzy +msgid "module disabled" +msgstr "styrke deaktivert" + # msgid "month" msgstr "måned" @@ -13161,12 +13207,13 @@ msgstr "lar seg ikke teste" msgid "until standby/restart" msgstr "til slår av/starter på nytt" +#, fuzzy +msgid "use HDMI cacenter" +msgstr "bruk HDMI forhåndsvalg" + msgid "use best / controlled by HDMI" msgstr "bruk best / kontrollert av HDMI" -msgid "use_hdmi_cacenter" -msgstr "bruk HDMI forhåndsvalg" - # msgid "user defined" msgstr "bruker bestemt" @@ -13178,6 +13225,9 @@ msgstr "bruker definert skjult" msgid "variety show" msgstr "varieté show" +msgid "version" +msgstr "versjon" + # msgid "vertical" msgstr "vertikal" diff --git a/po/nl.po b/po/nl.po index f14a39600dd..3790d52ca76 100644 --- a/po/nl.po +++ b/po/nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: \n" "Last-Translator: Frenske \n" "Language-Team: PLiteam \n" @@ -1176,6 +1176,9 @@ msgstr "Automatische bladwijzers" msgid "Automatic scan" msgstr "Automatisch zoeken" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Indien geactiveerd, dan wordt ook de TV in stand-by gezet zodra de ontvanger naar stand-by gaat." @@ -1441,6 +1444,9 @@ msgstr "Instellen CI (Common Interface)" msgid "CI assignment" msgstr "CI toewijzing" +msgid "CI enabled" +msgstr "CI geactiveerd" + msgid "CI slot: " msgstr "CI slot: " @@ -1728,6 +1734,9 @@ msgstr "Indien geactiveerd, dan stelt u hiermee in of AC3 geluid omgezet moet wo msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Indien geactiveerd, dan stelt u hiermee in of WMA Pro geluid omgezet moet worden naar stereo." +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Indien geactiveerd, dan stelt u hiermee in of Multi channel DTS-HD(HR/MA) geluid omgezet moet worden naar stereo of moet worden getranscodeerd." + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Indien geactiveerd, dan stelt u hiermee in of Multi channel AAC geluid omgezet moet worden naar stereo." @@ -2605,8 +2614,8 @@ msgstr "DTS" msgid "DTS downmix" msgstr "DTS downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS-HD(HR/MA) downmix" msgid "DUAL LAYER DVD" msgstr "DUAL LAYER DVD" @@ -2687,7 +2696,7 @@ msgid "Default+Picon" msgstr "Standaard + Picon" msgid "Define additional delay in milliseconds before start of http(s) streams, e.g. to connect a remote tuner, you use a complex system of DiSEqC." -msgstr "" +msgstr "Definieer de startvertraging in milliseconden, voordat de http(s) stream start. Bijvoorbeeld voor verbindingen met andere tuners of bij complexe DiSEqC installaties." msgid "Define the location of the EPG Cache file." msgstr "Geef de plaats van het EPG cache bestand aan." @@ -3376,6 +3385,9 @@ msgstr "Indien geactiveerd, dan wordt HDMI-CEC ingeschakeld." msgid "Enable parental protection" msgstr "Kinderslot inschakelen" +msgid "Enable power off timer" +msgstr "Activeer de uitschakel timer" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Indien geactiveerd, dan wordt er een link naar een externe enigma2 receiver actief waarmee er, naast de huidige locale tuners, een extra tuner beschikbaar komt. Hiermee wordt de flexibiliteit om meer kanalen simultaan vanaf één ontvanger te kunnen opnemen aanzienlijk vergroot. De opties worden hierna uitgelegd." @@ -3971,11 +3983,17 @@ msgid "Following tasks will be done after you press OK!" msgstr "Nadat u op Ok drukt worden de volgende taken uitgevoerd!" msgid "Force legacy signal stats" -msgstr "Force Legacy Signal Stats" +msgstr "Forceer oude signaal Statistieken" + +msgid "Force power off (even when not in standby)" +msgstr "Schakel ook uit indien niet in stand-by" msgid "Force zap to recording service in standby" msgstr "Zap naar de op te nemen zender in stand-by" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "Forceert het uitschakelen van de ontvanger, zelfs als deze niet in stand-by modes staat. Dit heeft geen impact op ingeplande opnames." + msgid "Format" msgstr "Formaat" @@ -4318,6 +4336,10 @@ msgstr "Harde schijf" msgid "Harddisk Setup" msgstr "Instellen harde schijf" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardware: " + msgid "Hardware: " msgstr "Hardware: " @@ -4421,7 +4443,7 @@ msgid "How many minutes do you want to record?" msgstr "Hoeveel minuten wilt u opnemen?" msgid "Http(s) stream start delay" -msgstr "" +msgstr "Opstart vertraging voor streams" msgid "Hue" msgstr "Tint" @@ -4498,6 +4520,9 @@ msgstr "Indien geactiveerd zullen de waardes (SNR, etc) worden berekend vanaf de msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Indien geactiveerd, dan zal een identiek signaal verstuurd worden by 'deep stand-by' als bij 'gewoon stand-by'." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "Hiermee kan de start van een nieuwe dag verschoven worden naar een later tijdstip. Hiermee kan een periode na mindernacht nog gezien worden als de avond van de vorige dag." + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Indien je meerdere uncommitted switches gebruikt dienen de DiSEqC commando's meerdere malen gegeven te worden. Stel de betreffende waarde in op het aantal switches min 1." @@ -5221,12 +5246,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Mediaspeler" -msgid "Media player: GStreamer, version " -msgstr "Mediaplayer: GStreamer, versie " - -msgid "Media player: ffmpeg, version " -msgstr "Mediaplayer: ffmpeg, versie " - msgid "Media scanner" msgstr "Mediascanner" @@ -5606,6 +5625,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Straks" +msgid "Next day starts at" +msgstr "Dag start om" + msgid "Nicaragua" msgstr "Nicaragua" @@ -5923,6 +5945,9 @@ msgstr "Verplaats de schotel alléén met hoge snelheid voor dit tijdstip." msgid "Only on startup" msgstr "Enkel na het opstarten" +msgid "Only power off" +msgstr "Enkel bij uitschakelen" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Kies enkel 'ja' indien u een multiswitch gebruikt die een DiSEqC poort-A signaal commando vereist. Voor elke andere opstelling kiest u voor 'nee'." @@ -5947,7 +5972,8 @@ msgstr "Kleur van de LED in deep stand-by mode" msgid "Operating LED status in standby mode" msgstr "Kleur van de LED in stand-by" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "Kleur van de LED tijdens bedrijf" msgid "Opkg" @@ -6510,6 +6536,12 @@ msgstr "Power LED" msgid "Power management. Consult your receiver's manual for more information." msgstr "Power management. Raadpleeg de handleiding van uw ontvanger voor meer details." +msgid "Power off time" +msgstr "Uitschakeltijd" + +msgid "Power off timer" +msgstr "Uitschakel timer" + msgid "Power on display" msgstr "Schakel het display in" @@ -7951,6 +7983,9 @@ msgstr "Zenders zoeken" msgid "Service title mode" msgstr "Zenders titel mode" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -9010,7 +9045,8 @@ msgstr "Schakel het display in tijdens stand-by" msgid "Switch on the display during Suspend Mode" msgstr "Schakel het display in tijdens de deep stand-by" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Schakel het display in tijdens normaal bedrijf" msgid "Switch to Android" @@ -11538,9 +11574,6 @@ msgstr "Experimentele films/Video" msgid "extra wide" msgstr "Extra breed" -msgid "extrawide" -msgstr "Extra breed" - msgid "failed" msgstr "mislukt" @@ -11730,6 +11763,9 @@ msgstr "menu" msgid "mins" msgstr "min" +msgid "module disabled" +msgstr "module uitgeschakeld" + msgid "month" msgstr "maand" @@ -12179,12 +12215,12 @@ msgstr "niet te testen" msgid "until standby/restart" msgstr "tot stand-by / herstart" +msgid "use HDMI cacenter" +msgstr "gebruik HDMI cacenter" + msgid "use best / controlled by HDMI" msgstr "gebruik de beste / gecontroleerd door HDMI" -msgid "use_hdmi_cacenter" -msgstr "gebruik hdmi_cacenter" - msgid "user defined" msgstr "Door gebruiker bepaald" @@ -12194,6 +12230,9 @@ msgstr "Verborgen door de gebruiker" msgid "variety show" msgstr "Variété/Show" +msgid "version" +msgstr "versie" + msgid "vertical" msgstr "verticaal" diff --git a/po/nn.po b/po/nn.po index 6093312e868..64d174b7602 100644 --- a/po/nn.po +++ b/po/nn.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2013-10-23 19:15+0100\n" "Last-Translator: andy1 \n" "Language-Team: none\n" @@ -1281,6 +1281,9 @@ msgstr "Automatisk søk" msgid "Automatic scan" msgstr "Automatisk søk" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1582,6 +1585,11 @@ msgstr "" msgid "CI assignment" msgstr "CI tildeling" +# +#, fuzzy +msgid "CI enabled" +msgstr "aktivert" + msgid "CI slot: " msgstr "" @@ -1880,6 +1888,10 @@ msgstr "Velg om flerkanals lyd skal blandes til stereolyd." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Velg om flerkanals lyd skal blandes til stereolyd." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Velg om flerkanals lyd skal blandes til stereolyd." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Velg om flerkanals lyd skal blandes til stereolyd." @@ -2665,7 +2677,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" # @@ -3538,6 +3550,11 @@ msgstr "Aktivere EIT EPG" msgid "Enable parental protection" msgstr "" +# +#, fuzzy +msgid "Enable power off timer" +msgstr "Aktivere flytte modus" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -4179,9 +4196,15 @@ msgstr "Følgende oppgaver vil bli utført etter at du trykker OK!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Format" @@ -4568,6 +4591,10 @@ msgstr "Disk" msgid "Harddisk Setup" msgstr "" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Maskinvare:" + msgid "Hardware: " msgstr "Maskinvare:" @@ -4762,6 +4789,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5575,14 +5605,6 @@ msgstr "" msgid "Media player" msgstr "Mediespiller" -# -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Linuxkjerne versjon: " - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "Mediesøker" @@ -6022,6 +6044,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Neste" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -6378,6 +6403,11 @@ msgstr "" msgid "Only on startup" msgstr "" +# +#, fuzzy +msgid "Only power off" +msgstr "Aktivere flytte modus" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -6403,7 +6433,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -7016,6 +7046,14 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +# +#, fuzzy +msgid "Power off time" +msgstr "Sortere tid" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -8593,6 +8631,9 @@ msgstr "Kanalsøk" msgid "Service title mode" msgstr "Kanalvalg" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -9762,7 +9803,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "Vis en liste over alle brukergrensesnitt og skjermvalg" #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Vis en liste over alle brukergrensesnitt og skjermvalg" # @@ -12437,9 +12478,6 @@ msgstr "Eksperimentell film/Video" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -12666,6 +12704,11 @@ msgstr "meny" msgid "mins" msgstr "min" +# +#, fuzzy +msgid "module disabled" +msgstr "deaktivert" + # msgid "month" msgstr "måned" @@ -13181,10 +13224,10 @@ msgstr "" msgid "until standby/restart" msgstr "til slår av/starter på nytt" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" # @@ -13199,6 +13242,10 @@ msgstr "brukerbestemt" msgid "variety show" msgstr "varieté show" +# +msgid "version" +msgstr "versjon" + # msgid "vertical" msgstr "vertikal" diff --git a/po/pl.po b/po/pl.po index 867ee5cb1d1..f030718cdcd 100644 --- a/po/pl.po +++ b/po/pl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2022-04-02 17:25+0200\n" "Last-Translator: blzr \n" "Language-Team: \n" @@ -1192,6 +1192,9 @@ msgstr "Automatyczne zakładki" msgid "Automatic scan" msgstr "Skanowanie automatyczne" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Automatycznie przełącz TV w stan czuwania kiedy odbiornik przechodzi w stan czuwania lub wyłącza się." @@ -1454,6 +1457,10 @@ msgstr "Ustawienia modułu dostępu CI" msgid "CI assignment" msgstr "Zadania CI" +#, fuzzy +msgid "CI enabled" +msgstr "Włączone" + msgid "CI slot: " msgstr "Slot CI: " @@ -1736,6 +1743,10 @@ msgstr "Skonfiguruj czy wielokanałowe ścieżki audio mają być downmix'owane msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Skonfiguruj czy wielokanałowe ścieżki audio mają być downmix'owane do stereo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Skonfiguruj czy wielokanałowe ścieżki audio mają być downmix'owane do stereo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Skonfiguruj czy wielokanałowe ścieżki audio mają być downmix'owane do stereo." @@ -2448,7 +2459,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" msgid "DUAL LAYER DVD" @@ -3208,6 +3219,10 @@ msgstr "Włącz lub wyłącz funkcję HDMI-CEC." msgid "Enable parental protection" msgstr "Włącz kontrolę rodzicielską" +#, fuzzy +msgid "Enable power off timer" +msgstr "Włącz timer wybudzania" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Włącz, aby zdalny odbiornik (na enigma2), był ewentualnym 'źródłem' kanałów, które nie mogą być odebrane lokalnie (np. głowice są zajęte lub typ kanału jest niedostępny na lokalnym tunerze. Wpisz kompletny URL zawierający http:// i numer portu (standardowo ...:8001), np. http://drugi_box:8001" @@ -3804,9 +3819,16 @@ msgstr "Poniższe zadania będą wykonane po wciśnięciu OK!" msgid "Force legacy signal stats" msgstr "Wymuś starszy typ statystyk sygnału" +#, fuzzy +msgid "Force power off (even when not in standby)" +msgstr "Wymuś przełączenie na nagrywany kanał w trybie czuwania" + msgid "Force zap to recording service in standby" msgstr "Wymuś przełączenie na nagrywany kanał w trybie czuwania" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Format" @@ -4150,6 +4172,10 @@ msgstr "Dysk twardy" msgid "Harddisk Setup" msgstr "Ustawienia dysku HDD" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Sprzęt: " + msgid "Hardware: " msgstr "Sprzęt: " @@ -4328,6 +4354,9 @@ msgstr "Gdy ustawione na 'Tak' wartości sygnału (SNR itd.) będą kalkulowane msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "W przypadku ustawienia na \"tak\" te same polecenia będą wysyłane do telewizora w przypadku stanu głębokiego czuwania (wyłączenia), jak podczas zdarzeń w stanie czuwania." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Jeśli używasz kilku urządzeń 'switch uncommitted', komendy DiSEqC muszą być wysyłane kilkukrotnie. Wpisz liczbę takich urządzeń w sieci minus jeden." @@ -5047,12 +5076,6 @@ msgstr "" msgid "Media player" msgstr "Odtwarzacz" -msgid "Media player: GStreamer, version " -msgstr "Odtwarzacz mediów: gstreamer, wersja " - -msgid "Media player: ffmpeg, version " -msgstr "Odtwarzacz mediów: ffmpeg, wersja " - msgid "Media scanner" msgstr "" @@ -5430,6 +5453,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Następnie" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nikaragua" @@ -5742,6 +5768,10 @@ msgstr "Przesuwaj antenę szybko tylko przed tą godziną." msgid "Only on startup" msgstr "Tylko przy (re)starcie" +#, fuzzy +msgid "Only power off" +msgstr "Włącz timer wybudzania" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Wybierz 'Tak' tylko jeżeli używasz multiswitcha który wymaga sygnału sterującego DiSEqC Port-A. Dla wszystkich innych konfiguracji wybierz 'Nie'." @@ -5766,7 +5796,8 @@ msgstr "Status diody LED w 'deep standby'" msgid "Operating LED status in standby mode" msgstr "Status diody LED w trybie czuwania" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "Status diody LED podczas pracy." msgid "Opkg" @@ -6304,6 +6335,13 @@ msgstr "Dioda LED zasilania" msgid "Power management. Consult your receiver's manual for more information." msgstr "Zarządzanie zasilaniem. Więcej informacji znajdziesz w instrukcji obsługi odbiornika." +#, fuzzy +msgid "Power off time" +msgstr "Sortuj wg czasu" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Włącz wyświetlacz" @@ -7737,6 +7775,9 @@ msgstr "Skanowanie kanałów" msgid "Service title mode" msgstr "Identyfikacja kanału" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8781,7 +8822,8 @@ msgstr "Włącz wyświetlacz w trybie czuwania" msgid "Switch on the display during Suspend Mode" msgstr "Włącz wyświetlacz w trybie zawieszenia" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Włącz wyświetlacz w podczas pracy." msgid "Switch to Android" @@ -11245,10 +11287,6 @@ msgstr "Film eksperymentalny" msgid "extra wide" msgstr "Bardzo szeroka" -#, fuzzy -msgid "extrawide" -msgstr "Bardzo szeroka" - msgid "failed" msgstr "nieudane" @@ -11438,6 +11476,10 @@ msgstr "Menu" msgid "mins" msgstr "min" +#, fuzzy +msgid "module disabled" +msgstr "Wymuszanie wyłączone" + msgid "month" msgstr "miesiąc" @@ -11887,13 +11929,13 @@ msgstr "nietestowalne" msgid "until standby/restart" msgstr "Do standby/restartu" +msgid "use HDMI cacenter" +msgstr "" + #, fuzzy msgid "use best / controlled by HDMI" msgstr "kontrolowane przez HDMI" -msgid "use_hdmi_cacenter" -msgstr "" - msgid "user defined" msgstr "Zdefiniowane przez użytkownika" @@ -11903,6 +11945,9 @@ msgstr "Zdefiniowane przez użytkownika ukryte" msgid "variety show" msgstr "Rozrywka" +msgid "version" +msgstr "wersja" + msgid "vertical" msgstr "Pionowa (V)" diff --git a/po/pt.po b/po/pt.po index 0e80d27a551..659d3d00ad2 100644 --- a/po/pt.po +++ b/po/pt.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2014-12-15 19:38-0000\n" "Last-Translator: Phenom \n" "Language-Team: Muaitai \n" @@ -1355,6 +1355,9 @@ msgstr "Pesquisa automática" msgid "Automatic scan" msgstr "Pesquisa automática" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1655,6 +1658,11 @@ msgstr "" msgid "CI assignment" msgstr "Escolha de CI" +# +#, fuzzy +msgid "CI enabled" +msgstr "activo" + msgid "CI slot: " msgstr "" @@ -1962,6 +1970,10 @@ msgstr "Configurar se faixas som multi-canal devem ser downmixed para estéreo." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Configurar se faixas som multi-canal devem ser downmixed para estéreo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Configurar se faixas som multi-canal devem ser downmixed para estéreo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Configurar se faixas som multi-canal devem ser downmixed para estéreo." @@ -2797,7 +2809,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" # @@ -3707,6 +3719,11 @@ msgstr "Activar Guia de Programação EIT" msgid "Enable parental protection" msgstr "" +# +#, fuzzy +msgid "Enable power off timer" +msgstr "Activar modo deslocar" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -4370,9 +4387,15 @@ msgstr "As tarefas seguintes vão terminar depois de pressionar OK!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Formato" @@ -4774,6 +4797,10 @@ msgstr "Disco rígido" msgid "Harddisk Setup" msgstr "" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hardware: " + msgid "Hardware: " msgstr "Hardware: " @@ -4971,6 +4998,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5832,13 +5862,6 @@ msgstr "" msgid "Media player" msgstr "Leitor multimédia" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Versão do Kernel: " - -msgid "Media player: ffmpeg, version " -msgstr "" - # #, fuzzy msgid "Media scanner" @@ -6296,6 +6319,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Seguinte" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -6674,6 +6700,11 @@ msgstr "" msgid "Only on startup" msgstr "" +# +#, fuzzy +msgid "Only power off" +msgstr "Activar modo deslocar" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -6702,7 +6733,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -7366,6 +7397,14 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +# +#, fuzzy +msgid "Power off time" +msgstr "Ordenar por tempo" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -9083,6 +9122,9 @@ msgstr "Pesquisa de canais" msgid "Service title mode" msgstr "Modo título de canal" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + # msgid "" "Service unavailable!\n" @@ -10332,7 +10374,7 @@ msgstr "Ver lista de extensões de ecrã e interface de utilizador disponíveis" # #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Ver lista de extensões de ecrã e interface de utilizador disponíveis" # @@ -13132,9 +13174,6 @@ msgstr "filme/vídeo experimental" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -13366,6 +13405,11 @@ msgstr "menu" msgid "mins" msgstr "mins" +# +#, fuzzy +msgid "module disabled" +msgstr "desactivar" + # msgid "month" msgstr "mês" @@ -13895,10 +13939,10 @@ msgstr "" msgid "until standby/restart" msgstr "até Standby/reiniciar" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" # @@ -13913,6 +13957,9 @@ msgstr "definido pelo utilizador" msgid "variety show" msgstr "espectáculos variados" +msgid "version" +msgstr "versão" + # msgid "vertical" msgstr "vertical" diff --git a/po/pt_BR.po b/po/pt_BR.po index 95753f3f8ac..8d388ed2f0d 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2013-10-20 19:13-0300\n" "Last-Translator: Diogo \n" "Language-Team: Traduzido por Frank Viana \n" @@ -1188,6 +1188,9 @@ msgstr "Busca automática" msgid "Automatic scan" msgstr "Busca automática" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1456,6 +1459,10 @@ msgstr "" msgid "CI assignment" msgstr "Definição de CI" +#, fuzzy +msgid "CI enabled" +msgstr "Ativo" + msgid "CI slot: " msgstr "" @@ -1729,6 +1736,10 @@ msgstr "Configurar se trilhas de áudio multicanais devem ser mixadas em estére msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Configurar se trilhas de áudio multicanais devem ser mixadas em estéreo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Configurar se trilhas de áudio multicanais devem ser mixadas em estéreo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Configurar se trilhas de áudio multicanais devem ser mixadas em estéreo." @@ -2456,8 +2467,9 @@ msgstr "" msgid "DTS downmix" msgstr "Downmix DTS" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "Downmix DTS" msgid "DUAL LAYER DVD" msgstr "DVD Dupla Camada" @@ -3243,6 +3255,10 @@ msgstr "Ativar EPG EIT" msgid "Enable parental protection" msgstr "" +#, fuzzy +msgid "Enable power off timer" +msgstr "Organizar/mover itens" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -3830,9 +3846,15 @@ msgstr "As tarefas irão terminar após pressionar OK!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Formato" @@ -4188,6 +4210,9 @@ msgstr "Disco rígido" msgid "Harddisk Setup" msgstr "" +msgid "Hardware Accelerated" +msgstr "" + msgid "Hardware: " msgstr "" @@ -4370,6 +4395,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5094,13 +5122,6 @@ msgstr "" msgid "Media player" msgstr "Reprodutor de mídia" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Versão do Kernel:" - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "Buscar mídia" @@ -5492,6 +5513,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "A seguir" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -5814,6 +5838,10 @@ msgstr "" msgid "Only on startup" msgstr "" +#, fuzzy +msgid "Only power off" +msgstr "Organizar/mover itens" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -5838,7 +5866,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6392,6 +6420,13 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +#, fuzzy +msgid "Power off time" +msgstr "Cronológico" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -7860,6 +7895,9 @@ msgstr "Busca de canais" msgid "Service title mode" msgstr "" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8937,7 +8975,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "Ver extensões de tela e interface do usuário disponíveis." #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Ver extensões de tela e interface do usuário disponíveis." #, fuzzy @@ -11414,9 +11452,6 @@ msgstr "Filme/vídeo experimental " msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -11614,6 +11649,10 @@ msgstr "Menu" msgid "mins" msgstr "mins" +#, fuzzy +msgid "module disabled" +msgstr "Desativado" + msgid "month" msgstr "mês" @@ -12081,10 +12120,10 @@ msgstr "" msgid "until standby/restart" msgstr "até standby/reiniciar" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -12097,6 +12136,9 @@ msgstr "Manual" msgid "variety show" msgstr "Show de variedades" +msgid "version" +msgstr "versão" + msgid "vertical" msgstr "Vertical" diff --git a/po/ro.po b/po/ro.po index 75e08133a56..4842de10c47 100644 --- a/po/ro.po +++ b/po/ro.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tuxbox-enigma 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2010-03-09 21:03+0100\n" "Last-Translator: \n" "Language-Team: HDTV ROMANIA(superonic,costel_mbc,neutrin,otheitis,cipy_1982,neutrin,runcanion)\n" @@ -1205,6 +1205,9 @@ msgstr "Scanare automata" msgid "Automatic scan" msgstr "Scanare automata" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1475,6 +1478,10 @@ msgstr "" msgid "CI assignment" msgstr "Asignarea CI" +#, fuzzy +msgid "CI enabled" +msgstr "activat" + msgid "CI slot: " msgstr "" @@ -1749,6 +1756,9 @@ msgstr "" msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "" +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "" + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "" @@ -2493,7 +2503,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" msgid "DUAL LAYER DVD" @@ -3291,6 +3301,10 @@ msgstr "" msgid "Enable parental protection" msgstr "" +#, fuzzy +msgid "Enable power off timer" +msgstr "Activeaza mod mutare" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -3888,9 +3902,15 @@ msgstr "" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Formatare" @@ -4256,6 +4276,9 @@ msgstr "Hard disc" msgid "Harddisk Setup" msgstr "" +msgid "Hardware Accelerated" +msgstr "" + msgid "Hardware: " msgstr "" @@ -4439,6 +4462,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5193,13 +5219,6 @@ msgstr "" msgid "Media player" msgstr "Media player" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Versiune noua:" - -msgid "Media player: ffmpeg, version " -msgstr "" - #, fuzzy msgid "Media scanner" msgstr "Media player" @@ -5600,6 +5619,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -5928,6 +5950,10 @@ msgstr "" msgid "Only on startup" msgstr "" +#, fuzzy +msgid "Only power off" +msgstr "Activeaza mod mutare" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -5954,7 +5980,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6514,6 +6540,13 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +#, fuzzy +msgid "Power off time" +msgstr "Timpul de sortare" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -8011,6 +8044,9 @@ msgstr "Scanare serviciu" msgid "Service title mode" msgstr "Selectati modul vieo" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -9121,7 +9157,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "Vezi lista cu Display disponibile si extemsiile Interfata user" #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Vezi lista cu Display disponibile si extemsiile Interfata user" #, fuzzy @@ -11580,9 +11616,6 @@ msgstr "" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -11779,6 +11812,10 @@ msgstr "meniu" msgid "mins" msgstr "min" +#, fuzzy +msgid "module disabled" +msgstr "dezactivat" + msgid "month" msgstr "luna" @@ -12237,10 +12274,10 @@ msgstr "" msgid "until standby/restart" msgstr "" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -12253,6 +12290,9 @@ msgstr "user definit" msgid "variety show" msgstr "" +msgid "version" +msgstr "versiune" + msgid "vertical" msgstr "vertical" diff --git a/po/ru.po b/po/ru.po index d50f43cc094..2e152253ca1 100644 --- a/po/ru.po +++ b/po/ru.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:47+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2021-05-24 17:48+0300\n" "Last-Translator: Dimitrij \n" "Language-Team: openPLi Dimitrij\n" @@ -1191,6 +1191,9 @@ msgstr "Автоматически создавать закладки" msgid "Automatic scan" msgstr "Автоматическое сканирование" +msgid "Automatically power off box to deep standby mode." +msgstr "Автоматическое выключение ресивера в глубокий режим ожидания." + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Автоматически переводите ТВ в режим ожидания, когда ресивер переходит в режим ожидания или глубокий режим ожидания." @@ -1453,6 +1456,9 @@ msgstr "Настройка CI (Common Interface) модулей" msgid "CI assignment" msgstr "Присвоение CI" +msgid "CI enabled" +msgstr "CI включен" + msgid "CI slot: " msgstr "Слот CI: " @@ -1732,6 +1738,9 @@ msgstr "Выберите, следует ли перекодировать зв msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Выберите, следует ли микшировать звуковые дорожки WMA Pro." +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Выберите, следует ли микшировать или транскодировать многоканальные звуковые дорожки DTS-HD(HR/MA)." + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Выберите, следует ли микшировать многоканальные звуковые дорожки AAC+ в стерео." @@ -2443,8 +2452,8 @@ msgstr "DTS" msgid "DTS downmix" msgstr "Микширование DTS" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" +msgstr "Микширование DTS-HD(HR/MA)" msgid "DUAL LAYER DVD" msgstr "DUAL LAYER (двойной слой) DVD" @@ -3201,6 +3210,9 @@ msgstr "Включение или отключение использовани msgid "Enable parental protection" msgstr "Включить родительский контроль" +msgid "Enable power off timer" +msgstr "Активировать таймер выключения" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Разрешить удаленный ресивер на enigma2, который попытается запустить стрим этого сервиса, если локальный тюнер занят.Укажите полный URL, включая http:// и номер порта (обычно ...:8001), пример: http://айпи_удаленного_ресивера:8001." @@ -3795,9 +3807,15 @@ msgstr "Выполнение процесса начнется после тог msgid "Force legacy signal stats" msgstr "Статистика уровня snr/db из E2(если поддерживается)" +msgid "Force power off (even when not in standby)" +msgstr "Принудительное выключение (даже если не в режиме ожидания)" + msgid "Force zap to recording service in standby" msgstr "Принудительно переключать на канал записи в режиме ожидания" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "Принудительно переходить в глубокий режим ожидания, даже если ресивер не находится в режиме ожидания (просмотр ТВ). Запланированные записи остаются в силе." + msgid "Format" msgstr "Формат" @@ -4140,6 +4158,9 @@ msgstr "Жесткий диск" msgid "Harddisk Setup" msgstr "Настройки жестокого диска" +msgid "Hardware Accelerated" +msgstr "Аппаратные средства" + msgid "Hardware: " msgstr "Аппаратные средства: " @@ -4317,6 +4338,9 @@ msgstr "Если установлено значение 'да', значени msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Если установлено 'да', то для событий режима глубокого ожидания на ТВ будут отправляться те же команды, что и во время обычных событий для режима ожидания." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "Если ресивер должен перейти в глубокий режим ожидания, например в понедельник вечером в час ночи, а на самом деле уже вторник. Чтобы сделать это в любом случае, здесь можно указать другое время начала следующего дня." + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "При использовании нескольких uncommitted переключателей, команды DiSEqC необходимо отправлять несколько раз. Установите количество uncommitted переключателей в цепочке, минус один." @@ -5035,12 +5059,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Медиаплеер" -msgid "Media player: GStreamer, version " -msgstr "Медиаплеер: GStreamer, версия " - -msgid "Media player: ffmpeg, version " -msgstr "Медиаплеер: ffmpeg, версия " - msgid "Media scanner" msgstr "Медиа сканнер" @@ -5418,6 +5436,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Далее" +msgid "Next day starts at" +msgstr "Следующий день начинается в" + msgid "Nicaragua" msgstr "Nicaragua" @@ -5732,6 +5753,9 @@ msgstr "Быстрое перемещение тарелки только пос msgid "Only on startup" msgstr "Только при старте" +msgid "Only power off" +msgstr "только для выключения" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Выберите 'да', тоьлко если вы используете мультисвич, для которого требуется командный сигнал DiSEqC Port-A. Для всех других установок выберите 'нет'." @@ -5756,7 +5780,7 @@ msgstr "Состояние LED в режиме глубокого ожидани msgid "Operating LED status in standby mode" msgstr "Состояние LED в режиме ожидания" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "Состояние LED в режиме работы" msgid "Opkg" @@ -6294,6 +6318,12 @@ msgstr "LED питания" msgid "Power management. Consult your receiver's manual for more information." msgstr "Управление питанием. Для получения дополнительной информации обратитесь к инструкции." +msgid "Power off time" +msgstr "Время таймера выключения" + +msgid "Power off timer" +msgstr "Таймер выключения" + msgid "Power on display" msgstr "Питание на дисплее" @@ -7727,6 +7757,9 @@ msgstr "Сканирование сервисов" msgid "Service title mode" msgstr "Режим названия сервиса" +msgid "Service type 4097 incorrect for PiP!" +msgstr "Тип сервиса 4097 не подходит для PiP!" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8771,7 +8804,7 @@ msgstr "Включить дисплей в режиме ожидания" msgid "Switch on the display during Suspend Mode" msgstr "Включить дисплей в режиме глубокого ожидания" -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Включить дисплей во время работы" msgid "Switch to Android" @@ -8857,7 +8890,7 @@ msgstr "TEXT" #. TRANSLATORS: Add here whatever should be shown in the "translator" about screen, up to 6 lines (use \n for newline) msgid "TRANSLATOR_INFO" -msgstr "Dmitrij - 27.2.2022" +msgstr "Dmitrij - 07.06.2022" msgid "TS file is too large for ISO9660 level 1!" msgstr "TS файл слишком большой для ISO9660 level 1!" @@ -11225,9 +11258,6 @@ msgstr "экспериментальный фильм/видео" msgid "extra wide" msgstr "экстра широкий" -msgid "extrawide" -msgstr "экстра широкий" - msgid "failed" msgstr "неудачно" @@ -11417,6 +11447,9 @@ msgstr "меню" msgid "mins" msgstr "мин" +msgid "module disabled" +msgstr "модуль отключен" + msgid "month" msgstr "месяц" @@ -11865,12 +11898,12 @@ msgstr "непроверяема" msgid "until standby/restart" msgstr "до режима ожидания/перезагрузки" +msgid "use HDMI cacenter" +msgstr "использовать HDMI cacenter" + msgid "use best / controlled by HDMI" msgstr "использовать контроль по HDMI" -msgid "use_hdmi_cacenter" -msgstr "использовать HDMI cacenter" - msgid "user defined" msgstr "пользовательский вариант" @@ -11880,6 +11913,9 @@ msgstr "скрыть пользовательский вариант" msgid "variety show" msgstr "шоу варьете" +msgid "version" +msgstr "версия" + msgid "vertical" msgstr "вертикальная" diff --git a/po/sk.po b/po/sk.po index abba354b716..c0c5a63819e 100644 --- a/po/sk.po +++ b/po/sk.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" -"PO-Revision-Date: 2022-04-05 10:41+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" +"PO-Revision-Date: 2022-08-03 13:01+0200\n" "Last-Translator: Andrej Tobola \n" "Language-Team: \n" "Language: sk\n" @@ -606,23 +606,20 @@ msgstr "Nastavenie A/V" msgid "AAC downmix" msgstr "AAC downmix" -#, fuzzy msgid "AAC transcoding" -msgstr "Transkódovanie: " +msgstr "Prekódovanie AAC" -#, fuzzy msgid "AAC+ downmix" -msgstr "AAC downmix" +msgstr "Downmix AAC+" msgid "AC3" -msgstr "" +msgstr "AC3" msgid "AC3 downmix" msgstr "AC3 downmix" -#, fuzzy msgid "AC3 transcoding" -msgstr "Transkódovanie: " +msgstr "Prekódovanie AC3" msgid "ACQUIRING TSID/ONID" msgstr "ZÍSKANIE TSID / ONID" @@ -984,7 +981,7 @@ msgid "Are you sure to remove this entry?" msgstr "Naozaj chcete odstrániť túto položku?" msgid "Are you sure to restore all deleted images" -msgstr "Naozaj chcete obnoviť všetky zmazané položky?" +msgstr "Naozaj chcete obnoviť všetky zmazané položky" msgid "" "Are you sure you want to activate this network configuration?\n" @@ -1194,6 +1191,9 @@ msgstr "Automatické vyhľadávanie" msgid "Automatic scan" msgstr "Automatické vyhľadávanie" +msgid "Automatically power off box to deep standby mode." +msgstr "Automatické vypnutie prijímača." + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Automaticky prepnúť TV do pohotovostného režimu vždy, keď sa prepne satelitný prijímač do pohotovostného režimu alebo úplne vypne." @@ -1456,6 +1456,9 @@ msgstr "Nastavenie CI (Common Interface) modulu" msgid "CI assignment" msgstr "Priradenie CI" +msgid "CI enabled" +msgstr "CI povolené" + msgid "CI slot: " msgstr "CI slot: " @@ -1726,21 +1729,20 @@ msgstr "Zvoľte tuner" msgid "Choose bouquet" msgstr "Zvoľte prehľad" -#, fuzzy msgid "Choose whether AAC sound tracks should be transcoded." -msgstr "Vyberte, či sa má multi kanálový zvuk zmiešavať do sterea (downmix)." +msgstr "Vyberte, či sa majú prekódovať zvukové stopy AAC." -#, fuzzy msgid "Choose whether AC3 sound tracks should be transcoded." -msgstr "Vyberte, či sa má multi kanálový zvuk zmiešavať do sterea (downmix)." +msgstr "Vyberte, či sa majú zvukové stopy AC3 prekódovať." -#, fuzzy msgid "Choose whether WMA Pro sound tracks should be downmixed." -msgstr "Vyberte, či sa má multi kanálový zvuk zmiešavať do sterea (downmix)." +msgstr "Vyberte, či sa majú zvukové stopy WMA Pro zmixovať." + +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Vyberte, či sa majú viackanálové zvukové stopy DTS-HD (HR/MA) zmixovať alebo prekódovať." -#, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." -msgstr "Vyberte, či sa má multi kanálový zvuk zmiešavať do sterea (downmix)." +msgstr "Vyberte, či sa majú viackanálové zvukové stopy aac+ zmixovať do sterea." msgid "Choose whether to scan a single transponder, one satellite or multiple satellites." msgstr "Vyberte, či chcete skenovať jeden transpondér, jeden satelit alebo viacero satelitov." @@ -2432,9 +2434,8 @@ msgstr "Čeština" msgid "D" msgstr "D" -#, fuzzy msgid "DAC" -msgstr "PDC" +msgstr "DAC" msgid "DHCP" msgstr "DHCP" @@ -2446,13 +2447,13 @@ msgid "DMM normal" msgstr "Normálne DMM" msgid "DTS" -msgstr "" +msgstr "DTS" msgid "DTS downmix" msgstr "DTS downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +msgid "DTS-HD(HR/MA) downmix" +msgstr "Downmix DTS-HD(HR/MA)." msgid "DUAL LAYER DVD" msgstr "DVOJVRSTVOVÉ DVD" @@ -2533,7 +2534,7 @@ msgid "Default+Picon" msgstr "< Predvolené + Picon >" msgid "Define additional delay in milliseconds before start of http(s) streams, e.g. to connect a remote tuner, you use a complex system of DiSEqC." -msgstr "" +msgstr "Definovať dodatočné oneskorenie v milisekundách pred spustením http(s) streamov, napr. na pripojenie vzdialeného tunera používate komplexný systém DiSEqC." msgid "Define the location of the EPG Cache file." msgstr "Definícia umiestnenia dočasného súboru EPG." @@ -2751,9 +2752,8 @@ msgstr "Adresár obsahuje %(file)s a %(subdir)s." msgid "Disable" msgstr "Zakázať" -#, fuzzy msgid "Disable FCC during recordings" -msgstr "Vždy zahrnúť ECM do nahrávok" +msgstr "Počas nahrávania vypnúť FCC" msgid "Disable Picture in Picture" msgstr "Vypnúť obraz v obraze" @@ -3012,9 +3012,8 @@ msgstr "Pokúšam sa stiahnuť nový zoznam balíčkov. Prosím čakajte..." msgid "Downloading plugin information. Please wait..." msgstr "Sťahujem informácie o doplnkoch. Prosím čakajte..." -#, fuzzy msgid "Downmix" -msgstr "DTS downmix" +msgstr "Downmix" msgid "Drama and Films" msgstr "Dráma a filmy" @@ -3059,9 +3058,9 @@ msgstr "EPG:" msgid "ERROR - failed to scan (%s)!" msgstr "CHYBA - zlyhalo vyhľadávanie (%s)!" -#, fuzzy, python-format +#, python-format msgid "ERROR downloading file %s/%s" -msgstr "CHYBA sťahovania súboru /etc/enigma2/%s" +msgstr "CHYBA sťahovania súboru %s/%s" msgid "East" msgstr "Východne" @@ -3178,9 +3177,8 @@ msgstr "Povoliť automatický FastScan" msgid "Enable auto fastscan for %s" msgstr "Povoliť automatický FastScan pre %s" -#, fuzzy msgid "Enable bluetooth audio" -msgstr "Povoliť úpravu prehľadu" +msgstr "Povoliť zvuk bluetooth" msgid "Enable bouquet edit" msgstr "Povoliť úpravu prehľadu" @@ -3212,6 +3210,9 @@ msgstr "Povoliť alebo zakázať používanie HDMI-CEC." msgid "Enable parental protection" msgstr "Zapnúť rodičovskú ochranu" +msgid "Enable power off timer" +msgstr "Povoliť časovač vypnutia" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Povolenie vzdialenému Enigma2 prijímaču pokúsiť sa naladiť stanice, ktoré nie je možné naladiť lokálne (napr. tuner je zaneprázdnený alebo typ stanice nie je k dispozícii). Zadajte úplnú adresu URL, vrátane http:// a číslo portu (obvykle ...: 8001 ), napríklad http://druhy_box: 8001." @@ -3606,13 +3607,11 @@ msgstr "" "Automatický FBC\n" "neaktívny" -#, fuzzy msgid "FCC enabled" -msgstr "zapnuté" +msgstr "FCC povolené" -#, fuzzy msgid "FCCSetup" -msgstr "Nastavenie" +msgstr "Nastavenie FCC" msgid "FEC" msgstr "Korekcia chybovosti (FEC)" @@ -3708,13 +3707,13 @@ msgid "Fast" msgstr "Rýchlo" msgid "Fast Channel Change" -msgstr "" +msgstr "Rýchla zmena kanála" msgid "Fast Channel Change Setup" -msgstr "" +msgstr "Nastavenie rýchlej zmeny kanálov (FCC)" msgid "Fast Channel Change setup" -msgstr "" +msgstr "Nastavenie rýchlej zmeny kanálov" msgid "Fast DiSEqC" msgstr "Rýchly DiSEqC" @@ -3808,9 +3807,15 @@ msgstr "Po stlačení OK sa vykonajú nasledujúce úlohy!" msgid "Force legacy signal stats" msgstr "Vynútiť zastaralú štatistiku signálu" +msgid "Force power off (even when not in standby)" +msgstr "Vynútiť vypnutie (aj keď nie je v pohotovostnom režime)" + msgid "Force zap to recording service in standby" msgstr "Vynútiť zapnutie pre nahrávanie v pohotovostnom režime" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "Vynúti vypnutie prijímača, aj keď nie je v pohotovostnom režime. Naplánované nahrávania zostávajú nedotknuté." + msgid "Format" msgstr "Formát" @@ -3928,9 +3933,8 @@ msgstr "Oneskorenie AC3" msgid "General PCM delay" msgstr "Oneskorenie PCM" -#, fuzzy msgid "General bluetooth audio delay" -msgstr "Oneskorenie AC3" +msgstr "Všeobecné oneskorenie zvuku bluetooth" msgid "Genre" msgstr "Žáner" @@ -4092,7 +4096,7 @@ msgid "HD60/HD66SE/Multibox/Multibox SE" msgstr "HD60/HD66SE/Multibox/Multibox SE" msgid "HDMI" -msgstr "" +msgstr "HDMI" msgid "HDMI Colordepth" msgstr "Farebná hĺbka HDMI" @@ -4154,6 +4158,9 @@ msgstr "Pevný disk" msgid "Harddisk Setup" msgstr "Nastavenie pevného disku" +msgid "Hardware Accelerated" +msgstr "Hardvérovo urýchlené" + msgid "Hardware: " msgstr "Hardvér: " @@ -4199,9 +4206,8 @@ msgstr "Info o hierarchii" msgid "High bitrate support" msgstr "Podpora veľkého toku dát" -#, fuzzy msgid "History Prev/Next" -msgstr "Ďalej v histórii" +msgstr "História Predch./Nasled." msgid "History back" msgstr "Späť v histórii" @@ -4258,7 +4264,7 @@ msgid "How many minutes do you want to record?" msgstr "Koľko minút chcete nahrávať?" msgid "Http(s) stream start delay" -msgstr "" +msgstr "Oneskorenie spustenia streamu HTTP(S)" msgid "Hue" msgstr "Odtieň" @@ -4332,6 +4338,9 @@ msgstr "Ak je nastavené na 'áno' , hodnoty signálu (SNR, atď) budú vypočí msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Ak je nastavené na 'Áno', rovnaký príkaz bude odoslaný do TV aj v režime udalostí hlbokého spánku, aký je zasielaný i počas regulérnych udalostí pohotovostného režimu." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "Ak má prijímač prejsť do vypnutého režimu, napr. pondelok v noci o 01:00, v skutočnosti je už utorok. Aby ste to predsa len povolili, môžete tu zadať iný čas začiatku nasledujúceho dňa." + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Ak používate viacero uncommitted prepínačov, DiSEqC príkazy musia byť poslané niekoľko krát. Nastavte preto počet zreťazených uncommitted prepínačov mínus jedna." @@ -5032,9 +5041,8 @@ msgstr "Mauretánia" msgid "Mauritius" msgstr "Maurícius" -#, fuzzy msgid "Max channels" -msgstr "Kanály" +msgstr "Max. počet kanálov" msgid "Max memory positions" msgstr "Max. počet pozícií v pamäti" @@ -5051,12 +5059,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Prehrávač médií" -msgid "Media player: GStreamer, version " -msgstr "Media player: GStreamer, verzia " - -msgid "Media player: ffmpeg, version " -msgstr "Media player: ffmpeg, verzia " - msgid "Media scanner" msgstr "Prehľadávač médií" @@ -5428,11 +5430,14 @@ msgstr "Správy/Aktuálne udalosti/Sociálne" msgctxt "button label, 'next screen'" msgid "Next" -msgstr "Ďalšia" +msgstr "Ďalej" msgctxt "now/next: 'next' event label" msgid "Next" -msgstr "Nasleduje" +msgstr "Ďalšia" + +msgid "Next day starts at" +msgstr "Ďalší deň začína o" msgid "Nicaragua" msgstr "Nikaragua" @@ -5746,6 +5751,9 @@ msgstr "Pred touto hodinou iba rýchlo presunúť parabolu." msgid "Only on startup" msgstr "Iba pri spustení" +msgid "Only power off" +msgstr "Iba vypnúť" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Vyberte 'áno' iba v prípade, ak používate multiprepínač ktorý vyžaduje signálny príkaz pre DiSEqC Port-A. Pre všetky ostatné nastavenia vyberte 'nie'." @@ -5765,13 +5773,13 @@ msgid "Open the movie list" msgstr "Otvoriť zoznam filmov" msgid "Operating LED status in deep standby mode" -msgstr "LED stav v režime hlbokého spánku" +msgstr "Stav LED v režime hlbokého spánku" msgid "Operating LED status in standby mode" -msgstr "LED stav v pohotovostnom režime" +msgstr "Stav LED v pohotovostnom režime" -msgid "Operating LED status while running." -msgstr "LED stav v prevádzkovom režime" +msgid "Operating LED status while running" +msgstr "Stav LED v prevádzke" msgid "Opkg" msgstr "Opkg" @@ -5898,7 +5906,7 @@ msgid "Parental control setup" msgstr "Nastavenie rodičovskej kontroly" msgid "Passthrough" -msgstr "" +msgstr "Bez zmeny" msgid "Password" msgstr "Heslo" @@ -6308,6 +6316,12 @@ msgstr "LED napájania" msgid "Power management. Consult your receiver's manual for more information." msgstr "Správa napájania. Pre viac informácií si preštudujte návod k prijímaču." +msgid "Power off time" +msgstr "Čas vypnutia" + +msgid "Power off timer" +msgstr "Časovač vypnutia" + msgid "Power on display" msgstr "Zapnúť obrazovku" @@ -6642,7 +6656,7 @@ msgid "Recall to previous service" msgstr "Návrat na predchádzajúcu stanicu" msgid "Receiver or driver does not support FCC" -msgstr "" +msgstr "Prijímač alebo ovládač nepodporuje FCC" msgid "Reception settings" msgstr "Nastavenie príjmu" @@ -7057,7 +7071,7 @@ msgid "SNR:" msgstr "SNR:" msgid "SPDIF" -msgstr "" +msgstr "SPDIF" msgid "SRT file" msgstr "SRT file" @@ -7741,6 +7755,9 @@ msgstr "Vyhľadávanie staníc" msgid "Service title mode" msgstr "Režim názvu služby" +msgid "Service type 4097 incorrect for PiP!" +msgstr "Typ služby 4097 je pre PiP nesprávny!" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8785,8 +8802,8 @@ msgstr "Zapnúť displej v pohotovostnom režime" msgid "Switch on the display during Suspend Mode" msgstr "Zapnúť displej v pozastavenom režime" -msgid "Switch on the display during operation." -msgstr "Zapnúť displej počas prevádzky." +msgid "Switch on the display during operation" +msgstr "Počas prevádzky zapnúť displej" msgid "Switch to Android" msgstr "Prepnúť na Android" @@ -8872,7 +8889,7 @@ msgstr "TEXT" #. TRANSLATORS: Add here whatever should be shown in the "translator" about screen, up to 6 lines (use \n for newline) msgid "TRANSLATOR_INFO" msgstr "" -"Autori: Andrej 2021 - 2017 \n" +"Autori: Andrej 2017 - 2022 \n" " Nicker 2016 \n" " Janda 2015" @@ -9245,9 +9262,8 @@ msgstr "Táto voľba umožňuje zobraziť čísla rýchlych volieb menu a/alebo msgid "This option allows you to show the full screen path leading to the current screen." msgstr "Táto voľba umožní zobraziť celú cestu vedúcu k aktuálnej obrazovke." -#, fuzzy msgid "This option allows you to switch audio to bluetooth speakers." -msgstr "Táto voľba umožňuje nastaviť úroveň hlasitosti zvuku." +msgstr "Táto možnosť vám umožňuje prepnúť zvuk na reproduktory Bluetooth." msgid "This option allows you to view the old and new settings side by side." msgstr "Táto voľba umožňuje zobraziť staré a nové nastavenia bok po boku." @@ -9255,9 +9271,8 @@ msgstr "Táto voľba umožňuje zobraziť staré a nové nastavenia bok po boku. msgid "This option can be useful for long HDMI cables." msgstr "Táto voľba môže byť vhodná pre dlhé HDMI káble." -#, fuzzy msgid "This option configures the general audio delay for bluetooth speakers." -msgstr "Konfigurácia celkového oneskorenia stereo zvukových stôp." +msgstr "Táto možnosť nakonfiguruje všeobecné oneskorenie zvuku pre reproduktory bluetooth." msgid "This option set the level of surpression of mosquito noise (Mosquito Noise is random aliasing as a result of strong compression). Obviously this goes at the cost of picture details." msgstr "Táto voľba nastavuje potlačenie komárieho šumu (komárí šum je náhodné vzorkovanie spôsobené silnou kompresiou). Voľba má vplyv na kvalitu obrazových detailov." @@ -10189,9 +10204,8 @@ msgstr "Z" msgid "WLAN connection" msgstr "Pripojenie WLAN" -#, fuzzy msgid "WMA Pro downmix" -msgstr "AAC downmix" +msgstr "WMA Pro downmix" msgid "WSS on 4:3" msgstr "WSS pri 4:3" @@ -10871,9 +10885,8 @@ msgstr "Zambia" msgid "Zap" msgstr "Prepnúť" -#, fuzzy msgid "Zap Up/Down" -msgstr "Prepnúť dozadu" +msgstr "Zapnúť Nahor/Nadol" msgid "Zap back to previously tuned service?" msgstr "Prepnúť späť na predtým naladenú stanicu?" @@ -11116,14 +11129,13 @@ msgid "controlled by HDMI" msgstr "ovládané cez HDMI" msgid "convert to AC3" -msgstr "" +msgstr "previesť na AC3" msgid "convert to DTS" -msgstr "" +msgstr "previesť na DTS" -#, fuzzy msgid "convert to multi-channel PCM" -msgstr "Multikanál PCM" +msgstr "previesť na viackanálový PCM" msgid "cooking" msgstr "varenie" @@ -11248,10 +11260,6 @@ msgstr "experimentálny film/video" msgid "extra wide" msgstr "extra široký" -#, fuzzy -msgid "extrawide" -msgstr "extra široký" - msgid "failed" msgstr "zlyhalo" @@ -11441,6 +11449,9 @@ msgstr "menu" msgid "mins" msgstr "min" +msgid "module disabled" +msgstr "modul vypnutý" + msgid "month" msgstr "mesiac" @@ -11615,9 +11626,8 @@ msgstr "program pre predškolské deti" msgid "preserve bookmarks in cuts" msgstr "zachovať záložky v upravených" -#, fuzzy msgid "priority" -msgstr "Priorita" +msgstr "priorita" msgid "receiver software because updates are available." msgstr "softvér prijímača, nakoľko sú dostupné aktualizácie." @@ -11890,12 +11900,11 @@ msgstr "neskúšateľné" msgid "until standby/restart" msgstr "do vypnutia alebo reštartu" -#, fuzzy -msgid "use best / controlled by HDMI" -msgstr "ovládané cez HDMI" +msgid "use HDMI cacenter" +msgstr "použiť HDMI cacenter" -msgid "use_hdmi_cacenter" -msgstr "" +msgid "use best / controlled by HDMI" +msgstr "použite najlepšie / ovládané cez HDMI" msgid "user defined" msgstr "užívateľsky definované" @@ -11906,6 +11915,9 @@ msgstr "užívateľsky definované skryté" msgid "variety show" msgstr "varieté" +msgid "version" +msgstr "verzia" + msgid "vertical" msgstr "vertikálna" diff --git a/po/sl.po b/po/sl.po index f60664c90f7..7309eef1f0e 100644 --- a/po/sl.po +++ b/po/sl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Project Slovenia\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2020-05-16 18:48+0200\n" "Last-Translator: Taykun345 \n" "Language-Team: Satnigmo \n" @@ -1385,6 +1385,9 @@ msgstr "Samodejno iskanje " msgid "Automatic scan" msgstr "Samodejno iskanje " +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1695,6 +1698,11 @@ msgstr "CI vmesnik" msgid "CI assignment" msgstr "CI dodelitev" +# +#, fuzzy +msgid "CI enabled" +msgstr "vključeno" + msgid "CI slot: " msgstr "" @@ -1995,6 +2003,10 @@ msgstr "Nastavitev omogoča pretvorbo večkanalnega zvoka v stereo zvok. Priporo msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Nastavitev omogoča pretvorbo večkanalnega zvoka v stereo zvok. Priporočena nastavitev je \"Da\", sicer se lahko zgodi, da pri nekaterih TV kanalih zvok ne bo deloval." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Nastavitev omogoča pretvorbo večkanalnega zvoka v stereo zvok. Priporočena nastavitev je \"Da\", sicer se lahko zgodi, da pri nekaterih TV kanalih zvok ne bo deloval." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Nastavitev omogoča pretvorbo večkanalnega zvoka v stereo zvok. Priporočena nastavitev je \"Da\", sicer se lahko zgodi, da pri nekaterih TV kanalih zvok ne bo deloval." @@ -2809,8 +2821,9 @@ msgstr "" msgid "DTS downmix" msgstr "Pretvorba DTS zvoka v stereo" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "Pretvorba DTS zvoka v stereo" # msgid "DUAL LAYER DVD" @@ -3744,6 +3757,11 @@ msgstr "EIT EPG sistem" msgid "Enable parental protection" msgstr "Vklop starševskega nadzora" +# +#, fuzzy +msgid "Enable power off timer" +msgstr "Premik kanalov znotraj paketa" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Omogoči možnost, da se oddaljeni/rezervni enigma2 sprejemnik uporabi za gledanje kanalov, ki niso na voljo na primarnem sprejemniku ali pa je kanalnik zaseden s sprejemom nekega drugega kanala. Določite celoten naslov - EUR, vključno s \"http: //\". in številko vrat (običajno ...:8001 ), na primer http: // rezervni_sprejemnik:8001." @@ -4413,9 +4431,15 @@ msgstr "Sledeče naloge bodo opravljene, ko pritisnete OK!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Formatiraj" @@ -4818,6 +4842,10 @@ msgstr "Trdi disk" msgid "Harddisk Setup" msgstr "Trdi disk" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Sprejemnik: " + msgid "Hardware: " msgstr "Sprejemnik: " @@ -5017,6 +5045,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5858,13 +5889,6 @@ msgstr "" msgid "Media player" msgstr "Predvajalnik vsebin" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Verzija jedra: " - -msgid "Media player: ffmpeg, version " -msgstr "" - # msgid "Media scanner" msgstr "Iskalnik datotek" @@ -6317,6 +6341,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Potem" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -6686,6 +6713,11 @@ msgstr "" msgid "Only on startup" msgstr "" +# +#, fuzzy +msgid "Only power off" +msgstr "Premik kanalov znotraj paketa" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -6712,7 +6744,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -7362,6 +7394,14 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +# +#, fuzzy +msgid "Power off time" +msgstr "Čas urejanja" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -9081,6 +9121,9 @@ msgstr "Iskanje kanalov" msgid "Service title mode" msgstr "Način naslova kanala" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + # msgid "" "Service unavailable!\n" @@ -10326,7 +10369,7 @@ msgstr "Ogled seznama obstoječih Display in UserInterface vtičnikov." # #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Ogled seznama obstoječih Display in UserInterface vtičnikov." #, fuzzy @@ -13084,9 +13127,6 @@ msgstr "" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -13317,6 +13357,11 @@ msgstr "meni" msgid "mins" msgstr "mins" +# +#, fuzzy +msgid "module disabled" +msgstr "onemogočeno" + # msgid "month" msgstr "mesec" @@ -13843,10 +13888,10 @@ msgstr "" msgid "until standby/restart" msgstr "do stanja pripravljenosti/resetiranja" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" # @@ -13861,6 +13906,9 @@ msgstr "uporabniško določeno" msgid "variety show" msgstr "" +msgid "version" +msgstr "verzija" + # msgid "vertical" msgstr "Vertikalna" diff --git a/po/sr.po b/po/sr.po index 78e0bd83e27..f1d6485aca3 100644 --- a/po/sr.po +++ b/po/sr.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2011-04-14 00:02+0200\n" "Last-Translator: majevica \n" "Language-Team: veselin & majevica CRNABERZA \n" @@ -1377,6 +1377,9 @@ msgstr "Automatsko skeniranje " msgid "Automatic scan" msgstr "Automatsko skeniranje " +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1684,6 +1687,11 @@ msgstr "" msgid "CI assignment" msgstr "CI dodela" +# +#, fuzzy +msgid "CI enabled" +msgstr "omogućeno" + msgid "CI slot: " msgstr "" @@ -1986,6 +1994,9 @@ msgstr "" msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "" +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "" + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "" @@ -2821,7 +2832,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" # @@ -3739,6 +3750,11 @@ msgstr "" msgid "Enable parental protection" msgstr "" +# +#, fuzzy +msgid "Enable power off timer" +msgstr "Uključi mod za premeštanje" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -4406,9 +4422,15 @@ msgstr "Sledeći zadaci će biti urađeni kad pritisnete OK!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Formatiranje" @@ -4819,6 +4841,9 @@ msgstr "Hard disk" msgid "Harddisk Setup" msgstr "" +msgid "Hardware Accelerated" +msgstr "" + msgid "Hardware: " msgstr "" @@ -5015,6 +5040,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5880,14 +5908,6 @@ msgstr "" msgid "Media player" msgstr "Medija plejer" -# -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Nova verzija:" - -msgid "Media player: ffmpeg, version " -msgstr "" - # #, fuzzy msgid "Media scanner" @@ -6351,6 +6371,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -6726,6 +6749,11 @@ msgstr "" msgid "Only on startup" msgstr "" +# +#, fuzzy +msgid "Only power off" +msgstr "Uključi mod za premeštanje" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -6754,7 +6782,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -7418,6 +7446,14 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +# +#, fuzzy +msgid "Power off time" +msgstr "Vreme sortiranja" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -9126,6 +9162,9 @@ msgstr "Skeniranje kanala" msgid "Service title mode" msgstr "Izaberi video mod" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + # msgid "" "Service unavailable!\n" @@ -10379,7 +10418,7 @@ msgstr "Vidi listu mogućih proširenja za displej i korisnički interfejs" # #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Vidi listu mogućih proširenja za displej i korisnički interfejs" # @@ -13132,9 +13171,6 @@ msgstr "" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -13366,6 +13402,11 @@ msgstr "meni" msgid "mins" msgstr "mins" +# +#, fuzzy +msgid "module disabled" +msgstr "onemogućeno" + # msgid "month" msgstr "Mesec" @@ -13888,10 +13929,10 @@ msgstr "" msgid "until standby/restart" msgstr "do spreman/restart" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" # @@ -13906,6 +13947,10 @@ msgstr "korisnički definisano" msgid "variety show" msgstr "" +# +msgid "version" +msgstr "verzija" + # msgid "vertical" msgstr "vertikalno" diff --git a/po/sv.po b/po/sv.po index b97077a14b6..f42e3a573cd 100644 --- a/po/sv.po +++ b/po/sv.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2017-03-05 13:24+0100\n" "Last-Translator: Magnus Nilsson \n" "Language-Team: \n" @@ -1334,6 +1334,9 @@ msgstr "Automatisk Sökning" msgid "Automatic scan" msgstr "Automatisk sökning" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1638,6 +1641,11 @@ msgstr "CI (Common Interface) inställning" msgid "CI assignment" msgstr "CI tilldelning" +# +#, fuzzy +msgid "CI enabled" +msgstr "aktiverad" + msgid "CI slot: " msgstr "CI plats :" @@ -1939,6 +1947,10 @@ msgstr "Konfigurera om flerkanals ljudspår ska mixas ned till stereo." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Konfigurera om flerkanals ljudspår ska mixas ned till stereo." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Konfigurera om flerkanals ljudspår ska mixas ned till stereo." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Konfigurera om flerkanals ljudspår ska mixas ned till stereo." @@ -2748,8 +2760,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS nedmixning" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS nedmixning" # msgid "DUAL LAYER DVD" @@ -3645,6 +3658,10 @@ msgstr "Aktivera EIT EPG" msgid "Enable parental protection" msgstr "Aktivera föräldrakontroll" +#, fuzzy +msgid "Enable power off timer" +msgstr "Aktivera uppväckningstimer" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Aktivera fjärrmottagare för att försöka ställa in kanaler som inte kan ställas in lokalt (t.ex. att tuner är upptagen eller kanalen inte är tillgänglig på den lokala tunern). Ange den fullständiga webbadressen inklusive http://och portnummer (vanligtvis ...:8001), till exempel http://andra boxen:8001." @@ -4307,9 +4324,15 @@ msgstr "Följande saker kommer utföras efter du tryckt på OK!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + # msgid "Format" msgstr "Format" @@ -4707,6 +4730,10 @@ msgstr "Hårddisk" msgid "Harddisk Setup" msgstr "Hårddiskinställningar" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Hårdvara :" + msgid "Hardware: " msgstr "Hårdvara :" @@ -4901,6 +4928,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5729,13 +5759,6 @@ msgstr "" msgid "Media player" msgstr "Mediaspelare" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Kernel Version : " - -msgid "Media player: ffmpeg, version " -msgstr "" - # msgid "Media scanner" msgstr "Mediaspelare" @@ -6183,6 +6206,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Nästa" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -6545,6 +6571,10 @@ msgstr "" msgid "Only on startup" msgstr "Endast vid uppstart" +#, fuzzy +msgid "Only power off" +msgstr "Aktivera uppväckningstimer" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -6571,7 +6601,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -7211,6 +7241,14 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +# +#, fuzzy +msgid "Power off time" +msgstr "Sortera tid" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Ta bort alla loggfiler" @@ -8873,6 +8911,9 @@ msgstr "Kanalsökning" msgid "Service title mode" msgstr "Kanalens titelläge" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -10071,7 +10112,7 @@ msgstr "Visa lista över tillgängliga Display och Användargränssnittutökning # #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Visa lista över tillgängliga Display och Användargränssnittutökningar." #, fuzzy @@ -12872,9 +12913,6 @@ msgstr "experimentell film / video" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "misslyckades" @@ -13105,6 +13143,11 @@ msgstr "meny" msgid "mins" msgstr "min" +# +#, fuzzy +msgid "module disabled" +msgstr "avaktiverad" + # msgid "month" msgstr "månad" @@ -13635,10 +13678,10 @@ msgstr "omöjlig att testa" msgid "until standby/restart" msgstr "tills viloläge / omstart" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" # @@ -13653,6 +13696,9 @@ msgstr "användardefinierad" msgid "variety show" msgstr "variteuppvisning" +msgid "version" +msgstr "version" + # msgid "vertical" msgstr "vertikal" diff --git a/po/th.po b/po/th.po index 0c999ecb803..824ab633a04 100644 --- a/po/th.po +++ b/po/th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tuxbox-enigma 0.0.1-En-Th\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2010-04-08 18:13+0700\n" "Last-Translator: Tony - Thaidreambox\n" "Language-Team: Tony @ Thai Dreambox \n" @@ -1213,6 +1213,9 @@ msgstr "ค้นหาอัตโนมัติ" msgid "Automatic scan" msgstr "ค้นหาอัตโนมัติ" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1484,6 +1487,10 @@ msgstr "" msgid "CI assignment" msgstr "CI assignment" +#, fuzzy +msgid "CI enabled" +msgstr "ใช้งานแล้ว" + msgid "CI slot: " msgstr "" @@ -1759,6 +1766,9 @@ msgstr "" msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "" +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "" + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "" @@ -2509,7 +2519,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" msgid "DUAL LAYER DVD" @@ -3308,6 +3318,10 @@ msgstr "" msgid "Enable parental protection" msgstr "" +#, fuzzy +msgid "Enable power off timer" +msgstr "ทำการเคลื่อนย้าย" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -3906,9 +3920,15 @@ msgstr "" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "ฟอร์แมท" @@ -4275,6 +4295,9 @@ msgstr "ฮาร์ดดิสก์" msgid "Harddisk Setup" msgstr "" +msgid "Hardware Accelerated" +msgstr "" + msgid "Hardware: " msgstr "" @@ -4458,6 +4481,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5219,13 +5245,6 @@ msgstr "" msgid "Media player" msgstr "เล่นไฟล์" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "เวอร์ชั่นใหม่:" - -msgid "Media player: ffmpeg, version " -msgstr "" - #, fuzzy msgid "Media scanner" msgstr "เล่นไฟล์" @@ -5626,6 +5645,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -5955,6 +5977,10 @@ msgstr "" msgid "Only on startup" msgstr "" +#, fuzzy +msgid "Only power off" +msgstr "ทำการเคลื่อนย้าย" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -5981,7 +6007,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6551,6 +6577,13 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +#, fuzzy +msgid "Power off time" +msgstr "จัดเรียงเวลา" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -8050,6 +8083,9 @@ msgstr "ค้นหาบริการ" msgid "Service title mode" msgstr "เลือกโหมดวีดีโอ" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -9164,7 +9200,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "แสดงรายการส่วนเพิ่มเติมสำหรับส่วนติดต่อผู้ใช้" #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "แสดงรายการส่วนเพิ่มเติมสำหรับส่วนติดต่อผู้ใช้" #, fuzzy @@ -11635,9 +11671,6 @@ msgstr "" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -11835,6 +11868,10 @@ msgstr "เมนู" msgid "mins" msgstr "น." +#, fuzzy +msgid "module disabled" +msgstr "ไม่ใช้แล้ว" + msgid "month" msgstr "เดือน" @@ -12293,10 +12330,10 @@ msgstr "" msgid "until standby/restart" msgstr "" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -12309,6 +12346,9 @@ msgstr "ผู้ใช้ระบุ" msgid "variety show" msgstr "" +msgid "version" +msgstr "รุ่น" + msgid "vertical" msgstr "แนวตั้ง (V)" diff --git a/po/tr.po b/po/tr.po index 034f5992466..7ca95385f3d 100644 --- a/po/tr.po +++ b/po/tr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OPENPLi\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2015-12-18 21:05+0200\n" "Last-Translator: Yetkin AYDIN \n" "Language-Team: http://www.hurforum.com \n" @@ -1190,6 +1190,9 @@ msgstr "Otomatik Tarama" msgid "Automatic scan" msgstr "Otomatik Tarama" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1459,6 +1462,10 @@ msgstr "CI (Kart/Modül) Ayarları" msgid "CI assignment" msgstr "CI Ataması" +#, fuzzy +msgid "CI enabled" +msgstr "Etkin" + msgid "CI slot: " msgstr "" @@ -1732,6 +1739,10 @@ msgstr "Çok kanallı ses parçalarını stereo downmix olup olmayacağını yap msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Çok kanallı ses parçalarını stereo downmix olup olmayacağını yapılandırın." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Çok kanallı ses parçalarını stereo downmix olup olmayacağını yapılandırın." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Çok kanallı ses parçalarını stereo downmix olup olmayacağını yapılandırın." @@ -2465,8 +2476,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS downmix" msgid "DUAL LAYER DVD" msgstr "ÇİFT KATMAN DVD" @@ -3257,6 +3269,10 @@ msgstr "EIT EPG Aktif" msgid "Enable parental protection" msgstr "Aile koruması etkin" +#, fuzzy +msgid "Enable power off timer" +msgstr "Açılış saati aktif" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "İkinci uydu alıcısı kontrolünü aktifleştir. Sadece yerel. http://ikinci_cihaz:8001" @@ -3855,9 +3871,15 @@ msgstr "Belirtilen görevler OK'a basmanızın ardından işleme alınacak!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Biçimlendir" @@ -4217,6 +4239,10 @@ msgstr "Sabitdisk" msgid "Harddisk Setup" msgstr "Sabit Disk Kurulumu" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Donanım: " + msgid "Hardware: " msgstr "Donanım: " @@ -4401,6 +4427,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5128,13 +5157,6 @@ msgstr "" msgid "Media player" msgstr "Ortam Oynatıcı" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "Çekirdek sürümü:" - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "Medya Tarama" @@ -5526,6 +5548,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Sonraki" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -5848,6 +5873,10 @@ msgstr "" msgid "Only on startup" msgstr "Yalnız başlangıçta" +#, fuzzy +msgid "Only power off" +msgstr "Açılış saati aktif" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -5872,7 +5901,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6427,6 +6456,13 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +#, fuzzy +msgid "Power off time" +msgstr "Sıralama zamanı" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -7897,6 +7933,9 @@ msgstr "Kanal arama" msgid "Service title mode" msgstr "Kanal başlığı modu" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8974,7 +9013,7 @@ msgid "Switch on the display during Suspend Mode" msgstr "Ekran ve kullanıcı arayüzü eklentilerini listele." #, fuzzy -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "Ekran ve kullanıcı arayüzü eklentilerini listele." #, fuzzy @@ -11483,9 +11522,6 @@ msgstr "Deneysel Film/Video" msgid "extra wide" msgstr "" -msgid "extrawide" -msgstr "" - msgid "failed" msgstr "" @@ -11684,6 +11720,10 @@ msgstr "Menü" msgid "mins" msgstr "Dakika" +#, fuzzy +msgid "module disabled" +msgstr "Devre dışı" + msgid "month" msgstr "Ay" @@ -12151,10 +12191,10 @@ msgstr "" msgid "until standby/restart" msgstr "H.Bekle/Y.Başlatana Kadar" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -12167,6 +12207,9 @@ msgstr "Kullanıcı Tanımlı" msgid "variety show" msgstr "Çeşitli Gösteri" +msgid "version" +msgstr "sürümü" + msgid "vertical" msgstr "Düşey (V)" diff --git a/po/uk.po b/po/uk.po index ea523ffc942..dc7c74af690 100644 --- a/po/uk.po +++ b/po/uk.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2021-03-11 01:18+0200\n" "Last-Translator: \n" "Language-Team: kvinto\n" @@ -605,23 +605,20 @@ msgstr "Аудіо/Відео налаштування" msgid "AAC downmix" msgstr "AAC мікшування" -#, fuzzy msgid "AAC transcoding" -msgstr "Перекодування: " +msgstr "Перекодування AAC" -#, fuzzy msgid "AAC+ downmix" -msgstr "AAC мікшування" +msgstr "AAC+ мікшування" msgid "AC3" -msgstr "" +msgstr "AC3" msgid "AC3 downmix" msgstr "AC3 мікшування" -#, fuzzy msgid "AC3 transcoding" -msgstr "Перекодування: " +msgstr "Перекодування AC3" msgid "ACQUIRING TSID/ONID" msgstr "" @@ -1193,6 +1190,9 @@ msgstr "Автоматичні закладки" msgid "Automatic scan" msgstr "Автоматичний пошук" +msgid "Automatically power off box to deep standby mode." +msgstr "Автоматичне вимикання тюнера в режим глибокого очікування." + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Автоматично переводити ТВ у режим очікування, коли приймач переходить у режим очікування, або повне виключення." @@ -1455,6 +1455,9 @@ msgstr "Налаштування CI (Common Interface)" msgid "CI assignment" msgstr "Призначення CI" +msgid "CI enabled" +msgstr "CI ввімкнуто" + msgid "CI slot: " msgstr "CI слот: " @@ -1725,21 +1728,20 @@ msgstr "Вибір Тюнера" msgid "Choose bouquet" msgstr "Виберіть фаворитний список" -#, fuzzy msgid "Choose whether AAC sound tracks should be transcoded." -msgstr "Налаштуйте, чи слід змішувати багатоканальну звукову доріжку в стерео звук." +msgstr "Виберіть, чи слід перекодувати звукові доріжки AAC." -#, fuzzy msgid "Choose whether AC3 sound tracks should be transcoded." -msgstr "Налаштуйте, чи слід змішувати багатоканальну звукову доріжку в стерео звук." +msgstr "Виберіть, чи слід перекодувати звукові доріжки AC3." -#, fuzzy msgid "Choose whether WMA Pro sound tracks should be downmixed." -msgstr "Налаштуйте, чи слід змішувати багатоканальну звукову доріжку в стерео звук." +msgstr "Виберіть, чи слід перекодувати звукові доріжки WMA Pro." + +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Виберіть, чи слід мікшувати або транскодувати багатоканальні звукові доріжки DTS-HD(HR/MA)." -#, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." -msgstr "Налаштуйте, чи слід змішувати багатоканальну звукову доріжку в стерео звук." +msgstr "Виберіть, чи слід перекодувати багатоканальні звукові доріжки aac+ в стерео звук." msgid "Choose whether to scan a single transponder, one satellite or multiple satellites." msgstr "Виберіть, чи потрібно сканувати один транспондер, один супутник чи декілька супутників." @@ -2431,9 +2433,8 @@ msgstr "Чехія" msgid "D" msgstr "D" -#, fuzzy msgid "DAC" -msgstr "PDC" +msgstr "DAC" msgid "DHCP" msgstr "DHCP" @@ -2445,13 +2446,13 @@ msgid "DMM normal" msgstr "DMM нормально" msgid "DTS" -msgstr "" +msgstr "DTS" msgid "DTS downmix" msgstr "DTS мікшування" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS-HD(HR/MA) мікшування" msgid "DUAL LAYER DVD" msgstr "Двошаровий DVD" @@ -2532,7 +2533,7 @@ msgid "Default+Picon" msgstr "За Замовчуванням+Пікон" msgid "Define additional delay in milliseconds before start of http(s) streams, e.g. to connect a remote tuner, you use a complex system of DiSEqC." -msgstr "" +msgstr "Задайте додаткову затримку в мс-дах перед початком http(s) потоків, напр. для підключення віддаленого тюнера Ви використовуєте складну систему DiSEqC." msgid "Define the location of the EPG Cache file." msgstr "Вкажіть розташування для файлу кешу EPG." @@ -2750,9 +2751,8 @@ msgstr "Директорія містить %(file)s і %(subdir)s." msgid "Disable" msgstr "Вимкнуто" -#, fuzzy msgid "Disable FCC during recordings" -msgstr "Завжди включати ECM у записи" +msgstr "Вимкнути FCC під час запису" msgid "Disable Picture in Picture" msgstr "Вимкнути РіР" @@ -3011,9 +3011,8 @@ msgstr "Спроба завантажити новий список пакеті msgid "Downloading plugin information. Please wait..." msgstr "Завантаження інформації про додатки. Зачекайте..." -#, fuzzy msgid "Downmix" -msgstr "DTS мікшування" +msgstr "Мікшування" msgid "Drama and Films" msgstr "Драма і Фільми" @@ -3058,9 +3057,9 @@ msgstr "ЕПГ:" msgid "ERROR - failed to scan (%s)!" msgstr "ПОМИЛКА - сканування невдале (%s)!" -#, fuzzy, python-format +#, python-format msgid "ERROR downloading file %s/%s" -msgstr "ПОМИЛКА завантаження файлу /etc/enigma2/%s" +msgstr "ПОМИЛКА завантаження файлу %s/%s" msgid "East" msgstr "Схід" @@ -3177,9 +3176,8 @@ msgstr "Включити швидке автосканування" msgid "Enable auto fastscan for %s" msgstr "Включити швидке автосканування для %s" -#, fuzzy msgid "Enable bluetooth audio" -msgstr "Включити редагування фавориту" +msgstr "Включити аудіо Bluetooth" msgid "Enable bouquet edit" msgstr "Включити редагування фавориту" @@ -3211,6 +3209,9 @@ msgstr "Увімкнути, або вимкнути за допомогою HDMI msgid "Enable parental protection" msgstr "Включити батьківський контроль" +msgid "Enable power off timer" +msgstr "Увімкнути таймер вимкнення" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Включити віддалений приймач enigma2, щоб спробувати настроїтись на канали, які неможливо настроїти на місцевому рівні (наприклад, приймач зайнятий або тип каналу недоступний на локальному тюнері. Вкажіть повну URL-адресу, включаючи http: // та номер порту (зазвичай: 8001), наприклад http: //second_box: 8001." @@ -3605,13 +3606,11 @@ msgstr "" "FBC автоматичний\n" "неактивний" -#, fuzzy msgid "FCC enabled" -msgstr "ввімкнуто" +msgstr "FCC ввімкнуто" -#, fuzzy msgid "FCCSetup" -msgstr "Налаштування" +msgstr "FCC Налаштування" msgid "FEC" msgstr "ФЕК" @@ -3707,13 +3706,13 @@ msgid "Fast" msgstr "Швидко" msgid "Fast Channel Change" -msgstr "" +msgstr "Швидка зміна каналу" msgid "Fast Channel Change Setup" -msgstr "" +msgstr "Налаштування Швидкої зміни каналу" msgid "Fast Channel Change setup" -msgstr "" +msgstr "Налаштування швидкої зміни каналу" msgid "Fast DiSEqC" msgstr "Швидкий DiSEqC" @@ -3807,9 +3806,15 @@ msgstr "Дані завдання будуть виконані після на msgid "Force legacy signal stats" msgstr "Старий метод розрахунку сили сигналу" +msgid "Force power off (even when not in standby)" +msgstr "Примусово вимкнути живлення (навіть якщо не в режимі очікування)" + msgid "Force zap to recording service in standby" msgstr "Примусово переключити на канал для запису в режимі очікування" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "Примусовий режим глибокого очікування, навіть якщо він не в режимі очікування. Заплановані записи залишаються незмінними." + msgid "Format" msgstr "Форматування" @@ -3927,9 +3932,8 @@ msgstr "Загальна AC3 затримка" msgid "General PCM delay" msgstr "Загальна PCM затримка" -#, fuzzy msgid "General bluetooth audio delay" -msgstr "Загальна AC3 затримка" +msgstr "Загальна аудіо-bluetooth затримка" msgid "Genre" msgstr "Жанр" @@ -4091,7 +4095,7 @@ msgid "HD60/HD66SE/Multibox/Multibox SE" msgstr "HD60/HD66SE/Multibox/Multibox SE" msgid "HDMI" -msgstr "" +msgstr "HDMI" msgid "HDMI Colordepth" msgstr "Глибина кольору HDMI" @@ -4153,6 +4157,9 @@ msgstr "Жорсткий диск" msgid "Harddisk Setup" msgstr "Налаштування жорсткого диску" +msgid "Hardware Accelerated" +msgstr "Апаратне прискорення" + msgid "Hardware: " msgstr "Апаратура: " @@ -4198,9 +4205,8 @@ msgstr "Інфо ієрархії" msgid "High bitrate support" msgstr "Підтримка високого бітрейту" -#, fuzzy msgid "History Prev/Next" -msgstr "Вперед в історії" +msgstr "Історія Попередня/Далі" msgid "History back" msgstr "Назад в історії" @@ -4257,7 +4263,7 @@ msgid "How many minutes do you want to record?" msgstr "Скільки хвилин ви хочете записати?" msgid "Http(s) stream start delay" -msgstr "" +msgstr "Затримка початку потоку HTTP(s)." msgid "Hue" msgstr "Відтінок" @@ -4331,6 +4337,9 @@ msgstr "Якщо вибрано 'так', значення сигналу (SNR msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Якщо встановлено значення 'так', на телевізор посилатимуться ті самі команди для глибоких подій очікування, як і під час звичайних подій очікування." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "Якщо тюнер має перейти в режим глибокого очікування, напр. понеділок о 1 годині ночі, насправді вже вівторок. Щоб увімкнути це, тут можна вказати інший час початку наступного дня." + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "При використанні декількох непов'язаних перемикачів, команди DiSEqC повинні надсилатися кілька разів. Встановіть кількість перемикачів у ланцюзі мінус один." @@ -4666,7 +4675,7 @@ msgid "Just scale" msgstr "Тільки маштаб" msgid "KA-SAT" -msgstr "" +msgstr "KA-SAT" msgid "Kazakhstan" msgstr "Казахстан" @@ -5031,9 +5040,8 @@ msgstr "Мауританія" msgid "Mauritius" msgstr "Мауританська" -#, fuzzy msgid "Max channels" -msgstr "Канали" +msgstr "Макс. каналів" msgid "Max memory positions" msgstr "Макс. кількість позицій в пам'яті" @@ -5050,12 +5058,6 @@ msgstr "Втрачений" msgid "Media player" msgstr "Медіа плеєр" -msgid "Media player: GStreamer, version " -msgstr "Медіа плеєр: GStreamer, версія " - -msgid "Media player: ffmpeg, version " -msgstr "Медіа плеєр: ffmpeg, версія " - msgid "Media scanner" msgstr "Медіа сканер" @@ -5433,6 +5435,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Наступна" +msgid "Next day starts at" +msgstr "Наступний день починається о" + msgid "Nicaragua" msgstr "Нікарагуа" @@ -5745,6 +5750,9 @@ msgstr "Швидко переміщувати антену до цього ча msgid "Only on startup" msgstr "Тільки при включенні" +msgid "Only power off" +msgstr "Тільки вимкнено" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Виберіть 'Так' коли Ви використовуєте мультисвіч, який вимагає команду DiSEqC Port-A. Для всіх інших налаштувань виберіть 'Ні'." @@ -5769,8 +5777,8 @@ msgstr "Яскравість LED у режимі глибокого очікув msgid "Operating LED status in standby mode" msgstr "Яскравість LED у режимі очікування" -msgid "Operating LED status while running." -msgstr "Індикатор LED під час роботи." +msgid "Operating LED status while running" +msgstr "LED стан під час роботи" msgid "Opkg" msgstr "Opkg" @@ -5897,7 +5905,7 @@ msgid "Parental control setup" msgstr "Налаштування батьківського контролю" msgid "Passthrough" -msgstr "" +msgstr "Проходити" msgid "Password" msgstr "Пароль" @@ -6307,6 +6315,12 @@ msgstr "Яскравість LED" msgid "Power management. Consult your receiver's manual for more information." msgstr "Управління живленням. Для отримання додаткової інформації зверніться до керівництва вашого приймача." +msgid "Power off time" +msgstr "Час вимкнення" + +msgid "Power off timer" +msgstr "Таймер вимкнення" + msgid "Power on display" msgstr "Включення дисплею" @@ -6641,7 +6655,7 @@ msgid "Recall to previous service" msgstr "Повернутися на Попередній канал" msgid "Receiver or driver does not support FCC" -msgstr "" +msgstr "Приймач або драйвер не підтримують FCC" msgid "Reception settings" msgstr "Параметри прийому" @@ -7740,6 +7754,9 @@ msgstr "Пошук каналів" msgid "Service title mode" msgstr "Режим назви каналу" +msgid "Service type 4097 incorrect for PiP!" +msgstr "Тип каналу 4097 неправильний для PiP!" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8784,8 +8801,8 @@ msgstr "Дисплей включений у режимі вимкнення" msgid "Switch on the display during Suspend Mode" msgstr "Дисплей включений у режимі очікування" -msgid "Switch on the display during operation." -msgstr "Дисплей включений під час роботи." +msgid "Switch on the display during operation" +msgstr "Увімкнути дисплей під час роботи" msgid "Switch to Android" msgstr "Перейти на систему Android" @@ -8854,10 +8871,10 @@ msgid "System & Modulation" msgstr "Система & Модуляція" msgid "T2MI PID" -msgstr "" +msgstr "T2MI PID" msgid "T2MI PLP" -msgstr "" +msgstr "T2MI PLP" msgid "T2MI PLP ID" msgstr "" @@ -8871,7 +8888,7 @@ msgstr "ТЕКСТ" #. TRANSLATORS: Add here whatever should be shown in the "translator" about screen, up to 6 lines (use \n for newline) msgid "TRANSLATOR_INFO" msgstr "" -"Переклад: kvinto - 10.04.2022\n" +"Переклад: kvinto - 27.10.2022\n" "Пошта: badsystem@ukr.net" msgid "TS file is too large for ISO9660 level 1!" @@ -9243,9 +9260,8 @@ msgstr "Цей параметр дозволяє показати швидкі msgid "This option allows you to show the full screen path leading to the current screen." msgstr "Цей параметр дозволяє відобразити шлях на весь екран, що веде до поточного екрана." -#, fuzzy msgid "This option allows you to switch audio to bluetooth speakers." -msgstr "Цей параметр дозволяє Вам налаштувати рівень автозвуку." +msgstr "Ця опція дозволяє перемикати звук на динаміки Bluetooth." msgid "This option allows you to view the old and new settings side by side." msgstr "Цей параметр дозволяє Вам показати старі і нові настройки у двох розділених вікнах вертикально." @@ -9253,9 +9269,8 @@ msgstr "Цей параметр дозволяє Вам показати ста msgid "This option can be useful for long HDMI cables." msgstr "Цей параметр може бути корисним для довгих кабелів HDMI." -#, fuzzy msgid "This option configures the general audio delay for bluetooth speakers." -msgstr "Налаштування загальної затримки звукових доріжок із стереозвуком." +msgstr "Цей параметр налаштовує загальну затримку звуку для динаміків Bluetooth." msgid "This option set the level of surpression of mosquito noise (Mosquito Noise is random aliasing as a result of strong compression). Obviously this goes at the cost of picture details." msgstr "Цей параметр встановлює рівень придушення москітного шуму (Mosquito Noise є випадковим псевдонімом в результаті сильного стиснення). Очевидно, що це відбувається за рахунок деталей зображення." @@ -10189,9 +10204,8 @@ msgstr "W" msgid "WLAN connection" msgstr "Безпровідне з'єднання WLAN" -#, fuzzy msgid "WMA Pro downmix" -msgstr "AAC мікшування" +msgstr "WMA Pro мікшування" msgid "WSS on 4:3" msgstr "WSS on 4:3" @@ -10871,9 +10885,8 @@ msgstr "Замбія" msgid "Zap" msgstr "Переключити" -#, fuzzy msgid "Zap Up/Down" -msgstr "Переключити вниз" +msgstr "Переключити Ввех/Вниз" msgid "Zap back to previously tuned service?" msgstr "Переключити на попередній канал?" @@ -11116,14 +11129,13 @@ msgid "controlled by HDMI" msgstr "управляється HDMI" msgid "convert to AC3" -msgstr "" +msgstr "конвертувати в AC3" msgid "convert to DTS" -msgstr "" +msgstr "конвертувати в DTS" -#, fuzzy msgid "convert to multi-channel PCM" -msgstr "Багатоканальне PCM" +msgstr "конвертувати в багатоканальне PCM" msgid "cooking" msgstr "приготування їжі" @@ -11246,11 +11258,7 @@ msgid "experimental film/video" msgstr "експериментальний фільм/відео" msgid "extra wide" -msgstr "надширокий" - -#, fuzzy -msgid "extrawide" -msgstr "надширокий" +msgstr "дуже широкий" msgid "failed" msgstr "невдале" @@ -11441,6 +11449,9 @@ msgstr "меню" msgid "mins" msgstr "хв" +msgid "module disabled" +msgstr "модуль вимкнено" + msgid "month" msgstr "місяць" @@ -11615,9 +11626,8 @@ msgstr "дитяча програма дошкільного віку" msgid "preserve bookmarks in cuts" msgstr "зберегти закладки в розрізах" -#, fuzzy msgid "priority" -msgstr "Пріоритет" +msgstr "пріоритет" msgid "receiver software because updates are available." msgstr "доступні оновлення ПЗ для приймача." @@ -11890,12 +11900,11 @@ msgstr "нестабільний" msgid "until standby/restart" msgstr "до режиму очікування/перезавантаження" -#, fuzzy -msgid "use best / controlled by HDMI" -msgstr "управляється HDMI" +msgid "use HDMI cacenter" +msgstr "використовуйте підключення HDMI" -msgid "use_hdmi_cacenter" -msgstr "" +msgid "use best / controlled by HDMI" +msgstr "використовувати найкраще/керується HDMI" msgid "user defined" msgstr "на вибір користувача" @@ -11906,6 +11915,9 @@ msgstr "визначений користувачем прихований" msgid "variety show" msgstr "вар’єте шоу" +msgid "version" +msgstr "версія" + msgid "vertical" msgstr "вертикальна" diff --git a/po/updateallpo.sh b/po/updateallpo.sh index 7a5b8dc2317..54df4a620db 100755 --- a/po/updateallpo.sh +++ b/po/updateallpo.sh @@ -8,7 +8,7 @@ # Run this script from within the po folder. # # Author: Pr2 for OpenPLi Team -# Version: 1.1 +# Version: 1.2 # # Retrieve languages from Makefile.am LANGS variable for backward compatibility # @@ -30,8 +30,15 @@ fi which python if [ $? -eq 1 ]; then - printf "python not found on this system, please install it first or ensure that it is in the PATH variable.\n" - exit 1 + which python3 + if [ $? -eq 1 ]; then + printf "python not found on this system, please install it first or ensure that it is in the PATH variable.\n" + exit 1 + else + local_python="python3" + fi +else + local_python="python" fi # @@ -63,7 +70,7 @@ printf "Creating temporary file enigma2-py.pot\n" find $findoptions .. -name "*.py" -exec xgettext --no-wrap -L Python --from-code=UTF-8 -kpgettext:1c,2 --add-comments="TRANSLATORS:" -d enigma2 -s -o enigma2-py.pot {} \+ $localgsed --in-place enigma2-py.pot --expression=s/CHARSET/UTF-8/ printf "Creating temporary file enigma2-xml.pot\n" -find $findoptions .. -name "*.xml" -exec python xml2po.py {} \+ > enigma2-xml.pot +find $findoptions .. -name "*.xml" -exec ${local_python} xml2po.py {} \+ > enigma2-xml.pot printf "Merging pot files to create: enigma2.pot\n" cat enigma2-py.pot enigma2-xml.pot | msguniq --no-wrap --no-location -o enigma2.pot - OLDIFS=$IFS diff --git a/po/vi.po b/po/vi.po index 3a1052d6f2d..7a9b9d0e1b8 100644 --- a/po/vi.po +++ b/po/vi.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma 2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2021-08-02 09:19+0700\n" "Last-Translator: krong\n" "Language-Team: none\n" @@ -1164,6 +1164,9 @@ msgstr "Đánh dấu tự động" msgid "Automatic scan" msgstr "Quét tự động" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "Tự động đặt TV ở chế độ chờ bất cứ khi nào đầu thu chuyển sang chế độ chờ hoặc chế độ chờ sâu." @@ -1426,6 +1429,10 @@ msgstr "Cài đặt CI (Giao diện chung)" msgid "CI assignment" msgstr "Phân công CI" +#, fuzzy +msgid "CI enabled" +msgstr "kích hoạt" + msgid "CI slot: " msgstr "Khe CI: " @@ -1709,6 +1716,10 @@ msgstr "Định cấu hình xem các bản âm thanh đa kênh có được tr msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "Định cấu hình xem các bản âm thanh đa kênh có được trộn lẫn thành âm thanh nổi hay không." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "Định cấu hình xem các bản âm thanh đa kênh có được trộn lẫn thành âm thanh nổi hay không." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "Định cấu hình xem các bản âm thanh đa kênh có được trộn lẫn thành âm thanh nổi hay không." @@ -2422,8 +2433,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS downmix" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS downmix" msgid "DUAL LAYER DVD" msgstr "DVD TẦNG KÉP" @@ -3183,6 +3195,10 @@ msgstr "Bật hoặc tắt bằng HDMI-CEC." msgid "Enable parental protection" msgstr "Bật tính năng bảo vệ của phụ huynh" +#, fuzzy +msgid "Enable power off timer" +msgstr "Bật hẹn giờ đánh thức" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "Cho phép máy thu enigma2 từ xa cố gắng điều chỉnh các dịch vụ không thể điều chỉnh cục bộ (ví dụ: bộ điều chỉnh bị chiếm dụng hoặc loại dịch vụ không khả dụng trên bộ điều chỉnh cục bộ. Chỉ định URL hoàn chỉnh bao gồm http:// và số cổng (thông thường ...:8001 ), ví dụ http://second_box:8001." @@ -3779,9 +3795,16 @@ msgstr "Các tác vụ sau sẽ được thực hiện sau khi bạn nhấn OK!" msgid "Force legacy signal stats" msgstr "Lực lượng thống kê tín hiệu kế thừa" +#, fuzzy +msgid "Force power off (even when not in standby)" +msgstr "Buộc chuyển sang dịch vụ ghi âm ở chế độ chờ" + msgid "Force zap to recording service in standby" msgstr "Buộc chuyển sang dịch vụ ghi âm ở chế độ chờ" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "Định dạng" @@ -4129,6 +4152,10 @@ msgstr "Ổ đĩa cứng" msgid "Harddisk Setup" msgstr "Cài đặt đĩa cứng" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "Phần cứng: " + msgid "Hardware: " msgstr "Phần cứng: " @@ -4307,6 +4334,9 @@ msgstr "Nếu được đặt thành giá trị tín hiệu 'có' (SNR, v.v.) s msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "Nếu được đặt thành 'có', các lệnh tương tự sẽ được gửi đến TV cho các sự kiện chờ sâu, như được gửi trong các sự kiện chờ thông thường." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "Nếu sử dụng nhiều chuyển mạch không được cam kết, các lệnh DiSEqC phải được gửi nhiều lần. Đặt thành số lượng công tắc không được cam kết trong chuỗi trừ đi một." @@ -5024,12 +5054,6 @@ msgstr "Mayotte" msgid "Media player" msgstr "Phương tiện truyền thông" -msgid "Media player: GStreamer, version " -msgstr "Trình phát media: GStreamer, phiên bản " - -msgid "Media player: ffmpeg, version " -msgstr "Trình phát media: ffmpeg, phiên bản " - msgid "Media scanner" msgstr "Máy quét phương tiện truyền thông" @@ -5408,6 +5432,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "Kế tiếp" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "Nicaragua" @@ -5720,6 +5747,10 @@ msgstr "Chỉ di chuyển chảo nhanh chóng trước giờ này." msgid "Only on startup" msgstr "Chỉ khi khởi động" +#, fuzzy +msgid "Only power off" +msgstr "Bật hẹn giờ đánh thức" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "Chỉ chọn 'có' nếu bạn đang sử dụng đa tín hiệu yêu cầu tín hiệu lệnh DiSEqC Port-A. Đối với tất cả các thiết lập khác, chọn 'không'." @@ -5744,7 +5775,8 @@ msgstr "Trạng thái đèn LED hoạt động ở chế độ chờ sâu" msgid "Operating LED status in standby mode" msgstr "Trạng thái đèn LED hoạt động ở chế độ chờ" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "Trạng thái đèn LED hoạt động khi đang chạy." msgid "Opkg" @@ -6284,6 +6316,13 @@ msgstr "Đèn LED nguồn" msgid "Power management. Consult your receiver's manual for more information." msgstr "Quản lý năng lượng. Tham khảo hướng dẫn sử dụng của người nhận để biết thêm thông tin." +#, fuzzy +msgid "Power off time" +msgstr "Sắp xếp thời gian" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "Năng lượng hiển thị" @@ -7714,6 +7753,9 @@ msgstr "Quét dịch vụ" msgid "Service title mode" msgstr "Chế độ tiêu đề dịch vụ" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8762,7 +8804,8 @@ msgstr "Bật màn hình trong Chế độ chờ" msgid "Switch on the display during Suspend Mode" msgstr "Bật màn hình trong Chế độ tạm ngừng" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "Bật màn hình trong khi hoạt động." #, fuzzy @@ -11228,10 +11271,6 @@ msgstr "phim / video thử nghiệm" msgid "extra wide" msgstr "rộng thêm" -#, fuzzy -msgid "extrawide" -msgstr "rộng thêm" - msgid "failed" msgstr "thất bại" @@ -11424,6 +11463,10 @@ msgstr "menu chính" msgid "mins" msgstr "phút" +#, fuzzy +msgid "module disabled" +msgstr "lực lượng vô hiệu hóa" + msgid "month" msgstr "tháng" @@ -11883,13 +11926,13 @@ msgstr "không thể kiểm chứng" msgid "until standby/restart" msgstr "cho đến khi chờ / khởi động lại" +msgid "use HDMI cacenter" +msgstr "" + #, fuzzy msgid "use best / controlled by HDMI" msgstr "được điều khiển bởi HDMI" -msgid "use_hdmi_cacenter" -msgstr "" - msgid "user defined" msgstr "đã xác định người dùng" @@ -11899,6 +11942,9 @@ msgstr "người dùng xác định ẩn" msgid "variety show" msgstr "chương trình tạp kỹ" +msgid "version" +msgstr "phiên bản" + msgid "vertical" msgstr "theo chiều dọc" diff --git a/po/xml2po.py b/po/xml2po.py index 1d3121ee068..38e893edc32 100644 --- a/po/xml2po.py +++ b/po/xml2po.py @@ -1,10 +1,14 @@ #!/usr/bin/python +# -*- coding: utf-8 -*- +from __future__ import print_function + import sys import os import string import re from xml.sax import make_parser from xml.sax.handler import ContentHandler, property_lexical_handler + try: from _xmlplus.sax.saxlib import LexicalHandler no_comments = False @@ -28,7 +32,8 @@ def comment(self, comment): def startElement(self, name, attrs): for x in ["text", "title", "value", "caption", "description"]: try: - k = str(attrs[x].encode('utf-8')) + ktmp = attrs[x].encode('utf-8') + k = ktmp.decode() if k.strip() != "" and not self.ishex.match(k): attrlist.add((k, self.last_comment)) self.last_comment = None @@ -51,19 +56,22 @@ def startElement(self, name, attrs): if file.endswith(".xml"): parser.parse(os.path.join(arg, file)) else: - parser.parse(arg) + try: + parser.parse(arg) + except: + pass attrlist = list(attrlist) attrlist.sort(key=lambda a: a[0]) for (k, c) in attrlist: - print - print '#: ' + arg - string.replace(k, "\\n", "\"\n\"") + print('') + print('#: ' + arg) + k.replace("\\n", "\"\n\"") if c: for l in c.split('\n'): - print "#. ", l - print 'msgid "' + str(k) + '"' - print 'msgstr ""' + print("#. ", l) + print('msgid "' + k + '"') + print('msgstr ""') attrlist = set() diff --git a/po/zh_CN.po b/po/zh_CN.po index b4d5f579bdf..b28159b641d 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: enigma2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: 2021-07-31 17:00+0800\n" "Last-Translator: 孤独之剑 \n" "Language-Team: 孤独之剑 \n" @@ -1183,6 +1183,9 @@ msgstr "自动书签" msgid "Automatic scan" msgstr "自动扫描" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "当接收器进入待机或深度待机时,自动将电视置于待机状态." @@ -1445,6 +1448,10 @@ msgstr "CI 通用接口选择" msgid "CI assignment" msgstr "CI选择" +#, fuzzy +msgid "CI enabled" +msgstr "启用" + msgid "CI slot: " msgstr "CI插槽: " @@ -1728,6 +1735,10 @@ msgstr "配置多音轨频道是否缩混音频为立体声." msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "配置多音轨频道是否缩混音频为立体声." +#, fuzzy +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "配置多音轨频道是否缩混音频为立体声." + #, fuzzy msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "配置多音轨频道是否缩混音频为立体声." @@ -2441,8 +2452,9 @@ msgstr "" msgid "DTS downmix" msgstr "DTS缩减混音" -msgid "DTS-HD HR/DTS-HD MA/DTS" -msgstr "" +#, fuzzy +msgid "DTS-HD(HR/MA) downmix" +msgstr "DTS缩减混音" msgid "DUAL LAYER DVD" msgstr "双层DVD" @@ -3199,6 +3211,10 @@ msgstr "使用HDMI-CEC启用或禁用." msgid "Enable parental protection" msgstr "启用家长保护" +#, fuzzy +msgid "Enable power off timer" +msgstr "启用唤醒定时器" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "启用远程enigma2接收机来尝试介入本地服务器 (如:当本地调谐器被占用或者频道类型不可用时. 指定完整的URL 包括 http:// 和端口数字 (一般为...:8001),如: http://second_box:8001." @@ -3795,9 +3811,16 @@ msgstr "按OK键后,以下任务将被执行!" msgid "Force legacy signal stats" msgstr "强制旧类型信号状态" +#, fuzzy +msgid "Force power off (even when not in standby)" +msgstr "在待机状态下强制切换到录制频道" + msgid "Force zap to recording service in standby" msgstr "在待机状态下强制切换到录制频道" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "格式化" @@ -4145,6 +4168,10 @@ msgstr "硬盘设置" msgid "Harddisk Setup" msgstr "硬盘设置" +#, fuzzy +msgid "Hardware Accelerated" +msgstr "硬件设备: " + msgid "Hardware: " msgstr "硬件设备: " @@ -4323,6 +4350,9 @@ msgstr "如果设置为“是”,信号值(信噪比等)将根据API v3计 msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "如果设置为'是',则与常规待机事件中发送的命令相同,深度待机事件中也会发送相同的命令." +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "如果使用多个未提交的开关,则必须发送DISEQC命令 多次.设置为链中未提交的开关数减去一个." @@ -5038,12 +5068,6 @@ msgstr "马约特岛" msgid "Media player" msgstr "媒体播放器" -msgid "Media player: GStreamer, version " -msgstr "媒体播放器:GStreamer,版本 " - -msgid "Media player: ffmpeg, version " -msgstr "媒体播放器:ffmpeg,版本 " - msgid "Media scanner" msgstr "媒体扫描器" @@ -5422,6 +5446,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "稍候播出" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "尼加拉瓜" @@ -5734,6 +5761,10 @@ msgstr "在这段时间前才能快速转动卫星天线." msgid "Only on startup" msgstr "仅仅在启动时" +#, fuzzy +msgid "Only power off" +msgstr "启用唤醒定时器" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "只有在使用需要DiSEqC端口A命令信号的多开关时,才选择'是'.对于所有其他设置,选择'否'." @@ -5758,7 +5789,8 @@ msgstr "深度待机模式下LED的工作状态" msgid "Operating LED status in standby mode" msgstr "待机状态下LED的工作状态" -msgid "Operating LED status while running." +#, fuzzy +msgid "Operating LED status while running" msgstr "运行中LED的状态." msgid "Opkg" @@ -6298,6 +6330,13 @@ msgstr "电源LED" msgid "Power management. Consult your receiver's manual for more information." msgstr "电源管理.有关更多信息,请查阅接收器手册." +#, fuzzy +msgid "Power off time" +msgstr "按时间排序" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "接通电源显示" @@ -7731,6 +7770,9 @@ msgstr "频道扫描" msgid "Service title mode" msgstr "频道标题模式" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8780,7 +8822,8 @@ msgstr "在待机状态下打开显示器" msgid "Switch on the display during Suspend Mode" msgstr "在暂停模式下打开显示器" -msgid "Switch on the display during operation." +#, fuzzy +msgid "Switch on the display during operation" msgstr "操作时打开显示器." #, fuzzy @@ -11249,10 +11292,6 @@ msgstr "实验电影/视频" msgid "extra wide" msgstr "超宽" -#, fuzzy -msgid "extrawide" -msgstr "超宽" - msgid "failed" msgstr "失败" @@ -11445,6 +11484,10 @@ msgstr "菜单" msgid "mins" msgstr "分钟" +#, fuzzy +msgid "module disabled" +msgstr "强制禁用" + msgid "month" msgstr "月" @@ -11904,13 +11947,13 @@ msgstr "不可以测试" msgid "until standby/restart" msgstr "直到待机/重启" +msgid "use HDMI cacenter" +msgstr "" + #, fuzzy msgid "use best / controlled by HDMI" msgstr "由HDMI控制" -msgid "use_hdmi_cacenter" -msgstr "" - msgid "user defined" msgstr "用户定义" @@ -11920,6 +11963,9 @@ msgstr "用户定义隐藏" msgid "variety show" msgstr "多种显示" +msgid "version" +msgstr "版本" + msgid "vertical" msgstr "垂直" diff --git a/po/zh_HK.po b/po/zh_HK.po index 5ad2560ecc9..1252f93d44f 100644 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-08 10:54+0200\n" +"POT-Creation-Date: 2022-07-30 14:55+0200\n" "PO-Revision-Date: \n" "Last-Translator: 王彪 \n" "Language-Team: 中國\n" @@ -1172,6 +1172,9 @@ msgstr "自動掃描" msgid "Automatic scan" msgstr "" +msgid "Automatically power off box to deep standby mode." +msgstr "" + msgid "Automatically put the TV in standby whenever the receiver goes into standby or deep standby." msgstr "" @@ -1441,6 +1444,10 @@ msgstr "" msgid "CI assignment" msgstr "CI-證書" +#, fuzzy +msgid "CI enabled" +msgstr "允許" + msgid "CI slot: " msgstr "" @@ -1711,6 +1718,9 @@ msgstr "" msgid "Choose whether WMA Pro sound tracks should be downmixed." msgstr "" +msgid "Choose whether multi channel DTS-HD(HR/MA) sound tracks should be downmixed or transcoded." +msgstr "" + msgid "Choose whether multi channel aac+ sound tracks should be downmixed to stereo." msgstr "" @@ -2435,7 +2445,7 @@ msgstr "" msgid "DTS downmix" msgstr "" -msgid "DTS-HD HR/DTS-HD MA/DTS" +msgid "DTS-HD(HR/MA) downmix" msgstr "" msgid "DUAL LAYER DVD" @@ -3210,6 +3220,10 @@ msgstr "" msgid "Enable parental protection" msgstr "" +#, fuzzy +msgid "Enable power off timer" +msgstr "允許移動模式" + msgid "Enable remote enigma2 receiver to be tried to tune into services that cannot be tuned into locally (e.g. tuner is occupied or service type is unavailable on the local tuner. Specify complete URL including http:// and port number (normally ...:8001), e.g. http://second_box:8001." msgstr "" @@ -3798,9 +3812,15 @@ msgstr "按下 OK 鍵後將完成以下任務!" msgid "Force legacy signal stats" msgstr "" +msgid "Force power off (even when not in standby)" +msgstr "" + msgid "Force zap to recording service in standby" msgstr "" +msgid "Forces deep standby, even when not in standby mode. Scheduled recordings remain unaffected." +msgstr "" + msgid "Format" msgstr "格式化" @@ -4155,6 +4175,9 @@ msgstr "硬碟" msgid "Harddisk Setup" msgstr "" +msgid "Hardware Accelerated" +msgstr "" + msgid "Hardware: " msgstr "" @@ -4337,6 +4360,9 @@ msgstr "" msgid "If set to 'yes' the same commands will be sent to the TV for deep standby events, as are sent during regular standby events." msgstr "" +msgid "If the box is supposed to enter deep standby e.g. monday night at 1 AM, it actually is already tuesday. To enable this anyway, differing next day start time can be specified here." +msgstr "" + msgid "If using multiple uncommitted switches the DiSEqC commands must be sent multiple times. Set to the number of uncommitted switches in the chain minus one." msgstr "" @@ -5056,13 +5082,6 @@ msgstr "" msgid "Media player" msgstr "媒體播放器" -#, fuzzy -msgid "Media player: GStreamer, version " -msgstr "新版本:" - -msgid "Media player: ffmpeg, version " -msgstr "" - msgid "Media scanner" msgstr "" @@ -5454,6 +5473,9 @@ msgctxt "now/next: 'next' event label" msgid "Next" msgstr "" +msgid "Next day starts at" +msgstr "" + msgid "Nicaragua" msgstr "" @@ -5776,6 +5798,10 @@ msgstr "" msgid "Only on startup" msgstr "" +#, fuzzy +msgid "Only power off" +msgstr "允許移動模式" + msgid "Only select 'yes' if you are using a multiswich that requires a DiSEqC Port-A command signal. For all other setups select 'no'." msgstr "" @@ -5800,7 +5826,7 @@ msgstr "" msgid "Operating LED status in standby mode" msgstr "" -msgid "Operating LED status while running." +msgid "Operating LED status while running" msgstr "" msgid "Opkg" @@ -6348,6 +6374,12 @@ msgstr "" msgid "Power management. Consult your receiver's manual for more information." msgstr "" +msgid "Power off time" +msgstr "" + +msgid "Power off timer" +msgstr "" + msgid "Power on display" msgstr "" @@ -7812,6 +7844,9 @@ msgstr "頻道掃描" msgid "Service title mode" msgstr "" +msgid "Service type 4097 incorrect for PiP!" +msgstr "" + msgid "" "Service unavailable!\n" "Check tuner configuration!" @@ -8878,7 +8913,7 @@ msgstr "" msgid "Switch on the display during Suspend Mode" msgstr "" -msgid "Switch on the display during operation." +msgid "Switch on the display during operation" msgstr "" #, fuzzy @@ -11269,10 +11304,6 @@ msgstr "" msgid "extra wide" msgstr "附加欄位" -#, fuzzy -msgid "extrawide" -msgstr "附加欄位" - msgid "failed" msgstr "失敗" @@ -11468,6 +11499,10 @@ msgstr "功能表" msgid "mins" msgstr "分鐘" +#, fuzzy +msgid "module disabled" +msgstr "不可用" + msgid "month" msgstr "月份" @@ -11926,10 +11961,10 @@ msgstr "" msgid "until standby/restart" msgstr "" -msgid "use best / controlled by HDMI" +msgid "use HDMI cacenter" msgstr "" -msgid "use_hdmi_cacenter" +msgid "use best / controlled by HDMI" msgstr "" msgid "user defined" @@ -11942,6 +11977,9 @@ msgstr "用戶定義" msgid "variety show" msgstr "" +msgid "version" +msgstr "版本" + msgid "vertical" msgstr "垂直" diff --git a/tests/events.py b/tests/events.py index 87a7c8d1c35..587013f00ea 100644 --- a/tests/events.py +++ b/tests/events.py @@ -56,7 +56,9 @@ def end_log(test_name): if expected is not None: print "expected:" if expected != results: - open(test_name + ".bogus_results", "wb").write(results) + f = open(test_name + ".bogus_results", "wb") + f.write(results) + f.close() raise tests.TestError("test data does not match") else: print "test compared ok" diff --git a/tools/enigma2.sh.in b/tools/enigma2.sh.in index 54ea0441462..ab4e9a5c2c1 100755 --- a/tools/enigma2.sh.in +++ b/tools/enigma2.sh.in @@ -69,6 +69,10 @@ while : ; do 1) /sbin/halt ;; + 16) + echo "rescue" > /proc/stb/fp/boot_mode + /sbin/reboot + ;; 2) /sbin/reboot ;; @@ -134,6 +138,16 @@ while : ; do /etc/init.d/dbus-1 reload /etc/init.d/networking start /etc/init.d/avahi-daemon start + # wait until we have a network again + echo "**** Waiting for network ****" + for i in {1..30}; do + gw=`netstat -rn | grep UG | awk '{print $2}'` + if [ ! -z "$gw" ]; then + echo "> Online !" + break + fi + sleep 1 + done if [ ! -f /etc/.doNotAutoinstall ]; then touch /etc/.doAutoinstall else