Gisclub

4K | HDTV Ресиверы Enigma2 => Общие вопросы для всей линейки ресиверов на Enigma2 => Общие вопросы OpenPLi All => Тема начата: Дмитрий73 от 08 декабря | 2015г. | 13:08:20

Название: Локализация имиджа OpenPLi
Отправлено: Дмитрий73 от 08 декабря | 2015г. | 13:08:20
Я хочу до ума довести официальный русский перевод/локализацию опенПли.

Пожалуйста,пишите об найденных грамматических ошибках,неправильных/непонятных переведенных строках,например по смыслу.Просто о не переведенных строках.
Так же выкладываете скриншоты,для болей наглядности.

Для этого вы не должны использовать альтернативный перевод,а только тот,который идет с установкой имиджа и приходит во время обновления.

Надеюсь на вашу помощь.
Название: Локализация имиджа OpenPLi
Отправлено: Vasiliks от 02 марта | 2016г. | 13:18:00
Дмитрий73 (https://gisclub.tv/index.php?action=profile;u=12376), у вас в переводе есть строки
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.правильнее будет
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.тем более, что во всем переводе Action переводиться как Действие.

Затем два раза повторяются строки
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.ну и лучше все-таки вместо
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.использовать
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Название: Локализация имиджа OpenPLi
Отправлено: Дмитрий73 от 02 марта | 2016г. | 15:39:46
Ок.Исправлю.
Название: Локализация имиджа OpenPLi
Отправлено: MaksD от 26 марта | 2016г. | 12:07:49
Привет!
Попалось.
[attach=1]
Название: Локализация имиджа OpenPLi
Отправлено: Дмитрий73 от 21 июля | 2016г. | 18:55:59
Я хочу обновить локализацию для Пли.
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Меня смущает это "Мастер настройки overscan".
Ваши предложения по всему переводу.
Название: Локализация имиджа OpenPLi
Отправлено: vip1131 от 21 июля | 2016г. | 19:01:47
Дмитрий73 (https://gisclub.tv/index.php?action=profile;u=12376), у Вас в переводе есть строчки:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Есть ошибочки, правильнее будет:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Мне кажеться лучше будет вообще перевести так:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Название: Локализация имиджа OpenPLi
Отправлено: Дмитрий73 от 21 июля | 2016г. | 19:23:48
vip1131
ок
Название: Локализация имиджа OpenPLi
Отправлено: Taapat от 21 июля | 2016г. | 21:17:52
Меня смущает это "Мастер настройки overscan".
А как перевести "HDMI Colorspace"?
Название: Локализация имиджа OpenPLi
Отправлено: Дмитрий73 от 21 июля | 2016г. | 21:44:43
Не знаю что это,когда сам видел,то это совсем другое дело.
Но переводчик предлагает так:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
вот подсказали,спасибо
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Название: Локализация имиджа OpenPLi
Отправлено: vip1131 от 22 июля | 2016г. | 12:27:01
Дмитрий73 (https://gisclub.tv/index.php?action=profile;u=12376), добавьте:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Выводится эта строчка в инфо о ресивере.
Название: Локализация имиджа OpenPLi
Отправлено: Tomski2 от 22 июля | 2016г. | 18:35:06
Вот ещё без перевода
https://s31.postimg.org/ppirqqf5n/image.jpg
Название: Локализация имиджа OpenPLi
Отправлено: Дмитрий73 от 22 июля | 2016г. | 21:36:02
Вот ещё без перевода
https://s31.postimg.org/ppirqqf5n/image.jpg
Это уже переведено,завтра обновитесь или несколько постов выше,я выложил перевод.
Название: Локализация имиджа OpenPLi
Отправлено: vovan43 от 03 августа | 2016г. | 09:28:05
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Если еще єто актуально.
Мастер настройки пропорций экрана
или Мастер настройки соотношений экрана
Название: Локализация имиджа OpenPLi
Отправлено: vip1131 от 03 августа | 2016г. | 14:45:29
Дмитрий73 (https://gisclub.tv/index.php?action=profile;u=12376), +
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Название: Локализация имиджа OpenPLi
Отправлено: Ser6 от 03 августа | 2016г. | 16:09:16
vip1131 (https://gisclub.tv/index.php?action=profile;u=35486), эти строки выводит файл CaidInfo2.py, он входит в клубную библиотеку.
И не переведётся, вот эти строки из файла:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Но если поправить, т.е. добавить переводимость, то всё нормально:
[attach=1]
С другой строкой тоже всё нормально, переводится.
Одно НО, файл авторский и править мы не имеем права.
Вечером переговорю с автором, может разрешит а может и нет. :yes4:
Название: Локализация имиджа OpenPLi
Отправлено: vip1131 от 03 августа | 2016г. | 16:54:39
vip1131 (https://gisclub.tv/index.php?action=profile;u=35486), эти строки выводит файл CaidInfo2.py, он
Ошибку исправил. У меня тоже все переводится. Как по мне ничего авторского не трогается имею ввиду конвертор.
Название: Локализация имиджа OpenPLi
Отправлено: Ser6 от 03 августа | 2016г. | 17:03:10
Как по мне ничего
Это по Вашему а по мне замена точки на запятую в авторском файле - авторство затрагивается.
У себя делайте что хотите, но Вы вынесли предложение на форуме о переводе авторского файла, где он не обеспечен и требует его модификации.
Понимаете разницу?
К тому же после обновления библиотеки всё это слетит у всех, не только у Вас.
Название: Локализация имиджа OpenPLi
Отправлено: Ser6 от 03 августа | 2016г. | 21:37:57
Вечером переговорю с автором
Можно добавлять перевод, автор поправил (https://gisclub.tv/skiny-lokalizacija/converters-renders-components-(obsuzhdenija)-chast-2/msg428896/#msg428896).
Название: Локализация имиджа OpenPLi
Отправлено: leo16 от 11 августа | 2016г. | 17:23:40
Дмитрий73 (https://gisclub.tv/index.php?action=profile;u=12376), вот появился новый пункт не переведённый в chanellist menu ,если можно  переведи пожалуйста  :friends:
[attach=1]
Название: Локализация имиджа OpenPLi
Отправлено: adriano от 04 сентября | 2016г. | 19:50:27
После сегодняшнего обновления,изменили название пункта из предыдущего поста:
[attach=1]
Как его правильно перевести,что бы по смыслу было.
Название: Локализация имиджа OpenPLi
Отправлено: veliks от 04 сентября | 2016г. | 20:13:36
Как его правильно перевести,что бы по смыслу было.
"Закрыть пунктирную мигающую линию для этого сервиса".
  Вроде, Дима уже перевел в последней локали...
Название: Локализация имиджа OpenPLi
Отправлено: Harmon555 от 01 октября | 2016г. | 15:41:51
В окне настройки A/V нашлась не переведённая строка.
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
(https://www.imghost.in/img/2016-10/01/nyd9x1r8wnbmq2f5tsegwhajr.jpg)
Название: Локализация имиджа OpenPLi
Отправлено: arion75 от 07 ноября | 2020г. | 12:01:11
Недоперевод на Pli 7.3
[attach=1]
Название: Локализация имиджа OpenPLi
Отправлено: arion75 от 07 ноября | 2020г. | 15:46:43
Знающие люди подскажите, что здесь нужно вписать чтобы выбирало: UHD, HD или  PAL?
msgid "Press OK to keep the currently selected ? skin."
Название: Локализация имиджа OpenPLi
Отправлено: Durimar от 07 ноября | 2020г. | 16:57:53
msgid "Press OK to keep the currently selected ? skin."

#, python-format
msgid "Press OK to keep the currently selected %s skin."
msgstr ""
Название: Локализация имиджа OpenPLi
Отправлено: arion75 от 07 ноября | 2020г. | 17:26:11
Что то не срабатывает. Прописал вот так:
msgid "Press OK to keep the currently selected %s skin."
msgstr "Нажмите OK для активации выбранного вами %s скина"
Название: Локализация имиджа OpenPLi
Отправлено: Ser6 от 07 ноября | 2020г. | 17:31:47
arion75 (https://gisclub.tv/index.php?action=profile;u=5814), из сборки вытащите скрин SkinSelector.py и посмотрите как там прописано.
Название: Локализация имиджа OpenPLi
Отправлено: arion75 от 07 ноября | 2020г. | 17:49:59
Ser6 (https://gisclub.tv/index.php?action=profile;u=53947), если не сложно, пальцем ткните плиз.
# 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()
Название: Локализация имиджа OpenPLi
Отправлено: Ser6 от 07 ноября | 2020г. | 17:53:53
пальцем ткните
[attach=1]
Ваша ошибка здесь - selected %s
Пробел после слова уберите.
Название: Локализация имиджа OpenPLi
Отправлено: arion75 от 07 ноября | 2020г. | 18:30:32
Ser6 (https://gisclub.tv/index.php?action=profile;u=53947), спасибо большое за подсказку. Оказывается две строки нужно делать, одну для действующего скина а вторую для любого из выбираемых.  :)

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 скин."

[attach=1][attach=2]

пс. Ну и сам готовый файл из последнего обновления опенпли 7.3.
Название: Локализация имиджа OpenPLi
Отправлено: arion75 от 09 ноября | 2020г. | 14:01:48
Ваша ошибка здесь - selected %s
Пробел после слова уберите.
Кстати на девелоперках опенпли наоборот пробел нужен. Может поэтому у скиноделов проблемы с адаптацией скинов в этом окне меню.
Название: Локализация имиджа OpenPLi
Отправлено: obladatel от 10 ноября | 2020г. | 14:43:47
Оказывается две строки нужно делать, одну для действующего скина а вторую для любого из выбираемых.
Это надо делать ежели использовать перевод "девелоп" и для release-7.3, а так перевод этих строк существует по умолчанию в имидже release-7.3 (https://github.com/OpenPLi/enigma2/blob/release-7.3/po/ru.po).
[attach=1]

[attach=2]
Название: Локализация имиджа OpenPLi
Отправлено: arion75 от 10 ноября | 2020г. | 15:08:40
так перевод этих строк существует по умолчанию в имидже release-7.3.
Там ошибка была, возможно поправили уже.
Название: Локализация имиджа OpenPLi
Отправлено: obladatel от 10 ноября | 2020г. | 15:27:23
Там ошибка была, возможно поправили уже.
Пять месяцев не "трогался" перевод...
[attach=1]
Название: Локализация имиджа OpenPLi
Отправлено: arion75 от 10 ноября | 2020г. | 16:02:43
Пять месяцев не "трогался" перевод...
Тогда почему недоперевод?
Название: Локализация имиджа OpenPLi
Отправлено: Durimar от 10 ноября | 2020г. | 16:06:16
Там ошибка была, возможно поправили уже.
WanWizard ответил мне что править они этот текст не будут. Так как выход версии 8.0 не за горами.

No point fixing it there, as we don't accept translations for release images anyway. Besides that, OpenPLi 8 is around the corner.
Перевод- Нет смысла исправлять это, так как мы все равно не принимаем переводы для изображений релизов. Кроме того, не за горами OpenPLi 8.
Название: Локализация имиджа OpenPLi
Отправлено: arion75 от 10 ноября | 2020г. | 16:17:46
перевод этих строк существует по умолчанию в имидже release-7.3.
Загрузил по вашей ссылке и опять получил недоперевод.
[attach=2]
Вернул свой с правками и все ОК.
[attach=1]
Название: Локализация имиджа OpenPLi
Отправлено: obladatel от 10 ноября | 2020г. | 16:42:03
Тогда почему недоперевод?
Вы правы имеется недоперевод, я ошибся подумав что вы заменили переводом от "девелоп", - просто в некоторых моментах они разные..., и да я правил) свой давно для release-7.3.
p.s
ежели интересно пробуйте... для release-7.3