diff --git a/luci-app-smartdns/Makefile b/luci-app-smartdns/Makefile new file mode 100644 index 0000000..21eae1f --- /dev/null +++ b/luci-app-smartdns/Makefile @@ -0,0 +1,26 @@ +# +# Copyright 2018-2025 Nick Peng <pymumu@gmail.com> +# Licensed to the public under the GPL V3 License. + +include $(TOPDIR)/rules.mk + +PKG_LICENSE:=GPL-3.0-or-later +PKG_MAINTAINER:=Nick Peng <pymumu@gmail.com> +PKG_VERSION:=1.2025.47 +PKG_RELEASE:=1 + +LUCI_TITLE:=LuCI for smartdns +LUCI_DESCRIPTION:=Provides Luci for smartdns +LUCI_DEPENDS:=+smartdns +LUCI_PKGARCH:=all + +define Package/$(PKG_NAME)/config +# shown in make menuconfig <Help> +help + $(LUCI_TITLE) + Version: $(PKG_VERSION)-$(PKG_RELEASE) +endef + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-smartdns/ReadMe.md b/luci-app-smartdns/ReadMe.md new file mode 100644 index 0000000..51475a3 --- /dev/null +++ b/luci-app-smartdns/ReadMe.md @@ -0,0 +1,101 @@ +# luci-app-smartdns + +此仓库为smartdns独立仓库,为单独编译使用, 在安装此界面前,需要先安装smartdns进程编译脚本。 +请先安装[openwrt-smartdns](https://github.com/pymumu/openwrt-smartdns) + +仓库分为两个分支 + +1. master分支为openwrt 19.07之后版本使用,此版本基于javascript。 +2. lede分支为lede分支使用, 此版本基于lua。 + +使用时,请使用配套的版本。 + +## 使用方式 + +如下命令操作路径为openwrt源代码所在目录。 + +### 复制仓库中的文件到如下目录,并执行安装 + +```shell +feeds/luci/applications/luci-app-smartdns/ +./scripts/feeds install luci -a +``` + +> lede请下载lede分支 + +### 执行openwrt配置, 选中luci-app-smartdns + +* 选择路径: + +LuCI > 3. Applications > luci-app-smartdns + +```shell +make menuconfig +``` + +* 编译模式: + +1. 若编译独立软件包,选择编译模式为`M` +1. 若编译到固件中,选择编译模式为`*` + +### 执行openwrt编译 + +仅编译软件包: + +```shell +make package/feeds/luci/applications/luci-app-smartdns/compile +``` + +编译固件以及软件包。 + +```shell +make -j8 +``` + +## 懒人脚本 + +可执行如下命令,一次性下载smartdns以及luci-app-smartdns。 +下列命令可采用复制粘贴的方式执行。 + +注意事项: + +1. 执行下列命令时,需要确保当前路径为openwrt代码路径。 +1. 确保执行过./scripts/feeds进行更新。 +1. 若是LEDE,请更换`LUCIBRANCH`变量为 + +```shell +LUCIBRANCH="lede" +``` + +批量命令: + +```shell +WORKINGDIR="`pwd`/feeds/packages/net/smartdns" +mkdir $WORKINGDIR -p +rm $WORKINGDIR/* -fr +wget https://github.com/pymumu/openwrt-smartdns/archive/master.zip -O $WORKINGDIR/master.zip +unzip $WORKINGDIR/master.zip -d $WORKINGDIR +mv $WORKINGDIR/openwrt-smartdns-master/* $WORKINGDIR/ +rmdir $WORKINGDIR/openwrt-smartdns-master +rm $WORKINGDIR/master.zip + +LUCIBRANCH="master" #更换此变量 +WORKINGDIR="`pwd`/feeds/luci/applications/luci-app-smartdns" +mkdir $WORKINGDIR -p +rm $WORKINGDIR/* -fr +wget https://github.com/pymumu/luci-app-smartdns/archive/${LUCIBRANCH}.zip -O $WORKINGDIR/${LUCIBRANCH}.zip +unzip $WORKINGDIR/${LUCIBRANCH}.zip -d $WORKINGDIR +mv $WORKINGDIR/luci-app-smartdns-${LUCIBRANCH}/* $WORKINGDIR/ +rmdir $WORKINGDIR/luci-app-smartdns-${LUCIBRANCH} +rm $WORKINGDIR/${LUCIBRANCH}.zip + +./scripts/feeds install -a +make menuconfig + +``` + +下载完成后,执行配置编译。 + +## 注意事项 + +如果安装完成后,未生效,可以重启设备,清空浏览器缓存,或用安全模式浏览。 \ No newline at end of file diff --git a/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/log.js b/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/log.js new file mode 100644 index 0000000..e5a8fe6 --- /dev/null +++ b/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/log.js @@ -0,0 +1,160 @@ +/************************************************************************* + * + * Copyright (C) 2018-2025 Ruilin Peng (Nick) <pymumu@gmail.com>. + * + * smartdns is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * smartdns is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +'use strict'; +'require dom'; +'require fs'; +'require poll'; +'require uci'; +'require view'; +'require form'; +'require ui'; + +return view.extend({ + render: function () { + var css = ` + #log_textarea { + margin-top: 10px; + } + #log_textarea pre { + background-color: #f7f7f7; + color: #333; + padding: 10px; + border: 1px solid #ccc; + border-radius: 4px; + font-family: Consolas, Menlo, Monaco, monospace; + font-size: 14px; + line-height: 1.5; + white-space: pre-wrap; + word-wrap: break-word; + overflow-y: auto; + max-height: 650px; + } + #.description { + background-color: #33ccff; + } + .cbi-button-danger { + background-color: #fff; + color: #f00; + border: 1px solid #f00; + border-radius: 4px; + padding: 4px 8px; + font-size: 14px; + cursor: pointer; + margin-top: 10px; + } + .cbi-button-danger:hover { + background-color: #f00; + color: #fff; + } + .cbi-section small { + margin-left: 10px; + } + .cbi-section .cbi-section-actions { + margin-top: 10px; + } + .cbi-section .cbi-section-actions-right { + text-align: right; + } + `; + + + var log_textarea = E('div', { 'id': 'log_textarea' }, + E('img', { + 'src': L.resource(['icons/loading.gif']), + 'alt': _('Loading...'), + 'style': 'vertical-align:middle' + }, _('Collecting data ...')) + ); + + var clear_log_button = E('th', {}, [ + E('button', { + 'class': 'cbi-button cbi-button-remove', + 'click': function (ev) { + ev.preventDefault(); + var button = ev.target; + button.disabled = true; + button.textContent = _('Clear Logs...'); + fs.exec_direct('/usr/libexec/smartdns-call', ['clear_log']) + .then(function () { + button.textContent = _('Logs cleared successfully!'); + setTimeout(function () { + button.disabled = false; + button.textContent = _('Clear Logs'); + }, 5000); + // Immediately refresh log display box + var log = E('pre', { 'wrap': 'pre' }, [_('Log is clean.')]); + dom.content(log_textarea, log); + }) + .catch(function () { + button.textContent = _('Failed to clear log.'); + setTimeout(function () { + button.disabled = false; + button.textContent = _('Clear Logs'); + }, 5000); + }); + } + }, _('Clear Logs')) + ]); + + + poll.add(L.bind(function () { + return fs.exec_direct('/usr/libexec/smartdns-call', ['tail']) + .then(function (res) { + var log = E('pre', { 'wrap': 'pre' }, [res.trim() || _('Log is clean.')]); + + dom.content(log_textarea, log); + log.scrollTop = log.scrollHeight; + }).catch(function (err) { + var log; + + if (err.toString().includes('NotFoundError')) { + log = E('pre', { 'wrap': 'pre' }, [_('Log file does not exist.')]); + } else { + log = E('pre', { 'wrap': 'pre' }, [_('Unknown error: %s').format(err)]); + } + + dom.content(log_textarea, log); + }); + })); + + var back_smartdns_button = E('th', {}, [ + E('button', { + 'class': 'cbi-button cbi-button-apply', + 'click': ui.createHandlerFn(this, function () { + window.location.href = "/cgi-bin/luci/admin/services/smartdns" + }) + }, _('Back SmartDNS')) + ]); + + return E('div', { 'class': 'cbi-map' }, [ + E('style', [css]), + E('div', { 'class': 'cbi-section' }, [ + clear_log_button, + back_smartdns_button, + log_textarea, + E('small', {}, _('Refresh every %s seconds.').format(L.env.pollinterval)), + E('div', { 'class': 'cbi-section-actions cbi-section-actions-right' }) + ]) + ]); + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null +}); diff --git a/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js b/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js new file mode 100644 index 0000000..e4a4d98 --- /dev/null +++ b/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js @@ -0,0 +1,1683 @@ +/************************************************************************* + * + * Copyright (C) 2018-2025 Ruilin Peng (Nick) <pymumu@gmail.com>. + * + * smartdns is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * smartdns is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + + +'use strict'; +'require fs'; +'require uci'; +'require form'; +'require view'; +'require poll'; +'require rpc'; +'require ui'; + +var conf = 'smartdns'; +var callServiceList = rpc.declare({ + object: 'service', + method: 'list', + params: ['name'], + expect: { '': {} } +}); +var pollAdded = false; + +function getServiceStatus() { + return L.resolveDefault(callServiceList(conf), {}) + .then(function (res) { + var is_running = false; + try { + is_running = res[conf]['instances']['smartdns']['running']; + } catch (e) { } + return is_running; + }); +} + +function smartdnsServiceStatus() { + return Promise.all([ + getServiceStatus() + ]); +} + +function smartdnsRenderStatus(res) { + var renderHTML = ""; + var isRunning = res[0]; + + var autoSetDnsmasq = uci.get_first('smartdns', 'smartdns', 'auto_set_dnsmasq'); + var smartdnsPort = uci.get_first('smartdns', 'smartdns', 'port'); + var smartdnsEnable = uci.get_first('smartdns', 'smartdns', 'enabled'); + var dnsmasqServer = uci.get_first('dhcp', 'dnsmasq', 'server'); + + if (isRunning) { + renderHTML += "<span style=\"color:green;font-weight:bold\">SmartDNS - " + _("RUNNING") + "</span>"; + } else { + renderHTML += "<span style=\"color:red;font-weight:bold\">SmartDNS - " + _("NOT RUNNING") + "</span>"; + if (smartdnsEnable === '1') { + renderHTML += "<br /><span style=\"color:red;font-weight:bold\">" + _("Please check the system logs and check if the configuration is valid."); + renderHTML += "</span>"; + } + return renderHTML; + } + + if (autoSetDnsmasq === '1' && smartdnsPort != '53') { + var matchLine = "127.0.0.1#" + smartdnsPort; + + uci.unload('dhcp'); + uci.load('dhcp'); + if (dnsmasqServer == undefined || dnsmasqServer.indexOf(matchLine) < 0) { + renderHTML += "<br /><span style=\"color:red;font-weight:bold\">" + _("Dnsmasq Forwarded To Smartdns Failure") + "</span>"; + } + } + + return renderHTML; +} +return view.extend({ + load: function () { + return Promise.all([ + uci.load('dhcp'), + uci.load('smartdns'), + ]); + }, + render: function (stats) { + var m, s, o; + var ss, so; + var servers, download_files; + + m = new form.Map('smartdns', _('SmartDNS')); + m.title = _("SmartDNS Server"); + m.description = _("SmartDNS is a local high-performance DNS server, supports finding fastest IP, " + + "supports ad filtering, and supports avoiding DNS poisoning."); + + s = m.section(form.NamedSection, '_status'); + s.anonymous = true; + s.render = function (section_id) { + var renderStatus = function () { + return L.resolveDefault(smartdnsServiceStatus()).then(function (res) { + var view = document.getElementById("service_status"); + if (view == null) { + return; + } + + view.innerHTML = smartdnsRenderStatus(res); + }); + } + + if (pollAdded == false) { + poll.add(renderStatus, 1); + pollAdded = true; + } + + return E('div', { class: 'cbi-section' }, [ + E('div', { id: 'service_status' }, + _('Collecting data ...')) + ]); + } + + //////////////// + // Basic; + //////////////// + s = m.section(form.TypedSection, "smartdns", _("Settings"), _("General Settings")); + s.anonymous = true; + + s.tab("settings", _("General Settings")); + s.tab("advanced", _('Advanced Settings')); + s.tab("seconddns", _("Second Server Settings")); + s.tab("dns64", _("DNS64 Server Settings")); + s.tab("files", _("Download Files Setting"), _("Download domain list files for domain-rule and include config files, please refresh the page after download to take effect.")); + s.tab("proxy", _("Proxy Server Settings")); + s.tab("custom", _("Custom Settings")); + + /////////////////////////////////////// + // Basic Settings + /////////////////////////////////////// + o = s.taboption("settings", form.Flag, "enabled", _("Enable"), _("Enable or disable smartdns server")); + o.rmempty = false; + o.default = o.disabled; + + // server name; + o = s.taboption("settings", form.Value, "server_name", _("Server Name"), _("Smartdns server name")); + o.default = "smartdns"; + o.datatype = "hostname"; + o.rempty = false; + + // Port; + o = s.taboption("settings", form.Value, "port", _("Local Port"), + _("Smartdns local server port, smartdns will be automatically set as main dns when the port is 53.")); + o.placeholder = 53; + o.default = 53; + o.datatype = "port"; + o.rempty = false; + + // auto-conf-dnsmasq; + o = s.taboption("settings", form.Flag, "auto_set_dnsmasq", _("Automatically Set Dnsmasq"), _("Automatically set as upstream of dnsmasq when port changes.")); + o.rmempty = false; + o.default = o.enabled; + + /////////////////////////////////////// + // advanced settings; + /////////////////////////////////////// + // Speed check mode; + o = s.taboption("advanced", form.Value, "speed_check_mode", _("Speed Check Mode"), _("Smartdns speed check mode.")); + o.rmempty = true; + o.placeholder = "default"; + o.value("", _("default")); + o.value("ping,tcp:80,tcp:443"); + o.value("ping,tcp:443,tcp:80"); + o.value("tcp:80,tcp:443,ping"); + o.value("tcp:443,tcp:80,ping"); + o.value("none", _("None")); + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + if (value == "none") { + return true; + } + + var check_mode = value.split(",") + for (var i = 0; i < check_mode.length; i++) { + if (check_mode[i] == "ping") { + continue; + } + + if (check_mode[i].indexOf("tcp:") == 0) { + var port = check_mode[i].split(":")[1]; + if (port == "") { + return _("TCP port is empty"); + } + + continue; + } + + return _("Speed check mode is invalid."); + } + + return true; + } + + // response mode; + o = s.taboption("advanced", form.ListValue, "response_mode", _("Response Mode"), + _("Smartdns response mode, First Ping: return the first ping IP, Fastest IP: return the fastest IP, Fastest Response: return the fastest DNS response.")); + o.rmempty = true; + o.placeholder = "default"; + o.value("", _("default")); + o.value("first-ping", _("First Ping")); + o.value("fastest-ip", _("Fastest IP")); + o.value("fastest-response", _("Fastest Response")); + + // Enable TCP server; + o = s.taboption("advanced", form.Flag, "tcp_server", _("TCP Server"), _("Enable TCP DNS Server")); + o.rmempty = false; + o.default = o.enabled; + + // Enable DOT server; + o = s.taboption("advanced", form.Flag, "tls_server", _("DOT Server"), _("Enable DOT DNS Server")); + o.rmempty = false; + o.default = o.disabled; + + o = s.taboption("advanced", form.Value, "tls_server_port", _("DOT Server Port"), _("Smartdns DOT server port.")); + o.placeholder = 853; + o.default = 853; + o.datatype = "port"; + o.rempty = false; + o.depends('tls_server', '1'); + + // Enable DOH server; + o = s.taboption("advanced", form.Flag, "doh_server", _("DOH Server"), _("Enable DOH DNS Server")); + o.rmempty = false; + o.default = o.disabled; + + o = s.taboption("advanced", form.Value, "doh_server_port", _("DOH Server Port"), _("Smartdns DOH server port.")); + o.placeholder = 843; + o.default = 843; + o.datatype = "port"; + o.rempty = false; + o.depends('doh_server', '1'); + + o = s.taboption("advanced", form.Value, "bind_cert", _("Server Cert"), _("Server certificate file path.")); + o.datatype = "string"; + o.placeholder = "/var/etc/smartdns/smartdns/smartdns-cert.pem" + o.rempty = true; + o.depends('tls_server', '1'); + o.depends('doh_server', '1'); + + o = s.taboption("advanced", form.Value, "bind_cert_key", _("Server Cert Key"), _("Server certificate key file path.")); + o.datatype = "string"; + o.placeholder = "/var/etc/smartdns/smartdns/smartdns-key.pem" + o.rempty = false; + o.depends('tls_server', '1'); + o.depends('doh_server', '1'); + + o = s.taboption("advanced", form.Value, "bind_cert_key_pass", _("Server Cert Key Pass"), _("Server certificate key file password.")); + o.datatype = "string"; + o.rempty = false; + o.depends('tls_server', '1'); + o.depends('doh_server', '1'); + + // Support IPV6; + o = s.taboption("advanced", form.Flag, "ipv6_server", _("IPV6 Server"), _("Enable IPV6 DNS Server")); + o.rmempty = false; + o.default = o.enabled; + + // bind to device; + o = s.taboption("advanced", form.Flag, "bind_device", _("Bind Device"), _("Listen only on the specified interfaces.")); + o.rmempty = false; + o.default = o.enabled; + + // bind device name; + o = s.taboption("advanced", form.Value, "bind_device_name", _("Bind Device Name"), _("Name of device name listen on.")); + o.placeholder = "default"; + o.rempty = true; + o.datatype = "string"; + + // Support DualStack ip selection; + o = s.taboption("advanced", form.Flag, "dualstack_ip_selection", _("Dual-stack IP Selection"), + _("Enable IP selection between IPV4 and IPV6")); + o.rmempty = false; + o.default = o.enabled; + + // Domain prefetch load ; + o = s.taboption("advanced", form.Flag, "prefetch_domain", _("Domain prefetch"), + _("Enable domain prefetch, accelerate domain response speed.")); + o.rmempty = true; + o.default = o.disabled; + + // Domain Serve expired + o = s.taboption("advanced", form.Flag, "serve_expired", _("Serve expired"), + _("Attempts to serve old responses from cache with a TTL of 0 in the response without waiting for the actual resolution to finish.")); + o.rmempty = false; + o.default = o.enabled; + + // cache-size; + o = s.taboption("advanced", form.Value, "cache_size", _("Cache Size"), _("DNS domain result cache size")); + o.rempty = true; + + // cache-persist; + o = s.taboption("advanced", form.Flag, "cache_persist", _("Cache Persist"), _("Write cache to disk on exit and load on startup.")); + o.rmempty = false; + o.default = o.enabled; + + // resolve local hostname; + o = s.taboption("advanced", form.Flag, "resolve_local_hostnames", _("Resolve Local Hostnames"), _("Resolve local hostnames by reading Dnsmasq lease file.")); + o.rmempty = false; + o.default = o.enabled; + + // resolve local network hostname via mDNS; + o = s.taboption("advanced", form.Flag, "mdns_lookup", _("mDNS Lookup"), _("Resolve local network hostname via mDNS protocol.")); + o.rmempty = true; + o.default = o.disabled; + + // Force AAAA SOA + o = s.taboption("advanced", form.Flag, "force_aaaa_soa", _("Force AAAA SOA"), _("Force AAAA SOA.")); + o.rmempty = true; + o.default = o.disabled; + + // Force HTTPS SOA + o = s.taboption("advanced", form.Flag, "force_https_soa", _("Force HTTPS SOA"), _("Force HTTPS SOA.")); + o.rmempty = false; + o.default = o.enabled; + + // ipset name; + o = s.taboption("advanced", form.Value, "ipset_name", _("IPset Name"), _("IPset name.")); + o.rmempty = true; + o.datatype = "string"; + o.rempty = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var ipset = value.split(",") + for (var i = 0; i < ipset.length; i++) { + if (!ipset[i].match(/^(#[4|6]:)?[a-zA-Z0-9\-_]+$/)) { + return _("ipset name format error, format: [#[4|6]:]ipsetname"); + } + } + + return true; + } + + // Ipset no speed. + o = s.taboption("advanced", form.Value, "ipset_no_speed", _("No Speed IPset Name"), + _("Ipset name, Add domain result to ipset when speed check fails.")); + o.rmempty = true; + o.datatype = "string"; + o.rempty = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var ipset = value.split(",") + for (var i = 0; i < ipset.length; i++) { + if (!ipset[i].match(/^(#[4|6]:)?[a-zA-Z0-9\-_]+$/)) { + return _("ipset name format error, format: [#[4|6]:]ipsetname"); + } + } + + return true; + } + + // NFTset name; + o = s.taboption("advanced", form.Value, "nftset_name", _("NFTset Name"), _("NFTset name, format: [#[4|6]:[family#table#set]]")); + o.rmempty = true; + o.datatype = "string"; + o.rempty = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var nftset = value.split(",") + for (var i = 0; i < nftset.length; i++) { + if (!nftset[i].match(/^#[4|6]:[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+$/)) { + return _("NFTset name format error, format: [#[4|6]:[family#table#set]]"); + } + } + + return true; + } + + // NFTset no speed. + o = s.taboption("advanced", form.Value, "nftset_no_speed", _("No Speed NFTset Name"), + _("Nftset name, Add domain result to nftset when speed check fails, format: [#[4|6]:[family#table#set]]")); + o.rmempty = true; + o.datatype = "string"; + o.rempty = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var nftset = value.split(",") + for (var i = 0; i < nftset.length; i++) { + if (!nftset[i].match(/^#[4|6]:[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+$/)) { + return _("NFTset name format error, format: [#[4|6]:[family#table#set]]"); + } + } + + return true; + } + + // rr-ttl; + o = s.taboption("advanced", form.Value, "rr_ttl", _("Domain TTL"), _("TTL for all domain result.")); + o.rempty = true; + + // rr-ttl-min; + o = s.taboption("advanced", form.Value, "rr_ttl_min", _("Domain TTL Min"), + _("Minimum TTL for all domain result.")); + o.rempty = true; + o.placeholder = "600"; + o.default = 600; + o.optional = true; + + // rr-ttl-max; + o = s.taboption("advanced", form.Value, "rr_ttl_max", _("Domain TTL Max"), + _("Maximum TTL for all domain result.")); + o.rempty = true; + + // rr-ttl-reply-max; + o = s.taboption("advanced", form.Value, "rr_ttl_reply_max", _("Reply Domain TTL Max"), + _("Reply maximum TTL for all domain result.")); + o.rempty = true; + + // other args + o = s.taboption("advanced", form.Value, "server_flags", _("Additional Server Args"), + _("Additional server args, refer to the help description of the bind option.")) + o.default = "" + o.rempty = true + + // include config + download_files = uci.sections('smartdns', 'download-file'); + o = s.taboption("advanced", form.DynamicList, "conf_files", _("Include Config Files<br>/etc/smartdns/conf.d"), + _("Include other config files from /etc/smartdns/conf.d or custom path, can be downloaded from the download page.")); + for (var i = 0; i < download_files.length; i++) { + if (download_files[i].type == undefined) { + continue; + } + + if (download_files[i].type != 'config') { + continue + } + + o.value(download_files[i].name); + } + + o = s.taboption("advanced", form.DynamicList, "hosts_files", _("Hosts File"), _("Include hosts file.")); + o.rmempty = true; + for (var i = 0; i < download_files.length; i++) { + if (download_files[i].type == undefined) { + continue; + } + + if (download_files[i].type != 'other') { + continue + } + + o.value(download_files[i].name); + } + + /////////////////////////////////////// + // second dns server; + /////////////////////////////////////// + // Enable; + o = s.taboption("seconddns", form.Flag, "seconddns_enabled", _("Enable"), + _("Enable or disable second DNS server.")); + o.default = o.disabled; + o.rempty = true; + + // Port; + o = s.taboption("seconddns", form.Value, "seconddns_port", _("Local Port"), _("Smartdns local server port")); + o.placeholder = 6553; + o.default = 6553; + o.datatype = "port"; + o.rempty = false; + + // Enable TCP server; + o = s.taboption("seconddns", form.Flag, "seconddns_tcp_server", _("TCP Server"), _("Enable TCP DNS Server")); + o.rmempty = false; + o.default = o.enabled; + + // dns server group; + o = s.taboption("seconddns", form.Value, "seconddns_server_group", _("Server Group"), + _("Query DNS through specific dns server group, such as office, home.")); + o.rmempty = true; + o.placeholder = "default"; + o.datatype = "hostname"; + o.rempty = true; + + o = s.taboption("seconddns", form.Flag, "seconddns_no_speed_check", _("Skip Speed Check"), + _("Do not check speed.")); + o.rmempty = true; + o.default = o.disabled; + + // skip address rules; + o = s.taboption("seconddns", form.Flag, "seconddns_no_rule_addr", _("Skip Address Rules"), + _("Skip address rules.")); + o.rmempty = true; + o.default = o.disabled; + + // skip name server rules; + o = s.taboption("seconddns", form.Flag, "seconddns_no_rule_nameserver", _("Skip Nameserver Rule"), + _("Skip nameserver rules.")); + o.rmempty = true; + o.default = o.disabled; + + // skip ipset rules; + o = s.taboption("seconddns", form.Flag, "seconddns_no_rule_ipset", _("Skip Ipset Rule"), + _("Skip ipset rules.")); + o.rmempty = true; + o.default = o.disabled; + + // skip soa address rule; + o = s.taboption("seconddns", form.Flag, "seconddns_no_rule_soa", _("Skip SOA Address Rule"), + _("Skip SOA address rules.")); + o.rmempty = true; + o.default = o.disabled; + + o = s.taboption("seconddns", form.Flag, "seconddns_no_dualstack_selection", _("Skip Dualstack Selection"), + _("Skip Dualstack Selection.")); + o.rmempty = true; + o.default = o.disabled; + + // skip cache; + o = s.taboption("seconddns", form.Flag, "seconddns_no_cache", _("Skip Cache"), _("Skip Cache.")); + o.rmempty = true; + o.default = o.disabled; + + // Force AAAA SOA + o = s.taboption("seconddns", form.Flag, "seconddns_force_aaaa_soa", _("Force AAAA SOA"), _("Force AAAA SOA.")); + o.rmempty = true; + o.default = o.disabled; + + // Force HTTPS SOA + o = s.taboption("seconddns", form.Flag, "seconddns_force_https_soa", _("Force HTTPS SOA"), _("Force HTTPS SOA.")); + o.rmempty = true; + o.default = o.disabled; + + o = s.taboption("seconddns", form.Flag, "seconddns_no_ip_alias", _("Skip IP Alias")); + o.rmempty = true; + o.default = o.disabled; + + o = s.taboption("seconddns", form.Value, "seconddns_ipset_name", _("IPset Name"), _("IPset name.")); + o.rmempty = true; + o.datatype = "string"; + o.rempty = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var ipset = value.split(",") + for (var i = 0; i < ipset.length; i++) { + if (!ipset[i].match(/^(#[4|6]:)?[a-zA-Z0-9\-_]+$/)) { + return _("ipset name format error, format: [#[4|6]:]ipsetname"); + } + } + + return true; + } + + o = s.taboption("seconddns", form.Value, "seconddns_nftset_name", _("NFTset Name"), _("NFTset name, format: [#[4|6]:[family#table#set]]")); + o.rmempty = true; + o.datatype = "string"; + o.rempty = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var nftset = value.split(",") + for (var i = 0; i < nftset.length; i++) { + if (!nftset[i].match(/^#[4|6]:[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+$/)) { + return _("NFTset name format error, format: [#[4|6]:[family#table#set]]"); + } + } + + return true; + } + + // other args + o = s.taboption("seconddns", form.Value, "seconddns_server_flags", _("Additional Server Args"), + _("Additional server args, refer to the help description of the bind option.")) + o.default = "" + o.rempty = true + + /////////////////////////////////////// + // DNS64 Settings + /////////////////////////////////////// + o = s.taboption("dns64", form.Value, "dns64", _("DNS64")); + o.placeholder = "64:ff9b::/96"; + o.datatype = "ip6addr"; + o.rempty = true; + + /////////////////////////////////////// + // download Files Settings + /////////////////////////////////////// + o = s.taboption("files", form.Flag, "enable_auto_update", _("Enable Auto Update"), _("Enable daily (weekly) auto update.")); + o.rmempty = true; + o.default = o.disabled; + o.rempty = true; + + o = s.taboption("files", form.ListValue, "auto_update_week_time", _("Update Time (Every Week)")); + o.value('*', _('Every Day')); + o.value('1', _('Every Monday')); + o.value('2', _('Every Tuesday')); + o.value('3', _('Every Wednesday')); + o.value('4', _('Every Thursday')); + o.value('5', _('Every Friday')); + o.value('6', _('Every Saturday')); + o.value('0', _('Every Sunday')); + o.default = "*"; + o.depends('enable_auto_update', '1'); + + o = s.taboption('files', form.ListValue, 'auto_update_day_time', _("Update time (every day)")); + for (var i = 0; i < 24; i++) + o.value(i, i + ':00'); + o.default = '5'; + o.depends('enable_auto_update', '1'); + + o = s.taboption("files", form.FileUpload, "upload_conf_file", _("Upload Config File"), + _("Upload smartdns config file to /etc/smartdns/conf.d")); + o.rmempty = true + o.datatype = "file" + o.rempty = true + o.root_directory = "/etc/smartdns/conf.d" + + o = s.taboption("files", form.FileUpload, "upload_list_file", _("Upload Domain List File"), + _("Upload domain list file to /etc/smartdns/domain-set")); + o.rmempty = true + o.datatype = "file" + o.rempty = true + o.root_directory = "/etc/smartdns/domain-set" + + o = s.taboption("files", form.FileUpload, "upload_other_file", _("Upload File")); + o.rmempty = true + o.datatype = "file" + o.rempty = true + o.root_directory = "/etc/smartdns/download" + + o = s.taboption('files', form.DummyValue, "_update", _("Update Files")); + o.renderWidget = function () { + return E('button', { + 'class': 'btn cbi-button cbi-button-apply', + 'id': 'btn_update', + 'click': ui.createHandlerFn(this, function () { + return fs.exec('/etc/init.d/smartdns', ['updatefiles']) + .catch(function (e) { ui.addNotification(null, E('p', e.message), 'error') }); + }) + }, [_("Update")]); + } + + o = s.taboption('files', form.SectionValue, '__files__', form.GridSection, 'download-file', _('Download Files'), + _('List of files to download.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + + so = ss.option(form.Value, 'name', _('File Name'), _('File Name')); + so.rmempty = true; + so.datatype = 'file'; + + so = ss.option(form.Value, 'url', _('URL'), _('URL')); + so.rmempty = true; + so.datatype = 'string'; + so.validate = function (section_id, value) { + if (value == "") { + return true; + } + + if (!value.match(/^(http|https|ftp|sftp):\/\//)) { + return _("URL format error, format: http:// or https://"); + } + + return true; + } + + so = ss.option(form.ListValue, "type", _("type"), _("File Type")); + so.value("list", _("domain list (/etc/smartdns/domain-set)")); + so.value("config", _("smartdns config (/etc/smartdns/conf.d)")); + so.value("ip-set", _("ip-set file (/etc/smartdns/ip-set)")); + so.value("other", _("other file (/etc/smartdns/download)")); + so.default = "list"; + so.rempty = false; + + so = ss.option(form.Value, 'desc', _('Description'), _('Description')); + so.rmempty = true; + so.datatype = 'string'; + + /////////////////////////////////////// + // Proxy server settings; + /////////////////////////////////////// + o = s.taboption("proxy", form.Value, "proxy_server", _("Proxy Server"), _("Proxy Server URL, format: [socks5|http]://user:pass@ip:port.")); + o.datatype = 'string'; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + if (!value.match(/^(socks5|http):\/\//)) { + return _("Proxy server URL format error, format: [socks5|http]://user:pass@ip:port."); + } + + return true; + } + + /////////////////////////////////////// + // custom settings; + /////////////////////////////////////// + o = s.taboption("custom", form.TextValue, "custom_conf", + "", _("smartdns custom settings")); + o.rows = 20; + o.cfgvalue = function (section_id) { + return fs.trimmed('/etc/smartdns/custom.conf'); + }; + o.write = function (section_id, formvalue) { + return this.cfgvalue(section_id).then(function (value) { + if (value == formvalue) { + return + } + return fs.write('/etc/smartdns/custom.conf', formvalue.trim().replace(/\r\n/g, '\n') + '\n'); + }); + }; + + o = s.taboption("custom", form.Flag, "coredump", _("Generate Coredump"), + _("Generate Coredump file when smartdns crash, coredump file is located at /tmp/smartdns.xxx.core.")); + o.rmempty = true; + o.default = o.disabled; + + o = s.taboption("custom", form.ListValue, "log_level", _("Log Level")); + o.rmempty = true; + o.default = ""; + o.value("", _("default")); + o.value("debug"); + o.value("info"); + o.value("notice"); + o.value("warn"); + o.value("error"); + o.value("fatal"); + o.value("off"); + + o = s.taboption("custom", form.ListValue, "log_output_mode", _("Log Output Mode")); + o.rmempty = true; + o.default = "file"; + o.value("file", _("file")); + o.value("syslog", _("syslog")); + + o = s.taboption("custom", form.Value, "log_size", _("Log Size")); + o.rmempty = true; + o.placeholder = "default"; + o.depends("log_output_mode", "file"); + + o = s.taboption("custom", form.Value, "log_num", _("Log Number")); + o.rmempty = true; + o.placeholder = "default"; + o.depends("log_output_mode", "file"); + + o = s.taboption("custom", form.Value, "log_file", _("Log File")) + o.rmempty = true + o.placeholder = "/var/log/smartdns/smartdns.log" + o.depends("log_output_mode", "file"); + + o = s.taboption("custom", form.DummyValue, "view_log", _("View Log")); + o.renderWidget = function () { + return E('button', { + 'class': 'btn cbi-button', + 'id': 'btn_view_log', + 'click': ui.createHandlerFn(this, function () { + window.location.href = "/cgi-bin/luci/admin/services/smartdns/log"; + }) + }, [_("View Log")]); + } + var log_levels = ["debug", "info", "notice", "warn", "error", "fatal"]; + log_levels.forEach(function(level) { + o.depends({ log_output_mode: "file", log_level: level }); + }); + + o = s.taboption("custom", form.Flag, "enable_audit_log", _("Enable Audit Log")); + o.rmempty = true; + o.default = o.disabled; + o.rempty = true; + + o = s.taboption("custom", form.ListValue, "audit_log_output_mode", _("Audit Log Output Mode")); + o.rmempty = true; + o.default = "file"; + o.value("file", _("file")); + o.value("syslog", _("syslog")); + o.depends("enable_audit_log", "1"); + + o = s.taboption("custom", form.Value, "audit_log_size", _("Audit Log Size")); + o.rmempty = true; + o.placeholder = "default"; + o.depends({"enable_audit_log":"1", "audit_log_output_mode":"file"}); + + o = s.taboption("custom", form.Value, "audit_log_num", _("Audit Log Number")); + o.rmempty = true; + o.placeholder = "default"; + o.depends({"enable_audit_log":"1", "audit_log_output_mode":"file"}); + + o = s.taboption("custom", form.Value, "audit_log_file", _("Audit Log File")) + o.rmempty = true + o.placeholder = "/var/log/smartdns/smartdns-audit.log" + o.depends({"enable_audit_log":"1", "audit_log_output_mode":"file"}); + + //////////////// + // Upstream servers; + //////////////// + s = m.section(form.GridSection, "server", _("Upstream Servers"), + _("Upstream Servers, support UDP, TCP protocol. Please configure multiple DNS servers, " + + "including multiple foreign DNS servers.")); + s.anonymous = true; + s.addremove = true; + s.sortable = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + + // enable flag; + o = s.taboption("general", form.Flag, "enabled", _("Enable"), _("Enable")); + o.rmempty = false; + o.default = o.enabled; + o.editable = true; + + // name; + o = s.taboption("general", form.Value, "name", _("DNS Server Name"), _("DNS Server Name")); + + // IP address; + o = s.taboption("general", form.Value, "ip", _("ip"), _("DNS Server ip")); + o.datatype = "or(ipaddr, string)"; + o.rmempty = false; + + // port; + o = s.taboption("general", form.Value, "port", _("port"), _("DNS Server port")); + o.placeholder = "default"; + o.datatype = "port"; + o.rempty = true; + o.depends("type", "udp"); + o.depends("type", "tcp"); + o.depends("type", "tls"); + + // type; + o = s.taboption("general", form.ListValue, "type", _("type"), _("DNS Server type")); + o.placeholder = "udp"; + o.value("udp", _("udp")); + o.value("tcp", _("tcp")); + o.value("tls", _("tls")); + o.value("https", _("https")); + o.default = "udp"; + o.rempty = false; + + // server group + o = s.taboption("general", form.Value, "server_group", _("Server Group"), _("DNS Server group")) + o.rmempty = true; + o.placeholder = "default"; + o.datatype = "hostname"; + o.rempty = true; + servers = uci.sections('smartdns', 'server'); + var groupnames = new Set(); + for (var i = 0; i < servers.length; i++) { + if (servers[i].server_group == undefined) { + continue; + } + groupnames.add(servers[i].server_group); + } + + for (const groupname of groupnames) { + o.value(groupname); + } + + // Advanced Options + o = s.taboption("advanced", form.Flag, "exclude_default_group", _("Exclude Default Group"), _("Exclude DNS Server from default group.")) + o.rmempty = true; + o.default = o.disabled; + o.editable = true; + o.modalonly = true; + + // blacklist_ip + o = s.taboption("advanced", form.Flag, "blacklist_ip", _("IP Blacklist Filtering"), + _("Filtering IP with blacklist")) + o.rmempty = true + o.default = o.disabled + o.modalonly = true; + + // TLS host verify + o = s.taboption("advanced", form.Value, "tls_host_verify", _("TLS Hostname Verify"), + _("Set TLS hostname to verify.")) + o.default = "" + o.datatype = "string" + o.rempty = true + o.modalonly = true; + o.depends("type", "tls") + o.depends("type", "https") + + // certificate verify + o = s.taboption("advanced", form.Flag, "no_check_certificate", _("No check certificate"), + _("Do not check certificate.")) + o.rmempty = true + o.default = o.disabled + o.modalonly = true; + o.depends("type", "tls") + o.depends("type", "https") + + // SNI host name + o = s.taboption("advanced", form.Value, "host_name", _("TLS SNI name"), + _("Sets the server name indication for query. '-' for disable SNI name.")) + o.default = "" + o.datatype = "hostname" + o.rempty = true + o.modalonly = true; + o.depends("type", "tls") + o.depends("type", "https") + + // http host + o = s.taboption("advanced", form.Value, "http_host", _("HTTP Host"), + _("Set the HTTP host used for the query. Use this parameter when the host of the URL address is an IP address.")) + o.default = "" + o.datatype = "hostname" + o.rempty = true + o.modalonly = true; + o.depends("type", "https") + + // SPKI pin + o = s.taboption("advanced", form.Value, "spki_pin", _("TLS SPKI Pinning"), + _("Used to verify the validity of the TLS server, The value is Base64 encoded SPKI fingerprint, " + + "leaving blank to indicate that the validity of TLS is not verified.")) + o.default = "" + o.datatype = "string" + o.rempty = true + o.modalonly = true; + o.depends("type", "tls") + o.depends("type", "https") + + // mark + o = s.taboption("advanced", form.Value, "set_mark", _("Marking Packets"), + _("Set mark on packets.")) + o.default = "" + o.rempty = true + o.datatype = "uinteger" + o.modalonly = true; + + // use proxy + o = s.taboption("advanced", form.Flag, "use_proxy", _("Use Proxy"), + _("Use proxy to connect to upstream DNS server.")) + o.default = o.disabled + o.modalonly = true; + o.optional = true; + o.rempty = true; + o.validate = function (section_id, value) { + var flag = this.formvalue(section_id); + if (flag == "0") { + return true; + } + + var proxy_server = uci.sections("smartdns", "smartdns")[0].proxy_server; + var server_type = this.section.formvalue(section_id, "type"); + if (proxy_server == "" || proxy_server == undefined) { + return _("Please set proxy server first."); + } + + if (server_type == "udp" && !proxy_server.match(/^(socks5):\/\//)) { + return _("Only socks5 proxy support udp server."); + } + + return true; + } + + // other args + o = s.taboption("advanced", form.Value, "addition_arg", _("Additional Server Args"), + _("Additional Args for upstream dns servers")) + o.default = "" + o.rempty = true + o.modalonly = true; + + //////////////// + // client rules; + //////////////// + s = m.section(form.TypedSection, "client-rule", _("Client Rules"), _("Client Rules Settings, can achieve parental control functionality.")); + s.anonymous = true; + s.nodescriptions = true; + + s.tab("basic", _('Basic Settings')); + s.tab("advanced", _('Advanced Settings')); + s.tab("block", _("DNS Block Setting")); + + o = s.taboption("basic", form.Flag, "enabled", _("Enable")); + o.rmempty = false; + o.default = o.disabled; + + o = s.taboption("basic", form.DynamicList, "client_addr", _("Client Address"), + _("If a client address is specified, only that client will apply this rule. You can enter an IP address, such as 1.2.3.4, or a MAC address, such as aa:bb:cc:dd:ee:ff.")); + o.rempty = true + o.rmempty = true; + o.modalonly = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + if (value.match(/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\/([0-9]|[1-2][0-9]|3[0-2]))?$/)) { + return true; + } + + if (value.match(/^([a-fA-F0-9]*:){1,7}[a-fA-F0-9]*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))?$/)) { + return true; + } + + if (value.match(/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/)) { + return true; + } + + return _("Client address format error, please input ip adress or mac address."); + } + + o = s.taboption("basic", form.FileUpload, "client_addr_file", _("Client Address File"), + _("Upload client address file, same as Client Address function.")); + o.rmempty = true + o.datatype = "file" + o.rempty = true + o.modalonly = true; + o.root_directory = "/etc/smartdns/ip-set" + + o = s.taboption("basic", form.Value, "server_group", _("Server Group"), _("DNS Server group belongs to, such as office, home.")) + o.rmempty = true + o.placeholder = "default" + o.datatype = "hostname" + o.rempty = true + for (const groupname of groupnames) { + o.value(groupname); + } + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var val = uci.sections('smartdns', 'server'); + for (var i = 0; i < val.length; i++) { + if (value == val[i].server_group) { + return true; + } + } + + return _('Server Group %s not exists').format(value); + + } + + // Speed check mode; + o = s.taboption("advanced", form.Value, "speed_check_mode", _("Speed Check Mode"), _("Smartdns speed check mode.")); + o.rmempty = true; + o.placeholder = "default"; + o.value("", _("default")); + o.value("ping,tcp:80,tcp:443"); + o.value("ping,tcp:443,tcp:80"); + o.value("tcp:80,tcp:443,ping"); + o.value("tcp:443,tcp:80,ping"); + o.value("none", _("None")); + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + if (value == "none") { + return true; + } + + var check_mode = value.split(",") + for (var i = 0; i < check_mode.length; i++) { + if (check_mode[i] == "ping") { + continue; + } + + if (check_mode[i].indexOf("tcp:") == 0) { + var port = check_mode[i].split(":")[1]; + if (port == "") { + return _("TCP port is empty"); + } + + continue; + } + + return _("Speed check mode is invalid."); + } + + return true; + } + + // Support DualStack ip selection; + o = s.taboption("advanced", form.Flag, "dualstack_ip_selection", _("Dual-stack IP Selection"), + _("Enable IP selection between IPV4 and IPV6")); + o.rmempty = false; + o.default = o.enabled; + + // Force AAAA SOA + o = s.taboption("advanced", form.Flag, "force_aaaa_soa", _("Force AAAA SOA"), _("Force AAAA SOA.")); + o.rmempty = true; + o.default = o.disabled; + + // Force HTTPS SOA + o = s.taboption("advanced", form.Flag, "force_https_soa", _("Force HTTPS SOA"), _("Force HTTPS SOA.")); + o.rmempty = false; + o.default = o.enabled; + + // ipset name; + o = s.taboption("advanced", form.Value, "ipset_name", _("IPset Name"), _("IPset name.")); + o.rmempty = true; + o.datatype = "string"; + o.rempty = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var ipset = value.split(",") + for (var i = 0; i < ipset.length; i++) { + if (!ipset[i].match(/^(#[4|6]:)?[a-zA-Z0-9\-_]+$/)) { + return _("ipset name format error, format: [#[4|6]:]ipsetname"); + } + } + + return true; + } + + // NFTset name; + o = s.taboption("advanced", form.Value, "nftset_name", _("NFTset Name"), _("NFTset name, format: [#[4|6]:[family#table#set]]")); + o.rmempty = true; + o.datatype = "string"; + o.rempty = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var nftset = value.split(",") + for (var i = 0; i < nftset.length; i++) { + if (!nftset[i].match(/^#[4|6]:[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+$/)) { + return _("NFTset name format error, format: [#[4|6]:[family#table#set]]"); + } + } + + return true; + } + + // include config + download_files = uci.sections('smartdns', 'download-file'); + o = s.taboption("advanced", form.DynamicList, "conf_files", _("Include Config Files<br>/etc/smartdns/conf.d"), + _("Include other config files from /etc/smartdns/conf.d or custom path, can be downloaded from the download page.")); + for (var i = 0; i < download_files.length; i++) { + if (download_files[i].type == undefined) { + continue; + } + + if (download_files[i].type != 'config') { + continue + } + + o.value(download_files[i].name); + } + + o = s.taboption("block", form.FileUpload, "block_domain_set_file", _("Domain List File"), _("Upload domain list file.")); + o.rmempty = true + o.datatype = "file" + o.rempty = true + o.editable = true + o.root_directory = "/etc/smartdns/domain-set" + + + //////////////// + // domain rules; + //////////////// + s = m.section(form.TypedSection, "domain-rule", _("Domain Rules"), _("Domain Rules Settings")); + s.anonymous = true; + s.nodescriptions = true; + + s.tab("forwarding", _('DNS Forwarding Setting')); + s.tab("block", _("DNS Block Setting")); + s.tab("domain-rule-list", _("Domain Rule List"), _("Set Specific domain rule list.")); + s.tab("domain-address", _("Domain Address"), _("Set Specific domain ip address.")); + + /////////////////////////////////////// + // domain forwarding; + /////////////////////////////////////// + o = s.taboption("forwarding", form.Value, "server_group", _("Server Group"), _("DNS Server group belongs to, such as office, home.")) + o.rmempty = true + o.placeholder = "default" + o.datatype = "hostname" + o.rempty = true + for (const groupname of groupnames) { + o.value(groupname); + } + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var val = uci.sections('smartdns', 'server'); + for (var i = 0; i < val.length; i++) { + if (value == val[i].server_group) { + return true; + } + } + + return _('Server Group %s not exists').format(value); + + } + + // Speed check mode; + o = s.taboption("forwarding", form.Value, "speed_check_mode", _("Speed Check Mode"), _("Smartdns speed check mode.")); + o.rmempty = true; + o.placeholder = "default"; + o.value("", _("default")); + o.value("ping,tcp:80,tcp:443"); + o.value("ping,tcp:443,tcp:80"); + o.value("tcp:80,tcp:443,ping"); + o.value("tcp:443,tcp:80,ping"); + o.value("none", _("None")); + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + if (value == "none") { + return true; + } + + var check_mode = value.split(",") + for (var i = 0; i < check_mode.length; i++) { + if (check_mode[i] == "ping") { + continue; + } + + if (check_mode[i].indexOf("tcp:") == 0) { + var port = check_mode[i].split(":")[1]; + if (port == "") { + return _("TCP port is empty"); + } + + continue; + } + + return _("Speed check mode is invalid."); + } + + return true; + } + + // Support DualStack ip selection; + o = s.taboption("forwarding", form.ListValue, "dualstack_ip_selection", _("Dual-stack IP Selection"), + _("Enable IP selection between IPV4 and IPV6")); + o.rmempty = true; + o.default = "default"; + o.modalonly = true; + o.value("", _("default")); + o.value("yes", _("Yes")); + o.value("no", _("No")); + + o = s.taboption("forwarding", form.Flag, "force_aaaa_soa", _("Force AAAA SOA"), _("Force AAAA SOA.")); + o.rmempty = true; + o.default = o.disabled; + + o = s.taboption("forwarding", form.Value, "ipset_name", _("IPset Name"), _("IPset name.")); + o.rmempty = true; + o.datatype = "string"; + o.rempty = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var ipset = value.split(",") + for (var i = 0; i < ipset.length; i++) { + if (!ipset[i].match(/^(#[4|6]:)?[a-zA-Z0-9\-_]+$/)) { + return _("ipset name format error, format: [#[4|6]:]ipsetname"); + } + } + + return true; + } + + o = s.taboption("forwarding", form.Value, "nftset_name", _("NFTset Name"), _("NFTset name, format: [#[4|6]:[family#table#set]]")); + o.rmempty = true; + o.datatype = "string"; + o.rempty = true; + o.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var nftset = value.split(",") + for (var i = 0; i < nftset.length; i++) { + if (!nftset[i].match(/^#[4|6]:[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+$/)) { + return _("NFTset name format error, format: [#[4|6]:[family#table#set]]"); + } + } + + return true; + } + + // other args + o = s.taboption("forwarding", form.Value, "addition_flag", _("Additional Rule Flag"), + _("Additional Flags for rules, read help on domain-rule for more information.")) + o.default = "" + o.rempty = true + o.modalonly = true; + + o = s.taboption("forwarding", form.FileUpload, "forwarding_domain_set_file", _("Domain List File"), + _("Upload domain list file, or configure auto download from Download File Setting page.")); + o.rmempty = true + o.datatype = "file" + o.rempty = true + o.editable = true + o.root_directory = "/etc/smartdns/domain-set" + + o = s.taboption("forwarding", form.TextValue, "domain_forwarding_list", + _("Domain List"), _("Configure forwarding domain name list.")); + o.rows = 10; + o.cols = 64; + o.monospace = true; + o.cfgvalue = function (section_id) { + return fs.trimmed('/etc/smartdns/domain-forwarding.list').catch(function (e) { + return ""; + }); + }; + o.write = function (section_id, formvalue) { + return this.cfgvalue(section_id).then(function (value) { + if (value == formvalue) { + return + } + return fs.write('/etc/smartdns/domain-forwarding.list', formvalue.trim().replace(/\r\n/g, '\n') + '\n'); + }); + }; + + /////////////////////////////////////// + // domain block; + /////////////////////////////////////// + o = s.taboption("block", form.FileUpload, "block_domain_set_file", _("Domain List File"), _("Upload domain list file.")); + o.rmempty = true + o.datatype = "file" + o.rempty = true + o.editable = true + o.root_directory = "/etc/smartdns/domain-set" + + o = s.taboption("block", form.TextValue, "domain_block_list", + _("Domain List"), _("Configure block domain list.")); + o.rows = 10; + o.cols = 64; + o.cfgvalue = function (section_id) { + return fs.trimmed('/etc/smartdns/domain-block.list').catch(function (e) { + return ""; + }); + }; + o.write = function (section_id, formvalue) { + return this.cfgvalue(section_id).then(function (value) { + if (value == formvalue) { + return + } + return fs.write('/etc/smartdns/domain-block.list', formvalue.trim().replace(/\r\n/g, '\n') + '\n'); + }); + }; + + /////////////////////////////////////// + // domain rule list; + /////////////////////////////////////// + o = s.taboption('domain-rule-list', form.SectionValue, '__domain-rule-list__', form.GridSection, 'domain-rule-list', _('Domain Rule List'), + _('Configure domain rule list.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + + // enable flag; + so = ss.option(form.Flag, "enabled", _("Enable"), _("Enable")); + so.rmempty = false; + so.default = so.enabled; + so.editable = true; + + // name; + so = ss.option(form.Value, "name", _("Domain Rule Name"), _("Domain Rule Name")); + + so = ss.option(form.Value, "server_group", _("Server Group"), _("DNS Server group belongs to, such as office, home.")) + so.rmempty = true + so.placeholder = "default" + so.datatype = "hostname" + so.rempty = true + for (const groupname of groupnames) { + so.value(groupname); + } + so.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var val = uci.sections('smartdns', 'server'); + for (var i = 0; i < val.length; i++) { + if (value == val[i].server_group) { + return true; + } + } + + return _('Server Group %s not exists').format(value); + + } + + so = ss.option(form.FileUpload, "domain_list_file", _("Domain List File"), + _("Upload domain list file, or configure auto download from Download File Setting page.")); + so.rmempty = true + so.datatype = "file" + so.rempty = true + so.root_directory = "/etc/smartdns/domain-set" + + so = ss.option(form.ListValue, "block_domain_type", _("Block domain"), _("Block domain.")); + so.rmempty = true; + so.value("none", _("None")); + so.value("all", "IPv4/IPv6"); + so.value("ipv4", "IPv4"); + so.value("ipv6", "IPv6"); + so.modalonly = true; + + // Support DualStack ip selection; + so = ss.option(form.ListValue, "dualstack_ip_selection", _("Dual-stack IP Selection"), + _("Enable IP selection between IPV4 and IPV6")); + so.rmempty = true; + so.default = "default"; + so.modalonly = true; + so.value("", _("default")); + so.value("yes", _("Yes")); + so.value("no", _("No")); + + so = ss.option(form.Value, "speed_check_mode", _("Speed Check Mode"), _("Smartdns speed check mode.")); + so.rmempty = true; + so.placeholder = "default"; + so.modalonly = true; + so.value("", _("default")); + so.value("ping,tcp:80,tcp:443"); + so.value("ping,tcp:443,tcp:80"); + so.value("tcp:80,tcp:443,ping"); + so.value("tcp:443,tcp:80,ping"); + so.value("none", _("None")); + so.validate = function (section_id, value) { + if (value == "") { + return true; + } + + if (value == "none") { + return true; + } + + var check_mode = value.split(",") + for (var i = 0; i < check_mode.length; i++) { + if (check_mode[i] == "ping") { + continue; + } + + if (check_mode[i].indexOf("tcp:") == 0) { + var port = check_mode[i].split(":")[1]; + if (port == "") { + return _("TCP port is empty"); + } + + continue; + } + + return _("Speed check mode is invalid."); + } + + return true; + } + + so = ss.option(form.Flag, "force_aaaa_soa", _("Force AAAA SOA"), _("Force AAAA SOA.")); + so.rmempty = true; + so.default = so.disabled; + so.modalonly = true; + + + so = ss.option(form.Value, "ipset_name", _("IPset Name"), _("IPset name.")); + so.rmempty = true; + so.datatype = "hostname"; + so.rempty = true; + so.modalonly = true; + + so = ss.option(form.Value, "nftset_name", _("NFTset Name"), _("NFTset name, format: [#[4|6]:[family#table#set]]")); + so.rmempty = true; + so.datatype = "string"; + so.rempty = true; + so.modalonly = true; + so.validate = function (section_id, value) { + if (value == "") { + return true; + } + + var nftset = value.split(",") + for (var i = 0; i < nftset.length; i++) { + if (!nftset[i].match(/#[4|6]:[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+#[a-zA-Z0-9\-_]+$/)) { + return _("NFTset name format error, format: [#[4|6]:[family#table#set]]"); + } + } + + return true; + } + + // other args + so = ss.option(form.Value, "addition_flag", _("Additional Rule Flag"), + _("Additional Flags for rules, read help on domain-rule for more information.")) + so.default = "" + so.rempty = true + so.modalonly = true; + + /////////////////////////////////////// + // domain address + /////////////////////////////////////// + o = s.taboption("domain-address", form.TextValue, "address_conf", + "", + _("Specify an IP address to return for any host in the given domains, Queries in the domains are never " + + "forwarded and always replied to with the specified IP address which may be IPv4 or IPv6.")); + o.rows = 20; + o.cfgvalue = function (section_id) { + return fs.trimmed('/etc/smartdns/address.conf'); + }; + o.write = function (section_id, formvalue) { + return this.cfgvalue(section_id).then(function (value) { + if (value == formvalue) { + return + } + return fs.write('/etc/smartdns/address.conf', formvalue.trim().replace(/\r\n/g, '\n') + '\n'); + }); + }; + + + //////////////// + // ip rules; + //////////////// + s = m.section(form.TypedSection, "ip-rule", _("IP Rules"), _("IP Rules Settings")); + s.anonymous = true; + s.nodescriptions = true; + + s.tab("ip-rule-list", _("IP Rule List"), _("Set Specific ip rule list.")); + s.tab("blackip-list", _("IP Blacklist"), _("Set Specific ip blacklist.")); + + /////////////////////////////////////// + // ip rule list; + /////////////////////////////////////// + o = s.taboption('ip-rule-list', form.SectionValue, '__ip-rule-list__', form.GridSection, 'ip-rule-list', _('IP Rule List'), + _('Configure ip rule list.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + + // enable flag; + so = ss.option(form.Flag, "enabled", _("Enable"), _("Enable")); + so.rmempty = false; + so.default = so.enabled; + so.editable = true; + + // name; + so = ss.option(form.Value, "name", _("IP Rule Name"), _("IP Rule Name")); + so.rmempty = true; + so.datatype = "string"; + + so = ss.option(form.FileUpload, "ip_set_file", _("IP Set File"), _("Upload IP set file.")); + so.rmempty = true + so.datatype = "file" + so.modalonly = true; + so.root_directory = "/etc/smartdns/ip-set" + + so = ss.option(form.DynamicList, "ip_addr", _("IP Addresses"), _("IP addresses, CIDR format.")); + so.rmempty = true; + so.datatype = "ipaddr" + so.modalonly = true; + + so = ss.option(form.Flag, "whitelist_ip", _("Whitelist IP"), _("Whitelist IP Rule, Accept IP addresses within the range.")); + so.rmempty = true; + so.default = so.disabled; + so.modalonly = true; + + so = ss.option(form.Flag, "blacklist_ip", _("Blacklist IP"), _("Blacklist IP Rule, Decline IP addresses within the range.")); + so.rmempty = true; + so.default = so.disabled; + so.modalonly = true; + + so = ss.option(form.Flag, "ignore_ip", _("Ignore IP"), _("Do not use these IP addresses.")); + so.rmempty = true; + so.default = so.disabled; + so.modalonly = true; + + so = ss.option(form.Flag, "bogus_nxdomain", _("Bogus nxdomain"), _("Return SOA when the requested result contains a specified IP address.")); + so.rmempty = true; + so.default = so.disabled; + so.modalonly = true; + + so = ss.option(form.DynamicList, "ip_alias", _("IP alias"), _("IP Address Mapping, Can be used for CDN acceleration with Anycast IP, such as Cloudflare's CDN.")); + so.rmempty = true; + so.datatype = 'ipaddr("nomask")'; + so.modalonly = true; + + // other args + so = ss.option(form.Value, "addition_flag", _("Additional Rule Flag"), + _("Additional Flags for rules, read help on ip-rule for more information.")) + so.default = "" + so.rempty = true + so.modalonly = true; + /////////////////////////////////////// + // IP Blacklist; + /////////////////////////////////////// + // blacklist; + o = s.taboption("blackip-list", form.TextValue, "blackip_ip_conf", + "", _("Configure IP blacklists that will be filtered from the results of specific DNS server.")); + o.rows = 20; + o.cfgvalue = function (section_id) { + return fs.trimmed('/etc/smartdns/blacklist-ip.conf'); + }; + o.write = function (section_id, formvalue) { + return this.cfgvalue(section_id).then(function (value) { + if (value == formvalue) { + return + } + return fs.write('/etc/smartdns/blacklist-ip.conf', formvalue.trim().replace(/\r\n/g, '\n') + '\n'); + }); + }; + + //////////////// + // Support + //////////////// + s = m.section(form.TypedSection, "smartdns", _("Technical Support"), + _("If you like this software, please buy me a cup of coffee.")); + s.anonymous = true; + + o = s.option(form.Button, "web"); + o.title = _("SmartDNS official website"); + o.inputtitle = _("open website"); + o.inputstyle = "apply"; + o.onclick = function () { + window.open("https://pymumu.github.io/smartdns", '_blank'); + }; + + o = s.option(form.Button, "report"); + o.title = _("Report bugs"); + o.inputtitle = _("Report bugs"); + o.inputstyle = "apply"; + o.onclick = function () { + window.open("https://github.com/pymumu/smartdns/issues", '_blank'); + }; + + o = s.option(form.Button, "Donate"); + o.title = _("Donate to smartdns"); + o.inputtitle = _("Donate"); + o.inputstyle = "apply"; + o.onclick = function () { + window.open("https://pymumu.github.io/smartdns/#donate", '_blank'); + }; + + o = s.option(form.DummyValue, "_restart", _("Restart Service")); + o.renderWidget = function () { + return E('button', { + 'class': 'btn cbi-button cbi-button-apply', + 'id': 'btn_restart', + 'click': ui.createHandlerFn(this, function () { + return fs.exec('/etc/init.d/smartdns', ['restart']) + .catch(function (e) { ui.addNotification(null, E('p', e.message), 'error') }); + }) + }, [_("Restart")]); + } + return m.render(); + } +}); diff --git a/luci-app-smartdns/po/de/smartdns.po b/luci-app-smartdns/po/de/smartdns.po new file mode 100644 index 0000000..743597b --- /dev/null +++ b/luci-app-smartdns/po/de/smartdns.po @@ -0,0 +1,946 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2023-02-28 10:31+0000\n" +"Last-Translator: oneforfun <svens.local.hosted@gmail.com>\n" +"Language-Team: German <https://hosted.weblate.org/projects/openwrt/" +"luciapplicationssmartdns/de/>\n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.16-dev\n" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:792 +msgid "Additional Args for upstream dns servers" +msgstr "Zusätzliche Argumente für Upstream-DNS-Server" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:886 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1090 +msgid "" +"Additional Flags for rules, read help on domain-rule for more information." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:885 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1089 +msgid "Additional Rule Flag" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:346 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:479 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791 +msgid "Additional Server Args" +msgstr "Zusätzliche Server Parameter" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:347 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:480 +msgid "" +"Additional server args, refer to the help description of the bind option." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:132 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:639 +msgid "Advanced Settings" +msgstr "Erweiterte Einstellungen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:253 +msgid "" +"Attempts to serve old responses from cache with a TTL of 0 in the response " +"without waiting for the actual resolution to finish." +msgstr "" +"Versuche, eine alte Antwort vom Cache mit TTL 0 zurückzugeben, ohne auf die " +"eigentliche Auflösung zu warten." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:161 +msgid "Automatically Set Dnsmasq" +msgstr "Dnsmasq automatisch setzen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:161 +msgid "Automatically set as upstream of dnsmasq when port changes." +msgstr "Setze automatisch als Upstream von dnsmasq when sich der Port ändert." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:229 +msgid "Bind Device" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:234 +msgid "Bind Device Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:998 +msgid "Block domain" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:998 +msgid "Block domain." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:262 +msgid "Cache Persist" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:258 +msgid "Cache Size" +msgstr "Zwischenspeichergröße" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:121 +msgid "Collecting data ..." +msgstr "Sammle Daten..." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1100 +msgid "" +"Configure IP blacklists that will be filtered from the results of specific " +"DNS server." +msgstr "" +"Definition einer IP basierten Blockierliste, welche Ergebnisse eines " +"spezifischen DNS Servers filtert." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:929 +msgid "Configure block domain list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:950 +msgid "Configure domain rule list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:900 +msgid "Configure forwarding domain name list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:137 +msgid "Custom Settings" +msgstr "Benutzerdefinierte Einstellungen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:805 +msgid "DNS Block Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:804 +msgid "DNS Forwarding Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:648 +msgid "DNS Server Name" +msgstr "DNS Server Name" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:675 +msgid "DNS Server group" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:813 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:967 +msgid "DNS Server group belongs to, such as office, home." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:651 +msgid "DNS Server ip" +msgstr "DNS-Server IP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:656 +msgid "DNS Server port" +msgstr "DNS-Server-Port" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:665 +msgid "DNS Server type" +msgstr "DNS-Server Typ" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:258 +msgid "DNS domain result cache size" +msgstr "DNS Domain Ergebnisspeichergröße" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:487 +msgid "DNS64" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:134 +msgid "DNS64 Server Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:560 +msgid "Description" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:76 +msgid "Dnsmasq Forwarded To Smartdns Failure" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:719 +msgid "Do not check certificate." +msgstr "Zertifikat nicht prüfen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:397 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:838 +msgid "Do not check speed." +msgstr "Geschwindigkeit nicht testen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807 +msgid "Domain Address" +msgstr "Domain Adresse" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:900 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:929 +msgid "Domain List" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:891 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:921 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:991 +msgid "Domain List File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:949 +msgid "Domain Rule List" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:965 +msgid "Domain Rule Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:800 +msgid "Domain Rules" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:800 +msgid "Domain Rules Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:324 +msgid "Domain TTL" +msgstr "Domäne TTL" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:336 +msgid "Domain TTL Max" +msgstr "Domäne TTL Max" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:328 +msgid "Domain TTL Min" +msgstr "Domäne TTL Min" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:246 +msgid "Domain prefetch" +msgstr "Vorabruf der Domäne" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1159 +msgid "Donate" +msgstr "Spenden" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1158 +msgid "Donate to smartdns" +msgstr "An smartdns spenden" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:526 +msgid "Download Files" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:135 +msgid "Download Files Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:135 +msgid "" +"Download domain list files for domain-rule and include config files, please " +"refresh the page after download to take effect." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:240 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1007 +msgid "Dual-stack IP Selection" +msgstr "Dual-Stack-IP-Auswahl" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:142 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:371 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:642 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:959 +msgid "Enable" +msgstr "aktivieren" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:495 +msgid "Enable Auto Update" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:241 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1008 +msgid "Enable IP selection between IPV4 and IPV6" +msgstr "Aktiviere Wahl zwischen IPv4 und IPv6" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:224 +msgid "Enable IPV6 DNS Server" +msgstr "Aktivere IPv6 DNS-Server" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:219 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:384 +msgid "Enable TCP DNS Server" +msgstr "Aktiviere TCP DNS Server" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:495 +msgid "Enable daily auto update." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:247 +msgid "Enable domain prefetch, accelerate domain response speed." +msgstr "" +"Aktivieren Sie Domänen-Prefetch, um die Reaktionsgeschwindigkeit der Domäne " +"zu beschleunigen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:372 +msgid "Enable or disable second DNS server." +msgstr "Aktivieren oder deaktivieren des zweiten DNS-Servers." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:142 +msgid "Enable or disable smartdns server" +msgstr "Aktivieren oder deaktivieren des Smartdns-Servers" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:694 +msgid "Exclude DNS Server from default group." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:694 +msgid "Exclude Default Group" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:215 +msgid "Fastest IP" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:216 +msgid "Fastest Response" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:535 +msgid "File Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 +msgid "File Type" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:702 +msgid "Filtering IP with blacklist" +msgstr "Filtern von IP mit negativ-Liste" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:214 +msgid "First Ping" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:272 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:436 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:842 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1056 +msgid "Force AAAA SOA" +msgstr "Erzwinge AAAA SOA" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:272 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:436 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:842 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1056 +msgid "Force AAAA SOA." +msgstr "Erzwinge AAAA SOA." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:277 +msgid "Force HTTPS SOA" +msgstr "Erzwinge HTTPS SOA" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:277 +msgid "Force HTTPS SOA." +msgstr "Erzwinge HTTPS SOA." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:128 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:131 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:638 +msgid "General Settings" +msgstr "Allgemeine Einstellungen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:599 +msgid "Generate Coredump" +msgstr "Generiere Coredump" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:600 +msgid "" +"Generate Coredump file when smartdns crash, coredump file is located at /tmp/" +"smartdns.xxx.core." +msgstr "" +"Erzeugt eine Coredump-Datei, wenn smartdns abstürzt. Die Coredump-Datei " +"befindet sich unter /tmp/smartdns.xxx.core." + +#: applications/luci-app-smartdns/root/usr/share/rpcd/acl.d/luci-app-smartdns.json:3 +msgid "Grant access to LuCI app smartdns" +msgstr "Zugriff auf die LuCI-App smartdns gewähren" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:737 +msgid "HTTP Host" +msgstr "HTTP-Host" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:808 +msgid "IP Blacklist" +msgstr "IP Negativ-Liste" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:701 +msgid "IP Blacklist Filtering" +msgstr "Filterung von IP-Blacklists" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:224 +msgid "IPV6 Server" +msgstr "IPV6-Server" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:440 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:846 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1062 +msgid "IPset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:440 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:846 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1062 +msgid "IPset name." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1138 +msgid "If you like this software, please buy me a cup of coffee." +msgstr "" +"Wenn Ihnen diese Software gefällt, spendieren Sie mir bitte eine Tasse " +"Kaffee." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:353 +msgid "Include Config Files<br>/etc/smartdns/conf.d" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:354 +msgid "" +"Include other config files from /etc/smartdns/conf.d or custom path, can be " +"downloaded from the download page." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:283 +msgid "Ipset name, Add domain result to ipset when speed check fails." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:527 +msgid "List of files to download." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:229 +msgid "Listen only on the specified interfaces." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:153 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:377 +msgid "Local Port" +msgstr "Lokaler Port" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:624 +msgid "Log File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:608 +msgid "Log Level" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:620 +msgid "Log Number" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:604 +msgid "Log Size" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:757 +msgid "Marking Packets" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:337 +msgid "Maximum TTL for all domain result." +msgstr "Maximale TTL für alle Ergebnisse der Domäne." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:329 +msgid "Minimum TTL for all domain result." +msgstr "Minimale TTL für alle Ergebnisse der Domäne." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:459 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:865 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1068 +msgid "NFTset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:316 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:471 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:877 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1081 +msgid "NFTset name format error, format: [#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:459 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:865 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1068 +msgid "NFTset name, format: [#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:66 +msgid "NOT RUNNING" +msgstr "LÄUFT NICHT" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:234 +msgid "Name of device name listen on." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:304 +msgid "" +"Nftset name, Add domain result to nftset when speed check fails, format: " +"[#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1014 +msgid "No" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:282 +msgid "No Speed IPset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:303 +msgid "No Speed NFTset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:718 +msgid "No check certificate" +msgstr "Kein Check der Zertifikate" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:177 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1000 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1025 +msgid "None" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:784 +msgid "Only socks5 proxy support udp server." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:780 +msgid "Please set proxy server first." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:567 +msgid "Proxy Server" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:136 +msgid "Proxy Server Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:567 +msgid "Proxy Server URL, format: [socks5|http]://user:pass@ip:port." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:575 +msgid "" +"Proxy server URL format error, format: [socks5|http]://user:pass@ip:port." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:390 +msgid "Query DNS through specific dns server group, such as office, home." +msgstr "" +"Abfrage von DNS über eine bestimmte DNS-Servergruppe, z. B. Büro, Zuhause." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:64 +msgid "RUNNING" +msgstr "LÄUFT" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:341 +msgid "Reply Domain TTL Max" +msgstr "Max TTL der Antwortdomäne" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:342 +msgid "Reply maximum TTL for all domain result." +msgstr "Maximale Antwort-TTL für alle Domänen-Ergebnisse." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1150 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1151 +msgid "Report bugs" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:267 +msgid "Resolve Local Hostnames" +msgstr "Lokale Hostnamen auflösen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:267 +msgid "Resolve local hostnames by reading Dnsmasq lease file." +msgstr "Lokale Hostnamen durch Lesen der Dnsmasq-Lease-Datei auflösen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:209 +msgid "Response Mode" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1174 +msgid "Restart" +msgstr "Neustart" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1165 +msgid "Restart Service" +msgstr "Dienst neu starten" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:133 +msgid "Second Server Settings" +msgstr "Einstellungen für den zweiten Server" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:252 +msgid "Serve expired" +msgstr "Serve abgelaufen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:389 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:675 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:813 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:967 +msgid "Server Group" +msgstr "Servergruppe" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:833 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:987 +msgid "Server Group %s not exists" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:147 +msgid "Server Name" +msgstr "Servername" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807 +msgid "Set Specific domain ip address." +msgstr "Spezifische Domänen-IP-Adresse einstellen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806 +msgid "Set Specific domain rule list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:808 +msgid "Set Specific ip blacklist." +msgstr "Spezifische IP-Blacklist einstellen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:709 +msgid "Set TLS hostname to verify." +msgstr "TLS-Hostname zur Überprüfung einstellen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:758 +msgid "Set mark on packets." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:738 +msgid "" +"Set the HTTP host used for the query. Use this parameter when the host of " +"the URL address is an IP address." +msgstr "" +"Legt den für die Abfrage verwendeten HTTP-Host fest. Verwenden Sie diesen " +"Parameter, wenn der Host der URL-Adresse eine IP-Adresse ist." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:728 +msgid "Sets the server name indication for query. '-' for disable SNI name." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:128 +msgid "Settings" +msgstr "Einstellungen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:402 +msgid "Skip Address Rules" +msgstr "Adressregeln überspringen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:431 +msgid "Skip Cache" +msgstr "Cache überspringen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:431 +msgid "Skip Cache." +msgstr "Cache überspringen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:425 +msgid "Skip Dualstack Selection" +msgstr "Dualstack-Auswahl überspringen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:426 +msgid "Skip Dualstack Selection." +msgstr "Dualstack-Auswahl überspringen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:414 +msgid "Skip Ipset Rule" +msgstr "Ipset-Regel überspringen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:408 +msgid "Skip Nameserver Rule" +msgstr "Nameserver-Regel überspringen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:420 +msgid "Skip SOA Address Rule" +msgstr "SOA-Adressregel überspringen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:421 +msgid "Skip SOA address rules." +msgstr "SOA-Adressregeln überspringen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:396 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:837 +msgid "Skip Speed Check" +msgstr "Geschwindigkeitsprüfung überspringen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:403 +msgid "Skip address rules." +msgstr "Adressregeln überspringen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:415 +msgid "Skip ipset rules." +msgstr "ipset-Regeln überspringen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:409 +msgid "Skip nameserver rules." +msgstr "Nameserver-Regeln überspringen." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:95 +#: applications/luci-app-smartdns/root/usr/share/luci/menu.d/luci-app-smartdns.json:3 +msgid "SmartDNS" +msgstr "SmartDNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:96 +msgid "SmartDNS Server" +msgstr "SmartDNS-Server" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:97 +msgid "" +"SmartDNS is a local high-performance DNS server, supports finding fastest " +"IP, supports ad filtering, and supports avoiding DNS poisoning." +msgstr "" +"SmartDNS ist ein lokaler Hochleistungs-DNS-Server, der die Suche nach der " +"schnellsten IP unterstützt, die Filterung von Werbung und die Vermeidung von " +"DNS-Poisoning ermöglicht." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1142 +msgid "SmartDNS official website" +msgstr "Offizielle Website von SmartDNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:377 +msgid "Smartdns local server port" +msgstr "Lokaler Smartdns-Serverport" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:154 +msgid "" +"Smartdns local server port, smartdns will be automatically set as main dns " +"when the port is 53." +msgstr "" +"Lokaler Smartdns-Serverport, smartdns wird automatisch als Haupt-DNS " +"eingestellt, wenn 53 der Port ist." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:210 +msgid "" +"Smartdns response mode, First Ping: return the first ping IP, Fastest IP: " +"return the fastest IP, Fastest Response: return the fastest DNS response." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:147 +msgid "Smartdns server name" +msgstr "Smartdns-Servername" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:169 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1016 +msgid "Smartdns speed check mode." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1119 +msgid "" +"Specify an IP address to return for any host in the given domains, Queries " +"in the domains are never forwarded and always replied to with the specified " +"IP address which may be IPv4 or IPv6." +msgstr "" +"Geben Sie eine IP-Adresse an, die für einen beliebigen Host in den " +"angegebenen Domänen zurückgegeben werden soll. Abfragen in den Domänen " +"werden nie weitergeleitet und immer mit der angegebenen IP-Adresse " +"beantwortet, die IPv4 oder IPv6 sein kann." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:169 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1016 +msgid "Speed Check Mode" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:202 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1050 +msgid "Speed check mode is invalid." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:219 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:384 +msgid "TCP Server" +msgstr "TCP-Server" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:196 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1044 +msgid "TCP port is empty" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:708 +msgid "TLS Hostname Verify" +msgstr "Überprüfung des TLS-Hostnamens" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:727 +msgid "TLS SNI name" +msgstr "TLS-SNI-Name" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:746 +msgid "TLS SPKI Pinning" +msgstr "TLS-SPKI-Pinning" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:324 +msgid "TTL for all domain result." +msgstr "TTL für alle Domänenergebnisse." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1137 +msgid "Technical Support" +msgstr "Technische Unterstützung" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:539 +msgid "URL" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:548 +msgid "URL format error, format: http:// or https://" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:523 +msgid "Update" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:514 +msgid "Update Files" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:500 +msgid "Upload Config File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:507 +msgid "Upload Domain List File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:508 +msgid "Upload domain list file to /etc/smartdns/domain-set" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:892 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:992 +msgid "" +"Upload domain list file, or configure auto download from Download File " +"Setting page." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:921 +msgid "Upload domain list file." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:501 +msgid "Upload smartdns config file to /etc/smartdns/conf.d" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:631 +msgid "Upstream Servers" +msgstr "Upstream-Server" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:632 +msgid "" +"Upstream Servers, support UDP, TCP protocol. Please configure multiple DNS " +"servers, including multiple foreign DNS servers." +msgstr "" +"Upstream-Server, die die Protokolle UDP und TCP unterstützen. Bitte " +"konfigurieren Sie mehrere DNS-Server, einschließlich mehrerer ausländischer " +"DNS-Server." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:765 +msgid "Use Proxy" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:766 +msgid "Use proxy to connect to upstream DNS server." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:747 +msgid "" +"Used to verify the validity of the TLS server, The value is Base64 encoded " +"SPKI fingerprint, leaving blank to indicate that the validity of TLS is not " +"verified." +msgstr "" +"Wird verwendet, um die Gültigkeit des TLS-Servers zu überprüfen. Der Wert " +"ist ein Base64-kodierter SPKI-Fingerabdruck, leer lassen bedeutet, dass die " +"Gültigkeit von TLS nicht überprüft wird." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:262 +msgid "Write cache to disk on exit and load on startup." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1013 +msgid "Yes" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:172 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:213 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:611 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1012 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1020 +msgid "default" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:555 +msgid "domain list (/etc/smartdns/domain-set)" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:670 +msgid "https" +msgstr "https" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:651 +msgid "ip" +msgstr "IP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:295 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:452 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:858 +msgid "ipset name format error, format: [#[4|6]:]ipsetname" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1143 +msgid "open website" +msgstr "Webseite öffnen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:656 +msgid "port" +msgstr "Port" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:556 +msgid "smartdns config (/etc/smartdns/conf.d)" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:585 +msgid "smartdns custom settings" +msgstr "Benutzerdefinierte SmartDNS-Einstellungen" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:668 +msgid "tcp" +msgstr "tcp" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:669 +msgid "tls" +msgstr "tls" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:665 +msgid "type" +msgstr "Typ" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:667 +msgid "udp" +msgstr "udp" + +#~ msgid "" +#~ "DNS Server group belongs to, used with nameserver, such as office, home." +#~ msgstr "" +#~ "DNS-Server-Gruppe, zu jener der Nameserver gehört, z. B. Büro, Zuhause." + +#~ msgid "Dnsmasq Forwared To Smartdns Failure" +#~ msgstr "Fehler der Dnsmasq-Weiterleitung an Smartdns" + +#~ msgid "Sets the server name indication for query." +#~ msgstr "Legt die Anzeige des Servernamens für die Abfrage fest." + +#~ msgid "none" +#~ msgstr "kein" diff --git a/luci-app-smartdns/po/es/smartdns.po b/luci-app-smartdns/po/es/smartdns.po new file mode 100644 index 0000000..fda0ab1 --- /dev/null +++ b/luci-app-smartdns/po/es/smartdns.po @@ -0,0 +1,1000 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2020-07-02 17:20-0300\n" +"PO-Revision-Date: 2023-02-26 00:30+0000\n" +"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n" +"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/" +"luciapplicationssmartdns/es/>\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.16-dev\n" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:792 +msgid "Additional Args for upstream dns servers" +msgstr "Args adicionales para servidores DNS aguas arriba" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:886 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1090 +msgid "" +"Additional Flags for rules, read help on domain-rule for more information." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:885 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1089 +msgid "Additional Rule Flag" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:346 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:479 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791 +msgid "Additional Server Args" +msgstr "Args adicionales del servidor" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:347 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:480 +msgid "" +"Additional server args, refer to the help description of the bind option." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:132 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:639 +msgid "Advanced Settings" +msgstr "Configuración avanzada" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:253 +msgid "" +"Attempts to serve old responses from cache with a TTL of 0 in the response " +"without waiting for the actual resolution to finish." +msgstr "" +"Intenta servir respuestas antiguas de la memoria caché con un TTL de 0 en la " +"respuesta sin esperar a que finalice la resolución real." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:161 +msgid "Automatically Set Dnsmasq" +msgstr "Establecer Dnsmasq automáticamente" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:161 +msgid "Automatically set as upstream of dnsmasq when port changes." +msgstr "" +"Establecido automáticamente como conexión ascendente de dnsmasq cuando " +"cambia el puerto." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:229 +msgid "Bind Device" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:234 +msgid "Bind Device Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:998 +msgid "Block domain" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:998 +msgid "Block domain." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:262 +msgid "Cache Persist" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:258 +msgid "Cache Size" +msgstr "Tamaño del caché" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:121 +msgid "Collecting data ..." +msgstr "Recolectando datos..." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1100 +msgid "" +"Configure IP blacklists that will be filtered from the results of specific " +"DNS server." +msgstr "" +"Configure listas negras de IP que se filtrarán de los resultados de un " +"servidor DNS específico." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:929 +msgid "Configure block domain list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:950 +msgid "Configure domain rule list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:900 +msgid "Configure forwarding domain name list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:137 +msgid "Custom Settings" +msgstr "Configuraciones personalizadas" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:805 +msgid "DNS Block Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:804 +msgid "DNS Forwarding Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:648 +msgid "DNS Server Name" +msgstr "Nombre del servidor DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:675 +msgid "DNS Server group" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:813 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:967 +msgid "DNS Server group belongs to, such as office, home." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:651 +msgid "DNS Server ip" +msgstr "IP del servidor DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:656 +msgid "DNS Server port" +msgstr "Puerto del servidor DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:665 +msgid "DNS Server type" +msgstr "Tipo de servidor DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:258 +msgid "DNS domain result cache size" +msgstr "Tamaño del caché de resultados del dominio DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:487 +msgid "DNS64" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:134 +msgid "DNS64 Server Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:560 +msgid "Description" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:76 +msgid "Dnsmasq Forwarded To Smartdns Failure" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:719 +msgid "Do not check certificate." +msgstr "No verifique el certificado." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:397 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:838 +msgid "Do not check speed." +msgstr "No verifique la velocidad." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807 +msgid "Domain Address" +msgstr "Dirección de dominio" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:900 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:929 +msgid "Domain List" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:891 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:921 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:991 +msgid "Domain List File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:949 +msgid "Domain Rule List" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:965 +msgid "Domain Rule Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:800 +msgid "Domain Rules" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:800 +msgid "Domain Rules Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:324 +msgid "Domain TTL" +msgstr "TTL del dominio" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:336 +msgid "Domain TTL Max" +msgstr "TTL Máx. del dominio" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:328 +msgid "Domain TTL Min" +msgstr "TTL Mín. del dominio" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:246 +msgid "Domain prefetch" +msgstr "Prebúsqueda de dominios" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1159 +msgid "Donate" +msgstr "Donar" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1158 +msgid "Donate to smartdns" +msgstr "Donar a smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:526 +msgid "Download Files" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:135 +msgid "Download Files Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:135 +msgid "" +"Download domain list files for domain-rule and include config files, please " +"refresh the page after download to take effect." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:240 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1007 +msgid "Dual-stack IP Selection" +msgstr "Selección de IP de doble pila" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:142 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:371 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:642 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:959 +msgid "Enable" +msgstr "Activar" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:495 +msgid "Enable Auto Update" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:241 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1008 +msgid "Enable IP selection between IPV4 and IPV6" +msgstr "Activar la selección de IP entre IPv4 e IPv6" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:224 +msgid "Enable IPV6 DNS Server" +msgstr "Activar servidor DNS IPv6" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:219 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:384 +msgid "Enable TCP DNS Server" +msgstr "Activar el servidor DNS TCP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:495 +msgid "Enable daily auto update." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:247 +msgid "Enable domain prefetch, accelerate domain response speed." +msgstr "" +"Active la captación previa del dominio, acelere la velocidad de respuesta " +"del dominio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:372 +msgid "Enable or disable second DNS server." +msgstr "Activar o desactivar el segundo servidor DNS." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:142 +msgid "Enable or disable smartdns server" +msgstr "Activar o desactivar el servidor smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:694 +msgid "Exclude DNS Server from default group." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:694 +msgid "Exclude Default Group" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:215 +msgid "Fastest IP" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:216 +msgid "Fastest Response" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:535 +msgid "File Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 +msgid "File Type" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:702 +msgid "Filtering IP with blacklist" +msgstr "Filtrado de IP con lista negra" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:214 +msgid "First Ping" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:272 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:436 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:842 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1056 +msgid "Force AAAA SOA" +msgstr "Forzar AAAA SOA" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:272 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:436 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:842 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1056 +msgid "Force AAAA SOA." +msgstr "Forzar AAAA SOA." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:277 +msgid "Force HTTPS SOA" +msgstr "Forzar HTTPS SOA" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:277 +msgid "Force HTTPS SOA." +msgstr "Forzar HTTPS SOA." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:128 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:131 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:638 +msgid "General Settings" +msgstr "Configuración general" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:599 +msgid "Generate Coredump" +msgstr "Generar Coredump" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:600 +msgid "" +"Generate Coredump file when smartdns crash, coredump file is located at /tmp/" +"smartdns.xxx.core." +msgstr "" +"Genere el archivo Coredump cuando smartdns falla, el archivo coredump se " +"encuentra en /tmp/smartdns.xxx.core." + +#: applications/luci-app-smartdns/root/usr/share/rpcd/acl.d/luci-app-smartdns.json:3 +msgid "Grant access to LuCI app smartdns" +msgstr "Conceder acceso a la aplicación LuCI smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:737 +msgid "HTTP Host" +msgstr "Host HTTP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:808 +msgid "IP Blacklist" +msgstr "Lista negra de IP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:701 +msgid "IP Blacklist Filtering" +msgstr "Filtrado de la lista negra de IP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:224 +msgid "IPV6 Server" +msgstr "Servidor IPv6" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:440 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:846 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1062 +msgid "IPset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:440 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:846 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1062 +msgid "IPset name." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1138 +msgid "If you like this software, please buy me a cup of coffee." +msgstr "Si le gusta este software, cómpreme una taza de café." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:353 +msgid "Include Config Files<br>/etc/smartdns/conf.d" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:354 +msgid "" +"Include other config files from /etc/smartdns/conf.d or custom path, can be " +"downloaded from the download page." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:283 +msgid "Ipset name, Add domain result to ipset when speed check fails." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:527 +msgid "List of files to download." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:229 +msgid "Listen only on the specified interfaces." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:153 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:377 +msgid "Local Port" +msgstr "Puerto local" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:624 +msgid "Log File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:608 +msgid "Log Level" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:620 +msgid "Log Number" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:604 +msgid "Log Size" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:757 +msgid "Marking Packets" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:337 +msgid "Maximum TTL for all domain result." +msgstr "TTL máximo para todos los resultados de dominio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:329 +msgid "Minimum TTL for all domain result." +msgstr "TTL mínimo para todos los resultados de dominio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:459 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:865 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1068 +msgid "NFTset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:316 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:471 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:877 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1081 +msgid "NFTset name format error, format: [#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:459 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:865 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1068 +msgid "NFTset name, format: [#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:66 +msgid "NOT RUNNING" +msgstr "NO SE ESTÁ EJECUTANDO" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:234 +msgid "Name of device name listen on." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:304 +msgid "" +"Nftset name, Add domain result to nftset when speed check fails, format: " +"[#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1014 +msgid "No" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:282 +msgid "No Speed IPset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:303 +msgid "No Speed NFTset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:718 +msgid "No check certificate" +msgstr "No verificar el certificado" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:177 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1000 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1025 +msgid "None" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:784 +msgid "Only socks5 proxy support udp server." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:780 +msgid "Please set proxy server first." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:567 +msgid "Proxy Server" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:136 +msgid "Proxy Server Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:567 +msgid "Proxy Server URL, format: [socks5|http]://user:pass@ip:port." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:575 +msgid "" +"Proxy server URL format error, format: [socks5|http]://user:pass@ip:port." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:390 +msgid "Query DNS through specific dns server group, such as office, home." +msgstr "" +"Consulta DNS a través de un grupo de servidores dns específico, como " +"oficina, hogar." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:64 +msgid "RUNNING" +msgstr "EJECUTANDO" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:341 +msgid "Reply Domain TTL Max" +msgstr "TTL máximo del dominio de respuesta" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:342 +msgid "Reply maximum TTL for all domain result." +msgstr "Responda el TTL máximo para todos los resultados del dominio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1150 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1151 +msgid "Report bugs" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:267 +msgid "Resolve Local Hostnames" +msgstr "Resolver nombres de host locales" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:267 +msgid "Resolve local hostnames by reading Dnsmasq lease file." +msgstr "" +"Resuelva los nombres de host locales leyendo el archivo de concesiones de " +"Dnsmasq." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:209 +msgid "Response Mode" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1174 +msgid "Restart" +msgstr "Reiniciar" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1165 +msgid "Restart Service" +msgstr "Reiniciar servicio" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:133 +msgid "Second Server Settings" +msgstr "Segunda configuración del servidor" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:252 +msgid "Serve expired" +msgstr "Servir expirado" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:389 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:675 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:813 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:967 +msgid "Server Group" +msgstr "Grupo de servidores" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:833 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:987 +msgid "Server Group %s not exists" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:147 +msgid "Server Name" +msgstr "Nombre del servidor" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807 +msgid "Set Specific domain ip address." +msgstr "Establecer dirección IP de dominio específico." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806 +msgid "Set Specific domain rule list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:808 +msgid "Set Specific ip blacklist." +msgstr "Establecer lista negra de IP específica." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:709 +msgid "Set TLS hostname to verify." +msgstr "Establezca el nombre de host TLS para verificar." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:758 +msgid "Set mark on packets." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:738 +msgid "" +"Set the HTTP host used for the query. Use this parameter when the host of " +"the URL address is an IP address." +msgstr "" +"Establezca el host HTTP utilizado para la consulta. Use este parámetro " +"cuando el host de la dirección URL sea una dirección IP." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:728 +msgid "Sets the server name indication for query. '-' for disable SNI name." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:128 +msgid "Settings" +msgstr "Configuraciones" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:402 +msgid "Skip Address Rules" +msgstr "Omitir reglas de dirección" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:431 +msgid "Skip Cache" +msgstr "Omitir caché" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:431 +msgid "Skip Cache." +msgstr "Omitir caché." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:425 +msgid "Skip Dualstack Selection" +msgstr "Omitir selección de pila doble" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:426 +msgid "Skip Dualstack Selection." +msgstr "Omitir selección de pila doble." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:414 +msgid "Skip Ipset Rule" +msgstr "Omitir regla de Ipset" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:408 +msgid "Skip Nameserver Rule" +msgstr "Omitir regla de servidor de nombres" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:420 +msgid "Skip SOA Address Rule" +msgstr "Omitir regla de dirección SOA" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:421 +msgid "Skip SOA address rules." +msgstr "Omita las reglas de dirección SOA." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:396 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:837 +msgid "Skip Speed Check" +msgstr "Omitir comprobación de velocidad" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:403 +msgid "Skip address rules." +msgstr "Omitir reglas de dirección." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:415 +msgid "Skip ipset rules." +msgstr "Omitir las reglas de ipset." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:409 +msgid "Skip nameserver rules." +msgstr "Omitir las reglas del servidor de nombres." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:95 +#: applications/luci-app-smartdns/root/usr/share/luci/menu.d/luci-app-smartdns.json:3 +msgid "SmartDNS" +msgstr "SmartDNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:96 +msgid "SmartDNS Server" +msgstr "Servidor SmartDNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:97 +msgid "" +"SmartDNS is a local high-performance DNS server, supports finding fastest " +"IP, supports ad filtering, and supports avoiding DNS poisoning." +msgstr "" +"SmartDNS es un servidor DNS local de alto rendimiento, admite la búsqueda de " +"la IP más rápida, admite el filtrado de anuncios y evita el envenenamiento " +"de DNS." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1142 +msgid "SmartDNS official website" +msgstr "Sitio web oficial de SmartDNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:377 +msgid "Smartdns local server port" +msgstr "Puerto del servidor local Smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:154 +msgid "" +"Smartdns local server port, smartdns will be automatically set as main dns " +"when the port is 53." +msgstr "" +"Puerto del servidor local de Smartdns, se configurará automáticamente como " +"DNS principal cuando el puerto sea 53." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:210 +msgid "" +"Smartdns response mode, First Ping: return the first ping IP, Fastest IP: " +"return the fastest IP, Fastest Response: return the fastest DNS response." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:147 +msgid "Smartdns server name" +msgstr "Nombre del servidor de Smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:169 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1016 +msgid "Smartdns speed check mode." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1119 +msgid "" +"Specify an IP address to return for any host in the given domains, Queries " +"in the domains are never forwarded and always replied to with the specified " +"IP address which may be IPv4 or IPv6." +msgstr "" +"Especifique una dirección IP para devolver para cualquier host en los " +"dominios dados, las consultas en los dominios nunca se reenvían y siempre se " +"responden con la dirección IP especificada que puede ser IPv4 o IPv6." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:169 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1016 +msgid "Speed Check Mode" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:202 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1050 +msgid "Speed check mode is invalid." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:219 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:384 +msgid "TCP Server" +msgstr "Servidor TCP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:196 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1044 +msgid "TCP port is empty" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:708 +msgid "TLS Hostname Verify" +msgstr "Verificar nombre de host TLS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:727 +msgid "TLS SNI name" +msgstr "Nombre SNI de TLS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:746 +msgid "TLS SPKI Pinning" +msgstr "TLS SPKI Anclado" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:324 +msgid "TTL for all domain result." +msgstr "TTL para todos los resultados de dominio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1137 +msgid "Technical Support" +msgstr "Soporte técnico" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:539 +msgid "URL" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:548 +msgid "URL format error, format: http:// or https://" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:523 +msgid "Update" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:514 +msgid "Update Files" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:500 +msgid "Upload Config File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:507 +msgid "Upload Domain List File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:508 +msgid "Upload domain list file to /etc/smartdns/domain-set" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:892 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:992 +msgid "" +"Upload domain list file, or configure auto download from Download File " +"Setting page." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:921 +msgid "Upload domain list file." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:501 +msgid "Upload smartdns config file to /etc/smartdns/conf.d" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:631 +msgid "Upstream Servers" +msgstr "Servidores aguas arriba" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:632 +msgid "" +"Upstream Servers, support UDP, TCP protocol. Please configure multiple DNS " +"servers, including multiple foreign DNS servers." +msgstr "" +"Servidores aguas arriba, soporte UDP, protocolo TCP. Configure varios " +"servidores DNS, incluidos varios servidores DNS externos." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:765 +msgid "Use Proxy" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:766 +msgid "Use proxy to connect to upstream DNS server." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:747 +msgid "" +"Used to verify the validity of the TLS server, The value is Base64 encoded " +"SPKI fingerprint, leaving blank to indicate that the validity of TLS is not " +"verified." +msgstr "" +"Se utiliza para verificar la validez del servidor TLS. El valor es la huella " +"digital SPKI codificada en Base64, y se deja en blanco para indicar que no " +"se verifica la validez de TLS." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:262 +msgid "Write cache to disk on exit and load on startup." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1013 +msgid "Yes" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:172 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:213 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:611 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1012 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1020 +msgid "default" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:555 +msgid "domain list (/etc/smartdns/domain-set)" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:670 +msgid "https" +msgstr "https" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:651 +msgid "ip" +msgstr "ip" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:295 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:452 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:858 +msgid "ipset name format error, format: [#[4|6]:]ipsetname" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1143 +msgid "open website" +msgstr "abrir sitio web" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:656 +msgid "port" +msgstr "puerto" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:556 +msgid "smartdns config (/etc/smartdns/conf.d)" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:585 +msgid "smartdns custom settings" +msgstr "configuraciones personalizadas de smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:668 +msgid "tcp" +msgstr "tcp" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:669 +msgid "tls" +msgstr "tls" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:665 +msgid "type" +msgstr "tipo" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:667 +msgid "udp" +msgstr "udp" + +#~ msgid "" +#~ "DNS Server group belongs to, used with nameserver, such as office, home." +#~ msgstr "" +#~ "El grupo del servidor DNS pertenece a, usado con el servidor de nombres, " +#~ "como la oficina, el hogar." + +#~ msgid "Dnsmasq Forwared To Smartdns Failure" +#~ msgstr "Fallo en el reenvío de dnsmasq a SmartDNS" + +#~ msgid "Sets the server name indication for query." +#~ msgstr "Establece la indicación del nombre del servidor para la consulta." + +#~ msgid "IPV4 53 Port Redirect Failure" +#~ msgstr "Error de reenvío de puerto IPv4 53" + +#~ msgid "IPV6 53 Port Redirect Failure" +#~ msgstr "Error de reenvío de puerto IPv6 53" + +#~ msgid "Redirect" +#~ msgstr "Redirigir" + +#~ msgid "Redirect 53 port to SmartDNS" +#~ msgstr "Redirigir el puerto 53 a SmartDNS" + +#~ msgid "Run as dnsmasq upstream server" +#~ msgstr "Ejecutar como servidor dnsmasq aguas arriba" + +#~ msgid "SmartDNS redirect mode" +#~ msgstr "Modo de redireccionamiento SmartDNS" + +#~ msgid "none" +#~ msgstr "ninguno" + +#~ msgid "DNS Server group belongs to," +#~ msgstr "El grupo del servidor DNS pertenece a," + +#~ msgid "" +#~ "SmartDNS is a local high-performance DNS server, supports finding fastest " +#~ "IP," +#~ msgstr "" +#~ "SmartDNS es un servidor DNS local de alto rendimiento, admite la búsqueda " +#~ "de IP más rápida," + +#~ msgid "" +#~ "Specify an IP address to return for any host in the given domains, " +#~ "Queries in the domains are never" +#~ msgstr "" +#~ "Especifique una dirección IP para devolver para cualquier host en los " +#~ "dominios dados, las consultas en los dominios nunca son" + +#~ msgid "" +#~ "Upstream Servers, support UDP, TCP protocol. Please configure multiple " +#~ "DNS servers," +#~ msgstr "" +#~ "Servidores aguas arriba, soporte UDP, protocolo TCP. Configura varios " +#~ "servidores DNS," + +#~ msgid "" +#~ "Used to verify the validity of the TLS server, The value is Base64 " +#~ "encoded SPKI fingerprint," +#~ msgstr "" +#~ "Se utiliza para verificar la validez del servidor TLS. El valor es la " +#~ "huella digital SPKI codificada en Base64," diff --git a/luci-app-smartdns/po/pt-BR/smartdns.po b/luci-app-smartdns/po/pt-BR/smartdns.po new file mode 100644 index 0000000..07dffbd --- /dev/null +++ b/luci-app-smartdns/po/pt-BR/smartdns.po @@ -0,0 +1,964 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2023-03-08 10:38+0000\n" +"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n" +"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" +"openwrt/luciapplicationssmartdns/pt_BR/>\n" +"Language: pt-BR\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.16.2-dev\n" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:792 +msgid "Additional Args for upstream dns servers" +msgstr "Args adicionais para servidores dns upstream" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:886 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1090 +msgid "" +"Additional Flags for rules, read help on domain-rule for more information." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:885 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1089 +msgid "Additional Rule Flag" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:346 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:479 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791 +msgid "Additional Server Args" +msgstr "Args Adicionais Sobre o Servidor" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:347 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:480 +msgid "" +"Additional server args, refer to the help description of the bind option." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:132 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:639 +msgid "Advanced Settings" +msgstr "Configurações avançadas" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:253 +msgid "" +"Attempts to serve old responses from cache with a TTL of 0 in the response " +"without waiting for the actual resolution to finish." +msgstr "" +"Tentativas de servir respostas antigas do cache com um TTL de 0 na resposta " +"sem esperar o término da resolução real." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:161 +msgid "Automatically Set Dnsmasq" +msgstr "Definir o Dnsmasq automaticamente" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:161 +msgid "Automatically set as upstream of dnsmasq when port changes." +msgstr "" +"Definido automaticamente como upstream do dnsmasq quando a porta se alterar." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:229 +msgid "Bind Device" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:234 +msgid "Bind Device Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:998 +msgid "Block domain" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:998 +msgid "Block domain." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:262 +msgid "Cache Persist" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:258 +msgid "Cache Size" +msgstr "Tamanho do Cache" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:121 +msgid "Collecting data ..." +msgstr "Coletando dados ..." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1100 +msgid "" +"Configure IP blacklists that will be filtered from the results of specific " +"DNS server." +msgstr "" +"Configure as listas negras dos IP que serão filtradas a partir dos " +"resultados de um servidor DNS específico." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:929 +msgid "Configure block domain list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:950 +msgid "Configure domain rule list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:900 +msgid "Configure forwarding domain name list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:137 +msgid "Custom Settings" +msgstr "Configurações Personalizadas" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:805 +msgid "DNS Block Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:804 +msgid "DNS Forwarding Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:648 +msgid "DNS Server Name" +msgstr "Nome do Servidor DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:675 +msgid "DNS Server group" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:813 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:967 +msgid "DNS Server group belongs to, such as office, home." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:651 +msgid "DNS Server ip" +msgstr "Endereço IP do Servidor DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:656 +msgid "DNS Server port" +msgstr "Porta do Servidor DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:665 +msgid "DNS Server type" +msgstr "Tipo do Servidor DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:258 +msgid "DNS domain result cache size" +msgstr "Tamanho do cache para o resultado do domínio DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:487 +msgid "DNS64" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:134 +msgid "DNS64 Server Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:560 +msgid "Description" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:76 +msgid "Dnsmasq Forwarded To Smartdns Failure" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:719 +msgid "Do not check certificate." +msgstr "Não verifique o certificado." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:397 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:838 +msgid "Do not check speed." +msgstr "Não verifique a velocidade." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807 +msgid "Domain Address" +msgstr "Endereço do domínio" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:900 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:929 +msgid "Domain List" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:891 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:921 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:991 +msgid "Domain List File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:949 +msgid "Domain Rule List" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:965 +msgid "Domain Rule Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:800 +msgid "Domain Rules" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:800 +msgid "Domain Rules Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:324 +msgid "Domain TTL" +msgstr "TTL do domínio" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:336 +msgid "Domain TTL Max" +msgstr "TTL Max. do Domínio" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:328 +msgid "Domain TTL Min" +msgstr "TTL Min. do Domínio" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:246 +msgid "Domain prefetch" +msgstr "Pré-aquisição do Domínio" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1159 +msgid "Donate" +msgstr "Doe" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1158 +msgid "Donate to smartdns" +msgstr "Doar para o smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:526 +msgid "Download Files" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:135 +msgid "Download Files Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:135 +msgid "" +"Download domain list files for domain-rule and include config files, please " +"refresh the page after download to take effect." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:240 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1007 +msgid "Dual-stack IP Selection" +msgstr "Seleção IP com pilha dupla" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:142 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:371 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:642 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:959 +msgid "Enable" +msgstr "Ativar" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:495 +msgid "Enable Auto Update" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:241 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1008 +msgid "Enable IP selection between IPV4 and IPV6" +msgstr "Ative a seleção do IP entre o IPV4 e o IPV6" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:224 +msgid "Enable IPV6 DNS Server" +msgstr "Ativar o Servidor IPV6 do DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:219 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:384 +msgid "Enable TCP DNS Server" +msgstr "Ative o TCP do servidor DNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:495 +msgid "Enable daily auto update." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:247 +msgid "Enable domain prefetch, accelerate domain response speed." +msgstr "" +"Ative a pré-aquisição do domínio, acelera a velocidade de resposta do " +"domínio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:372 +msgid "Enable or disable second DNS server." +msgstr "Ative ou desative o segundo servidor DNS." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:142 +msgid "Enable or disable smartdns server" +msgstr "Ative ou desative o servidor smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:694 +msgid "Exclude DNS Server from default group." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:694 +msgid "Exclude Default Group" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:215 +msgid "Fastest IP" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:216 +msgid "Fastest Response" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:535 +msgid "File Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 +msgid "File Type" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:702 +msgid "Filtering IP with blacklist" +msgstr "Filtrando o IP com um alista negra" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:214 +msgid "First Ping" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:272 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:436 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:842 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1056 +msgid "Force AAAA SOA" +msgstr "Impor AAAA SOA" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:272 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:436 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:842 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1056 +msgid "Force AAAA SOA." +msgstr "Impor AAAA SOA." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:277 +msgid "Force HTTPS SOA" +msgstr "Impor o HTTPS SOA" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:277 +msgid "Force HTTPS SOA." +msgstr "Impor o HTTPS SOA." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:128 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:131 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:638 +msgid "General Settings" +msgstr "Configurações gerais" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:599 +msgid "Generate Coredump" +msgstr "Gerar Coredump" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:600 +msgid "" +"Generate Coredump file when smartdns crash, coredump file is located at /tmp/" +"smartdns.xxx.core." +msgstr "" +"Gere um arquivo Coredump quando o smartdns falhar, o arquivo coredump está " +"localizado em /tmp/smartdns.xxx.core." + +#: applications/luci-app-smartdns/root/usr/share/rpcd/acl.d/luci-app-smartdns.json:3 +msgid "Grant access to LuCI app smartdns" +msgstr "Conceda acesso ao LuCI app smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:737 +msgid "HTTP Host" +msgstr "Host HTTP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:808 +msgid "IP Blacklist" +msgstr "Lista negra de IPs" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:701 +msgid "IP Blacklist Filtering" +msgstr "Filtragem da Lista Negra dos IPs" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:224 +msgid "IPV6 Server" +msgstr "Servidor IPV6" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:440 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:846 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1062 +msgid "IPset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:440 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:846 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1062 +msgid "IPset name." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1138 +msgid "If you like this software, please buy me a cup of coffee." +msgstr "Caso goste deste software, por favor, me pague uma xícara de café." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:353 +msgid "Include Config Files<br>/etc/smartdns/conf.d" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:354 +msgid "" +"Include other config files from /etc/smartdns/conf.d or custom path, can be " +"downloaded from the download page." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:283 +msgid "Ipset name, Add domain result to ipset when speed check fails." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:527 +msgid "List of files to download." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:229 +msgid "Listen only on the specified interfaces." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:153 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:377 +msgid "Local Port" +msgstr "Porta Local" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:624 +msgid "Log File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:608 +msgid "Log Level" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:620 +msgid "Log Number" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:604 +msgid "Log Size" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:757 +msgid "Marking Packets" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:337 +msgid "Maximum TTL for all domain result." +msgstr "TTL máximo para todos os resultados do domínio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:329 +msgid "Minimum TTL for all domain result." +msgstr "TTL mínimo para todos os resultados do domínio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:459 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:865 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1068 +msgid "NFTset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:316 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:471 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:877 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1081 +msgid "NFTset name format error, format: [#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:459 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:865 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1068 +msgid "NFTset name, format: [#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:66 +msgid "NOT RUNNING" +msgstr "NÃO ESTÁ EM EXECUÇÃO" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:234 +msgid "Name of device name listen on." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:304 +msgid "" +"Nftset name, Add domain result to nftset when speed check fails, format: " +"[#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1014 +msgid "No" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:282 +msgid "No Speed IPset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:303 +msgid "No Speed NFTset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:718 +msgid "No check certificate" +msgstr "Não verifique o certificado" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:177 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1000 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1025 +msgid "None" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:784 +msgid "Only socks5 proxy support udp server." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:780 +msgid "Please set proxy server first." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:567 +msgid "Proxy Server" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:136 +msgid "Proxy Server Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:567 +msgid "Proxy Server URL, format: [socks5|http]://user:pass@ip:port." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:575 +msgid "" +"Proxy server URL format error, format: [socks5|http]://user:pass@ip:port." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:390 +msgid "Query DNS through specific dns server group, such as office, home." +msgstr "" +"Consulta o DNS através de um grupo específico de servidores dns, como " +"office, casa." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:64 +msgid "RUNNING" +msgstr "EM EXECUÇÃO" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:341 +msgid "Reply Domain TTL Max" +msgstr "Responda ao domínio com TTL Max" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:342 +msgid "Reply maximum TTL for all domain result." +msgstr "Responda com TTL máximo em todos os resultados do domínio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1150 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1151 +msgid "Report bugs" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:267 +msgid "Resolve Local Hostnames" +msgstr "Resolve os nomes dos host locais" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:267 +msgid "Resolve local hostnames by reading Dnsmasq lease file." +msgstr "Resolve os nomes dos hosts lendo o arquivo de concessão do Dnsmasq." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:209 +msgid "Response Mode" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1174 +msgid "Restart" +msgstr "Reiniciar" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1165 +msgid "Restart Service" +msgstr "Reiniciar o serviço" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:133 +msgid "Second Server Settings" +msgstr "Configurações do Segundo Servidor" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:252 +msgid "Serve expired" +msgstr "O servir expirou" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:389 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:675 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:813 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:967 +msgid "Server Group" +msgstr "Grupo dos Servidores" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:833 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:987 +msgid "Server Group %s not exists" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:147 +msgid "Server Name" +msgstr "Nome do Servidor" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807 +msgid "Set Specific domain ip address." +msgstr "Defina um endereço IP específico para o domínio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806 +msgid "Set Specific domain rule list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:808 +msgid "Set Specific ip blacklist." +msgstr "Defina um IP específico para a lista negra." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:709 +msgid "Set TLS hostname to verify." +msgstr "Defina o nome do host TLS para verificar." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:758 +msgid "Set mark on packets." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:738 +msgid "" +"Set the HTTP host used for the query. Use this parameter when the host of " +"the URL address is an IP address." +msgstr "" +"Defina o host HTTP utilizado para a consulta. Use este parâmetro quando o " +"host da URL do endereço for um endereço IP." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:728 +msgid "Sets the server name indication for query. '-' for disable SNI name." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:128 +msgid "Settings" +msgstr "Configurações" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:402 +msgid "Skip Address Rules" +msgstr "Ignora as Regras do Endereço" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:431 +msgid "Skip Cache" +msgstr "Ignora a Cache" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:431 +msgid "Skip Cache." +msgstr "Ignora a Cache." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:425 +msgid "Skip Dualstack Selection" +msgstr "Ignora a Seleção da Pilha Dupla" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:426 +msgid "Skip Dualstack Selection." +msgstr "Ignora a Seleção da Pilha Dupla." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:414 +msgid "Skip Ipset Rule" +msgstr "Ignora a Regra Ipset" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:408 +msgid "Skip Nameserver Rule" +msgstr "Ignora a Regra do Servidor de Nomes" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:420 +msgid "Skip SOA Address Rule" +msgstr "Ignorar a Regra do Endereço SOA" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:421 +msgid "Skip SOA address rules." +msgstr "Ignorar a Regra do Endereço SOA." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:396 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:837 +msgid "Skip Speed Check" +msgstr "Ignorar a Verificação da Velocidade" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:403 +msgid "Skip address rules." +msgstr "Ignora as Regras do Endereço." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:415 +msgid "Skip ipset rules." +msgstr "Ignore as regras do ipset." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:409 +msgid "Skip nameserver rules." +msgstr "Ignora a regra do servidor de nomes." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:95 +#: applications/luci-app-smartdns/root/usr/share/luci/menu.d/luci-app-smartdns.json:3 +msgid "SmartDNS" +msgstr "SmartDNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:96 +msgid "SmartDNS Server" +msgstr "Servidor SmartDNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:97 +msgid "" +"SmartDNS is a local high-performance DNS server, supports finding fastest " +"IP, supports ad filtering, and supports avoiding DNS poisoning." +msgstr "" +"O SmartDNS é um servidor DNS local de alto desempenho, é compatível com a " +"localização rápida do IP, suporta filtragem de anúncios e previne o " +"envenenamento do DNS." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1142 +msgid "SmartDNS official website" +msgstr "Site oficial do SmartDNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:377 +msgid "Smartdns local server port" +msgstr "Porta do servidor local Smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:154 +msgid "" +"Smartdns local server port, smartdns will be automatically set as main dns " +"when the port is 53." +msgstr "" +"Porta do servidor local do Smartdns, o smartdns será automaticamente " +"definido como dns principal quando a porta for 53." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:210 +msgid "" +"Smartdns response mode, First Ping: return the first ping IP, Fastest IP: " +"return the fastest IP, Fastest Response: return the fastest DNS response." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:147 +msgid "Smartdns server name" +msgstr "Nome do servidor Smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:169 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1016 +msgid "Smartdns speed check mode." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1119 +msgid "" +"Specify an IP address to return for any host in the given domains, Queries " +"in the domains are never forwarded and always replied to with the specified " +"IP address which may be IPv4 or IPv6." +msgstr "" +"Especifique um endereço IP para retornar para qualquer host nos domínios " +"determinados, as consultas nos domínios nunca são encaminhadas e sempre " +"respondidas de forma especificada com o endereço IP que tanto pode ser IPv4 " +"ou IPv6." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:169 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1016 +msgid "Speed Check Mode" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:202 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1050 +msgid "Speed check mode is invalid." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:219 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:384 +msgid "TCP Server" +msgstr "Servidor TCP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:196 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1044 +msgid "TCP port is empty" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:708 +msgid "TLS Hostname Verify" +msgstr "Verificar o Nome do Host TLS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:727 +msgid "TLS SNI name" +msgstr "Nome TLS SNI" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:746 +msgid "TLS SPKI Pinning" +msgstr "Fixação TLS SPKI" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:324 +msgid "TTL for all domain result." +msgstr "O TTL para todos os resultados do domínio." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1137 +msgid "Technical Support" +msgstr "Suporte Técnico" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:539 +msgid "URL" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:548 +msgid "URL format error, format: http:// or https://" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:523 +msgid "Update" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:514 +msgid "Update Files" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:500 +msgid "Upload Config File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:507 +msgid "Upload Domain List File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:508 +msgid "Upload domain list file to /etc/smartdns/domain-set" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:892 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:992 +msgid "" +"Upload domain list file, or configure auto download from Download File " +"Setting page." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:921 +msgid "Upload domain list file." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:501 +msgid "Upload smartdns config file to /etc/smartdns/conf.d" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:631 +msgid "Upstream Servers" +msgstr "Servidores upstream" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:632 +msgid "" +"Upstream Servers, support UDP, TCP protocol. Please configure multiple DNS " +"servers, including multiple foreign DNS servers." +msgstr "" +"Servidores upstream, suporte UDP, protocolo TCP. Configure os vários " +"servidores DNS, incluindo vários servidores DNS externos." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:765 +msgid "Use Proxy" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:766 +msgid "Use proxy to connect to upstream DNS server." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:747 +msgid "" +"Used to verify the validity of the TLS server, The value is Base64 encoded " +"SPKI fingerprint, leaving blank to indicate that the validity of TLS is not " +"verified." +msgstr "" +"Utilizado para verificar a validade do servidor TLS, o valor é a impressão " +"digital SPKI codificada com base64, deixando em branco para indicar que a " +"validade do TLS não será verificada." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:262 +msgid "Write cache to disk on exit and load on startup." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1013 +msgid "Yes" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:172 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:213 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:611 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1012 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1020 +msgid "default" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:555 +msgid "domain list (/etc/smartdns/domain-set)" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:670 +msgid "https" +msgstr "https" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:651 +msgid "ip" +msgstr "IP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:295 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:452 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:858 +msgid "ipset name format error, format: [#[4|6]:]ipsetname" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1143 +msgid "open website" +msgstr "abrir o website" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:656 +msgid "port" +msgstr "porta" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:556 +msgid "smartdns config (/etc/smartdns/conf.d)" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:585 +msgid "smartdns custom settings" +msgstr "configurações personalizadas do smartdns" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:668 +msgid "tcp" +msgstr "tcp" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:669 +msgid "tls" +msgstr "tls" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:665 +msgid "type" +msgstr "tipo" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:667 +msgid "udp" +msgstr "udp" + +#~ msgid "" +#~ "DNS Server group belongs to, used with nameserver, such as office, home." +#~ msgstr "" +#~ "O grupo do Servidor DNS pertence a, usado em conjunto com o nameserver " +#~ "(nome do servidor), assim como em office, em casa." + +#~ msgid "Dnsmasq Forwared To Smartdns Failure" +#~ msgstr "Encaminhamento do Dnsmasq para Falha do Smartdns" + +#~ msgid "Sets the server name indication for query." +#~ msgstr "Define a indicação do nome do servidor para consulta." + +#~ msgid "IPV4 53 Port Redirect Failure" +#~ msgstr "Falha no Redirecionamento da Porta IPV4 53" + +#~ msgid "IPV6 53 Port Redirect Failure" +#~ msgstr "Falha no Redirecionamento da Porta IPV6 53" + +#~ msgid "Redirect" +#~ msgstr "Redirecione" + +#~ msgid "Redirect 53 port to SmartDNS" +#~ msgstr "Redirecionar a porta 53 para o SmartDNS" + +#~ msgid "Run as dnsmasq upstream server" +#~ msgstr "Executar como servidor dnsmasq upstream" + +#~ msgid "SmartDNS redirect mode" +#~ msgstr "SmartDNS, modo de redirecionamento" + +#~ msgid "none" +#~ msgstr "nenhum" diff --git a/luci-app-smartdns/po/templates/smartdns.pot b/luci-app-smartdns/po/templates/smartdns.pot new file mode 100644 index 0000000..7a2203f --- /dev/null +++ b/luci-app-smartdns/po/templates/smartdns.pot @@ -0,0 +1,1129 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: smartdns.js:65 +msgid "RUNNING" +msgstr "" + +#: smartdns.js:67 +msgid "NOT RUNNING" +msgstr "" + +#: smartdns.js:69 +msgid "Please check the system logs and check if the configuration is valid." +msgstr "" + +#: smartdns.js:81 +msgid "Dnsmasq Forwarded To Smartdns Failure" +msgstr "" + +#: smartdns.js:99 +msgid "SmartDNS" +msgstr "" + +#: smartdns.js:100 +msgid "SmartDNS Server" +msgstr "" + +#: smartdns.js:101 +msgid "" +"SmartDNS is a local high-performance DNS server, supports finding fastest " +"IP, supports ad filtering, and supports avoiding DNS poisoning." +msgstr "" + +#: smartdns.js:125 +msgid "Collecting data ..." +msgstr "" + +#: smartdns.js:132 +msgid "Settings" +msgstr "" + +#: smartdns.js:132 smartdns.js:135 smartdns.js:816 +msgid "General Settings" +msgstr "" + +#: smartdns.js:136 smartdns.js:817 smartdns.js:983 +msgid "Advanced Settings" +msgstr "" + +#: smartdns.js:137 +msgid "Second Server Settings" +msgstr "" + +#: smartdns.js:138 +msgid "DNS64 Server Settings" +msgstr "" + +#: smartdns.js:139 +msgid "Download Files Setting" +msgstr "" + +#: smartdns.js:139 +msgid "" +"Download domain list files for domain-rule and include config files, please " +"refresh the page after download to take effect." +msgstr "" + +#: smartdns.js:140 +msgid "Proxy Server Settings" +msgstr "" + +#: smartdns.js:141 +msgid "Custom Settings" +msgstr "" + +#: smartdns.js:146 smartdns.js:478 smartdns.js:820 smartdns.js:986 +#: smartdns.js:1373 smartdns.js:1553 +msgid "Enable" +msgstr "" + +#: smartdns.js:146 +msgid "Enable or disable smartdns server" +msgstr "" + +#: smartdns.js:151 +msgid "Server Name" +msgstr "" + +#: smartdns.js:151 +msgid "Smartdns server name" +msgstr "" + +#: smartdns.js:157 smartdns.js:484 +msgid "Local Port" +msgstr "" + +#: smartdns.js:158 +msgid "" +"Smartdns local server port, smartdns will be automatically set as main dns " +"when the port is 53." +msgstr "" + +#: smartdns.js:165 +msgid "Automatically Set Dnsmasq" +msgstr "" + +#: smartdns.js:165 +msgid "Automatically set as upstream of dnsmasq when port changes." +msgstr "" + +#: smartdns.js:173 smartdns.js:1048 smartdns.js:1207 smartdns.js:1430 +msgid "Speed Check Mode" +msgstr "" + +#: smartdns.js:173 smartdns.js:1048 smartdns.js:1207 smartdns.js:1430 +msgid "Smartdns speed check mode." +msgstr "" + +#: smartdns.js:176 smartdns.js:217 smartdns.js:749 smartdns.js:1051 +#: smartdns.js:1210 smartdns.js:1252 smartdns.js:1426 smartdns.js:1434 +msgid "default" +msgstr "" + +#: smartdns.js:181 smartdns.js:1056 smartdns.js:1215 smartdns.js:1414 +#: smartdns.js:1439 +msgid "None" +msgstr "" + +#: smartdns.js:200 smartdns.js:1075 smartdns.js:1234 smartdns.js:1458 +msgid "TCP port is empty" +msgstr "" + +#: smartdns.js:206 smartdns.js:1081 smartdns.js:1240 smartdns.js:1464 +msgid "Speed check mode is invalid." +msgstr "" + +#: smartdns.js:213 +msgid "Response Mode" +msgstr "" + +#: smartdns.js:214 +msgid "" +"Smartdns response mode, First Ping: return the first ping IP, Fastest IP: " +"return the fastest IP, Fastest Response: return the fastest DNS response." +msgstr "" + +#: smartdns.js:218 +msgid "First Ping" +msgstr "" + +#: smartdns.js:219 +msgid "Fastest IP" +msgstr "" + +#: smartdns.js:220 +msgid "Fastest Response" +msgstr "" + +#: smartdns.js:223 smartdns.js:491 +msgid "TCP Server" +msgstr "" + +#: smartdns.js:223 smartdns.js:491 +msgid "Enable TCP DNS Server" +msgstr "" + +#: smartdns.js:228 +msgid "DOT Server" +msgstr "" + +#: smartdns.js:228 +msgid "Enable DOT DNS Server" +msgstr "" + +#: smartdns.js:232 +msgid "DOT Server Port" +msgstr "" + +#: smartdns.js:232 +msgid "Smartdns DOT server port." +msgstr "" + +#: smartdns.js:240 +msgid "DOH Server" +msgstr "" + +#: smartdns.js:240 +msgid "Enable DOH DNS Server" +msgstr "" + +#: smartdns.js:244 +msgid "DOH Server Port" +msgstr "" + +#: smartdns.js:244 +msgid "Smartdns DOH server port." +msgstr "" + +#: smartdns.js:251 +msgid "Server Cert" +msgstr "" + +#: smartdns.js:251 +msgid "Server certificate file path." +msgstr "" + +#: smartdns.js:258 +msgid "Server Cert Key" +msgstr "" + +#: smartdns.js:258 +msgid "Server certificate key file path." +msgstr "" + +#: smartdns.js:265 +msgid "Server Cert Key Pass" +msgstr "" + +#: smartdns.js:265 +msgid "Server certificate key file password." +msgstr "" + +#: smartdns.js:272 +msgid "IPV6 Server" +msgstr "" + +#: smartdns.js:272 +msgid "Enable IPV6 DNS Server" +msgstr "" + +#: smartdns.js:277 +msgid "Bind Device" +msgstr "" + +#: smartdns.js:277 +msgid "Listen only on the specified interfaces." +msgstr "" + +#: smartdns.js:282 +msgid "Bind Device Name" +msgstr "" + +#: smartdns.js:282 +msgid "Name of device name listen on." +msgstr "" + +#: smartdns.js:288 smartdns.js:1088 smartdns.js:1247 smartdns.js:1421 +msgid "Dual-stack IP Selection" +msgstr "" + +#: smartdns.js:289 smartdns.js:1089 smartdns.js:1248 smartdns.js:1422 +msgid "Enable IP selection between IPV4 and IPV6" +msgstr "" + +#: smartdns.js:294 +msgid "Domain prefetch" +msgstr "" + +#: smartdns.js:295 +msgid "Enable domain prefetch, accelerate domain response speed." +msgstr "" + +#: smartdns.js:300 +msgid "Serve expired" +msgstr "" + +#: smartdns.js:301 +msgid "" +"Attempts to serve old responses from cache with a TTL of 0 in the response " +"without waiting for the actual resolution to finish." +msgstr "" + +#: smartdns.js:306 +msgid "Cache Size" +msgstr "" + +#: smartdns.js:306 +msgid "DNS domain result cache size" +msgstr "" + +#: smartdns.js:310 +msgid "Cache Persist" +msgstr "" + +#: smartdns.js:310 +msgid "Write cache to disk on exit and load on startup." +msgstr "" + +#: smartdns.js:315 +msgid "Resolve Local Hostnames" +msgstr "" + +#: smartdns.js:315 +msgid "Resolve local hostnames by reading Dnsmasq lease file." +msgstr "" + +#: smartdns.js:320 +msgid "mDNS Lookup" +msgstr "" + +#: smartdns.js:320 +msgid "Resolve local network hostname via mDNS protocol." +msgstr "" + +#: smartdns.js:325 smartdns.js:543 smartdns.js:1094 smartdns.js:1256 +#: smartdns.js:1470 +msgid "Force AAAA SOA" +msgstr "" + +#: smartdns.js:325 smartdns.js:543 smartdns.js:1094 smartdns.js:1256 +#: smartdns.js:1470 +msgid "Force AAAA SOA." +msgstr "" + +#: smartdns.js:330 smartdns.js:548 smartdns.js:1099 +msgid "Force HTTPS SOA" +msgstr "" + +#: smartdns.js:330 smartdns.js:548 smartdns.js:1099 +msgid "Force HTTPS SOA." +msgstr "" + +#: smartdns.js:335 smartdns.js:556 smartdns.js:1104 smartdns.js:1260 +#: smartdns.js:1476 +msgid "IPset Name" +msgstr "" + +#: smartdns.js:335 smartdns.js:556 smartdns.js:1104 smartdns.js:1260 +#: smartdns.js:1476 +msgid "IPset name." +msgstr "" + +#: smartdns.js:347 smartdns.js:368 smartdns.js:568 smartdns.js:1116 +#: smartdns.js:1272 +msgid "ipset name format error, format: [#[4|6]:]ipsetname" +msgstr "" + +#: smartdns.js:355 +msgid "No Speed IPset Name" +msgstr "" + +#: smartdns.js:356 +msgid "Ipset name, Add domain result to ipset when speed check fails." +msgstr "" + +#: smartdns.js:376 smartdns.js:575 smartdns.js:1124 smartdns.js:1279 +#: smartdns.js:1482 +msgid "NFTset Name" +msgstr "" + +#: smartdns.js:376 smartdns.js:575 smartdns.js:1124 smartdns.js:1279 +#: smartdns.js:1482 +msgid "NFTset name, format: [#[4|6]:[family#table#set]]" +msgstr "" + +#: smartdns.js:388 smartdns.js:409 smartdns.js:587 smartdns.js:1136 +#: smartdns.js:1291 smartdns.js:1495 +msgid "NFTset name format error, format: [#[4|6]:[family#table#set]]" +msgstr "" + +#: smartdns.js:396 +msgid "No Speed NFTset Name" +msgstr "" + +#: smartdns.js:397 +msgid "" +"Nftset name, Add domain result to nftset when speed check fails, format: " +"[#[4|6]:[family#table#set]]" +msgstr "" + +#: smartdns.js:417 +msgid "Domain TTL" +msgstr "" + +#: smartdns.js:417 +msgid "TTL for all domain result." +msgstr "" + +#: smartdns.js:421 +msgid "Domain TTL Min" +msgstr "" + +#: smartdns.js:422 +msgid "Minimum TTL for all domain result." +msgstr "" + +#: smartdns.js:429 +msgid "Domain TTL Max" +msgstr "" + +#: smartdns.js:430 +msgid "Maximum TTL for all domain result." +msgstr "" + +#: smartdns.js:434 +msgid "Reply Domain TTL Max" +msgstr "" + +#: smartdns.js:435 +msgid "Reply maximum TTL for all domain result." +msgstr "" + +#: smartdns.js:439 smartdns.js:595 smartdns.js:969 +msgid "Additional Server Args" +msgstr "" + +#: smartdns.js:440 smartdns.js:596 +msgid "" +"Additional server args, refer to the help description of the bind option." +msgstr "" + +#: smartdns.js:446 smartdns.js:1145 +msgid "Include Config Files<br>/etc/smartdns/conf.d" +msgstr "" + +#: smartdns.js:447 smartdns.js:1146 +msgid "" +"Include other config files from /etc/smartdns/conf.d or custom path, can be " +"downloaded from the download page." +msgstr "" + +#: smartdns.js:460 +msgid "Hosts File" +msgstr "" + +#: smartdns.js:460 +msgid "Include hosts file." +msgstr "" + +#: smartdns.js:479 +msgid "Enable or disable second DNS server." +msgstr "" + +#: smartdns.js:484 +msgid "Smartdns local server port" +msgstr "" + +#: smartdns.js:496 smartdns.js:853 smartdns.js:1023 smartdns.js:1182 +#: smartdns.js:1381 +msgid "Server Group" +msgstr "" + +#: smartdns.js:497 +msgid "Query DNS through specific dns server group, such as office, home." +msgstr "" + +#: smartdns.js:503 +msgid "Skip Speed Check" +msgstr "" + +#: smartdns.js:504 +msgid "Do not check speed." +msgstr "" + +#: smartdns.js:509 +msgid "Skip Address Rules" +msgstr "" + +#: smartdns.js:510 +msgid "Skip address rules." +msgstr "" + +#: smartdns.js:515 +msgid "Skip Nameserver Rule" +msgstr "" + +#: smartdns.js:516 +msgid "Skip nameserver rules." +msgstr "" + +#: smartdns.js:521 +msgid "Skip Ipset Rule" +msgstr "" + +#: smartdns.js:522 +msgid "Skip ipset rules." +msgstr "" + +#: smartdns.js:527 +msgid "Skip SOA Address Rule" +msgstr "" + +#: smartdns.js:528 +msgid "Skip SOA address rules." +msgstr "" + +#: smartdns.js:532 +msgid "Skip Dualstack Selection" +msgstr "" + +#: smartdns.js:533 +msgid "Skip Dualstack Selection." +msgstr "" + +#: smartdns.js:538 +msgid "Skip Cache" +msgstr "" + +#: smartdns.js:538 +msgid "Skip Cache." +msgstr "" + +#: smartdns.js:552 +msgid "Skip IP Alias" +msgstr "" + +#: smartdns.js:603 +msgid "DNS64" +msgstr "" + +#: smartdns.js:611 +msgid "Enable Auto Update" +msgstr "" + +#: smartdns.js:611 +msgid "Enable daily (weekly) auto update." +msgstr "" + +#: smartdns.js:616 +msgid "Update Time (Every Week)" +msgstr "" + +#: smartdns.js:617 +msgid "Every Day" +msgstr "" + +#: smartdns.js:618 +msgid "Every Monday" +msgstr "" + +#: smartdns.js:619 +msgid "Every Tuesday" +msgstr "" + +#: smartdns.js:620 +msgid "Every Wednesday" +msgstr "" + +#: smartdns.js:621 +msgid "Every Thursday" +msgstr "" + +#: smartdns.js:622 +msgid "Every Friday" +msgstr "" + +#: smartdns.js:623 +msgid "Every Saturday" +msgstr "" + +#: smartdns.js:624 +msgid "Every Sunday" +msgstr "" + +#: smartdns.js:628 +msgid "Update time (every day)" +msgstr "" + +#: smartdns.js:634 +msgid "Upload Config File" +msgstr "" + +#: smartdns.js:635 +msgid "Upload smartdns config file to /etc/smartdns/conf.d" +msgstr "" + +#: smartdns.js:641 +msgid "Upload Domain List File" +msgstr "" + +#: smartdns.js:642 +msgid "Upload domain list file to /etc/smartdns/domain-set" +msgstr "" + +#: smartdns.js:648 +msgid "Upload File" +msgstr "" + +#: smartdns.js:654 +msgid "Update Files" +msgstr "" + +#: smartdns.js:663 +msgid "Update" +msgstr "" + +#: smartdns.js:666 +msgid "Download Files" +msgstr "" + +#: smartdns.js:667 +msgid "List of files to download." +msgstr "" + +#: smartdns.js:675 +msgid "File Name" +msgstr "" + +#: smartdns.js:679 +msgid "URL" +msgstr "" + +#: smartdns.js:688 +msgid "URL format error, format: http:// or https://" +msgstr "" + +#: smartdns.js:694 smartdns.js:843 +msgid "type" +msgstr "" + +#: smartdns.js:694 +msgid "File Type" +msgstr "" + +#: smartdns.js:695 +msgid "domain list (/etc/smartdns/domain-set)" +msgstr "" + +#: smartdns.js:696 +msgid "smartdns config (/etc/smartdns/conf.d)" +msgstr "" + +#: smartdns.js:697 +msgid "ip-set file (/etc/smartdns/ip-set)" +msgstr "" + +#: smartdns.js:698 +msgid "other file (/etc/smartdns/download)" +msgstr "" + +#: smartdns.js:702 +msgid "Description" +msgstr "" + +#: smartdns.js:709 +msgid "Proxy Server" +msgstr "" + +#: smartdns.js:709 +msgid "Proxy Server URL, format: [socks5|http]://user:pass@ip:port." +msgstr "" + +#: smartdns.js:717 +msgid "" +"Proxy server URL format error, format: [socks5|http]://user:pass@ip:port." +msgstr "" + +#: smartdns.js:727 +msgid "smartdns custom settings" +msgstr "" + +#: smartdns.js:741 +msgid "Generate Coredump" +msgstr "" + +#: smartdns.js:742 +msgid "" +"Generate Coredump file when smartdns crash, coredump file is located at /tmp/" +"smartdns.xxx.core." +msgstr "" + +#: smartdns.js:746 +msgid "Log Level" +msgstr "" + +#: smartdns.js:758 +msgid "Log Output Mode" +msgstr "" + +#: smartdns.js:760 smartdns.js:761 smartdns.js:786 smartdns.js:787 +msgid "file" +msgstr "" + +#: smartdns.js:762 smartdns.js:788 +msgid "syslog" +msgstr "" + +#: smartdns.js:764 +msgid "Log Size" +msgstr "" + +#: smartdns.js:769 +msgid "Log Number" +msgstr "" + +#: smartdns.js:774 +msgid "Log File" +msgstr "" + +#: smartdns.js:779 +msgid "Enable Audit Log" +msgstr "" + +#: smartdns.js:784 +msgid "Audit Log Output Mode" +msgstr "" + +#: smartdns.js:791 +msgid "Audit Log Size" +msgstr "" + +#: smartdns.js:796 +msgid "Audit Log Number" +msgstr "" + +#: smartdns.js:801 +msgid "Audit Log File" +msgstr "" + +#: smartdns.js:809 +msgid "Upstream Servers" +msgstr "" + +#: smartdns.js:810 +msgid "" +"Upstream Servers, support UDP, TCP protocol. Please configure multiple DNS " +"servers, including multiple foreign DNS servers." +msgstr "" + +#: smartdns.js:826 +msgid "DNS Server Name" +msgstr "" + +#: smartdns.js:829 +msgid "ip" +msgstr "" + +#: smartdns.js:829 +msgid "DNS Server ip" +msgstr "" + +#: smartdns.js:834 +msgid "port" +msgstr "" + +#: smartdns.js:834 +msgid "DNS Server port" +msgstr "" + +#: smartdns.js:843 +msgid "DNS Server type" +msgstr "" + +#: smartdns.js:845 +msgid "udp" +msgstr "" + +#: smartdns.js:846 +msgid "tcp" +msgstr "" + +#: smartdns.js:847 +msgid "tls" +msgstr "" + +#: smartdns.js:848 +msgid "https" +msgstr "" + +#: smartdns.js:853 +msgid "DNS Server group" +msgstr "" + +#: smartdns.js:872 +msgid "Exclude Default Group" +msgstr "" + +#: smartdns.js:872 +msgid "Exclude DNS Server from default group." +msgstr "" + +#: smartdns.js:879 +msgid "IP Blacklist Filtering" +msgstr "" + +#: smartdns.js:880 +msgid "Filtering IP with blacklist" +msgstr "" + +#: smartdns.js:886 +msgid "TLS Hostname Verify" +msgstr "" + +#: smartdns.js:887 +msgid "Set TLS hostname to verify." +msgstr "" + +#: smartdns.js:896 +msgid "No check certificate" +msgstr "" + +#: smartdns.js:897 +msgid "Do not check certificate." +msgstr "" + +#: smartdns.js:905 +msgid "TLS SNI name" +msgstr "" + +#: smartdns.js:906 +msgid "Sets the server name indication for query. '-' for disable SNI name." +msgstr "" + +#: smartdns.js:915 +msgid "HTTP Host" +msgstr "" + +#: smartdns.js:916 +msgid "" +"Set the HTTP host used for the query. Use this parameter when the host of " +"the URL address is an IP address." +msgstr "" + +#: smartdns.js:924 +msgid "TLS SPKI Pinning" +msgstr "" + +#: smartdns.js:925 +msgid "" +"Used to verify the validity of the TLS server, The value is Base64 encoded " +"SPKI fingerprint, leaving blank to indicate that the validity of TLS is not " +"verified." +msgstr "" + +#: smartdns.js:935 +msgid "Marking Packets" +msgstr "" + +#: smartdns.js:936 +msgid "Set mark on packets." +msgstr "" + +#: smartdns.js:943 +msgid "Use Proxy" +msgstr "" + +#: smartdns.js:944 +msgid "Use proxy to connect to upstream DNS server." +msgstr "" + +#: smartdns.js:958 +msgid "Please set proxy server first." +msgstr "" + +#: smartdns.js:962 +msgid "Only socks5 proxy support udp server." +msgstr "" + +#: smartdns.js:970 +msgid "Additional Args for upstream dns servers" +msgstr "" + +#: smartdns.js:978 +msgid "Client Rules" +msgstr "" + +#: smartdns.js:978 +msgid "Client Rules Settings, can achieve parental control functionality." +msgstr "" + +#: smartdns.js:982 +msgid "Basic Settings" +msgstr "" + +#: smartdns.js:984 smartdns.js:1175 +msgid "DNS Block Setting" +msgstr "" + +#: smartdns.js:990 +msgid "Client Address" +msgstr "" + +#: smartdns.js:991 +msgid "" +"If a client address is specified, only that client will apply this rule. You " +"can enter an IP address, such as 1.2.3.4, or a MAC address, such as aa:bb:cc:" +"dd:ee:ff." +msgstr "" + +#: smartdns.js:1012 +msgid "Client address format error, please input ip adress or mac address." +msgstr "" + +#: smartdns.js:1015 +msgid "Client Address File" +msgstr "" + +#: smartdns.js:1016 +msgid "Upload client address file, same as Client Address function." +msgstr "" + +#: smartdns.js:1023 smartdns.js:1182 smartdns.js:1381 +msgid "DNS Server group belongs to, such as office, home." +msgstr "" + +#: smartdns.js:1043 smartdns.js:1202 smartdns.js:1401 +#, javascript-format +msgid "Server Group %s not exists" +msgstr "" + +#: smartdns.js:1159 smartdns.js:1305 smartdns.js:1335 smartdns.js:1405 +msgid "Domain List File" +msgstr "" + +#: smartdns.js:1159 smartdns.js:1335 +msgid "Upload domain list file." +msgstr "" + +#: smartdns.js:1170 +msgid "Domain Rules" +msgstr "" + +#: smartdns.js:1170 +msgid "Domain Rules Settings" +msgstr "" + +#: smartdns.js:1174 +msgid "DNS Forwarding Setting" +msgstr "" + +#: smartdns.js:1176 smartdns.js:1363 +msgid "Domain Rule List" +msgstr "" + +#: smartdns.js:1176 +msgid "Set Specific domain rule list." +msgstr "" + +#: smartdns.js:1177 +msgid "Domain Address" +msgstr "" + +#: smartdns.js:1177 +msgid "Set Specific domain ip address." +msgstr "" + +#: smartdns.js:1253 smartdns.js:1427 +msgid "Yes" +msgstr "" + +#: smartdns.js:1254 smartdns.js:1428 +msgid "No" +msgstr "" + +#: smartdns.js:1299 smartdns.js:1503 smartdns.js:1600 +msgid "Additional Rule Flag" +msgstr "" + +#: smartdns.js:1300 smartdns.js:1504 +msgid "" +"Additional Flags for rules, read help on domain-rule for more information." +msgstr "" + +#: smartdns.js:1306 smartdns.js:1406 +msgid "" +"Upload domain list file, or configure auto download from Download File " +"Setting page." +msgstr "" + +#: smartdns.js:1314 smartdns.js:1343 +msgid "Domain List" +msgstr "" + +#: smartdns.js:1314 +msgid "Configure forwarding domain name list." +msgstr "" + +#: smartdns.js:1343 +msgid "Configure block domain list." +msgstr "" + +#: smartdns.js:1364 +msgid "Configure domain rule list." +msgstr "" + +#: smartdns.js:1379 +msgid "Domain Rule Name" +msgstr "" + +#: smartdns.js:1412 +msgid "Block domain" +msgstr "" + +#: smartdns.js:1412 +msgid "Block domain." +msgstr "" + +#: smartdns.js:1514 +msgid "" +"Specify an IP address to return for any host in the given domains, Queries " +"in the domains are never forwarded and always replied to with the specified " +"IP address which may be IPv4 or IPv6." +msgstr "" + +#: smartdns.js:1533 +msgid "IP Rules" +msgstr "" + +#: smartdns.js:1533 +msgid "IP Rules Settings" +msgstr "" + +#: smartdns.js:1537 smartdns.js:1543 +msgid "IP Rule List" +msgstr "" + +#: smartdns.js:1537 +msgid "Set Specific ip rule list." +msgstr "" + +#: smartdns.js:1538 +msgid "IP Blacklist" +msgstr "" + +#: smartdns.js:1538 +msgid "Set Specific ip blacklist." +msgstr "" + +#: smartdns.js:1544 +msgid "Configure ip rule list." +msgstr "" + +#: smartdns.js:1559 +msgid "IP Rule Name" +msgstr "" + +#: smartdns.js:1563 +msgid "IP Set File" +msgstr "" + +#: smartdns.js:1563 +msgid "Upload IP set file." +msgstr "" + +#: smartdns.js:1569 +msgid "IP Addresses" +msgstr "" + +#: smartdns.js:1569 +msgid "IP addresses, CIDR format." +msgstr "" + +#: smartdns.js:1574 +msgid "Whitelist IP" +msgstr "" + +#: smartdns.js:1574 +msgid "Whitelist IP Rule, Accept IP addresses within the range." +msgstr "" + +#: smartdns.js:1579 +msgid "Blacklist IP" +msgstr "" + +#: smartdns.js:1579 +msgid "Blacklist IP Rule, Decline IP addresses within the range." +msgstr "" + +#: smartdns.js:1584 +msgid "Ignore IP" +msgstr "" + +#: smartdns.js:1584 +msgid "Do not use these IP addresses." +msgstr "" + +#: smartdns.js:1589 +msgid "Bogus nxdomain" +msgstr "" + +#: smartdns.js:1589 +msgid "Return SOA when the requested result contains a specified IP address." +msgstr "" + +#: smartdns.js:1594 +msgid "IP alias" +msgstr "" + +#: smartdns.js:1594 +msgid "" +"IP Address Mapping, Can be used for CDN acceleration with Anycast IP, such " +"as Cloudflare's CDN." +msgstr "" + +#: smartdns.js:1601 +msgid "Additional Flags for rules, read help on ip-rule for more information." +msgstr "" + +#: smartdns.js:1610 +msgid "" +"Configure IP blacklists that will be filtered from the results of specific " +"DNS server." +msgstr "" + +#: smartdns.js:1627 +msgid "Technical Support" +msgstr "" + +#: smartdns.js:1628 +msgid "If you like this software, please buy me a cup of coffee." +msgstr "" + +#: smartdns.js:1632 +msgid "SmartDNS official website" +msgstr "" + +#: smartdns.js:1633 +msgid "open website" +msgstr "" + +#: smartdns.js:1640 smartdns.js:1641 +msgid "Report bugs" +msgstr "" + +#: smartdns.js:1648 +msgid "Donate to smartdns" +msgstr "" + +#: smartdns.js:1649 +msgid "Donate" +msgstr "" + +#: smartdns.js:1655 +msgid "Restart Service" +msgstr "" + +#: smartdns.js:1664 +msgid "Restart" +msgstr "" diff --git a/luci-app-smartdns/po/zh_Hans/smartdns.po b/luci-app-smartdns/po/zh_Hans/smartdns.po new file mode 100644 index 0000000..d071fe6 --- /dev/null +++ b/luci-app-smartdns/po/zh_Hans/smartdns.po @@ -0,0 +1,1205 @@ +msgid "" +msgstr "" +"Project-Id-Version: luci-app-smartdns\n" +"POT-Creation-Date: 2025-02-19 23:07+0800\n" +"PO-Revision-Date: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: zh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.5\n" +"X-Poedit-Basepath: ../../htdocs/luci-static/resources/view/smartdns\n" +"X-Poedit-SearchPath-0: .\n" + +#: log.js:80 +msgid "Loading..." +msgstr "加载中..." + +#: log.js:82 smartdns.js:125 +msgid "Collecting data ..." +msgstr "正在收集数据..." + +#: log.js:92 +msgid "Clear Logs..." +msgstr "清除日志..." + +#: log.js:95 +msgid "Logs cleared successfully!" +msgstr "日志清除成功!" + +#: log.js:98 log.js:108 log.js:112 +msgid "Clear Logs" +msgstr "清除日志" + +#: log.js:101 log.js:119 +msgid "Log is clean." +msgstr "日志已清除。" + +#: log.js:105 +msgid "Failed to clear log." +msgstr "清除日志失败。" + +#: log.js:127 +msgid "Log file does not exist." +msgstr "日志文件不存在。" + +#: log.js:129 +#, javascript-format +msgid "Unknown error: %s" +msgstr "未知错误:%s" + +#: log.js:142 +msgid "Back SmartDNS" +msgstr "返回 SmartDNS" + +#: log.js:151 +#, javascript-format +msgid "Refresh every %s seconds." +msgstr "每 %s 秒刷新。" + +#: smartdns.js:65 +msgid "RUNNING" +msgstr "运行中" + +#: smartdns.js:67 +msgid "NOT RUNNING" +msgstr "未运行" + +#: smartdns.js:69 +msgid "Please check the system logs and check if the configuration is valid." +msgstr "请检查系统日志,并检查配置是否合法。" + +#: smartdns.js:81 +msgid "Dnsmasq Forwarded To Smartdns Failure" +msgstr "重定向dnsmasq到smartdns失败" + +#: smartdns.js:99 +msgid "SmartDNS" +msgstr "SmartDNS" + +#: smartdns.js:100 +msgid "SmartDNS Server" +msgstr "SmartDNS 服务器" + +#: smartdns.js:101 +msgid "" +"SmartDNS is a local high-performance DNS server, supports finding fastest " +"IP, supports ad filtering, and supports avoiding DNS poisoning." +msgstr "SmartDNS是一个本地高性能DNS服务器,支持返回最快IP,支持广告过滤。" + +#: smartdns.js:132 +msgid "Settings" +msgstr "设置" + +#: smartdns.js:132 smartdns.js:135 smartdns.js:828 +msgid "General Settings" +msgstr "常规设置" + +#: smartdns.js:136 smartdns.js:829 smartdns.js:995 +msgid "Advanced Settings" +msgstr "高级设置" + +#: smartdns.js:137 +msgid "Second Server Settings" +msgstr "第二DNS服务器" + +#: smartdns.js:138 +msgid "DNS64 Server Settings" +msgstr "DNS64服务器配置" + +#: smartdns.js:139 +msgid "Download Files Setting" +msgstr "下载文件设置" + +#: smartdns.js:139 +msgid "" +"Download domain list files for domain-rule and include config files, please " +"refresh the page after download to take effect." +msgstr "" +"下载域名规则所需要的域名列表文件和smartdns配置文件,下载完成后刷新页面。" + +#: smartdns.js:140 +msgid "Proxy Server Settings" +msgstr "代理服务器设置" + +#: smartdns.js:141 +msgid "Custom Settings" +msgstr "自定义设置" + +#: smartdns.js:146 smartdns.js:478 smartdns.js:832 smartdns.js:998 +#: smartdns.js:1385 smartdns.js:1565 +msgid "Enable" +msgstr "启用" + +#: smartdns.js:146 +msgid "Enable or disable smartdns server" +msgstr "启用或禁用SmartDNS服务" + +#: smartdns.js:151 +msgid "Server Name" +msgstr "服务器名称" + +#: smartdns.js:151 +msgid "Smartdns server name" +msgstr "SmartDNS的服务器名称,默认为smartdns,留空为主机名" + +#: smartdns.js:157 smartdns.js:484 +msgid "Local Port" +msgstr "本地端口" + +#: smartdns.js:158 +msgid "" +"Smartdns local server port, smartdns will be automatically set as main dns " +"when the port is 53." +msgstr "" +"SmartDNS本地服务端口,当端口号设置为53时,smartdns将会自动配置为主dns。" + +#: smartdns.js:165 +msgid "Automatically Set Dnsmasq" +msgstr "自动设置Dnsmasq" + +#: smartdns.js:165 +msgid "Automatically set as upstream of dnsmasq when port changes." +msgstr "端口更改时自动设为 dnsmasq 的上游。" + +#: smartdns.js:173 smartdns.js:1060 smartdns.js:1219 smartdns.js:1442 +msgid "Speed Check Mode" +msgstr "测速模式" + +#: smartdns.js:173 smartdns.js:1060 smartdns.js:1219 smartdns.js:1442 +msgid "Smartdns speed check mode." +msgstr "SmartDNS测速模式。" + +#: smartdns.js:176 smartdns.js:217 smartdns.js:749 smartdns.js:1063 +#: smartdns.js:1222 smartdns.js:1264 smartdns.js:1438 smartdns.js:1446 +msgid "default" +msgstr "默认" + +#: smartdns.js:181 smartdns.js:1068 smartdns.js:1227 smartdns.js:1426 +#: smartdns.js:1451 +msgid "None" +msgstr "无" + +#: smartdns.js:200 smartdns.js:1087 smartdns.js:1246 smartdns.js:1470 +msgid "TCP port is empty" +msgstr "TCP端口号为空" + +#: smartdns.js:206 smartdns.js:1093 smartdns.js:1252 smartdns.js:1476 +msgid "Speed check mode is invalid." +msgstr "测速模式无效。" + +#: smartdns.js:213 +msgid "Response Mode" +msgstr "响应模式" + +#: smartdns.js:214 +msgid "" +"Smartdns response mode, First Ping: return the first ping IP, Fastest IP: " +"return the fastest IP, Fastest Response: return the fastest DNS response." +msgstr "" +"SmartDNS响应模式,最快PING: 返回最早有ping结果的IP,速度适中;最快IP: 返回" +"最快IP,查询请求可能延长; 最快响应:返回最快响应的结果,查询请求时间短。" + +#: smartdns.js:218 +msgid "First Ping" +msgstr "最快PING" + +#: smartdns.js:219 +msgid "Fastest IP" +msgstr "最快IP" + +#: smartdns.js:220 +msgid "Fastest Response" +msgstr "最快响应" + +#: smartdns.js:223 smartdns.js:491 +msgid "TCP Server" +msgstr "TCP服务器" + +#: smartdns.js:223 smartdns.js:491 +msgid "Enable TCP DNS Server" +msgstr "启用TCP服务器。" + +#: smartdns.js:228 +msgid "DOT Server" +msgstr "DOT服务器" + +#: smartdns.js:228 +msgid "Enable DOT DNS Server" +msgstr "启用DOT服务器" + +#: smartdns.js:232 +msgid "DOT Server Port" +msgstr "DOT服务器端口" + +#: smartdns.js:232 +msgid "Smartdns DOT server port." +msgstr "Smartdns DOT服务器端口号。" + +#: smartdns.js:240 +msgid "DOH Server" +msgstr "DOH服务器" + +#: smartdns.js:240 +msgid "Enable DOH DNS Server" +msgstr "启用DOH服务器" + +#: smartdns.js:244 +msgid "DOH Server Port" +msgstr "DOH服务器端口" + +#: smartdns.js:244 +msgid "Smartdns DOH server port." +msgstr "Smartdns DOH服务器端口号" + +#: smartdns.js:251 +msgid "Server Cert" +msgstr "服务器证书" + +#: smartdns.js:251 +msgid "Server certificate file path." +msgstr "服务器证书文件路径。" + +#: smartdns.js:258 +msgid "Server Cert Key" +msgstr "服务器证书私钥" + +#: smartdns.js:258 +msgid "Server certificate key file path." +msgstr "服务器证书私钥文件路径。" + +#: smartdns.js:265 +msgid "Server Cert Key Pass" +msgstr "服务器证书私钥密码" + +#: smartdns.js:265 +msgid "Server certificate key file password." +msgstr "服务器证书私钥文件密码。" + +#: smartdns.js:272 +msgid "IPV6 Server" +msgstr "IPV6服务器" + +#: smartdns.js:272 +msgid "Enable IPV6 DNS Server" +msgstr "启用IPV6服务器。" + +#: smartdns.js:277 +msgid "Bind Device" +msgstr "绑定到设备" + +#: smartdns.js:277 +msgid "Listen only on the specified interfaces." +msgstr "监听在指定的设备上,避免非本地网络的DNS查询请求。" + +#: smartdns.js:282 +msgid "Bind Device Name" +msgstr "绑定的设备名称" + +#: smartdns.js:282 +msgid "Name of device name listen on." +msgstr "绑定的设备名称。" + +#: smartdns.js:288 smartdns.js:1100 smartdns.js:1259 smartdns.js:1433 +msgid "Dual-stack IP Selection" +msgstr "双栈IP优选" + +#: smartdns.js:289 smartdns.js:1101 smartdns.js:1260 smartdns.js:1434 +msgid "Enable IP selection between IPV4 and IPV6" +msgstr "启用 IPV4 和 IPV6 间的 IP 优选策略。" + +#: smartdns.js:294 +msgid "Domain prefetch" +msgstr "域名预加载" + +#: smartdns.js:295 +msgid "Enable domain prefetch, accelerate domain response speed." +msgstr "启用域名预加载,加速域名响应速度。" + +#: smartdns.js:300 +msgid "Serve expired" +msgstr "缓存过期服务" + +#: smartdns.js:301 +msgid "" +"Attempts to serve old responses from cache with a TTL of 0 in the response " +"without waiting for the actual resolution to finish." +msgstr "查询性能优化,有请求时尝试回应TTL为0的过期记录,以避免查询等待。" + +#: smartdns.js:306 +msgid "Cache Size" +msgstr "缓存大小" + +#: smartdns.js:306 +msgid "DNS domain result cache size" +msgstr "缓存DNS的结果,缓存大小,配置零则不缓存。" + +#: smartdns.js:310 +msgid "Cache Persist" +msgstr "持久化缓存" + +#: smartdns.js:310 +msgid "Write cache to disk on exit and load on startup." +msgstr "退出时保存cache到磁盘,启动时加载。" + +#: smartdns.js:315 +msgid "Resolve Local Hostnames" +msgstr "解析本地主机名" + +#: smartdns.js:315 +msgid "Resolve local hostnames by reading Dnsmasq lease file." +msgstr "读取Dnsmasq的租约文件解析本地主机名。" + +#: smartdns.js:320 +msgid "mDNS Lookup" +msgstr "mDNS查询" + +#: smartdns.js:320 +msgid "Resolve local network hostname via mDNS protocol." +msgstr "使用mDNS协议解析本地网络主机名。" + +#: smartdns.js:325 smartdns.js:543 smartdns.js:1106 smartdns.js:1268 +#: smartdns.js:1482 +msgid "Force AAAA SOA" +msgstr "停用IPV6地址解析" + +#: smartdns.js:325 smartdns.js:543 smartdns.js:1106 smartdns.js:1268 +#: smartdns.js:1482 +msgid "Force AAAA SOA." +msgstr "停用IPV6地址解析。" + +#: smartdns.js:330 smartdns.js:548 smartdns.js:1111 +msgid "Force HTTPS SOA" +msgstr "停用HTTPS记录解析" + +#: smartdns.js:330 smartdns.js:548 smartdns.js:1111 +msgid "Force HTTPS SOA." +msgstr "停用HTTPS记录解析。" + +#: smartdns.js:335 smartdns.js:556 smartdns.js:1116 smartdns.js:1272 +#: smartdns.js:1488 +msgid "IPset Name" +msgstr "IPset名称" + +#: smartdns.js:335 smartdns.js:556 smartdns.js:1116 smartdns.js:1272 +#: smartdns.js:1488 +msgid "IPset name." +msgstr "IPset名称。" + +#: smartdns.js:347 smartdns.js:368 smartdns.js:568 smartdns.js:1128 +#: smartdns.js:1284 +msgid "ipset name format error, format: [#[4|6]:]ipsetname" +msgstr "IPset名称格式错误,格式:[#[4|6]:]ipsetname" + +#: smartdns.js:355 +msgid "No Speed IPset Name" +msgstr "无速度时IPSet名称" + +#: smartdns.js:356 +msgid "Ipset name, Add domain result to ipset when speed check fails." +msgstr "IPset名称,当测速失败时,将查询到的结果添加到对应的IPSet集合中。" + +#: smartdns.js:376 smartdns.js:575 smartdns.js:1136 smartdns.js:1291 +#: smartdns.js:1494 +msgid "NFTset Name" +msgstr "NFTSet名称" + +#: smartdns.js:376 smartdns.js:575 smartdns.js:1136 smartdns.js:1291 +#: smartdns.js:1494 +msgid "NFTset name, format: [#[4|6]:[family#table#set]]" +msgstr "NFTSet名称,格式:[#[4|6]:[family#table#set]]" + +#: smartdns.js:388 smartdns.js:409 smartdns.js:587 smartdns.js:1148 +#: smartdns.js:1303 smartdns.js:1507 +msgid "NFTset name format error, format: [#[4|6]:[family#table#set]]" +msgstr "NFTSet名称格式错误,格式:[#[4|6]:[family#table#set]]" + +#: smartdns.js:396 +msgid "No Speed NFTset Name" +msgstr "无速度时NFTSet名称" + +#: smartdns.js:397 +msgid "" +"Nftset name, Add domain result to nftset when speed check fails, format: " +"[#[4|6]:[family#table#set]]" +msgstr "NFTset名称,当测速失败时,将查询到的结果添加到对应的NFTSet集合中。" + +#: smartdns.js:417 +msgid "Domain TTL" +msgstr "域名TTL" + +#: smartdns.js:417 +msgid "TTL for all domain result." +msgstr "设置所有域名的 TTL 值。" + +#: smartdns.js:421 +msgid "Domain TTL Min" +msgstr "域名TTL最小值" + +#: smartdns.js:422 +msgid "Minimum TTL for all domain result." +msgstr "所有域名的最小 TTL 值。" + +#: smartdns.js:429 +msgid "Domain TTL Max" +msgstr "域名TTL最大值" + +#: smartdns.js:430 +msgid "Maximum TTL for all domain result." +msgstr "所有域名的最大 TTL 值。" + +#: smartdns.js:434 +msgid "Reply Domain TTL Max" +msgstr "回应的域名TTL最大值" + +#: smartdns.js:435 +msgid "Reply maximum TTL for all domain result." +msgstr "设置返回给客户端的域名TTL最大值。" + +#: smartdns.js:439 smartdns.js:595 smartdns.js:981 +msgid "Additional Server Args" +msgstr "额外的服务器参数" + +#: smartdns.js:440 smartdns.js:596 +msgid "" +"Additional server args, refer to the help description of the bind option." +msgstr "额外的服务器参数,参考bind选项的帮助说明。" + +#: smartdns.js:446 smartdns.js:1157 +msgid "Include Config Files<br>/etc/smartdns/conf.d" +msgstr "包含配置文件<br>/etc/smartdns/conf.d" + +#: smartdns.js:447 smartdns.js:1158 +msgid "" +"Include other config files from /etc/smartdns/conf.d or custom path, can be " +"downloaded from the download page." +msgstr "" +"包含配置文件,路径为/etc/smartdns/conf.d,或自定义配置文件路径,可以从下载页" +"面配置自动下载。" + +#: smartdns.js:460 +msgid "Hosts File" +msgstr "Hosts文件" + +#: smartdns.js:460 +msgid "Include hosts file." +msgstr "包含hosts文件。" + +#: smartdns.js:479 +msgid "Enable or disable second DNS server." +msgstr "是否启用第二DNS服务器。" + +#: smartdns.js:484 +msgid "Smartdns local server port" +msgstr "SmartDNS本地服务端口" + +#: smartdns.js:496 smartdns.js:865 smartdns.js:1035 smartdns.js:1194 +#: smartdns.js:1393 +msgid "Server Group" +msgstr "服务器组" + +#: smartdns.js:497 +msgid "Query DNS through specific dns server group, such as office, home." +msgstr "使用指定服务器组查询,比如office, home。" + +#: smartdns.js:503 +msgid "Skip Speed Check" +msgstr "跳过测速" + +#: smartdns.js:504 +msgid "Do not check speed." +msgstr "禁用测速。" + +#: smartdns.js:509 +msgid "Skip Address Rules" +msgstr "跳过address规则" + +#: smartdns.js:510 +msgid "Skip address rules." +msgstr "跳过address规则。" + +#: smartdns.js:515 +msgid "Skip Nameserver Rule" +msgstr "跳过Nameserver规则" + +#: smartdns.js:516 +msgid "Skip nameserver rules." +msgstr "跳过Nameserver规则。" + +#: smartdns.js:521 +msgid "Skip Ipset Rule" +msgstr "跳过ipset规则" + +#: smartdns.js:522 +msgid "Skip ipset rules." +msgstr "跳过ipset规则。" + +#: smartdns.js:527 +msgid "Skip SOA Address Rule" +msgstr "跳过address SOA(#)规则" + +#: smartdns.js:528 +msgid "Skip SOA address rules." +msgstr "跳过address SOA(#)规则。" + +#: smartdns.js:532 +msgid "Skip Dualstack Selection" +msgstr "跳过双栈优选" + +#: smartdns.js:533 +msgid "Skip Dualstack Selection." +msgstr "跳过双栈优选。" + +#: smartdns.js:538 +msgid "Skip Cache" +msgstr "跳过cache" + +#: smartdns.js:538 +msgid "Skip Cache." +msgstr "跳过cache。" + +#: smartdns.js:552 +msgid "Skip IP Alias" +msgstr "跳过IP别名" + +#: smartdns.js:603 +msgid "DNS64" +msgstr "DNS64" + +#: smartdns.js:611 +msgid "Enable Auto Update" +msgstr "启用自动更新" + +#: smartdns.js:611 +msgid "Enable daily (weekly) auto update." +msgstr "启用每日(每周)自动更新" + +#: smartdns.js:616 +msgid "Update Time (Every Week)" +msgstr "更新时间(每周)" + +#: smartdns.js:617 +msgid "Every Day" +msgstr "每天" + +#: smartdns.js:618 +msgid "Every Monday" +msgstr "每周一" + +#: smartdns.js:619 +msgid "Every Tuesday" +msgstr "每周二" + +#: smartdns.js:620 +msgid "Every Wednesday" +msgstr "每周三" + +#: smartdns.js:621 +msgid "Every Thursday" +msgstr "每周四" + +#: smartdns.js:622 +msgid "Every Friday" +msgstr "每周五" + +#: smartdns.js:623 +msgid "Every Saturday" +msgstr "每周六" + +#: smartdns.js:624 +msgid "Every Sunday" +msgstr "每周日" + +#: smartdns.js:628 +msgid "Update time (every day)" +msgstr "更新时间(每天)" + +#: smartdns.js:634 +msgid "Upload Config File" +msgstr "上传配置文件" + +#: smartdns.js:635 +msgid "Upload smartdns config file to /etc/smartdns/conf.d" +msgstr "上传配置文件到/etc/smartdns/conf.d" + +#: smartdns.js:641 +msgid "Upload Domain List File" +msgstr "上传域名列表文件" + +#: smartdns.js:642 +msgid "Upload domain list file to /etc/smartdns/domain-set" +msgstr "上传域名列表文件到/etc/smartdns/domain-set" + +#: smartdns.js:648 +msgid "Upload File" +msgstr "上传文件" + +#: smartdns.js:654 +msgid "Update Files" +msgstr "更新文件" + +#: smartdns.js:663 +msgid "Update" +msgstr "更新" + +#: smartdns.js:666 +msgid "Download Files" +msgstr "下载文件" + +#: smartdns.js:667 +msgid "List of files to download." +msgstr "下载文件列表。" + +#: smartdns.js:675 +msgid "File Name" +msgstr "文件名" + +#: smartdns.js:679 +msgid "URL" +msgstr "URL" + +#: smartdns.js:688 +msgid "URL format error, format: http:// or https://" +msgstr "URL格式错误,格式:http://或https://" + +#: smartdns.js:694 smartdns.js:855 +msgid "type" +msgstr "类型" + +#: smartdns.js:694 +msgid "File Type" +msgstr "文件类型" + +#: smartdns.js:695 +msgid "domain list (/etc/smartdns/domain-set)" +msgstr "域名列表(/etc/smartdns/domain-set)" + +#: smartdns.js:696 +msgid "smartdns config (/etc/smartdns/conf.d)" +msgstr "smartdns 配置文件(/etc/smartdns/conf.d)" + +#: smartdns.js:697 +msgid "ip-set file (/etc/smartdns/ip-set)" +msgstr "IP集合列表文件(/etc/smartdns/ip-set)" + +#: smartdns.js:698 +msgid "other file (/etc/smartdns/download)" +msgstr "其它文件(/etc/smartdns/download)" + +#: smartdns.js:702 +msgid "Description" +msgstr "描述" + +#: smartdns.js:709 +msgid "Proxy Server" +msgstr "代理服务器" + +#: smartdns.js:709 +msgid "Proxy Server URL, format: [socks5|http]://user:pass@ip:port." +msgstr "代理服务器地址,格式:[socks5|http]://user:pass@ip:port。" + +#: smartdns.js:717 +msgid "" +"Proxy server URL format error, format: [socks5|http]://user:pass@ip:port." +msgstr "代理服务器地址格式错误,格式:[socks5|http]://user:pass@ip:port。" + +#: smartdns.js:727 +msgid "smartdns custom settings" +msgstr "smartdns 自定义设置,具体配置参数参考指导" + +#: smartdns.js:741 +msgid "Generate Coredump" +msgstr "生成coredump" + +#: smartdns.js:742 +msgid "" +"Generate Coredump file when smartdns crash, coredump file is located at /tmp/" +"smartdns.xxx.core." +msgstr "" +"当smartdns异常时生成coredump文件,coredump文件在/tmp/smartdns.xxx.core." + +#: smartdns.js:746 +msgid "Log Level" +msgstr "日志级别" + +#: smartdns.js:758 +msgid "Log Output Mode" +msgstr "日志输出模式" + +#: smartdns.js:760 smartdns.js:761 smartdns.js:798 smartdns.js:799 +msgid "file" +msgstr "文件" + +#: smartdns.js:762 smartdns.js:800 +msgid "syslog" +msgstr "系统日志" + +#: smartdns.js:764 +msgid "Log Size" +msgstr "日志大小" + +#: smartdns.js:769 +msgid "Log Number" +msgstr "日志数量" + +#: smartdns.js:774 +msgid "Log File" +msgstr "日志文件路径" + +#: smartdns.js:779 smartdns.js:787 +msgid "View Log" +msgstr "查看日志" + +#: smartdns.js:791 +msgid "Enable Audit Log" +msgstr "启用审计日志" + +#: smartdns.js:796 +msgid "Audit Log Output Mode" +msgstr "审计日志输出模式" + +#: smartdns.js:803 +msgid "Audit Log Size" +msgstr "审计日志大小" + +#: smartdns.js:808 +msgid "Audit Log Number" +msgstr "审计日志数量" + +#: smartdns.js:813 +msgid "Audit Log File" +msgstr "审计日志文件路径" + +#: smartdns.js:821 +msgid "Upstream Servers" +msgstr "上游服务器" + +#: smartdns.js:822 +msgid "" +"Upstream Servers, support UDP, TCP protocol. Please configure multiple DNS " +"servers, including multiple foreign DNS servers." +msgstr "" +"上游 DNS 服务器,支持 UDP,TCP 协议。请配置多个上游 DNS 服务器,包括多个国内" +"外服务器。" + +#: smartdns.js:838 +msgid "DNS Server Name" +msgstr "DNS服务器名称" + +#: smartdns.js:841 +msgid "ip" +msgstr "ip" + +#: smartdns.js:841 +msgid "DNS Server ip" +msgstr "DNS服务器IP" + +#: smartdns.js:846 +msgid "port" +msgstr "端口" + +#: smartdns.js:846 +msgid "DNS Server port" +msgstr "DNS服务器端口" + +#: smartdns.js:855 +msgid "DNS Server type" +msgstr "协议类型" + +#: smartdns.js:857 +msgid "udp" +msgstr "udp" + +#: smartdns.js:858 +msgid "tcp" +msgstr "tcp" + +#: smartdns.js:859 +msgid "tls" +msgstr "tls" + +#: smartdns.js:860 +msgid "https" +msgstr "https" + +#: smartdns.js:865 +msgid "DNS Server group" +msgstr "服务器组" + +#: smartdns.js:884 +msgid "Exclude Default Group" +msgstr "从默认组中排除" + +#: smartdns.js:884 +msgid "Exclude DNS Server from default group." +msgstr "从default默认服务器组中排除。" + +#: smartdns.js:891 +msgid "IP Blacklist Filtering" +msgstr "IP黑名单过滤" + +#: smartdns.js:892 +msgid "Filtering IP with blacklist" +msgstr "使用IP黑名单过滤" + +#: smartdns.js:898 +msgid "TLS Hostname Verify" +msgstr "校验TLS主机名" + +#: smartdns.js:899 +msgid "Set TLS hostname to verify." +msgstr "设置校验TLS主机名。" + +#: smartdns.js:908 +msgid "No check certificate" +msgstr "停用证书校验" + +#: smartdns.js:909 +msgid "Do not check certificate." +msgstr "不校验证书的合法性。" + +#: smartdns.js:917 +msgid "TLS SNI name" +msgstr "TLS SNI名称" + +#: smartdns.js:918 +msgid "Sets the server name indication for query. '-' for disable SNI name." +msgstr "设置服务器SNI名称,‘-’表示禁用SNI名称。" + +#: smartdns.js:927 +msgid "HTTP Host" +msgstr "HTTP主机" + +#: smartdns.js:928 +msgid "" +"Set the HTTP host used for the query. Use this parameter when the host of " +"the URL address is an IP address." +msgstr "设置查询时使用的HTTP主机,当URL地址的host是IP地址时,使用此参数。" + +#: smartdns.js:936 +msgid "TLS SPKI Pinning" +msgstr "TLS SPKI 指纹" + +#: smartdns.js:937 +msgid "" +"Used to verify the validity of the TLS server, The value is Base64 encoded " +"SPKI fingerprint, leaving blank to indicate that the validity of TLS is not " +"verified." +msgstr "" +"用于校验 TLS 服务器的有效性,数值为 Base64 编码的 SPKI 指纹,留空表示不验证 " +"TLS 的合法性。" + +#: smartdns.js:947 +msgid "Marking Packets" +msgstr "数据包标记" + +#: smartdns.js:948 +msgid "Set mark on packets." +msgstr "设置数据包标记。" + +#: smartdns.js:955 +msgid "Use Proxy" +msgstr "使用代理" + +#: smartdns.js:956 +msgid "Use proxy to connect to upstream DNS server." +msgstr "使用代理连接上游DNS服务器。" + +#: smartdns.js:970 +msgid "Please set proxy server first." +msgstr "请先设置代理服务器。" + +#: smartdns.js:974 +msgid "Only socks5 proxy support udp server." +msgstr "仅SOCKS5代理支持UDP服务器。" + +#: smartdns.js:982 +msgid "Additional Args for upstream dns servers" +msgstr "额外的上游 DNS 服务器参数" + +#: smartdns.js:990 +msgid "Client Rules" +msgstr "客户端规则" + +#: smartdns.js:990 +msgid "Client Rules Settings, can achieve parental control functionality." +msgstr "客户端规则设置,可以实现家长控制功能。" + +#: smartdns.js:994 +msgid "Basic Settings" +msgstr "基本设置" + +#: smartdns.js:996 smartdns.js:1187 +msgid "DNS Block Setting" +msgstr "域名屏蔽设置" + +#: smartdns.js:1002 +msgid "Client Address" +msgstr "客户端地址" + +#: smartdns.js:1003 +msgid "" +"If a client address is specified, only that client will apply this rule. You " +"can enter an IP address, such as 1.2.3.4, or a MAC address, such as aa:bb:cc:" +"dd:ee:ff." +msgstr "" +"如果指定了客户端,那么对应的客户端会应用相应的规则,可以输入IP地址,如:" +"1.2.3.4,或MAC地址,如:aa:bb:cc:dd:ee:ff。" + +#: smartdns.js:1024 +msgid "Client address format error, please input ip adress or mac address." +msgstr "客户端地址格式错误,请输入 IP 地址或 mac 地址。" + +#: smartdns.js:1027 +msgid "Client Address File" +msgstr "客户端地址文件" + +#: smartdns.js:1028 +msgid "Upload client address file, same as Client Address function." +msgstr "上传客户端地址文件,与客户端地址功能相同。" + +#: smartdns.js:1035 smartdns.js:1194 smartdns.js:1393 +msgid "DNS Server group belongs to, such as office, home." +msgstr "设置服务器组,例如office,home" + +#: smartdns.js:1055 smartdns.js:1214 smartdns.js:1413 +#, javascript-format +msgid "Server Group %s not exists" +msgstr "服务器组%s不存在" + +#: smartdns.js:1171 smartdns.js:1317 smartdns.js:1347 smartdns.js:1417 +msgid "Domain List File" +msgstr "域名列表文件" + +#: smartdns.js:1171 smartdns.js:1347 +msgid "Upload domain list file." +msgstr "上传域名列表文件" + +#: smartdns.js:1182 +msgid "Domain Rules" +msgstr "域名规则" + +#: smartdns.js:1182 +msgid "Domain Rules Settings" +msgstr "域名规则设置" + +#: smartdns.js:1186 +msgid "DNS Forwarding Setting" +msgstr "域名分流设置" + +#: smartdns.js:1188 smartdns.js:1375 +msgid "Domain Rule List" +msgstr "域名规则列表" + +#: smartdns.js:1188 +msgid "Set Specific domain rule list." +msgstr "设置指定域名的规则列表。" + +#: smartdns.js:1189 +msgid "Domain Address" +msgstr "域名地址" + +#: smartdns.js:1189 +msgid "Set Specific domain ip address." +msgstr "设置指定域名的IP地址。" + +#: smartdns.js:1265 smartdns.js:1439 +msgid "Yes" +msgstr "是" + +#: smartdns.js:1266 smartdns.js:1440 +msgid "No" +msgstr "否" + +#: smartdns.js:1311 smartdns.js:1515 smartdns.js:1612 +msgid "Additional Rule Flag" +msgstr "额外规则标识" + +#: smartdns.js:1312 smartdns.js:1516 +msgid "" +"Additional Flags for rules, read help on domain-rule for more information." +msgstr "额外的规则标识,具体参考domain-rule的帮助说明。" + +#: smartdns.js:1318 smartdns.js:1418 +msgid "" +"Upload domain list file, or configure auto download from Download File " +"Setting page." +msgstr "上传域名列表文件,或在下载文件设置页面设置自动下载。" + +#: smartdns.js:1326 smartdns.js:1355 +msgid "Domain List" +msgstr "域名列表" + +#: smartdns.js:1326 +msgid "Configure forwarding domain name list." +msgstr "配置分流域名列表" + +#: smartdns.js:1355 +msgid "Configure block domain list." +msgstr "配置屏蔽域名列表" + +#: smartdns.js:1376 +msgid "Configure domain rule list." +msgstr "配置域名规则列表" + +#: smartdns.js:1391 +msgid "Domain Rule Name" +msgstr "域名规则名称" + +#: smartdns.js:1424 +msgid "Block domain" +msgstr "屏蔽域名" + +#: smartdns.js:1424 +msgid "Block domain." +msgstr "屏蔽域名。" + +#: smartdns.js:1526 +msgid "" +"Specify an IP address to return for any host in the given domains, Queries " +"in the domains are never forwarded and always replied to with the specified " +"IP address which may be IPv4 or IPv6." +msgstr "" +"配置特定域名返回特定的IP地址,域名查询将不到上游服务器请求,直接返回配置的IP" +"地址,可用于广告屏蔽。" + +#: smartdns.js:1545 +msgid "IP Rules" +msgstr "IP规则" + +#: smartdns.js:1545 +msgid "IP Rules Settings" +msgstr "IP规则设置" + +#: smartdns.js:1549 smartdns.js:1555 +msgid "IP Rule List" +msgstr "IP规则列表" + +#: smartdns.js:1549 +msgid "Set Specific ip rule list." +msgstr "设置对应IP的规则。" + +#: smartdns.js:1550 +msgid "IP Blacklist" +msgstr "IP黑名单" + +#: smartdns.js:1550 +msgid "Set Specific ip blacklist." +msgstr "设置指定的 IP 黑名单列表。" + +#: smartdns.js:1556 +msgid "Configure ip rule list." +msgstr "配置IP规则列表" + +#: smartdns.js:1571 +msgid "IP Rule Name" +msgstr "IP规则名称" + +#: smartdns.js:1575 +msgid "IP Set File" +msgstr "IP集合列表文件" + +#: smartdns.js:1575 +msgid "Upload IP set file." +msgstr "上传IP集合列表文件。" + +#: smartdns.js:1581 +msgid "IP Addresses" +msgstr "IP地址" + +#: smartdns.js:1581 +msgid "IP addresses, CIDR format." +msgstr "IP地址,CIDR格式。" + +#: smartdns.js:1586 +msgid "Whitelist IP" +msgstr "白名单" + +#: smartdns.js:1586 +msgid "Whitelist IP Rule, Accept IP addresses within the range." +msgstr "白名单规则,接受指定范围的IP地址。" + +#: smartdns.js:1591 +msgid "Blacklist IP" +msgstr "黑名单" + +#: smartdns.js:1591 +msgid "Blacklist IP Rule, Decline IP addresses within the range." +msgstr "黑名单规则,拒绝指定范围的IP地址。" + +#: smartdns.js:1596 +msgid "Ignore IP" +msgstr "忽略IP" + +#: smartdns.js:1596 +msgid "Do not use these IP addresses." +msgstr "忽略这些IP地址" + +#: smartdns.js:1601 +msgid "Bogus nxdomain" +msgstr "假冒IP" + +#: smartdns.js:1601 +msgid "Return SOA when the requested result contains a specified IP address." +msgstr "当结果包含对应范围的IP时,返回SOA。" + +#: smartdns.js:1606 +msgid "IP alias" +msgstr "IP别名" + +#: smartdns.js:1606 +msgid "" +"IP Address Mapping, Can be used for CDN acceleration with Anycast IP, such " +"as Cloudflare's CDN." +msgstr "IP地址映射,可用于支持AnyCast IP的CDN加速,比如Cloudflare的CDN。" + +#: smartdns.js:1613 +msgid "Additional Flags for rules, read help on ip-rule for more information." +msgstr "额外的规则标识,具体参考ip-rule的帮助说明。" + +#: smartdns.js:1622 +msgid "" +"Configure IP blacklists that will be filtered from the results of specific " +"DNS server." +msgstr "配置需要从指定域名服务器结果过滤的IP黑名单。" + +#: smartdns.js:1639 +msgid "Technical Support" +msgstr "技术支持" + +#: smartdns.js:1640 +msgid "If you like this software, please buy me a cup of coffee." +msgstr "如果本软件对你有帮助,请给作者加个蛋。" + +#: smartdns.js:1644 +msgid "SmartDNS official website" +msgstr "SmartDNS官方网站" + +#: smartdns.js:1645 +msgid "open website" +msgstr "打开网站" + +#: smartdns.js:1652 smartdns.js:1653 +msgid "Report bugs" +msgstr "报告BUG" + +#: smartdns.js:1660 +msgid "Donate to smartdns" +msgstr "捐助smartdns项目" + +#: smartdns.js:1661 +msgid "Donate" +msgstr "捐助" + +#: smartdns.js:1667 +msgid "Restart Service" +msgstr "重启服务" + +#: smartdns.js:1676 +msgid "Restart" +msgstr "重启" + +#~ msgid "Grant access to LuCI app smartdns" +#~ msgstr "授予访问 LuCI 应用 smartdns 的权限" diff --git a/luci-app-smartdns/po/zh_Hant/smartdns.po b/luci-app-smartdns/po/zh_Hant/smartdns.po new file mode 100644 index 0000000..b3dc1ec --- /dev/null +++ b/luci-app-smartdns/po/zh_Hant/smartdns.po @@ -0,0 +1,945 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2023-03-15 14:40+0000\n" +"Last-Translator: Hulen <shift0106@gmail.com>\n" +"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/" +"openwrt/luciapplicationssmartdns/zh_Hant/>\n" +"Language: zh_Hant\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.16.2-dev\n" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:792 +msgid "Additional Args for upstream dns servers" +msgstr "額外的上游 DNS 伺服器參數" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:886 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1090 +msgid "" +"Additional Flags for rules, read help on domain-rule for more information." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:885 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1089 +msgid "Additional Rule Flag" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:346 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:479 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791 +msgid "Additional Server Args" +msgstr "額外的伺服器參數" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:347 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:480 +msgid "" +"Additional server args, refer to the help description of the bind option." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:132 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:639 +msgid "Advanced Settings" +msgstr "進階設定" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:253 +msgid "" +"Attempts to serve old responses from cache with a TTL of 0 in the response " +"without waiting for the actual resolution to finish." +msgstr "查詢性能優化,有請求時嘗試回應 TTL 為 0 的過期記錄,以避免查詢等待。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:161 +msgid "Automatically Set Dnsmasq" +msgstr "自動設置 Dnsmasq" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:161 +msgid "Automatically set as upstream of dnsmasq when port changes." +msgstr "通訊埠更改時自動設為 dnsmasq 的上游。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:229 +msgid "Bind Device" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:234 +msgid "Bind Device Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:998 +msgid "Block domain" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:998 +msgid "Block domain." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:262 +msgid "Cache Persist" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:258 +msgid "Cache Size" +msgstr "緩存大小" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:121 +msgid "Collecting data ..." +msgstr "正在收集數據..." + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1100 +msgid "" +"Configure IP blacklists that will be filtered from the results of specific " +"DNS server." +msgstr "配置需要从指定域名伺服器結果過濾的 IP 黑名單。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:929 +msgid "Configure block domain list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:950 +msgid "Configure domain rule list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:900 +msgid "Configure forwarding domain name list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:137 +msgid "Custom Settings" +msgstr "自定義設置" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:805 +msgid "DNS Block Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:804 +msgid "DNS Forwarding Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:648 +msgid "DNS Server Name" +msgstr "DNS 伺服器名稱" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:675 +msgid "DNS Server group" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:813 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:967 +msgid "DNS Server group belongs to, such as office, home." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:651 +msgid "DNS Server ip" +msgstr "DNS 伺服器 IP" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:656 +msgid "DNS Server port" +msgstr "DNS 伺服器通訊埠" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:665 +msgid "DNS Server type" +msgstr "協議類型" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:258 +msgid "DNS domain result cache size" +msgstr "緩存 DNS 的結果,緩存大小,配置零則不緩存" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:487 +msgid "DNS64" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:134 +msgid "DNS64 Server Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:560 +msgid "Description" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:76 +msgid "Dnsmasq Forwarded To Smartdns Failure" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:719 +msgid "Do not check certificate." +msgstr "不校驗憑證的合法性。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:397 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:838 +msgid "Do not check speed." +msgstr "禁用測速。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807 +msgid "Domain Address" +msgstr "域名位址" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:900 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:929 +msgid "Domain List" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:891 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:921 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:991 +msgid "Domain List File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:949 +msgid "Domain Rule List" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:965 +msgid "Domain Rule Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:800 +msgid "Domain Rules" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:800 +msgid "Domain Rules Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:324 +msgid "Domain TTL" +msgstr "域名 TTL" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:336 +msgid "Domain TTL Max" +msgstr "域名 TTL 最大值" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:328 +msgid "Domain TTL Min" +msgstr "域名 TTL 最小值" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:246 +msgid "Domain prefetch" +msgstr "域名預加載" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1159 +msgid "Donate" +msgstr "捐贈" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1158 +msgid "Donate to smartdns" +msgstr "捐贈 smartdns 項目" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:526 +msgid "Download Files" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:135 +msgid "Download Files Setting" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:135 +msgid "" +"Download domain list files for domain-rule and include config files, please " +"refresh the page after download to take effect." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:240 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1007 +msgid "Dual-stack IP Selection" +msgstr "雙棧 IP 優選" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:142 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:371 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:642 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:959 +msgid "Enable" +msgstr "启用" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:495 +msgid "Enable Auto Update" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:241 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1008 +msgid "Enable IP selection between IPV4 and IPV6" +msgstr "启用 IPV4 和 IPV6 間的 IP 優選策略" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:224 +msgid "Enable IPV6 DNS Server" +msgstr "启用 IPV6 伺服器" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:219 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:384 +msgid "Enable TCP DNS Server" +msgstr "启用 TCP 伺服器" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:495 +msgid "Enable daily auto update." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:247 +msgid "Enable domain prefetch, accelerate domain response speed." +msgstr "启用域名預加載,加速域名響應速度。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:372 +msgid "Enable or disable second DNS server." +msgstr "是否启用第二 DNS 伺服器。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:142 +msgid "Enable or disable smartdns server" +msgstr "启用或禁用 SmartDNS 服務" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:694 +msgid "Exclude DNS Server from default group." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:694 +msgid "Exclude Default Group" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:215 +msgid "Fastest IP" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:216 +msgid "Fastest Response" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:535 +msgid "File Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 +msgid "File Type" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:702 +msgid "Filtering IP with blacklist" +msgstr "使用 IP 黑名單過濾" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:214 +msgid "First Ping" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:272 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:436 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:842 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1056 +msgid "Force AAAA SOA" +msgstr "停用 IPV6 位址解析" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:272 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:436 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:842 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1056 +msgid "Force AAAA SOA." +msgstr "停用 IPV6 位址解析。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:277 +msgid "Force HTTPS SOA" +msgstr "停用 HTTPS 位址解析" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:277 +msgid "Force HTTPS SOA." +msgstr "停用 HTTPS 位址解析。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:128 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:131 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:638 +msgid "General Settings" +msgstr "常規設置" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:599 +msgid "Generate Coredump" +msgstr "生成 coredump" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:600 +msgid "" +"Generate Coredump file when smartdns crash, coredump file is located at /tmp/" +"smartdns.xxx.core." +msgstr "" +"當 smartdns 異常時生成 coredump 文檔,coredump 文檔在 /tmp/smartdns.xxx.core." + +#: applications/luci-app-smartdns/root/usr/share/rpcd/acl.d/luci-app-smartdns.json:3 +msgid "Grant access to LuCI app smartdns" +msgstr "授予訪問 LuCI 應用 smartdns 的權限" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:737 +msgid "HTTP Host" +msgstr "HTTP 主機" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:808 +msgid "IP Blacklist" +msgstr "IP 黑名單" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:701 +msgid "IP Blacklist Filtering" +msgstr "IP 黑名單過濾" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:224 +msgid "IPV6 Server" +msgstr "IPV6 伺服器" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:440 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:846 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1062 +msgid "IPset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:440 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:846 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1062 +msgid "IPset name." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1138 +msgid "If you like this software, please buy me a cup of coffee." +msgstr "如果本软件对你有帮助,请给作者加个蛋。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:353 +msgid "Include Config Files<br>/etc/smartdns/conf.d" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:354 +msgid "" +"Include other config files from /etc/smartdns/conf.d or custom path, can be " +"downloaded from the download page." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:283 +msgid "Ipset name, Add domain result to ipset when speed check fails." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:527 +msgid "List of files to download." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:229 +msgid "Listen only on the specified interfaces." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:153 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:377 +msgid "Local Port" +msgstr "本地通訊埠" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:624 +msgid "Log File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:608 +msgid "Log Level" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:620 +msgid "Log Number" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:604 +msgid "Log Size" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:757 +msgid "Marking Packets" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:337 +msgid "Maximum TTL for all domain result." +msgstr "所有域名的最大 TTL 值。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:329 +msgid "Minimum TTL for all domain result." +msgstr "所有域名的最小 TTL 值。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:459 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:865 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1068 +msgid "NFTset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:316 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:471 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:877 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1081 +msgid "NFTset name format error, format: [#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:459 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:865 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1068 +msgid "NFTset name, format: [#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:66 +msgid "NOT RUNNING" +msgstr "未運行" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:234 +msgid "Name of device name listen on." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:304 +msgid "" +"Nftset name, Add domain result to nftset when speed check fails, format: " +"[#[4|6]:[family#table#set]]" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1014 +msgid "No" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:282 +msgid "No Speed IPset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:303 +msgid "No Speed NFTset Name" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:718 +msgid "No check certificate" +msgstr "停用憑證校驗" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:177 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1000 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1025 +msgid "None" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:784 +msgid "Only socks5 proxy support udp server." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:780 +msgid "Please set proxy server first." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:567 +msgid "Proxy Server" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:136 +msgid "Proxy Server Settings" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:567 +msgid "Proxy Server URL, format: [socks5|http]://user:pass@ip:port." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:575 +msgid "" +"Proxy server URL format error, format: [socks5|http]://user:pass@ip:port." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:390 +msgid "Query DNS through specific dns server group, such as office, home." +msgstr "使用指定伺服器組查詢,比如office, home。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:64 +msgid "RUNNING" +msgstr "運行中" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:341 +msgid "Reply Domain TTL Max" +msgstr "回應的域名 TTL 最大值" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:342 +msgid "Reply maximum TTL for all domain result." +msgstr "設置返回给用戶端的域名 TTL 最大值。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1150 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1151 +msgid "Report bugs" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:267 +msgid "Resolve Local Hostnames" +msgstr "解析本地主機名" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:267 +msgid "Resolve local hostnames by reading Dnsmasq lease file." +msgstr "讀取 Dnsmasq 的租約文檔解析本地主機名。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:209 +msgid "Response Mode" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1174 +msgid "Restart" +msgstr "重啟" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1165 +msgid "Restart Service" +msgstr "重啟服務" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:133 +msgid "Second Server Settings" +msgstr "第二 DNS 伺服器" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:252 +msgid "Serve expired" +msgstr "緩存過期服務" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:389 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:675 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:813 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:967 +msgid "Server Group" +msgstr "伺服器組" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:833 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:987 +msgid "Server Group %s not exists" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:147 +msgid "Server Name" +msgstr "伺服器名稱" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807 +msgid "Set Specific domain ip address." +msgstr "設置指定域名的 IP 位址。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806 +msgid "Set Specific domain rule list." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:808 +msgid "Set Specific ip blacklist." +msgstr "設置指定的 IP 黑名單列表。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:709 +msgid "Set TLS hostname to verify." +msgstr "設置校驗 TLS 主機名。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:758 +msgid "Set mark on packets." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:738 +msgid "" +"Set the HTTP host used for the query. Use this parameter when the host of " +"the URL address is an IP address." +msgstr "" +"設置查詢時使用的 HTTP 主機,當 URL 位址的 host 是 IP 位址時,使用此參數。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:728 +msgid "Sets the server name indication for query. '-' for disable SNI name." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:128 +msgid "Settings" +msgstr "設置" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:402 +msgid "Skip Address Rules" +msgstr "跳過 address 规則" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:431 +msgid "Skip Cache" +msgstr "跳過 cache" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:431 +msgid "Skip Cache." +msgstr "跳過 cache。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:425 +msgid "Skip Dualstack Selection" +msgstr "跳過双栈優選" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:426 +msgid "Skip Dualstack Selection." +msgstr "跳過双栈優選。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:414 +msgid "Skip Ipset Rule" +msgstr "跳過 ipset 规則" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:408 +msgid "Skip Nameserver Rule" +msgstr "跳過 Nameserver 规則" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:420 +msgid "Skip SOA Address Rule" +msgstr "跳過 address SOA(#) 规則" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:421 +msgid "Skip SOA address rules." +msgstr "跳過 address SOA(#) 规則。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:396 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:837 +msgid "Skip Speed Check" +msgstr "跳過測速" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:403 +msgid "Skip address rules." +msgstr "跳過 address 规則。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:415 +msgid "Skip ipset rules." +msgstr "跳過 ipset 规則。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:409 +msgid "Skip nameserver rules." +msgstr "跳過 Nameserver 规則。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:95 +#: applications/luci-app-smartdns/root/usr/share/luci/menu.d/luci-app-smartdns.json:3 +msgid "SmartDNS" +msgstr "SmartDNS" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:96 +msgid "SmartDNS Server" +msgstr "SmartDNS 伺服器" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:97 +msgid "" +"SmartDNS is a local high-performance DNS server, supports finding fastest " +"IP, supports ad filtering, and supports avoiding DNS poisoning." +msgstr "SmartDNS 是一个本地高性能 DNS 伺服器,支持返回最快 IP,支持廣告過濾。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1142 +msgid "SmartDNS official website" +msgstr "SmartDNS 官方網站" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:377 +msgid "Smartdns local server port" +msgstr "SmartDNS 本地服務通訊埠" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:154 +msgid "" +"Smartdns local server port, smartdns will be automatically set as main dns " +"when the port is 53." +msgstr "" +"SmartDNS 本地服務通訊埠,當通訊埠号設置為 53 時,smartdns 将会自動配置為主 " +"dns。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:210 +msgid "" +"Smartdns response mode, First Ping: return the first ping IP, Fastest IP: " +"return the fastest IP, Fastest Response: return the fastest DNS response." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:147 +msgid "Smartdns server name" +msgstr "SmartDNS 的伺服器名稱,默认為 smartdns,留空為主機名" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:169 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1016 +msgid "Smartdns speed check mode." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1119 +msgid "" +"Specify an IP address to return for any host in the given domains, Queries " +"in the domains are never forwarded and always replied to with the specified " +"IP address which may be IPv4 or IPv6." +msgstr "" +"配置特定域名返回特定的 IP 位址,域名查詢将不到上游伺服器請求,直接返回配置的 " +"IP位址,可用于廣告屏蔽。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:169 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1016 +msgid "Speed Check Mode" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:202 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1050 +msgid "Speed check mode is invalid." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:219 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:384 +msgid "TCP Server" +msgstr "TCP 伺服器" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:196 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1044 +msgid "TCP port is empty" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:708 +msgid "TLS Hostname Verify" +msgstr "校驗 TLS 主機名" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:727 +msgid "TLS SNI name" +msgstr "TLS SNI 名稱" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:746 +msgid "TLS SPKI Pinning" +msgstr "TLS SPKI 指紋" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:324 +msgid "TTL for all domain result." +msgstr "設置所有域名的 TTL 值。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1137 +msgid "Technical Support" +msgstr "技術支持" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:539 +msgid "URL" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:548 +msgid "URL format error, format: http:// or https://" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:523 +msgid "Update" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:514 +msgid "Update Files" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:500 +msgid "Upload Config File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:507 +msgid "Upload Domain List File" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:508 +msgid "Upload domain list file to /etc/smartdns/domain-set" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:892 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:992 +msgid "" +"Upload domain list file, or configure auto download from Download File " +"Setting page." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:921 +msgid "Upload domain list file." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:501 +msgid "Upload smartdns config file to /etc/smartdns/conf.d" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:631 +msgid "Upstream Servers" +msgstr "上游伺服器" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:632 +msgid "" +"Upstream Servers, support UDP, TCP protocol. Please configure multiple DNS " +"servers, including multiple foreign DNS servers." +msgstr "" +"上游 DNS 伺服器,支持 UDP,TCP 協議。请配置多个上游 DNS 伺服器,包括多个国内" +"外伺服器。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:765 +msgid "Use Proxy" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:766 +msgid "Use proxy to connect to upstream DNS server." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:747 +msgid "" +"Used to verify the validity of the TLS server, The value is Base64 encoded " +"SPKI fingerprint, leaving blank to indicate that the validity of TLS is not " +"verified." +msgstr "" +"用于校驗 TLS 伺服器的有效性,數值為 Base64 編碼的 SPKI 指紋,留空表示不驗證 " +"TLS 的合法性。" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:262 +msgid "Write cache to disk on exit and load on startup." +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1013 +msgid "Yes" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:172 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:213 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:611 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1012 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1020 +msgid "default" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:555 +msgid "domain list (/etc/smartdns/domain-set)" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:670 +msgid "https" +msgstr "https" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:651 +msgid "ip" +msgstr "ip" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:295 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:452 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:858 +msgid "ipset name format error, format: [#[4|6]:]ipsetname" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1143 +msgid "open website" +msgstr "打开網站" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:656 +msgid "port" +msgstr "通訊埠" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:556 +msgid "smartdns config (/etc/smartdns/conf.d)" +msgstr "" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:585 +msgid "smartdns custom settings" +msgstr "smartdns 自定義設置,具體配置參數參考指導" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:668 +msgid "tcp" +msgstr "tcp" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:669 +msgid "tls" +msgstr "tls" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:554 +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:665 +msgid "type" +msgstr "類型" + +#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:667 +msgid "udp" +msgstr "udp" + +#~ msgid "" +#~ "DNS Server group belongs to, used with nameserver, such as office, home." +#~ msgstr "DNS 伺服器所屬組, 配合 nameserver 使用,例如:office,home。" + +#~ msgid "Dnsmasq Forwared To Smartdns Failure" +#~ msgstr "重定向 dnsmasq 到 smartdns 失敗" + +#~ msgid "Sets the server name indication for query." +#~ msgstr "設置查詢時使用的伺服器 SNI 名稱。" + +#~ msgid "IPV4 53 Port Redirect Failure" +#~ msgstr "IPV4 53 通訊埠重定向失敗" + +#~ msgid "IPV6 53 Port Redirect Failure" +#~ msgstr "IPV6 53 通訊埠重定向失敗" + +#~ msgid "Redirect" +#~ msgstr "重定向" + +#~ msgid "Redirect 53 port to SmartDNS" +#~ msgstr "重定向 53 通訊埠到 SmartDNS" + +#~ msgid "Run as dnsmasq upstream server" +#~ msgstr "作為 dnsmasq 的上游伺服器" + +#~ msgid "SmartDNS redirect mode" +#~ msgstr "SmartDNS 重定向模式" + +#~ msgid "none" +#~ msgstr "无" diff --git a/luci-app-smartdns/root/usr/libexec/smartdns-call b/luci-app-smartdns/root/usr/libexec/smartdns-call new file mode 100755 index 0000000..2537792 --- /dev/null +++ b/luci-app-smartdns/root/usr/libexec/smartdns-call @@ -0,0 +1,24 @@ +#!/bin/sh +# +# Copyright 2018-2025 Nick Peng <zxlhhyccc@gmail.com> +# Licensed to the public under the GPL V3 License. + +action=$1 +shift + +log_file="$(uci -q get smartdns.@smartdns[0].log_file)" +list_file="${log_file:-/var/log/smartdns/smartdns.log}" + +case "$action" in + tail) + if [ ! -e "$list_file" ]; then + echo "Log file does not exist." + fi + # read log + tail -n 5000 "$list_file" + ;; + clear_log) + # clear log + > $list_file + ;; +esac diff --git a/luci-app-smartdns/root/usr/share/luci/menu.d/luci-app-smartdns.json b/luci-app-smartdns/root/usr/share/luci/menu.d/luci-app-smartdns.json new file mode 100644 index 0000000..45f796c --- /dev/null +++ b/luci-app-smartdns/root/usr/share/luci/menu.d/luci-app-smartdns.json @@ -0,0 +1,21 @@ +{ + "admin/services/smartdns": { + "title": "SmartDNS", + "order": 60, + "action": { + "type": "view", + "path": "smartdns/smartdns" + }, + "depends": { + "acl": [ "luci-app-smartdns" ], + "uci": { "smartdns": true } + } + }, + + "admin/services/smartdns/log": { + "action": { + "type": "view", + "path": "smartdns/log" + } + } +} diff --git a/luci-app-smartdns/root/usr/share/rpcd/acl.d/luci-app-smartdns.json b/luci-app-smartdns/root/usr/share/rpcd/acl.d/luci-app-smartdns.json new file mode 100644 index 0000000..f276230 --- /dev/null +++ b/luci-app-smartdns/root/usr/share/rpcd/acl.d/luci-app-smartdns.json @@ -0,0 +1,25 @@ +{ + "luci-app-smartdns": { + "description": "Grant access to LuCI app smartdns", + "read": { + "cgi-io": [ "exec" ], + "file": { + "/etc/smartdns/*": [ "read" ], + "/usr/libexec/smartdns-call tail": [ "exec" ], + "/usr/libexec/smartdns-call clear_log": [ "exec" ] + }, + "ubus": { + "service": [ "list" ] + }, + "uci": [ "smartdns" ] + }, + "write": { + "file": { + "/etc/smartdns/*": [ "write" ], + "/etc/init.d/smartdns restart": [ "exec" ], + "/etc/init.d/smartdns updatefiles": [ "exec" ] + }, + "uci": [ "smartdns" ] + } + } +}