mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-31 08:15:13 +08:00
🐶 Sync 2026-09-17 00:01:35
This commit is contained in:
1 parent
d0c748add2
commit
6c6ea07309
106 files changed
+7551
-5770
No files matched your search
+2
-2
@@ -5,8 +5,8 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=hysteria
|
PKG_NAME:=hysteria
|
||||||
PKG_VERSION:=2.12.2
|
PKG_VERSION:=2.12.3
|
||||||
PKG_RELEASE:=16
|
PKG_RELEASE:=17
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://codeload.github.com/apernet/hysteria/tar.gz/app/v$(PKG_VERSION)?
|
PKG_SOURCE_URL:=https://codeload.github.com/apernet/hysteria/tar.gz/app/v$(PKG_VERSION)?
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ const outbound_type = [
|
|||||||
['wireguard', _('WireGuard') + ' - ' + _('UDP')], // Endpoint
|
['wireguard', _('WireGuard') + ' - ' + _('UDP')], // Endpoint
|
||||||
['tailscale', _('Tailscale') + ' - ' + _('UDP')], // Endpoint
|
['tailscale', _('Tailscale') + ' - ' + _('UDP')], // Endpoint
|
||||||
['masque', _('Masque') + ' - ' + _('UDP')], // Endpoint // https://blog.cloudflare.com/post-quantum-warp/
|
['masque', _('Masque') + ' - ' + _('UDP')], // Endpoint // https://blog.cloudflare.com/post-quantum-warp/
|
||||||
|
['easytier', _('EasyTier') + ' - ' + _('TCP/UDP')], // Endpoint
|
||||||
['ssh', _('SSH') + ' - ' + _('TCP')]
|
['ssh', _('SSH') + ' - ' + _('TCP')]
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -1634,6 +1635,28 @@ function renderResDownload(section_id) {
|
|||||||
return El;
|
return El;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderResLink(section_id) {
|
||||||
|
const section_type = this.section.sectiontype;
|
||||||
|
const type = uci.get(this.config, section_id, 'type');
|
||||||
|
|
||||||
|
let El = E([
|
||||||
|
E('span', {
|
||||||
|
title: this.readonly ? this.readonly : null
|
||||||
|
}, [
|
||||||
|
E('button', {
|
||||||
|
class: 'cbi-button cbi-button-apply',
|
||||||
|
disabled: (this.readonly !== false || type === 'inline') || null,
|
||||||
|
click: ui.createHandlerFn(this, (section_type, section_id) => {
|
||||||
|
let path = encodeURIComponent(`${HM_DIR.replace(/^\//, '')}/${section_type}`);
|
||||||
|
return window.open(`${window.location.origin}/tinyfilemanager/index.php?p=${path}&view=${section_id}`, '_blank', 'noopener');
|
||||||
|
}, section_type, section_id)
|
||||||
|
}, [ _('🔗') ])
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
|
||||||
|
return El;
|
||||||
|
}
|
||||||
|
|
||||||
function handleGenKey(option) {
|
function handleGenKey(option) {
|
||||||
const section_id = this.section.section;
|
const section_id = this.section.section;
|
||||||
const type = this.section.getOption('type')?.formvalue(section_id);
|
const type = this.section.getOption('type')?.formvalue(section_id);
|
||||||
@@ -2181,6 +2204,7 @@ return baseclass.extend({
|
|||||||
updateStatus,
|
updateStatus,
|
||||||
getDashURL,
|
getDashURL,
|
||||||
renderResDownload,
|
renderResDownload,
|
||||||
|
renderResLink,
|
||||||
handleGenKey,
|
handleGenKey,
|
||||||
handleReload,
|
handleReload,
|
||||||
handleRemoveIdles,
|
handleRemoveIdles,
|
||||||
|
|||||||
@@ -517,6 +517,7 @@ return view.extend({
|
|||||||
so.value('gvisor', _('gVisor'), _('Based on google/gvisor.'));
|
so.value('gvisor', _('gVisor'), _('Based on google/gvisor.'));
|
||||||
so.value('mixed', _('Mixed'), _('Mixed <code>system</code> TCP stack and <code>gVisor</code> UDP stack.'));
|
so.value('mixed', _('Mixed'), _('Mixed <code>system</code> TCP stack and <code>gVisor</code> UDP stack.'));
|
||||||
}
|
}
|
||||||
|
so.value('mips', _('mihomo IP stack (MIPS)'));
|
||||||
so.default = 'system';
|
so.default = 'system';
|
||||||
so.rmempty = false;
|
so.rmempty = false;
|
||||||
|
|
||||||
|
|||||||
@@ -207,11 +207,14 @@ class VlessEncryptionClient {
|
|||||||
return view.extend({
|
return view.extend({
|
||||||
load() {
|
load() {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
uci.load('fchomo')
|
uci.load('fchomo'),
|
||||||
|
hm.getFeatures()
|
||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
|
|
||||||
render(data) {
|
render(data) {
|
||||||
|
const features = data[1];
|
||||||
|
|
||||||
let m, s, o, ss, so;
|
let m, s, o, ss, so;
|
||||||
|
|
||||||
m = new form.Map('fchomo', _('Edit outbound'));
|
m = new form.Map('fchomo', _('Edit outbound'));
|
||||||
@@ -274,12 +277,12 @@ return view.extend({
|
|||||||
so = ss.taboption('field_general', form.Value, 'server', _('Server address'));
|
so = ss.taboption('field_general', form.Value, 'server', _('Server address'));
|
||||||
so.datatype = 'host';
|
so.datatype = 'host';
|
||||||
so.rmempty = false;
|
so.rmempty = false;
|
||||||
so.depends({type: /^(rematch|direct|zerotier|tailscale)$/, '!reverse': true});
|
so.depends({type: /^(rematch|direct|zerotier|tailscale|easytier)$/, '!reverse': true});
|
||||||
|
|
||||||
so = ss.taboption('field_general', form.Value, 'port', _('Port'));
|
so = ss.taboption('field_general', form.Value, 'port', _('Port'));
|
||||||
so.datatype = 'port';
|
so.datatype = 'port';
|
||||||
so.rmempty = false;
|
so.rmempty = false;
|
||||||
so.depends({type: /^(rematch|direct|mieru|zerotier|tailscale)$/, '!reverse': true});
|
so.depends({type: /^(rematch|direct|mieru|zerotier|tailscale|easytier)$/, '!reverse': true});
|
||||||
|
|
||||||
/* Rematch fields */
|
/* Rematch fields */
|
||||||
// https://github.com/MetaCubeX/mihomo/pull/2862
|
// https://github.com/MetaCubeX/mihomo/pull/2862
|
||||||
@@ -856,6 +859,12 @@ return view.extend({
|
|||||||
so.depends('type', 'zerotier');
|
so.depends('type', 'zerotier');
|
||||||
so.modalonly = true;
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.TextValue, 'zerotier_identity_secret', 'identity.secret',
|
||||||
|
_('Used to replace the contents of default %s.').format('<code>identity.secret</code> file'));
|
||||||
|
so.placeholder = '0123456789:0:public-key:private-key';
|
||||||
|
so.depends('type', 'zerotier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
so = ss.taboption('field_general', form.TextValue, 'zerotier_planet_file', 'Planet file',
|
so = ss.taboption('field_general', form.TextValue, 'zerotier_planet_file', 'Planet file',
|
||||||
_('Used to replace the built-in official %s.').format('<code>Earth</code> Planet file'));
|
_('Used to replace the built-in official %s.').format('<code>Earth</code> Planet file'));
|
||||||
so.placeholder = _('Add the base64 text of the planet file here.');
|
so.placeholder = _('Add the base64 text of the planet file here.');
|
||||||
@@ -1024,6 +1033,149 @@ return view.extend({
|
|||||||
so.depends('type', 'masque');
|
so.depends('type', 'masque');
|
||||||
so.modalonly = true;
|
so.modalonly = true;
|
||||||
|
|
||||||
|
/* EasyTier fields */
|
||||||
|
so = ss.taboption('field_general', form.DummyValue, '_easytier_doc', null);
|
||||||
|
so.load = function() {
|
||||||
|
return '<a target="_blank" href="%s" rel="noreferrer noopener">%s</a>'
|
||||||
|
.format('https://easytier.cn/guide/introduction.html', _('Configuration Document'));
|
||||||
|
}
|
||||||
|
so.rawhtml = true;
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Value, 'easytier_network_name', _('Network name'));
|
||||||
|
so.rmempty = false;
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Value, 'easytier_network_secret', _('Network secret'));
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Flag, 'easytier_private_mode', _('Private network'),
|
||||||
|
_('Only nodes using the same %s and %s as this network are permitted to perform a handshake or relay traffic through this node.')
|
||||||
|
.format(_('Network name'), _('Network secret')));
|
||||||
|
so.default = so.disabled;
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Value, 'easytier_hostname', _('Hostname'));
|
||||||
|
so.datatype = 'hostname';
|
||||||
|
so.placeholder = 'mihomo';
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.DynamicList, 'easytier_peers', _('Peers'));
|
||||||
|
so.placeholder = 'tcp://192.0.2.10:11010';
|
||||||
|
so.validate = hm.validateUrl;
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Flag, 'easytier_secure_mode', _('Secure Mode'));
|
||||||
|
so.default = so.disabled;
|
||||||
|
so.validate = function(section_id, value) {
|
||||||
|
const secure_mode = this.getUIElement(section_id).node.querySelector('input');
|
||||||
|
const peers = this.section.getOption('easytier_peers').formvalue(section_id);
|
||||||
|
const local_private_key = this.section.getOption('easytier_local_private_key').formvalue(section_id);
|
||||||
|
const local_public_key = this.section.getOption('easytier_local_public_key').formvalue(section_id);
|
||||||
|
|
||||||
|
// Force enabled
|
||||||
|
if ((local_private_key && local_public_key) || peers.filter(e => new URL(e).searchParams.get('peer-public-key')).length > 0) {
|
||||||
|
secure_mode.checked = true;
|
||||||
|
secure_mode.disabled = true;
|
||||||
|
} else
|
||||||
|
secure_mode.removeAttribute('disabled');
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', hm.GenValue, 'easytier_local_private_key', _('Client private key'),
|
||||||
|
_('Base64 encoded X25519 private key.'));
|
||||||
|
so.hm_options = {
|
||||||
|
type: 'wg-keypair',
|
||||||
|
callback: function(result) {
|
||||||
|
return [
|
||||||
|
[this.option, result.private_key],
|
||||||
|
['easytier_local_public_key', result.public_key]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
so.password = true;
|
||||||
|
so.validate = L.bind(hm.validateBase64Key, so, 44);
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', hm.CopyValue, 'easytier_local_public_key', _('Client public key'),
|
||||||
|
_('Base64 encoded X25519 public key.'));
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.DynamicList, 'easytier_exit_nodes', _('Exit nodes'),
|
||||||
|
_('List of exit nodes to use (%s of peer nodes).').format(_('Virtual IPv4 address')) + '</br>' +
|
||||||
|
_('Used to forward traffic to the specified nodes for external access.'));
|
||||||
|
so.datatype = 'ip4addr(1)';
|
||||||
|
so.placeholder = '10.144.0.1';
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.DynamicList, 'easytier_proxy_networks', _('Subnet proxy'),
|
||||||
|
_('List of local subnets (CIDR) to be open to other peers in the EasyTier network.'));
|
||||||
|
so.datatype = 'cidr4';
|
||||||
|
so.placeholder = '10.0.0.0/24';
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Flag, 'easytier_enable_encryption', _('Enable encryption'));
|
||||||
|
so.default = so.enabled;
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.ListValue, 'easytier_encryption_algorithm', _('Encryption algorithm'));
|
||||||
|
so.value('', _('Keep default'));
|
||||||
|
so.value('xor', _('xor'));
|
||||||
|
so.value('chacha20', _('chacha20'));
|
||||||
|
so.value('aes-gcm', _('aes-gcm'));
|
||||||
|
so.value('aes-gcm-256', _('aes-gcm-256'));
|
||||||
|
so.value('openssl-aes128-gcm', _('openssl-aes128-gcm'));
|
||||||
|
so.value('openssl-aes256-gcm', _('openssl-aes256-gcm'));
|
||||||
|
so.value('openssl-chacha20', _('openssl-chacha20'));
|
||||||
|
so.depends('easytier_enable_encryption', '1');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Flag, 'easytier_enable_exit_node', _('As exit node'),
|
||||||
|
_('Allow this node to be an exit node.'));
|
||||||
|
so.default = so.disabled;
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Flag, 'easytier_latency_first', _('Latency first'),
|
||||||
|
_('Ignore the number of intermediate hops and select the path with the lowest total latency.'));
|
||||||
|
so.default = so.disabled;
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Flag, 'easytier_disable_p2p', _('Disable P2P'),
|
||||||
|
_('After disabling, communication will only be possible via relay.'));
|
||||||
|
so.default = so.disabled;
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Flag, 'easytier_accept_dns', _('Enable MagicDNS'),
|
||||||
|
_('Whether to accept DNS configurations distributed by the network.'));
|
||||||
|
so.default = so.disabled;
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_general', form.Value, 'easytier_tld_dns_zone', _('TLD DNS zone'),
|
||||||
|
_('TLD DNS zone used by MagicDNS, default is %s.').format('<code>et.net.</code>') + '</br>' +
|
||||||
|
_('You can add %s in the %s to resolve A/PTR records within the virtual network.').format('<code>et://proxy-name</code>', _('DNS server')) + '</br>' +
|
||||||
|
_('Using this in conjunction with %s is recommended.').format(_('DNS policy')));
|
||||||
|
so.placeholder = 'et.net.';
|
||||||
|
so.depends('easytier_accept_dns', '1');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
/* SSH fields */
|
/* SSH fields */
|
||||||
so = ss.taboption('field_general', form.TextValue, 'ssh_priv_key', _('Priv-key'));
|
so = ss.taboption('field_general', form.TextValue, 'ssh_priv_key', _('Priv-key'));
|
||||||
so.depends('type', 'ssh');
|
so.depends('type', 'ssh');
|
||||||
@@ -1094,9 +1246,9 @@ return view.extend({
|
|||||||
so.depends({type: /^(hysteria2|openvpn|masque)$/});
|
so.depends({type: /^(hysteria2|openvpn|masque)$/});
|
||||||
so.modalonly = true;
|
so.modalonly = true;
|
||||||
|
|
||||||
so = ss.taboption('field_general', form.Flag, 'udp', _('UDP'));
|
so = ss.taboption('field_general', form.Flag, 'udp', _('Force UDP'));
|
||||||
so.default = so.disabled;
|
so.default = so.disabled;
|
||||||
so.depends({type: /^(rematch|direct|socks5|ss|mieru|vmess|vless|trojan|anytls|trusttunnel|zerotier|wireguard|tailscale|masque)$/});
|
so.depends({type: /^(rematch|direct|socks5|ss|mieru|vmess|vless|trojan|anytls|trusttunnel|zerotier|wireguard|tailscale|masque|easytier)$/});
|
||||||
so.depends({type: 'snell', snell_version: /^(3|4|5)$/});
|
so.depends({type: 'snell', snell_version: /^(3|4|5)$/});
|
||||||
so.modalonly = true;
|
so.modalonly = true;
|
||||||
|
|
||||||
@@ -1501,49 +1653,77 @@ return view.extend({
|
|||||||
_('Auto configure firewall'));
|
_('Auto configure firewall'));
|
||||||
so.default = so.enabled;
|
so.default = so.enabled;
|
||||||
so.validate = function(section_id, value) {
|
so.validate = function(section_id, value) {
|
||||||
const primary_port = this.section.getOption('zerotier_primary_port').formvalue(section_id);
|
const type = this.section.getOption('type').formvalue(section_id);
|
||||||
const secondary_port = this.section.getOption('zerotier_secondary_port').formvalue(section_id);
|
|
||||||
const auto_firewall = this.getUIElement(section_id).node.querySelector('input');
|
const auto_firewall = this.getUIElement(section_id).node.querySelector('input');
|
||||||
|
|
||||||
// Force disabled
|
switch (type) {
|
||||||
if ((!primary_port || primary_port <= 0) && (!secondary_port || secondary_port <= 0)) {
|
case 'zerotier':
|
||||||
auto_firewall.checked = false;
|
const primary_port = this.section.getOption('zerotier_primary_port').formvalue(section_id);
|
||||||
auto_firewall.disabled = true;
|
const secondary_port = this.section.getOption('zerotier_secondary_port').formvalue(section_id);
|
||||||
} else
|
|
||||||
auto_firewall.removeAttribute('disabled');
|
// Force disabled
|
||||||
|
if ((!primary_port || primary_port <= 0) && (!secondary_port || secondary_port <= 0)) {
|
||||||
|
auto_firewall.checked = false;
|
||||||
|
auto_firewall.disabled = true;
|
||||||
|
} else
|
||||||
|
auto_firewall.removeAttribute('disabled');
|
||||||
|
break;
|
||||||
|
case 'easytier':
|
||||||
|
const no_listeners = this.section.getOption('endpoint_no_listener').formvalue(section_id);
|
||||||
|
const listeners = this.section.getOption('endpoint_listeners').formvalue(section_id);
|
||||||
|
|
||||||
|
// Force disabled
|
||||||
|
if (no_listeners === '1' || listeners.filter(Boolean).length == 0) {
|
||||||
|
auto_firewall.checked = false;
|
||||||
|
auto_firewall.disabled = true;
|
||||||
|
} else
|
||||||
|
auto_firewall.removeAttribute('disabled');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
so.depends('type', 'zerotier');
|
so.depends({type: /^(zerotier|easytier)$/});
|
||||||
so.modalonly = true;
|
so.modalonly = true;
|
||||||
|
|
||||||
|
const zerotier_listen_port = {
|
||||||
|
load(section_id) {
|
||||||
|
const listen_port = this.map.data.get(this.section.config, section_id, 'zerotier_listen_port') || '';
|
||||||
|
const value = [
|
||||||
|
this.map.data.get(this.section.config, section_id, 'zerotier_primary_port'),
|
||||||
|
this.map.data.get(this.section.config, section_id, 'zerotier_secondary_port')
|
||||||
|
].filter(Boolean).join(',');
|
||||||
|
|
||||||
|
if (listen_port != value) {
|
||||||
|
uci.set(this.section.config, section_id, 'zerotier_listen_port', value);
|
||||||
|
return uci.save()
|
||||||
|
.then(L.bind(this.map.load, this.map))
|
||||||
|
.then(L.bind(this.map.reset, this.map))
|
||||||
|
.catch(() => {});
|
||||||
|
}
|
||||||
|
|
||||||
|
return form.Value.prototype.load.apply(this, arguments);
|
||||||
|
},
|
||||||
|
|
||||||
|
write(section_id, formvalue) {
|
||||||
|
const value = [
|
||||||
|
this.section.getOption('zerotier_primary_port').formvalue(section_id),
|
||||||
|
this.section.getOption('zerotier_secondary_port').formvalue(section_id)
|
||||||
|
].filter(Boolean).join(',');
|
||||||
|
|
||||||
|
uci.set(this.section.config, section_id, 'zerotier_listen_port', value);
|
||||||
|
|
||||||
|
return form.Value.prototype[formvalue ? 'write' : 'remove'].apply(this, arguments);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
so = ss.taboption('field_vpn', form.Value, 'zerotier_primary_port', _('Listen port') + ' (%s)'.format(_('Primary')),
|
so = ss.taboption('field_vpn', form.Value, 'zerotier_primary_port', _('Listen port') + ' (%s)'.format(_('Primary')),
|
||||||
_('%s UDP port. <code>0</code> selects an available port.').format(_('Primary')));
|
_('%s UDP port. <code>0</code> selects an available port.').format(_('Primary')));
|
||||||
so.datatype = 'port';
|
so.datatype = 'port';
|
||||||
so.placeholder = '9993';
|
so.placeholder = '9993';
|
||||||
so.load = function(section_id) {
|
so.load = zerotier_listen_port.load;
|
||||||
const listen_port = this.map.data.get(this.section.config, section_id, 'zerotier_listen_port');
|
so.write = zerotier_listen_port.write;
|
||||||
const value = [
|
so.remove = zerotier_listen_port.write;
|
||||||
this.map.data.get(this.section.config, section_id, 'zerotier_primary_port'),
|
|
||||||
this.map.data.get(this.section.config, section_id, 'zerotier_secondary_port')
|
|
||||||
].filter(Boolean).join(',');
|
|
||||||
|
|
||||||
if (listen_port !== value) {
|
|
||||||
uci.set(this.section.config, section_id, 'zerotier_listen_port', value);
|
|
||||||
uci.save();
|
|
||||||
}
|
|
||||||
|
|
||||||
return form.Value.prototype.load.apply(this, arguments);
|
|
||||||
}
|
|
||||||
so.write = function(section_id, formvalue) {
|
|
||||||
uci.set(this.section.config, section_id, 'zerotier_listen_port', [
|
|
||||||
this.section.getOption('zerotier_primary_port').formvalue(section_id),
|
|
||||||
this.section.getOption('zerotier_secondary_port').formvalue(section_id)
|
|
||||||
].filter(Boolean).join(','));
|
|
||||||
|
|
||||||
return form.Value.prototype[formvalue ? 'write' : 'remove'].apply(this, arguments);
|
|
||||||
}
|
|
||||||
so.remove = so.write;
|
|
||||||
so.depends('type', 'zerotier');
|
so.depends('type', 'zerotier');
|
||||||
so.modalonly = true;
|
so.modalonly = true;
|
||||||
|
|
||||||
@@ -1552,32 +1732,62 @@ return view.extend({
|
|||||||
_('<code>-1</code> disables it.'));
|
_('<code>-1</code> disables it.'));
|
||||||
so.datatype = 'or(port, -1)';
|
so.datatype = 'or(port, -1)';
|
||||||
so.placeholder = '0';
|
so.placeholder = '0';
|
||||||
so.load = function(section_id) {
|
so.load = zerotier_listen_port.load;
|
||||||
const listen_port = this.map.data.get(this.section.config, section_id, 'zerotier_listen_port');
|
so.write = zerotier_listen_port.write;
|
||||||
const value = [
|
so.remove = zerotier_listen_port.write;
|
||||||
this.map.data.get(this.section.config, section_id, 'zerotier_primary_port'),
|
|
||||||
this.map.data.get(this.section.config, section_id, 'zerotier_secondary_port')
|
|
||||||
].filter(Boolean).join(',');
|
|
||||||
|
|
||||||
if (listen_port !== value) {
|
|
||||||
uci.set(this.section.config, section_id, 'zerotier_listen_port', value);
|
|
||||||
uci.save();
|
|
||||||
}
|
|
||||||
|
|
||||||
return form.Value.prototype.load.apply(this, arguments);
|
|
||||||
}
|
|
||||||
so.write = function(section_id, formvalue) {
|
|
||||||
uci.set(this.section.config, section_id, 'zerotier_listen_port', [
|
|
||||||
this.section.getOption('zerotier_primary_port').formvalue(section_id),
|
|
||||||
this.section.getOption('zerotier_secondary_port').formvalue(section_id)
|
|
||||||
].filter(Boolean).join(','));
|
|
||||||
|
|
||||||
return form.Value.prototype[formvalue ? 'write' : 'remove'].apply(this, arguments);
|
|
||||||
}
|
|
||||||
so.remove = so.write;
|
|
||||||
so.depends('type', 'zerotier');
|
so.depends('type', 'zerotier');
|
||||||
so.modalonly = true;
|
so.modalonly = true;
|
||||||
|
|
||||||
|
const easytier_listen_port = {
|
||||||
|
load(section_id) {
|
||||||
|
const listen_port = this.map.data.get(this.section.config, section_id, 'easytier_listen_port') || '';
|
||||||
|
const value = [...new Set(this.map.data.get(this.section.config, section_id, 'endpoint_listeners')?.map(uri => new URL(uri).port) || [])]
|
||||||
|
.filter(Boolean).join(',');
|
||||||
|
|
||||||
|
if (listen_port != value) {
|
||||||
|
uci.set(this.section.config, section_id, 'easytier_listen_port', value);
|
||||||
|
return uci.save()
|
||||||
|
.then(L.bind(this.map.load, this.map))
|
||||||
|
.then(L.bind(this.map.reset, this.map))
|
||||||
|
.catch(() => {});
|
||||||
|
}
|
||||||
|
|
||||||
|
return form.Value.prototype.load.apply(this, arguments);
|
||||||
|
},
|
||||||
|
|
||||||
|
write(section_id, formvalue) {
|
||||||
|
const value = [...new Set(formvalue?.map(uri => new URL(uri).port) || [])]
|
||||||
|
.filter(Boolean).join(',');
|
||||||
|
|
||||||
|
uci.set(this.section.config, section_id, 'easytier_listen_port', value);
|
||||||
|
|
||||||
|
return form.Value.prototype[formvalue ? 'write' : 'remove'].apply(this, arguments);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
so = ss.taboption('field_vpn', form.DynamicList, 'endpoint_listeners', _('Listeners'),
|
||||||
|
_('Only the address %s is valid.').format('0.0.0.0'));
|
||||||
|
so.placeholder = 'tcp://0.0.0.0:11010';
|
||||||
|
so.default = ['tcp://0.0.0.0:11010', 'udp://0.0.0.0:11010'];
|
||||||
|
so.load = easytier_listen_port.load;
|
||||||
|
so.write = easytier_listen_port.write;
|
||||||
|
so.remove = easytier_listen_port.write;
|
||||||
|
so.validate = hm.validateUrl;
|
||||||
|
so.depends({type: 'easytier', endpoint_no_listener: '0'});
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
|
//so = ss.taboption('field_vpn', form.DynamicList, 'endpoint_mapped_listeners', _('Mapped listeners'),
|
||||||
|
// _('list of public IP address of the listeners.'));
|
||||||
|
//so.placeholder = 'tcp://203.0.113.10:11010';
|
||||||
|
//so.validate = hm.validateUrl;
|
||||||
|
//so.depends({type: 'easytier', endpoint_no_listener: '0'});
|
||||||
|
//so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_vpn', form.Flag, 'endpoint_no_listener', _('NO Listener'));
|
||||||
|
so.default = so.enabled;
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
so = ss.taboption('field_vpn', form.Value, 'endpoint_ip', _('Virtual address'),
|
so = ss.taboption('field_vpn', form.Value, 'endpoint_ip', _('Virtual address'),
|
||||||
_('The %s address used by local machine in the %s network.').format(_('IPv4'), _('VPN')));
|
_('The %s address used by local machine in the %s network.').format(_('IPv4'), _('VPN')));
|
||||||
so.datatype = 'or(ip4addr(1), cidr4)';
|
so.datatype = 'or(ip4addr(1), cidr4)';
|
||||||
@@ -1604,6 +1814,13 @@ return view.extend({
|
|||||||
so.depends({type: 'masque', masque_network: /^(|h2)$/});
|
so.depends({type: 'masque', masque_network: /^(|h2)$/});
|
||||||
so.modalonly = true;
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_vpn', form.Value, 'endpoint_ipv4', _('Virtual IPv4 address'),
|
||||||
|
_('The %s address used by local machine in the %s network.').format(_('IPv4'), _('VPN')));
|
||||||
|
so.datatype = 'or(ip4addr(1), cidr4)';
|
||||||
|
so.placeholder = '10.144.0.1/24';
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
so = ss.taboption('field_vpn', form.Value, 'endpoint_ipv6', _('Virtual IPv6 address'),
|
so = ss.taboption('field_vpn', form.Value, 'endpoint_ipv6', _('Virtual IPv6 address'),
|
||||||
_('The %s address used by local machine in the %s network.').format(_('IPv6'), _('VPN')));
|
_('The %s address used by local machine in the %s network.').format(_('IPv6'), _('VPN')));
|
||||||
so.datatype = 'or(ip6addr(1), cidr6)';
|
so.datatype = 'or(ip6addr(1), cidr6)';
|
||||||
@@ -1628,6 +1845,26 @@ return view.extend({
|
|||||||
so.depends({type: 'masque', masque_network: /^(|h2)$/});
|
so.depends({type: 'masque', masque_network: /^(|h2)$/});
|
||||||
so.modalonly = true;
|
so.modalonly = true;
|
||||||
|
|
||||||
|
so = ss.taboption('field_vpn', form.Flag, 'endpoint_dhcp', _('Use DHCP'),
|
||||||
|
_('Use DHCP to obtain IP address.') + '</br>' +
|
||||||
|
_('Auto Enable when %s is empty.').format(_('Virtual IPv4 address')));
|
||||||
|
so.default = so.disabled;
|
||||||
|
so.validate = function(section_id, value) {
|
||||||
|
const ipv4 = this.section.getOption('endpoint_ipv4').formvalue(section_id);
|
||||||
|
const dhcp = this.getUIElement(section_id).node.querySelector('input');
|
||||||
|
|
||||||
|
// Force enabled
|
||||||
|
if (!ipv4) {
|
||||||
|
dhcp.checked = true;
|
||||||
|
dhcp.disabled = true;
|
||||||
|
} else
|
||||||
|
dhcp.removeAttribute('disabled');
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
so.depends('type', 'easytier');
|
||||||
|
so.modalonly = true;
|
||||||
|
|
||||||
so = ss.taboption('field_vpn', form.Value, 'endpoint_mtu', _('MTU'));
|
so = ss.taboption('field_vpn', form.Value, 'endpoint_mtu', _('MTU'));
|
||||||
so.datatype = 'range(0,9000)';
|
so.datatype = 'range(0,9000)';
|
||||||
so.placeholder = '1400';
|
so.placeholder = '1400';
|
||||||
@@ -1646,12 +1883,15 @@ return view.extend({
|
|||||||
case 'masque':
|
case 'masque':
|
||||||
def_mtu = '1280';
|
def_mtu = '1280';
|
||||||
break;
|
break;
|
||||||
|
case 'easytier':
|
||||||
|
def_mtu = '1380';
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
UIEl.node.querySelector('input').placeholder = def_mtu;
|
UIEl.node.querySelector('input').placeholder = def_mtu;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
so.depends({type: /^(zerotier|wireguard)$/});
|
so.depends({type: /^(zerotier|wireguard|easytier)$/});
|
||||||
so.depends({type: 'masque', masque_network: /^(|h2)$/});
|
so.depends({type: 'masque', masque_network: /^(|h2)$/});
|
||||||
so.modalonly = true;
|
so.modalonly = true;
|
||||||
|
|
||||||
@@ -2464,6 +2704,12 @@ return view.extend({
|
|||||||
so.cfgvalue = hm.renderResDownload;
|
so.cfgvalue = hm.renderResDownload;
|
||||||
so.editable = true;
|
so.editable = true;
|
||||||
so.modalonly = false;
|
so.modalonly = false;
|
||||||
|
|
||||||
|
so = ss.option(form.DummyValue, '_link');
|
||||||
|
so.cfgvalue = hm.renderResLink;
|
||||||
|
so.readonly = features.has_luci_app_tinyfilemanager ? false : _('luci-app-tinyfilemanager is not installed, please install it first.');
|
||||||
|
so.editable = true;
|
||||||
|
so.modalonly = false;
|
||||||
/* Provider END */
|
/* Provider END */
|
||||||
|
|
||||||
/* Proxy chain START */
|
/* Proxy chain START */
|
||||||
|
|||||||
@@ -126,12 +126,14 @@ return view.extend({
|
|||||||
load() {
|
load() {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
uci.load('fchomo'),
|
uci.load('fchomo'),
|
||||||
|
hm.getFeatures(),
|
||||||
hm.decompressGzip(hm.rulesetdoc[1], true).then((res) => { return hm.rulesetdoc[0] + hm.encodeBase64(res); })
|
hm.decompressGzip(hm.rulesetdoc[1], true).then((res) => { return hm.rulesetdoc[0] + hm.encodeBase64(res); })
|
||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
|
|
||||||
render(data) {
|
render(data) {
|
||||||
const rulesetdoc = data[1];
|
const features = data[1];
|
||||||
|
const rulesetdoc = data[2];
|
||||||
|
|
||||||
let m, s, o;
|
let m, s, o;
|
||||||
|
|
||||||
@@ -427,6 +429,12 @@ return view.extend({
|
|||||||
o.cfgvalue = hm.renderResDownload;
|
o.cfgvalue = hm.renderResDownload;
|
||||||
o.editable = true;
|
o.editable = true;
|
||||||
o.modalonly = false;
|
o.modalonly = false;
|
||||||
|
|
||||||
|
o = s.option(form.DummyValue, '_link');
|
||||||
|
o.cfgvalue = hm.renderResLink;
|
||||||
|
o.readonly = features.has_luci_app_tinyfilemanager ? false : _('luci-app-tinyfilemanager is not installed, please install it first.');
|
||||||
|
o.editable = true;
|
||||||
|
o.modalonly = false;
|
||||||
/* Rule set END */
|
/* Rule set END */
|
||||||
|
|
||||||
return m.render();
|
return m.render();
|
||||||
|
|||||||
+1045
-939
File diff suppressed because it is too large.
Load diff
+1106
-940
File diff suppressed because it is too large.
Load diff
+1106
-940
File diff suppressed because it is too large.
Load diff
@@ -516,14 +516,15 @@ uci.foreach(uciconf, ucinode, (cfg) => {
|
|||||||
"target-rematch-name": cfg.target_rematch_name,
|
"target-rematch-name": cfg.target_rematch_name,
|
||||||
"target-sub-rule": cfg.target_sub_rule,
|
"target-sub-rule": cfg.target_sub_rule,
|
||||||
|
|
||||||
/* HTTP / SOCKS / Shadowsocks / VMess / VLESS / Trojan / TUIC / hysteria2 / ZeroTier / Tailscale / Masque */
|
/* HTTP / SOCKS / Shadowsocks / VMess / VLESS / Trojan / TUIC / hysteria2 / ZeroTier / Tailscale / Masque / EasyTier */
|
||||||
username: cfg.username,
|
username: cfg.username,
|
||||||
uuid: cfg.vmess_uuid || cfg.uuid,
|
uuid: cfg.vmess_uuid || cfg.uuid,
|
||||||
cipher: cfg.vmess_chipher || cfg.shadowsocks_chipher,
|
cipher: cfg.vmess_chipher || cfg.shadowsocks_chipher,
|
||||||
password: cfg.shadowsocks_password || cfg.password,
|
password: cfg.shadowsocks_password || cfg.password,
|
||||||
|
hostname: cfg.tailscale_hostname || cfg.easytier_hostname,
|
||||||
headers: cfg.headers ? json(cfg.headers) : null,
|
headers: cfg.headers ? json(cfg.headers) : null,
|
||||||
network: cfg.zerotier_network_id || cfg.masque_network || null,
|
network: cfg.zerotier_network_id || cfg.masque_network || null,
|
||||||
"state-dir": `${HM_DIR}/${ucinode}/${cfg['.name']}`,
|
"state-dir": (cfg.type in ['zerotier', 'tailscale', 'easytier']) ? `${HM_DIR}/${ucinode}/${cfg['.name']}` : null,
|
||||||
|
|
||||||
/* Shadowsocks */
|
/* Shadowsocks */
|
||||||
|
|
||||||
@@ -642,6 +643,7 @@ uci.foreach(uciconf, ucinode, (cfg) => {
|
|||||||
"remote-trace-level": strToInt(cfg.zerotier_trace_level),
|
"remote-trace-level": strToInt(cfg.zerotier_trace_level),
|
||||||
"low-bandwidth": strToBool(cfg.zerotier_low_bandwidth),
|
"low-bandwidth": strToBool(cfg.zerotier_low_bandwidth),
|
||||||
"encrypted-hello": strToBool(cfg.zerotier_encrypted_hello),
|
"encrypted-hello": strToBool(cfg.zerotier_encrypted_hello),
|
||||||
|
"identity-secret": cfg.zerotier_identity_secret,
|
||||||
//planet: `${HM_DIR}/${ucinode}/${cfg['.name']}/planet`,
|
//planet: `${HM_DIR}/${ucinode}/${cfg['.name']}/planet`,
|
||||||
...(isEmpty(cfg.zerotier_orbit) ? {} : {
|
...(isEmpty(cfg.zerotier_orbit) ? {} : {
|
||||||
orbit: map([0], () => {
|
orbit: map([0], () => {
|
||||||
@@ -663,7 +665,6 @@ uci.foreach(uciconf, ucinode, (cfg) => {
|
|||||||
"persistent-keepalive": strToInt(cfg.wireguard_persistent_keepalive),
|
"persistent-keepalive": strToInt(cfg.wireguard_persistent_keepalive),
|
||||||
|
|
||||||
/* Tailscale */
|
/* Tailscale */
|
||||||
hostname: cfg.tailscale_hostname,
|
|
||||||
"auth-key": cfg.tailscale_auth_key,
|
"auth-key": cfg.tailscale_auth_key,
|
||||||
"control-url": cfg.tailscale_control_url,
|
"control-url": cfg.tailscale_control_url,
|
||||||
ephemeral: strToBool(cfg.tailscale_ephemeral),
|
ephemeral: strToBool(cfg.tailscale_ephemeral),
|
||||||
@@ -673,6 +674,25 @@ uci.foreach(uciconf, ucinode, (cfg) => {
|
|||||||
|
|
||||||
/* Masque */
|
/* Masque */
|
||||||
|
|
||||||
|
/* EasyTier */
|
||||||
|
"instance-name": cfg.type === 'easytier' ? cfg['.name'] : null,
|
||||||
|
"network-name": cfg.easytier_network_name,
|
||||||
|
"network-secret": cfg.easytier_network_secret,
|
||||||
|
"private-mode": strToBool(cfg.easytier_private_mode),
|
||||||
|
peers: cfg.easytier_peers, // Array
|
||||||
|
"secure-mode": strToBool(cfg.easytier_secure_mode),
|
||||||
|
"local-private-key": cfg.easytier_local_private_key,
|
||||||
|
"local-public-key": cfg.easytier_local_public_key,
|
||||||
|
"exit-nodes": cfg.easytier_exit_nodes, // Array
|
||||||
|
"proxy-networks": cfg.easytier_proxy_networks, // Array
|
||||||
|
"enable-encryption": cfg.easytier_enable_encryption === '0' ? false : null,
|
||||||
|
"encryption-algorithm": cfg.easytier_encryption_algorithm,
|
||||||
|
"enable-exit-node": strToBool(cfg.easytier_enable_exit_node),
|
||||||
|
"latency-first": strToBool(cfg.easytier_latency_first),
|
||||||
|
"disable-p2p": strToBool(cfg.easytier_disable_p2p),
|
||||||
|
"accept-dns": strToBool(cfg.easytier_accept_dns),
|
||||||
|
"tld-dns-zone": cfg.easytier_tld_dns_zone,
|
||||||
|
|
||||||
/* SSH */
|
/* SSH */
|
||||||
"private-key-passphrase": cfg.ssh_priv_key_passphrase,
|
"private-key-passphrase": cfg.ssh_priv_key_passphrase,
|
||||||
"host-key-algorithms": cfg.ssh_host_key_algorithms,
|
"host-key-algorithms": cfg.ssh_host_key_algorithms,
|
||||||
@@ -759,8 +779,13 @@ uci.foreach(uciconf, ucinode, (cfg) => {
|
|||||||
} : null,
|
} : null,
|
||||||
|
|
||||||
/* VPN fields */
|
/* VPN fields */
|
||||||
|
listeners: cfg.endpoint_listeners, // Array
|
||||||
|
//"mapped-listeners": cfg.endpoint_mapped_listeners, // Array
|
||||||
|
"no-listener": cfg.endpoint_no_listener === '0' ? false : cfg.type === 'easytier' ? true : null,
|
||||||
ip: cfg.endpoint_ip,
|
ip: cfg.endpoint_ip,
|
||||||
|
ipv4: cfg.endpoint_ipv4,
|
||||||
ipv6: cfg.endpoint_ipv6,
|
ipv6: cfg.endpoint_ipv6,
|
||||||
|
dhcp: strToBool(cfg.endpoint_dhcp),
|
||||||
mtu: strToInt(cfg.endpoint_mtu) || null,
|
mtu: strToInt(cfg.endpoint_mtu) || null,
|
||||||
"remote-dns-resolve": strToBool(cfg.endpoint_remote_dns_resolve),
|
"remote-dns-resolve": strToBool(cfg.endpoint_remote_dns_resolve),
|
||||||
dns: cfg.endpoint_dns, // Array
|
dns: cfg.endpoint_dns, // Array
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ const methods = {
|
|||||||
features.app_version = trim(popen(`${use_apk ? 'apk list -I --manifest' : 'opkg list-installed'} luci-app-fchomo | ` +
|
features.app_version = trim(popen(`${use_apk ? 'apk list -I --manifest' : 'opkg list-installed'} luci-app-fchomo | ` +
|
||||||
`awk '{print $NF}'`).read('all')) || null; // @less_25_12
|
`awk '{print $NF}'`).read('all')) || null; // @less_25_12
|
||||||
|
|
||||||
|
features.has_luci_app_tinyfilemanager = system(`[ -n "$(${use_apk ? 'apk list -qI' : 'opkg list-installed'} luci-app-tinyfilemanager)" ]`) == 0 || null; // @less_25_12
|
||||||
features.has_dnsmasq_full = system(`[ -n "$(${use_apk ? 'apk list -qI' : 'opkg list-installed'} dnsmasq-full)" ]`) == 0 || null; // @less_25_12
|
features.has_dnsmasq_full = system(`[ -n "$(${use_apk ? 'apk list -qI' : 'opkg list-installed'} dnsmasq-full)" ]`) == 0 || null; // @less_25_12
|
||||||
features.has_ip_full = access('/usr/libexec/ip-full');
|
features.has_ip_full = access('/usr/libexec/ip-full');
|
||||||
features.has_stunclient = access('/usr/bin/stunclient');
|
features.has_stunclient = access('/usr/bin/stunclient');
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ LUCI_DEPENDS:=+luci-base +logd +jsonfilter
|
|||||||
LUCI_PKGARCH:=all
|
LUCI_PKGARCH:=all
|
||||||
|
|
||||||
PKG_VERSION:=0.1.41
|
PKG_VERSION:=0.1.41
|
||||||
PKG_RELEASE:=18
|
PKG_RELEASE:=19
|
||||||
|
|
||||||
# Reproducible build: honor SOURCE_DATE_EPOCH from the build environment (set by docker-sdk.sh / CI).
|
# Reproducible build: honor SOURCE_DATE_EPOCH from the build environment (set by docker-sdk.sh / CI).
|
||||||
ifdef SOURCE_DATE_EPOCH
|
ifdef SOURCE_DATE_EPOCH
|
||||||
|
|||||||
@@ -2236,6 +2236,21 @@ return view.extend({
|
|||||||
'Display options on the bar set Limit, row tint, palette, and hostnames.'
|
'Display options on the bar set Limit, row tint, palette, and hostnames.'
|
||||||
)
|
)
|
||||||
]),
|
]),
|
||||||
|
E('li', {}, [
|
||||||
|
_(
|
||||||
|
'For a responsive table on a weak device, keep Limit at 250 rows or below. The weak-device cap affects rendered rows; the buffer can still retain more.'
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
E('li', {}, [
|
||||||
|
_(
|
||||||
|
'Switching tabs pauses polling; returning performs one catch-up poll. Hostnames are off by default because lookups add work.'
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
E('li', {}, [
|
||||||
|
_(
|
||||||
|
'The router log ring may evict older events before fwlive reads them. fwlive cannot recover evicted entries or change forwarding behavior.'
|
||||||
|
)
|
||||||
|
]),
|
||||||
E('li', {}, [
|
E('li', {}, [
|
||||||
_(
|
_(
|
||||||
'The rate shown for WAN logging is the firewall zone log_limit. OpenWrt defaults to 10/minute when no explicit limit is configured; fwlive does not impose this cap.'
|
'The rate shown for WAN logging is the firewall zone log_limit. OpenWrt defaults to 10/minute when no explicit limit is configured; fwlive does not impose this cap.'
|
||||||
|
|||||||
@@ -185,6 +185,18 @@ msgstr ""
|
|||||||
"Anzeigeoptionen in der Leiste setzen Limit, Zeilenfärbung, Palette und "
|
"Anzeigeoptionen in der Leiste setzen Limit, Zeilenfärbung, Palette und "
|
||||||
"Hostnamen."
|
"Hostnamen."
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2240
|
||||||
|
msgid "For a responsive table on a weak device, keep Limit at 250 rows or below. The weak-device cap affects rendered rows; the buffer can still retain more."
|
||||||
|
msgstr "Für eine responsive Tabelle auf einem schwachen Gerät sollte Limit auf höchstens 250 Zeilen stehen. Die Schwachgerätebegrenzung betrifft die angezeigten Zeilen; der Puffer kann weiterhin mehr Zeilen behalten."
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2245
|
||||||
|
msgid "Switching tabs pauses polling; returning performs one catch-up poll. Hostnames are off by default because lookups add work."
|
||||||
|
msgstr "Beim Wechseln des Tabs wird das Polling pausiert; bei der Rückkehr erfolgt eine einmalige Aufholabfrage. Hostnamen sind standardmäßig deaktiviert, da Auflösungen zusätzliche Arbeit verursachen."
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2250
|
||||||
|
msgid "The router log ring may evict older events before fwlive reads them. fwlive cannot recover evicted entries or change forwarding behavior."
|
||||||
|
msgstr "Der Protokollring des Routers kann ältere Ereignisse verdrängen, bevor fwlive sie liest. fwlive kann verdrängte Einträge nicht wiederherstellen und ändert das Weiterleitungsverhalten nicht."
|
||||||
|
|
||||||
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121
|
||||||
msgid "Does not change:"
|
msgid "Does not change:"
|
||||||
msgstr "Does not change:"
|
msgstr "Does not change:"
|
||||||
|
|||||||
@@ -187,6 +187,18 @@ msgstr ""
|
|||||||
"Параметры отображения на панели задают лимит, окраску строк, палитру и имена "
|
"Параметры отображения на панели задают лимит, окраску строк, палитру и имена "
|
||||||
"узлов."
|
"узлов."
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2240
|
||||||
|
msgid "For a responsive table on a weak device, keep Limit at 250 rows or below. The weak-device cap affects rendered rows; the buffer can still retain more."
|
||||||
|
msgstr "Для отзывчивой таблицы на слабом устройстве установите Limit не выше 250 строк. Ограничение слабого устройства влияет на отображаемые строки; буфер всё ещё может хранить больше."
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2245
|
||||||
|
msgid "Switching tabs pauses polling; returning performs one catch-up poll. Hostnames are off by default because lookups add work."
|
||||||
|
msgstr "При переключении вкладки опрос приостанавливается; при возврате выполняется один догоняющий опрос. Имена хостов по умолчанию отключены, поскольку их разрешение создаёт дополнительную нагрузку."
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2250
|
||||||
|
msgid "The router log ring may evict older events before fwlive reads them. fwlive cannot recover evicted entries or change forwarding behavior."
|
||||||
|
msgstr "Кольцевой журнал маршрутизатора может вытеснить старые события до того, как fwlive их прочитает. fwlive не может восстановить вытесненные записи и не изменяет пересылку."
|
||||||
|
|
||||||
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121
|
||||||
msgid "Does not change:"
|
msgid "Does not change:"
|
||||||
msgstr "Does not change:"
|
msgstr "Does not change:"
|
||||||
|
|||||||
@@ -156,6 +156,18 @@ msgstr ""
|
|||||||
msgid "Display options on the bar set Limit, row tint, palette, and hostnames."
|
msgid "Display options on the bar set Limit, row tint, palette, and hostnames."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2240
|
||||||
|
msgid "For a responsive table on a weak device, keep Limit at 250 rows or below. The weak-device cap affects rendered rows; the buffer can still retain more."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2245
|
||||||
|
msgid "Switching tabs pauses polling; returning performs one catch-up poll. Hostnames are off by default because lookups add work."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2250
|
||||||
|
msgid "The router log ring may evict older events before fwlive reads them. fwlive cannot recover evicted entries or change forwarding behavior."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121
|
||||||
msgid "Does not change:"
|
msgid "Does not change:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -171,6 +171,18 @@ msgstr "æ¾ç¤ºé项"
|
|||||||
msgid "Display options on the bar set Limit, row tint, palette, and hostnames."
|
msgid "Display options on the bar set Limit, row tint, palette, and hostnames."
|
||||||
msgstr "栏上的显示选项可设置行数限制、行着色、调色板和主机名。"
|
msgstr "栏上的显示选项可设置行数限制、行着色、调色板和主机名。"
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2240
|
||||||
|
msgid "For a responsive table on a weak device, keep Limit at 250 rows or below. The weak-device cap affects rendered rows; the buffer can still retain more."
|
||||||
|
msgstr "要让弱设备上的表格保持响应,请将 Limit 保持在 250 行或更少。弱设备限制影响渲染的行数;缓冲区仍可保留更多行。"
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2245
|
||||||
|
msgid "Switching tabs pauses polling; returning performs one catch-up poll. Hostnames are off by default because lookups add work."
|
||||||
|
msgstr "切换到其他标签页会暂停轮询;返回时执行一次追赶轮询。主机名默认关闭,因为解析会增加工作量。"
|
||||||
|
|
||||||
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/view/status/fwlive.js:2250
|
||||||
|
msgid "The router log ring may evict older events before fwlive reads them. fwlive cannot recover evicted entries or change forwarding behavior."
|
||||||
|
msgstr "路由器日志环形缓冲区可能在 fwlive 读取前淘汰较旧事件。fwlive 无法恢复已淘汰的条目,也不会改变转发行为。"
|
||||||
|
|
||||||
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121
|
#: openwrt-feed/luci-app-fwlive/htdocs/luci-static/resources/fwlive/logging.js:121
|
||||||
msgid "Does not change:"
|
msgid "Does not change:"
|
||||||
msgstr "Does not change:"
|
msgstr "Does not change:"
|
||||||
|
|||||||
@@ -148,6 +148,10 @@ return view.extend({
|
|||||||
o.default = o.disabled;
|
o.default = o.disabled;
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
|
o = s.option(form.Value, 'boot_delay', _('Boot delay'),
|
||||||
|
_('Delay in seconds before starting the service.'));
|
||||||
|
o.datatype = 'uinteger';
|
||||||
|
|
||||||
o = s.option(form.Value, 'def_tcp_stun', _('Default ') + _('TCP STUN ') + _('Server'),
|
o = s.option(form.Value, 'def_tcp_stun', _('Default ') + _('TCP STUN ') + _('Server'),
|
||||||
_('Available server <a href="%s" target="_blank">references</a>')
|
_('Available server <a href="%s" target="_blank">references</a>')
|
||||||
.format(_('https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780_tcp.txt')));
|
.format(_('https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780_tcp.txt')));
|
||||||
|
|||||||
+136
-128
@@ -4,20 +4,20 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -25,138 +25,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -164,27 +172,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -197,23 +205,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -226,24 +234,24 @@ msgstr ""
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -255,44 +263,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -301,74 +309,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -376,7 +384,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -384,83 +392,83 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
+136
-128
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.15.1-dev\n"
|
"X-Generator: Weblate 4.15.1-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Bind port"
|
msgstr "Bind port"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Aktiver"
|
msgstr "Aktiver"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "Ekstern IP"
|
msgstr "Ekstern IP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Ekstern port"
|
msgstr "Ekstern port"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "For TCP-tilstand"
|
msgstr "For TCP-tilstand"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Videresendelsestilstand"
|
msgstr "Videresendelsestilstand"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Videresendelses mål"
|
msgstr "Videresendelses mål"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Videresendelses målport"
|
msgstr "Videresendelses målport"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Giv adgang til LuCI-appen natmap"
|
msgstr "Giv adgang til LuCI-appen natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "HTTP server"
|
msgstr "HTTP server"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -203,23 +211,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Interface"
|
msgstr "Interface"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Hold i live interval"
|
msgstr "Hold i live interval"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protokol"
|
msgstr "Protokol"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Begræns til adresse familie"
|
msgstr "Begræns til adresse familie"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "STUN server"
|
msgstr "STUN server"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -382,7 +390,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -390,84 +398,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.17-dev\n"
|
"X-Generator: Weblate 4.17-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Bindungsport"
|
msgstr "Bindungsport"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "aktivieren"
|
msgstr "aktivieren"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "Externe IP"
|
msgstr "Externe IP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Externer Port"
|
msgstr "Externer Port"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Für den TCP-Modus"
|
msgstr "Für den TCP-Modus"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Forward-Modus"
|
msgstr "Forward-Modus"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Ziel für Forwards"
|
msgstr "Ziel für Forwards"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Zielport für Forwards"
|
msgstr "Zielport für Forwards"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Gewähre zugang zu LuCI app natmap"
|
msgstr "Gewähre zugang zu LuCI app natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "HTTP Server"
|
msgstr "HTTP Server"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -203,23 +211,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Schnittstelle"
|
msgstr "Schnittstelle"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Keep-Alive-Intervall"
|
msgstr "Keep-Alive-Intervall"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protokoll"
|
msgstr "Protokoll"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Auf Adressfamilie beschränken"
|
msgstr "Auf Adressfamilie beschränken"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "STUN-Server"
|
msgstr "STUN-Server"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -382,7 +390,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -390,84 +398,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.16-dev\n"
|
"X-Generator: Weblate 4.16-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Vincular puerto"
|
msgstr "Vincular puerto"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Activar"
|
msgstr "Activar"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "IP externa"
|
msgstr "IP externa"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Puerto externo"
|
msgstr "Puerto externo"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Para el modo TCP"
|
msgstr "Para el modo TCP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Modo de reenvío"
|
msgstr "Modo de reenvío"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Reenviar objetivo"
|
msgstr "Reenviar objetivo"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Puerto de destino de reenvío"
|
msgstr "Puerto de destino de reenvío"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Otorgar acceso a la aplicación LuCI natmap"
|
msgstr "Otorgar acceso a la aplicación LuCI natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "Servidor HTTP"
|
msgstr "Servidor HTTP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -203,23 +211,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Interfaz"
|
msgstr "Interfaz"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Intervalo de mantenimiento"
|
msgstr "Intervalo de mantenimiento"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protocolo"
|
msgstr "Protocolo"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Restringir para dirigirse a la familia"
|
msgstr "Restringir para dirigirse a la familia"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "Servidor STUN"
|
msgstr "Servidor STUN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -382,7 +390,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -390,84 +398,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 4.18-dev\n"
|
"X-Generator: Weblate 4.18-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Port de liaison"
|
msgstr "Port de liaison"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Active"
|
msgstr "Active"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "IP externe"
|
msgstr "IP externe"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Port externe"
|
msgstr "Port externe"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Pour mode TCP"
|
msgstr "Pour mode TCP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Transmission mode"
|
msgstr "Transmission mode"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Transfert Cible"
|
msgstr "Transfert Cible"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Transférer le port cible"
|
msgstr "Transférer le port cible"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Accorder l’accès à l’application LuCI natmap"
|
msgstr "Accorder l’accès à l’application LuCI natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "Serveur HTTP"
|
msgstr "Serveur HTTP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -203,23 +211,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Interface"
|
msgstr "Interface"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Intervalle Keep-alive"
|
msgstr "Intervalle Keep-alive"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr "Carte NAT"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protocole"
|
msgstr "Protocole"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Restreindre à la famille d’adresses"
|
msgstr "Restreindre à la famille d’adresses"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "Serveur STUN"
|
msgstr "Serveur STUN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -382,7 +390,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -390,84 +398,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 5.0-dev\n"
|
"X-Generator: Weblate 5.0-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "collega porta"
|
msgstr "collega porta"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Attiva"
|
msgstr "Attiva"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "Ip Esterno"
|
msgstr "Ip Esterno"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Porta Esterna"
|
msgstr "Porta Esterna"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Per la modalità TCP"
|
msgstr "Per la modalità TCP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Modalità forward"
|
msgstr "Modalità forward"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Obiettivo della modalità forward"
|
msgstr "Obiettivo della modalità forward"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -203,23 +211,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr ""
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -382,7 +390,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -390,83 +398,83 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
+136
-128
@@ -12,20 +12,20 @@ msgstr ""
|
|||||||
"1 : 2);\n"
|
"1 : 2);\n"
|
||||||
"X-Generator: Weblate 5.0-dev\n"
|
"X-Generator: Weblate 5.0-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -33,138 +33,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Priskirti prievadą"
|
msgstr "Priskirti prievadą"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Įjungti"
|
msgstr "Įjungti"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "Išorinis „IP“"
|
msgstr "Išorinis „IP“"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Išorinis prievadas"
|
msgstr "Išorinis prievadas"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Dėl „TCP“ režimo"
|
msgstr "Dėl „TCP“ režimo"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Pravedimo režimas"
|
msgstr "Pravedimo režimas"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Pravedimo numatymas (taikinys)"
|
msgstr "Pravedimo numatymas (taikinys)"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Pravedimo numatymo (taikinio) prievadas"
|
msgstr "Pravedimo numatymo (taikinio) prievadas"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -172,27 +180,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Duoti prieigą „LuCI app natmap“"
|
msgstr "Duoti prieigą „LuCI app natmap“"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "„HTTP“ serveris"
|
msgstr "„HTTP“ serveris"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -205,23 +213,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Išvaizda"
|
msgstr "Išvaizda"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "„Laikyti-gyvą“ intervalas"
|
msgstr "„Laikyti-gyvą“ intervalas"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -234,24 +242,24 @@ msgstr "„NATMap“"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -263,44 +271,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protokolas"
|
msgstr "Protokolas"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -309,74 +317,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Riboti tik adresų šeimai"
|
msgstr "Riboti tik adresų šeimai"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "„STUN“ serveris"
|
msgstr "„STUN“ serveris"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -384,7 +392,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -392,84 +400,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.18-dev\n"
|
"X-Generator: Weblate 4.18-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Bind poort"
|
msgstr "Bind poort"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Activeren"
|
msgstr "Activeren"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "Externe IP"
|
msgstr "Externe IP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Externe poort"
|
msgstr "Externe poort"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Voor TCP-modus"
|
msgstr "Voor TCP-modus"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Forward Mode"
|
msgstr "Forward Mode"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Forward doel"
|
msgstr "Forward doel"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Forward doelpoort"
|
msgstr "Forward doelpoort"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Toegang verlenen tot LuCI app natmap"
|
msgstr "Toegang verlenen tot LuCI app natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "HTTP-server"
|
msgstr "HTTP-server"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -203,23 +211,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Interface"
|
msgstr "Interface"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Keep-alive interval"
|
msgstr "Keep-alive interval"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protocol"
|
msgstr "Protocol"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Beperken tot adres familie"
|
msgstr "Beperken tot adres familie"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "STUN-server"
|
msgstr "STUN-server"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -382,7 +390,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -390,84 +398,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -11,20 +11,20 @@ msgstr ""
|
|||||||
"|| n%100>=20) ? 1 : 2;\n"
|
"|| n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 4.15.1-dev\n"
|
"X-Generator: Weblate 4.15.1-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -32,138 +32,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Zwiąż port"
|
msgstr "Zwiąż port"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Włącz"
|
msgstr "Włącz"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "Zewnętrzny adres IP"
|
msgstr "Zewnętrzny adres IP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Port zewnętrzny"
|
msgstr "Port zewnętrzny"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Dla trybu TCP"
|
msgstr "Dla trybu TCP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Tryb przekazywania"
|
msgstr "Tryb przekazywania"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Cel przekazywania"
|
msgstr "Cel przekazywania"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Port celu przekazywania"
|
msgstr "Port celu przekazywania"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -171,27 +179,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Przyznaj dostęp do aplikacji LuCI natmap"
|
msgstr "Przyznaj dostęp do aplikacji LuCI natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "Serwer HTTP"
|
msgstr "Serwer HTTP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -204,23 +212,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Interfejs"
|
msgstr "Interfejs"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Interwał utrzymywania aktywności"
|
msgstr "Interwał utrzymywania aktywności"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -233,24 +241,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -262,44 +270,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protokół"
|
msgstr "Protokół"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -308,74 +316,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Ogranicz do rodziny adresów"
|
msgstr "Ogranicz do rodziny adresów"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "Serwer STUN"
|
msgstr "Serwer STUN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -383,7 +391,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -391,84 +399,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 4.18.1\n"
|
"X-Generator: Weblate 4.18.1\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Porta do bind"
|
msgstr "Porta do bind"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Ativar"
|
msgstr "Ativar"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "IP externo"
|
msgstr "IP externo"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Porta externa"
|
msgstr "Porta externa"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Para o modo TCP"
|
msgstr "Para o modo TCP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Modo de encaminhamento"
|
msgstr "Modo de encaminhamento"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Alvo de encaminhamento"
|
msgstr "Alvo de encaminhamento"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Porta de destino do encaminhamento"
|
msgstr "Porta de destino do encaminhamento"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Conceda acesso LuCi à app natmap"
|
msgstr "Conceda acesso LuCi à app natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "Servidor HTTP"
|
msgstr "Servidor HTTP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -203,23 +211,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Interface"
|
msgstr "Interface"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Intervalo do keep-alive interno"
|
msgstr "Intervalo do keep-alive interno"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protocolo"
|
msgstr "Protocolo"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Restringe à uma família de endereços"
|
msgstr "Restringe à uma família de endereços"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "Servidor STUN"
|
msgstr "Servidor STUN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -382,7 +390,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -390,84 +398,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 4.15.1-dev\n"
|
"X-Generator: Weblate 4.15.1-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Porta do bind"
|
msgstr "Porta do bind"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Ativar"
|
msgstr "Ativar"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "IP externo"
|
msgstr "IP externo"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Porta externa"
|
msgstr "Porta externa"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Para o modo TCP"
|
msgstr "Para o modo TCP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Modo de encaminhamento"
|
msgstr "Modo de encaminhamento"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Alvo de encaminhamento"
|
msgstr "Alvo de encaminhamento"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Porta de destino do encaminhamento"
|
msgstr "Porta de destino do encaminhamento"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Conceda acesso LuCi ao aplicativo natmap"
|
msgstr "Conceda acesso LuCi ao aplicativo natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "Servidor HTTP"
|
msgstr "Servidor HTTP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -203,23 +211,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Interface"
|
msgstr "Interface"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Intervalo do keep-alive interno"
|
msgstr "Intervalo do keep-alive interno"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protocolo"
|
msgstr "Protocolo"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Restringe à uma família de endereços"
|
msgstr "Restringe à uma família de endereços"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "Servidor STUN"
|
msgstr "Servidor STUN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -382,7 +390,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -390,84 +398,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -11,20 +11,20 @@ msgstr ""
|
|||||||
"20)) ? 1 : 2;\n"
|
"20)) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 4.18-dev\n"
|
"X-Generator: Weblate 4.18-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -32,138 +32,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Legați portul"
|
msgstr "Legați portul"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Activează"
|
msgstr "Activează"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "IP extern"
|
msgstr "IP extern"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Port extern"
|
msgstr "Port extern"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Pentru modul TCP"
|
msgstr "Pentru modul TCP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Mod de redirecționare"
|
msgstr "Mod de redirecționare"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "redirectionare tinta"
|
msgstr "redirectionare tinta"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Redirecționarea portului țintă"
|
msgstr "Redirecționarea portului țintă"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -171,27 +179,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Acordarea accesului la aplicația LuCI natmap"
|
msgstr "Acordarea accesului la aplicația LuCI natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "Server HTTP"
|
msgstr "Server HTTP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -204,23 +212,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Interfață"
|
msgstr "Interfață"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Interval de păstrare în viață"
|
msgstr "Interval de păstrare în viață"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -233,24 +241,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -262,44 +270,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Protocol"
|
msgstr "Protocol"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -308,74 +316,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Restricționarea la adresa familiei"
|
msgstr "Restricționarea la adresa familiei"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "Server STUN"
|
msgstr "Server STUN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -383,7 +391,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -391,84 +399,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -11,20 +11,20 @@ msgstr ""
|
|||||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 4.17-dev\n"
|
"X-Generator: Weblate 4.17-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -32,138 +32,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Порт сервера"
|
msgstr "Порт сервера"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Включить"
|
msgstr "Включить"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "Внешний IP"
|
msgstr "Внешний IP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Внешний порт"
|
msgstr "Внешний порт"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Для режима TCP"
|
msgstr "Для режима TCP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Режим перенаправления"
|
msgstr "Режим перенаправления"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Цель перенаправления"
|
msgstr "Цель перенаправления"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Порт переадресованной цели"
|
msgstr "Порт переадресованной цели"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -171,27 +179,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Предоставить доступ LuCI к приложению natmap"
|
msgstr "Предоставить доступ LuCI к приложению natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "HTTP-сервер"
|
msgstr "HTTP-сервер"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -204,23 +212,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Интерфейс"
|
msgstr "Интерфейс"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Keep-alive интервал"
|
msgstr "Keep-alive интервал"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -233,24 +241,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -262,44 +270,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Протокол"
|
msgstr "Протокол"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -308,74 +316,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Использовать протокол"
|
msgstr "Использовать протокол"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "Сервер STUN"
|
msgstr "Сервер STUN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -383,7 +391,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -391,84 +399,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+136
-128
@@ -4,20 +4,20 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -25,138 +25,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -164,27 +172,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -197,23 +205,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -226,24 +234,24 @@ msgstr ""
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -255,44 +263,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -301,74 +309,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -376,7 +384,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -384,83 +392,83 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1,20 +1,20 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -22,138 +22,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -161,27 +169,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -194,23 +202,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -223,24 +231,24 @@ msgstr ""
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -252,44 +260,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -298,74 +306,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -373,7 +381,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -381,83 +389,83 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
+136
-128
@@ -4,20 +4,20 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -25,138 +25,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -164,27 +172,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -197,23 +205,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -226,24 +234,24 @@ msgstr ""
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -255,44 +263,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -301,74 +309,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -376,7 +384,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -384,83 +392,83 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
+136
-128
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Generator: Weblate 4.18.1\n"
|
"X-Generator: Weblate 4.18.1\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr ""
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "Cổng Bind"
|
msgstr "Cổng Bind"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Bật lên"
|
msgstr "Bật lên"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "IP bên ngoài"
|
msgstr "IP bên ngoài"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "Cổng bên ngoài"
|
msgstr "Cổng bên ngoài"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "Cho chế độ TCP"
|
msgstr "Cho chế độ TCP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "Chế độ Forward"
|
msgstr "Chế độ Forward"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "Điểm đến Forward"
|
msgstr "Điểm đến Forward"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "Cổng Forward target"
|
msgstr "Cổng Forward target"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr ""
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "Cấp quyền truy cập vào natmap LuCI"
|
msgstr "Cấp quyền truy cập vào natmap LuCI"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "HTTP server"
|
msgstr "HTTP server"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -203,23 +211,23 @@ msgstr ""
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "Giao diện"
|
msgstr "Giao diện"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Vòng lặp keep-alive"
|
msgstr "Vòng lặp keep-alive"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr "NATmap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr ""
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "Giao thức"
|
msgstr "Giao thức"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr ""
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "Giới hạn địa chỉ gia đình"
|
msgstr "Giới hạn địa chỉ gia đình"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "Máy chủ STUN"
|
msgstr "Máy chủ STUN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -382,7 +390,7 @@ msgid ""
|
|||||||
"KEY variables."
|
"KEY variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -390,84 +398,84 @@ msgstr ""
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Generator: Weblate 4.18-dev\n"
|
"X-Generator: Weblate 4.18-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr "%s 设为 0 将重写客户端监听端口"
|
msgstr "%s 设为 0 将重写客户端监听端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr "<code># All external tokens required</code> 字段"
|
msgstr "<code># All external tokens required</code> 字段"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr "A 记录"
|
msgstr "A 记录"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr "AAAA 记录"
|
msgstr "AAAA 记录"
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr "AAAA 记录"
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr "活动的 NATMap 端口映射"
|
msgstr "活动的 NATMap 端口映射"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr "随机分配端口,而不是按顺序分配。"
|
msgstr "随机分配端口,而不是按顺序分配。"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr "可用的服务器<a href=\"%s\" target=\"_blank\">参考</a>"
|
msgstr "可用的服务器<a href=\"%s\" target=\"_blank\">参考</a>"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "绑定端口"
|
msgstr "绑定端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr "启动延迟"
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr "可以参考 RFC8552"
|
msgstr "可以参考 RFC8552"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr "检测"
|
msgstr "检测"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr "检测 NAT 行为"
|
msgstr "检测 NAT 行为"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr "备注"
|
msgstr "备注"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr "自定义脚本"
|
msgstr "自定义脚本"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr "DDNS 脚本"
|
msgstr "DDNS 脚本"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "默认"
|
msgstr "默认"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr "启动服务前的延迟时间(秒)。"
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr "启用DDNS"
|
msgstr "启用DDNS"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr "启用通知"
|
msgstr "启用通知"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "启用"
|
msgstr "启用"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr "展开/收起 结果"
|
msgstr "展开/收起 结果"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "外部 IP"
|
msgstr "外部 IP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "外部端口"
|
msgstr "外部端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr "防火墙 DNAT"
|
msgstr "防火墙 DNAT"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "用于 TCP 模式"
|
msgstr "用于 TCP 模式"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr "用于 UDP 模式"
|
msgstr "用于 UDP 模式"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr "转发设置"
|
msgstr "转发设置"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr "转发方法"
|
msgstr "转发方法"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "转发模式"
|
msgstr "转发模式"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "转发目标"
|
msgstr "转发目标"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "转发目标端口"
|
msgstr "转发目标端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr "转发超时"
|
msgstr "转发超时"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr " Fwmark 值"
|
msgstr " Fwmark 值"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr "常规设置"
|
msgstr "常规设置"
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr "常规设置"
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "授予访问 LuCI 应用 natmap 的权限"
|
msgstr "授予访问 LuCI 应用 natmap 的权限"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "HTTP 服务器"
|
msgstr "HTTP 服务器"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr "HTTPS 记录"
|
msgstr "HTTPS 记录"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr "IPv4"
|
msgstr "IPv4"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr "IPv6"
|
msgstr "IPv6"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr "如果您开启了<b>通知脚本</b>, 将被大量消息轰炸"
|
msgstr "如果您开启了<b>通知脚本</b>, 将被大量消息轰炸"
|
||||||
@@ -203,23 +211,23 @@ msgstr "内部地址"
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr "内部端口"
|
msgstr "内部端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "接口"
|
msgstr "接口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Keep-alive 间隔"
|
msgstr "Keep-alive 间隔"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr "为 STUN/HTTP 出站流量标记 fwmark"
|
msgstr "为 STUN/HTTP 出站流量标记 fwmark"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr "NAT 环回"
|
msgstr "NAT 环回"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr "NATBehavior-Test 端口打开于"
|
msgstr "NATBehavior-Test 端口打开于"
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "名称"
|
msgstr "名称"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr "非 0 端口"
|
msgstr "非 0 端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr "注意: 使用 <code>portrange</code> 后, 会轮换打开公网端口</br>"
|
msgstr "注意: 使用 <code>portrange</code> 后, 会轮换打开公网端口</br>"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr "通知脚本"
|
msgstr "通知脚本"
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr "外部地址"
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr "外部端口"
|
msgstr "外部端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "密码"
|
msgstr "密码"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr "请检查<a href=\"%s\"><b>防火墙规则</b></a>以避免端口冲突</br>"
|
msgstr "请检查<a href=\"%s\"><b>防火墙规则</b></a>以避免端口冲突</br>"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr "端口转发会话空闲超时 (以秒为单位)"
|
msgstr "端口转发会话空闲超时 (以秒为单位)"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr "优先权"
|
msgstr "优先权"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr "私有 API 域名"
|
msgstr "私有 API 域名"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "协议"
|
msgstr "协议"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr "随机分配端口"
|
msgstr "随机分配端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr "客户端刷新脚本"
|
msgstr "客户端刷新脚本"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr "刷新客户端"
|
msgstr "刷新客户端"
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr "刷新客户端"
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr "重新载入"
|
msgstr "重新载入"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "地址族限制"
|
msgstr "地址族限制"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr "SRV 记录"
|
msgstr "SRV 记录"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr "STUN 检查周期 (每 n 个间隔一次)"
|
msgstr "STUN 检查周期 (每 n 个间隔一次)"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "STUN 服务器"
|
msgstr "STUN 服务器"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr "服务器"
|
msgstr "服务器"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr "服务"
|
msgstr "服务"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr "设为 0 将跟随公共端口"
|
msgstr "设为 0 将跟随公共端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr "服务参数"
|
msgstr "服务参数"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr "TCP 拥塞控制"
|
msgstr "TCP 拥塞控制"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr "目标"
|
msgstr "目标"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr "文本内容"
|
msgstr "文本内容"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr "DNAT 方法不支持在 IPv6 下使用"
|
msgstr "DNAT 方法不支持在 IPv6 下使用"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -384,7 +392,7 @@ msgstr ""
|
|||||||
"上面脚本所需的 KEY。请查看 <a href=\"%s\" target=\"_blank\">%s</a> 以获得对应"
|
"上面脚本所需的 KEY。请查看 <a href=\"%s\" target=\"_blank\">%s</a> 以获得对应"
|
||||||
"脚本所需的 KEY 列表。请输入格式为 KEY=VAL 的多个 KEY 条目"
|
"脚本所需的 KEY 列表。请输入格式为 KEY=VAL 的多个 KEY 条目"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr "DNAT 模式下不支持主机名"
|
msgstr "DNAT 模式下不支持主机名"
|
||||||
|
|
||||||
@@ -392,84 +400,84 @@ msgstr "DNAT 模式下不支持主机名"
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr "没有活动的端口映射"
|
msgstr "没有活动的端口映射"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr "此装置默认 LAN"
|
msgstr "此装置默认 LAN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr "此装置默认 WAN"
|
msgstr "此装置默认 WAN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr "该端口已被使用"
|
msgstr "该端口已被使用"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr "检测 NAT 行为需要先安装 <a href=\"%s\"><b>stuntman-client</b></a>"
|
msgstr "检测 NAT 行为需要先安装 <a href=\"%s\"><b>stuntman-client</b></a>"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "用户名"
|
msgstr "用户名"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr "经由 natmap"
|
msgstr "经由 natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr "Web UI 端口"
|
msgstr "Web UI 端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr "权重"
|
msgstr "权重"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr "keep-alive 间隔 (秒)"
|
msgstr "keep-alive 间隔 (秒)"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr "luci 检查可能无法检测到所有冲突"
|
msgstr "luci 检查可能无法检测到所有冲突"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -10,20 +10,20 @@ msgstr ""
|
|||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Generator: Weblate 4.15.1-dev\n"
|
"X-Generator: Weblate 4.15.1-dev\n"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "%s set 0 will rewrite client listen port"
|
msgid "%s set 0 will rewrite client listen port"
|
||||||
msgstr "%s 設為 0 將重寫用戶端監聽埠"
|
msgstr "%s 設為 0 將重寫用戶端監聽埠"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:598
|
#: htdocs/luci-static/resources/view/natmap.js:602
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:634
|
#: htdocs/luci-static/resources/view/natmap.js:638
|
||||||
msgid "<code># All external tokens required</code> Field"
|
msgid "<code># All external tokens required</code> Field"
|
||||||
msgstr "<code># All external tokens required</code> 字段"
|
msgstr "<code># All external tokens required</code> 字段"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
msgid "A Record"
|
msgid "A Record"
|
||||||
msgstr "A 記錄"
|
msgstr "A 記錄"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
msgid "AAAA Record"
|
msgid "AAAA Record"
|
||||||
msgstr "AAAA 記錄"
|
msgstr "AAAA 記錄"
|
||||||
|
|
||||||
@@ -31,138 +31,146 @@ msgstr "AAAA 記錄"
|
|||||||
msgid "Active NATMap Portmap"
|
msgid "Active NATMap Portmap"
|
||||||
msgstr "活動的 NATMap 埠映射"
|
msgstr "活動的 NATMap 埠映射"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:396
|
#: htdocs/luci-static/resources/view/natmap.js:400
|
||||||
msgid "Allocation ports randomly instead of sequentially."
|
msgid "Allocation ports randomly instead of sequentially."
|
||||||
msgstr "隨機分配端口,而不是按順序分配。"
|
msgstr "隨機分配端口,而不是按順序分配。"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:152
|
#: htdocs/luci-static/resources/view/natmap.js:156
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:158
|
#: htdocs/luci-static/resources/view/natmap.js:162
|
||||||
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
msgid "Available server <a href=\"%s\" target=\"_blank\">references</a>"
|
||||||
msgstr "可用的伺服器<a href=\"%s\" target=\"_blank\">參考</a>"
|
msgstr "可用的伺服器<a href=\"%s\" target=\"_blank\">參考</a>"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:381
|
#: htdocs/luci-static/resources/view/natmap.js:385
|
||||||
msgid "Bind port"
|
msgid "Bind port"
|
||||||
msgstr "綁定埠"
|
msgstr "綁定埠"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:151
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
msgid "Boot delay"
|
||||||
|
msgstr "啟動延遲"
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
msgid "Can refer to RFC8552"
|
msgid "Can refer to RFC8552"
|
||||||
msgstr "可以參考 RFC8552"
|
msgstr "可以參考 RFC8552"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:267
|
#: htdocs/luci-static/resources/view/natmap.js:271
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr "檢查"
|
msgstr "檢查"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:266
|
#: htdocs/luci-static/resources/view/natmap.js:270
|
||||||
msgid "Check NAT Behavior"
|
msgid "Check NAT Behavior"
|
||||||
msgstr "檢查 NAT 行為"
|
msgstr "檢查 NAT 行為"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:334
|
#: htdocs/luci-static/resources/view/natmap.js:338
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr "備註"
|
msgstr "備註"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:302
|
#: htdocs/luci-static/resources/view/natmap.js:306
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:755
|
#: htdocs/luci-static/resources/view/natmap.js:759
|
||||||
msgid "Custom Script"
|
msgid "Custom Script"
|
||||||
msgstr "自定義腳本"
|
msgstr "自定義腳本"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:301
|
#: htdocs/luci-static/resources/view/natmap.js:305
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:620
|
#: htdocs/luci-static/resources/view/natmap.js:624
|
||||||
msgid "DDNS Scripts"
|
msgid "DDNS Scripts"
|
||||||
msgstr "DDNS 腳本"
|
msgstr "DDNS 腳本"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:447
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:451
|
||||||
msgid "Default"
|
msgid "Default"
|
||||||
msgstr "默認"
|
msgstr "默認"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:615
|
#: htdocs/luci-static/resources/view/natmap.js:152
|
||||||
|
msgid "Delay in seconds before starting the service."
|
||||||
|
msgstr "啟動服務前的延遲時間(秒)。"
|
||||||
|
|
||||||
|
#: htdocs/luci-static/resources/view/natmap.js:619
|
||||||
msgid "EnDDNS"
|
msgid "EnDDNS"
|
||||||
msgstr "啟用DDNS"
|
msgstr "啟用DDNS"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:579
|
#: htdocs/luci-static/resources/view/natmap.js:583
|
||||||
msgid "EnNotify"
|
msgid "EnNotify"
|
||||||
msgstr "啟用通知"
|
msgstr "啟用通知"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:147
|
#: htdocs/luci-static/resources/view/natmap.js:147
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:304
|
#: htdocs/luci-static/resources/view/natmap.js:308
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "啟用"
|
msgstr "啟用"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:288
|
#: htdocs/luci-static/resources/view/natmap.js:292
|
||||||
msgid "Expand/Collapse result"
|
msgid "Expand/Collapse result"
|
||||||
msgstr "展開/折疊 結果"
|
msgstr "展開/折疊 結果"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "Expecting: %s"
|
msgid "Expecting: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:565
|
#: htdocs/luci-static/resources/view/natmap.js:569
|
||||||
msgid "External IP"
|
msgid "External IP"
|
||||||
msgstr "外部 IP"
|
msgstr "外部 IP"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:572
|
#: htdocs/luci-static/resources/view/natmap.js:576
|
||||||
msgid "External Port"
|
msgid "External Port"
|
||||||
msgstr "外部通訊埠"
|
msgstr "外部通訊埠"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:640
|
#: htdocs/luci-static/resources/view/natmap.js:644
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:647
|
#: htdocs/luci-static/resources/view/natmap.js:651
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:669
|
#: htdocs/luci-static/resources/view/natmap.js:673
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:727
|
#: htdocs/luci-static/resources/view/natmap.js:731
|
||||||
msgid "FQDN"
|
msgid "FQDN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:419
|
#: htdocs/luci-static/resources/view/natmap.js:423
|
||||||
msgid "Firewall DNAT"
|
msgid "Firewall DNAT"
|
||||||
msgstr "防火牆 DNAT"
|
msgstr "防火牆 DNAT"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "For TCP mode"
|
msgid "For TCP mode"
|
||||||
msgstr "用於 TCP 模式"
|
msgstr "用於 TCP 模式"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "For UDP mode"
|
msgid "For UDP mode"
|
||||||
msgstr "用於 UDP 模式"
|
msgstr "用於 UDP 模式"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:299
|
#: htdocs/luci-static/resources/view/natmap.js:303
|
||||||
msgid "Forward Settings"
|
msgid "Forward Settings"
|
||||||
msgstr "轉發設定"
|
msgstr "轉發設定"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
msgid "Forward method"
|
msgid "Forward method"
|
||||||
msgstr "轉發方法"
|
msgstr "轉發方法"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:401
|
#: htdocs/luci-static/resources/view/natmap.js:405
|
||||||
msgid "Forward mode"
|
msgid "Forward mode"
|
||||||
msgstr "轉發模式"
|
msgstr "轉發模式"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:462
|
#: htdocs/luci-static/resources/view/natmap.js:466
|
||||||
msgid "Forward target"
|
msgid "Forward target"
|
||||||
msgstr "轉發目標"
|
msgstr "轉發目標"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Forward target port"
|
msgid "Forward target port"
|
||||||
msgstr "轉發目標埠"
|
msgstr "轉發目標埠"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Forward timeout"
|
msgid "Forward timeout"
|
||||||
msgstr "轉發逾時"
|
msgstr "轉發逾時"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:167
|
#: htdocs/luci-static/resources/view/natmap.js:171
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Fwmark value"
|
msgid "Fwmark value"
|
||||||
msgstr " Fwmark 值"
|
msgstr " Fwmark 值"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:298
|
#: htdocs/luci-static/resources/view/natmap.js:302
|
||||||
msgid "General Settings"
|
msgid "General Settings"
|
||||||
msgstr "一般設定"
|
msgstr "一般設定"
|
||||||
|
|
||||||
@@ -170,27 +178,27 @@ msgstr "一般設定"
|
|||||||
msgid "Grant access to LuCI app natmap"
|
msgid "Grant access to LuCI app natmap"
|
||||||
msgstr "授予訪問 LuCI 應用 natmap 的權限"
|
msgstr "授予訪問 LuCI 應用 natmap 的權限"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "HTTP keep-alive"
|
msgid "HTTP keep-alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:325
|
#: htdocs/luci-static/resources/view/natmap.js:329
|
||||||
msgid "HTTP server"
|
msgid "HTTP server"
|
||||||
msgstr "HTTP 伺服器"
|
msgstr "HTTP 伺服器"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:714
|
#: htdocs/luci-static/resources/view/natmap.js:718
|
||||||
msgid "HTTPS Record"
|
msgid "HTTPS Record"
|
||||||
msgstr "HTTPS 記錄"
|
msgstr "HTTPS 記錄"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:349
|
#: htdocs/luci-static/resources/view/natmap.js:353
|
||||||
msgid "IPv4"
|
msgid "IPv4"
|
||||||
msgstr "IPv4"
|
msgstr "IPv4"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:350
|
#: htdocs/luci-static/resources/view/natmap.js:354
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr "IPv6"
|
msgstr "IPv6"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:383
|
#: htdocs/luci-static/resources/view/natmap.js:387
|
||||||
msgid ""
|
msgid ""
|
||||||
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
"If you enable <b>Notify Scripts</b>, you will be bombarded with messages"
|
||||||
msgstr "如果您開啟了<b>通知腳本</b>, 將被大量訊息轟炸"
|
msgstr "如果您開啟了<b>通知腳本</b>, 將被大量訊息轟炸"
|
||||||
@@ -203,23 +211,23 @@ msgstr "內部位址"
|
|||||||
msgid "Inner Port"
|
msgid "Inner Port"
|
||||||
msgstr "內部埠"
|
msgstr "內部埠"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:374
|
#: htdocs/luci-static/resources/view/natmap.js:378
|
||||||
msgid "Interface"
|
msgid "Interface"
|
||||||
msgstr "介面"
|
msgstr "介面"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:310
|
#: htdocs/luci-static/resources/view/natmap.js:314
|
||||||
msgid "Keep-alive interval"
|
msgid "Keep-alive interval"
|
||||||
msgstr "Keep-alive 間隔"
|
msgstr "Keep-alive 間隔"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:330
|
#: htdocs/luci-static/resources/view/natmap.js:334
|
||||||
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
msgid "Mark fwmark for STUN/HTTP outbound traffic"
|
||||||
msgstr "為 STUN/HTTP 出站流量標記 fwmark"
|
msgstr "為 STUN/HTTP 出站流量標記 fwmark"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:439
|
#: htdocs/luci-static/resources/view/natmap.js:443
|
||||||
msgid "NAT loopback"
|
msgid "NAT loopback"
|
||||||
msgstr "NAT 環回"
|
msgstr "NAT 環回"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid "NATBehavior-Test port open on"
|
msgid "NATBehavior-Test port open on"
|
||||||
msgstr "NATBehavior-Test 通訊埠打開於"
|
msgstr "NATBehavior-Test 通訊埠打開於"
|
||||||
|
|
||||||
@@ -232,24 +240,24 @@ msgstr "NATMap"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "名称"
|
msgstr "名称"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:415
|
#: htdocs/luci-static/resources/view/natmap.js:419
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:491
|
#: htdocs/luci-static/resources/view/natmap.js:495
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:514
|
#: htdocs/luci-static/resources/view/natmap.js:518
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:390
|
#: htdocs/luci-static/resources/view/natmap.js:394
|
||||||
msgid "Non-0 port"
|
msgid "Non-0 port"
|
||||||
msgstr "非 0 埠"
|
msgstr "非 0 埠"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:382
|
#: htdocs/luci-static/resources/view/natmap.js:386
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
"Note: After using <code>portrange</code>, the public ports will be opened in "
|
||||||
"rotation</br>"
|
"rotation</br>"
|
||||||
msgstr "注意: 使用 <code>portrange</code> 後, 會輪換打開公網埠</br>"
|
msgstr "注意: 使用 <code>portrange</code> 後, 會輪換打開公網埠</br>"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:300
|
#: htdocs/luci-static/resources/view/natmap.js:304
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:584
|
#: htdocs/luci-static/resources/view/natmap.js:588
|
||||||
msgid "Notify Scripts"
|
msgid "Notify Scripts"
|
||||||
msgstr "通知腳本"
|
msgstr "通知腳本"
|
||||||
|
|
||||||
@@ -261,44 +269,44 @@ msgstr "外部位址"
|
|||||||
msgid "Outer Port"
|
msgid "Outer Port"
|
||||||
msgstr "外部通訊埠"
|
msgstr "外部通訊埠"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:559
|
#: htdocs/luci-static/resources/view/natmap.js:563
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "密碼"
|
msgstr "密碼"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:185
|
#: htdocs/luci-static/resources/view/natmap.js:189
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
"Please check <a href=\"%s\"><b>Firewall Rules</b></a> to avoid port "
|
||||||
"conflicts.</br>"
|
"conflicts.</br>"
|
||||||
msgstr "請檢查<a href=\"%s\"><b>防火牆規則</b></a>以避免埠衝突</br>"
|
msgstr "請檢查<a href=\"%s\"><b>防火牆規則</b></a>以避免埠衝突</br>"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:455
|
#: htdocs/luci-static/resources/view/natmap.js:459
|
||||||
msgid "Port forwarding session idle timeout in seconds"
|
msgid "Port forwarding session idle timeout in seconds"
|
||||||
msgstr "連接埠轉發會話空閒逾時 (以秒為單位)"
|
msgstr "連接埠轉發會話空閒逾時 (以秒為單位)"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:700
|
#: htdocs/luci-static/resources/view/natmap.js:704
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:748
|
#: htdocs/luci-static/resources/view/natmap.js:752
|
||||||
msgid "Priority"
|
msgid "Priority"
|
||||||
msgstr "優先權"
|
msgstr "優先權"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:604
|
#: htdocs/luci-static/resources/view/natmap.js:608
|
||||||
msgid "Private API Domain"
|
msgid "Private API Domain"
|
||||||
msgstr "私有 API 域名"
|
msgstr "私有 API 域名"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:337
|
#: htdocs/luci-static/resources/view/natmap.js:341
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:684
|
#: htdocs/luci-static/resources/view/natmap.js:688
|
||||||
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
#: htdocs/luci-static/resources/view/status/include/72_natmap.js:60
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "協議"
|
msgstr "協議"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:395
|
#: htdocs/luci-static/resources/view/natmap.js:399
|
||||||
msgid "Randomly allocation ports"
|
msgid "Randomly allocation ports"
|
||||||
msgstr "隨機分配端口"
|
msgstr "隨機分配端口"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:524
|
#: htdocs/luci-static/resources/view/natmap.js:528
|
||||||
msgid "Refresh Scripts"
|
msgid "Refresh Scripts"
|
||||||
msgstr "用戶端更新腳本"
|
msgstr "用戶端更新腳本"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:517
|
#: htdocs/luci-static/resources/view/natmap.js:521
|
||||||
msgid "Refresh client"
|
msgid "Refresh client"
|
||||||
msgstr "更新用戶端"
|
msgstr "更新用戶端"
|
||||||
|
|
||||||
@@ -307,74 +315,74 @@ msgstr "更新用戶端"
|
|||||||
msgid "Reload"
|
msgid "Reload"
|
||||||
msgstr "重新載入"
|
msgstr "重新載入"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:347
|
#: htdocs/luci-static/resources/view/natmap.js:351
|
||||||
msgid "Restrict to address family"
|
msgid "Restrict to address family"
|
||||||
msgstr "限制到位址群"
|
msgstr "限制到位址群"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:654
|
#: htdocs/luci-static/resources/view/natmap.js:658
|
||||||
msgid "SRV Record"
|
msgid "SRV Record"
|
||||||
msgstr "SRV 記錄"
|
msgstr "SRV 記錄"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:315
|
#: htdocs/luci-static/resources/view/natmap.js:319
|
||||||
msgid "STUN check cycle (once every n intervals)"
|
msgid "STUN check cycle (once every n intervals)"
|
||||||
msgstr "STUN 檢查週期 (每 n 個間隔一次)"
|
msgstr "STUN 檢查週期 (每 n 個間隔一次)"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:320
|
#: htdocs/luci-static/resources/view/natmap.js:324
|
||||||
msgid "STUN server"
|
msgid "STUN server"
|
||||||
msgstr "STUN 伺服器"
|
msgstr "STUN 伺服器"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:163
|
#: htdocs/luci-static/resources/view/natmap.js:167
|
||||||
msgid "Server"
|
msgid "Server"
|
||||||
msgstr "伺服器"
|
msgstr "伺服器"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:675
|
#: htdocs/luci-static/resources/view/natmap.js:679
|
||||||
msgid "Service"
|
msgid "Service"
|
||||||
msgstr "服務"
|
msgstr "服務"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:494
|
#: htdocs/luci-static/resources/view/natmap.js:498
|
||||||
msgid "Set 0 will follow Public port"
|
msgid "Set 0 will follow Public port"
|
||||||
msgstr "設為 0 將遵循公共埠"
|
msgstr "設為 0 將遵循公共埠"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:741
|
#: htdocs/luci-static/resources/view/natmap.js:745
|
||||||
msgid "SvcParams"
|
msgid "SvcParams"
|
||||||
msgstr "服務參數"
|
msgstr "服務參數"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:685
|
#: htdocs/luci-static/resources/view/natmap.js:689
|
||||||
msgid "TCP"
|
msgid "TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:446
|
#: htdocs/luci-static/resources/view/natmap.js:450
|
||||||
msgid "TCP Congestion control"
|
msgid "TCP Congestion control"
|
||||||
msgstr "TCP 擁塞控制"
|
msgstr "TCP 擁塞控制"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:151
|
#: htdocs/luci-static/resources/view/natmap.js:155
|
||||||
msgid "TCP STUN"
|
msgid "TCP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:687
|
#: htdocs/luci-static/resources/view/natmap.js:691
|
||||||
msgid "TLS"
|
msgid "TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:693
|
#: htdocs/luci-static/resources/view/natmap.js:697
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:733
|
#: htdocs/luci-static/resources/view/natmap.js:737
|
||||||
msgid "Target"
|
msgid "Target"
|
||||||
msgstr "目標"
|
msgstr "目標"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:610
|
#: htdocs/luci-static/resources/view/natmap.js:614
|
||||||
msgid "Text content"
|
msgid "Text content"
|
||||||
msgstr "文本內容"
|
msgstr "文本內容"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:418
|
#: htdocs/luci-static/resources/view/natmap.js:422
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:434
|
#: htdocs/luci-static/resources/view/natmap.js:438
|
||||||
msgid "The DNAT method not support under IPv6"
|
msgid "The DNAT method not support under IPv6"
|
||||||
msgstr "DNAT 方法不支援在 IPv6 下使用"
|
msgstr "DNAT 方法不支援在 IPv6 下使用"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:595
|
#: htdocs/luci-static/resources/view/natmap.js:599
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:631
|
#: htdocs/luci-static/resources/view/natmap.js:635
|
||||||
msgid ""
|
msgid ""
|
||||||
"The KEY required by the script above. See <a href=\"%s\" "
|
"The KEY required by the script above. See <a href=\"%s\" "
|
||||||
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
"target=\"_blank\">%s</a> for the format of KEY required by each script. Add "
|
||||||
@@ -384,7 +392,7 @@ msgstr ""
|
|||||||
"上面腳本所需的 KEY。請參閱 <a href=\"%s\" target=\"_blank\">%s</a> 以獲得對應"
|
"上面腳本所需的 KEY。請參閱 <a href=\"%s\" target=\"_blank\">%s</a> 以獲得對應"
|
||||||
"腳本所需的 KEY 清單。請輸入格式為 KEY=VAL 的多個 KEY 條目"
|
"腳本所需的 KEY 清單。請輸入格式為 KEY=VAL 的多個 KEY 條目"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:471
|
#: htdocs/luci-static/resources/view/natmap.js:475
|
||||||
msgid "The hostname not support under DNAT mode"
|
msgid "The hostname not support under DNAT mode"
|
||||||
msgstr "DNAT 模式下不支援主機名"
|
msgstr "DNAT 模式下不支援主機名"
|
||||||
|
|
||||||
@@ -392,84 +400,84 @@ msgstr "DNAT 模式下不支援主機名"
|
|||||||
msgid "There are no active portmap"
|
msgid "There are no active portmap"
|
||||||
msgstr "沒有活動的通訊埠映射"
|
msgstr "沒有活動的通訊埠映射"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:366
|
#: htdocs/luci-static/resources/view/natmap.js:370
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:464
|
#: htdocs/luci-static/resources/view/natmap.js:468
|
||||||
msgid "This device default Lan"
|
msgid "This device default Lan"
|
||||||
msgstr "本裝置默認 LAN"
|
msgstr "本裝置默認 LAN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:367
|
#: htdocs/luci-static/resources/view/natmap.js:371
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:465
|
#: htdocs/luci-static/resources/view/natmap.js:469
|
||||||
msgid "This device default Wan"
|
msgid "This device default Wan"
|
||||||
msgstr "本裝置默認 WAN"
|
msgstr "本裝置默認 WAN"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:199
|
#: htdocs/luci-static/resources/view/natmap.js:203
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:208
|
#: htdocs/luci-static/resources/view/natmap.js:212
|
||||||
msgid "This port is already used"
|
msgid "This port is already used"
|
||||||
msgstr "該埠已被使用"
|
msgstr "該埠已被使用"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:270
|
#: htdocs/luci-static/resources/view/natmap.js:274
|
||||||
msgid ""
|
msgid ""
|
||||||
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
"To check NAT Behavior you need to install <a href=\"%s\"><b>stuntman-client</"
|
||||||
"b></a> first"
|
"b></a> first"
|
||||||
msgstr "檢查 NAT 行為需要先安裝 <a href=\"%s\"><b>stuntman-client</b></a>"
|
msgstr "檢查 NAT 行為需要先安裝 <a href=\"%s\"><b>stuntman-client</b></a>"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:594
|
#: htdocs/luci-static/resources/view/natmap.js:598
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:630
|
#: htdocs/luci-static/resources/view/natmap.js:634
|
||||||
msgid "Tokens"
|
msgid "Tokens"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:180
|
#: htdocs/luci-static/resources/view/natmap.js:184
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:686
|
#: htdocs/luci-static/resources/view/natmap.js:690
|
||||||
msgid "UDP"
|
msgid "UDP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:157
|
#: htdocs/luci-static/resources/view/natmap.js:161
|
||||||
msgid "UDP STUN"
|
msgid "UDP STUN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:536
|
#: htdocs/luci-static/resources/view/natmap.js:540
|
||||||
msgid "URI Scheme"
|
msgid "URI Scheme"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:553
|
#: htdocs/luci-static/resources/view/natmap.js:557
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "用戶名"
|
msgstr "用戶名"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:420
|
#: htdocs/luci-static/resources/view/natmap.js:424
|
||||||
msgid "Via natmap"
|
msgid "Via natmap"
|
||||||
msgstr "經由 natmap"
|
msgstr "經由 natmap"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:545
|
#: htdocs/luci-static/resources/view/natmap.js:549
|
||||||
msgid "Web UI Port"
|
msgid "Web UI Port"
|
||||||
msgstr "Web UI 通訊埠"
|
msgstr "Web UI 通訊埠"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:707
|
#: htdocs/luci-static/resources/view/natmap.js:711
|
||||||
msgid "Weight"
|
msgid "Weight"
|
||||||
msgstr "權重"
|
msgstr "權重"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:159
|
#: htdocs/luci-static/resources/view/natmap.js:163
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
"https://github.com/muink/rfc5780-stun-server/blob/master/valid_hosts_rfc5780."
|
||||||
"txt"
|
"txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:153
|
#: htdocs/luci-static/resources/view/natmap.js:157
|
||||||
msgid ""
|
msgid ""
|
||||||
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
"https://github.com/muink/rfc5780-stun-server/blob/master/"
|
||||||
"valid_hosts_rfc5780_tcp.txt"
|
"valid_hosts_rfc5780_tcp.txt"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:170
|
#: htdocs/luci-static/resources/view/natmap.js:174
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:175
|
#: htdocs/luci-static/resources/view/natmap.js:179
|
||||||
msgid "keep-alive interval (seconds)"
|
msgid "keep-alive interval (seconds)"
|
||||||
msgstr "keep-alive 間隔 (秒)"
|
msgstr "keep-alive 間隔 (秒)"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:187
|
#: htdocs/luci-static/resources/view/natmap.js:191
|
||||||
msgid "luci check may not detect all conflicts."
|
msgid "luci check may not detect all conflicts."
|
||||||
msgstr "luci 檢查可能無法檢測到所有衝突"
|
msgstr "luci 檢查可能無法檢測到所有衝突"
|
||||||
|
|
||||||
#: htdocs/luci-static/resources/view/natmap.js:760
|
#: htdocs/luci-static/resources/view/natmap.js:764
|
||||||
msgid "⭮"
|
msgid "⭮"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-passwall
|
PKG_NAME:=luci-app-passwall
|
||||||
PKG_VERSION:=26.9.9
|
PKG_VERSION:=26.9.16
|
||||||
PKG_RELEASE:=275
|
PKG_RELEASE:=276
|
||||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS:= \
|
PKG_CONFIG_DEPENDS:= \
|
||||||
|
|||||||
@@ -707,16 +707,6 @@ o = s:option(Value, "ws_path", translate("WebSocket Path"))
|
|||||||
o.placeholder = "/"
|
o.placeholder = "/"
|
||||||
o:depends({ transport = "ws" })
|
o:depends({ transport = "ws" })
|
||||||
|
|
||||||
o = s:option(Flag, "ws_enableEarlyData", translate("Enable early data"))
|
|
||||||
o:depends({ transport = "ws" })
|
|
||||||
|
|
||||||
o = s:option(Value, "ws_maxEarlyData", translate("Early data length"))
|
|
||||||
o.default = "1024"
|
|
||||||
o:depends({ ws_enableEarlyData = true })
|
|
||||||
|
|
||||||
o = s:option(Value, "ws_earlyDataHeaderName", translate("Early data header name"), translate("Recommended value: Sec-WebSocket-Protocol"))
|
|
||||||
o:depends({ ws_enableEarlyData = true })
|
|
||||||
|
|
||||||
-- [[ HTTPUpgrade部分 ]]--
|
-- [[ HTTPUpgrade部分 ]]--
|
||||||
o = s:option(Value, "httpupgrade_host", translate("HTTPUpgrade Host"))
|
o = s:option(Value, "httpupgrade_host", translate("HTTPUpgrade Host"))
|
||||||
o:depends({ transport = "httpupgrade" })
|
o:depends({ transport = "httpupgrade" })
|
||||||
|
|||||||
@@ -399,6 +399,10 @@ o:depends({ transport = "ws" })
|
|||||||
o = s:option(Value, "ws_path", translate("WebSocket Path"))
|
o = s:option(Value, "ws_path", translate("WebSocket Path"))
|
||||||
o:depends({ transport = "ws" })
|
o:depends({ transport = "ws" })
|
||||||
|
|
||||||
|
o = s:option(Value, "ws_earlyDataHeaderName", translate("Early data header name"), translate("Recommended value: Sec-WebSocket-Protocol"))
|
||||||
|
o.placeholder = "Sec-WebSocket-Protocol"
|
||||||
|
o:depends({ transport = "ws" })
|
||||||
|
|
||||||
-- [[ HTTPUpgrade部分 ]]--
|
-- [[ HTTPUpgrade部分 ]]--
|
||||||
|
|
||||||
o = s:option(Value, "httpupgrade_host", translate("HTTPUpgrade Host"))
|
o = s:option(Value, "httpupgrade_host", translate("HTTPUpgrade Host"))
|
||||||
|
|||||||
@@ -347,9 +347,20 @@ function gen_outbound(flag, node, tag, proxy_table)
|
|||||||
Host = node.ws_host,
|
Host = node.ws_host,
|
||||||
["User-Agent"] = node.user_agent
|
["User-Agent"] = node.user_agent
|
||||||
} or nil,
|
} or nil,
|
||||||
max_early_data = tonumber(node.ws_maxEarlyData) or nil,
|
|
||||||
early_data_header_name = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil --要与 Xray-core 兼容,请将其设置为 Sec-WebSocket-Protocol。它需要与服务器保持一致。
|
|
||||||
}
|
}
|
||||||
|
local path = api.UrlDecode(node.ws_path)
|
||||||
|
local path_dat = api.split(path, "?")
|
||||||
|
local params = {}
|
||||||
|
for _, v in pairs(api.split(path_dat[2], '&')) do
|
||||||
|
local t = api.split(v, '=')
|
||||||
|
params[t[1]] = t[2]
|
||||||
|
end
|
||||||
|
local ed = tonumber(params.ed)
|
||||||
|
if ed then
|
||||||
|
v2ray_transport.path = path_dat[1]
|
||||||
|
v2ray_transport.max_early_data = ed
|
||||||
|
end
|
||||||
|
v2ray_transport.early_data_header_name = params.eh or "Sec-WebSocket-Protocol"
|
||||||
end
|
end
|
||||||
|
|
||||||
if node.transport == "httpupgrade" then
|
if node.transport == "httpupgrade" then
|
||||||
@@ -762,7 +773,7 @@ function gen_config_server(node)
|
|||||||
type = "ws",
|
type = "ws",
|
||||||
path = node.ws_path or "/",
|
path = node.ws_path or "/",
|
||||||
headers = (node.ws_host ~= nil) and { Host = node.ws_host } or nil,
|
headers = (node.ws_host ~= nil) and { Host = node.ws_host } or nil,
|
||||||
early_data_header_name = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil --要与 Xray-core 兼容,请将其设置为 Sec-WebSocket-Protocol。它需要与服务器保持一致。
|
early_data_header_name = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or "Sec-WebSocket-Protocol"
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -249,10 +249,6 @@ local current_node = map:get(section)
|
|||||||
if (v_transport === "ws") {
|
if (v_transport === "ws") {
|
||||||
params += opt.query("host", dom_prefix + "ws_host");
|
params += opt.query("host", dom_prefix + "ws_host");
|
||||||
params += opt.query("path", dom_prefix + "ws_path");
|
params += opt.query("path", dom_prefix + "ws_path");
|
||||||
if (v_type == "sing-box" && opt.get(dom_prefix + "ws_enableEarlyData").checked) {
|
|
||||||
var ws_maxEarlyData = opt.get(dom_prefix + "ws_maxEarlyData").value;
|
|
||||||
params += "?ed=" + ws_maxEarlyData;
|
|
||||||
}
|
|
||||||
} else if (v_transport === "http") {
|
} else if (v_transport === "http") {
|
||||||
params += opt.query("host", dom_prefix + "http_host");
|
params += opt.query("host", dom_prefix + "http_host");
|
||||||
params += opt.query("path", dom_prefix + "http_path");
|
params += opt.query("path", dom_prefix + "http_path");
|
||||||
@@ -371,10 +367,6 @@ local current_node = map:get(section)
|
|||||||
if (v_transport === "ws") {
|
if (v_transport === "ws") {
|
||||||
info.host = opt.get(dom_prefix + "ws_host").value;
|
info.host = opt.get(dom_prefix + "ws_host").value;
|
||||||
info.path = opt.get(dom_prefix + "ws_path").value;
|
info.path = opt.get(dom_prefix + "ws_path").value;
|
||||||
if (v_type == "sing-box" && opt.get(dom_prefix + "ws_enableEarlyData").checked) {
|
|
||||||
var ws_maxEarlyData = opt.get(dom_prefix + "ws_maxEarlyData").value;
|
|
||||||
info.path = info.path + "?ed=" + ws_maxEarlyData;
|
|
||||||
}
|
|
||||||
} else if (v_transport === "http") {
|
} else if (v_transport === "http") {
|
||||||
info.host = opt.get(dom_prefix + "http_host").value;
|
info.host = opt.get(dom_prefix + "http_host").value;
|
||||||
info.path = opt.get(dom_prefix + "http_path").value;
|
info.path = opt.get(dom_prefix + "http_path").value;
|
||||||
@@ -431,10 +423,6 @@ local current_node = map:get(section)
|
|||||||
if (v_transport === "ws") {
|
if (v_transport === "ws") {
|
||||||
params += opt.query("host", dom_prefix + "ws_host");
|
params += opt.query("host", dom_prefix + "ws_host");
|
||||||
params += opt.query("path", dom_prefix + "ws_path");
|
params += opt.query("path", dom_prefix + "ws_path");
|
||||||
if (v_type == "sing-box" && opt.get(dom_prefix + "ws_enableEarlyData").checked) {
|
|
||||||
var ws_maxEarlyData = opt.get(dom_prefix + "ws_maxEarlyData").value;
|
|
||||||
params += encodeURIComponent("?ed=" + ws_maxEarlyData);
|
|
||||||
}
|
|
||||||
} else if (v_transport === "http") {
|
} else if (v_transport === "http") {
|
||||||
params += opt.query("host", dom_prefix + "http_host");
|
params += opt.query("host", dom_prefix + "http_host");
|
||||||
params += opt.query("path", dom_prefix + "http_path");
|
params += opt.query("path", dom_prefix + "http_path");
|
||||||
@@ -523,10 +511,6 @@ local current_node = map:get(section)
|
|||||||
if (v_transport === "ws") {
|
if (v_transport === "ws") {
|
||||||
params += opt.query("host", dom_prefix + "ws_host");
|
params += opt.query("host", dom_prefix + "ws_host");
|
||||||
params += opt.query("path", dom_prefix + "ws_path");
|
params += opt.query("path", dom_prefix + "ws_path");
|
||||||
if (v_type == "sing-box" && opt.get(dom_prefix + "ws_enableEarlyData").checked) {
|
|
||||||
var ws_maxEarlyData = opt.get(dom_prefix + "ws_maxEarlyData").value;
|
|
||||||
params += "?ed=" + ws_maxEarlyData;
|
|
||||||
}
|
|
||||||
} else if (v_transport === "http") {
|
} else if (v_transport === "http") {
|
||||||
params += opt.query("host", dom_prefix + "http_host");
|
params += opt.query("host", dom_prefix + "http_host");
|
||||||
params += opt.query("path", dom_prefix + "http_path");
|
params += opt.query("path", dom_prefix + "http_path");
|
||||||
@@ -1085,24 +1069,6 @@ local current_node = map:get(section)
|
|||||||
} else if (queryParam.type === "ws") {
|
} else if (queryParam.type === "ws") {
|
||||||
opt.set(dom_prefix + 'ws_host', queryParam.host || "");
|
opt.set(dom_prefix + 'ws_host', queryParam.host || "");
|
||||||
opt.set(dom_prefix + 'ws_path', queryParam.path || "");
|
opt.set(dom_prefix + 'ws_path', queryParam.path || "");
|
||||||
if (dom_prefix == "singbox_" && queryParam.path && queryParam.path.length > 1) {
|
|
||||||
var ws_path_params = {};
|
|
||||||
var ws_path_dat = queryParam.path.split('?');
|
|
||||||
var ws_path = ws_path_dat[0];
|
|
||||||
var ws_path_params = {};
|
|
||||||
var ws_path_params_array = (ws_path_dat[1] || '').split('&');
|
|
||||||
for (i = 0; i < ws_path_params_array.length; i++) {
|
|
||||||
var kv = ws_path_params_array[i].split('=');
|
|
||||||
ws_path_params[decodeURIComponent(kv[0]).toLowerCase()] = decodeURIComponent(kv[1] || '');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ws_path_params.ed) {
|
|
||||||
opt.set(dom_prefix + 'ws_path', ws_path);
|
|
||||||
opt.set(dom_prefix + 'ws_enableEarlyData', true);
|
|
||||||
opt.set(dom_prefix + 'ws_maxEarlyData', ws_path_params.ed);
|
|
||||||
opt.set(dom_prefix + 'ws_earlyDataHeaderName', 'Sec-WebSocket-Protocol');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (queryParam.type === "http") {
|
} else if (queryParam.type === "http") {
|
||||||
if (dom_prefix == "xray_") {
|
if (dom_prefix == "xray_") {
|
||||||
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||||
@@ -1232,24 +1198,6 @@ local current_node = map:get(section)
|
|||||||
} else if (queryParam.type === "ws") {
|
} else if (queryParam.type === "ws") {
|
||||||
opt.set(dom_prefix + 'ws_host', queryParam.host || "");
|
opt.set(dom_prefix + 'ws_host', queryParam.host || "");
|
||||||
opt.set(dom_prefix + 'ws_path', queryParam.path || "");
|
opt.set(dom_prefix + 'ws_path', queryParam.path || "");
|
||||||
if (dom_prefix == "singbox_" && queryParam.path && queryParam.path.length > 1) {
|
|
||||||
var ws_path_params = {};
|
|
||||||
var ws_path_dat = queryParam.path.split('?');
|
|
||||||
var ws_path = ws_path_dat[0];
|
|
||||||
var ws_path_params = {};
|
|
||||||
var ws_path_params_array = (ws_path_dat[1] || '').split('&');
|
|
||||||
for (i = 0; i < ws_path_params_array.length; i++) {
|
|
||||||
var kv = ws_path_params_array[i].split('=');
|
|
||||||
ws_path_params[decodeURIComponent(kv[0]).toLowerCase()] = decodeURIComponent(kv[1] || '');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ws_path_params.ed) {
|
|
||||||
opt.set(dom_prefix + 'ws_path', ws_path);
|
|
||||||
opt.set(dom_prefix + 'ws_enableEarlyData', true);
|
|
||||||
opt.set(dom_prefix + 'ws_maxEarlyData', ws_path_params.ed);
|
|
||||||
opt.set(dom_prefix + 'ws_earlyDataHeaderName', 'Sec-WebSocket-Protocol');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (queryParam.type === "http") {
|
} else if (queryParam.type === "http") {
|
||||||
if (dom_prefix == "xray_") {
|
if (dom_prefix == "xray_") {
|
||||||
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||||
@@ -1374,24 +1322,6 @@ local current_node = map:get(section)
|
|||||||
} else if (ssm.net === "ws") {
|
} else if (ssm.net === "ws") {
|
||||||
opt.set(dom_prefix + 'ws_host', ssm.host);
|
opt.set(dom_prefix + 'ws_host', ssm.host);
|
||||||
opt.set(dom_prefix + 'ws_path', ssm.path);
|
opt.set(dom_prefix + 'ws_path', ssm.path);
|
||||||
if (dom_prefix == "singbox_" && ssm.path && ssm.path.length > 1) {
|
|
||||||
var ws_path_params = {};
|
|
||||||
var ws_path_dat = ssm.path.split('?');
|
|
||||||
var ws_path = ws_path_dat[0];
|
|
||||||
var ws_path_params = {};
|
|
||||||
var ws_path_params_array = (ws_path_dat[1] || '').split('&');
|
|
||||||
for (i = 0; i < ws_path_params_array.length; i++) {
|
|
||||||
var kv = ws_path_params_array[i].split('=');
|
|
||||||
ws_path_params[decodeURIComponent(kv[0]).toLowerCase()] = decodeURIComponent(kv[1] || '');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ws_path_params.ed) {
|
|
||||||
opt.set(dom_prefix + 'ws_path', ws_path);
|
|
||||||
opt.set(dom_prefix + 'ws_enableEarlyData', true);
|
|
||||||
opt.set(dom_prefix + 'ws_maxEarlyData', ws_path_params.ed);
|
|
||||||
opt.set(dom_prefix + 'ws_earlyDataHeaderName', 'Sec-WebSocket-Protocol');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (ssm.net === "http") {
|
} else if (ssm.net === "http") {
|
||||||
if (dom_prefix == "xray_") {
|
if (dom_prefix == "xray_") {
|
||||||
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||||
@@ -1517,24 +1447,6 @@ local current_node = map:get(section)
|
|||||||
} else if (queryParam.type === "ws") {
|
} else if (queryParam.type === "ws") {
|
||||||
opt.set(dom_prefix + 'ws_host', queryParam.host || "");
|
opt.set(dom_prefix + 'ws_host', queryParam.host || "");
|
||||||
opt.set(dom_prefix + 'ws_path', queryParam.path || "");
|
opt.set(dom_prefix + 'ws_path', queryParam.path || "");
|
||||||
if (dom_prefix == "singbox_" && queryParam.path && queryParam.path.length > 1) {
|
|
||||||
var ws_path_params = {};
|
|
||||||
var ws_path_dat = queryParam.path.split('?');
|
|
||||||
var ws_path = ws_path_dat[0];
|
|
||||||
var ws_path_params = {};
|
|
||||||
var ws_path_params_array = (ws_path_dat[1] || '').split('&');
|
|
||||||
for (i = 0; i < ws_path_params_array.length; i++) {
|
|
||||||
var kv = ws_path_params_array[i].split('=');
|
|
||||||
ws_path_params[decodeURIComponent(kv[0]).toLowerCase()] = decodeURIComponent(kv[1] || '');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ws_path_params.ed) {
|
|
||||||
opt.set(dom_prefix + 'ws_path', ws_path);
|
|
||||||
opt.set(dom_prefix + 'ws_enableEarlyData', true);
|
|
||||||
opt.set(dom_prefix + 'ws_maxEarlyData', ws_path_params.ed);
|
|
||||||
opt.set(dom_prefix + 'ws_earlyDataHeaderName', 'Sec-WebSocket-Protocol');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (queryParam.type === "h2" || queryParam.type === "http") {
|
} else if (queryParam.type === "h2" || queryParam.type === "http") {
|
||||||
if (dom_prefix == "xray_") {
|
if (dom_prefix == "xray_") {
|
||||||
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||||
|
|||||||
@@ -1757,12 +1757,6 @@ msgstr "XUDP 最大并发连接数"
|
|||||||
msgid "Padding"
|
msgid "Padding"
|
||||||
msgstr "填充"
|
msgstr "填充"
|
||||||
|
|
||||||
msgid "Enable early data"
|
|
||||||
msgstr "启用前置数据"
|
|
||||||
|
|
||||||
msgid "Early data length"
|
|
||||||
msgstr "前置数据最大长度"
|
|
||||||
|
|
||||||
msgid "Early data header name"
|
msgid "Early data header name"
|
||||||
msgstr "前置数据 HTTP 头名"
|
msgstr "前置数据 HTTP 头名"
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,16 @@ local function build_common(node)
|
|||||||
if net == "ws" then
|
if net == "ws" then
|
||||||
local opts = node["ws-opts"]
|
local opts = node["ws-opts"]
|
||||||
if opts then
|
if opts then
|
||||||
o.transport.path = opts.path
|
local path = opts.path or "/"
|
||||||
|
local ed = opts["max-early-data"]
|
||||||
|
local eh = opts["early-data-header-name"]
|
||||||
|
if ed then
|
||||||
|
path = path .. "?ed=" .. ed
|
||||||
|
end
|
||||||
|
if eh then
|
||||||
|
path = path .. (path:find("?", 1, true) and "&eh=" or "?eh=") .. eh
|
||||||
|
end
|
||||||
|
o.transport.path = path
|
||||||
o.transport.host = opts.headers and opts.headers.Host
|
o.transport.host = opts.headers and opts.headers.Host
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -641,21 +641,6 @@ local function processData(szType, content, add_mode, group, sub_cfg)
|
|||||||
if info.net == 'ws' then
|
if info.net == 'ws' then
|
||||||
result.ws_host = info.host
|
result.ws_host = info.host
|
||||||
result.ws_path = info.path
|
result.ws_path = info.path
|
||||||
if result.type == "sing-box" and info.path then
|
|
||||||
local ws_path_dat = split(info.path, "?")
|
|
||||||
local ws_path = ws_path_dat[1]
|
|
||||||
local ws_path_params = {}
|
|
||||||
for _, v in pairs(split(ws_path_dat[2], '&')) do
|
|
||||||
local t = split(v, '=')
|
|
||||||
ws_path_params[t[1]] = t[2]
|
|
||||||
end
|
|
||||||
if ws_path_params.ed and tonumber(ws_path_params.ed) then
|
|
||||||
result.ws_path = ws_path
|
|
||||||
result.ws_enableEarlyData = "1"
|
|
||||||
result.ws_maxEarlyData = tonumber(ws_path_params.ed)
|
|
||||||
result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if info.net == "http" then
|
if info.net == "http" then
|
||||||
if result.type == "Xray" then
|
if result.type == "Xray" then
|
||||||
@@ -897,21 +882,6 @@ local function processData(szType, content, add_mode, group, sub_cfg)
|
|||||||
if params.type == 'ws' then
|
if params.type == 'ws' then
|
||||||
result.ws_host = params.host
|
result.ws_host = params.host
|
||||||
result.ws_path = params.path
|
result.ws_path = params.path
|
||||||
if result.type == "sing-box" and params.path then
|
|
||||||
local ws_path_dat = split(params.path, "%?")
|
|
||||||
local ws_path = ws_path_dat[1]
|
|
||||||
local ws_path_params = {}
|
|
||||||
for _, v in pairs(split(ws_path_dat[2], '&')) do
|
|
||||||
local t = split(v, '=')
|
|
||||||
ws_path_params[t[1]] = t[2]
|
|
||||||
end
|
|
||||||
if ws_path_params.ed and tonumber(ws_path_params.ed) then
|
|
||||||
result.ws_path = ws_path
|
|
||||||
result.ws_enableEarlyData = "1"
|
|
||||||
result.ws_maxEarlyData = tonumber(ws_path_params.ed)
|
|
||||||
result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if params.type == "http" then
|
if params.type == "http" then
|
||||||
if result.type == "sing-box" then
|
if result.type == "sing-box" then
|
||||||
@@ -1124,21 +1094,6 @@ local function processData(szType, content, add_mode, group, sub_cfg)
|
|||||||
if params.type == 'ws' then
|
if params.type == 'ws' then
|
||||||
result.ws_host = params.host
|
result.ws_host = params.host
|
||||||
result.ws_path = params.path
|
result.ws_path = params.path
|
||||||
if result.type == "sing-box" and params.path then
|
|
||||||
local ws_path_dat = split(params.path, "%?")
|
|
||||||
local ws_path = ws_path_dat[1]
|
|
||||||
local ws_path_params = {}
|
|
||||||
for _, v in pairs(split(ws_path_dat[2], '&')) do
|
|
||||||
local t = split(v, '=')
|
|
||||||
ws_path_params[t[1]] = t[2]
|
|
||||||
end
|
|
||||||
if ws_path_params.ed and tonumber(ws_path_params.ed) then
|
|
||||||
result.ws_path = ws_path
|
|
||||||
result.ws_enableEarlyData = "1"
|
|
||||||
result.ws_maxEarlyData = tonumber(ws_path_params.ed)
|
|
||||||
result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if params.type == "http" then
|
if params.type == "http" then
|
||||||
if result.type == "sing-box" then
|
if result.type == "sing-box" then
|
||||||
@@ -1266,21 +1221,6 @@ local function processData(szType, content, add_mode, group, sub_cfg)
|
|||||||
if params.type == 'ws' then
|
if params.type == 'ws' then
|
||||||
result.ws_host = params.host
|
result.ws_host = params.host
|
||||||
result.ws_path = params.path
|
result.ws_path = params.path
|
||||||
if result.type == "sing-box" and params.path then
|
|
||||||
local ws_path_dat = split(params.path, "%?")
|
|
||||||
local ws_path = ws_path_dat[1]
|
|
||||||
local ws_path_params = {}
|
|
||||||
for _, v in pairs(split(ws_path_dat[2], '&')) do
|
|
||||||
local t = split(v, '=')
|
|
||||||
ws_path_params[t[1]] = t[2]
|
|
||||||
end
|
|
||||||
if ws_path_params.ed and tonumber(ws_path_params.ed) then
|
|
||||||
result.ws_path = ws_path
|
|
||||||
result.ws_enableEarlyData = "1"
|
|
||||||
result.ws_maxEarlyData = tonumber(ws_path_params.ed)
|
|
||||||
result.ws_earlyDataHeaderName = "Sec-WebSocket-Protocol"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if params.type == "http" then
|
if params.type == "http" then
|
||||||
if result.type == "sing-box" then
|
if result.type == "sing-box" then
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-passwall2
|
PKG_NAME:=luci-app-passwall2
|
||||||
PKG_VERSION:=26.9.12
|
PKG_VERSION:=26.9.16
|
||||||
PKG_RELEASE:=124
|
PKG_RELEASE:=125
|
||||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS:= \
|
PKG_CONFIG_DEPENDS:= \
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=luci-app-temp-status
|
PKG_NAME:=luci-app-temp-status
|
||||||
PKG_VERSION:=0.8.1
|
PKG_VERSION:=0.8.1
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=4
|
||||||
LUCI_TITLE:=Temperature sensors data for the LuCI status page
|
LUCI_TITLE:=Temperature sensors data for the LuCI status page
|
||||||
LUCI_DEPENDS:=+ucode +ucode-mod-fs
|
LUCI_DEPENDS:=+ucode +ucode-mod-fs
|
||||||
LUCI_PKGARCH:=all
|
LUCI_PKGARCH:=all
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"POT-Creation-Date: \n"
|
||||||
|
"PO-Revision-Date: \n"
|
||||||
|
"Last-Translator: egemen <95934830+projectaccc@users.noreply.github.com>\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: tr\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 3.9\n"
|
||||||
|
|
||||||
|
msgid "(%d minute window, %d second interval)"
|
||||||
|
msgstr "(%d dakikalık aralık, %d saniyelik sıklık)"
|
||||||
|
|
||||||
|
msgid "Average:"
|
||||||
|
msgstr "Ortalama:"
|
||||||
|
|
||||||
|
msgid "Hide"
|
||||||
|
msgstr "Gizle"
|
||||||
|
|
||||||
|
msgid "Hot:"
|
||||||
|
msgstr "Sıcak:"
|
||||||
|
|
||||||
|
msgid "Minimum:"
|
||||||
|
msgstr "En Düşük:"
|
||||||
|
|
||||||
|
msgid "No temperature sensors available"
|
||||||
|
msgstr "Kullanılabilir sıcaklık sensörü yok"
|
||||||
|
|
||||||
|
msgid "Overheat:"
|
||||||
|
msgstr "Aşırı Isınma:"
|
||||||
|
|
||||||
|
msgid "Peak:"
|
||||||
|
msgstr "En Yüksek:"
|
||||||
|
|
||||||
|
msgid "Sensor"
|
||||||
|
msgstr "Sensör"
|
||||||
|
|
||||||
|
msgid "Show hidden sensors"
|
||||||
|
msgstr "Gizlenmiş sensörleri göster"
|
||||||
|
|
||||||
|
msgid "Switch view"
|
||||||
|
msgstr "Görünümü değiştir"
|
||||||
|
|
||||||
|
msgid "Temperature"
|
||||||
|
msgstr "Sıcaklık"
|
||||||
|
|
||||||
|
msgid "This page displays the temperature sensors data."
|
||||||
|
msgstr "Bu sayfada sıcaklık sensörü verileri görüntülenir."
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
---
|
||||||
|
name: aurora-motion
|
||||||
|
description: Use when a change adds, removes or adjusts motion in the Aurora theme (transition, animation, View Transition, hover/press/focus feedback, menu or drawer timing, 动效/动画/过渡/丝滑) or when a request asks "what should this state look like when it changes". Maps each LuCI UI state to one effect (CSS animates, JS only decides when and how far), keeps main.css and the theme JS from growing, and rejects motion that janks a phone or replays on poll.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Aurora motion: which state gets which effect
|
||||||
|
|
||||||
|
## First principles
|
||||||
|
|
||||||
|
1. **The device is small.** The router has little RAM and flash, and it serves every byte uncompressed. Motion must not grow the theme. Decorative motion must be net ≤ 0 bytes across main.css and the theme JS. Only a functional fix (§Traps) may add bytes, and each must stay under ~100 B.
|
||||||
|
2. **CSS does the moving; JS decides, in moderation.** Transitions and keyframes animate. JS may decide *when* and *how far* (see §JS). No animation library: `motion/mini` alone is 9,751 B raw (measured 2026-09-16). At HEAD, main.css had 1,270 B left under its 193 KB budget and menu-aurora.js had 306 B left under 22 KB.
|
||||||
|
3. **Motion explains a state change, nothing else.** If a state is not in the table below, the answer is "no motion". Plain and quiet beats impressive.
|
||||||
|
4. **Never cause jank.** The client is usually a phone on the router's WiFi. See §Jank.
|
||||||
|
|
||||||
|
## State → effect
|
||||||
|
|
||||||
|
These timings are the only ones allowed: 150 ms for controls, 250 ms for surfaces, 300–320 ms only for large panels. Curves: `ease-out` for entering elements, `ease-in-out` for symmetric changes. `cubic-bezier(0.34,1.25,0.5,1)` is the float-button's overshoot and nothing else. "Today" describes HEAD.
|
||||||
|
|
||||||
|
| State | Hook | Effect | Today |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Hover 悬停 (desktop only) | `:hover` | Colour change, instant. Icon-size controls may use `scale-105`. | top nav pills instant; some links still `transition-colors` |
|
||||||
|
| Focus 键盘聚焦 | `:focus-visible` | A ring appears. No movement. | `ring-2 ring-focus-ring` |
|
||||||
|
| Press 按下 | `:active` | `scale-95`, only on icon-size controls. | header toggles, switcher, card icons |
|
||||||
|
| Toggle 开关 | class flip | The thumb slides or the icon morphs. | `.theme-switcher`, hamburger → X |
|
||||||
|
| Expand / collapse 展开收起 | theme classes | Fade. Grid rows only where they already animate. | mobile submenu |
|
||||||
|
| Menu / drawer 菜单抽屉 | theme classes | Slide (translate) plus fade. A page scrim only dims; it is never blurred. The desktop sidebar pushes: its grid column eases with the panel's slide, same curve and length. | mega-menu (unblurred curtain), mobile nav, sidebar (push) |
|
||||||
|
| Tooltip 提示 | hover / focus | Fade plus `scale-95` → 100, after the intent delay. | `_tooltip.css`, `delay-300` |
|
||||||
|
| Dropdown open 下拉打开 | `.cbi-dropdown[open]` | Opacity .99 → 1 over 120 ms. This is functional: it fires luci-base's focus hand-off. | **missing** (Trap 2) |
|
||||||
|
| Modal open 弹窗打开 | `body.modal-overlay-active` | Fade in, reusing `aurora-fade-in`. The overlay goes from `display:none` to shown, so the keyframe restarts by itself. | none |
|
||||||
|
| Modal close 弹窗关闭 | class removed | None. luci-base provides no exit hook. | — |
|
||||||
|
| Notification in 通知出现 | `.alert-message.fade-in` | Fade in. | `_utilities.css` |
|
||||||
|
| Notification out 通知消失 | `.fade-out` (dismiss or timer) | Fade out. It must be a *running* transition. | **broken** (Trap 1) |
|
||||||
|
| View loading 页面加载中 | `#view > .spinning` | Spinner only. It keeps spinning under reduced motion. | `.spinning` |
|
||||||
|
| Page ready 内容就绪 | direct children of `#view` | At most one fade in, reusing `aurora-fade-in`. No stagger, no rise, and nothing deeper than the direct children. | none |
|
||||||
|
| Route leave 离开页面 | `#view.view-leaving` | Dim to 60 %. | `_layout.css` |
|
||||||
|
| Route enter 进入页面 | router swap | Same as "Page ready". Use one mechanism only: the View Transition or the fade, never both stacked. | router root crossfade |
|
||||||
|
| Tab switch 切换标签 | `[data-tab-active="true"]` | Fade in the incoming pane. Its height snaps. | none |
|
||||||
|
| Busy action 操作进行中 | `.spinning` on a button | Spinner. | `.spinning` |
|
||||||
|
| Progress 进度 | `.cbi-progressbar > div` | Width. This is an existing exception; don't copy it. | `_progress.css` |
|
||||||
|
| Drag 拖拽 | `.dragging` | A static state style, no motion. | `_form.css` |
|
||||||
|
| Invalid / success / error 校验与结果 | `.cbi-input-invalid`, `.alert-message.*` | Colour plus text. No shake, no bounce. | — |
|
||||||
|
| Poll refresh 数据刷新 | `LuCI.poll`, every 5 s | **None, ever.** | — |
|
||||||
|
| Theme switch 主题切换 | header.ut | View Transition crossfade. | header.ut |
|
||||||
|
| Disabled 禁用 | `:disabled` | None. | — |
|
||||||
|
|
||||||
|
The source lines for every hook are in references/luci-hooks.md.
|
||||||
|
|
||||||
|
### Never
|
||||||
|
|
||||||
|
Blur or mask reveal, parallax, scroll-linked or scroll-triggered motion, stagger on rows, cards or sections, text reveal, tilt, magnetic or cursor-follow effects, hover lift or shadow on `.cbi-section` or `#view`, skeleton screens, layout (FLIP) animation, crossfading tab panes, shake, loops other than `.spinning`, autoplay, and any motion on polled content.
|
||||||
|
|
||||||
|
## Bytes
|
||||||
|
|
||||||
|
Measured on main.css (raw, Tailwind 4.3.2 plus lightningcss, 2026-09-16). What you write matters more than what the effect is:
|
||||||
|
|
||||||
|
| Written as | Cost |
|
||||||
|
|---|---|
|
||||||
|
| Add a selector to an existing motion rule's selector list | **+17 B** |
|
||||||
|
| One shorthand on a new selector: `@apply [transition:opacity_150ms_ease-out]` | +50 B |
|
||||||
|
| Reuse the keyframe: `@apply animate-[aurora-fade-in_250ms_ease_backwards]` | +59 B |
|
||||||
|
| New keyframe plus its use (e.g. opacity + scale pop-in) | +141 B |
|
||||||
|
| Press as shorthand: `[transition:scale_150ms] active:[scale:.95]` | +99 B |
|
||||||
|
| Split utilities: `transition-opacity duration-150 ease-out` | **+316 B** |
|
||||||
|
| Split utilities for press: `transition-transform duration-150 active:scale-95` | +415 B |
|
||||||
|
| `starting:` entry with split utilities (modal) | +508 B |
|
||||||
|
|
||||||
|
Tailwind v4's split utilities expand into `--tw-*` fallback chains. So:
|
||||||
|
|
||||||
|
- Write motion as **one shorthand declaration**, or reuse `aurora-fade-in`.
|
||||||
|
- Prefer adding a selector to an existing rule over writing a new one.
|
||||||
|
- Don't add `@starting-style`: an element that comes back from `display:none` restarts its keyframe anyway.
|
||||||
|
|
||||||
|
Check every change. Run `pnpm build`, then compare `wc -c < htdocs/luci-static/aurora/main.css` with `git show HEAD:htdocs/luci-static/aurora/main.css | wc -c`. Put the delta in the commit body. If decorative motion comes out positive, remove bytes elsewhere or drop it.
|
||||||
|
|
||||||
|
## Jank
|
||||||
|
|
||||||
|
- Animate only `opacity`, `translate`, `scale` and `transform`. Never width, height, margins, `box-shadow`, `filter`, `backdrop-filter` or background. The only existing exceptions are the progress-bar width, the mobile-submenu grid rows, and the desktop sidebar column (user's call, 2026-09-16: a content column that snaps and then slides reads as broken; at 4× CPU the 250 ms push cost ~3 ms layout + style per frame on the overview page).
|
||||||
|
- Never animate an element that carries `backdrop-blur`, because the blur is re-rasterised every frame. Animate an unblurred child instead. Under software compositing, the blurred mega-menu curtain dropped 3–5 frames per open; without the blur it dropped none (2026-09-16).
|
||||||
|
- Keep `visibility` out of the tween. Write `[transition:opacity_220ms_…,visibility_0s_220ms]` and put `[transition-delay:0s]` on the shown state. A tweened `visibility` runs on the main thread, and on show it also keeps the paired `opacity` fade off the compositor.
|
||||||
|
- A `color` or `background-color` transition repaints on the main thread every frame. Swap state colours instantly. Dropping the transition on the nav pills cut repaints by 61 %.
|
||||||
|
- Always name the transitioned properties. Never use `transition-all`, and never use `will-change`.
|
||||||
|
- Allow one motion per state change per region, lasting no more than 320 ms. Click, save and error feedback get no delay.
|
||||||
|
- Under reduced motion, show the end state at once, but keep durations at 1 ms rather than `none` (Trap 1).
|
||||||
|
- Verify on the Layout track at 4× CPU throttling: aurora-performance runtime.md R1–R3.
|
||||||
|
|
||||||
|
## JS
|
||||||
|
|
||||||
|
JS is worth its bytes where CSS cannot decide. The mega-menu in `menu-aurora.js` is the reference:
|
||||||
|
|
||||||
|
- **Hover intent and aim.** Delay the first open. Hold the open category while the pointer heads into its panel. Every timer is cleared on leave.
|
||||||
|
- **Measure once, then cache.** Measure after `document.fonts.ready`, in `requestIdleCallback`. Write the result to a custom property (`--mega-menu-height`) and let CSS use it. Invalidate on resize only.
|
||||||
|
- **Distance-adaptive duration.** Write the computed duration to a custom property as well (`--mega-menu-duration`).
|
||||||
|
- **Sequencing and cleanup.** Toggle classes (`.active` → `.closing` → removed). A `transitionend` wait always has a fallback timer that reads the real duration back.
|
||||||
|
- **Reduced motion.** Check `prefers-reduced-motion` before any JS-timed motion, and jump straight to the end state.
|
||||||
|
|
||||||
|
Not allowed:
|
||||||
|
|
||||||
|
- a `requestAnimationFrame` loop that writes styles every frame;
|
||||||
|
- scroll or pointer listeners whose only job is an effect;
|
||||||
|
- layout reads (`offsetHeight`, `getBoundingClientRect`) on every event of a hot handler;
|
||||||
|
- `el.animate()`, except for a one-off sequence CSS cannot express, cancelled on `luci-navigate`.
|
||||||
|
|
||||||
|
## Traps (reproduced on a device, 2026-09-16)
|
||||||
|
|
||||||
|
luci-base acts on `transitionend`, which only fires if a transition actually runs.
|
||||||
|
|
||||||
|
1. **A dismissed notification never leaves the DOM.** The fill of `.fade-in` (`both`) holds `opacity`, so the `.fade-out` transition never starts. Every Dismiss and every expired notification leaves an invisible 84 px gap. Fix: `both` → `backwards` (+5 B). In `_reduced-motion.css`, replace `transition-none!` with `delay-0! duration-1!` (+57 B).
|
||||||
|
2. **Arrow keys cannot enter a dropdown.** There is no transition on `.cbi-dropdown > ul`, so focus never moves into the list. Fix: `opacity-99 [transition:opacity_120ms_ease-out]`, with `&.dropdown { opacity-100 }` (+98 B).
|
||||||
|
|
||||||
|
Any change touching `.fade-in`/`.fade-out`, dropdowns or `_reduced-motion.css` must pass this, run after `pnpm build`:
|
||||||
|
|
||||||
|
```
|
||||||
|
MAIN_CSS=htdocs/luci-static/aurora/main.css node .claude/skills/aurora-motion/scripts/transitionend-probe.mjs
|
||||||
|
```
|
||||||
|
|
||||||
|
The edit itself goes through /luci-change.
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# Evidence for the state table
|
||||||
|
|
||||||
|
luci-base line numbers are from openwrt/luci master (d19bf1358f, 2026-09-14),
|
||||||
|
through `$LUCI_SRC` (see luci-knowledge). Router line numbers are from
|
||||||
|
`@eamonxg/luci-theme-devkit` 0.3.1, `runtime/router.js`. Re-check them after
|
||||||
|
a version bump.
|
||||||
|
|
||||||
|
## Hooks luci-base emits
|
||||||
|
|
||||||
|
| State | Source | What happens |
|
||||||
|
|---|---|---|
|
||||||
|
| Modal open / close | `ui.js:4224`, `ui.js:4242` | `showModal` adds `body.modal-overlay-active`. `hideModal` only removes that class, so there is no exit hook. `#modal_overlay` is `hidden` until the class is present (`_modal.css`). |
|
||||||
|
| Notification | `ui.js:4359–4390`, `ui.js:4440` | `addNotification` creates `.alert-message.fade-in`. Dismiss adds `.fade-out`, and the node is removed on its `transitionend` (`ui.js:4364`). The time-limited variant adds `.fade-out` on a timer. |
|
||||||
|
| Dropdown | `ui.js:1300–1306`, `1390–1395`, `1416–1423` | Opening sets `[open]`, and the focus layer gets `.cbi-dropdown-open`. Focus moves into the list only on `transitionend` of the `ul`. |
|
||||||
|
| Dropdown keys | `ui.js:1881–1930` | ArrowUp/ArrowDown act only when a `li` or the `ul` already has focus. |
|
||||||
|
| Tabs | `ui.js:4728`, `4882–4887` | Panes get `data-tab-active="true"/"false"`, and the pane fires the `cbi-tab-active` event. In this theme, inactive panes are `invisible h-0` (`_segmented.css`), not `display:none`. |
|
||||||
|
| Busy button | `ui.js:5683` | Adds `.spinning` while a handler's promise is pending. |
|
||||||
|
| Drag | `ui.js:2442–2449` | Adds `.dragging` on `dragstart` and removes it on `dragend` (`.cbi-dynlist`). |
|
||||||
|
| Invalid input | `ui.js:2011` and the validators | `.cbi-input-invalid`. |
|
||||||
|
| Header indicator | `ui.js:4492` | `#indicators span[data-indicator][data-style=active\|inactive]`. |
|
||||||
|
| First render | `luci.js:2771` | `luci-loaded` fires after `initDOM()` and `Poll.start()`. |
|
||||||
|
| Poll | `luci.js:1093`, `luci.js:1165` | Ticks once a second and runs each callback every `pollinterval` seconds: 5 by default (`/etc/config/luci`; luci-base `header.ut:20`). Clicking the `poll-status` indicator pauses it (`luci.js:2742–2750`). |
|
||||||
|
|
||||||
|
For reference, bootstrap animates `max-height` over 125 ms on the dropdown
|
||||||
|
`ul` (`themes/luci-theme-bootstrap/.../cascade.css:1738`). That transition
|
||||||
|
is what makes the focus hand-off work there.
|
||||||
|
|
||||||
|
## Hooks the router emits
|
||||||
|
|
||||||
|
| Hook | Source | What happens |
|
||||||
|
|---|---|---|
|
||||||
|
| `.view-staging`, `#view.view-leaving` | `router.js:832–848` (`stage()`) | The incoming view renders off-screen, and the outgoing one is marked. |
|
||||||
|
| `document.startViewTransition(swap)` | `router.js:872` (`commit()`) | Skipped when the API is missing or reduced motion is set. |
|
||||||
|
| `luci-navigate` / `luci-navigated` | `router.js:733` / `router.js:756` | Document events; `detail` is the route. Neither fires on MPA browsers, so any motion must also work after a full page load. |
|
||||||
|
| Departed view | `router.js:852–861` | The old view is cleared through `dom.content()` and removed synchronously, so it has no exit animation. |
|
||||||
|
|
||||||
|
## Traps: how they were reproduced
|
||||||
|
|
||||||
|
`scripts/transitionend-probe.mjs` logs in, renders a stock `ui.Dropdown` and
|
||||||
|
calls `ui.addNotification` on a real page. It runs with and without
|
||||||
|
`prefers-reduced-motion` and can serve any build as main.css (`MAIN_CSS`).
|
||||||
|
|
||||||
|
| main.css | Dropdown after ArrowDown ×2 | Notification after Dismiss |
|
||||||
|
|---|---|---|
|
||||||
|
| HEAD (2026-09-16) | focus stays on the dropdown | still in the DOM, 84 px tall |
|
||||||
|
| HEAD + reduced motion | same | same |
|
||||||
|
| + `.fade-in` fill `backwards` + dropdown `ul` opacity transition | focus moves `li a` → `li b` | removed |
|
||||||
|
| + the above + reduced motion at `duration 1ms` instead of `transition: none` | `li a` → `li b` | removed |
|
||||||
|
|
||||||
|
The cause of Trap 1: Chrome does not start a transition on a property that
|
||||||
|
a filling CSS animation still holds (`.fade-in` uses `… both`). Removing
|
||||||
|
`.fade-in` before dismissing also made the removal work.
|
||||||
|
|
||||||
|
Upstream direction (decision doc only, through /upstream-rfc): luci-base
|
||||||
|
should not depend on `transitionend` alone, and should fall back when the
|
||||||
|
computed transition duration is `0s`.
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* transitionend-probe.mjs — luci-base removes a dismissed notification and
|
||||||
|
* moves dropdown focus into the list only on `transitionend`, so both break
|
||||||
|
* silently when the theme has no running transition there. Checks both on a
|
||||||
|
* real device, with and without prefers-reduced-motion. Writes nothing on
|
||||||
|
* the device. Raw CDP, no npm deps, node >= 22. Exit 1 if a contract fails.
|
||||||
|
*
|
||||||
|
* env:
|
||||||
|
* HOST http://192.168.1.1 (default: VITE_OPENWRT_HOST from .dev/.env)
|
||||||
|
* PAGE path after /cgi-bin/luci/ (default admin/system/system)
|
||||||
|
* MAIN_CSS file served as the theme's main.css (default: the device's own),
|
||||||
|
* e.g. htdocs/luci-static/aurora/main.css after `pnpm build`
|
||||||
|
* USER_NAME/PASS login (default root / empty)
|
||||||
|
* CHROME_BIN
|
||||||
|
*/
|
||||||
|
import { spawn } from "node:child_process";
|
||||||
|
import { existsSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
|
||||||
|
import { tmpdir } from "node:os";
|
||||||
|
import { join, resolve } from "node:path";
|
||||||
|
import { setTimeout as sleep } from "node:timers/promises";
|
||||||
|
|
||||||
|
const root = resolve(import.meta.dirname, "../../../..");
|
||||||
|
const envFile = join(root, ".dev/.env");
|
||||||
|
const dotenv = existsSync(envFile)
|
||||||
|
? Object.fromEntries(readFileSync(envFile, "utf8").split("\n").filter((l) => /^[A-Z_]+=/.test(l)).map((l) => l.split("=", 2)))
|
||||||
|
: {};
|
||||||
|
const HOST = (process.env.HOST ?? (dotenv.VITE_OPENWRT_HOST ? `http://${dotenv.VITE_OPENWRT_HOST}` : "http://192.168.1.1")).replace(/\/+$/, "");
|
||||||
|
const PAGE = process.env.PAGE ?? "admin/system/system";
|
||||||
|
const MAIN_CSS = process.env.MAIN_CSS ? readFileSync(resolve(process.env.MAIN_CSS)) : null;
|
||||||
|
const CHROME = process.env.CHROME_BIN ?? (process.platform === "darwin" ? "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" : "google-chrome");
|
||||||
|
|
||||||
|
const login = await fetch(`${HOST}/cgi-bin/luci/`, {
|
||||||
|
method: "POST",
|
||||||
|
body: new URLSearchParams({ luci_username: process.env.USER_NAME ?? "root", luci_password: process.env.PASS ?? "" }),
|
||||||
|
redirect: "manual",
|
||||||
|
});
|
||||||
|
const cookie = (login.headers.get("set-cookie") ?? "").match(/(sysauth[^=]*)=([^;]+)/);
|
||||||
|
if (!cookie) throw new Error(`login failed (${login.status})`);
|
||||||
|
|
||||||
|
const profile = mkdtempSync(join(tmpdir(), "cdp-transitionend-"));
|
||||||
|
const chrome = spawn(CHROME, ["--headless=new", "--remote-debugging-port=0", `--user-data-dir=${profile}`, "--no-first-run", "--no-default-browser-check", "about:blank"], { stdio: "ignore" });
|
||||||
|
let port = null;
|
||||||
|
for (let i = 0; i < 100 && !port; i++) {
|
||||||
|
await sleep(100);
|
||||||
|
const f = join(profile, "DevToolsActivePort");
|
||||||
|
if (existsSync(f)) port = +readFileSync(f, "utf8").split("\n")[0];
|
||||||
|
}
|
||||||
|
if (!port) throw new Error("chrome: no DevToolsActivePort");
|
||||||
|
const ws = new WebSocket((await (await fetch(`http://127.0.0.1:${port}/json/version`)).json()).webSocketDebuggerUrl);
|
||||||
|
await new Promise((res, rej) => { ws.addEventListener("open", res, { once: true }); ws.addEventListener("error", () => rej(new Error("CDP connect failed")), { once: true }); });
|
||||||
|
let mid = 0; const pending = new Map(); const handlers = new Set();
|
||||||
|
ws.addEventListener("message", (ev) => {
|
||||||
|
const m = JSON.parse(ev.data);
|
||||||
|
if (m.id && pending.has(m.id)) { const { res, rej } = pending.get(m.id); pending.delete(m.id); m.error ? rej(new Error(m.error.message)) : res(m.result); }
|
||||||
|
else for (const h of handlers) h(m);
|
||||||
|
});
|
||||||
|
const send = (method, params = {}, sessionId) => new Promise((res, rej) => { const id = ++mid; pending.set(id, { res, rej }); ws.send(JSON.stringify({ id, method, params, sessionId })); });
|
||||||
|
|
||||||
|
async function probe(reduce) {
|
||||||
|
const { targetId } = await send("Target.createTarget", { url: "about:blank" });
|
||||||
|
const { sessionId: s } = await send("Target.attachToTarget", { targetId, flatten: true });
|
||||||
|
const ev = async (expression) => (await send("Runtime.evaluate", { expression, awaitPromise: true, returnByValue: true }, s)).result.value;
|
||||||
|
await send("Page.enable", {}, s);
|
||||||
|
await send("Network.setCookie", { name: cookie[1], value: cookie[2], domain: new URL(HOST).hostname, path: "/" }, s);
|
||||||
|
await send("Emulation.setDeviceMetricsOverride", { width: 1280, height: 900, deviceScaleFactor: 1, mobile: false }, s);
|
||||||
|
await send("Emulation.setEmulatedMedia", { features: [{ name: "prefers-reduced-motion", value: reduce ? "reduce" : "no-preference" }] }, s);
|
||||||
|
if (MAIN_CSS) {
|
||||||
|
await send("Fetch.enable", { patterns: [{ urlPattern: "*/luci-static/aurora/main.css*", requestStage: "Request" }] }, s);
|
||||||
|
handlers.add((m) => {
|
||||||
|
if (m.sessionId !== s || m.method !== "Fetch.requestPaused") return;
|
||||||
|
send("Fetch.fulfillRequest", { requestId: m.params.requestId, responseCode: 200, responseHeaders: [{ name: "Content-Type", value: "text/css" }, { name: "Cache-Control", value: "no-store" }], body: MAIN_CSS.toString("base64") }, s);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await send("Page.navigate", { url: `${HOST}/cgi-bin/luci/${PAGE}` }, s);
|
||||||
|
for (let i = 0; i < 80; i++) {
|
||||||
|
await sleep(250);
|
||||||
|
if (await ev(`!!(window.L?.loaded && document.querySelector('#view') && !document.querySelector('#view > .spinning'))`)) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// A stock single-select ui.Dropdown: open with ArrowDown, then ArrowDown again.
|
||||||
|
await ev(`L.require('ui').then(ui => {
|
||||||
|
const el = new ui.Dropdown('a', { a: 'A', b: 'B', c: 'C' }, {}).render();
|
||||||
|
el.id = 'probe-dd';
|
||||||
|
document.querySelector('#view').prepend(el);
|
||||||
|
el.focus();
|
||||||
|
})`);
|
||||||
|
const key = async () => {
|
||||||
|
for (const type of ["rawKeyDown", "keyUp"]) await send("Input.dispatchKeyEvent", { type, key: "ArrowDown", code: "ArrowDown", windowsVirtualKeyCode: 40, nativeVirtualKeyCode: 40 }, s);
|
||||||
|
await sleep(500);
|
||||||
|
};
|
||||||
|
const focused = `(document.activeElement.closest('#probe-dd li')?.dataset.value ?? 'none')`;
|
||||||
|
await key(); const first = await ev(focused);
|
||||||
|
await key(); const second = await ev(focused);
|
||||||
|
await ev(`document.querySelector('#probe-dd').remove()`);
|
||||||
|
|
||||||
|
// ui.addNotification, dismissed after its entrance has finished.
|
||||||
|
const note = await ev(`L.require('ui').then(ui => new Promise(res => {
|
||||||
|
const n = ui.addNotification(null, E('p', 'probe'), 'info');
|
||||||
|
setTimeout(() => {
|
||||||
|
n.querySelector('button.btn').click();
|
||||||
|
setTimeout(() => res({ removed: !n.isConnected, gapPx: n.isConnected ? n.offsetHeight : 0 }), 800);
|
||||||
|
}, 400);
|
||||||
|
}))`);
|
||||||
|
await send("Target.closeTarget", { targetId });
|
||||||
|
|
||||||
|
const dropdownOk = first === "a" && second === "b";
|
||||||
|
console.log(JSON.stringify({ reducedMotion: reduce, dropdownFocus: `${first} -> ${second}`, dropdownOk, notification: note, notificationOk: note.removed }));
|
||||||
|
return dropdownOk && note.removed;
|
||||||
|
}
|
||||||
|
|
||||||
|
let ok = true;
|
||||||
|
try {
|
||||||
|
for (const reduce of [false, true]) ok = (await probe(reduce)) && ok;
|
||||||
|
} finally {
|
||||||
|
chrome.kill();
|
||||||
|
ws.close();
|
||||||
|
await sleep(500);
|
||||||
|
rmSync(profile, { recursive: true, force: true, maxRetries: 5 });
|
||||||
|
}
|
||||||
|
process.exit(ok ? 0 : 1);
|
||||||
@@ -11,13 +11,14 @@ address, so they stay local).
|
|||||||
|
|
||||||
| Metric | Budget | Track | Source |
|
| Metric | Budget | Track | Source |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| main.css (identity/raw) | ≤ 193 KB | size | production build, 2026-08 (191,899 B; +~2 KB custom-background mode, +~0.5 KB router progress bar / live region; the bar is now Turbo-shaped — width/opacity only, inserted per navigation) |
|
| main.css (identity/raw) | ≤ 193 KB | size | production build, 2026-09-16 (189,650 B; −0.77 KB sidebar push as two transitions instead of run keyframes; +42 B replayed nav skips the fade; +~2 KB custom-background mode, +~0.5 KB router progress bar / live region; the bar is now Turbo-shaped — width/opacity only, inserted per navigation; −1.24 KB unblurred mega-menu curtain, delayed visibility, instant nav-pill colours) |
|
||||||
| login.css (identity/raw) | ≤ 12 KB | size | production build, 2026-07 (10,935 B, token-pruned) |
|
| login.css (identity/raw) | ≤ 12 KB | size | production build, 2026-07 (10,935 B, token-pruned) |
|
||||||
| menu-aurora.js (identity/raw) | ≤ 22 KB | size | production build, 2026-08 (21,809 B; +0.8 KB palette recents: record on pick, pure-LRU browse order, storage validation; +0.2 KB ">" logout command) |
|
| menu-aurora.js (identity/raw) | ≤ 22 KB | size | production build, 2026-09-16 (21,362 B; −0.24 KB sidebar toggle is a class flip; −0.09 KB pre-paint nav cache, its crumb renderer moved into header.ut (the replay itself is per-response HTML, see below); +0.8 KB palette recents: record on pick, pure-LRU browse order, storage validation; +0.2 KB ">" logout command) |
|
||||||
| router-aurora.js (identity/raw, Navigation-API browsers only) | ≤ 15 KB | size | production build, 2026-08 (14,844 B: template shells fetched, per-render listener teardown, timeout-as-failure, expiry gate, readonly folding, node css, wildcard actions, trickling progress bar, same-URL reload rule, visibility gate, contract check) |
|
| router-aurora.js (identity/raw, Navigation-API browsers only) | ≤ 15 KB | size | production build, 2026-08 (14,844 B: template shells fetched, per-render listener teardown, timeout-as-failure, expiry gate, readonly folding, node css, wildcard actions, trickling progress bar, same-URL reload rule, visibility gate, contract check) |
|
||||||
| Default logo (identity/raw) | ≤ 16 KB | size | production build, 2026-07 (15,057 B) |
|
| Default logo (identity/raw) | ≤ 16 KB | size | production build, 2026-07 (15,057 B) |
|
||||||
| Core admin cold theme assets (identity/raw) | ≤ 267.5 KB | size | main CSS + menu JS + router JS + default font + logo, 2026-08 (≈267.2 KB; the router is a one-time cost that removes per-click dispatcher work; +1.0 KB palette recents and logout command) |
|
| Core admin cold theme assets (identity/raw) | ≤ 267.5 KB | size | main CSS + menu JS + router JS + default font + logo, 2026-09-16 (265,420 B; −1.1 KB sidebar push and nav cache; the router is a one-time cost that removes per-click dispatcher work; +1.0 KB palette recents and logout command; −1.24 KB mega-menu curtain) |
|
||||||
| Login cold theme assets, excluding configured background (identity/raw) | ≤ 55 KB | size | login CSS + default font + logo, 2026-07 (49,572 B) |
|
| Login cold theme assets, excluding configured background (identity/raw) | ≤ 55 KB | size | login CSS + default font + logo, 2026-07 (49,572 B) |
|
||||||
|
| Admin HTML inline scripts added per full load (identity, never cached) | — | size | header.ut, 2026-09-16: pre-paint nav replay ≈ +0.5 KB (mega-menu/dropdown) / ≈ +1.9 KB (sidebar, with the shared crumb renderer); login page +0.07 KB. Template shells the router fetches carry it too. |
|
||||||
| Blocking requests before first paint | ≤ 4 | count | current waterfall |
|
| Blocking requests before first paint | ≤ 4 | count | current waterfall |
|
||||||
| Repeat-visit asset requests | ≈ 0 | count | target state; package-built CSS/JS URLs are versioned, but long-lived cache headers still need live verification |
|
| Repeat-visit asset requests | ≈ 0 | count | target state; package-built CSS/JS URLs are versioned, but long-lived cache headers still need live verification |
|
||||||
| TTFB, login page (device) | proposed: ≤ 130 ms | latency | local device baseline, 2026-07 |
|
| TTFB, login page (device) | proposed: ≤ 130 ms | latency | local device baseline, 2026-07 |
|
||||||
@@ -42,6 +43,10 @@ Budget revisions require a new baseline entry under `../baselines/`.
|
|||||||
- Package-root `.DS_Store` metadata removed and covered by a regression test.
|
- Package-root `.DS_Store` metadata removed and covered by a regression test.
|
||||||
- login.css pruned to its reachable custom properties at build time (the
|
- login.css pruned to its reachable custom properties at build time (the
|
||||||
shared token sheet is admin-sized; the login page consumes a fraction).
|
shared token sheet is admin-sized; the login page consumes a fraction).
|
||||||
|
- Mega-menu curtain (2026-09-16): no backdrop blur, `visibility` delayed
|
||||||
|
instead of tweened, instant nav-pill colours; main.css −1,244 B. Device
|
||||||
|
trace, 4× CPU, median of 3: repaints 287 → 112, main-thread animations
|
||||||
|
33 → 8. With `--disable-gpu`, dropped frames per open went 3–5 → 0.
|
||||||
|
|
||||||
- Client-side router (`router-aurora.js`, `.dev/docs/router.md`,
|
- Client-side router (`router-aurora.js`, `.dev/docs/router.md`,
|
||||||
2026-08-16): view/alias/firstchild/overview navigations become
|
2026-08-16): view/alias/firstchild/overview navigations become
|
||||||
|
|||||||
@@ -20,7 +20,10 @@ workflow. No edit to a shipped or source path happens before gate 1, and the
|
|||||||
cover them. If the request names a page, a package, a DOM element or
|
cover them. If the request names a page, a package, a DOM element or
|
||||||
shows a page screenshot, load `luci-dom-compat` and complete its steps
|
shows a page screenshot, load `luci-dom-compat` and complete its steps
|
||||||
1–2 (locate the page, read `.dev/compat/pages/` for the files and
|
1–2 (locate the page, read `.dev/compat/pages/` for the files and
|
||||||
selectors about to change) before planning.
|
selectors about to change) before planning. If the request adds or
|
||||||
|
changes motion (transition, animation, View Transition), load
|
||||||
|
`aurora-motion`; the plan names the state, its effect from the table
|
||||||
|
and the measured main.css byte delta.
|
||||||
2. **Plan.** Call `EnterPlanMode`. The plan states: files to change; the
|
2. **Plan.** Call `EnterPlanMode`. The plan states: files to change; the
|
||||||
approach in ≤ 10 lines; budget impact (bytes per `tests/build-performance.test.js`,
|
approach in ≤ 10 lines; budget impact (bytes per `tests/build-performance.test.js`,
|
||||||
per-request ubus/uci/fs calls, dispatches per navigation); floor it
|
per-request ubus/uci/fs calls, dispatches per navigation); floor it
|
||||||
|
|||||||
@@ -23,11 +23,21 @@ strings render untranslated (see `.dev/decisions/translations-catalog-caching.md
|
|||||||
## DOM hooks shared by templates, CSS and JS
|
## DOM hooks shared by templates, CSS and JS
|
||||||
`body[data-page]` (request segments joined by `-`), `body[data-nav-type]`
|
`body[data-page]` (request segments joined by `-`), `body[data-nav-type]`
|
||||||
(`mega-menu|dropdown|sidebar`), `body[data-asset-version]`, `body[data-patches]`,
|
(`mega-menu|dropdown|sidebar`), `body[data-asset-version]`, `body[data-patches]`,
|
||||||
`body[data-bg]`; `#maincontent[tabindex=-1]`, `#tabmenu`, `#topmenu`, `#sidebar-list`,
|
`body[data-bg]`, `body[data-nav-stamp]`; `#maincontent[tabindex=-1]`, `#tabmenu`, `#topmenu`, `#sidebar-list`,
|
||||||
`#sidebar-footer`, `#header-crumb`, `#mobile-nav-list`, `#mobile-nav-footer-action`,
|
`#sidebar-footer`, `#header-crumb`, `#mobile-nav-list`, `#mobile-nav-footer-action`,
|
||||||
`#indicators`, `#modemenu`, `#cmdk-trigger`, `.desktop-menu-container > .desktop-menu-sheet
|
`#indicators`, `#modemenu`, `#cmdk-trigger`, `.desktop-menu-container > .desktop-menu-sheet
|
||||||
> .desktop-menu-canvas`, `.desktop-menu-board` (template cloned per panel),
|
> .desktop-menu-canvas`, `.desktop-menu-board` (template cloned per panel),
|
||||||
`.theme-switcher .theme-option[data-theme]`. Renaming any of these is a
|
`.theme-switcher .theme-option[data-theme]`, `#sidebar-list[data-active-path]`
|
||||||
|
(dispatch segments 1–2), `[data-restored]` on replayed nav surfaces.
|
||||||
|
Pre-paint nav: `menu-aurora.js` `cacheNav()` writes `sessionStorage["aurora.nav"]`
|
||||||
|
= `[body[data-nav-stamp], {id: innerHTML}]` after render (stamp: nav type, lang,
|
||||||
|
user, version); header.ut replays it after the nav markup, inert, only while the
|
||||||
|
stamp matches and luci-base's `luci-session-store` still holds `menu` (sidebar:
|
||||||
|
recomputes active marks, then the global `auroraCrumb()`, which `menu-aurora.js`
|
||||||
|
also calls); `menu-aurora.js` lifts `inert` once `ui.menu.load()` settles; the
|
||||||
|
login page clears the cache. A collapsed sidebar is restored first in `<body>`: its column
|
||||||
|
transitions, so the class must land before any style resolution.
|
||||||
|
Renaming any of these is a
|
||||||
cross-file change (grep all three layers + tests).
|
cross-file change (grep all three layers + tests).
|
||||||
|
|
||||||
## Router invariants (`router-aurora.js`, spec in `.dev/docs/router.md`)
|
## Router invariants (`router-aurora.js`, spec in `.dev/docs/router.md`)
|
||||||
|
|||||||
+3
@@ -18,6 +18,9 @@
|
|||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
opacity: 0.85;
|
opacity: 0.85;
|
||||||
}
|
}
|
||||||
|
/* The 1153px below was measured without a scrollbar; the theme's stable
|
||||||
|
gutter would take 11px of it (see the ledger's scrollbar-gutter entry). */
|
||||||
|
html { scrollbar-gutter: auto; }
|
||||||
</style>
|
</style>
|
||||||
<script type="application/json" id="compat">
|
<script type="application/json" id="compat">
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,3 +11,15 @@
|
|||||||
- verified: device 192.168.8.1, CDP before/after in one page load — cells 16 → 12px; wrapped cells 5 → 1 at 1280 (the remaining `0BOOTCONFIG1` wraps under bootstrap at that width too), 5 → 0 at 1920, 0 → 0 at 390; eleven stock pages (overview, routes, processes, interfaces, firewall zones/rules, DHCP, wireless, mounts, startup, SSH keys) showed zero font-size/line-height changes on any text-bearing table element at 1280 and 390
|
- verified: device 192.168.8.1, CDP before/after in one page load — cells 16 → 12px; wrapped cells 5 → 1 at 1280 (the remaining `0BOOTCONFIG1` wraps under bootstrap at that width too), 5 → 0 at 1920, 0 → 0 at 390; eleven stock pages (overview, routes, processes, interfaces, firewall zones/rules, DHCP, wireless, mounts, startup, SSH keys) showed zero font-size/line-height changes on any text-bearing table element at 1280 and 390
|
||||||
- fixture: fixtures/admin-services-mini-diskmanager-minidiskmanager--partition-table.html
|
- fixture: fixtures/admin-services-mini-diskmanager-minidiskmanager--partition-table.html
|
||||||
- issue: #65 · mirror: shadcn 4f1c7f4 · status: active
|
- issue: #65 · mirror: shadcn 4f1c7f4 · status: active
|
||||||
|
|
||||||
|
## partition-table-gutter — the stable scrollbar gutter leaves the type cell 0.9px short at 1280
|
||||||
|
|
||||||
|
- page: admin-services-mini-diskmanager-minidiskmanager · Services → Disk Manager
|
||||||
|
- package: luci-app-mini-diskmanager (4IceG/luci-app-mini-diskmanager)
|
||||||
|
- dom: `table#partition-table-<dev>` (inline `table-layout:fixed; width:100%`); type cell `<span class="partition-color-indicator"> 0BOOTCONFIG`
|
||||||
|
- symptom: with classic scrollbars at a 1280px viewport the swatch and `0BOOTCONFIG` split onto two lines; overlay scrollbars are unaffected
|
||||||
|
- cause: `_elements.css` `html` `[scrollbar-gutter:stable]` (added so short pages and open modals stop shifting the layout) reserves the 11px thin scrollbar on every page, which is what a scrolling page already paid; the #65 fit had 0.6px to spare
|
||||||
|
- fix: none on the page; the fixture pins `html { scrollbar-gutter: auto }` because its 1153px width was measured without a scrollbar, so it keeps guarding #65's inherited 12px
|
||||||
|
- verified: headless Chrome, fixture at 1280 — table 1152.7 → 1142.1px, cell content 114.9 → 113.4px against a 114.3px line (fits → wraps); `pnpm test` compat fails without the pin and passes with it
|
||||||
|
- fixture: fixtures/admin-services-mini-diskmanager-minidiskmanager--partition-table.html
|
||||||
|
- issue: — · mirror: shadcn 50c53a9 · status: active
|
||||||
@@ -3,7 +3,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
@apply [scrollbar-color:var(--text-muted)_var(--surface)] [scrollbar-width:thin];
|
/* Stable gutter: short pages and open modals (body overflow hidden) would
|
||||||
|
otherwise drop the classic scrollbar and shift the whole layout. */
|
||||||
|
@apply [scrollbar-color:var(--text-muted)_var(--surface)] [scrollbar-gutter:stable] [scrollbar-width:thin];
|
||||||
|
|
||||||
body {
|
body {
|
||||||
@apply text-text relative flex min-h-dvh flex-col text-sm leading-relaxed font-normal;
|
@apply text-text relative flex min-h-dvh flex-col text-sm leading-relaxed font-normal;
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ header {
|
|||||||
@apply relative;
|
@apply relative;
|
||||||
|
|
||||||
.menu {
|
.menu {
|
||||||
@apply text-text hover:bg-hover-faint block rounded-xl px-3.5 py-1.5 font-medium no-underline transition-colors duration-150;
|
@apply text-text hover:bg-hover-faint block rounded-xl px-3.5 py-1.5 font-medium no-underline;
|
||||||
|
|
||||||
/* Unified pill for both dropdown modes — the open/active category is a
|
/* Unified pill for both dropdown modes — the open/active category is a
|
||||||
filled brand pill, matching the submenu links and the sidebar. */
|
filled brand pill, matching the submenu links and the sidebar. */
|
||||||
@@ -325,7 +325,7 @@ header {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#indicators {
|
#indicators {
|
||||||
@apply flex shrink-0 flex-row-reverse gap-5 md:gap-8;
|
@apply mr-4 ml-auto flex shrink-0 flex-row-reverse gap-5 md:gap-8;
|
||||||
|
|
||||||
/* Same hover language as .navigation-toggle and .cmdk-trigger: a scale
|
/* Same hover language as .navigation-toggle and .cmdk-trigger: a scale
|
||||||
nudge, never a background plate. */
|
nudge, never a background plate. */
|
||||||
@@ -369,12 +369,14 @@ body[data-nav-type="sidebar"] {
|
|||||||
|
|
||||||
/* Single source of truth for the sidebar column, so collapsing only has to
|
/* Single source of truth for the sidebar column, so collapsing only has to
|
||||||
zero this one value instead of restating the grid template.
|
zero this one value instead of restating the grid template.
|
||||||
--sidebar-w-full stays constant: the inner panel width and the slide
|
--sidebar-w-full stays constant: the inner panel width reads it, and
|
||||||
keyframes read it, and must not see the zeroed collapsed value. */
|
must not see the zeroed collapsed value. */
|
||||||
--sidebar-w-full: 17rem;
|
--sidebar-w-full: 17rem;
|
||||||
--sidebar-w: var(--sidebar-w-full);
|
--sidebar-w: var(--sidebar-w-full);
|
||||||
|
|
||||||
@apply md:grid md:grid-cols-[var(--sidebar-w)_minmax(0,1fr)] md:grid-rows-[auto_minmax(0,1fr)] md:overflow-x-clip;
|
/* The column eases with the panel's slide below (same curve and length),
|
||||||
|
so the content edge follows the sidebar edge frame by frame. */
|
||||||
|
@apply md:grid md:grid-cols-[var(--sidebar-w)_minmax(0,1fr)] md:grid-rows-[auto_minmax(0,1fr)] md:overflow-x-clip md:[transition:grid-template-columns_250ms_var(--ease-in-out)];
|
||||||
|
|
||||||
&.sidebar-collapsed {
|
&.sidebar-collapsed {
|
||||||
@apply md:[--sidebar-w:0rem];
|
@apply md:[--sidebar-w:0rem];
|
||||||
@@ -428,50 +430,20 @@ body[data-nav-type="sidebar"] {
|
|||||||
@apply sticky top-0 hidden h-dvh w-full overflow-hidden rounded-none md:block;
|
@apply sticky top-0 hidden h-dvh w-full overflow-hidden rounded-none md:block;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The grid column still snaps (one reflow, never a per-frame layout
|
/* Hidden (out of the tab order) only once the slide-out has run. The
|
||||||
animation); visibility removes collapsed controls from the tab order.
|
hairline lives on the inner panel so it tracks the sliding edge. */
|
||||||
The hairline lives on the inner panel, not the frame, so it tracks the
|
|
||||||
sliding edge during the run animations below. */
|
|
||||||
&.sidebar-collapsed .sidebar-panel {
|
&.sidebar-collapsed .sidebar-panel {
|
||||||
@apply invisible;
|
@apply invisible [transition:visibility_0s_250ms];
|
||||||
}
|
}
|
||||||
|
|
||||||
& .sidebar-panel-inner {
|
& .sidebar-panel-inner {
|
||||||
@apply bg-bg border-hairline flex h-full w-(--sidebar-w-full) flex-col overflow-hidden border-r;
|
@apply bg-bg border-hairline flex h-full w-(--sidebar-w-full) flex-col overflow-hidden border-r [transition:translate_250ms_var(--ease-in-out)];
|
||||||
}
|
}
|
||||||
|
|
||||||
&.sidebar-collapsed .sidebar-panel-inner {
|
&.sidebar-collapsed .sidebar-panel-inner {
|
||||||
@apply -translate-x-full;
|
@apply -translate-x-full;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Coupled slide: the column width snaps in the same frame the
|
|
||||||
sidebar-anim-* class lands, then the sidebar and the whole content
|
|
||||||
column (header + #maincontent) slide the same 17rem with the same
|
|
||||||
curve — compositor-only, so the seam moves as one wall with zero
|
|
||||||
per-frame reflow. menu-aurora.js swaps the class per direction
|
|
||||||
(distinct animation-names restart cleanly on rapid toggles) and
|
|
||||||
clears it after the run. */
|
|
||||||
&.sidebar-anim-open > header,
|
|
||||||
&.sidebar-anim-open > #maincontent,
|
|
||||||
&.sidebar-anim-open .sidebar-panel-inner {
|
|
||||||
@apply md:animate-[sidebar-run-in_250ms_var(--ease-in-out)_both];
|
|
||||||
}
|
|
||||||
|
|
||||||
&.sidebar-anim-close > header,
|
|
||||||
&.sidebar-anim-close > #maincontent {
|
|
||||||
@apply md:animate-[sidebar-run-back_250ms_var(--ease-in-out)_both];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Closing: the column is already zero, so the panel holds its old spot
|
|
||||||
as a fixed overlay for one run while its content slides off. */
|
|
||||||
&.sidebar-anim-close .sidebar-panel {
|
|
||||||
@apply md:visible md:fixed md:top-0 md:left-0 md:w-(--sidebar-w-full);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.sidebar-anim-close .sidebar-panel-inner {
|
|
||||||
@apply md:animate-[sidebar-run-out_250ms_var(--ease-in-out)_both];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sidebar head: logo + hostname. h-14 matches the header row so its
|
/* Sidebar head: logo + hostname. h-14 matches the header row so its
|
||||||
bottom hairline continues the header's border in one unbroken line
|
bottom hairline continues the header's border in one unbroken line
|
||||||
across the viewport. box-content: the header is auto-height (56px
|
across the viewport. box-content: the header is auto-height (56px
|
||||||
@@ -529,33 +501,13 @@ body[data-nav-type="sidebar"] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Shared travel distance for the coupled sidebar slide: content column and
|
|
||||||
panel move the same 17rem, so the seam between them never separates. */
|
|
||||||
@keyframes sidebar-run-in {
|
|
||||||
from {
|
|
||||||
translate: calc(-1 * var(--sidebar-w-full)) 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes sidebar-run-back {
|
|
||||||
from {
|
|
||||||
translate: var(--sidebar-w-full) 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes sidebar-run-out {
|
|
||||||
to {
|
|
||||||
translate: calc(-1 * var(--sidebar-w-full)) 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Router progress (router.md) — Turbo Drive's bar: inserted by the router
|
/* Router progress (router.md) — Turbo Drive's bar: inserted by the router
|
||||||
once a navigation outlives its silent 150 ms, width driven inline and
|
once a navigation outlives its silent 150 ms, width driven inline and
|
||||||
trickling until commit (so a slow render keeps visibly moving), then
|
trickling until commit (so a slow render keeps visibly moving), then
|
||||||
filled, faded and removed from the DOM. Only width and opacity move.
|
filled, faded and removed from the DOM. Only width and opacity move.
|
||||||
Reduced motion drops the transitions, not the bar. */
|
Reduced motion drops the transitions, not the bar. */
|
||||||
#luci-nav-progress {
|
#luci-nav-progress {
|
||||||
@apply from-progress-start to-progress-end pointer-events-none fixed top-0 left-0 z-80 h-0.5 w-0 bg-linear-to-r transition-[width] duration-300 ease-out;
|
@apply from-progress-start to-progress-end pointer-events-none fixed top-0 left-0 z-80 h-0.5 w-0 bg-linear-to-r [transition:width_.3s_var(--ease-out)];
|
||||||
|
|
||||||
&[data-state="done"] {
|
&[data-state="done"] {
|
||||||
@apply opacity-0 [transition:width_.3s_ease-out,opacity_.15s_ease-in_.15s];
|
@apply opacity-0 [transition:width_.3s_ease-out,opacity_.15s_ease-in_.15s];
|
||||||
@@ -589,7 +541,7 @@ body[data-nav-type="sidebar"] {
|
|||||||
|
|
||||||
/* Outgoing page while the router renders the next one (router.md). */
|
/* Outgoing page while the router renders the next one (router.md). */
|
||||||
&.view-leaving {
|
&.view-leaving {
|
||||||
@apply cursor-progress opacity-60 transition-opacity duration-150;
|
@apply cursor-progress opacity-60 [transition:opacity_150ms_ease-out];
|
||||||
}
|
}
|
||||||
|
|
||||||
.cbi-title-section {
|
.cbi-title-section {
|
||||||
@@ -639,6 +591,18 @@ body[data-nav-type="sidebar"] {
|
|||||||
@apply flex flex-1 flex-col gap-1.5;
|
@apply flex flex-1 flex-col gap-1.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Hidden while the view is leaving or loading so its jump to the new page
|
||||||
|
height is never seen; animate-none restarts its fade-in once it returns. */
|
||||||
|
&:has(> #view.view-leaving, > #view > .spinning) > footer {
|
||||||
|
@apply invisible animate-none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Only the theme toggle captures the page: a router swap would crossfade
|
||||||
|
two page layouts on top of the content's own fade-in. */
|
||||||
|
:root:not(:active-view-transition-type(theme)) {
|
||||||
|
@apply [view-transition-name:none];
|
||||||
}
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
|
|||||||
@@ -61,6 +61,19 @@
|
|||||||
@apply animate-[aurora-fade-in_250ms_ease_both];
|
@apply animate-[aurora-fade-in_250ms_ease_both];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Content that lands after first paint fades in once; none of it is
|
||||||
|
re-inserted by poll (the dashboard's polled tabs sit under .Dashboard).
|
||||||
|
A nav header.ut replayed before first paint (data-restored) never fades.
|
||||||
|
backwards: a filling animation stays a stacking context over dropdowns. */
|
||||||
|
#view > :not(.spinning),
|
||||||
|
#view > .cbi-map > .cbi-map-tabbed > [data-tab-active="true"],
|
||||||
|
.cbi-section-node-tabbed > [data-tab-active="true"],
|
||||||
|
#topmenu:not([data-restored]),
|
||||||
|
#sidebar-list:not([data-restored]) > *,
|
||||||
|
footer {
|
||||||
|
@apply animate-[aurora-fade-in_250ms_ease_backwards];
|
||||||
|
}
|
||||||
|
|
||||||
.fade-out {
|
.fade-out {
|
||||||
@apply pointer-events-none opacity-0 transition-opacity duration-[250ms];
|
@apply pointer-events-none opacity-0 transition-opacity duration-[250ms];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,29 +84,13 @@ body.mobile-navigation-open > header {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[data-nav-type="mega-menu"] {
|
[data-nav-type="mega-menu"] {
|
||||||
/* Apple's curtain: the frost is DECLARED here permanently and never
|
/* Dim only: a blurred full-screen fade drops frames on weak GPUs. Visibility
|
||||||
toggled — it fades in and out WITH the dim, so the page blurs
|
flips on a delay instead of tweening, so the opacity fade stays composited. */
|
||||||
progressively as the sheet descends (apple.com's globalnav curtain runs
|
|
||||||
its blur exactly like this while the flyout animates). Gating the blur
|
|
||||||
on a post-transition "settled" state was tried and rejected: the frost
|
|
||||||
popped in only after the menu landed, visibly off-design.
|
|
||||||
|
|
||||||
The cost is per-frame blur re-compositing for the 300ms of fade — but it
|
|
||||||
is now the ONLY per-frame work: the reveal itself runs entirely on the
|
|
||||||
compositor (see _layout.css). What janked low-end devices was the old
|
|
||||||
overlap of main-thread height layout + live blur, not the blur alone.
|
|
||||||
If the fade still janks a device, reduce the radius or rely on
|
|
||||||
_reduced-transparency.css, which strips the filter outright.
|
|
||||||
|
|
||||||
Closing starts immediately and uses the same 220ms exit as the menu
|
|
||||||
surface. Delaying the opacity transition left the page frosted after the
|
|
||||||
sheet had already collapsed into the header, which read as a flash. Once
|
|
||||||
hidden, visibility:hidden makes the invisible filter cost nothing. */
|
|
||||||
& .desktop-menu-overlay {
|
& .desktop-menu-overlay {
|
||||||
@apply bg-mega-menu-scrim pointer-events-none invisible fixed inset-0 z-60 opacity-0 backdrop-blur-lg backdrop-saturate-150 transition-[opacity,visibility] duration-[220ms] ease-[cubic-bezier(0.4,0,0.6,1)] max-md:hidden;
|
@apply bg-mega-menu-scrim pointer-events-none invisible fixed inset-0 z-60 opacity-0 [transition:opacity_220ms_cubic-bezier(0.4,0,0.6,1),visibility_0s_220ms] max-md:hidden;
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
@apply pointer-events-auto visible opacity-100;
|
@apply pointer-events-auto visible opacity-100 [transition-delay:0s];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,15 +15,10 @@
|
|||||||
.cmdk-trigger {
|
.cmdk-trigger {
|
||||||
/* Hover is a scale nudge with no plate behind it — the header's own
|
/* Hover is a scale nudge with no plate behind it — the header's own
|
||||||
language, set by .navigation-toggle and shared with #indicators. The
|
language, set by .navigation-toggle and shared with #indicators. The
|
||||||
size-8 box stays as the touch target; it just never paints. */
|
size-8 box stays as the touch target; it just never paints.
|
||||||
@apply text-text relative mr-4 grid size-8 shrink-0 cursor-pointer place-items-center rounded-lg border-0 bg-transparent p-0 shadow-none transition-transform duration-150;
|
order-last pins it to the bar's right edge: #indicators sits before it
|
||||||
|
and grows leftward, so a late indicator never shifts the trigger. */
|
||||||
/* Non-sidebar headers have no mr-auto crumb absorbing the slack — pull the
|
@apply text-text relative order-last grid size-8 shrink-0 cursor-pointer place-items-center rounded-lg border-0 bg-transparent p-0 shadow-none transition-transform duration-150;
|
||||||
toggle right so it docks next to #indicators instead of landing in the
|
|
||||||
middle of the justify-between row. */
|
|
||||||
body:not([data-nav-type="sidebar"]) & {
|
|
||||||
@apply ml-auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* size-5 (not the button's own size): the same box #indicators gives its
|
/* size-5 (not the button's own size): the same box #indicators gives its
|
||||||
glyphs, so the shared 24×24 Tabler canvas scales identically and the
|
glyphs, so the shared 24×24 Tabler canvas scales identically and the
|
||||||
|
|||||||
@@ -6,7 +6,15 @@ const PALETTE_RECENTS_KEY = "aurora.paletteRecents";
|
|||||||
|
|
||||||
return baseclass.extend({
|
return baseclass.extend({
|
||||||
__init__() {
|
__init__() {
|
||||||
ui.menu.load().then((tree) => this.render(tree));
|
ui.menu
|
||||||
|
.load()
|
||||||
|
.then((tree) => this.render(tree))
|
||||||
|
.finally(() => {
|
||||||
|
// header.ut's replay stays inert until the live nav has replaced it
|
||||||
|
// or failed to; either way it must not stay a dead copy.
|
||||||
|
for (const el of document.querySelectorAll("[data-restored]"))
|
||||||
|
el.inert = false;
|
||||||
|
});
|
||||||
this.initNavigationControls();
|
this.initNavigationControls();
|
||||||
this.initUciIndicator();
|
this.initUciIndicator();
|
||||||
},
|
},
|
||||||
@@ -32,7 +40,6 @@ return baseclass.extend({
|
|||||||
const mobileList = overlay.querySelector("#mobile-nav-list");
|
const mobileList = overlay.querySelector("#mobile-nav-list");
|
||||||
const desktop = window.matchMedia("(min-width: 768px)");
|
const desktop = window.matchMedia("(min-width: 768px)");
|
||||||
const SIDEBAR_COLLAPSED_KEY = "aurora.sidebarCollapsed";
|
const SIDEBAR_COLLAPSED_KEY = "aurora.sidebarCollapsed";
|
||||||
let sidebarAnimTimer;
|
|
||||||
|
|
||||||
const isDesktopSidebar = () =>
|
const isDesktopSidebar = () =>
|
||||||
desktop.matches && document.body.dataset.navType === "sidebar";
|
desktop.matches && document.body.dataset.navType === "sidebar";
|
||||||
@@ -85,23 +92,9 @@ return baseclass.extend({
|
|||||||
closeMobileNavigation();
|
closeMobileNavigation();
|
||||||
|
|
||||||
const collapsed = !expanded;
|
const collapsed = !expanded;
|
||||||
const body = document.body;
|
|
||||||
|
|
||||||
// Coupled slide (_layout.css): the class must land in the same
|
// The column and the panel transition together (_layout.css).
|
||||||
// frame as the column snap. Open/close carry distinct
|
document.body.classList.toggle("sidebar-collapsed", collapsed);
|
||||||
// animation-names, so alternating toggles restart the run without
|
|
||||||
// a forced reflow; the timer (not animationend — three elements
|
|
||||||
// animate) clears the class once the 250ms run is over.
|
|
||||||
body.classList.remove("sidebar-anim-open", "sidebar-anim-close");
|
|
||||||
body.classList.add(
|
|
||||||
collapsed ? "sidebar-anim-close" : "sidebar-anim-open",
|
|
||||||
);
|
|
||||||
clearTimeout(sidebarAnimTimer);
|
|
||||||
sidebarAnimTimer = setTimeout(() => {
|
|
||||||
body.classList.remove("sidebar-anim-open", "sidebar-anim-close");
|
|
||||||
}, 300);
|
|
||||||
|
|
||||||
body.classList.toggle("sidebar-collapsed", collapsed);
|
|
||||||
localStorage.setItem(SIDEBAR_COLLAPSED_KEY, collapsed);
|
localStorage.setItem(SIDEBAR_COLLAPSED_KEY, collapsed);
|
||||||
updateToggleState(expanded);
|
updateToggleState(expanded);
|
||||||
return;
|
return;
|
||||||
@@ -203,6 +196,25 @@ return baseclass.extend({
|
|||||||
this.tree = tree;
|
this.tree = tree;
|
||||||
this.renderModeMenu(tree);
|
this.renderModeMenu(tree);
|
||||||
this.renderTabs(tree);
|
this.renderTabs(tree);
|
||||||
|
this.cacheNav();
|
||||||
|
},
|
||||||
|
|
||||||
|
// Snapshot for header.ut's pre-paint replay, under the stamp it renders on
|
||||||
|
// body; it recomputes the active marks, so one copy serves every page.
|
||||||
|
cacheNav() {
|
||||||
|
const html = {};
|
||||||
|
for (const el of document.querySelectorAll(
|
||||||
|
"#topmenu, #sidebar-list, #sidebar-footer",
|
||||||
|
))
|
||||||
|
if (el.firstChild) html[el.id] = el.innerHTML;
|
||||||
|
try {
|
||||||
|
sessionStorage.setItem(
|
||||||
|
"aurora.nav",
|
||||||
|
JSON.stringify([document.body.dataset.navStamp, html]),
|
||||||
|
);
|
||||||
|
} catch {
|
||||||
|
// No storage: the next load renders after the module, as before.
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
renderTabs(tree) {
|
renderTabs(tree) {
|
||||||
@@ -258,7 +270,8 @@ return baseclass.extend({
|
|||||||
this.expandActiveNavigationGroup(surface);
|
this.expandActiveNavigationGroup(surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.renderCrumb();
|
// header.ut's, shared with its pre-paint replay (sidebar mode only).
|
||||||
|
window.auroraCrumb?.();
|
||||||
|
|
||||||
const tabs = document.querySelector("#tabmenu");
|
const tabs = document.querySelector("#tabmenu");
|
||||||
if (tabs) {
|
if (tabs) {
|
||||||
@@ -324,6 +337,8 @@ return baseclass.extend({
|
|||||||
return ul || E([]);
|
return ul || E([]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Drops header.ut's replayed copy, which carries no listeners.
|
||||||
|
if (ul) ul.innerHTML = "";
|
||||||
if (!ul || !children.length) return E([]);
|
if (!ul || !children.length) return E([]);
|
||||||
|
|
||||||
if (navType === "mega-menu") {
|
if (navType === "mega-menu") {
|
||||||
@@ -561,30 +576,7 @@ return baseclass.extend({
|
|||||||
});
|
});
|
||||||
|
|
||||||
this.bindNavigationAccordion(list);
|
this.bindNavigationAccordion(list);
|
||||||
this.renderCrumb();
|
window.auroraCrumb?.();
|
||||||
},
|
|
||||||
|
|
||||||
renderCrumb() {
|
|
||||||
const crumbEl = document.querySelector("#header-crumb");
|
|
||||||
const list = document.querySelector("#sidebar-list");
|
|
||||||
if (!crumbEl || !list) return;
|
|
||||||
|
|
||||||
const crumb = [];
|
|
||||||
const group = list.querySelector(".is-active-group");
|
|
||||||
const page = list.querySelector(".is-active-page");
|
|
||||||
if (group)
|
|
||||||
crumb.push(group.querySelector(".nav-category-label")?.textContent);
|
|
||||||
// Same-named group/page pairs ("System › System") collapse to one
|
|
||||||
// level — the duplicate adds no information.
|
|
||||||
if (page && page.textContent !== crumb[0]) crumb.push(page.textContent);
|
|
||||||
|
|
||||||
crumbEl.innerHTML = "";
|
|
||||||
crumb.forEach((title, i) => {
|
|
||||||
if (i) crumbEl.appendChild(E("li", { class: "crumb-sep" }, ["/"]));
|
|
||||||
crumbEl.appendChild(
|
|
||||||
E("li", { class: i === crumb.length - 1 ? "current" : "" }, [title]),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Command palette (all nav types): a Spotlight-style panel on ⌘K / Ctrl+K
|
// Command palette (all nav types): a Spotlight-style panel on ⌘K / Ctrl+K
|
||||||
|
|||||||
@@ -0,0 +1,242 @@
|
|||||||
|
import assert from "node:assert/strict";
|
||||||
|
import { readFileSync } from "node:fs";
|
||||||
|
import { resolve } from "node:path";
|
||||||
|
import test from "node:test";
|
||||||
|
|
||||||
|
const header = readFileSync(
|
||||||
|
resolve(import.meta.dirname, "../../ucode/template/themes/aurora/header.ut"),
|
||||||
|
"utf8",
|
||||||
|
);
|
||||||
|
|
||||||
|
// Just enough ucode for these scripts: comments and the nav-type branches.
|
||||||
|
const renderFor = (source, navType) =>
|
||||||
|
source
|
||||||
|
.replace(/\{#[\s\S]*?#\}/g, "")
|
||||||
|
.replace(
|
||||||
|
/\{% if \(nav_type == 'sidebar'\): %\}([\s\S]*?)\{% endif %\}/g,
|
||||||
|
(_, body) => (navType === "sidebar" ? body : ""),
|
||||||
|
);
|
||||||
|
|
||||||
|
const replaySource = header.match(
|
||||||
|
/<script>\s*(\{% if \(nav_type == 'sidebar'\): %\}\s*\{#[^#]*#\}\s*function auroraCrumb[\s\S]*?)<\/script>/,
|
||||||
|
)?.[1];
|
||||||
|
const loginSource = header.match(
|
||||||
|
/\{% if \(blank_page\): %\}\s*<script>([\s\S]*?)<\/script>/,
|
||||||
|
)?.[1];
|
||||||
|
|
||||||
|
const classes = (...initial) => {
|
||||||
|
const set = new Set(initial);
|
||||||
|
return {
|
||||||
|
set,
|
||||||
|
contains: (name) => set.has(name),
|
||||||
|
toggle: (name, on) => (on ? set.add(name) : set.delete(name), on),
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const surface = (extra = {}) => {
|
||||||
|
const el = { style: { display: "none" }, dataset: {}, html: null, ...extra };
|
||||||
|
Object.defineProperty(el, "innerHTML", {
|
||||||
|
set(value) {
|
||||||
|
el.html = value;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return el;
|
||||||
|
};
|
||||||
|
|
||||||
|
// A sidebar as the snapshot left it: System was the active group then.
|
||||||
|
const sidebarFixture = (activePath) => {
|
||||||
|
const group = (name, label, links) => {
|
||||||
|
const item = { classList: classes(), lastChild: {} };
|
||||||
|
if (name === "system")
|
||||||
|
item.classList.set.add("is-active-group").add("is-expanded");
|
||||||
|
item.toggle = {
|
||||||
|
tagName: "BUTTON",
|
||||||
|
dataset: { section: name },
|
||||||
|
parentNode: item,
|
||||||
|
};
|
||||||
|
item.label = { textContent: label };
|
||||||
|
item.links = links.map(([page, text]) => ({
|
||||||
|
pathname: `/cgi-bin/luci/admin/${name}/${page}`,
|
||||||
|
textContent: text,
|
||||||
|
classList: classes(
|
||||||
|
...(name === "system" && page === "system" ? ["is-active-page"] : []),
|
||||||
|
),
|
||||||
|
}));
|
||||||
|
item.querySelector = (sel) =>
|
||||||
|
sel === ".nav-category-label" ? item.label : null;
|
||||||
|
return item;
|
||||||
|
};
|
||||||
|
const direct = {
|
||||||
|
tagName: "A",
|
||||||
|
dataset: { section: "status" },
|
||||||
|
textContent: "Status",
|
||||||
|
classList: classes(),
|
||||||
|
};
|
||||||
|
const groups = [
|
||||||
|
group("network", "Network", [
|
||||||
|
["wireless", "Wireless"],
|
||||||
|
["network", "Interfaces"],
|
||||||
|
]),
|
||||||
|
group("system", "System", [
|
||||||
|
["system", "System"],
|
||||||
|
["admin", "Administration"],
|
||||||
|
]),
|
||||||
|
];
|
||||||
|
const links = [direct, ...groups.flatMap((g) => g.links)];
|
||||||
|
const list = surface({
|
||||||
|
dataset: { activePath },
|
||||||
|
querySelectorAll: (sel) =>
|
||||||
|
sel === "[data-section]"
|
||||||
|
? [direct, ...groups.map((g) => g.toggle)]
|
||||||
|
: sel === ".navigation-sublink"
|
||||||
|
? groups.flatMap((g) => g.links)
|
||||||
|
: [],
|
||||||
|
querySelector: (sel) =>
|
||||||
|
sel === ".is-active-group"
|
||||||
|
? (groups.find((g) => g.classList.contains("is-active-group")) ?? null)
|
||||||
|
: sel === ".is-active-page"
|
||||||
|
? (links.find((l) => l.classList.contains("is-active-page")) ?? null)
|
||||||
|
: null,
|
||||||
|
});
|
||||||
|
return { list, direct, groups };
|
||||||
|
};
|
||||||
|
|
||||||
|
const run = ({
|
||||||
|
navType,
|
||||||
|
stamp = "s",
|
||||||
|
cached = "s",
|
||||||
|
luciMenu = true,
|
||||||
|
elements,
|
||||||
|
}) => {
|
||||||
|
const store = {
|
||||||
|
"aurora.nav": JSON.stringify([
|
||||||
|
cached,
|
||||||
|
Object.fromEntries(
|
||||||
|
Object.keys(elements)
|
||||||
|
.filter((id) => id !== "header-crumb")
|
||||||
|
.map((id) => [id, `<${id}>`]),
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
"luci-session-store": JSON.stringify({ sid: luciMenu ? { menu: {} } : {} }),
|
||||||
|
};
|
||||||
|
const document = {
|
||||||
|
body: { dataset: { navStamp: stamp } },
|
||||||
|
getElementById: (id) => elements[id] ?? null,
|
||||||
|
createElement: () => ({}),
|
||||||
|
};
|
||||||
|
new Function("document", "sessionStorage", renderFor(replaySource, navType))(
|
||||||
|
document,
|
||||||
|
{
|
||||||
|
getItem: (key) => store[key] ?? null,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
test("header.ut carries the replay and the login-page clear", () => {
|
||||||
|
assert.ok(replaySource, "replay script not found");
|
||||||
|
assert.ok(loginSource, "login-page script not found");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("a sidebar replay paints inert and re-marks the current page", () => {
|
||||||
|
const { list, direct, groups } = sidebarFixture("network/wireless");
|
||||||
|
const footer = surface();
|
||||||
|
const crumb = { replaceChildren: (...items) => (crumb.items = items) };
|
||||||
|
|
||||||
|
run({
|
||||||
|
navType: "sidebar",
|
||||||
|
elements: {
|
||||||
|
"sidebar-list": list,
|
||||||
|
"sidebar-footer": footer,
|
||||||
|
"header-crumb": crumb,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const el of [list, footer]) {
|
||||||
|
assert.equal(
|
||||||
|
el.html,
|
||||||
|
`<${el === list ? "sidebar-list" : "sidebar-footer"}>`,
|
||||||
|
);
|
||||||
|
assert.equal(el.inert, true);
|
||||||
|
assert.equal(el.dataset.restored, "");
|
||||||
|
}
|
||||||
|
const [network, system] = groups;
|
||||||
|
assert.deepEqual(
|
||||||
|
[...network.classList.set],
|
||||||
|
["is-active-group", "is-expanded"],
|
||||||
|
);
|
||||||
|
assert.deepEqual([...system.classList.set], []);
|
||||||
|
assert.equal(direct.classList.contains("is-active-page"), false);
|
||||||
|
assert.deepEqual(
|
||||||
|
groups
|
||||||
|
.flatMap((g) => g.links)
|
||||||
|
.filter((l) => l.classList.contains("is-active-page"))
|
||||||
|
.map((l) => l.textContent),
|
||||||
|
["Wireless"],
|
||||||
|
);
|
||||||
|
assert.deepEqual(
|
||||||
|
crumb.items.map((li) => [li.className, li.textContent]),
|
||||||
|
[
|
||||||
|
["", "Network"],
|
||||||
|
["crumb-sep", "/"],
|
||||||
|
["current", "Wireless"],
|
||||||
|
],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("a direct row is marked on its own section, with no sublink", () => {
|
||||||
|
const { list, direct, groups } = sidebarFixture("status");
|
||||||
|
const crumb = { replaceChildren: (...items) => (crumb.items = items) };
|
||||||
|
|
||||||
|
run({
|
||||||
|
navType: "sidebar",
|
||||||
|
elements: { "sidebar-list": list, "header-crumb": crumb },
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(direct.classList.contains("is-active-page"), true);
|
||||||
|
assert.ok(groups.every((g) => g.classList.set.size === 0));
|
||||||
|
assert.ok(
|
||||||
|
groups
|
||||||
|
.flatMap((g) => g.links)
|
||||||
|
.every((l) => !l.classList.contains("is-active-page")),
|
||||||
|
);
|
||||||
|
assert.deepEqual(
|
||||||
|
crumb.items.map((li) => [li.className, li.textContent]),
|
||||||
|
[["current", "Status"]],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("a top menu replay only paints, inert", () => {
|
||||||
|
const topmenu = surface();
|
||||||
|
|
||||||
|
run({ navType: "mega-menu", elements: { topmenu } });
|
||||||
|
|
||||||
|
assert.equal(topmenu.html, "<topmenu>");
|
||||||
|
assert.equal(topmenu.style.display, "");
|
||||||
|
assert.equal(topmenu.inert, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("nothing is replayed for another stamp or after luci-base flushed its menu", () => {
|
||||||
|
for (const options of [{ cached: "other user" }, { luciMenu: false }]) {
|
||||||
|
const topmenu = surface();
|
||||||
|
run({ navType: "mega-menu", elements: { topmenu }, ...options });
|
||||||
|
assert.equal(topmenu.html, null, JSON.stringify(options));
|
||||||
|
assert.equal(topmenu.inert, undefined);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
test("the login page drops the cached nav", () => {
|
||||||
|
const removed = [];
|
||||||
|
new Function(
|
||||||
|
"localStorage",
|
||||||
|
"sessionStorage",
|
||||||
|
"window",
|
||||||
|
"document",
|
||||||
|
renderFor(loginSource),
|
||||||
|
)(
|
||||||
|
{ getItem: () => null },
|
||||||
|
{ removeItem: (key) => removed.push(key) },
|
||||||
|
{ matchMedia: () => ({ matches: false }) },
|
||||||
|
{ documentElement: { setAttribute() {} } },
|
||||||
|
);
|
||||||
|
assert.deepEqual(removed, ["aurora.nav"]);
|
||||||
|
});
|
||||||
@@ -6,6 +6,10 @@ const source = await readFile(
|
|||||||
new URL("../src/resource/menu-aurora.js", import.meta.url),
|
new URL("../src/resource/menu-aurora.js", import.meta.url),
|
||||||
"utf8",
|
"utf8",
|
||||||
);
|
);
|
||||||
|
const header = await readFile(
|
||||||
|
new URL("../../ucode/template/themes/aurora/header.ut", import.meta.url),
|
||||||
|
"utf8",
|
||||||
|
);
|
||||||
|
|
||||||
const getMethodSource = (name) => {
|
const getMethodSource = (name) => {
|
||||||
const start = source.indexOf(` ${name}(`);
|
const start = source.indexOf(` ${name}(`);
|
||||||
@@ -196,6 +200,19 @@ class FakeElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
replaceChildren(...children) {
|
||||||
|
this.children = [];
|
||||||
|
children.forEach((child) => this.appendChild(child));
|
||||||
|
}
|
||||||
|
|
||||||
|
set className(value) {
|
||||||
|
this.setAttribute("class", value);
|
||||||
|
}
|
||||||
|
|
||||||
|
set textContent(value) {
|
||||||
|
this.children = [String(value)];
|
||||||
|
}
|
||||||
|
|
||||||
set innerHTML(value) {
|
set innerHTML(value) {
|
||||||
assert.equal(value, "");
|
assert.equal(value, "");
|
||||||
this.children = [];
|
this.children = [];
|
||||||
@@ -238,6 +255,7 @@ const loadMenuModule = ({
|
|||||||
requestpath = [],
|
requestpath = [],
|
||||||
translate = (value) => value,
|
translate = (value) => value,
|
||||||
window = {},
|
window = {},
|
||||||
|
sessionStorage = {},
|
||||||
} = {}) => {
|
} = {}) => {
|
||||||
const baseclass = {
|
const baseclass = {
|
||||||
extend(module) {
|
extend(module) {
|
||||||
@@ -259,8 +277,21 @@ const loadMenuModule = ({
|
|||||||
"document",
|
"document",
|
||||||
"window",
|
"window",
|
||||||
"localStorage",
|
"localStorage",
|
||||||
|
"sessionStorage",
|
||||||
source,
|
source,
|
||||||
)(baseclass, ui, E, L, translate, document, window, {});
|
)(baseclass, ui, E, L, translate, document, window, {}, sessionStorage);
|
||||||
|
};
|
||||||
|
|
||||||
|
// header.ut's crumb renderer (shared with menu-aurora.js), on a fake document.
|
||||||
|
const loadHeaderCrumb = (elements) => {
|
||||||
|
const fn = header.match(/function auroraCrumb\(\) \{[\s\S]*?\n\t\t\t\}/)?.[0];
|
||||||
|
|
||||||
|
assert.ok(fn, "header.ut must define auroraCrumb()");
|
||||||
|
|
||||||
|
return new Function("document", `${fn}; return auroraCrumb;`)({
|
||||||
|
getElementById: (id) => elements[id] ?? null,
|
||||||
|
createElement: (tagName) => new FakeElement(tagName),
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const textContent = (element) =>
|
const textContent = (element) =>
|
||||||
@@ -688,22 +719,22 @@ test("renders mobile items and logout repeatedly without duplicate listeners", (
|
|||||||
assert.equal(list.listenerCount("click"), 1);
|
assert.equal(list.listenerCount("click"), 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("renders sidebar items, logout, and translated crumbs without duplication", () => {
|
test("renders sidebar items and logout without duplication, then the crumb", () => {
|
||||||
const list = new FakeElement("ul", {}, [new FakeElement("li")]);
|
const list = new FakeElement("ul", {}, [new FakeElement("li")]);
|
||||||
const footer = new FakeElement("div", {}, [new FakeElement("a")]);
|
const footer = new FakeElement("div", {}, [new FakeElement("a")]);
|
||||||
const crumb = new FakeElement("ol", {}, [new FakeElement("li")]);
|
|
||||||
const document = createFakeDocument({
|
const document = createFakeDocument({
|
||||||
elements: {
|
elements: {
|
||||||
"#header-crumb": crumb,
|
|
||||||
"#sidebar-footer": footer,
|
"#sidebar-footer": footer,
|
||||||
"#sidebar-list": list,
|
"#sidebar-list": list,
|
||||||
},
|
},
|
||||||
navType: "sidebar",
|
navType: "sidebar",
|
||||||
});
|
});
|
||||||
|
let crumbRenders = 0;
|
||||||
const menu = loadMenuModule({
|
const menu = loadMenuModule({
|
||||||
dispatchpath: ["admin", "network", "wireless"],
|
dispatchpath: ["admin", "network", "wireless"],
|
||||||
document,
|
document,
|
||||||
translate: (value) => `translated:${value}`,
|
translate: (value) => `translated:${value}`,
|
||||||
|
window: { auroraCrumb: () => (crumbRenders += 1) },
|
||||||
});
|
});
|
||||||
const tree = {
|
const tree = {
|
||||||
children: {
|
children: {
|
||||||
@@ -735,28 +766,32 @@ test("renders sidebar items, logout, and translated crumbs without duplication",
|
|||||||
assert.equal(footer.children[0].getAttribute("class"), "nav-link");
|
assert.equal(footer.children[0].getAttribute("class"), "nav-link");
|
||||||
assert.equal(footer.children[0].getAttribute("href"), "/admin/logout");
|
assert.equal(footer.children[0].getAttribute("href"), "/admin/logout");
|
||||||
assert.equal(textContent(footer.children[0]), "translated:Logout");
|
assert.equal(textContent(footer.children[0]), "translated:Logout");
|
||||||
assert.equal(crumb.children.length, 3);
|
assert.equal(crumbRenders, 2);
|
||||||
|
assert.equal(list.dataset.accordionBound, "true");
|
||||||
|
assert.equal(list.listenerCount("click"), 1);
|
||||||
|
|
||||||
|
const crumb = new FakeElement("ol", {}, [new FakeElement("li")]);
|
||||||
|
loadHeaderCrumb({ "header-crumb": crumb, "sidebar-list": list })();
|
||||||
|
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
crumb.children.map((child) => textContent(child)),
|
crumb.children.map((child) => textContent(child)),
|
||||||
["translated:Network", "/", "translated:Wireless"],
|
["translated:Network", "/", "translated:Wireless"],
|
||||||
);
|
);
|
||||||
assert.equal(crumb.children[2].getAttribute("class"), "current");
|
assert.deepEqual(
|
||||||
assert.equal(list.dataset.accordionBound, "true");
|
crumb.children.map((child) => child.getAttribute("class")),
|
||||||
assert.equal(list.listenerCount("click"), 1);
|
["", "crumb-sep", "current"],
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("collapses same-named group/page crumbs to a single level", () => {
|
test("collapses same-named group/page crumbs to a single level", () => {
|
||||||
|
const list = new FakeElement("ul");
|
||||||
const crumb = new FakeElement("ol", {}, [new FakeElement("li")]);
|
const crumb = new FakeElement("ol", {}, [new FakeElement("li")]);
|
||||||
const document = createFakeDocument({
|
|
||||||
elements: {
|
|
||||||
"#header-crumb": crumb,
|
|
||||||
"#sidebar-list": new FakeElement("ul"),
|
|
||||||
},
|
|
||||||
navType: "sidebar",
|
|
||||||
});
|
|
||||||
const menu = loadMenuModule({
|
const menu = loadMenuModule({
|
||||||
dispatchpath: ["admin", "system", "system"],
|
dispatchpath: ["admin", "system", "system"],
|
||||||
document,
|
document: createFakeDocument({
|
||||||
|
elements: { "#sidebar-list": list },
|
||||||
|
navType: "sidebar",
|
||||||
|
}),
|
||||||
translate: (value) => `translated:${value}`,
|
translate: (value) => `translated:${value}`,
|
||||||
});
|
});
|
||||||
const tree = {
|
const tree = {
|
||||||
@@ -771,6 +806,7 @@ test("collapses same-named group/page crumbs to a single level", () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
menu.renderSidebar(menu.buildNavigationModel(getMenuChildren(tree), "admin"));
|
menu.renderSidebar(menu.buildNavigationModel(getMenuChildren(tree), "admin"));
|
||||||
|
loadHeaderCrumb({ "header-crumb": crumb, "sidebar-list": list })();
|
||||||
|
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
crumb.children.map((child) => textContent(child)),
|
crumb.children.map((child) => textContent(child)),
|
||||||
@@ -779,6 +815,71 @@ test("collapses same-named group/page crumbs to a single level", () => {
|
|||||||
assert.equal(crumb.children[0].getAttribute("class"), "current");
|
assert.equal(crumb.children[0].getAttribute("class"), "current");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("caches the rendered nav under the stamp header.ut replays against", () => {
|
||||||
|
const stored = new Map();
|
||||||
|
const document = {
|
||||||
|
...createFakeDocument(),
|
||||||
|
body: { dataset: { navStamp: "sidebar:zh_Hans:root:1.3.0" } },
|
||||||
|
querySelectorAll: () => [
|
||||||
|
{ id: "sidebar-list", firstChild: {}, innerHTML: "<li>list</li>" },
|
||||||
|
{ id: "sidebar-footer", firstChild: null, innerHTML: "" },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
const menu = loadMenuModule({
|
||||||
|
document,
|
||||||
|
sessionStorage: { setItem: (key, value) => stored.set(key, value) },
|
||||||
|
});
|
||||||
|
|
||||||
|
menu.cacheNav();
|
||||||
|
|
||||||
|
assert.deepEqual(JSON.parse(stored.get("aurora.nav")), [
|
||||||
|
"sidebar:zh_Hans:root:1.3.0",
|
||||||
|
{ "sidebar-list": "<li>list</li>" },
|
||||||
|
]);
|
||||||
|
// Both sides read the one server-rendered stamp (user included).
|
||||||
|
assert.match(header, /<body [^>]*data-nav-stamp="[^"]*ctx\?\.authuser/);
|
||||||
|
assert.match(header, /cache\?\.\[0\] !== body\.dataset\.navStamp\) return;/);
|
||||||
|
|
||||||
|
// Storage that throws (privacy modes, quota) leaves rendering untouched.
|
||||||
|
const sealed = loadMenuModule({
|
||||||
|
document,
|
||||||
|
sessionStorage: {
|
||||||
|
setItem() {
|
||||||
|
throw new Error("sealed");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
assert.doesNotThrow(() => sealed.cacheNav());
|
||||||
|
});
|
||||||
|
|
||||||
|
test("releases the inert replay however the menu load settles", () => {
|
||||||
|
const init = getMethodSource("__init__");
|
||||||
|
|
||||||
|
// In finally: a failed load or a throwing render must not leave a dead copy.
|
||||||
|
assert.match(
|
||||||
|
init,
|
||||||
|
/\.finally\(\(\) => \{[\s\S]*querySelectorAll\("\[data-restored\]"\)[\s\S]*inert = false/,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("drops the replayed top menu before building the live one", () => {
|
||||||
|
const ul = E("ul", { id: "topmenu" }, [E("li")]);
|
||||||
|
const menu = loadMenuModule({
|
||||||
|
document: createFakeDocument({ elements: { "#topmenu": ul } }),
|
||||||
|
});
|
||||||
|
let childrenAtInit = null;
|
||||||
|
|
||||||
|
menu.initMegaMenu = (children, url, list) => {
|
||||||
|
childrenAtInit = list.children.length;
|
||||||
|
};
|
||||||
|
menu.renderMainMenu(
|
||||||
|
{ children: { status: { title: "Status", children: { a: {} } } } },
|
||||||
|
"admin",
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.equal(childrenAtInit, 0);
|
||||||
|
});
|
||||||
|
|
||||||
test("renders an active group expanded when an open mobile list was initially empty", () => {
|
test("renders an active group expanded when an open mobile list was initially empty", () => {
|
||||||
const list = new FakeElement("ul");
|
const list = new FakeElement("ul");
|
||||||
const overlay = new FakeElement("div", { class: "mobile-menu-open" }, [list]);
|
const overlay = new FakeElement("div", { class: "mobile-menu-open" }, [list]);
|
||||||
|
|||||||
@@ -204,6 +204,28 @@ test("desktop sidebar styles only provide desktop navigation density", () => {
|
|||||||
assert.doesNotMatch(sidebar, /bg-brand-subtle/);
|
assert.doesNotMatch(sidebar, /bg-brand-subtle/);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("desktop sidebar toggles move the column and the panel as one", () => {
|
||||||
|
const sidebar = getBlock(layoutStyles, 'body[data-nav-type="sidebar"]');
|
||||||
|
const easing = "250ms_var(--ease-in-out)";
|
||||||
|
|
||||||
|
// The column width and the panel's translate share one curve and length,
|
||||||
|
// so the content edge stays on the sidebar edge in every frame.
|
||||||
|
assert.ok(
|
||||||
|
sidebar.includes(`md:[transition:grid-template-columns_${easing}]`),
|
||||||
|
);
|
||||||
|
assert.ok(
|
||||||
|
getBlock(sidebar, "& .sidebar-panel-inner {").includes(
|
||||||
|
`[transition:translate_${easing}]`,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
// Hidden only after the slide-out, shown at once on the way in.
|
||||||
|
assertIncludesUtilities(
|
||||||
|
getBlock(sidebar, "&.sidebar-collapsed .sidebar-panel {"),
|
||||||
|
["invisible", "[transition:visibility_0s_250ms]"],
|
||||||
|
);
|
||||||
|
assert.doesNotMatch(layoutStyles, /sidebar-anim|sidebar-run-/);
|
||||||
|
});
|
||||||
|
|
||||||
test("mobile drawer styles only provide mobile navigation density", () => {
|
test("mobile drawer styles only provide mobile navigation density", () => {
|
||||||
const drawer = getBlock(overlayStyles, ".mobile-menu-overlay");
|
const drawer = getBlock(overlayStyles, ".mobile-menu-overlay");
|
||||||
const icon = getBlock(drawer, "& .nav-icon");
|
const icon = getBlock(drawer, "& .nav-icon");
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
import assert from "node:assert/strict";
|
||||||
|
import { readFileSync } from "node:fs";
|
||||||
|
import { resolve } from "node:path";
|
||||||
|
import test from "node:test";
|
||||||
|
|
||||||
|
const root = resolve(import.meta.dirname, "../..");
|
||||||
|
const css = readFileSync(resolve(root, "htdocs/luci-static/aurora/main.css"), "utf8");
|
||||||
|
const header = readFileSync(resolve(root, "ucode/template/themes/aurora/header.ut"), "utf8");
|
||||||
|
|
||||||
|
test("only the typed theme toggle captures the page in a view transition", () => {
|
||||||
|
assert.match(header, /ViewTransitionTypeSet \? \{ update: apply, types: \['theme'\] \} : apply/);
|
||||||
|
// Standalone rule: merged into a selector list, an engine without
|
||||||
|
// :active-view-transition-type() would drop its neighbours too.
|
||||||
|
assert.match(css, /\}:root:not\(:active-view-transition-type\(theme\)\)\{view-transition-name:none\}/);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("late content fades in without a filling animation", () => {
|
||||||
|
const rule = css.match(/#view>:not\(\.spinning\)[^{]*\{([^}]*)\}/);
|
||||||
|
assert.ok(rule, "missing page-entry fade rule");
|
||||||
|
assert.match(rule[1], /\bbackwards\b/);
|
||||||
|
assert.doesNotMatch(rule[1], /\bboth\b/);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("a collapsed sidebar is restored before anything resolves body's style", () => {
|
||||||
|
// The sidebar column transitions; a class landing after a style flush
|
||||||
|
// (the page-bg script's getComputedStyle) would ease it shut on load.
|
||||||
|
const restore = header.indexOf("aurora.sidebarCollapsed");
|
||||||
|
assert.ok(restore > header.indexOf("<body"), "restore runs inside body");
|
||||||
|
assert.ok(
|
||||||
|
restore < header.indexOf("getComputedStyle"),
|
||||||
|
"restore precedes the page-bg style read",
|
||||||
|
);
|
||||||
|
assert.ok(
|
||||||
|
restore < header.indexOf("<header>"),
|
||||||
|
"restore precedes the header markup",
|
||||||
|
);
|
||||||
|
});
|
||||||
@@ -111,9 +111,8 @@ test("mega-menu reveal is compositor-only and the frost never overlaps it", () =
|
|||||||
sheet?.includes("duration-(--mega-menu-duration,300ms)"),
|
sheet?.includes("duration-(--mega-menu-duration,300ms)"),
|
||||||
`sheet must share the adaptive duration: ${sheet}`,
|
`sheet must share the adaptive duration: ${sheet}`,
|
||||||
);
|
);
|
||||||
// The curtain carries the blur permanently (Apple's globalnav-curtain) and
|
// The curtain only dims: a blurred full-screen fade dropped frames on weak
|
||||||
// fades it with opacity/visibility. Close must start that fade immediately;
|
// GPUs. Opacity fades out at once; visibility waits for it without tweening.
|
||||||
// delaying the curtain left blur visible after the sheet had collapsed.
|
|
||||||
assert.ok(
|
assert.ok(
|
||||||
!overlay.includes("max-md:backdrop-blur-lg"),
|
!overlay.includes("max-md:backdrop-blur-lg"),
|
||||||
"opaque mobile overlay must not blur hidden pixels",
|
"opaque mobile overlay must not blur hidden pixels",
|
||||||
@@ -122,12 +121,18 @@ test("mega-menu reveal is compositor-only and the frost never overlaps it", () =
|
|||||||
.split("\n")
|
.split("\n")
|
||||||
.find((l) => l.includes("bg-mega-menu-scrim"));
|
.find((l) => l.includes("bg-mega-menu-scrim"));
|
||||||
assert.ok(
|
assert.ok(
|
||||||
curtain?.includes("backdrop-blur-lg"),
|
!curtain?.includes("backdrop-"),
|
||||||
`desktop curtain blur: ${curtain}`,
|
`desktop curtain must not blur: ${curtain}`,
|
||||||
);
|
);
|
||||||
assert.ok(
|
assert.ok(
|
||||||
curtain?.includes("duration-[220ms]") && !curtain.includes("delay-"),
|
curtain?.includes("[transition:opacity_220ms_") &&
|
||||||
`desktop curtain exit must be immediate: ${curtain}`,
|
curtain.includes(",visibility_0s_220ms]") &&
|
||||||
|
!curtain.includes("delay-"),
|
||||||
|
`desktop curtain: immediate opacity exit, delayed visibility: ${curtain}`,
|
||||||
|
);
|
||||||
|
assert.ok(
|
||||||
|
/&\.active\s*\{\s*@apply[^;]*\[transition-delay:0s\]/.test(overlay),
|
||||||
|
"desktop curtain must show without delay",
|
||||||
);
|
);
|
||||||
assert.ok(!overlay.includes(".settled"), "settle-gated frost must stay gone");
|
assert.ok(!overlay.includes(".settled"), "settle-gated frost must stay gone");
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk
|
|||||||
LUCI_TITLE:=Aurora Theme (A modern browser theme built with Vite and Tailwind CSS)
|
LUCI_TITLE:=Aurora Theme (A modern browser theme built with Vite and Tailwind CSS)
|
||||||
LUCI_DEPENDS:=+luci-base
|
LUCI_DEPENDS:=+luci-base
|
||||||
|
|
||||||
PKG_VERSION:=1.3.3
|
PKG_VERSION:=1.3.7
|
||||||
PKG_RELEASE:=80
|
PKG_RELEASE:=81
|
||||||
PKG_LICENSE:=Apache-2.0
|
PKG_LICENSE:=Apache-2.0
|
||||||
|
|
||||||
LUCI_MINIFY_CSS:=
|
LUCI_MINIFY_CSS:=
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */
|
/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */
|
||||||
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-content:"";--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-border-style:solid;--tw-duration:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-border-spacing-x:0;--tw-border-spacing-y:0}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--spacing:var(--spacing);--container-xs:20rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--blur-md:12px;--blur-lg:16px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1Line truncated
|
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-content:"";--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-border-style:solid;--tw-duration:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-border-spacing-x:0;--tw-border-spacing-y:0}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--spacing:var(--spacing);--container-xs:20rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--blur-md:12px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (notLine truncated
|
||||||
@@ -1 +1 @@
|
|||||||
"use strict";"require baseclass";"require ui";const PALETTE_RECENTS_KEY="aurora.paletteRecents";return baseclass.extend({__init__(){ui.menu.load().then(e=>this.render(e)),this.initNavigationControls(),this.initUciIndicator()},initUciIndicator(){const e=ui.changes?.setIndicator;e&&(ui.changes.setIndicator=function(t){e.call(this,t),document.querySelector('[data-indicator="uci-changes"]')?.setAttribute("data-count",t||0)})},initNavigationControls(){const e=document.querySelector("#mobile-menu-overlay"),t=document.querySelector("#navigation-toggle");if(!t||!e)return;const a=e.querySelector("#mobile-nav-list"),n=window.matchMedia("(min-width: 768px)"),i="aurora.sidebarCollapsed";let s;const o=()=>n.matches&&"sidebar"===document.body.dataset.navType,r=e=>{const a=o();t.classList.toggle("is-expanded",e&&!n.matches),t.setAttribute("aria-expanded",e?"true":"false"),t.setAttribute("aria-controls",a?"sidebar-panel":"mobile-menu-overlay");const i=e&&!a?_("Close"):_("Navigation");t.setAttribute("title",i),t.setAttribute("aria-label",i)},l=()=>{e.classList.contains("mobile-menu-open")&&(e.classList.remove("mobile-menu-open"),document.body.classList.remove("mobile-navigation-open"),document.body.style.overflow="",this.resetNavigationGroups(a),r(!1))};this.closeMobileNavigation=l;const c=t=>{if(o()){l();const e=!t,a=document.body;return a.classList.remove("sidebar-anim-open","sidebar-anim-close"),a.classList.add(e?"sidebar-anim-close":"sidebar-anim-open"),clearTimeout(s),s=setTimeout(()=>{a.classList.remove("sidebar-anim-open","sidebar-anim-close")},300),a.classList.toggle("sidebar-collapsed",e),localStorage.setItem(i,e),void r(t)}if(n.matches)return l(),void r(!1);e.classList.toggle("mobile-menu-open",t),document.body.classList.toggle("mobile-navigation-open",t),document.body.style.overflow=t?"hidden":"",t?this.expandActiveNavigationGroup(a):this.resetNavigationGroups(a),r(t)},d=()=>{if(l(),o()){const e="true"===localStorage.getItem(i);return document.body.classList.toggle("sidebar-collapsed",e),void r(!e)}r(!1)};t.addEventListener("click",t=>{t.stopPropagation(),c(!(o()?!document.body.classList.contains("sidebar-collapsed"):!n.matches&&e.classList.contains("mobile-menu-open")))}),e.addEventListener("click",t=>{t.target===e&&c(!1)}),document.addEventListener("keydown",t=>{"Escape"===t.key&&e.classList.contains("mobile-menu-open")&&c(!1)}),n.addEventListener("change",d),d(),document.addEventListener("click",t=>{const a=t.target?.closest?.(".navigation-direct, .navigation-sublink, .mobile-nav-logout");a&&e.contains(a)&&c(!1)})},renderMobileMenu(e){const t=document.querySelector("#mobile-nav-list"),a=document.querySelector("#mobile-nav-footer-action");t&&(t.innerHTML=""),a&&(a.innerHTML=""),t&&(e.forEach(e=>{e.isLogout?a&&a.appendChild(E("a",{class:"mobile-nav-logout",href:e.href},[e.title])):t.appendChild(this.renderNavigationItem(e,"mobile"))}),this.bindNavigationAccordion(t))},render(e){this.tree=e,this.renderModeMenu(e),this.renderTabs(e)},renderTabs(e){if(L.env.dispatchpath.length<3)return;let t=e,a="";for(let e=0;e<3&&t;e++){const n=L.env.dispatchpath[e];t=t.children?.[n],a+=(a?"/":"")+n}t&&this.renderTabMenu(t,a)},syncRoute(){if(!this.tree)return;const e=new URL(L.url(...L.env.dispatchpath.slice(0,3)),location.href).pathname;document.querySelectorAll("#topmenu a, .desktop-menu-canvas a, #sidebar-list a, #mobile-nav-list a").forEach(t=>{const a=t.pathname===e&&!t.getAttribute("href").startsWith("#");t.classList.toggle("is-active-page",a),a?t.setAttribute("aria-current","page"):t.removeAttribute("aria-current")}),document.querySelectorAll(".navigation-group").forEach(e=>{const t=!!e.querySelector("a.is-active-page"),a=e.querySelector(".navigation-group-toggle");e.classList.toggle("is-active-group",t),t?a?.setAttribute("aria-current","location"):a?.removeAttribute("aria-current")});for(const e of[document.querySelector("#sidebar-list"),document.querySelector("#mobile-nav-list")])this.resetNavigationGroups(e),this.expandActiveNavigationGroup(e);this.renderCrumb();const t=document.querySelector("#tabmenu");t&&(t.innerHTML="",t.style.display="none"),this.renderTabs(this.tree)},closeSurfaces(){this.hideDesktopNav(),this.paletteList&&this.closePalette(),this.closeMobileNavigation?.()},renderTabMenu(e,t,a=0){const n=document.querySelector("#tabmenu"),i=E("ul",{class:"tabs"}),s=ui.menu.getChildren(e);let o=null;return s.forEach(e=>{const n=L.env.dispatchpath[3+a]===e.name;i.appendChild(E("li",{class:`tabmenu-item-${e.name}${n?" active":""}`},[E("a",{href:L.url(t,e.name)},[_(e.title)])])),n&&(o=e)}),i.children.length?(n.appendChild(i),n.style.display="",o&&this.renderTabMenu(o,`${t}/${o.name}`,a+1),i):E([])},renderMainMenu(e,t,a=0,n=null){const i=a?E("ul",{class:"desktop-nav-list"}):document.querySelector("#topmenu"),s=ui.menu.getChildren(e);if(a>1)return E([]);if(0===a){const e=document.body?.dataset?.navType||"mega-menu";if("sidebar"===e)return this.renderSidebar(n||[]),i||E([]);if(!i||!s.length)return E([]);"mega-menu"===e?Line truncated
|
"use strict";"require baseclass";"require ui";const PALETTE_RECENTS_KEY="aurora.paletteRecents";return baseclass.extend({__init__(){ui.menu.load().then(e=>this.render(e)).finally(()=>{for(const e of document.querySelectorAll("[data-restored]"))e.inert=!1}),this.initNavigationControls(),this.initUciIndicator()},initUciIndicator(){const e=ui.changes?.setIndicator;e&&(ui.changes.setIndicator=function(t){e.call(this,t),document.querySelector('[data-indicator="uci-changes"]')?.setAttribute("data-count",t||0)})},initNavigationControls(){const e=document.querySelector("#mobile-menu-overlay"),t=document.querySelector("#navigation-toggle");if(!t||!e)return;const a=e.querySelector("#mobile-nav-list"),n=window.matchMedia("(min-width: 768px)"),i="aurora.sidebarCollapsed",s=()=>n.matches&&"sidebar"===document.body.dataset.navType,o=e=>{const a=s();t.classList.toggle("is-expanded",e&&!n.matches),t.setAttribute("aria-expanded",e?"true":"false"),t.setAttribute("aria-controls",a?"sidebar-panel":"mobile-menu-overlay");const i=e&&!a?_("Close"):_("Navigation");t.setAttribute("title",i),t.setAttribute("aria-label",i)},r=()=>{e.classList.contains("mobile-menu-open")&&(e.classList.remove("mobile-menu-open"),document.body.classList.remove("mobile-navigation-open"),document.body.style.overflow="",this.resetNavigationGroups(a),o(!1))};this.closeMobileNavigation=r;const l=t=>{if(s()){r();const e=!t;return document.body.classList.toggle("sidebar-collapsed",e),localStorage.setItem(i,e),void o(t)}if(n.matches)return r(),void o(!1);e.classList.toggle("mobile-menu-open",t),document.body.classList.toggle("mobile-navigation-open",t),document.body.style.overflow=t?"hidden":"",t?this.expandActiveNavigationGroup(a):this.resetNavigationGroups(a),o(t)},c=()=>{if(r(),s()){const e="true"===localStorage.getItem(i);return document.body.classList.toggle("sidebar-collapsed",e),void o(!e)}o(!1)};t.addEventListener("click",t=>{t.stopPropagation(),l(!(s()?!document.body.classList.contains("sidebar-collapsed"):!n.matches&&e.classList.contains("mobile-menu-open")))}),e.addEventListener("click",t=>{t.target===e&&l(!1)}),document.addEventListener("keydown",t=>{"Escape"===t.key&&e.classList.contains("mobile-menu-open")&&l(!1)}),n.addEventListener("change",c),c(),document.addEventListener("click",t=>{const a=t.target?.closest?.(".navigation-direct, .navigation-sublink, .mobile-nav-logout");a&&e.contains(a)&&l(!1)})},renderMobileMenu(e){const t=document.querySelector("#mobile-nav-list"),a=document.querySelector("#mobile-nav-footer-action");t&&(t.innerHTML=""),a&&(a.innerHTML=""),t&&(e.forEach(e=>{e.isLogout?a&&a.appendChild(E("a",{class:"mobile-nav-logout",href:e.href},[e.title])):t.appendChild(this.renderNavigationItem(e,"mobile"))}),this.bindNavigationAccordion(t))},render(e){this.tree=e,this.renderModeMenu(e),this.renderTabs(e),this.cacheNav()},cacheNav(){const e={};for(const t of document.querySelectorAll("#topmenu, #sidebar-list, #sidebar-footer"))t.firstChild&&(e[t.id]=t.innerHTML);try{sessionStorage.setItem("aurora.nav",JSON.stringify([document.body.dataset.navStamp,e]))}catch{}},renderTabs(e){if(L.env.dispatchpath.length<3)return;let t=e,a="";for(let e=0;e<3&&t;e++){const n=L.env.dispatchpath[e];t=t.children?.[n],a+=(a?"/":"")+n}t&&this.renderTabMenu(t,a)},syncRoute(){if(!this.tree)return;const e=new URL(L.url(...L.env.dispatchpath.slice(0,3)),location.href).pathname;document.querySelectorAll("#topmenu a, .desktop-menu-canvas a, #sidebar-list a, #mobile-nav-list a").forEach(t=>{const a=t.pathname===e&&!t.getAttribute("href").startsWith("#");t.classList.toggle("is-active-page",a),a?t.setAttribute("aria-current","page"):t.removeAttribute("aria-current")}),document.querySelectorAll(".navigation-group").forEach(e=>{const t=!!e.querySelector("a.is-active-page"),a=e.querySelector(".navigation-group-toggle");e.classList.toggle("is-active-group",t),t?a?.setAttribute("aria-current","location"):a?.removeAttribute("aria-current")});for(const e of[document.querySelector("#sidebar-list"),document.querySelector("#mobile-nav-list")])this.resetNavigationGroups(e),this.expandActiveNavigationGroup(e);window.auroraCrumb?.();const t=document.querySelector("#tabmenu");t&&(t.innerHTML="",t.style.display="none"),this.renderTabs(this.tree)},closeSurfaces(){this.hideDesktopNav(),this.paletteList&&this.closePalette(),this.closeMobileNavigation?.()},renderTabMenu(e,t,a=0){const n=document.querySelector("#tabmenu"),i=E("ul",{class:"tabs"}),s=ui.menu.getChildren(e);let o=null;return s.forEach(e=>{const n=L.env.dispatchpath[3+a]===e.name;i.appendChild(E("li",{class:`tabmenu-item-${e.name}${n?" active":""}`},[E("a",{href:L.url(t,e.name)},[_(e.title)])])),n&&(o=e)}),i.children.length?(n.appendChild(i),n.style.display="",o&&this.renderTabMenu(o,`${t}/${o.name}`,a+1),i):E([])},renderMainMenu(e,t,a=0,n=null){const i=a?E("ul",{class:"desktop-nav-list"}):document.querySelector("#topmenu"),s=ui.menu.getChildren(e);if(a>1)return E([]);if(0===a){const e=document.body?.dataset?.navType||"megaLine truncated
|
||||||
@@ -107,6 +107,8 @@
|
|||||||
const theme = localStorage.getItem('aurora.theme') || 'device';
|
const theme = localStorage.getItem('aurora.theme') || 'device';
|
||||||
const isDark = theme === 'dark' || (theme === 'device' && window.matchMedia('(prefers-color-scheme: dark)').matches);
|
const isDark = theme === 'dark' || (theme === 'device' && window.matchMedia('(prefers-color-scheme: dark)').matches);
|
||||||
document.documentElement.setAttribute('data-darkmode', isDark);
|
document.documentElement.setAttribute('data-darkmode', isDark);
|
||||||
|
{# A new session may see a different menu: drop the replayed nav. #}
|
||||||
|
try { sessionStorage.removeItem('aurora.nav'); } catch (e) {}
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
{% else %}
|
{% else %}
|
||||||
@@ -122,7 +124,8 @@
|
|||||||
|
|
||||||
if (prev !== null && prev !== next && document.startViewTransition && !navOpen &&
|
if (prev !== null && prev !== next && document.startViewTransition && !navOpen &&
|
||||||
!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||||
document.startViewTransition(apply);
|
// Typed: main.css leaves the page uncaptured for any other transition.
|
||||||
|
document.startViewTransition(window.ViewTransitionTypeSet ? { update: apply, types: ['theme'] } : apply);
|
||||||
} else {
|
} else {
|
||||||
apply();
|
apply();
|
||||||
}
|
}
|
||||||
@@ -224,8 +227,16 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="lang_{{ dispatcher.lang }}" data-page="{{ entityencode(page, true) }}" data-nav-type="{{ nav_type }}" data-asset-version="{# PKG_VERSION #}"{% if (length(patch_all)): %} data-patches="{{ entityencode(join(' ', patch_all), true) }}"{% endif %}{% if (blank_page ? tokens.struct_login_bg : tokens.struct_main_bg): %} data-bg{% endif %}>
|
<body class="lang_{{ dispatcher.lang }}" data-page="{{ entityencode(page, true) }}" data-nav-type="{{ nav_type }}" data-asset-version="{# PKG_VERSION #}"{% if (!blank_page): %} data-nav-stamp="{{ entityencode(join(':', [nav_type, dispatcher.lang, ctx?.authuser ?? '']), true) }}:{# PKG_VERSION #}"{% endif %}{% if (length(patch_all)): %} data-patches="{{ entityencode(join(' ', patch_all), true) }}"{% endif %}{% if (blank_page ? tokens.struct_login_bg : tokens.struct_main_bg): %} data-bg{% endif %}>
|
||||||
{% if (!blank_page): %}
|
{% if (!blank_page): %}
|
||||||
|
{% if (nav_type == 'sidebar'): %}
|
||||||
|
{# First in body: once anything resolves body's style (the page-bg script does), the column would ease shut on load. #}
|
||||||
|
<script>
|
||||||
|
if (localStorage.getItem('aurora.sidebarCollapsed') === 'true') {
|
||||||
|
document.body.classList.add('sidebar-collapsed');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
||||||
{% if (tokens.struct_main_bg): %}
|
{% if (tokens.struct_main_bg): %}
|
||||||
<div class="page-bg" aria-hidden="true"></div>
|
<div class="page-bg" aria-hidden="true"></div>
|
||||||
<script>
|
<script>
|
||||||
@@ -306,16 +317,58 @@
|
|||||||
<img class="sidebar-logo" src="{{ media }}/images/{{ logo_svg }}?v={{ icon_cache_version }}" alt="" aria-hidden="true">
|
<img class="sidebar-logo" src="{{ media }}/images/{{ logo_svg }}?v={{ icon_cache_version }}" alt="" aria-hidden="true">
|
||||||
<a class="sidebar-brand" href="/">{{ hostname }}</a>
|
<a class="sidebar-brand" href="/">{{ hostname }}</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="sidebar-list" id="sidebar-list"></ul>
|
<ul class="sidebar-list" id="sidebar-list" data-active-path="{{ entityencode(join('/', slice(ctx?.path ?? [], 1, 3)), true) }}"></ul>
|
||||||
<div class="sidebar-footer" id="sidebar-footer"></div>
|
<div class="sidebar-footer" id="sidebar-footer"></div>
|
||||||
</nav>
|
</nav>
|
||||||
</aside>
|
</aside>
|
||||||
<script>
|
|
||||||
if (localStorage.getItem('aurora.sidebarCollapsed') === 'true') {
|
|
||||||
document.body.classList.add('sidebar-collapsed');
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<script>
|
||||||
|
{% if (nav_type == 'sidebar'): %}
|
||||||
|
{# Shared with menu-aurora.js, which calls it after every render and route change. #}
|
||||||
|
function auroraCrumb() {
|
||||||
|
const list = document.getElementById('sidebar-list');
|
||||||
|
const group = list.querySelector('.is-active-group')?.querySelector('.nav-category-label')?.textContent;
|
||||||
|
const page = list.querySelector('.is-active-page')?.textContent;
|
||||||
|
const titles = [group, page !== group && page].filter(Boolean);
|
||||||
|
const li = (className, textContent) => Object.assign(document.createElement('li'), { className, textContent });
|
||||||
|
document.getElementById('header-crumb').replaceChildren(...titles.flatMap((title, i) =>
|
||||||
|
i ? [li('crumb-sep', '/'), li('current', title)] : [li(titles[1] ? '' : 'current', title)]));
|
||||||
|
}
|
||||||
|
{% endif %}
|
||||||
|
{# Paints the nav menu-aurora.js cached on its last render before first paint, inert until the module renders over it. #}
|
||||||
|
(() => {
|
||||||
|
try {
|
||||||
|
const body = document.body, cache = JSON.parse(sessionStorage.getItem('aurora.nav'));
|
||||||
|
{# The stamp (nav type, language, user, version) is rendered on body; a different user sees a different menu. #}
|
||||||
|
{# luci-base's one-session store loses its menu on ui.menu.flushCache() (package changes): never replay past that. #}
|
||||||
|
const luci = Object.values(JSON.parse(sessionStorage.getItem('luci-session-store')) ?? {})[0];
|
||||||
|
if (!luci?.menu || cache?.[0] !== body.dataset.navStamp) return;
|
||||||
|
for (const id in cache[1]) {
|
||||||
|
const el = document.getElementById(id);
|
||||||
|
el.innerHTML = cache[1][id];
|
||||||
|
el.style.display = '';
|
||||||
|
el.dataset.restored = '';
|
||||||
|
el.inert = true;
|
||||||
|
}
|
||||||
|
{% if (nav_type == 'sidebar'): %}
|
||||||
|
{# The marks renderNavigationItem derives from L.env.dispatchpath. #}
|
||||||
|
const list = document.getElementById('sidebar-list'), [group, page] = list.dataset.activePath.split('/');
|
||||||
|
for (const row of list.querySelectorAll('[data-section]')) {
|
||||||
|
const on = row.dataset.section === group, item = row.parentNode;
|
||||||
|
if (row.tagName === 'A') {
|
||||||
|
row.classList.toggle('is-active-page', on);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
item.classList.toggle('is-active-group', on);
|
||||||
|
item.classList.toggle('is-expanded', on);
|
||||||
|
}
|
||||||
|
for (const link of list.querySelectorAll('.navigation-sublink'))
|
||||||
|
link.classList.toggle('is-active-page', !!page && link.pathname.endsWith(`/${group}/${page}`));
|
||||||
|
auroraCrumb();
|
||||||
|
{% endif %}
|
||||||
|
} catch (e) {}
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
<div class="mobile-menu-overlay" id="mobile-menu-overlay">
|
<div class="mobile-menu-overlay" id="mobile-menu-overlay">
|
||||||
<nav class="mobile-nav" aria-label="{{ _('Navigation') }}">
|
<nav class="mobile-nav" aria-label="{{ _('Navigation') }}">
|
||||||
|
|||||||
@@ -14,4 +14,4 @@ Restored HTML loses inline JS handlers (`innerHTML` serialization), so anything
|
|||||||
|
|
||||||
**Bump `v` whenever the sidebar markup changes shape.**
|
**Bump `v` whenever the sidebar markup changes shape.**
|
||||||
|
|
||||||
Cross-document `@view-transition` rules live in `components/_view-transitions.css` (only `#sidebar` gets its own snapshot group — the topbar must not, or its top-layer snapshot escapes `.content-card`'s rounded-corner clipping during transitions); they assume the cache keeps the sidebar's first frame populated.
|
The theme captures no view transitions (`components/_view-transitions.css` sets `:root { view-transition-name: none }`); swapped and freshly loaded content fades in instead. On desktop, collapsing eases the rail's width (`_layout.css`) and `#main-wrapper`, a flex-1 sibling, follows it frame by frame: the content is pushed, never snapped and slid back. `sidebar-shadcn.js` sets `html[data-sidebar-anim]` on the first toggle so a page load never plays the transition.
|
||||||
@@ -27,12 +27,12 @@
|
|||||||
"@types/node": "^25.9.1",
|
"@types/node": "^25.9.1",
|
||||||
"colorjs.io": "^0.6.1",
|
"colorjs.io": "^0.6.1",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
|
"lightningcss": "^1.32.0",
|
||||||
"lint-staged": "^16.4.0",
|
"lint-staged": "^16.4.0",
|
||||||
"prettier": "^3.8.3",
|
"prettier": "^3.8.3",
|
||||||
"prettier-plugin-tailwindcss": "^0.8.0",
|
"prettier-plugin-tailwindcss": "^0.8.0",
|
||||||
"tailwindcss": "^4.3.0",
|
"tailwindcss": "^4.3.0",
|
||||||
"terser": "^5.47.1",
|
"terser": "^5.47.1",
|
||||||
"tw-animate-css": "^1.4.0",
|
|
||||||
"vite": "^8.0.13"
|
"vite": "^8.0.13"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c"
|
"packageManager": "pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c"
|
||||||
|
|||||||
Generated
+3
-8
@@ -187,6 +187,9 @@ importers:
|
|||||||
husky:
|
husky:
|
||||||
specifier: ^9.1.7
|
specifier: ^9.1.7
|
||||||
version: 9.1.7
|
version: 9.1.7
|
||||||
|
lightningcss:
|
||||||
|
specifier: ^1.32.0
|
||||||
|
version: 1.32.0
|
||||||
lint-staged:
|
lint-staged:
|
||||||
specifier: ^16.4.0
|
specifier: ^16.4.0
|
||||||
version: 16.4.0
|
version: 16.4.0
|
||||||
@@ -202,9 +205,6 @@ importers:
|
|||||||
terser:
|
terser:
|
||||||
specifier: ^5.47.1
|
specifier: ^5.47.1
|
||||||
version: 5.47.1
|
version: 5.47.1
|
||||||
tw-animate-css:
|
|
||||||
specifier: ^1.4.0
|
|
||||||
version: 1.4.0
|
|
||||||
vite:
|
vite:
|
||||||
specifier: ^8.0.13
|
specifier: ^8.0.13
|
||||||
version: 8.0.13(@types/node@25.9.1)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
|
version: 8.0.13(@types/node@25.9.1)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)
|
||||||
@@ -801,9 +801,6 @@ packages:
|
|||||||
tslib@2.8.1:
|
tslib@2.8.1:
|
||||||
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
|
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
|
||||||
|
|
||||||
tw-animate-css@1.4.0:
|
|
||||||
resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==}
|
|
||||||
|
|
||||||
undici-types@7.24.6:
|
undici-types@7.24.6:
|
||||||
resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==}
|
resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==}
|
||||||
|
|
||||||
@@ -1300,8 +1297,6 @@ snapshots:
|
|||||||
tslib@2.8.1:
|
tslib@2.8.1:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
tw-animate-css@1.4.0: {}
|
|
||||||
|
|
||||||
undici-types@7.24.6: {}
|
undici-types@7.24.6: {}
|
||||||
|
|
||||||
vite@8.0.13(@types/node@25.9.1)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0):
|
vite@8.0.13(@types/node@25.9.1)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0):
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
/* ── Sidebar ──────────────────────────────────────────────────────── */
|
/* ── Sidebar ──────────────────────────────────────────────────────── */
|
||||||
|
|
||||||
#sidebar {
|
#sidebar {
|
||||||
/* Width only: `transition-all` would also ease background-color, making the
|
/* Mobile drawer: translate only; `transition-all` would also ease
|
||||||
sidebar lag a beat behind the untransitioned content area on theme flips. */
|
background-color and lag the sidebar behind the content on theme flips. */
|
||||||
@apply bg-sidebar-bg flex h-full w-[220px] shrink-0 flex-col overflow-hidden transition-[width] duration-200;
|
@apply bg-sidebar-bg flex h-full w-[220px] shrink-0 flex-col overflow-hidden;
|
||||||
@apply max-md:fixed max-md:top-0 max-md:left-0 max-md:z-40 max-md:w-[240px] max-md:-translate-x-full max-md:shadow-xl max-md:transition-transform;
|
@apply max-md:fixed max-md:top-0 max-md:left-0 max-md:z-40 max-md:w-[240px] max-md:-translate-x-full max-md:shadow-xl max-md:[transition:translate_.2s];
|
||||||
/* Drawer height tracks the dynamic viewport so its bottom edge meets the
|
/* Drawer height tracks the dynamic viewport so its bottom edge meets the
|
||||||
Safari toolbar smoothly instead of jumping when the toolbar shows/hides. */
|
Safari toolbar smoothly instead of jumping when the toolbar shows/hides. */
|
||||||
@apply max-md:h-dvh;
|
@apply max-md:h-dvh;
|
||||||
@@ -54,7 +54,7 @@ html[data-sidebar-collapsed="true"] #sidebar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-toggle {
|
.sidebar-toggle {
|
||||||
@apply text-sidebar-muted flex h-7 w-7 shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-0 transition-colors;
|
@apply text-sidebar-muted flex h-7 w-7 shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-0 [transition:color_.15s,background-color_.15s,border-color_.15s];
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@apply bg-sidebar-accent text-sidebar-accent-fg;
|
@apply bg-sidebar-accent text-sidebar-accent-fg;
|
||||||
@@ -82,7 +82,7 @@ html[data-sidebar-collapsed="true"] #sidebar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-nav-parent {
|
.sidebar-nav-parent {
|
||||||
@apply text-sidebar-muted flex w-full cursor-pointer appearance-none items-center justify-start gap-2.5 rounded-md border-0 bg-transparent px-2 py-1.5 text-left text-sm font-medium transition-colors duration-150;
|
@apply text-sidebar-muted flex w-full cursor-pointer appearance-none items-center justify-start gap-2.5 rounded-md border-0 bg-transparent px-2 py-1.5 text-left text-sm font-medium [transition:color_.15s,background-color_.15s,border-color_.15s];
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@apply bg-sidebar-accent text-sidebar-accent-fg;
|
@apply bg-sidebar-accent text-sidebar-accent-fg;
|
||||||
@@ -101,7 +101,7 @@ html[data-sidebar-collapsed="true"] #sidebar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-chevron {
|
.sidebar-chevron {
|
||||||
@apply ml-auto shrink-0 transition-transform duration-200;
|
@apply ml-auto shrink-0 [transition:rotate_.2s];
|
||||||
svg,
|
svg,
|
||||||
img {
|
img {
|
||||||
@apply h-3.5 w-3.5;
|
@apply h-3.5 w-3.5;
|
||||||
@@ -132,7 +132,7 @@ html[data-sidebar-collapsed="true"] #sidebar {
|
|||||||
opening bounces every row below them. visibility transitions too, so the
|
opening bounces every row below them. visibility transitions too, so the
|
||||||
collapsed links leave the tab order only once the close has finished. */
|
collapsed links leave the tab order only once the close has finished. */
|
||||||
.sidebar-accordion-sub {
|
.sidebar-accordion-sub {
|
||||||
@apply invisible grid grid-rows-[0fr] overflow-hidden opacity-0 transition-[grid-template-rows,opacity,visibility] duration-200 ease-out;
|
@apply invisible grid grid-rows-[0fr] overflow-hidden opacity-0 [transition:grid-template-rows_.2s_var(--ease-out),opacity_.2s_var(--ease-out),visibility_.2s_var(--ease-out)];
|
||||||
|
|
||||||
> * {
|
> * {
|
||||||
@apply min-h-0 self-start;
|
@apply min-h-0 self-start;
|
||||||
@@ -156,7 +156,7 @@ html[data-sidebar-collapsed="true"] #sidebar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-sub-link {
|
.sidebar-sub-link {
|
||||||
@apply text-sidebar-muted block rounded-md px-2 py-1.5 text-sm no-underline transition-colors;
|
@apply text-sidebar-muted block rounded-md px-2 py-1.5 text-sm no-underline [transition:color_.15s,background-color_.15s,border-color_.15s];
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@apply bg-sidebar-accent text-sidebar-accent-fg;
|
@apply bg-sidebar-accent text-sidebar-accent-fg;
|
||||||
@@ -178,7 +178,7 @@ html[data-sidebar-collapsed="true"] #sidebar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-collapsed-popover-link {
|
.sidebar-collapsed-popover-link {
|
||||||
@apply text-sidebar-muted mx-1 block rounded-sm px-2 py-1.5 text-sm no-underline transition-colors;
|
@apply text-sidebar-muted mx-1 block rounded-sm px-2 py-1.5 text-sm no-underline [transition:color_.15s,background-color_.15s,border-color_.15s];
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@apply bg-sidebar-accent text-sidebar-accent-fg;
|
@apply bg-sidebar-accent text-sidebar-accent-fg;
|
||||||
@@ -197,7 +197,7 @@ html[data-sidebar-collapsed="true"] #sidebar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-logout {
|
.sidebar-logout {
|
||||||
@apply text-sidebar-muted flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-sm no-underline transition-colors;
|
@apply text-sidebar-muted flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-sm no-underline [transition:color_.15s,background-color_.15s,border-color_.15s];
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@apply bg-sidebar-accent text-sidebar-accent-fg;
|
@apply bg-sidebar-accent text-sidebar-accent-fg;
|
||||||
@@ -237,6 +237,12 @@ html[data-sidebar-collapsed="true"] #sidebar {
|
|||||||
@apply border-panel-border bg-panel-bg flex flex-1 flex-col overflow-hidden rounded-xl border shadow-sm max-md:rounded-none max-md:border-none max-md:shadow-none;
|
@apply border-panel-border bg-panel-bg flex flex-1 flex-col overflow-hidden rounded-xl border shadow-sm max-md:rounded-none max-md:border-none max-md:shadow-none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The rail width eases and #main-wrapper (flex-1) follows it frame by frame.
|
||||||
|
data-sidebar-anim is set on the first toggle, so a page load never plays it. */
|
||||||
|
html[data-sidebar-anim] #sidebar {
|
||||||
|
@apply md:[transition:width_200ms_var(--ease-out)];
|
||||||
|
}
|
||||||
|
|
||||||
/* ── Card header ─────────────────────────────────────────────────── */
|
/* ── Card header ─────────────────────────────────────────────────── */
|
||||||
|
|
||||||
.card-header {
|
.card-header {
|
||||||
@@ -251,7 +257,7 @@ html[data-sidebar-collapsed="true"] #sidebar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.topbar-hamburger {
|
.topbar-hamburger {
|
||||||
@apply text-muted-foreground hidden h-8 w-8 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-0 transition-colors max-md:flex;
|
@apply text-muted-foreground hidden h-8 w-8 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-0 [transition:color_.15s,background-color_.15s,border-color_.15s] max-md:flex;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@apply bg-muted;
|
@apply bg-muted;
|
||||||
@@ -283,7 +289,7 @@ html[data-sidebar-collapsed="true"] #sidebar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
button.topbar-icon-btn {
|
button.topbar-icon-btn {
|
||||||
@apply text-muted-foreground inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-0 transition-colors;
|
@apply text-muted-foreground inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-0 [transition:color_.15s,background-color_.15s,border-color_.15s];
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@apply bg-muted text-foreground;
|
@apply bg-muted text-foreground;
|
||||||
@@ -295,16 +301,20 @@ button.topbar-icon-btn {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.topbar-indicators {
|
.topbar-indicators {
|
||||||
@apply flex items-center gap-2;
|
@apply flex items-center;
|
||||||
|
|
||||||
/* LuCI-owned spans: icon via ::before mask only (no JS / no img) */
|
/* LuCI-owned spans: icon via ::before mask only (no JS / no img) */
|
||||||
span[data-indicator] {
|
span[data-indicator] {
|
||||||
> img {
|
> img {
|
||||||
@apply hidden;
|
@apply hidden;
|
||||||
}
|
}
|
||||||
@apply text-muted-foreground relative inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-[0px] transition-colors;
|
@apply text-muted-foreground relative inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-[0px] [transition:color_.15s,background-color_.15s,border-color_.15s,width_.15s_ease-out,opacity_.15s_ease-out,margin-left_.15s_ease-out] starting:w-0 starting:opacity-0;
|
||||||
@apply before:relative before:block before:size-4 before:shrink-0 before:bg-current before:[mask-size:cover] before:[mask-position:center] before:[mask-repeat:no-repeat];
|
@apply before:relative before:block before:size-4 before:shrink-0 before:bg-current before:[mask-size:cover] before:[mask-position:center] before:[mask-repeat:no-repeat];
|
||||||
|
|
||||||
|
& + span[data-indicator] {
|
||||||
|
@apply ml-2 starting:ml-0;
|
||||||
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@apply bg-muted text-foreground;
|
@apply bg-muted text-foreground;
|
||||||
}
|
}
|
||||||
@@ -335,7 +345,7 @@ button.topbar-icon-btn {
|
|||||||
/* ── Maincontent ──────────────────────────────────────────────────── */
|
/* ── Maincontent ──────────────────────────────────────────────────── */
|
||||||
|
|
||||||
#maincontent {
|
#maincontent {
|
||||||
@apply flex-1 overflow-y-auto p-6 max-md:p-4;
|
@apply flex-1 [scrollbar-gutter:stable] overflow-y-auto p-6 max-md:p-4;
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
@apply mb-4 border-0 pl-0 text-2xl font-semibold tracking-tight;
|
@apply mb-4 border-0 pl-0 text-2xl font-semibold tracking-tight;
|
||||||
@@ -409,7 +419,7 @@ button.topbar-icon-btn {
|
|||||||
#sidebar-overlay {
|
#sidebar-overlay {
|
||||||
/* Absolute, not fixed: iOS Safari 26 tints its bars from edge-touching
|
/* Absolute, not fixed: iOS Safari 26 tints its bars from edge-touching
|
||||||
fixed elements' background-color, opacity notwithstanding. */
|
fixed elements' background-color, opacity notwithstanding. */
|
||||||
@apply bg-overlay-base-a50 pointer-events-none absolute inset-0 z-30 opacity-0 transition-opacity duration-200 md:hidden;
|
@apply bg-overlay-base-a50 pointer-events-none absolute inset-0 z-30 opacity-0 [transition:opacity_.2s] md:hidden;
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
@apply pointer-events-auto opacity-100;
|
@apply pointer-events-auto opacity-100;
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/* Everything still transitions, for 1ms: luci-base acts on transitionend
|
||||||
|
(dropdown focus, notification removal), which transition: none never fires. */
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
*,
|
||||||
|
::before,
|
||||||
|
::after {
|
||||||
|
@apply [transition-delay:0s]! [transition-duration:1ms]! [animation-delay:0s]! [animation-duration:1ms]!;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* A loading spinner is state, not decoration. */
|
||||||
|
.spinning::before {
|
||||||
|
@apply [animation-duration:1s]!;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -48,12 +48,24 @@
|
|||||||
@apply whitespace-nowrap;
|
@apply whitespace-nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fade-in {
|
@keyframes shadcn-fade-in {
|
||||||
@apply animate-in fade-in-0 fill-mode-backwards duration-400;
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Also content that lands after first paint: the view's top-level blocks
|
||||||
|
(full load and router swap; poll never re-inserts them) and a switched-in
|
||||||
|
form tab pane (the dashboard's polled tabs sit under .Dashboard). */
|
||||||
|
.fade-in,
|
||||||
|
#view > :not(.spinning),
|
||||||
|
#view > .cbi-map > .cbi-map-tabbed > [data-tab-active="true"],
|
||||||
|
.cbi-section-node-tabbed > [data-tab-active="true"] {
|
||||||
|
@apply animate-[shadcn-fade-in_250ms_ease_backwards];
|
||||||
}
|
}
|
||||||
|
|
||||||
.fade-out {
|
.fade-out {
|
||||||
@apply pointer-events-none opacity-0 transition-opacity duration-400;
|
@apply pointer-events-none opacity-0 [transition:opacity_.4s];
|
||||||
}
|
}
|
||||||
|
|
||||||
.spinning {
|
.spinning {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.zonebadge {
|
.zonebadge {
|
||||||
@apply border-secondary bg-secondary text-secondary-foreground inline-flex items-center gap-1.5 overflow-visible rounded-md border px-2 py-1 align-middle text-sm leading-normal font-semibold transition-colors duration-200;
|
@apply border-secondary bg-secondary text-secondary-foreground inline-flex items-center gap-1.5 overflow-visible rounded-md border px-2 py-1 align-middle text-sm leading-normal font-semibold [transition:color_.2s,background-color_.2s,border-color_.2s];
|
||||||
|
|
||||||
&[style*="--zone-color-rgb"] {
|
&[style*="--zone-color-rgb"] {
|
||||||
@apply border-transparent bg-[rgb(var(--zone-color-rgb),.6)]!;
|
@apply border-transparent bg-[rgb(var(--zone-color-rgb),.6)]!;
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ifacebadge {
|
.ifacebadge {
|
||||||
@apply border-border bg-label-surface text-foreground inline-flex cursor-default flex-nowrap items-center gap-1.5 rounded-lg border px-2.5 py-1.5 text-sm font-normal transition-colors duration-200;
|
@apply border-border bg-label-surface text-foreground inline-flex cursor-default flex-nowrap items-center gap-1.5 rounded-lg border px-2.5 py-1.5 text-sm font-normal [transition:color_.2s,background-color_.2s,border-color_.2s];
|
||||||
|
|
||||||
.zonebadge > & {
|
.zonebadge > & {
|
||||||
@apply rounded-md px-1.5 py-0;
|
@apply rounded-md px-1.5 py-0;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ input[type="submit"],
|
|||||||
input[type="reset"],
|
input[type="reset"],
|
||||||
.btn,
|
.btn,
|
||||||
.cbi-button {
|
.cbi-button {
|
||||||
@apply inline-flex cursor-pointer items-center justify-center gap-1.5 rounded-lg border px-3 py-1.5 text-sm font-medium transition-colors duration-200;
|
@apply inline-flex cursor-pointer items-center justify-center gap-1.5 rounded-lg border px-3 py-1.5 text-sm font-medium [transition:color_.2s,background-color_.2s,border-color_.2s];
|
||||||
|
|
||||||
&[disabled] {
|
&[disabled] {
|
||||||
@apply cursor-not-allowed opacity-40;
|
@apply cursor-not-allowed opacity-40;
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ifacebox-head {
|
.ifacebox-head {
|
||||||
@apply border-border bg-label-surface text-foreground w-full rounded-t-lg border-b px-3 py-2 text-center text-sm font-semibold transition-colors duration-200;
|
@apply border-border bg-label-surface text-foreground w-full rounded-t-lg border-b px-3 py-2 text-center text-sm font-semibold [transition:color_.2s,background-color_.2s,border-color_.2s];
|
||||||
|
|
||||||
&[style*="--zone-color-rgb"] {
|
&[style*="--zone-color-rgb"] {
|
||||||
@apply bg-[rgb(var(--zone-color-rgb),.65)]!;
|
@apply bg-[rgb(var(--zone-color-rgb),.65)]!;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
.cbi-dropdown {
|
.cbi-dropdown {
|
||||||
@apply relative inline-flex h-fit max-w-full min-w-fit shrink-0 items-center p-0 whitespace-nowrap transition-colors duration-200;
|
@apply relative inline-flex h-fit max-w-full min-w-fit shrink-0 items-center p-0 whitespace-nowrap [transition:color_.2s,background-color_.2s,border-color_.2s];
|
||||||
|
|
||||||
&[disabled] {
|
&[disabled] {
|
||||||
@apply pointer-events-none opacity-40;
|
@apply pointer-events-none opacity-40;
|
||||||
@@ -13,8 +13,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* luci-base moves focus into the list only on the ul's transitionend. */
|
||||||
> ul {
|
> ul {
|
||||||
@apply m-0 flex flex-1 list-none flex-nowrap items-center gap-0.5 overflow-hidden;
|
@apply m-0 flex flex-1 list-none flex-nowrap items-center gap-0.5 overflow-hidden opacity-99 [transition:opacity_120ms_ease-out];
|
||||||
|
|
||||||
> li {
|
> li {
|
||||||
@apply m-0 hidden list-none items-center gap-1 overflow-hidden px-2 py-1.5;
|
@apply m-0 hidden list-none items-center gap-1 overflow-hidden px-2 py-1.5;
|
||||||
@@ -48,7 +49,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.dropdown {
|
&.dropdown {
|
||||||
@apply border-border bg-panel-bg absolute left-0 z-50 w-fit min-w-full overflow-y-auto rounded-lg border shadow-lg backdrop-blur-sm;
|
@apply border-border bg-panel-bg absolute left-0 z-50 w-fit min-w-full overflow-y-auto rounded-lg border opacity-100 shadow-lg;
|
||||||
|
|
||||||
> li {
|
> li {
|
||||||
@apply text-muted-foreground hover:bg-muted min-h-9 w-full cursor-pointer px-3 py-1.5 text-sm font-medium;
|
@apply text-muted-foreground hover:bg-muted min-h-9 w-full cursor-pointer px-3 py-1.5 text-sm font-medium;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
@apply inline-flex w-max max-w-96 flex-col items-start gap-3 max-md:max-w-full;
|
@apply inline-flex w-max max-w-96 flex-col items-start gap-3 max-md:max-w-full;
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
@apply border-border bg-panel-bg pointer-events-auto relative inline-flex cursor-move flex-col items-start gap-2 self-stretch overflow-hidden rounded-lg border py-3 pr-9 pl-4 break-all shadow-sm transition-all duration-200 select-text;
|
@apply border-border bg-panel-bg pointer-events-auto relative inline-flex cursor-move flex-col items-start gap-2 self-stretch overflow-hidden rounded-lg border py-3 pr-9 pl-4 break-all shadow-sm select-text [transition:scale_.2s,opacity_.2s,box-shadow_.2s,border-color_.2s,background-color_.2s];
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
content: "×";
|
content: "×";
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.add-item {
|
.add-item {
|
||||||
@apply border-border hover:border-border-a80 hover:bg-muted-a30 inline-flex items-center gap-1.5 self-stretch rounded-lg border border-dashed bg-transparent px-1 py-1 transition-colors duration-200;
|
@apply border-border hover:border-border-a80 hover:bg-muted-a30 inline-flex items-center gap-1.5 self-stretch rounded-lg border border-dashed bg-transparent px-1 py-1 [transition:color_.2s,background-color_.2s,border-color_.2s];
|
||||||
|
|
||||||
> input {
|
> input {
|
||||||
@apply min-w-56 flex-1;
|
@apply min-w-56 flex-1;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ input[type="number"],
|
|||||||
input[type="email"],
|
input[type="email"],
|
||||||
.cbi-input-text,
|
.cbi-input-text,
|
||||||
.cbi-input {
|
.cbi-input {
|
||||||
@apply border-input bg-background text-foreground placeholder:text-muted-foreground-a70 focus:border-primary focus:ring-ring relative w-52.5 max-w-full rounded-lg border px-3 py-1.5 text-sm shadow-none transition-colors duration-200 focus:ring-2 focus:outline-none;
|
@apply border-input bg-background text-foreground placeholder:text-muted-foreground-a70 focus:border-primary focus:ring-ring relative w-52.5 max-w-full rounded-lg border px-3 py-1.5 text-sm shadow-none [transition:color_.2s,background-color_.2s,border-color_.2s] focus:ring-2 focus:outline-none;
|
||||||
|
|
||||||
.table.cbi-section-table & {
|
.table.cbi-section-table & {
|
||||||
@apply w-full;
|
@apply w-full;
|
||||||
@@ -24,7 +24,7 @@ input[type="email"],
|
|||||||
}
|
}
|
||||||
|
|
||||||
textarea {
|
textarea {
|
||||||
@apply border-input bg-background text-foreground placeholder:text-muted-foreground-a70 focus:border-primary focus:ring-ring min-h-24 w-full resize-y rounded-lg border px-3 py-2 text-sm transition-colors duration-200 focus:ring-2 focus:outline-none;
|
@apply border-input bg-background text-foreground placeholder:text-muted-foreground-a70 focus:border-primary focus:ring-ring min-h-24 w-full resize-y rounded-lg border px-3 py-2 text-sm [transition:color_.2s,background-color_.2s,border-color_.2s] focus:ring-2 focus:outline-none;
|
||||||
|
|
||||||
&[disabled] {
|
&[disabled] {
|
||||||
@apply cursor-not-allowed opacity-40;
|
@apply cursor-not-allowed opacity-40;
|
||||||
@@ -34,8 +34,8 @@ textarea {
|
|||||||
input[type="radio"],
|
input[type="radio"],
|
||||||
input[type="checkbox"] {
|
input[type="checkbox"] {
|
||||||
@apply relative mr-3 inline-block h-4 w-4 cursor-pointer appearance-none align-middle disabled:cursor-not-allowed;
|
@apply relative mr-3 inline-block h-4 w-4 cursor-pointer appearance-none align-middle disabled:cursor-not-allowed;
|
||||||
@apply before:border-input before:bg-background before:absolute before:inset-0 before:rounded before:border before:transition-colors before:duration-200;
|
@apply before:border-input before:bg-background before:absolute before:inset-0 before:rounded before:border before:[transition:background-color_.2s,border-color_.2s];
|
||||||
@apply after:bg-primary-foreground after:absolute after:inset-0 after:[mask-size:cover] after:[mask-position:center] after:[mask-repeat:no-repeat] after:opacity-0 after:transition-opacity after:duration-200;
|
@apply after:bg-primary-foreground after:absolute after:inset-0 after:[mask-size:cover] after:[mask-position:center] after:[mask-repeat:no-repeat] after:opacity-0 after:[transition:opacity_.2s];
|
||||||
@apply checked:before:border-primary checked:before:bg-primary checked:after:opacity-100;
|
@apply checked:before:border-primary checked:before:bg-primary checked:after:opacity-100;
|
||||||
@apply focus:before:ring-ring focus:before:ring-2 focus:before:outline-none;
|
@apply focus:before:ring-ring focus:before:ring-2 focus:before:outline-none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
> .modal {
|
> .modal {
|
||||||
@apply border-border bg-panel-bg flex w-full max-w-2xl flex-col gap-4 rounded-xl border p-6 break-words whitespace-normal shadow-2xl backdrop-blur-lg;
|
@apply border-border bg-panel-bg flex w-full max-w-2xl flex-col gap-4 rounded-xl border p-6 break-words whitespace-normal shadow-2xl;
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
@apply mb-0 text-center;
|
@apply mb-0 text-center;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ button.cmdk-trigger {
|
|||||||
separates title from label — 460 read cramped once rows became
|
separates title from label — 460 read cramped once rows became
|
||||||
two-anchored. */
|
two-anchored. */
|
||||||
@apply border-panel-border bg-panel-bg mt-[15vh] flex w-[min(560px,calc(100vw-32px))] flex-col overflow-hidden rounded-xl border shadow-2xl;
|
@apply border-panel-border bg-panel-bg mt-[15vh] flex w-[min(560px,calc(100vw-32px))] flex-col overflow-hidden rounded-xl border shadow-2xl;
|
||||||
@apply transition-[opacity,translate] duration-150 ease-out starting:-translate-y-1.5 starting:opacity-0;
|
@apply [transition:opacity_.15s_var(--ease-out),translate_.15s_var(--ease-out)] starting:-translate-y-1.5 starting:opacity-0;
|
||||||
@apply max-md:mt-0 max-md:h-dvh max-md:w-full max-md:rounded-none max-md:border-0 max-md:pt-[env(safe-area-inset-top)] max-md:shadow-none max-md:transition-none;
|
@apply max-md:mt-0 max-md:h-dvh max-md:w-full max-md:rounded-none max-md:border-0 max-md:pt-[env(safe-area-inset-top)] max-md:shadow-none max-md:transition-none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
@apply before:text-foreground before:absolute before:inset-x-0 before:top-1/2 before:-translate-y-1/2 before:text-center before:text-[10px] before:leading-none before:whitespace-nowrap before:content-[attr(title)];
|
@apply before:text-foreground before:absolute before:inset-x-0 before:top-1/2 before:-translate-y-1/2 before:text-center before:text-[10px] before:leading-none before:whitespace-nowrap before:content-[attr(title)];
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
@apply from-progress-bar-start to-progress-bar-end h-full bg-gradient-to-r transition-all duration-300;
|
@apply from-progress-bar-start to-progress-bar-end h-full bg-gradient-to-r [transition:width_.3s];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
DOM. Only width and opacity move. Reduced motion drops the transitions,
|
DOM. Only width and opacity move. Reduced motion drops the transitions,
|
||||||
not the bar. */
|
not the bar. */
|
||||||
#luci-nav-progress {
|
#luci-nav-progress {
|
||||||
@apply from-progress-bar-start to-progress-bar-end pointer-events-none fixed top-0 left-0 z-80 h-0.5 w-0 bg-linear-to-r transition-[width] duration-300 ease-out;
|
@apply from-progress-bar-start to-progress-bar-end pointer-events-none fixed top-0 left-0 z-80 h-0.5 w-0 bg-linear-to-r [transition:width_.3s_var(--ease-out)];
|
||||||
|
|
||||||
&[data-state="done"] {
|
&[data-state="done"] {
|
||||||
@apply opacity-0 [transition:width_.3s_ease-out,opacity_.15s_ease-in_.15s];
|
@apply opacity-0 [transition:width_.3s_ease-out,opacity_.15s_ease-in_.15s];
|
||||||
@@ -32,6 +32,6 @@
|
|||||||
|
|
||||||
/* Outgoing page while the router renders the next one. */
|
/* Outgoing page while the router renders the next one. */
|
||||||
#view.view-leaving {
|
#view.view-leaving {
|
||||||
@apply cursor-progress opacity-60 transition-opacity duration-150;
|
@apply cursor-progress opacity-60 [transition:opacity_.15s];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
select {
|
select {
|
||||||
@apply border-input bg-background text-foreground focus:border-primary focus:ring-ring max-w-full min-w-52.5 appearance-none rounded-lg border px-3 py-1.5 pr-9 text-sm transition-colors duration-200 focus:ring-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-40 md:max-w-100;
|
@apply border-input bg-background text-foreground focus:border-primary focus:ring-ring max-w-full min-w-52.5 appearance-none rounded-lg border px-3 py-1.5 pr-9 text-sm [transition:color_.2s,background-color_.2s,border-color_.2s] focus:ring-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-40 md:max-w-100;
|
||||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238888a0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238888a0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: right 0.6rem center;
|
background-position: right 0.6rem center;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ table.table,
|
|||||||
|
|
||||||
tr,
|
tr,
|
||||||
.tr {
|
.tr {
|
||||||
@apply hover:bg-label-surface max-md:border-border transition-colors duration-200 max-md:flex max-md:flex-wrap max-md:border-b max-md:px-2 max-md:py-2;
|
@apply hover:bg-label-surface max-md:border-border [transition:background-color_.2s] max-md:flex max-md:flex-wrap max-md:border-b max-md:px-2 max-md:py-2;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
&:not([data-title]) {
|
&:not([data-title]) {
|
||||||
@@ -74,7 +74,7 @@ table.table,
|
|||||||
|
|
||||||
th,
|
th,
|
||||||
.th {
|
.th {
|
||||||
@apply border-border bg-label-surface border-b px-3 py-2.5 text-left text-sm font-medium backdrop-blur-sm max-md:hidden;
|
@apply border-border bg-label-surface border-b px-3 py-2.5 text-left text-sm font-medium max-md:hidden;
|
||||||
|
|
||||||
&[width="100%"] {
|
&[width="100%"] {
|
||||||
@apply w-full;
|
@apply w-full;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
> a {
|
> a {
|
||||||
@apply text-muted-foreground hover:text-foreground focus-visible:ring-ring-a50 inline-flex items-center justify-center rounded-md border border-transparent px-3 py-1 text-sm font-medium whitespace-nowrap no-underline transition-all focus-visible:ring-[3px] focus-visible:outline-none;
|
@apply text-muted-foreground hover:text-foreground focus-visible:ring-ring-a50 inline-flex items-center justify-center rounded-md border border-transparent px-3 py-1 text-sm font-medium whitespace-nowrap no-underline [transition:color_.15s,background-color_.15s,border-color_.15s,box-shadow_.15s] focus-visible:ring-[3px] focus-visible:outline-none;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.cbi-tab > a {
|
&.cbi-tab > a {
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
@apply border-border relative flex items-center gap-0 overflow-x-auto border-b;
|
@apply border-border relative flex items-center gap-0 overflow-x-auto border-b;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@apply text-muted-foreground hover:text-foreground block px-6 py-3 text-center text-sm font-medium whitespace-nowrap transition-colors duration-200 hover:no-underline;
|
@apply text-muted-foreground hover:text-foreground block px-6 py-3 text-center text-sm font-medium whitespace-nowrap [transition:color_.2s,background-color_.2s,border-color_.2s] hover:no-underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
> li.active {
|
> li.active {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
`transition-all` would animate the inset and make the bubble fly in from
|
`transition-all` would animate the inset and make the bubble fly in from
|
||||||
off-screen. `w-max` sizes the bubble by its content instead of the narrow
|
off-screen. `w-max` sizes the bubble by its content instead of the narrow
|
||||||
anchor's containing block (which squeezed it to one word per line). */
|
anchor's containing block (which squeezed it to one word per line). */
|
||||||
@apply border-border-a60 bg-panel-bg text-foreground absolute inset-s-[-10000px] z-50 w-max max-w-xs scale-95 rounded-lg border px-3 py-2 text-xs break-normal whitespace-normal opacity-0 shadow-lg backdrop-blur-sm transition-[visibility,opacity,scale] duration-200 ease-out;
|
@apply border-border-a60 bg-panel-bg text-foreground absolute inset-s-[-10000px] z-50 w-max max-w-xs scale-95 rounded-lg border px-3 py-2 text-xs break-normal whitespace-normal opacity-0 shadow-lg [transition:visibility_.2s_var(--ease-out),opacity_.2s_var(--ease-out),scale_.2s_var(--ease-out)];
|
||||||
|
|
||||||
&.error {
|
&.error {
|
||||||
@apply border-destructive-a40 bg-destructive text-destructive-fg;
|
@apply border-destructive-a40 bg-destructive text-destructive-fg;
|
||||||
@@ -25,10 +25,10 @@
|
|||||||
|
|
||||||
.cbi-tooltip-container,
|
.cbi-tooltip-container,
|
||||||
[data-tooltip] {
|
[data-tooltip] {
|
||||||
@apply relative inline-block cursor-help whitespace-nowrap underline decoration-current decoration-dotted underline-offset-2 transition-all duration-200;
|
@apply relative inline-block cursor-help whitespace-nowrap underline decoration-current decoration-dotted underline-offset-2;
|
||||||
|
|
||||||
.cbi-tooltip {
|
.cbi-tooltip {
|
||||||
@apply invisible scale-95 opacity-0 transition-[visibility,opacity,scale] duration-200 ease-out;
|
@apply invisible scale-95 opacity-0 [transition:visibility_.2s_var(--ease-out),opacity_.2s_var(--ease-out),scale_.2s_var(--ease-out)];
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover .cbi-tooltip {
|
&:hover .cbi-tooltip {
|
||||||
|
|||||||
@@ -1,23 +1,6 @@
|
|||||||
/* Cross-document view transitions: same-origin full-page navigations
|
/* No view transitions: swapped and freshly loaded content fades in instead
|
||||||
cross-fade instead of hard-flashing. Progressive enhancement — browsers
|
(_utilities.css). A captured page would crossfade two layouts on top of
|
||||||
without support (e.g. Firefox) keep plain instant navigation. */
|
that fade, and a cross-document one would only fade to the spinner. */
|
||||||
|
:root {
|
||||||
@view-transition {
|
view-transition-name: none;
|
||||||
navigation: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The sidebar persists across pages, so it gets its own snapshot group and
|
|
||||||
stays visually static while only the rest of the page transitions. The
|
|
||||||
topbar deliberately has no group: its snapshot would render in the top
|
|
||||||
layer, unclipped by .content-card's rounded corners (squaring them for
|
|
||||||
the whole transition), and its pixels are identical across pages anyway
|
|
||||||
so the root cross-fade already keeps it visually static. */
|
|
||||||
#sidebar {
|
|
||||||
view-transition-name: shadcn-sidebar;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion: reduce) {
|
|
||||||
@view-transition {
|
|
||||||
navigation: none;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -4,18 +4,44 @@
|
|||||||
* Licensed to the public under the Apache License 2.0.
|
* Licensed to the public under the Apache License 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@import "tailwindcss";
|
/* Theme variables and @apply'd utilities only: no Preflight, no scanned
|
||||||
|
classes. The reset below covers what sysauth.ut renders. */
|
||||||
|
@layer theme, base, components, utilities;
|
||||||
|
@import "tailwindcss/theme.css" layer(theme);
|
||||||
|
@import "tailwindcss/utilities.css" layer(utilities) source(none);
|
||||||
|
|
||||||
@import "./inter.css";
|
@import "./inter.css";
|
||||||
@import "./_tokens.css";
|
@import "./_tokens.css";
|
||||||
@import "./_shared.css";
|
@import "./_shared.css";
|
||||||
|
|
||||||
/* See main.css: keep dev-only tooling out of Tailwind's source detection. */
|
|
||||||
@source not "../../vite.config.ts";
|
|
||||||
@source not "../../scripts/*.client.js";
|
|
||||||
|
|
||||||
@custom-variant dark (&:where([data-darkmode=true], [data-darkmode=true] *));
|
@custom-variant dark (&:where([data-darkmode=true], [data-darkmode=true] *));
|
||||||
|
|
||||||
|
@layer base {
|
||||||
|
*,
|
||||||
|
::before,
|
||||||
|
::after {
|
||||||
|
@apply box-border;
|
||||||
|
}
|
||||||
|
|
||||||
|
body,
|
||||||
|
p {
|
||||||
|
@apply m-0;
|
||||||
|
}
|
||||||
|
|
||||||
|
button,
|
||||||
|
input {
|
||||||
|
@apply m-0 border-0 bg-transparent p-0 [color:inherit] [font:inherit];
|
||||||
|
}
|
||||||
|
|
||||||
|
::placeholder {
|
||||||
|
@apply opacity-100;
|
||||||
|
}
|
||||||
|
|
||||||
|
[hidden] {
|
||||||
|
@apply hidden!;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
@apply bg-background text-foreground font-sans text-sm;
|
@apply bg-background text-foreground font-sans text-sm;
|
||||||
}
|
}
|
||||||
@@ -128,7 +154,7 @@ html {
|
|||||||
|
|
||||||
/* Glass input wrapper — matches sign-in.tsx GlassInputWrapper */
|
/* Glass input wrapper — matches sign-in.tsx GlassInputWrapper */
|
||||||
.login-input-glass {
|
.login-input-glass {
|
||||||
@apply border-border bg-foreground-a5 relative rounded-2xl border transition-colors;
|
@apply border-border bg-foreground-a5 relative rounded-2xl border [transition:color_.15s,background-color_.15s,border-color_.15s];
|
||||||
backdrop-filter: blur(4px);
|
backdrop-filter: blur(4px);
|
||||||
|
|
||||||
&:focus-within {
|
&:focus-within {
|
||||||
@@ -152,7 +178,7 @@ html {
|
|||||||
@apply absolute inset-y-0 right-0 flex cursor-pointer items-center border-0 bg-transparent px-3;
|
@apply absolute inset-y-0 right-0 flex cursor-pointer items-center border-0 bg-transparent px-3;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
@apply h-4 w-4 opacity-40 transition-opacity;
|
@apply h-4 w-4 opacity-40 [transition:opacity_.15s];
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover img {
|
&:hover img {
|
||||||
@@ -161,7 +187,7 @@ html {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.login-submit {
|
.login-submit {
|
||||||
@apply bg-primary text-primary-foreground hover:bg-primary-hover mt-4 w-full cursor-pointer rounded-2xl border-0 py-3.5 text-sm font-medium transition-colors;
|
@apply bg-primary text-primary-foreground hover:bg-primary-hover mt-4 w-full cursor-pointer rounded-2xl border-0 py-3.5 text-sm font-medium [transition:color_.15s,background-color_.15s,border-color_.15s];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Footer ── */
|
/* ── Footer ── */
|
||||||
@@ -170,7 +196,7 @@ html {
|
|||||||
@apply text-muted-foreground absolute right-0 bottom-5 left-0 px-6 text-center text-xs;
|
@apply text-muted-foreground absolute right-0 bottom-5 left-0 px-6 text-center text-xs;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@apply text-muted-foreground hover:text-foreground underline underline-offset-2 transition-colors;
|
@apply text-muted-foreground hover:text-foreground underline underline-offset-2 [transition:color_.15s,background-color_.15s,border-color_.15s];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
@import "tailwindcss";
|
@import "tailwindcss";
|
||||||
@import "./inter.css";
|
@import "./inter.css";
|
||||||
@import "./_tokens.css";
|
@import "./_tokens.css";
|
||||||
@import "tw-animate-css";
|
|
||||||
|
|
||||||
/* Dev-only tooling holds prose and plain CSS whose bare words (static,
|
/* Dev-only tooling holds prose and plain CSS whose bare words (static,
|
||||||
transition, backdrop-filter, …) Tailwind's automatic source detection would
|
transition, backdrop-filter, …) Tailwind's automatic source detection would
|
||||||
@@ -41,3 +40,4 @@
|
|||||||
@import "./components/_router.css";
|
@import "./components/_router.css";
|
||||||
@import "./_utilities.css";
|
@import "./_utilities.css";
|
||||||
@import "./_shared.css";
|
@import "./_shared.css";
|
||||||
|
@import "./_reduced-motion.css";
|
||||||
@@ -522,11 +522,6 @@ return baseclass.extend({
|
|||||||
];
|
];
|
||||||
|
|
||||||
const isMac = /Mac|iP(ad|hone|od)/.test(navigator.platform);
|
const isMac = /Mac|iP(ad|hone|od)/.test(navigator.platform);
|
||||||
const keyEl = trigger.querySelector(".cmdk-trigger-key");
|
|
||||||
if (keyEl) {
|
|
||||||
keyEl.textContent = isMac ? "⌘K" : "Ctrl+K";
|
|
||||||
keyEl.hidden = false;
|
|
||||||
}
|
|
||||||
trigger.setAttribute("aria-keyshortcuts", isMac ? "Meta+K" : "Control+K");
|
trigger.setAttribute("aria-keyshortcuts", isMac ? "Meta+K" : "Control+K");
|
||||||
trigger.addEventListener("click", () => this.openPalette());
|
trigger.addEventListener("click", () => this.openPalette());
|
||||||
|
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ return baseclass.extend({
|
|||||||
"data-sidebar-collapsed",
|
"data-sidebar-collapsed",
|
||||||
next ? "true" : "false",
|
next ? "true" : "false",
|
||||||
);
|
);
|
||||||
|
document.documentElement.setAttribute("data-sidebar-anim", "");
|
||||||
localStorage.setItem(SIDEBAR_KEY, next);
|
localStorage.setItem(SIDEBAR_KEY, next);
|
||||||
|
|
||||||
this._hideCollapsedPopover();
|
this._hideCollapsedPopover();
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
import assert from "node:assert/strict";
|
||||||
|
import { readFileSync, statSync } from "node:fs";
|
||||||
|
import { resolve } from "node:path";
|
||||||
|
import test from "node:test";
|
||||||
|
|
||||||
|
const output = resolve(import.meta.dirname, "../../htdocs/luci-static");
|
||||||
|
const read = (path) => readFileSync(resolve(output, path), "utf8");
|
||||||
|
const bytes = (path) => statSync(resolve(output, path)).size;
|
||||||
|
|
||||||
|
test("pruned login.css keeps every consumed variable resolvable", () => {
|
||||||
|
const css = read("shadcn/login.css");
|
||||||
|
const declared = new Set(
|
||||||
|
[...css.matchAll(/[{;](--[\w-]+):/g)].map((m) => m[1]),
|
||||||
|
);
|
||||||
|
const registered = new Set(
|
||||||
|
[...css.matchAll(/@property\s+(--[\w-]+)/g)].map((m) => m[1]),
|
||||||
|
);
|
||||||
|
// sysauth.ut declares it inline at render time.
|
||||||
|
const injected = new Set(["--login-bg-image"]);
|
||||||
|
|
||||||
|
const unresolvable = [];
|
||||||
|
for (const [, name, delim] of css.matchAll(/var\(\s*(--[\w-]+)\s*([,)])/g))
|
||||||
|
if (
|
||||||
|
delim !== "," &&
|
||||||
|
!declared.has(name) &&
|
||||||
|
!registered.has(name) &&
|
||||||
|
!injected.has(name)
|
||||||
|
)
|
||||||
|
unresolvable.push(name);
|
||||||
|
assert.deepEqual([...new Set(unresolvable)], []);
|
||||||
|
|
||||||
|
for (const adminOnly of ["--sidebar-bg:", "--terminal-foreground:"])
|
||||||
|
assert.ok(!css.includes(adminOnly), `${adminOnly} should be pruned`);
|
||||||
|
assert.ok(
|
||||||
|
css.includes("-webkit-backdrop-filter"),
|
||||||
|
"prefixes must survive the prune",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
// uhttpd serves identity bytes, so raw size is what every cold load pays.
|
||||||
|
// Set 2026-09 from main 129213, login 10521, menu 15859, router 15771,
|
||||||
|
// sidebar 6107, Inter latin 48256, logo 258.
|
||||||
|
test("production assets stay within raw-transfer budgets", () => {
|
||||||
|
const main = bytes("shadcn/main.css");
|
||||||
|
const login = bytes("shadcn/login.css");
|
||||||
|
const menu = bytes("resources/menu-shadcn.js");
|
||||||
|
const router = bytes("resources/router-shadcn.js");
|
||||||
|
const sidebar = bytes("resources/sidebar-shadcn.js");
|
||||||
|
const font = bytes("shadcn/inter-latin-wght-normal.woff2");
|
||||||
|
const logo = bytes("shadcn/images/logo.svg");
|
||||||
|
|
||||||
|
assert.ok(main <= 130_000, `main.css ${main} B exceeds 130 KB`);
|
||||||
|
assert.ok(login <= 11_000, `login.css ${login} B exceeds 11 KB`);
|
||||||
|
assert.ok(menu <= 16_000, `menu-shadcn.js ${menu} B exceeds 16 KB`);
|
||||||
|
assert.ok(router <= 16_000, `router-shadcn.js ${router} B exceeds 16 KB`);
|
||||||
|
assert.ok(sidebar <= 6_500, `sidebar-shadcn.js ${sidebar} B exceeds 6.5 KB`);
|
||||||
|
assert.ok(
|
||||||
|
main + menu + router + sidebar + font <= 216_000,
|
||||||
|
"admin assets exceed 216 KB",
|
||||||
|
);
|
||||||
|
assert.ok(login + font + logo <= 60_000, "login assets exceed 60 KB");
|
||||||
|
});
|
||||||
@@ -14,6 +14,7 @@ import { luciDev, injectMockBar } from "@eamonxg/luci-theme-devkit/vite/dev";
|
|||||||
import { existsSync, readdirSync } from "fs";
|
import { existsSync, readdirSync } from "fs";
|
||||||
import { mkdir, readdir, readFile, writeFile } from "fs/promises";
|
import { mkdir, readdir, readFile, writeFile } from "fs/promises";
|
||||||
import { dirname, join, resolve } from "path";
|
import { dirname, join, resolve } from "path";
|
||||||
|
import { transform as lightningcssTransform } from "lightningcss";
|
||||||
import { minify as terserMinify } from "terser";
|
import { minify as terserMinify } from "terser";
|
||||||
import { defineConfig, loadEnv, Plugin, ResolvedConfig } from "vite";
|
import { defineConfig, loadEnv, Plugin, ResolvedConfig } from "vite";
|
||||||
import config from "./luci-theme.config.js";
|
import config from "./luci-theme.config.js";
|
||||||
@@ -108,6 +109,68 @@ function createPatchAliasPlugin(): Plugin {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* login.css imports the full token sheet but the login page consumes a
|
||||||
|
fraction of it. Drop every custom property (and --tw-* @property) no var()
|
||||||
|
can reach, following --a: var(--b) chains; consumers are never touched, so
|
||||||
|
sysauth.ut's inline --login-bg-image keeps working. Same as aurora's. */
|
||||||
|
function createLoginCssPrunePlugin(): Plugin {
|
||||||
|
return {
|
||||||
|
name: "login-css-prune",
|
||||||
|
apply: "build",
|
||||||
|
enforce: "post",
|
||||||
|
async closeBundle() {
|
||||||
|
const path = resolve(BUILD_OUTPUT, "shadcn/login.css");
|
||||||
|
if (!existsSync(path)) return;
|
||||||
|
const css = await readFile(path, "utf-8");
|
||||||
|
|
||||||
|
const VALUE = `(?:"[^"]*"|'[^']*'|[^;{}"'])*`;
|
||||||
|
const roots = new Set<string>();
|
||||||
|
const edges = new Map<string, Set<string>>();
|
||||||
|
for (const [, name, value] of css.matchAll(
|
||||||
|
new RegExp(`(?<=[{;])(--[\\w-]+|[a-zA-Z-]+):(${VALUE})`, "g"),
|
||||||
|
)) {
|
||||||
|
const refs = [...value.matchAll(/var\(\s*(--[\w-]+)/g)].map(
|
||||||
|
(m) => m[1],
|
||||||
|
);
|
||||||
|
if (!name.startsWith("--")) refs.forEach((r) => roots.add(r));
|
||||||
|
else {
|
||||||
|
const deps = edges.get(name) ?? new Set<string>();
|
||||||
|
refs.forEach((r) => deps.add(r));
|
||||||
|
edges.set(name, deps);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const keep = new Set(roots);
|
||||||
|
const stack = [...roots];
|
||||||
|
while (stack.length) {
|
||||||
|
for (const dep of edges.get(stack.pop()!) ?? []) {
|
||||||
|
if (!keep.has(dep)) {
|
||||||
|
keep.add(dep);
|
||||||
|
stack.push(dep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const pruned = css
|
||||||
|
.replace(
|
||||||
|
new RegExp(`(?<=[{;])(--[\\w-]+):${VALUE};?`, "g"),
|
||||||
|
(decl, name) => (keep.has(name) ? decl : ""),
|
||||||
|
)
|
||||||
|
.replace(/@property\s+(--[\w-]+)\{[^{}]*\}/g, (rule, name) =>
|
||||||
|
keep.has(name) ? rule : "",
|
||||||
|
)
|
||||||
|
.replace(/(?<=[{}])[^{}@]+\{\}/g, "");
|
||||||
|
|
||||||
|
// Parse only: a re-minify without Vite's targets would strip the
|
||||||
|
// -webkit- prefixes older Safari still needs.
|
||||||
|
lightningcssTransform({
|
||||||
|
filename: "login.css",
|
||||||
|
code: Buffer.from(pruned),
|
||||||
|
});
|
||||||
|
await writeFile(path, pruned);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export default defineConfig(({ mode, command }) => {
|
export default defineConfig(({ mode, command }) => {
|
||||||
const env = loadEnv(mode, CURRENT_DIR);
|
const env = loadEnv(mode, CURRENT_DIR);
|
||||||
// VITE_OPENWRT_HOST is just the router address — a bare IP/hostname like
|
// VITE_OPENWRT_HOST is just the router address — a bare IP/hostname like
|
||||||
@@ -133,6 +196,7 @@ export default defineConfig(({ mode, command }) => {
|
|||||||
...luciDev(config, { sshHost: OPENWRT_SSH_HOST }),
|
...luciDev(config, { sshHost: OPENWRT_SSH_HOST }),
|
||||||
createLuciJsCompressPlugin(),
|
createLuciJsCompressPlugin(),
|
||||||
createPatchAliasPlugin(),
|
createPatchAliasPlugin(),
|
||||||
|
createLoginCssPrunePlugin(),
|
||||||
],
|
],
|
||||||
build: {
|
build: {
|
||||||
outDir: BUILD_OUTPUT,
|
outDir: BUILD_OUTPUT,
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk
|
|||||||
LUCI_TITLE:=A modern sidebar LuCI theme for OpenWrt, built with shadcn/ui design language.
|
LUCI_TITLE:=A modern sidebar LuCI theme for OpenWrt, built with shadcn/ui design language.
|
||||||
LUCI_DEPENDS:=+luci-base
|
LUCI_DEPENDS:=+luci-base
|
||||||
|
|
||||||
PKG_VERSION:=0.5.4
|
PKG_VERSION:=0.5.10
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=4
|
||||||
PKG_LICENSE:=Apache-2.0
|
PKG_LICENSE:=Apache-2.0
|
||||||
|
|
||||||
LUCI_MINIFY_CSS:=
|
LUCI_MINIFY_CSS:=
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
"use strict";"require baseclass";"require ui";const ICON_MAP={status:"activity",system:"settings",network:"network",services:"layers",nas:"hard-drive",control:"sliders-horizontal",vpn:"shield",docker:"container",statistics:"chart-bar",nlbw:"gauge",asterisk:"phone",logout:"log-out",default:"layout-dashboard"},CACHE_KEY="shadcn.sidebar.cache",RECENTS_KEY="shadcn.palette.recents";return baseclass.extend({__init__(){ui.menu.load().then(e=>{this.renderSidebarChrome(),this.render(e),this.initUciIndicator(),this.cacheSidebar(),window.addEventListener("pagehide",()=>this.cacheSidebar()),document.dispatchEvent(new Event("shadcn-sidebar-ready"))})},cacheSidebar(){if(window.shadcnSuppressSidebarCache)return;const e=document.getElementById("sidebar"),t=document.getElementById("sidebar-nav");if(e&&t)try{sessionStorage.setItem(CACHE_KEY,JSON.stringify({v:1,lang:document.documentElement.lang||"",html:e.innerHTML,scroll:t.scrollTop||0}))}catch(e){}},_mediaBase(){const e=document.documentElement.getAttribute("data-shadcn-media"),t=document.getElementById("sidebar"),a=t&&t.getAttribute("data-media");return String(e||a||"/luci-static/shadcn").replace(/\/$/,"")},_sectionIcon(e,t){const a=String(e||"").toLowerCase(),s=ICON_MAP[a]||ICON_MAP.default;return this._iconFile(s,t)},_isLogoutMenuItem(e){const t=String(e&&null!=e.name?e.name:"").toLowerCase();return"logout"===t||t.endsWith("/logout")},_iconFile(e,t){const a=this._mediaBase();return E("img",{src:`${a}/icons/${e}.svg`,width:String(t),height:String(t),alt:"",loading:"lazy",class:"shadcn-icon"})},_resolveMenuBranch(e){const t=L.env.dispatchpath||[],a=L.env.requestpath||[],s=ui.menu.getChildren(e);let n=a.length&&a[0]||t.length&&t[0]||"admin",i=null;for(let e=0;e<s.length;e++)if(s[e].name===n){i=s[e];break}return i||1!==s.length||(i=s[0],n=i.name),i||(i=e),{branch:i,branchUrl:i.name||n}},renderSidebarChrome(){const e=document.getElementById("sidebar");if(!e)return;if("1"===e.getAttribute("data-shadcn-built")){const t=e.querySelector(".sidebar-brand-text"),a=e.getAttribute("data-hostname");return void(t&&a&&t.textContent!==a&&(t.textContent=a))}e.setAttribute("data-shadcn-built","1");const t=this._mediaBase(),a=e.getAttribute("data-hostname")||"Shadcn";for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(E("div",{class:"sidebar-header"},[E("a",{class:"sidebar-brand",href:"/"},[E("img",{class:"sidebar-logo",src:`${t}/images/logo.svg`,alt:"Shadcn",width:"24",height:"24"}),E("span",{class:"sidebar-brand-text"},[a])]),E("button",{id:"sidebar-toggle-btn",class:"sidebar-toggle",type:"button","aria-label":_("Navigation")},[E("span",{class:"icon-collapse"},[this._iconFile("panel-left-close",16)]),E("span",{class:"icon-expand"},[this._iconFile("panel-left-open",16)])])])),e.appendChild(E("nav",{class:"sidebar-nav",id:"sidebar-nav"})),e.appendChild(E("div",{class:"sidebar-footer",id:"sidebar-footer",hidden:""}))},render(e){const{branch:t,branchUrl:a}=this._resolveMenuBranch(e);this.tree=e,this.branch=t,this.branchUrl=a,this.renderSidebarNav(t,a),this.renderBreadcrumb(t,a),this.initPalette(t,a),this.renderTabs(e)},renderTabs(e){const t=L.env.dispatchpath||[],a=document.getElementById("tabmenu");a&&(a.innerHTML="",a.style.display="none");let s=e,n="";if(t.length>=3){for(var i=0;i<3&&s;i++){const e=t[i];if(!s.children||!s.children[e])break;s=s.children[e],n=n+(n?"/":"")+e}s&&this.renderTabMenu(s,n)}},syncRoute(){if(!this.tree)return;const e=document.getElementById("sidebar");if(e){e.querySelectorAll(".active").forEach(e=>e.classList.remove("active"));const t=new URL(L.url(...(L.env.dispatchpath||[]).slice(0,3)),location.href).pathname;let a=null,s=-1;if(e.querySelectorAll("a.sidebar-sub-link, a.sidebar-nav-parent, a.sidebar-logout").forEach(e=>{const n=e.pathname;(t===n||t.startsWith(n+"/"))&&n.length>s&&(a=e,s=n.length)}),a){const t=a.closest(".sidebar-sub-item");if(t){t.classList.add("active");const s=a.closest(".sidebar-accordion-item");s&&(s.classList.add("active"),"true"!==e.getAttribute("data-collapsed")&&e.querySelectorAll(".sidebar-accordion-item").forEach(e=>e.setAttribute("data-open",e===s?"true":"false")))}else a.classList.contains("sidebar-logout")?a.classList.add("active"):a.closest(".sidebar-nav-item")?.classList.add("active")}}this.renderBreadcrumb(this.branch,this.branchUrl),this.renderTabs(this.tree)},closeSurfaces(){this.closePalette(),window.ShadcnSidebar?.closeDrawer?.(),window.ShadcnSidebar?._hideCollapsedPopover?.()},renderSidebarNav(e,t){const a=document.getElementById("sidebar-nav"),s=document.getElementById("sidebar-footer");if(!a)return;const n=ui.menu.getChildren(e),i=L.env.dispatchpath||[],r="1"===document.getElementById("sidebar")?.getAttribute("data-shadcn-restored"),l=r?Array.from(a.querySelectorAll('.sidebar-accordion-item[data-open="true"]'),e=>e.getAttribute("data-section")):null,c=r?a.scrollTop:0;a.innerHTML="",s&&(s.innerHTML="",s.hidden=!0),n.forEach(e=>{if(this._isLogoutMenuItem(e)&&s){const a=i[1]==e.name,n=this._sectionIcon(e.name,18);returLine truncated
|
"use strict";"require baseclass";"require ui";const ICON_MAP={status:"activity",system:"settings",network:"network",services:"layers",nas:"hard-drive",control:"sliders-horizontal",vpn:"shield",docker:"container",statistics:"chart-bar",nlbw:"gauge",asterisk:"phone",logout:"log-out",default:"layout-dashboard"},CACHE_KEY="shadcn.sidebar.cache",RECENTS_KEY="shadcn.palette.recents";return baseclass.extend({__init__(){ui.menu.load().then(e=>{this.renderSidebarChrome(),this.render(e),this.initUciIndicator(),this.cacheSidebar(),window.addEventListener("pagehide",()=>this.cacheSidebar()),document.dispatchEvent(new Event("shadcn-sidebar-ready"))})},cacheSidebar(){if(window.shadcnSuppressSidebarCache)return;const e=document.getElementById("sidebar"),t=document.getElementById("sidebar-nav");if(e&&t)try{sessionStorage.setItem(CACHE_KEY,JSON.stringify({v:1,lang:document.documentElement.lang||"",html:e.innerHTML,scroll:t.scrollTop||0}))}catch(e){}},_mediaBase(){const e=document.documentElement.getAttribute("data-shadcn-media"),t=document.getElementById("sidebar"),a=t&&t.getAttribute("data-media");return String(e||a||"/luci-static/shadcn").replace(/\/$/,"")},_sectionIcon(e,t){const a=String(e||"").toLowerCase(),s=ICON_MAP[a]||ICON_MAP.default;return this._iconFile(s,t)},_isLogoutMenuItem(e){const t=String(e&&null!=e.name?e.name:"").toLowerCase();return"logout"===t||t.endsWith("/logout")},_iconFile(e,t){const a=this._mediaBase();return E("img",{src:`${a}/icons/${e}.svg`,width:String(t),height:String(t),alt:"",loading:"lazy",class:"shadcn-icon"})},_resolveMenuBranch(e){const t=L.env.dispatchpath||[],a=L.env.requestpath||[],s=ui.menu.getChildren(e);let n=a.length&&a[0]||t.length&&t[0]||"admin",i=null;for(let e=0;e<s.length;e++)if(s[e].name===n){i=s[e];break}return i||1!==s.length||(i=s[0],n=i.name),i||(i=e),{branch:i,branchUrl:i.name||n}},renderSidebarChrome(){const e=document.getElementById("sidebar");if(!e)return;if("1"===e.getAttribute("data-shadcn-built")){const t=e.querySelector(".sidebar-brand-text"),a=e.getAttribute("data-hostname");return void(t&&a&&t.textContent!==a&&(t.textContent=a))}e.setAttribute("data-shadcn-built","1");const t=this._mediaBase(),a=e.getAttribute("data-hostname")||"Shadcn";for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(E("div",{class:"sidebar-header"},[E("a",{class:"sidebar-brand",href:"/"},[E("img",{class:"sidebar-logo",src:`${t}/images/logo.svg`,alt:"Shadcn",width:"24",height:"24"}),E("span",{class:"sidebar-brand-text"},[a])]),E("button",{id:"sidebar-toggle-btn",class:"sidebar-toggle",type:"button","aria-label":_("Navigation")},[E("span",{class:"icon-collapse"},[this._iconFile("panel-left-close",16)]),E("span",{class:"icon-expand"},[this._iconFile("panel-left-open",16)])])])),e.appendChild(E("nav",{class:"sidebar-nav",id:"sidebar-nav"})),e.appendChild(E("div",{class:"sidebar-footer",id:"sidebar-footer",hidden:""}))},render(e){const{branch:t,branchUrl:a}=this._resolveMenuBranch(e);this.tree=e,this.branch=t,this.branchUrl=a,this.renderSidebarNav(t,a),this.renderBreadcrumb(t,a),this.initPalette(t,a),this.renderTabs(e)},renderTabs(e){const t=L.env.dispatchpath||[],a=document.getElementById("tabmenu");a&&(a.innerHTML="",a.style.display="none");let s=e,n="";if(t.length>=3){for(var i=0;i<3&&s;i++){const e=t[i];if(!s.children||!s.children[e])break;s=s.children[e],n=n+(n?"/":"")+e}s&&this.renderTabMenu(s,n)}},syncRoute(){if(!this.tree)return;const e=document.getElementById("sidebar");if(e){e.querySelectorAll(".active").forEach(e=>e.classList.remove("active"));const t=new URL(L.url(...(L.env.dispatchpath||[]).slice(0,3)),location.href).pathname;let a=null,s=-1;if(e.querySelectorAll("a.sidebar-sub-link, a.sidebar-nav-parent, a.sidebar-logout").forEach(e=>{const n=e.pathname;(t===n||t.startsWith(n+"/"))&&n.length>s&&(a=e,s=n.length)}),a){const t=a.closest(".sidebar-sub-item");if(t){t.classList.add("active");const s=a.closest(".sidebar-accordion-item");s&&(s.classList.add("active"),"true"!==e.getAttribute("data-collapsed")&&e.querySelectorAll(".sidebar-accordion-item").forEach(e=>e.setAttribute("data-open",e===s?"true":"false")))}else a.classList.contains("sidebar-logout")?a.classList.add("active"):a.closest(".sidebar-nav-item")?.classList.add("active")}}this.renderBreadcrumb(this.branch,this.branchUrl),this.renderTabs(this.tree)},closeSurfaces(){this.closePalette(),window.ShadcnSidebar?.closeDrawer?.(),window.ShadcnSidebar?._hideCollapsedPopover?.()},renderSidebarNav(e,t){const a=document.getElementById("sidebar-nav"),s=document.getElementById("sidebar-footer");if(!a)return;const n=ui.menu.getChildren(e),i=L.env.dispatchpath||[],r="1"===document.getElementById("sidebar")?.getAttribute("data-shadcn-restored"),l=r?Array.from(a.querySelectorAll('.sidebar-accordion-item[data-open="true"]'),e=>e.getAttribute("data-section")):null,c=r?a.scrollTop:0;a.innerHTML="",s&&(s.innerHTML="",s.hidden=!0),n.forEach(e=>{if(this._isLogoutMenuItem(e)&&s){const a=i[1]==e.name,n=this._sectionIcon(e.name,18);returLine truncated
|
||||||
@@ -1 +1 @@
|
|||||||
"use strict";"require baseclass";const THEME_KEY="shadcn.theme",SIDEBAR_KEY="shadcn.sidebar";return baseclass.extend({__init__(){const e=document.getElementById("sidebar");"1"!==e?.getAttribute("data-shadcn-built")?document.addEventListener("shadcn-sidebar-ready",()=>this._start(),{once:!0}):this._start()},_start(){if(this._started)return;const e=document.getElementById("sidebar");"1"===e?.getAttribute("data-shadcn-built")&&(this._started=!0,this.initTheme(),this.initSidebar(),this.initMobileDrawer(),this.initThemeToggle())},initTheme(){const e=localStorage.getItem(THEME_KEY)||"device";this.applyTheme(e)},applyTheme(e){const t="dark"===e||"device"===e&&window.matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.setAttribute("data-darkmode",t),localStorage.setItem(THEME_KEY,e),this._updateThemeIcon(t)},_updateThemeIcon(e){const t=document.getElementById("theme-toggle-btn");if(!t)return;const o=t.querySelector("img");if(!o)return;const s=document.documentElement.getAttribute("data-shadcn-media")||"/luci-static/shadcn",d=String(s).replace(/\/$/,"");o.src=d+(e?"/icons/moon.svg":"/icons/sun.svg")},initThemeToggle(){const e=document.getElementById("theme-toggle-btn");e&&(e.addEventListener("click",()=>{const e="true"===document.documentElement.getAttribute("data-darkmode");this.applyTheme(e?"light":"dark")}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{"device"===(localStorage.getItem(THEME_KEY)||"device")&&this.applyTheme("device")}))},initSidebar(){const e=document.getElementById("sidebar");if(!e)return;const t=getComputedStyle(document.documentElement).getPropertyValue("--breakpoint-md").trim();this._mobileQuery=window.matchMedia(`(width < ${t})`),this._mobileQuery.addEventListener("change",e=>{e.matches||this._hideCollapsedPopover()});const o="true"===localStorage.getItem(SIDEBAR_KEY);e.setAttribute("data-collapsed",o);const s=document.getElementById("sidebar-toggle-btn");s&&s.addEventListener("click",()=>{this._mobileQuery.matches?this.closeDrawer():this.toggleCollapse()}),this._initAccordion(),this._initCollapsedPopover()},toggleCollapse(){const e=document.getElementById("sidebar");if(!e)return;const t="true"!==e.getAttribute("data-collapsed");e.setAttribute("data-collapsed",t),document.documentElement.setAttribute("data-sidebar-collapsed",t?"true":"false"),localStorage.setItem(SIDEBAR_KEY,t),this._hideCollapsedPopover(),t&&document.querySelectorAll(".sidebar-accordion-item[data-open='true']").forEach(e=>{this._closeAccordionItem(e)})},_initCollapsedPopover(){document.addEventListener("mouseover",e=>{const t=document.getElementById("sidebar");if("true"!==t?.getAttribute("data-collapsed"))return;if(e.target.closest("#sidebar-collapsed-popover"))return void clearTimeout(this._popoverTimer);const o=e.target.closest(".sidebar-accordion-item");o&&(clearTimeout(this._popoverTimer),this._showCollapsedPopover(o))}),document.addEventListener("mouseout",e=>{const t=document.getElementById("sidebar");if("true"!==t?.getAttribute("data-collapsed"))return;if(!e.target.closest(".sidebar-accordion-item")&&!e.target.closest("#sidebar-collapsed-popover"))return;const o=e.relatedTarget;o&&(o.closest(".sidebar-accordion-item")||o.closest("#sidebar-collapsed-popover"))||(this._popoverTimer=setTimeout(()=>this._hideCollapsedPopover(),100))})},_showCollapsedPopover(e){const t=e.getAttribute("data-section")||"",o=document.getElementById("sidebar-collapsed-popover");if(o&&o.getAttribute("data-section")===t)return;this._hideCollapsedPopover();const s=e.querySelectorAll(".sidebar-sub-link");if(!s.length)return;const d=e.querySelector(".sidebar-label"),i=d?d.textContent.trim():"",r=document.createElement("div");if(r.id="sidebar-collapsed-popover",r.className="sidebar-collapsed-popover",r.setAttribute("data-section",t),i){const e=document.createElement("div");e.className="sidebar-collapsed-popover-title",e.textContent=i,r.appendChild(e)}const a=document.createElement("ul");a.className="sidebar-collapsed-popover-list",s.forEach(e=>{const t=e.closest(".sidebar-sub-item")?.classList.contains("active"),o=document.createElement("li"),s=document.createElement("a");s.href=e.href,s.className="sidebar-collapsed-popover-link"+(t?" active":""),s.textContent=e.textContent,o.appendChild(s),a.appendChild(o)}),r.appendChild(a),document.body.appendChild(r);const n=document.getElementById("sidebar").getBoundingClientRect(),c=e.getBoundingClientRect();r.style.left=n.right+4+"px";const l=Math.min(c.top,window.innerHeight-r.offsetHeight-8);r.style.top=Math.max(8,l)+"px"},_hideCollapsedPopover(){clearTimeout(this._popoverTimer);const e=document.getElementById("sidebar-collapsed-popover");e&&e.remove()},_initAccordion(){document.addEventListener("click",e=>{const t=e.target.closest(".sidebar-nav-parent");if(!t)return;const o=document.getElementById("sidebar");if("true"===o?.getAttribute("data-collapsed"))return;const s=t.closest(".sidebar-accordion-item");if(!s)return;const d="true"===s.getAttributLine truncated
|
"use strict";"require baseclass";const THEME_KEY="shadcn.theme",SIDEBAR_KEY="shadcn.sidebar";return baseclass.extend({__init__(){const e=document.getElementById("sidebar");"1"!==e?.getAttribute("data-shadcn-built")?document.addEventListener("shadcn-sidebar-ready",()=>this._start(),{once:!0}):this._start()},_start(){if(this._started)return;const e=document.getElementById("sidebar");"1"===e?.getAttribute("data-shadcn-built")&&(this._started=!0,this.initTheme(),this.initSidebar(),this.initMobileDrawer(),this.initThemeToggle())},initTheme(){const e=localStorage.getItem(THEME_KEY)||"device";this.applyTheme(e)},applyTheme(e){const t="dark"===e||"device"===e&&window.matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.setAttribute("data-darkmode",t),localStorage.setItem(THEME_KEY,e),this._updateThemeIcon(t)},_updateThemeIcon(e){const t=document.getElementById("theme-toggle-btn");if(!t)return;const o=t.querySelector("img");if(!o)return;const d=document.documentElement.getAttribute("data-shadcn-media")||"/luci-static/shadcn",s=String(d).replace(/\/$/,"");o.src=s+(e?"/icons/moon.svg":"/icons/sun.svg")},initThemeToggle(){const e=document.getElementById("theme-toggle-btn");e&&(e.addEventListener("click",()=>{const e="true"===document.documentElement.getAttribute("data-darkmode");this.applyTheme(e?"light":"dark")}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{"device"===(localStorage.getItem(THEME_KEY)||"device")&&this.applyTheme("device")}))},initSidebar(){const e=document.getElementById("sidebar");if(!e)return;const t=getComputedStyle(document.documentElement).getPropertyValue("--breakpoint-md").trim();this._mobileQuery=window.matchMedia(`(width < ${t})`),this._mobileQuery.addEventListener("change",e=>{e.matches||this._hideCollapsedPopover()});const o="true"===localStorage.getItem(SIDEBAR_KEY);e.setAttribute("data-collapsed",o);const d=document.getElementById("sidebar-toggle-btn");d&&d.addEventListener("click",()=>{this._mobileQuery.matches?this.closeDrawer():this.toggleCollapse()}),this._initAccordion(),this._initCollapsedPopover()},toggleCollapse(){const e=document.getElementById("sidebar");if(!e)return;const t="true"!==e.getAttribute("data-collapsed");e.setAttribute("data-collapsed",t),document.documentElement.setAttribute("data-sidebar-collapsed",t?"true":"false"),document.documentElement.setAttribute("data-sidebar-anim",""),localStorage.setItem(SIDEBAR_KEY,t),this._hideCollapsedPopover(),t&&document.querySelectorAll(".sidebar-accordion-item[data-open='true']").forEach(e=>{this._closeAccordionItem(e)})},_initCollapsedPopover(){document.addEventListener("mouseover",e=>{const t=document.getElementById("sidebar");if("true"!==t?.getAttribute("data-collapsed"))return;if(e.target.closest("#sidebar-collapsed-popover"))return void clearTimeout(this._popoverTimer);const o=e.target.closest(".sidebar-accordion-item");o&&(clearTimeout(this._popoverTimer),this._showCollapsedPopover(o))}),document.addEventListener("mouseout",e=>{const t=document.getElementById("sidebar");if("true"!==t?.getAttribute("data-collapsed"))return;if(!e.target.closest(".sidebar-accordion-item")&&!e.target.closest("#sidebar-collapsed-popover"))return;const o=e.relatedTarget;o&&(o.closest(".sidebar-accordion-item")||o.closest("#sidebar-collapsed-popover"))||(this._popoverTimer=setTimeout(()=>this._hideCollapsedPopover(),100))})},_showCollapsedPopover(e){const t=e.getAttribute("data-section")||"",o=document.getElementById("sidebar-collapsed-popover");if(o&&o.getAttribute("data-section")===t)return;this._hideCollapsedPopover();const d=e.querySelectorAll(".sidebar-sub-link");if(!d.length)return;const s=e.querySelector(".sidebar-label"),i=s?s.textContent.trim():"",r=document.createElement("div");if(r.id="sidebar-collapsed-popover",r.className="sidebar-collapsed-popover",r.setAttribute("data-section",t),i){const e=document.createElement("div");e.className="sidebar-collapsed-popover-title",e.textContent=i,r.appendChild(e)}const a=document.createElement("ul");a.className="sidebar-collapsed-popover-list",d.forEach(e=>{const t=e.closest(".sidebar-sub-item")?.classList.contains("active"),o=document.createElement("li"),d=document.createElement("a");d.href=e.href,d.className="sidebar-collapsed-popover-link"+(t?" active":""),d.textContent=e.textContent,o.appendChild(d),a.appendChild(o)}),r.appendChild(a),document.body.appendChild(r);const n=document.getElementById("sidebar").getBoundingClientRect(),c=e.getBoundingClientRect();r.style.left=n.right+4+"px";const l=Math.min(c.top,window.innerHeight-r.offsetHeight-8);r.style.top=Math.max(8,l)+"px"},_hideCollapsedPopover(){clearTimeout(this._popoverTimer);const e=document.getElementById("sidebar-collapsed-popover");e&&e.remove()},_initAccordion(){document.addEventListener("click",e=>{const t=e.target.closest(".sidebar-nav-parent");if(!t)return;const o=document.getElementById("sidebar");if("true"===o?.getAttribute("data-collapsed"))return;const d=t.closest(".sidebaLine truncated
|
||||||
Loaded 100 of 106 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user