From 94c6ef5266a426978537b1871b7f652bed8cea99 Mon Sep 17 00:00:00 2001 From: sbwml Date: Sun, 22 Feb 2026 11:42:17 +0800 Subject: [PATCH] luci-app-dockerman: remove emoji i18n Signed-off-by: sbwml --- .../luci-static/resources/dockerman/common.js | 16 ++++----- .../resources/view/dockerman/container.js | 12 +++---- .../resources/view/dockerman/containers.js | 26 +++++++------- .../resources/view/dockerman/events.js | 8 ++--- .../resources/view/dockerman/images.js | 36 +++++++++---------- .../resources/view/dockerman/network.js | 2 +- .../resources/view/dockerman/networks.js | 12 +++---- .../resources/view/dockerman/volumes.js | 16 ++++----- 8 files changed, 64 insertions(+), 64 deletions(-) diff --git a/htdocs/luci-static/resources/dockerman/common.js b/htdocs/luci-static/resources/dockerman/common.js index 818f436..d98b786 100644 --- a/htdocs/luci-static/resources/dockerman/common.js +++ b/htdocs/luci-static/resources/dockerman/common.js @@ -333,18 +333,18 @@ const container = Object.freeze({ exec_die: {e: 'đŸĒĻ', i18n: _('exec_die')}, export: {e: '📤âŦ‡ī¸', i18n: _('export')}, health_status: {e: 'đŸŠēâš•ī¸', i18n: _('health_status')}, - kill: {e: 'â˜ ī¸', i18n: _('kill')}, + kill: {e: 'â˜ ī¸', i18n: _('Kill')}, oom: {e: '0ī¸âƒŖđŸ§ ', i18n: _('oom')}, - pause: {e: 'â¸ī¸', i18n: _('pause')}, + pause: {e: 'â¸ī¸', i18n: _('Pause')}, rename: {e: 'âœī¸', i18n: _('rename')}, resize: {e: 'â†”ī¸', i18n: _('resize')}, - restart: {e: '🔄', i18n: _('restart')}, - start: {e: 'â–ļī¸', i18n: _('start')}, - stop: {e: 'âšī¸', i18n: _('stop')}, + restart: {e: '🔄', i18n: _('Restart')}, + start: {e: 'â–ļī¸', i18n: _('Start')}, + stop: {e: 'âšī¸', i18n: _('Stop')}, top: {e: '🔝', i18n: _('top')}, - unpause: {e: 'â¯ī¸', i18n: _('unpause')}, - update: {e: 'âœī¸', i18n: _('update')}, - prune: {e: 'âœ‚ī¸', i18n: _('prune')}, + unpause: {e: 'â¯ī¸', i18n: _('Unpause')}, + update: {e: 'âœī¸', i18n: _('Update')}, + prune: {e: 'âœ‚ī¸', i18n: _('Prune')}, }); diff --git a/htdocs/luci-static/resources/view/dockerman/container.js b/htdocs/luci-static/resources/view/dockerman/container.js index 1c5604a..f449004 100644 --- a/htdocs/luci-static/resources/view/dockerman/container.js +++ b/htdocs/luci-static/resources/view/dockerman/container.js @@ -555,8 +555,8 @@ return dm2.dv.extend({ ss.anonymous = true; ss.nodescriptions = true; ss.addremove = true; - ss.addbtntitle = _('Connect') + ' 🔗'; - ss.delbtntitle = _('Disconnect') + ' â›“ī¸â€đŸ’Ĩ'; + ss.addbtntitle = _('Connect'); + ss.delbtntitle = _('Disconnect'); o = ss.option(form.DummyValue, 'Name', _('Name')); @@ -937,17 +937,17 @@ return dm2.dv.extend({ 'class': 'cbi-button cbi-button-positive', 'style': 'margin-left: 10px;', 'click': () => this.handleFileUpload(this_container.Id), - }, _('Upload') + ' âŦ†ī¸'), + }, _('Upload')), E('button', { 'class': 'cbi-button cbi-button-neutral', 'style': 'margin-left: 5px;', 'click': () => this.handleFileDownload(this_container.Id), - }, _('Download') + ' âŦ‡ī¸'), + }, _('Download')), E('button', { 'class': 'cbi-button cbi-button-neutral', 'style': 'margin-left: 5px;', 'click': () => this.handleInfoArchive(this_container.Id), - }, _('Inspect') + ' 🔎'), + }, _('Inspect')), ]), E('textarea', { 'id': 'container-file-text', @@ -981,7 +981,7 @@ return dm2.dv.extend({ output.textContent = JSON.stringify(response.body, null, 2); return; }), - }, _('Inspect') + ' 🔎'), + }, _('Inspect')), ]), ]); diff --git a/htdocs/luci-static/resources/view/dockerman/containers.js b/htdocs/luci-static/resources/view/dockerman/containers.js index e118ac4..bf380a4 100644 --- a/htdocs/luci-static/resources/view/dockerman/containers.js +++ b/htdocs/luci-static/resources/view/dockerman/containers.js @@ -102,7 +102,7 @@ return dm2.dv.extend({ s.anonymous = true; const prune = s.option(form.Button, '_prune', null); - prune.inputtitle = `${dm2.ActionTypes['prune'].i18n} ${dm2.ActionTypes['prune'].e}`; + prune.inputtitle = `${dm2.ActionTypes['prune'].i18n}`; prune.inputstyle = 'negative'; prune.onclick = L.bind(function(section_id, ev) { return this.super('handleXHRTransfer', [{ @@ -134,7 +134,7 @@ return dm2.dv.extend({ conSec.addremove = true; conSec.sortable = true; conSec.filterrow = true; - conSec.addbtntitle = `${dm2.ActionTypes['create'].i18n} ${dm2.ActionTypes['create'].e}`; + conSec.addbtntitle = `${dm2.ActionTypes['create'].i18n}`; conSec.footer = [ `${_('Total')} ${container_list.length}`, [ @@ -188,20 +188,20 @@ return dm2.dv.extend({ dm2.ActionTypes['inspect'].i18n, {showOutput: true, showSuccess: false} ) - }, [dm2.ActionTypes['inspect'].e]), + }, [dm2.ActionTypes['inspect'].i18n]), E('button', { 'class': 'cbi-button cbi-button-positive edit', 'title': _('Edit this container'), 'click': () => window.location.href = `${view.dockerman_url}/container/${cont?.Id}` - }, [dm2.ActionTypes['edit'].e]), + }, [dm2.ActionTypes['edit'].i18n]), (() => { const icon = isRunning - ? dm2.Types['container'].sub['pause'].e + ? dm2.Types['container'].sub['pause'].i18n : (isPaused - ? dm2.Types['container'].sub['unpause'].e - : dm2.Types['container'].sub['start'].e); + ? dm2.Types['container'].sub['unpause'].i18n + : dm2.Types['container'].sub['start'].i18n); const title = isRunning ? _('Pause this container') : (isPaused ? _('Unpause this container') : _('Start this container')); @@ -241,7 +241,7 @@ return dm2.dv.extend({ _('Restart'), {showOutput: true, showSuccess: false} ) - }, [dm2.Types['container'].sub['restart'].e]), + }, [dm2.Types['container'].sub['restart'].i18n]), E('button', { 'class': 'cbi-button cbi-button-neutral stop', @@ -253,7 +253,7 @@ return dm2.dv.extend({ {showOutput: true, showSuccess: false} ), 'disabled' : !(isRunning || isPaused) ? true : null - }, [dm2.Types['container'].sub['stop'].e]), + }, [dm2.Types['container'].sub['stop'].i18n]), E('button', { 'class': 'cbi-button cbi-button-negative kill', @@ -265,7 +265,7 @@ return dm2.dv.extend({ {showOutput: true, showSuccess: false} ), 'disabled' : !(isRunning || isPaused) ? true : null - }, [dm2.Types['container'].sub['kill'].e]), + }, [dm2.Types['container'].sub['kill'].i18n]), E('button', { 'class': 'cbi-button cbi-button-neutral export', @@ -273,7 +273,7 @@ return dm2.dv.extend({ 'click': () => { window.location.href = `${view.dockerman_url}/container/export/${cont.Id}`; } - }, [dm2.Types['container'].sub['export'].e]), + }, [dm2.Types['container'].sub['export'].i18n]), E('div', { 'style': 'width: 20px', @@ -289,7 +289,7 @@ return dm2.dv.extend({ dm2.ActionTypes['remove'].i18n, {showOutput: true, showSuccess: false} ) - }, [dm2.ActionTypes['remove'].e]), + }, [dm2.ActionTypes['remove'].i18n]), E('button', { 'class': 'cbi-button cbi-button-negative important remove', @@ -300,7 +300,7 @@ return dm2.dv.extend({ _('Force Remove'), {showOutput: true, showSuccess: false} ) - }, [dm2.ActionTypes['force_remove'].e]), + }, [dm2.ActionTypes['force_remove'].i18n]), ]; return E('td', { diff --git a/htdocs/luci-static/resources/view/dockerman/events.js b/htdocs/luci-static/resources/view/dockerman/events.js index a33449a..4ca94ca 100644 --- a/htdocs/luci-static/resources/view/dockerman/events.js +++ b/htdocs/luci-static/resources/view/dockerman/events.js @@ -72,7 +72,7 @@ return dm2.dv.extend({ }, [ E('option', { 'value': '' }, _('All Types')), ...Object.keys(dm2.Types).map(type => - E('option', { 'value': type }, `${dm2.Types[type].e} ${dm2.Types[type].i18n}`) + E('option', { 'value': type }, `${dm2.Types[type].i18n}`) ) ]) ]) @@ -225,12 +225,12 @@ return dm2.dv.extend({ const rows = ev_array.map(event => { const type = event.Type; const typeInfo = dm2.Types[type]; - const typeDisplay = typeInfo ? `${typeInfo.e} ${typeInfo.i18n}` : type; + const typeDisplay = typeInfo ? `${typeInfo.i18n}` : type; const actionParts = event.Action?.split(':') || []; const action = actionParts.length > 0 ? actionParts[0] : ''; const action_sub = actionParts.length > 1 ? actionParts[1] : null; const actionInfo = typeInfo?.sub?.[action]; - const actionDisplay = actionInfo ? `${actionInfo.e} ${actionInfo.i18n}${action_sub ? ':'+action_sub : ''}` : action; + const actionDisplay = actionInfo ? `${actionInfo.i18n}${action_sub ? ':'+action_sub : ''}` : action; return [ view.buildTimeString(event.time), typeDisplay, @@ -344,7 +344,7 @@ return dm2.dv.extend({ const subtypes = dm2.Types[selectedType].sub; for (const action in subtypes) { subtypeSelect.appendChild( - E('option', { 'value': action }, `${subtypes[action].e} ${subtypes[action].i18n}`) + E('option', { 'value': action }, `${subtypes[action].i18n}`) ); } }, diff --git a/htdocs/luci-static/resources/view/dockerman/images.js b/htdocs/luci-static/resources/view/dockerman/images.js index 62704e9..bfe7d2d 100644 --- a/htdocs/luci-static/resources/view/dockerman/images.js +++ b/htdocs/luci-static/resources/view/dockerman/images.js @@ -93,7 +93,7 @@ return dm2.dv.extend({ tagOpt.placeholder = "[registry.io[:443]/]foobar/product:latest"; o = s.option(form.Button, '_pull'); - o.inputtitle = `${dm2.Types['image'].sub['pull'].i18n} ${dm2.Types['image'].sub['pull'].e}`; // _('Pull') + ' â˜ī¸âŦ‡ī¸' + o.inputtitle = `${dm2.Types['image'].sub['pull'].i18n}`; // _('Pull') + ' â˜ī¸âŦ‡ī¸' o.inputstyle = 'add'; o.onclick = L.bind(function(ev, btn) { const raw = tagOpt.formvalue('pull') || ''; @@ -168,7 +168,7 @@ return dm2.dv.extend({ } o = s.option(form.Button, '_push'); - o.inputtitle = `${dm2.Types['image'].sub['push'].i18n} ${dm2.Types['image'].sub['push'].e}`; // _('Push') + ' â˜ī¸âŦ†ī¸' + o.inputtitle = `${dm2.Types['image'].sub['push'].i18n}`; // _('Push') + ' â˜ī¸âŦ†ī¸' o.inputstyle = 'add'; o.onclick = L.bind(function(ev, btn) { const selected = pushTagOpt.formvalue('push') || ''; @@ -214,7 +214,7 @@ return dm2.dv.extend({ buildTagOpt.placeholder = 'repository:tag'; o = s.option(form.Button, '_build'); - o.inputtitle = `${dm2.ActionTypes['build'].i18n} ${dm2.ActionTypes['build'].e}`; // _('Build') + ' đŸ—ī¸' + o.inputtitle = `${dm2.ActionTypes['build'].i18n}`; // _('Build') + ' đŸ—ī¸' o.inputstyle = 'add'; o.onclick = L.bind(function(ev, btn) { const uri = buildOpt.formvalue('build') || ''; @@ -246,7 +246,7 @@ return dm2.dv.extend({ }, this); o = s.option(form.Button, '_delete_cache', null); - o.inputtitle = `${dm2.ActionTypes['clean'].i18n} ${dm2.ActionTypes['clean'].e}`; + o.inputtitle = `${dm2.ActionTypes['clean'].i18n}`; o.inputstyle = 'negative'; o.onclick = L.bind(function(ev, btn) { return this.super('handleXHRTransfer', [{ @@ -284,7 +284,7 @@ return dm2.dv.extend({ tagimpOpt.placeholder = 'repository:tag'; let importBtn = s.option(form.Button, '_import'); - importBtn.inputtitle = `${dm2.Types['image'].sub['import'].i18n} ${dm2.Types['image'].sub['import'].e}` //_('Import') + ' âžĄī¸'; + importBtn.inputtitle = `${dm2.Types['image'].sub['import'].i18n}` //_('Import') + ' âžĄī¸'; importBtn.inputstyle = 'add'; importBtn.onclick = L.bind(function(ev, btn) { const rawtag = tagimpOpt.formvalue('import') || ''; @@ -339,7 +339,7 @@ return dm2.dv.extend({ s.anonymous = true; const prune = s.option(form.Button, '_prune', null); - prune.inputtitle = `${dm2.ActionTypes['prune'].i18n} ${dm2.ActionTypes['prune'].e}`; + prune.inputtitle = `${dm2.ActionTypes['prune'].i18n}`; prune.inputstyle = 'negative'; prune.onclick = L.bind(function(ev, btn) { @@ -376,7 +376,7 @@ return dm2.dv.extend({ }, this); o = s.option(form.Button, '_export', null); - o.inputtitle = `${dm2.ActionTypes['save'].i18n} ${dm2.ActionTypes['save'].e}`; + o.inputtitle = `${dm2.ActionTypes['save'].i18n}`; o.inputstyle = 'cbi-button-positive'; o.onclick = L.bind(function(ev, btn) { ev.preventDefault(); @@ -407,7 +407,7 @@ return dm2.dv.extend({ imgSec.addremove = true; imgSec.sortable = true; imgSec.filterrow = true; - imgSec.addbtntitle = `${dm2.ActionTypes['upload'].i18n} ${dm2.ActionTypes['upload'].e}`; + imgSec.addbtntitle = `${dm2.ActionTypes['upload'].i18n}`; imgSec.footer = [ '', `${_('Total')} ${image_list.length}`, @@ -468,17 +468,17 @@ return dm2.dv.extend({ 'class': 'cbi-button cbi-button-neutral', 'title': dm2.ActionTypes['inspect'].i18n, 'click': ui.createHandlerFn(this, this.handleInspect, image), - }, [dm2.ActionTypes['inspect'].e]), + }, [dm2.ActionTypes['inspect'].i18n]), E('button', { 'class': 'cbi-button cbi-button-neutral', 'title': dm2.ActionTypes['history'].i18n, 'click': ui.createHandlerFn(this, this.handleHistory, image), - }, [dm2.ActionTypes['history'].e]), + }, [dm2.ActionTypes['history'].i18n]), E('button', { 'class': 'cbi-button cbi-button-positive save', 'title': dm2.ActionTypes['save'].i18n, 'click': ui.createHandlerFn(this, this.handleGet, image), - }, [dm2.ActionTypes['save'].e]), + }, [dm2.ActionTypes['save'].i18n]), E('div', { 'style': 'width: 20px', // Some safety margin for mis-clicks @@ -488,13 +488,13 @@ return dm2.dv.extend({ 'title': dm2.ActionTypes['remove'].i18n, 'click': ui.createHandlerFn(this, this.handleRemove, sid, image, false), 'disabled': image?._disable_delete, - }, [dm2.ActionTypes['remove'].e]), + }, [dm2.ActionTypes['remove'].i18n]), E('button', { 'class': 'cbi-button cbi-button-negative important remove', 'title': dm2.ActionTypes['force_remove'].i18n, 'click': ui.createHandlerFn(this, this.handleRemove, sid, image, true), 'disabled': image?._disable_delete, - }, [dm2.ActionTypes['force_remove'].e]), + }, [dm2.ActionTypes['force_remove'].i18n]), ]; return E('td', { 'class': 'td middle cbi-section-actions' }, E('div', btns)); }; @@ -510,7 +510,7 @@ return dm2.dv.extend({ return; } - o = imgSec.option(form.DummyValue, 'RepoTags', dm2.Types['image'].sub['tag'].e); + o = imgSec.option(form.DummyValue, 'RepoTags', dm2.Types['image'].sub['tag'].i18n); o.cfgvalue = function(sid) { const image = this.map.data.data[sid]; const tags = Array.isArray(image?.RepoTags) ? image.RepoTags : []; @@ -538,7 +538,7 @@ return dm2.dv.extend({ E('button', { 'class': 'cbi-button', 'click': ui.hideModal - }, '↩'), + }, _('Cancel')), ' ', E('button', { 'class': 'cbi-button cbi-button-negative', @@ -557,7 +557,7 @@ return dm2.dv.extend({ } ); }) - }, dm2.Types['image'].sub['untag'].e) + }, dm2.Types['image'].sub['untag'].i18n) ]) ]); }, tag, image.Id) @@ -646,7 +646,7 @@ return dm2.dv.extend({ E('button', { 'class': 'cbi-button', 'click': ui.hideModal - }, ['↩']), + }, [_('Cancel')]), ' ', E('button', { 'class': 'cbi-button cbi-button-positive', @@ -673,7 +673,7 @@ return dm2.dv.extend({ } ); }) - }, [dm2.Types['image'].sub['tag'].e]) + }, [dm2.Types['image'].sub['tag'].i18n]) ]) ]); }, fullId) diff --git a/htdocs/luci-static/resources/view/dockerman/network.js b/htdocs/luci-static/resources/view/dockerman/network.js index 0557e28..3ab2f1b 100644 --- a/htdocs/luci-static/resources/view/dockerman/network.js +++ b/htdocs/luci-static/resources/view/dockerman/network.js @@ -139,7 +139,7 @@ return dm2.dv.extend({ ss.nodescriptions = true; o = ss.option(form.Button, '_inspect_button', null); - o.inputtitle = `${dm2.ActionTypes['inspect'].i18n} ${dm2.ActionTypes['inspect'].e}`; + o.inputtitle = `${dm2.ActionTypes['inspect'].i18n}`; o.inputstyle = 'neutral'; o.onclick = L.bind(function(section_id, ev) { return dm2.network_inspect({ id: this_network.Id }).then((response) => { diff --git a/htdocs/luci-static/resources/view/dockerman/networks.js b/htdocs/luci-static/resources/view/dockerman/networks.js index 85416dc..06ff4e3 100644 --- a/htdocs/luci-static/resources/view/dockerman/networks.js +++ b/htdocs/luci-static/resources/view/dockerman/networks.js @@ -64,7 +64,7 @@ return dm2.dv.extend({ s.anonymous = true; const prune = s.option(form.Button, '_prune', null); - prune.inputtitle = `${dm2.ActionTypes['prune'].i18n} ${dm2.ActionTypes['prune'].e}`; + prune.inputtitle = `${dm2.ActionTypes['prune'].i18n}`; prune.inputstyle = 'negative'; prune.onclick = L.bind(function(section_id, ev) { @@ -107,7 +107,7 @@ return dm2.dv.extend({ netSec.addremove = true; netSec.sortable = true; netSec.filterrow = true; - netSec.addbtntitle = `${dm2.ActionTypes['create'].i18n} ${dm2.ActionTypes['create'].e}`; + netSec.addbtntitle = `${dm2.ActionTypes['create'].i18n}`; netSec.footer = [ `${_('Total')} ${network_list.length}`, ]; @@ -152,7 +152,7 @@ return dm2.dv.extend({ 'class': 'cbi-button view', 'title': dm2.ActionTypes['inspect'].i18n, 'click': ui.createHandlerFn(this, this.handleInspect, section_id), - }, [dm2.ActionTypes['inspect'].e]), + }, [dm2.ActionTypes['inspect'].i18n]), E('div', { 'style': 'width: 20px', @@ -164,13 +164,13 @@ return dm2.dv.extend({ 'title': dm2.ActionTypes['remove'].i18n, 'click': ui.createHandlerFn(this, this.handleRemove, section_id, false), 'disabled': network?._disable_delete, - }, dm2.ActionTypes['remove'].e), + }, dm2.ActionTypes['remove'].i18n), E('button', { 'class': 'cbi-button cbi-button-negative important remove', 'title': dm2.ActionTypes['force_remove'].i18n, 'click': ui.createHandlerFn(this, this.handleRemove, section_id, true), 'disabled': network?._disable_delete, - }, dm2.ActionTypes['force_remove'].e), + }, dm2.ActionTypes['force_remove'].i18n), ]; return E('td', { 'class': 'td middle cbi-section-actions' }, E('div', btns)); }; @@ -179,7 +179,7 @@ return dm2.dv.extend({ o = netSec.option(form.DummyValue, 'Name', _('Name')); - o = netSec.option(form.DummyValue, 'Labels', _('Labels') + ' đŸˇī¸'); + o = netSec.option(form.DummyValue, 'Labels', _('Labels')); o.cfgvalue = view.objectCfgValueTT; o = netSec.option(form.DummyValue, '_container', _('Containers')); diff --git a/htdocs/luci-static/resources/view/dockerman/volumes.js b/htdocs/luci-static/resources/view/dockerman/volumes.js index 7734a43..f43fc04 100644 --- a/htdocs/luci-static/resources/view/dockerman/volumes.js +++ b/htdocs/luci-static/resources/view/dockerman/volumes.js @@ -62,7 +62,7 @@ return dm2.dv.extend({ s.addremove = false; s.anonymous = true; const prune = s.option(form.Button, '_prune', null); - prune.inputtitle = `${dm2.ActionTypes['prune'].i18n} ${dm2.ActionTypes['prune'].e}`; + prune.inputtitle = `${dm2.ActionTypes['prune'].i18n}`; prune.inputstyle = 'negative'; prune.onclick = L.bind(function(sid, ev) { @@ -106,7 +106,7 @@ return dm2.dv.extend({ volSec.addremove = true; volSec.sortable = true; volSec.filterrow = true; - volSec.addbtntitle = `${dm2.ActionTypes['create'].i18n} ${dm2.ActionTypes['create'].e}`; + volSec.addbtntitle = `${dm2.ActionTypes['create'].i18n}`; volSec.footer = [ `${_('Total')} ${volume_list.length}`, ]; @@ -145,7 +145,7 @@ return dm2.dv.extend({ E('button', { 'class': 'cbi-button', 'click': ui.hideModal - }, ['↩']), + }, [_('Cancel')]), ' ', E('button', { 'class': 'cbi-button cbi-button-positive', @@ -173,7 +173,7 @@ return dm2.dv.extend({ } ); }) - }, [dm2.Types['volume'].sub['create'].e]) + }, [dm2.Types['volume'].sub['create'].i18n]) ]) ]); }; @@ -216,7 +216,7 @@ return dm2.dv.extend({ 'class': 'cbi-button view', 'title': dm2.ActionTypes['inspect'].i18n, 'click': ui.createHandlerFn(this, this.handleInspect, sid), - }, [dm2.ActionTypes['inspect'].e]), + }, [dm2.ActionTypes['inspect'].i18n]), E('div', { 'style': 'width: 20px', @@ -228,19 +228,19 @@ return dm2.dv.extend({ 'title': dm2.ActionTypes['remove'].i18n, 'click': ui.createHandlerFn(this, this.handleRemove, sid, false), 'disabled': volume?._disable_delete, - }, [dm2.ActionTypes['remove'].e]), + }, [dm2.ActionTypes['remove'].i18n]), E('button', { 'class': 'cbi-button cbi-button-negative important remove', 'title': dm2.ActionTypes['force_remove'].i18n, 'click': ui.createHandlerFn(this, this.handleRemove, sid, true), - }, [dm2.ActionTypes['force_remove'].e]), + }, [dm2.ActionTypes['force_remove'].i18n]), ]; return E('td', { 'class': 'td middle cbi-section-actions' }, E('div', btns)); }; volSec.option(form.DummyValue, '_name', _('Name')); - o = volSec.option(form.DummyValue, 'Labels', _('Labels') + ' đŸˇī¸'); + o = volSec.option(form.DummyValue, 'Labels', _('Labels')); o.cfgvalue = view.objectCfgValueTT; volSec.option(form.DummyValue, 'Driver', _('Driver'));