Initial commit
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
<html>
|
||||
|
||||
<!-- these 4 files always have to be included -->
|
||||
<link rel="stylesheet" type="text/css" href="../../lib/css/themes/jquery-ui/redmond/jquery-ui.min.css"/>
|
||||
<script type="text/javascript" src="../../lib/js/jquery-1.11.1.min.js"></script>
|
||||
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
|
||||
<script type="text/javascript" src="../../lib/js/jquery-ui-1.10.3.full.min.js"></script>
|
||||
|
||||
<!-- these two file always have to be included -->
|
||||
<link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
|
||||
<script type="text/javascript" src="../../js/translate.js"></script>
|
||||
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
|
||||
<script type="text/javascript" src="words.js"></script>
|
||||
|
||||
<style>
|
||||
.table_header {
|
||||
background-color: blue;
|
||||
color: white;
|
||||
}
|
||||
.ip {
|
||||
width: 150px;
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
<!-- you have to define 2 functions in the global scope: -->
|
||||
<script type="text/javascript">
|
||||
var devices = [];
|
||||
|
||||
function setValue(id, value, onChange) {
|
||||
var $value = $('#' + id + '.value');
|
||||
if ($value.attr('type') === 'checkbox') {
|
||||
$value.prop('checked', value).change(function() {
|
||||
onChange();
|
||||
});
|
||||
} else {
|
||||
$value.val(value).on('change', function() {
|
||||
onChange();
|
||||
}).on('keyup', function() {
|
||||
onChange();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// the function loadSettings has to exist ...
|
||||
function load(settings, onChange) {
|
||||
if (!settings) return;
|
||||
|
||||
devices = settings.devices || [];
|
||||
|
||||
if (settings.maxMemory === undefined) settings.maxMemory = 128;
|
||||
|
||||
for (var key in settings) {
|
||||
if (settings.hasOwnProperty(key)) {
|
||||
setValue(key, settings[key], onChange);
|
||||
}
|
||||
}
|
||||
$('#update').button().click(function () {
|
||||
sendTo(null, 'update', null, function (error) {
|
||||
if (!error) {
|
||||
showMessage(_('Successfully updated'))
|
||||
} else {
|
||||
showMessage(_('Cannot update:') + _(error))
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var $libs = $('#libraries');
|
||||
|
||||
if (common.npmLibs){
|
||||
$libs.val(common.npmLibs.join(', '));
|
||||
}
|
||||
|
||||
$libs.on('change', function () {
|
||||
onChange();
|
||||
}).on('keyup', function () {
|
||||
$(this).trigger('change');
|
||||
});
|
||||
|
||||
getIsAdapterAlive(function (isAlive) {
|
||||
if (!isAlive) $('#update').button('disable');
|
||||
});
|
||||
onChange(false);
|
||||
}
|
||||
|
||||
function save(callback) {
|
||||
var obj = {};
|
||||
$('.value').each(function () {
|
||||
var $this = $(this);
|
||||
if ($this.attr('type') === 'checkbox') {
|
||||
obj[$this.attr('id')] = $this.prop('checked');
|
||||
} else {
|
||||
obj[$this.attr('id')] = $this.val();
|
||||
}
|
||||
});
|
||||
|
||||
var libs = $('#libraries').val().split(',');
|
||||
var common = {npmLibs: []};
|
||||
for (var l = 0; l < libs.length; l++) {
|
||||
common.npmLibs.push(libs[l].trim());
|
||||
}
|
||||
|
||||
callback(obj, {localLink: 'http://%ip%:' + obj.port, npmLibs: common.npmLibs});
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- you have to put your config page in a div with id adapter-container -->
|
||||
<div id="adapter-container">
|
||||
<table><tr>
|
||||
<td><img src="node-red.png" width="64" height="64"></td>
|
||||
<td style="padding-top: 20px;padding-left: 10px"><h3 class="translate">node-red adapter settings</h3></td>
|
||||
</tr></table>
|
||||
|
||||
<h4 class="translate">node-red settings</h4>
|
||||
<table>
|
||||
<tr><td><label class="translate" for="port">Web server port:</label></td><td colspan="2"><input class="value" id="port" type="number" min="1" max="65565"/></td></tr>
|
||||
<tr>
|
||||
<td><label class="translate" for="libraries">Additional npm modules:</label></td><td><input id="libraries" class="value" style="width: 100%"/></td><td class="translate">Divided by comma</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label class="translate" for="httpRoot">http root directory:</label></td><td><input id="httpRoot" class="value" style="width: 100%"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label class="translate" for="valueConvert">Convert values to string:</label></td><td> <input class="value" id="valueConvert" type="checkbox" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label class="translate" for="maxMemory">Max allocated RAM:</label></td><td> <input class="value" id="maxMemory" type="number" min="32"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h4 class="translate">node-red update select dialog</h4>
|
||||
<button id="update" class="translateB">Update select dialog</button>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,271 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<!-- Materialze style -->
|
||||
<link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
|
||||
|
||||
<script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
|
||||
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../js/translate.js"></script>
|
||||
<script type="text/javascript" src="../../lib/js/materialize.js"></script>
|
||||
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
|
||||
<script type="text/javascript" src="words.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
// https://stackoverflow.com/questions/14733374/how-to-generate-md5-file-hash-on-javascript
|
||||
var MD5 = function (d) {
|
||||
var result = MM(V(Y(X(d), 8 * d.length)));
|
||||
return result.toLowerCase()
|
||||
};
|
||||
|
||||
function MM(d) {
|
||||
var f = '';
|
||||
for (var _, m = '0123456789ABCDEF', r = 0; r < d.length; r++) {
|
||||
_ = d.charCodeAt(r);
|
||||
f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _);
|
||||
}
|
||||
return f;
|
||||
}
|
||||
|
||||
function X(d) {
|
||||
var _;
|
||||
for (_ = Array(d.length >> 2), m = 0; m < _.length; m++) _[m] = 0;
|
||||
for (m = 0; m < 8 * d.length; m += 8) _[m >> 5] |= (255 & d.charCodeAt(m / 8)) << m % 32;
|
||||
return _;
|
||||
}
|
||||
|
||||
function V(d) {
|
||||
var _;
|
||||
for (_ = '', m = 0; m < 32 * d.length; m += 8) {
|
||||
_ += String.fromCharCode(d[m >> 5] >>> m % 32 & 255);
|
||||
}
|
||||
return _;
|
||||
}
|
||||
|
||||
function Y(d, _) {
|
||||
d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4)] = _;
|
||||
for (var m = 1732584193, f = -271733879, r = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {
|
||||
var h = m, t = f, g = r, e = i;
|
||||
f = md5_ii(f = md5_ii(f = md5_ii(f = md5_ii(f = md5_hh(f = md5_hh(f = md5_hh(f = md5_hh(f = md5_gg(f = md5_gg(f = md5_gg(f = md5_gg(f = md5_ff(f = md5_ff(f = md5_ff(f = md5_ff(f, r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 0], 7, -680876936), f, r, d[n + 1], 12, -389564586), m, f, d[n + 2], 17, 606105819), i, m, d[n + 3], 22, -1044525330), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 4], 7, -176418897), f, r, d[n + 5], 12, 1200080426), m, f, d[n + 6], 17, -1473231341), i, m, d[n + 7], 22, -45705983), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 8], 7, 1770035416), f, r, d[n + 9], 12, -1958414417), m, f, d[n + 10], 17, -42063), i, m, d[n + 11], 22, -1990404162), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 12], 7, 1804603682), f, r, d[n + 13], 12, -40341101), m, f, d[n + 14], 17, -1502002290), i, m, d[n + 15], 22, 1236535329), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 1], 5, -165796510), f, r, d[n + 6], 9, -1069501632), m, f, d[n + 11], 14, 643717713), i, m, d[n + 0], 20, -373897302), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 5], 5, -701558691), f, r, d[n + 10], 9, 38016083), m, f, d[n + 15], 14, -660478335), i, m, d[n + 4], 20, -405537848), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 9], 5, 568446438), f, r, d[n + 14], 9, -1019803690), m, f, d[n + 3], 14, -187363961), i, m, d[n + 8], 20, 1163531501), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 13], 5, -1444681467), f, r, d[n + 2], 9, -51403784), m, f, d[n + 7], 14, 1735328473), i, m, d[n + 12], 20, -1926607734), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 5], 4, -378558), f, r, d[n + 8], 11, -2022574463), m, f, d[n + 11], 16, 1839030562), i, m, d[n + 14], 23, -35309556), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 1], 4, -1530992060), f, r, d[n + 4], 11, 1272893353), m, f, d[n + 7], 16, -155497632), i, m, d[n + 10], 23, -1094730640), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 13], 4, 681279174), f, r, d[n + 0], 11, -358537222), m, f, d[n + 3], 16, -722521979), i, m, d[n + 6], 23, 76029189), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 9], 4, -640364487), f, r, d[n + 12], 11, -421815835), m, f, d[n + 15], 16, 530742520), i, m, d[n + 2], 23, -995338651), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 0], 6, -198630844), f, r, d[n + 7], 10, 1126891415), m, f, d[n + 14], 15, -1416354905), i, m, d[n + 5], 21, -57434055), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 12], 6, 1700485571), f, r, d[n + 3], 10, -1894986606), m, f, d[n + 10], 15, -1051523), i, m, d[n + 1], 21, -2054922799), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 8], 6, 1873313359), f, r, d[n + 15], 10, -30611744), m, f, d[n + 6], 15, -1560198380), i, m, d[n + 13], 21, 1309151649), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 4], 6, -145523070), f, r, d[n + 11], 10, -1120210379), m, f, d[n + 2], 15, 718787259), i, m, d[n + 9], 21, -343485551), m = safe_add(m, h), f = safe_add(f, t), r = safe_add(r, g), i = safe_add(i, e);
|
||||
}
|
||||
return Array(m, f, r, i)
|
||||
}
|
||||
|
||||
function md5_cmn(d, _, m, f, r, i) {
|
||||
return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r), m)
|
||||
}
|
||||
|
||||
function md5_ff(d, _, m, f, r, i, n) {
|
||||
return md5_cmn(_ & m | ~_ & f, d, _, r, i, n)
|
||||
}
|
||||
|
||||
function md5_gg(d, _, m, f, r, i, n) {
|
||||
return md5_cmn(_ & f | m & ~f, d, _, r, i, n)
|
||||
}
|
||||
|
||||
function md5_hh(d, _, m, f, r, i, n) {
|
||||
return md5_cmn(_ ^ m ^ f, d, _, r, i, n)
|
||||
}
|
||||
|
||||
function md5_ii(d, _, m, f, r, i, n) {
|
||||
return md5_cmn(m ^ (_ | ~f), d, _, r, i, n)
|
||||
}
|
||||
|
||||
function safe_add(d, _) {
|
||||
var m = (65535 & d) + (65535 & _);
|
||||
return (d >> 16) + (_ >> 16) + (m >> 16) << 16 | 65535 & m
|
||||
}
|
||||
|
||||
function bit_rol(d, _) {
|
||||
return d << _ | d >>> 32 - _
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<!-- you have to define 2 functions in the global scope: -->
|
||||
<script type="text/javascript">
|
||||
var oldPass = '';
|
||||
function setValue(id, value, onChange) {
|
||||
var $value = $('#' + id + '.value');
|
||||
if ($value.attr('type') === 'checkbox') {
|
||||
$value.prop('checked', value).change(function() {
|
||||
onChange();
|
||||
});
|
||||
} else {
|
||||
$value.val(value).on('change', function() {
|
||||
onChange();
|
||||
}).on('keyup', function() {
|
||||
onChange();
|
||||
});
|
||||
}
|
||||
}
|
||||
function chips2list(selector) {
|
||||
var data = $(selector).chips('getData');
|
||||
var text = [];
|
||||
for (var lib = 0; lib < data.length; lib++) {
|
||||
text.push(data[lib].tag);
|
||||
}
|
||||
return text.join(' ');
|
||||
}
|
||||
function list2chips(selector, list, onChange) {
|
||||
var chips = list.split(/[,;\s]+/);
|
||||
var data = [];
|
||||
for (var c = 0; c < chips.length; c++) {
|
||||
if (chips[c] && chips[c].trim()) {
|
||||
data.push({tag: chips[c].trim()});
|
||||
}
|
||||
}
|
||||
$(selector).chips({
|
||||
data: data,
|
||||
placeholder: _('Module names'),
|
||||
secondaryPlaceholder: _('Add module'),
|
||||
onChipAdd: onChange,
|
||||
onChipDelete: onChange
|
||||
});
|
||||
}
|
||||
|
||||
// the function loadSettings has to exist ...
|
||||
function load(settings, onChange) {
|
||||
if (!settings) return;
|
||||
|
||||
if (settings.user === undefined) {
|
||||
settings.user = '';
|
||||
}
|
||||
if (settings.pass === undefined) {
|
||||
settings.pass = '';
|
||||
}
|
||||
if (settings.bind === undefined) {
|
||||
settings.bind = '0.0.0.0';
|
||||
}
|
||||
if (settings.maxMemory === undefined) {
|
||||
settings.maxMemory = 128;
|
||||
}
|
||||
oldPass = settings.pass;
|
||||
if (settings.pass) {
|
||||
settings.pass = '__pass__';
|
||||
}
|
||||
|
||||
for (var key in settings) {
|
||||
if (settings.hasOwnProperty(key)) {
|
||||
setValue(key, settings[key], onChange);
|
||||
}
|
||||
}
|
||||
$('#update').click(function () {
|
||||
sendTo(null, 'update', null, function (error) {
|
||||
if (!error) {
|
||||
showMessage(_('Successfully updated'))
|
||||
} else {
|
||||
showMessage(_('Cannot update:') + _(error))
|
||||
}
|
||||
});
|
||||
});
|
||||
getIPs(function (ips) {
|
||||
for (var i = 0; i < ips.length; i++) {
|
||||
$('#bind').append('<option value="' + ips[i].address + '">' + ips[i].name + '</option>');
|
||||
}
|
||||
$('#bind.value').val(settings.bind).select();
|
||||
});
|
||||
|
||||
if (typeof common.npmLibs === 'object') {
|
||||
common.npmLibs = common.npmLibs.join(';');
|
||||
}
|
||||
|
||||
list2chips('.libraries', common.npmLibs || '', onChange);
|
||||
|
||||
getIsAdapterAlive(function (isAlive) {
|
||||
if (!isAlive) {
|
||||
$('#update').addClass('disabled');
|
||||
}
|
||||
});
|
||||
onChange(false);
|
||||
}
|
||||
|
||||
function save(callback) {
|
||||
var obj = {};
|
||||
$('.value').each(function () {
|
||||
var $this = $(this);
|
||||
if ($this.attr('type') === 'checkbox') {
|
||||
obj[$this.attr('id')] = $this.prop('checked');
|
||||
} else {
|
||||
obj[$this.attr('id')] = $this.val();
|
||||
}
|
||||
});
|
||||
|
||||
if (obj.pass) {
|
||||
if (obj.pass !== '__pass__') {
|
||||
obj.pass = MD5(obj.pass);
|
||||
} else {
|
||||
obj.pass = oldPass;
|
||||
}
|
||||
}
|
||||
|
||||
common.npmLibs = chips2list('.libraries');
|
||||
|
||||
callback(obj, {localLink: 'http://%ip%:' + obj.port, npmLibs: common.npmLibs});
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="m adapter-container">
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="row">
|
||||
<div class="col s6">
|
||||
<img src="node-red.png" class="logo">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-field col s12 m8 l6">
|
||||
<label class="translate">Additional npm modules:</label>
|
||||
<div class="chips libraries"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-field col s12 m8 l4">
|
||||
<select class="value" id="bind"></select>
|
||||
<label class="translate" for="bind">IP:</label>
|
||||
</div>
|
||||
<div class="input-field col s12 m4 l2">
|
||||
<input class="value" id="port" type="number" min="1" max="65565"/>
|
||||
<label class="translate" for="port">Web server port:</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-field col s12 m4 l3">
|
||||
<input id="user" class="value" type="text"/>
|
||||
<label class="translate" for="user">User</label>
|
||||
<span class="translate">Leave blank to disable basic authentication</span>
|
||||
</div>
|
||||
<div class="input-field col s12 m4 l3">
|
||||
<input id="pass" class="value" type="password"/>
|
||||
<label class="translate" for="pass">Password</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-field col s12 m4 l3">
|
||||
<input id="httpRoot" class="value" type="text" style="width: 100%"/>
|
||||
<label class="translate" for="httpRoot">http root directory:</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="input-field col s12 m4 l3">
|
||||
<input class="value" id="valueConvert" type="checkbox" />
|
||||
<label class="translate" for="valueConvert">Convert values to string:</label>
|
||||
</div>
|
||||
<div class="input-field col s12 m4 l3">
|
||||
<input class="value" id="maxMemory" type="number" min="32"/>
|
||||
<label class="translate" for="maxMemory">Max allocated RAM:</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<a id="update" class="waves-effect waves-light btn"><i class="material-icons right">cloud</i><span class="translate">Update select dialog</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
@@ -0,0 +1,20 @@
|
||||
// DO NOT EDIT THIS FILE!!! IT WILL BE AUTOMATICALLY GENERATED FROM src/i18n
|
||||
/*global systemDictionary:true */
|
||||
'use strict';
|
||||
|
||||
systemDictionary = {
|
||||
"node-red settings": { "en": "node-red settings", "de": "node-red Einstellungen", "ru": "node-red Настройки", "pt": "configurações de nó vermelho", "nl": "node-red instellingen", "fr": "paramètres de node-red", "it": "impostazioni del node-red", "es": "configuración de node-red", "pl": "ustawienia node-red"},
|
||||
"Web server port:": { "en": "Web server port", "de": "Web-Server-Port", "ru": "Порт веб сервера", "pt": "Porta do servidor da Web", "nl": "Webserverpoort", "fr": "Port du serveur Web", "it": "Porta del server Web", "es": "Puerto del servidor web", "pl": "Port serwera internetowego"},
|
||||
"node-red update select dialog": { "en": "node-red update select dialog", "de": "node-red SelectID Dialog aktualisieren", "ru": "Обновить переменные в диалоге node-red", "pt": "caixa de diálogo de seleção de atualização do nó-vermelho", "nl": "update select dialoogvenster", "fr": "boîte de dialogue de sélection de mise à jour de noeud", "it": "finestra di dialogo di selezione aggiornamento node-red", "es": "diálogo de selección de actualización node-red", "pl": "okno dialogowe aktualizacji uaktualnienia węzła"},
|
||||
"Update select dialog": { "en": "Update select dialog", "de": "Update Dialog um ID zu selektieren", "ru": "Обновить переменные в диалоге выбора объектов", "pt": "Atualizar caixa de diálogo de seleção", "nl": "Update select dialoogvenster", "fr": "Mettre à jour le dialogue", "it": "Aggiorna la finestra di selezione", "es": "Actualizar diálogo de selección", "pl": "Zaktualizuj wybrane okno dialogowe"},
|
||||
"Divided by comma": { "en": "Divided by comma", "de": "Getrennt mit Komma", "ru": "Через запятую", "pt": "Dividido por vírgula", "nl": "Verdeeld door een komma", "fr": "Divisé par une virgule", "it": "Diviso in virgola", "es": "Dividido por coma", "pl": "Podzielone przecinkiem"},
|
||||
"Additional npm modules:": { "en": "Additional npm modules", "de": "Zusätzliche NPM-Module", "ru": "Дополнительные NPM Модули", "pt": "Módulos npm adicionais", "nl": "Extra npm-modules", "fr": "Modules NPM supplémentaires", "it": "Ulteriori moduli npm", "es": "Módulos npm adicionales", "pl": "Dodatkowe moduły npm"},
|
||||
"http root directory:": { "en": "http root directory", "de": "http Stammpfad", "ru": "http root directory", "pt": "diretório raiz http", "nl": "http root directory", "fr": "répertoire racine http", "it": "directory root http", "es": "directorio raíz http", "pl": "główny katalog http"},
|
||||
"Convert values to string:": { "en": "Convert ioBroker values to string", "de": "ioBroker-Werte in String konvertieren:", "ru": "Конвертировать значения из ioBroker в строки", "pt": "Converter valores de ioBroker em string", "nl": "IoBroker-waarden converteren naar tekenreeks", "fr": "Convertir les valeurs de ioBroker en chaîne", "it": "Converti i valori di ioBroker in stringa", "es": "Convierta los valores de ioBroker en una cadena", "pl": "Konwertuj wartości ioBroker na ciąg"},
|
||||
"Add module": { "en": "Add module", "de": "Modul hinzufügen", "ru": "Добавить модуль", "pt": "Adicionar módulo", "nl": "Module toevoegen", "fr": "Ajouter un module", "it": "Aggiungi modulo", "es": "Agregar módulo", "pl": "Dodaj moduł"},
|
||||
"Max allocated RAM:": { "en": "Max allocated RAM", "de": "Max zugewiesener RAM", "ru": "Выделено RAM", "pt": "RAM alocada máxima", "nl": "Max toegewezen RAM", "fr": "Max allouée RAM", "it": "RAM allocata massima", "es": "RAM máxima asignada", "pl": "Maksymalna przydzielona pamięć RAM"},
|
||||
"Module names": { "en": "Module names", "de": "Modulnamen", "ru": "Имена модулей", "pt": "Nomes de módulos", "nl": "Module namen", "fr": "Noms de modules", "it": "Nomi dei moduli", "es": "Nombres de módulos", "pl": "Nazwy modułów"},
|
||||
"User": { "en": "User", "de": "Benutzer", "ru": "Имя пользователя", "pt": "Do utilizador", "nl": "Gebruiker", "fr": "Utilisateur", "it": "Utente", "es": "Usuario", "pl": "Użytkownik"},
|
||||
"Leave blank to disable basic authentication": { "en": "Leave blank to disable basic authentication", "de": "Leer lassen, um die Basic-Authentication zu deaktivieren", "ru": "Оставить пустым, чтобы отключить basic authentication", "pt": "Deixe em branco para desativar a autenticação básica", "nl": "Laat dit leeg om basisverificatie uit te schakelen", "fr": "Laissez vide pour désactiver l'authentification de base", "it": "Lascia vuoto per disabilitare l'autenticazione di base", "es": "Dejar en blanco para deshabilitar la autenticación básica", "pl": "Pozostaw puste, aby wyłączyć podstawowe uwierzytelnianie"},
|
||||
"Password": { "en": "Password", "de": "Passwort", "ru": "Пароль", "pt": "Senha", "nl": "Wachtwoord", "fr": "Mot de passe", "it": "Parola d'ordine", "es": "Contraseña", "pl": "Hasło"},
|
||||
};
|
||||
Reference in New Issue
Block a user