28 марта | 2024г. | 18:48:11


АвторТема: Локализация имиджа OpenPLi  (Прочитано 19299 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Оффлайн vip1131

  • Друзья Джедаев
  • *****
  • Сообщений: 213
  • Поблагодарили: 1214
  • Уважение: 0
Локализация имиджа OpenPLi
« Ответ #15: 03 августа | 2016г. | 16:54:39 »
0
vip1131, эти строки выводит файл CaidInfo2.py, он
Ошибку исправил. У меня тоже все переводится. Как по мне ничего авторского не трогается имею ввиду конвертор.



Оффлайн Ser6

  • Друзья Джедаев
  • *****
  • Сообщений: 12328
  • Поблагодарили: 29859
  • Уважение: +122
Локализация имиджа OpenPLi
« Ответ #16: 03 августа | 2016г. | 17:03:10 »
0
Как по мне ничего
Это по Вашему а по мне замена точки на запятую в авторском файле - авторство затрагивается.
У себя делайте что хотите, но Вы вынесли предложение на форуме о переводе авторского файла, где он не обеспечен и требует его модификации.
Понимаете разницу?
К тому же после обновления библиотеки всё это слетит у всех, не только у Вас.

Оффлайн Ser6

  • Друзья Джедаев
  • *****
  • Сообщений: 12328
  • Поблагодарили: 29859
  • Уважение: +122
Локализация имиджа OpenPLi
« Ответ #17: 03 августа | 2016г. | 21:37:57 »
0
Вечером переговорю с автором
Можно добавлять перевод, автор поправил.

Оффлайн leo16

  • Джедай
  • ***
  • Сообщений: 348
  • Поблагодарили: 650
  • Уважение: 0
Локализация имиджа OpenPLi
« Ответ #18: 11 августа | 2016г. | 17:23:40 »
0
Дмитрий73, вот появился новый пункт не переведённый в chanellist menu ,если можно  переведи пожалуйста  :friends:
Спойлер   :
[ Гостям не разрешен просмотр вложений ]
  • GI- 8895 Open Pli 7.3  Stable release
sat.85.2E.75.0E.42.0E.36.0E.13.0E.9.0E.4.8E.4.0W.

Оффлайн adriano

  • Великий Джедай
  • ****
  • Сообщений: 694
  • Поблагодарили: 159
  • Уважение: -2
Локализация имиджа OpenPLi
« Ответ #19: 04 сентября | 2016г. | 19:50:27 »
0
После сегодняшнего обновления,изменили название пункта из предыдущего поста:
Спойлер   :
[ Гостям не разрешен просмотр вложений ]
Как его правильно перевести,что бы по смыслу было.
  • uClan Ustym 4K PRO OpenATV 6.4;Denys_OS : Vu+ Uno4K SE OpenATV 6.4;OpenATV 7.2

Оффлайн veliks

  • Великий Джедай
  • ****
  • Сообщений: 867
  • Поблагодарили: 1371
  • Уважение: +5
Локализация имиджа OpenPLi
« Ответ #20: 04 сентября | 2016г. | 20:13:36 »
0
Как его правильно перевести,что бы по смыслу было.
"Закрыть пунктирную мигающую линию для этого сервиса".
  Вроде, Дима уже перевел в последней локали...

Оффлайн Harmon555

  • Друзья Джедаев
  • *****
  • Сообщений: 984
  • Поблагодарили: 2540
  • Уважение: +11
Локализация имиджа OpenPLi
« Ответ #21: 01 октября | 2016г. | 15:41:51 »
0
В окне настройки A/V нашлась не переведённая строка.
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Спойлер   :

Оффлайн arion75

  • Друзья Джедаев
  • *****
  • Сообщений: 3856
  • Поблагодарили: 12949
  • Уважение: +80
Локализация имиджа OpenPLi
« Ответ #22: 07 ноября | 2020г. | 12:01:11 »
0
Недоперевод на Pli 7.3
Спойлер   :
[ Гостям не разрешен просмотр вложений ]

Оффлайн arion75

  • Друзья Джедаев
  • *****
  • Сообщений: 3856
  • Поблагодарили: 12949
  • Уважение: +80
Локализация имиджа OpenPLi
« Ответ #23: 07 ноября | 2020г. | 15:46:43 »
0
Знающие люди подскажите, что здесь нужно вписать чтобы выбирало: UHD, HD или  PAL?
msgid "Press OK to keep the currently selected ? skin."

Оффлайн Durimar

  • Друзья Джедаев
  • *****
  • Сообщений: 686
  • Поблагодарили: 4028
  • Уважение: +14
Локализация имиджа OpenPLi
« Ответ #24: 07 ноября | 2020г. | 16:57:53 »
0
msgid "Press OK to keep the currently selected ? skin."

#, python-format
msgid "Press OK to keep the currently selected %s skin."
msgstr ""
  • VU+ Duo2 OpenPLi Release-8.3
Если плюнуть в Россию - она утрется! Если плюнет Россия - мир захлебнется - Маргарет Тетчер

Оффлайн arion75

  • Друзья Джедаев
  • *****
  • Сообщений: 3856
  • Поблагодарили: 12949
  • Уважение: +80
Локализация имиджа OpenPLi
« Ответ #25: 07 ноября | 2020г. | 17:26:11 »
0
Что то не срабатывает. Прописал вот так:
msgid "Press OK to keep the currently selected %s skin."
msgstr "Нажмите OK для активации выбранного вами %s скина"

Оффлайн Ser6

  • Друзья Джедаев
  • *****
  • Сообщений: 12328
  • Поблагодарили: 29859
  • Уважение: +122
Локализация имиджа OpenPLi
« Ответ #26: 07 ноября | 2020г. | 17:31:47 »
0
arion75, из сборки вытащите скрин SkinSelector.py и посмотрите как там прописано.

Оффлайн arion75

  • Друзья Джедаев
  • *****
  • Сообщений: 3856
  • Поблагодарили: 12949
  • Уважение: +80
Локализация имиджа OpenPLi
« Ответ #27: 07 ноября | 2020г. | 17:49:59 »
0
Ser6, если не сложно, пальцем ткните плиз.
Спойлер   :
# Embedded file name: /usr/lib/enigma2/python/Screens/SkinSelector.py
import mmap
import re
from enigma import ePicLoad, getDesktop
from os import listdir
from os.path import dirname, exists, isdir, join as pathjoin
from skin import DEFAULT_SKIN, DEFAULT_DISPLAY_SKIN, EMERGENCY_SKIN, currentDisplaySkin, currentPrimarySkin, domScreens
from Components.ActionMap import HelpableNumberActionMap
from Components.config import config
from Components.Pixmap import Pixmap
from Components.Sources.List import List
from Components.Sources.StaticText import StaticText
from Screens.HelpMenu import HelpableScreen
from Screens.MessageBox import MessageBox
from Screens.Screen import Screen
from Screens.Standby import TryQuitMainloop, QUIT_RESTART
from Tools.Directories import resolveFilename, SCOPE_CURRENT_SKIN, SCOPE_LCDSKIN, SCOPE_SKIN

class SkinSelector(Screen, HelpableScreen):
    skinTemplate = '\n\t<screen name="SkinSelector" position="center,center" size="%d,%d">\n\t\t<widget name="preview" position="center,%d" size="%d,%d" alphatest="blend" />\n\t\t<widget source="skins" render="Listbox" position="center,%d" size="%d,%d" enableWrapAround="1" scrollbarMode="showOnDemand">\n\t\t\t<convert type="TemplatedMultiContent">\n\t\t\t\t{\n\t\t\t\t"template": [\n\t\t\t\t\tMultiContentEntryText(pos = (%d, 0), size = (%d, %d), font = 0, flags = RT_HALIGN_LEFT | RT_VALIGN_CENTER, text = 1),\n\t\t\t\t\tMultiContentEntryText(pos = (%d, 0), size = (%d, %d), font = 0, flags = RT_HALIGN_RIGHT | RT_VALIGN_CENTER, text = 2)\n\t\t\t\t],\n\t\t\t\t"fonts": [gFont("Regular",%d)],\n\t\t\t\t"itemHeight": %d\n\t\t\t\t}\n\t\t\t</convert>\n\t\t</widget>\n\t\t<widget source="description" render="Label" position="center,e-%d" size="%d,%d" font="Regular;%d" valign="center" />\n\t\t<widget source="key_red" render="Label" position="%d,e-%d" size="%d,%d" backgroundColor="key_red" font="Regular;%d" foregroundColor="key_text" halign="center" valign="center" />\n\t\t<widget source="key_green" render="Label" position="%d,e-%d" size="%d,%d" backgroundColor="key_green" font="Regular;%d" foregroundColor="key_text" halign="center" valign="center" />\n\t</screen>'
    scaleData = [670,
     570,
     10,
     356,
     200,
     230,
     650,
     240,
     10,
     350,
     30,
     370,
     260,
     30,
     25,
     30,
     85,
     650,
     25,
     20,
     10,
     50,
     140,
     40,
     20,
     160,
     50,
     140,
     40,
     20]
    skin = None

    def __init__(self, session, screenTitle = _('GUI Skin')):
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)
        if SkinSelector.skin is None:
            self.initialiseSkin()
        Screen.setTitle(self, screenTitle)
        self.rootDir = resolveFilename(SCOPE_SKIN)
        self.config = config.skin.primary_skin
        self.current = currentPrimarySkin
        self.xmlList = ['skin.xml']
        self.onChangedEntry = []
        self['skins'] = List(enableWrapAround=True)
        self['preview'] = Pixmap()
        self['key_red'] = StaticText(_('Cancel'))
        self['key_green'] = StaticText(_('Save'))
        self['description'] = StaticText(_('Please wait... Loading list...'))
        self['actions'] = HelpableNumberActionMap(self, ['SetupActions', 'DirectionActions', 'ColorActions'], {'ok': (self.save, _('Save and activate the currently selected skin')),
         'cancel': (self.cancel, _('Cancel any changes to the currently active skin')),
         'close': (self.cancelRecursive, _('Cancel any changes to the currently active skin and exit all menus')),
         'red': (self.cancel, _('Cancel any changes to the currently active skin')),
         'green': (self.save, _('Save and activate the currently selected skin')),
         'up': (self.up, _('Move to the previous skin')),
         'down': (self.down, _('Move to the next skin')),
         'left': (self.left, _('Move to the previous page')),
         'right': (self.right, _('Move to the next page'))}, -1, description=_('Skin Selection Actions'))
        self.picload = ePicLoad()
        self.picload.PictureData.get().append(self.showPic)
        self.onLayoutFinish.append(self.layoutFinished)
        return

    def initialiseSkin(self):
        element, path = domScreens.get('SkinSelector', (None, None))
        if element is None:
            buildSkin = True
        else:
            buildSkin = False
            widgets = element.findall('widget')
            if widgets is not None:
                for widget in widgets:
                    name = widget.get('name', None)
                    source = widget.get('source', None)
                    if name and name in ('Preview', 'SkinList') or source == 'introduction':
                        print "[SkinSelector] Warning: Current skin '%s' does not support this version of SkinSelector!    Please contact the skin's author!" % config.skin.primary_skin.value
                        del domScreens['SkinSelector']
                        buildSkin = True
                        break

        if buildSkin:
            SkinSelector.skin = SkinSelector.skinTemplate % tuple([ x * getDesktop(0).size().height() / 720 for x in SkinSelector.scaleData ])
        else:
            SkinSelector.skin = '<screen />'
        return

    def showPic(self, picInfo = ''):
        ptr = self.picload.getData()
        if ptr is not None:
            self['preview'].instance.setPixmap(ptr.__deref__())
        return

    def layoutFinished(self):
        self.picload.setPara((self['preview'].instance.size().width(),
         self['preview'].instance.size().height(),
         1.0,
         1,
         1,
         1,
         '#ff000000'))
        self.refreshList()

    def refreshList(self):
        resolutions = {'480': _('NTSC'),
         '576': _('PAL'),
         '720': _('HD'),
         '1080': _('FHD'),
         '2160': _('4K'),
         '4320': _('8K'),
         '8640': _('16K')}
        emergency = _('< Emergency >')
        default = _('< Default >')
        defaultPicon = _('< Default + Picon >')
        current = _('< Current >')
        pending = _('< Pending restart >')
        displayPicon = pathjoin(dirname(DEFAULT_DISPLAY_SKIN), 'skin_display_picon.xml')
        skinList = []
        for dir in [ dir for dir in listdir(self.rootDir) if isdir(pathjoin(self.rootDir, dir)) ]:
            previewPath = pathjoin(self.rootDir, dir)
            for skinFile in self.xmlList:
                skin = pathjoin(dir, skinFile)
                skinPath = pathjoin(self.rootDir, skin)
                if exists(skinPath):
                    resolution = None
                    if skinFile == 'skin.xml':
                        with open(skinPath, 'r') as fd:
                            mm = mmap.mmap(fd.fileno(), 0, prot=mmap.PROT_READ)
                            resolution = re.search('\\<?resolution.*?\\syres\\s*=\\s*"(\\d+)"', mm)
                            resolution = resolution and resolutions.get(resolution.group(1), None)
                            mm.close()
                        print "[SkinSelector] Resolution of skin '%s': '%s'." % (skinPath, 'Unknown' if resolution is None else resolution)
                    preview = pathjoin(previewPath, 'piconprev.png' if skinFile == 'skin_display_picon.xml' else 'prev.png')
                    if skin == EMERGENCY_SKIN:
                        list = [emergency,
                         emergency,
                         dir,
                         skin,
                         resolution,
                         preview]
                    elif skin == DEFAULT_SKIN:
                        list = [dir,
                         default,
                         dir,
                         skin,
                         resolution,
                         preview]
                    elif skin == DEFAULT_DISPLAY_SKIN:
                        list = [default,
                         default,
                         dir,
                         skin,
                         resolution,
                         preview]
                    elif skin == displayPicon:
                        list = [dir,
                         defaultPicon,
                         dir,
                         skin,
                         resolution,
                         preview]
                    else:
                        list = [dir,
                         '',
                         dir,
                         skin,
                         resolution,
                         preview]
                    if skin == self.current:
                        list[1] = current
                    elif skin == self.config.value:
                        list[1] = pending
                    skinList.append(tuple([list[0].upper()] + list))

        skinList.sort()
        self['skins'].setList(skinList)
        for index in range(len(skinList)):
            if skinList[index][4] == self.config.value:
                self['skins'].setIndex(index)
                break

        self.loadPreview()
        return

    def loadPreview(self):
        self.changedEntry()
        preview = self['skins'].getCurrent()[6]
        if not exists(preview):
            preview = resolveFilename(SCOPE_CURRENT_SKIN, 'noprev.png')
        self.picload.startDecode(preview)
        resolution = self['skins'].getCurrent()[5]
        msg = '' if resolution is None else ' %s' % resolution
        if self['skins'].getCurrent()[4] == self.config.value:
            self['description'].setText(_('Press OK to keep the currently selected%s skin.') % msg)
        else:
            self['description'].setText(_('Press OK to activate the selected%s skin.') % msg)
        return

    def cancel(self):
        self.close(False)

    def cancelRecursive(self):
        self.close(True)

    def save(self):
        label = self['skins'].getCurrent()[1]
        skin = self['skins'].getCurrent()[4]
        if skin == self.config.value:
            if skin == self.current:
                print "[SkinSelector] Selected skin: '%s' (Unchanged!)" % pathjoin(self.rootDir, skin)
                self.cancel()
            else:
                print "[SkinSelector] Selected skin: '%s' (Trying to restart again!)" % pathjoin(self.rootDir, skin)
                restartBox = self.session.openWithCallback(self.restartGUI, MessageBox, _("To apply the selected '%s' skin the GUI needs to restart. Would you like to restart the GUI now?") % label, MessageBox.TYPE_YESNO)
                restartBox.setTitle(_('SkinSelector: Restart GUI'))
        elif skin == self.current:
            print "[SkinSelector] Selected skin: '%s' (Pending skin '%s' cancelled!)" % (pathjoin(self.rootDir, skin), pathjoin(self.rootDir, self.config.value))
            self.config.value = skin
            self.config.save()
            self.cancel()
        else:
            print "[SkinSelector] Selected skin: '%s'" % pathjoin(self.rootDir, skin)
            restartBox = self.session.openWithCallback(self.restartGUI, MessageBox, _("To save and apply the selected '%s' skin the GUI needs to restart. Would you like to save the selection and restart the GUI now?") % label, MessageBox.TYPE_YESNO)
            restartBox.setTitle(_('SkinSelector: Restart GUI'))

    def restartGUI(self, answer):
        if answer is True:
            self.config.value = self['skins'].getCurrent()[4]
            self.config.save()
            self.session.open(TryQuitMainloop, QUIT_RESTART)
        self.refreshList()

    def up(self):
        self['skins'].up()
        self.loadPreview()

    def down(self):
        self['skins'].down()
        self.loadPreview()

    def left(self):
        self['skins'].pageUp()
        self.loadPreview()

    def right(self):
        self['skins'].pageDown()
        self.loadPreview()

    def changedEntry(self):
        for x in self.onChangedEntry:
            x()

    def createSummary(self):
        return SkinSelectorSummary

    def getCurrentName(self):
        current = self['skins'].getCurrent()[1]
        if current:
            current = current.replace('_', ' ')
        return current


class LcdSkinSelector(SkinSelector):

    def __init__(self, session, screenTitle = _('Display Skin')):
        SkinSelector.__init__(self, session, screenTitle=screenTitle)
        self.skinName = ['LcdSkinSelector', 'SkinSelector']
        self.rootDir = resolveFilename(SCOPE_LCDSKIN)
        self.config = config.skin.display_skin
        self.current = currentDisplaySkin
        self.xmlList = ['skin_display.xml', 'skin_display_picon.xml']


class SkinSelectorSummary(Screen):

    def __init__(self, session, parent):
        Screen.__init__(self, session, parent=parent)
        self['Name'] = StaticText('')
        if hasattr(self.parent, 'onChangedEntry'):
            self.onShow.append(self.addWatcher)
            self.onHide.append(self.removeWatcher)

    def addWatcher(self):
        if hasattr(self.parent, 'onChangedEntry'):
            self.parent.onChangedEntry.append(self.selectionChanged)
            self.selectionChanged()

    def removeWatcher(self):
        if hasattr(self.parent, 'onChangedEntry'):
            self.parent.onChangedEntry.remove(self.selectionChanged)

    def selectionChanged(self):
        self['Name'].text = self.parent.getCurrentName()

Оффлайн Ser6

  • Друзья Джедаев
  • *****
  • Сообщений: 12328
  • Поблагодарили: 29859
  • Уважение: +122
Локализация имиджа OpenPLi
« Ответ #28: 07 ноября | 2020г. | 17:53:53 »
0
пальцем ткните
Спойлер   :
[ Гостям не разрешен просмотр вложений ]
Ваша ошибка здесь - selected %s
Пробел после слова уберите.

Оффлайн arion75

  • Друзья Джедаев
  • *****
  • Сообщений: 3856
  • Поблагодарили: 12949
  • Уважение: +80
Локализация имиджа OpenPLi
« Ответ #29: 07 ноября | 2020г. | 18:30:32 »
0
Ser6, спасибо большое за подсказку. Оказывается две строки нужно делать, одну для действующего скина а вторую для любого из выбираемых.  :)

msgid "Press OK to activate the selected%s skin."
msgstr "Нажмите OK для активации выбранного вами %s скина"

msgid "Press OK to keep the currently selected%s skin."
msgstr "Нажмите OK чтобы сохранить действующий %s скин."

Спойлер   :
[ Гостям не разрешен просмотр вложений ][ Гостям не разрешен просмотр вложений ]

пс. Ну и сам готовый файл из последнего обновления опенпли 7.3.

Теги:
 

Похожие темы

  Тема / Автор Ответов Последний ответ
125 Ответов
60415 Просмотров
Последний ответ 15 января | 2016г. | 13:26:39
от 024730
16 Ответов
27616 Просмотров
Последний ответ 26 декабря | 2016г. | 19:18:17
от Дмитрий73
1 Ответов
9244 Просмотров
Последний ответ 04 июня | 2015г. | 08:46:52
от Дмитрий73
12 Ответов
7763 Просмотров
Последний ответ 12 января | 2021г. | 18:59:20
от hecha71
389 Ответов
115348 Просмотров
Последний ответ 08 ноября | 2021г. | 17:57:46
от Shar_Nir



X

Добро пожаловать!

Мы заметили, что у Вас установлено расширение AdBlock или ему подобное. Пожалуйста добавьте наш Клуб в белый список, внесите этим посильную лепту в его развитие. Спасибо!