summaryrefslogtreecommitdiffhomepage
path: root/applications
diff options
context:
space:
mode:
Diffstat (limited to 'applications')
-rw-r--r--applications/luci-app-adblock/po/ja/adblock.po103
-rw-r--r--applications/luci-app-adblock/po/pt-br/adblock.po49
-rw-r--r--applications/luci-app-adblock/po/sv/adblock.po49
-rw-r--r--applications/luci-app-adblock/po/templates/adblock.pot49
-rw-r--r--applications/luci-app-adblock/po/zh-cn/adblock.po96
-rw-r--r--applications/luci-app-clamav/po/zh-cn/clamav.po131
-rw-r--r--applications/luci-app-dynapoint/Makefile3
-rw-r--r--applications/luci-app-fwknopd/Makefile2
-rw-r--r--applications/luci-app-mwan3/Makefile3
-rw-r--r--applications/luci-app-mwan3/luasrc/controller/mwan3.lua16
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua16
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua118
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua2
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua4
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua6
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua4
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua6
-rw-r--r--applications/luci-app-mwan3/po/ja/mwan3.po562
-rw-r--r--applications/luci-app-mwan3/po/templates/mwan3.pot464
-rw-r--r--applications/luci-app-mwan3/po/zh-cn/mwan3.po510
-rw-r--r--applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua51
-rw-r--r--applications/luci-app-openvpn/po/zh-cn/openvpn.po12
-rw-r--r--applications/luci-app-simple-adblock/po/ja/simple-adblock.po4
-rw-r--r--applications/luci-app-statistics/po/zh-cn/rrdtool.po135
-rw-r--r--applications/luci-app-statistics/po/zh-cn/statistics.po65
-rw-r--r--applications/luci-app-travelmate/Makefile6
-rw-r--r--applications/luci-app-travelmate/luasrc/controller/travelmate.lua22
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua53
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua36
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua36
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua36
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua36
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua129
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/setup_tab.lua55
-rw-r--r--applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm10
-rw-r--r--applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm15
-rw-r--r--applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm10
-rw-r--r--applications/luci-app-travelmate/po/ja/travelmate.po283
-rw-r--r--applications/luci-app-travelmate/po/pt-br/travelmate.po260
-rw-r--r--applications/luci-app-travelmate/po/templates/travelmate.pot168
-rw-r--r--applications/luci-app-uhttpd/Makefile7
-rwxr-xr-xapplications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp2
-rw-r--r--applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po7
-rw-r--r--applications/luci-app-wireguard/po/zh-cn/wireguard.po73
44 files changed, 3295 insertions, 409 deletions
diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po
index 39bc183493..3b8f0da8d0 100644
--- a/applications/luci-app-adblock/po/ja/adblock.po
+++ b/applications/luci-app-adblock/po/ja/adblock.po
@@ -8,7 +8,7 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.12\n"
+"X-Generator: Poedit 2.0\n"
"Language: ja\n"
msgid "."
@@ -26,6 +26,9 @@ msgstr "Adblock ログファイル"
msgid "Adblock version"
msgstr "Adblock バージョン"
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr "Adblock の処理が開始されるまでの、追加の遅延時間(秒)です。"
+
msgid "Advanced"
msgstr "詳細設定"
@@ -50,7 +53,7 @@ msgstr "データ収集中です..."
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
-"DNSの利用によって広告/不正ドメインをブロックする、adblock パッケージの設定で"
+"DNS の利用によって広告/不正ドメインをブロックする、Adblock パッケージの設定で"
"す。"
msgid "DNS backend"
@@ -59,6 +62,9 @@ msgstr "DNS バックエンド"
msgid "Description"
msgstr "説明"
+msgid "Download Utility (SSL Library)"
+msgstr "ダウンロード ユーティリティ(SSL ライブラリ)"
+
msgid "Edit Blacklist"
msgstr "ブラックリストの編集"
@@ -69,7 +75,7 @@ msgid "Edit Whitelist"
msgstr "ホワイトリストの編集"
msgid "Enable adblock"
-msgstr "Adblockの有効化"
+msgstr "Adblock の有効化"
msgid "Enable blocklist backup"
msgstr "ブロックリスト バックアップの有効化"
@@ -80,6 +86,13 @@ msgstr "詳細なデバッグ ログの有効化"
msgid "Enabled"
msgstr "有効"
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+"SSLで保護されているブロックリストの取得には、適切なSSL ライブラリが必要です。"
+"例: 'libustream-ssl' または wget 'ビルトイン'"
+
msgid "For further information"
msgstr "詳細な情報は"
@@ -95,22 +108,25 @@ msgstr "最終実行日時"
msgid "Loading"
msgstr "読込中"
+msgid "No"
+msgstr "いいえ"
+
msgid ""
"Note that list URLs and Shallalist category selections are configurable in "
"the 'Advanced' section."
msgstr ""
-"リストのURL及び \"Shalla\" リストのカテゴリー設定は、'詳細設定' セクションで"
-"設定することができます。"
+"リストの URL 及び \"Shalla\" リストのカテゴリー設定は、'詳細設定' セクション"
+"で設定することができます。"
msgid "Overview"
msgstr "概要"
msgid ""
"Please add only one domain per line. Comments introduced with '#' are "
-"allowed - ip addresses, wildcards & regex are not."
+"allowed - ip addresses, wildcards and regex are not."
msgstr ""
-"一行に一つのドメインを追加してください。'#' から始まるコメントを記述できます"
-"が、IPアドレスやワイルドカード、正規表現を設定値として使用することはできませ"
+"1行に1つのドメインを追加してください。'#' から始まるコメントを記述できます"
+"が、IP アドレスやワイルドカード、正規表現を設定値として使用することはできませ"
"ん。"
msgid "Query"
@@ -119,24 +135,34 @@ msgstr "検索"
msgid "Query domains"
msgstr "ドメインの検索"
-msgid "Restrict interface reload trigger to certain interface(s)"
-msgstr "リロード トリガを特定のインターフェースに限定する"
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr "インターフェース トリガーを特定のインターフェースに限定する"
+
+msgid "Resume adblock"
+msgstr "Adblock の再開"
msgid "Runtime information"
msgstr "実行情報"
+msgid "SSL req."
+msgstr "SSL 必須"
+
msgid ""
-"Space separated list of interfaces that trigger a reload action. To disable "
-"reload trigger at all set it to 'false'."
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
msgstr ""
-"リロードのトリガとなる、スペースで区切られたインターフェースのリストで"
-"す。'false' に設定した場合、全てのリロード トリガは無効になります。"
+"Adblock の処理のトリガーとなる、スペースで区切られたインターフェースのリスト"
+"です。処理を発生させるイベントを無効にするには、全てのエントリーを削除して空"
+"欄にします。"
msgid "Status"
msgstr "ステータス"
msgid "Suspend / Resume adblock"
-msgstr "Adblockの一時停止/再開"
+msgstr "Adblock の一時停止/再開"
+
+msgid "Suspend adblock"
+msgstr "Adblock の一時停止"
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
@@ -170,8 +196,11 @@ msgid ""
"This form shows the syslog output, pre-filtered for adblock related messages "
"only."
msgstr ""
-"このフォームには、システムログ内のAdblockに関連するメッセージのみが表示されま"
-"す。"
+"このフォームには、システムログ内の Adblock に関連するメッセージのみが表示され"
+"ます。"
+
+msgid "Trigger delay"
+msgstr "トリガー遅延"
msgid "View Logfile"
msgstr "ログファイルを見る"
@@ -179,9 +208,49 @@ msgstr "ログファイルを見る"
msgid "Waiting for command to complete..."
msgstr "コマンドの完了をお待ちください..."
+msgid "Yes"
+msgstr "はい"
+
+msgid "active"
+msgstr "動作中"
+
+msgid "n/a"
+msgstr "利用不可"
+
+msgid "no domains blocked"
+msgstr "ブロックされたドメインはありません"
+
msgid "see online documentation"
msgstr "オンライン ドキュメントを確認してください"
+msgid "suspended"
+msgstr "一時停止中"
+
+#~ msgid "Restrict interface reload trigger to certain interface(s)"
+#~ msgstr "リロード トリガを特定のインターフェースに限定する"
+
+#~ msgid ""
+#~ "Space separated list of interfaces that trigger a reload action. To "
+#~ "disable reload trigger at all remove all entries."
+#~ msgstr ""
+#~ "リロードのトリガとなる、スペースで区切られたインターフェースのリストです。"
+#~ "リロード トリガを無効にするには、全てのエントリーを削除して空欄にします。"
+
+#~ msgid ""
+#~ "Space separated list of interfaces that trigger a reload action. To "
+#~ "disable reload trigger at all set it to 'false'."
+#~ msgstr ""
+#~ "リロードのトリガとなる、スペースで区切られたインターフェースのリストで"
+#~ "す。'false' に設定した場合、全てのリロード トリガは無効になります。"
+
+#~ msgid ""
+#~ "Please add only one domain per line. Comments introduced with '#' are "
+#~ "allowed - ip addresses, wildcards & regex are not."
+#~ msgstr ""
+#~ "一行に一つのドメインを追加してください。'#' から始まるコメントを記述できま"
+#~ "すが、IPアドレスやワイルドカード、正規表現を設定値として使用することはでき"
+#~ "ません。"
+
#~ msgid ""
#~ "). Note that list URLs and Shallalist category selections are not "
#~ "configurable via Luci."
diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po
index 013768773e..60668675eb 100644
--- a/applications/luci-app-adblock/po/pt-br/adblock.po
+++ b/applications/luci-app-adblock/po/pt-br/adblock.po
@@ -27,6 +27,9 @@ msgstr ""
msgid "Adblock version"
msgstr ""
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
msgid "Advanced"
msgstr ""
@@ -60,6 +63,9 @@ msgstr ""
msgid "Description"
msgstr "Descrição"
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
msgid "Edit Blacklist"
msgstr ""
@@ -81,6 +87,11 @@ msgstr "Habilite registros detalhados para depuração"
msgid "Enabled"
msgstr "Habilitado"
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
msgid "For further information"
msgstr ""
@@ -96,6 +107,9 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "No"
+msgstr ""
+
msgid ""
"Note that list URLs and Shallalist category selections are configurable in "
"the 'Advanced' section."
@@ -106,7 +120,7 @@ msgstr ""
msgid ""
"Please add only one domain per line. Comments introduced with '#' are "
-"allowed - ip addresses, wildcards & regex are not."
+"allowed - ip addresses, wildcards and regex are not."
msgstr ""
msgid "Query"
@@ -115,15 +129,21 @@ msgstr ""
msgid "Query domains"
msgstr ""
-msgid "Restrict interface reload trigger to certain interface(s)"
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
msgstr ""
msgid "Runtime information"
msgstr ""
+msgid "SSL req."
+msgstr ""
+
msgid ""
-"Space separated list of interfaces that trigger a reload action. To disable "
-"reload trigger at all set it to 'false'."
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
msgstr ""
msgid "Status"
@@ -132,6 +152,9 @@ msgstr ""
msgid "Suspend / Resume adblock"
msgstr ""
+msgid "Suspend adblock"
+msgstr ""
+
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
"<br />"
@@ -157,15 +180,33 @@ msgid ""
"only."
msgstr ""
+msgid "Trigger delay"
+msgstr ""
+
msgid "View Logfile"
msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
+msgid "Yes"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "no domains blocked"
+msgstr ""
+
msgid "see online documentation"
msgstr ""
+msgid "suspended"
+msgstr ""
+
#~ msgid ""
#~ "). Note that list URLs and Shallalist category selections are not "
#~ "configurable via Luci."
diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po
index 9fcc36d26b..bc4a599299 100644
--- a/applications/luci-app-adblock/po/sv/adblock.po
+++ b/applications/luci-app-adblock/po/sv/adblock.po
@@ -16,6 +16,9 @@ msgstr ""
msgid "Adblock version"
msgstr ""
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
msgid "Advanced"
msgstr ""
@@ -49,6 +52,9 @@ msgstr ""
msgid "Description"
msgstr "Beskrivning"
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
msgid "Edit Blacklist"
msgstr ""
@@ -70,6 +76,11 @@ msgstr ""
msgid "Enabled"
msgstr "Aktiverad"
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
msgid "For further information"
msgstr ""
@@ -85,6 +96,9 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "No"
+msgstr ""
+
msgid ""
"Note that list URLs and Shallalist category selections are configurable in "
"the 'Advanced' section."
@@ -95,7 +109,7 @@ msgstr ""
msgid ""
"Please add only one domain per line. Comments introduced with '#' are "
-"allowed - ip addresses, wildcards & regex are not."
+"allowed - ip addresses, wildcards and regex are not."
msgstr ""
msgid "Query"
@@ -104,15 +118,21 @@ msgstr ""
msgid "Query domains"
msgstr ""
-msgid "Restrict interface reload trigger to certain interface(s)"
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
msgstr ""
msgid "Runtime information"
msgstr ""
+msgid "SSL req."
+msgstr ""
+
msgid ""
-"Space separated list of interfaces that trigger a reload action. To disable "
-"reload trigger at all set it to 'false'."
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
msgstr ""
msgid "Status"
@@ -121,6 +141,9 @@ msgstr ""
msgid "Suspend / Resume adblock"
msgstr ""
+msgid "Suspend adblock"
+msgstr ""
+
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
"<br />"
@@ -146,15 +169,33 @@ msgid ""
"only."
msgstr ""
+msgid "Trigger delay"
+msgstr ""
+
msgid "View Logfile"
msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
+msgid "Yes"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "no domains blocked"
+msgstr ""
+
msgid "see online documentation"
msgstr ""
+msgid "suspended"
+msgstr ""
+
#~ msgid "Available blocklist sources ("
#~ msgstr "Tillgängliga källor för blockeringslistor ("
diff --git a/applications/luci-app-adblock/po/templates/adblock.pot b/applications/luci-app-adblock/po/templates/adblock.pot
index 9282768892..d847a69ba0 100644
--- a/applications/luci-app-adblock/po/templates/adblock.pot
+++ b/applications/luci-app-adblock/po/templates/adblock.pot
@@ -16,6 +16,9 @@ msgstr ""
msgid "Adblock version"
msgstr ""
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
msgid "Advanced"
msgstr ""
@@ -47,6 +50,9 @@ msgstr ""
msgid "Description"
msgstr ""
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
msgid "Edit Blacklist"
msgstr ""
@@ -68,6 +74,11 @@ msgstr ""
msgid "Enabled"
msgstr ""
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
msgid "For further information"
msgstr ""
@@ -83,6 +94,9 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "No"
+msgstr ""
+
msgid ""
"Note that list URLs and Shallalist category selections are configurable in "
"the 'Advanced' section."
@@ -93,7 +107,7 @@ msgstr ""
msgid ""
"Please add only one domain per line. Comments introduced with '#' are "
-"allowed - ip addresses, wildcards & regex are not."
+"allowed - ip addresses, wildcards and regex are not."
msgstr ""
msgid "Query"
@@ -102,15 +116,21 @@ msgstr ""
msgid "Query domains"
msgstr ""
-msgid "Restrict interface reload trigger to certain interface(s)"
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
msgstr ""
msgid "Runtime information"
msgstr ""
+msgid "SSL req."
+msgstr ""
+
msgid ""
-"Space separated list of interfaces that trigger a reload action. To disable "
-"reload trigger at all set it to 'false'."
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
msgstr ""
msgid "Status"
@@ -119,6 +139,9 @@ msgstr ""
msgid "Suspend / Resume adblock"
msgstr ""
+msgid "Suspend adblock"
+msgstr ""
+
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
"<br />"
@@ -144,11 +167,29 @@ msgid ""
"only."
msgstr ""
+msgid "Trigger delay"
+msgstr ""
+
msgid "View Logfile"
msgstr ""
msgid "Waiting for command to complete..."
msgstr ""
+msgid "Yes"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "no domains blocked"
+msgstr ""
+
msgid "see online documentation"
msgstr ""
+
+msgid "suspended"
+msgstr ""
diff --git a/applications/luci-app-adblock/po/zh-cn/adblock.po b/applications/luci-app-adblock/po/zh-cn/adblock.po
index 277be1a6a3..28f37df28b 100644
--- a/applications/luci-app-adblock/po/zh-cn/adblock.po
+++ b/applications/luci-app-adblock/po/zh-cn/adblock.po
@@ -1,19 +1,20 @@
+# liushuyu <liushuyu_011@163.com>, 2017.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: kuoruan@gmail.com\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2017-04-15 21:35-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"Language-Team: Chinese <kde-i18n-doc@kde.org>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.5\n"
+"X-Generator: Poedit 2.0.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
msgid "."
-msgstr ""
+msgstr "."
msgid "Adblock"
msgstr "Adblock"
@@ -22,16 +23,19 @@ msgid "Adblock Domain Query"
msgstr ""
msgid "Adblock Logfile"
-msgstr ""
+msgstr "Adblock 日志文件"
msgid "Adblock version"
+msgstr "Adblock 版本"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
msgstr ""
msgid "Advanced"
-msgstr ""
+msgstr "高级"
msgid "Available blocklist sources."
-msgstr ""
+msgstr "可用的 blocklist 来源"
msgid "Backup directory"
msgstr "备份目录"
@@ -46,26 +50,29 @@ msgid "Blocklist sources"
msgstr "拦截列表来源"
msgid "Collecting data..."
-msgstr ""
+msgstr "正在收集数据..."
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。"
msgid "DNS backend"
-msgstr ""
+msgstr "DNS 后端"
msgid "Description"
msgstr "描述"
-msgid "Edit Blacklist"
+msgid "Download Utility (SSL Library)"
msgstr ""
+msgid "Edit Blacklist"
+msgstr "编辑黑名单"
+
msgid "Edit Configuration"
-msgstr ""
+msgstr "编辑设置"
msgid "Edit Whitelist"
-msgstr ""
+msgstr "编辑白名单"
msgid "Enable adblock"
msgstr "启用Adblock"
@@ -74,25 +81,33 @@ msgid "Enable blocklist backup"
msgstr "启用拦截规则备份"
msgid "Enable verbose debug logging"
-msgstr ""
+msgstr "启用详细调试输出"
msgid "Enabled"
msgstr "启用"
-msgid "For further information"
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
msgstr ""
+msgid "For further information"
+msgstr "更多信息"
+
msgid "Input file not found, please check your configuration."
msgstr ""
msgid "Invalid domain specified!"
-msgstr ""
+msgstr "无效域名!"
msgid "Last rundate"
msgstr ""
msgid "Loading"
-msgstr ""
+msgstr "加载中"
+
+msgid "No"
+msgstr "否"
msgid ""
"Note that list URLs and Shallalist category selections are configurable in "
@@ -100,35 +115,44 @@ msgid ""
msgstr ""
msgid "Overview"
-msgstr ""
+msgstr "总览"
msgid ""
"Please add only one domain per line. Comments introduced with '#' are "
-"allowed - ip addresses, wildcards & regex are not."
+"allowed - ip addresses, wildcards and regex are not."
msgstr ""
msgid "Query"
-msgstr ""
+msgstr "查询"
msgid "Query domains"
msgstr ""
-msgid "Restrict interface reload trigger to certain interface(s)"
+msgid "Restrict interface trigger to certain interface(s)"
msgstr ""
+msgid "Resume adblock"
+msgstr "恢复 Adblock"
+
msgid "Runtime information"
+msgstr "运行信息"
+
+msgid "SSL req."
msgstr ""
msgid ""
-"Space separated list of interfaces that trigger a reload action. To disable "
-"reload trigger at all set it to 'false'."
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
msgstr ""
msgid "Status"
-msgstr ""
+msgstr "状态"
msgid "Suspend / Resume adblock"
-msgstr ""
+msgstr "暂停/恢复 Adblock"
+
+msgid "Suspend adblock"
+msgstr "暂停 Adblock"
msgid ""
"This form allows you to modify the content of the adblock blacklist (%s)."
@@ -155,14 +179,32 @@ msgid ""
"only."
msgstr ""
+msgid "Trigger delay"
+msgstr "触发延迟"
+
msgid "View Logfile"
-msgstr ""
+msgstr "查看日志文件"
msgid "Waiting for command to complete..."
+msgstr "正在执行命令..."
+
+msgid "Yes"
+msgstr "是"
+
+msgid "active"
+msgstr "已启用"
+
+msgid "n/a"
msgstr ""
+msgid "no domains blocked"
+msgstr "没有被拦截的域名"
+
msgid "see online documentation"
-msgstr ""
+msgstr "查看在线文档"
+
+msgid "suspended"
+msgstr "已暂停"
#~ msgid ""
#~ "). Note that list URLs and Shallalist category selections are not "
diff --git a/applications/luci-app-clamav/po/zh-cn/clamav.po b/applications/luci-app-clamav/po/zh-cn/clamav.po
new file mode 100644
index 0000000000..6a2c5dfd54
--- /dev/null
+++ b/applications/luci-app-clamav/po/zh-cn/clamav.po
@@ -0,0 +1,131 @@
+# liushuyu <liushuyu_011@163.com>, 2017.
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2017-04-15 21:37-0600\n"
+"Language-Team: Chinese <kde-i18n-doc@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.1\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "拦截加密的归档文件"
+
+msgid "ClamAV"
+msgstr "ClamAV"
+
+msgid "Database check every N sec"
+msgstr "每 N 秒检测一次数据库"
+
+msgid "Detect broken executables"
+msgstr "检测破损的可执行文件"
+
+msgid "Detect possibly unwanted apps"
+msgstr "检测不受欢迎的软件"
+
+msgid "Enable verbose logging"
+msgstr "启用详细日志输出"
+
+msgid "Follow directory symlinks"
+msgstr "跟随目录符号链接"
+
+msgid "Follow file symlinks"
+msgstr "跟随文件符号链接"
+
+msgid "Log"
+msgstr "日志"
+
+msgid "Log additional infection info"
+msgstr "记录详细的感染信息"
+
+msgid "Log time with each message"
+msgstr "记录消息时间戳"
+
+msgid "Max directory scan depth"
+msgstr "最大扫描深度"
+
+msgid "Max number of threads"
+msgstr "最大线程数"
+
+msgid "Max size of log file"
+msgstr "最大日志大小"
+
+msgid "Max size of scanned file"
+msgstr "最大可扫描的文件大小"
+
+msgid "No"
+msgstr "否"
+
+msgid "Port range, highest port"
+msgstr "端口范围,最大端口"
+
+msgid "Port range, lowest port"
+msgstr "端口范围,最小端口"
+
+msgid "Scan ELF files"
+msgstr "扫描 ELF 文件"
+
+msgid "Scan MS Office and .msi files"
+msgstr "扫描 MS Office 文档和 .msi 安装包文件"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr "扫描符合 RFC1341 邮件分离规范的邮件"
+
+msgid "Scan archives"
+msgstr "扫描归档文件"
+
+msgid "Scan emails"
+msgstr "扫描电子邮件"
+
+msgid "Scan pdf files"
+msgstr "扫描 PDF 文件"
+
+msgid "Scan portable executables"
+msgstr "扫描 PE (Windows) 可执行文件"
+
+msgid "Scan swf files"
+msgstr "扫描 SWF 文件"
+
+msgid "Settings"
+msgstr "设置"
+
+msgid "Yes"
+msgstr "是"
diff --git a/applications/luci-app-dynapoint/Makefile b/applications/luci-app-dynapoint/Makefile
index d16ef4a8fa..83512dba5e 100644
--- a/applications/luci-app-dynapoint/Makefile
+++ b/applications/luci-app-dynapoint/Makefile
@@ -9,9 +9,6 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Support for DynaPoint
LUCI_DEPENDS:=+dynapoint
-PKG_NAME:=luci-app-dynapoint
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Tobias Ilte <tobias.ilte@campus.tu-berlin.de>
include ../../luci.mk
diff --git a/applications/luci-app-fwknopd/Makefile b/applications/luci-app-fwknopd/Makefile
index 3fbd88ad61..ba7a8568e7 100644
--- a/applications/luci-app-fwknopd/Makefile
+++ b/applications/luci-app-fwknopd/Makefile
@@ -8,8 +8,6 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Fwknopd config - web config for the firewall knock daemon
LUCI_DEPENDS:=+fwknopd +qrencode
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
PKG_LICENSE:=GPLv2
PKG_MAINTAINER:=Jonathan Bennett <JBennett@incomsystems.biz>
include ../../luci.mk
diff --git a/applications/luci-app-mwan3/Makefile b/applications/luci-app-mwan3/Makefile
index 758ec90a04..d65cd3af16 100644
--- a/applications/luci-app-mwan3/Makefile
+++ b/applications/luci-app-mwan3/Makefile
@@ -11,7 +11,8 @@ LUCI_DEPENDS:=+mwan3 +luci-mod-admin-full +luci-app-firewall +luci-lib-nixio
LUCI_PKGARCH:=all
PKG_LICENSE:=GPLv2
-PKG_MAINTAINER:=Aedan Renner <chipdankly@gmail.com>
+PKG_MAINTAINER:=Aedan Renner <chipdankly@gmail.com> \
+ Florian Eckert <fe@dev.tdt.de>
include ../../luci.mk
diff --git a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
index 3d5a23dd03..d3fd150692 100644
--- a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
+++ b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
@@ -64,9 +64,9 @@ function index()
end
function getInterfaceStatus(ruleNumber, interfaceName)
- if ut.trim(sys.exec("uci -p /var/state get mwan3." .. interfaceName .. ".enabled")) == "1" then
+ if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".enabled")) == "1" then
if ut.trim(sys.exec(ip .. "route list table " .. ruleNumber)) ~= "" then
- if ut.trim(sys.exec("uci -p /var/state get mwan3." .. interfaceName .. ".track_ip")) ~= "" then
+ if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".track_ip")) ~= "" then
return "online"
else
return "notMonitored"
@@ -102,7 +102,7 @@ function interfaceStatus()
wansid = {}
for wanName, interfaceState in string.gfind(statusString, "([^%[]+)%[([^%]]+)%]") do
- local wanInterfaceName = ut.trim(sys.exec("uci -p /var/state get network." .. wanName .. ".ifname"))
+ local wanInterfaceName = ut.trim(sys.exec("uci -q -p /var/state get network." .. wanName .. ".ifname"))
if wanInterfaceName == "" then
wanInterfaceName = "X"
end
@@ -115,7 +115,7 @@ function interfaceStatus()
end
-- overview status log
- local mwanLog = ut.trim(sys.exec("logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x'"))
+ local mwanLog = ut.trim(sys.exec("logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x' 2>/dev/null"))
if mwanLog ~= "" then
mArray.mwanlog = { mwanLog }
end
@@ -163,7 +163,7 @@ function diagnosticsData(interface, tool, task)
results = "MWAN3 started"
end
else
- local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. interface .. ".ifname"))
+ local interfaceDevice = ut.trim(sys.exec("uci -q -p /var/state get network." .. interface .. ".ifname"))
if interfaceDevice ~= "" then
if tool == "ping" then
local gateway = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $2}'"))
@@ -172,7 +172,7 @@ function diagnosticsData(interface, tool, task)
local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. gateway
results = pingCommand .. "\n\n" .. sys.exec(pingCommand)
else
- local tracked = ut.trim(sys.exec("uci -p /var/state get mwan3." .. interface .. ".track_ip"))
+ local tracked = ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interface .. ".track_ip"))
if tracked ~= "" then
for z in tracked:gmatch("[^ ]+") do
local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. z
@@ -301,7 +301,7 @@ function troubleshootingData()
mArray.iprule = { ipRuleShow }
-- ip route list table 1-250
- local routeList, routeString = ut.trim(sys.exec(ip .. "rule | sed 's/://g' | awk '$1>=2001 && $1<=2250' | awk '{print $NF}'")), ""
+ local routeList, routeString = ut.trim(sys.exec(ip .. "rule | sed 's/://g' 2>/dev/null | awk '$1>=2001 && $1<=2250' | awk '{print $NF}'")), ""
if routeList ~= "" then
for line in routeList:gmatch("[^\r\n]+") do
routeString = routeString .. line .. "\n" .. sys.exec(ip .. "route list table " .. line)
@@ -313,7 +313,7 @@ function troubleshootingData()
mArray.routelist = { routeString }
-- default firewall output policy
- local firewallOut = ut.trim(sys.exec("uci -p /var/state get firewall.@defaults[0].output"))
+ local firewallOut = ut.trim(sys.exec("uci -q -p /var/state get firewall.@defaults[0].output"))
if firewallOut == "" then
firewallOut = "No data found"
end
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
index a8e68a01be..7e863a371f 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
@@ -59,24 +59,24 @@ end
function interfaceWarnings() -- display status and warning messages at the top of the page
local warnings = ""
if interfaceNumber <= 250 then
- warnings = "<strong>There are currently " .. interfaceNumber .. " of 250 supported interfaces configured</strong>"
+ warnings = "<strong>" .. translatef("There are currently %d of 250 supported interfaces configured", interfaceNumber) .. "</strong>"
else
- warnings = "<font color=\"ff0000\"><strong>WARNING: " .. interfaceNumber .. " interfaces are configured exceeding the maximum of 250!</strong></font>"
+ warnings = "<font color=\"ff0000\"><strong>" .. translatef("WARNING: %d interfaces are configured exceeding the maximum of 250!", interfaceNumber) .. "</strong></font>"
end
if errorReliabilityList ~= " " then
- warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>WARNING: some interfaces have a higher reliability requirement than there are tracking IP addresses!</strong></font>"
+ warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have a higher reliability requirement than there are tracking IP addresses!") .. "</strong></font>"
end
if errorRouteList ~= " " then
- warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>WARNING: some interfaces have no default route in the main routing table!</strong></font>"
+ warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have no default route in the main routing table!") .. "</strong></font>"
end
if errorNetConfigList ~= " " then
- warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>WARNING: some interfaces are configured incorrectly or not at all in /etc/config/network!</strong></font>"
+ warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces are configured incorrectly or not at all in /etc/config/network!") .. "</strong></font>"
end
if errorNoMetricList ~= " " then
- warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>WARNING: some interfaces have no metric configured in /etc/config/network!</strong></font>"
+ warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have no metric configured in /etc/config/network!") .. "</strong></font>"
end
if errorDuplicateMetricList ~= " " then
- warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>WARNING: some interfaces have duplicate metrics configured in /etc/config/network!</strong></font>"
+ warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have duplicate metrics configured in /etc/config/network!") .. "</strong></font>"
end
return warnings
end
@@ -99,7 +99,7 @@ interfaceCheck()
m5 = Map("mwan3", translate("MWAN Interface Configuration"),
- translate(interfaceWarnings()))
+ interfaceWarnings())
m5:append(Template("mwan/config_css"))
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
index 387ff01a8d..e7c16fdfdc 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
@@ -50,21 +50,21 @@ end
function interfaceWarnings() -- display warning messages at the top of the page
local warns, lineBreak = "", ""
if errorReliability == 1 then
- warns = "<font color=\"ff0000\"><strong>WARNING: this interface has a higher reliability requirement than there are tracking IP addresses!</strong></font>"
+ warns = "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface has a higher reliability requirement than there are tracking IP addresses!") .. "</strong></font>"
lineBreak = "<br /><br />"
end
if errorRoute == 1 then
- warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>WARNING: this interface has no default route in the main routing table!</strong></font>"
+ warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface has no default route in the main routing table!") .. "</strong></font>"
lineBreak = "<br /><br />"
end
if errorNetConfig == 1 then
- warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>WARNING: this interface is configured incorrectly or not at all in /etc/config/network!</strong></font>"
+ warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface is configured incorrectly or not at all in /etc/config/network!") .. "</strong></font>"
lineBreak = "<br /><br />"
end
if errorNoMetric == 1 then
- warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>WARNING: this interface has no metric configured in /etc/config/network!</strong></font>"
+ warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface has no metric configured in /etc/config/network!") .. "</strong></font>"
elseif errorDuplicateMetric == 1 then
- warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>WARNING: this and other interfaces have duplicate metrics configured in /etc/config/network!</strong></font>"
+ warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this and other interfaces have duplicate metrics configured in /etc/config/network!") .. "</strong></font>"
end
return warns
end
@@ -87,8 +87,8 @@ errorReliability = 0
interfaceCheck()
-m5 = Map("mwan3", translate("MWAN Interface Configuration - " .. arg[1]),
- translate(interfaceWarnings()))
+m5 = Map("mwan3", translatef("MWAN Interface Configuration - %s", arg[1]),
+ interfaceWarnings())
m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "interface")
@@ -102,6 +102,11 @@ enabled = mwan_interface:option(ListValue, "enabled", translate("Enabled"))
enabled:value("1", translate("Yes"))
enabled:value("0", translate("No"))
+family = mwan_interface:option(ListValue, "family", translate("Internet Protocol"))
+ family.default = "ipv4"
+ family:value("ipv4", translate("IPv4"))
+ family:value("ipv6", translate("IPv6"))
+
track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking IP"),
translate("This IP address will be pinged to dermine if the link is up or down. Leave blank to assume interface is always online"))
track_ip.datatype = "ipaddr"
@@ -119,33 +124,80 @@ count = mwan_interface:option(ListValue, "count", translate("Ping count"))
count:value("4")
count:value("5")
+size = mwan_interface:option(Value, "size", translate("Ping size"))
+ size.default = "56"
+ size:value("8")
+ size:value("24")
+ size:value("56")
+ size:value("120")
+ size:value("248")
+ size:value("504")
+ size:value("1016")
+ size:value("1472")
+ size:value("2040")
+ size.datatype = "range(1, 65507)"
+ size.rmempty = false
+ size.optional = false
+
timeout = mwan_interface:option(ListValue, "timeout", translate("Ping timeout"))
timeout.default = "2"
- timeout:value("1", translate("1 second"))
- timeout:value("2", translate("2 seconds"))
- timeout:value("3", translate("3 seconds"))
- timeout:value("4", translate("4 seconds"))
- timeout:value("5", translate("5 seconds"))
- timeout:value("6", translate("6 seconds"))
- timeout:value("7", translate("7 seconds"))
- timeout:value("8", translate("8 seconds"))
- timeout:value("9", translate("9 seconds"))
- timeout:value("10", translate("10 seconds"))
+ timeout:value("1", translatef("%d second", 1))
+ timeout:value("2", translatef("%d seconds", 2))
+ timeout:value("3", translatef("%d seconds", 3))
+ timeout:value("4", translatef("%d seconds", 4))
+ timeout:value("5", translatef("%d seconds", 5))
+ timeout:value("6", translatef("%d seconds", 6))
+ timeout:value("7", translatef("%d seconds", 7))
+ timeout:value("8", translatef("%d seconds", 8))
+ timeout:value("9", translatef("%d seconds", 9))
+ timeout:value("10", translatef("%d seconds", 10))
interval = mwan_interface:option(ListValue, "interval", translate("Ping interval"))
interval.default = "5"
- interval:value("1", translate("1 second"))
- interval:value("3", translate("3 seconds"))
- interval:value("5", translate("5 seconds"))
- interval:value("10", translate("10 seconds"))
- interval:value("20", translate("20 seconds"))
- interval:value("30", translate("30 seconds"))
- interval:value("60", translate("1 minute"))
- interval:value("300", translate("5 minutes"))
- interval:value("600", translate("10 minutes"))
- interval:value("900", translate("15 minutes"))
- interval:value("1800", translate("30 minutes"))
- interval:value("3600", translate("1 hour"))
+ interval:value("1", translatef("%d second", 1))
+ interval:value("3", translatef("%d seconds", 3))
+ interval:value("5", translatef("%d seconds", 5))
+ interval:value("10", translatef("%d seconds", 10))
+ interval:value("20", translatef("%d seconds", 20))
+ interval:value("30", translatef("%d seconds", 30))
+ interval:value("60", translatef("%d minute", 1))
+ interval:value("300", translatef("%d minutes", 5))
+ interval:value("600", translatef("%d minutes", 10))
+ interval:value("900", translatef("%d minutes", 15))
+ interval:value("1800", translatef("%d minutes", 30))
+ interval:value("3600", translatef("%d hour", 1))
+
+failure = mwan_interface:option(Value, "failure_interval", translate("Failure interval"),
+ translate("Ping interval during failure detection"))
+ failure.default = "5"
+ failure:value("1", translatef("%d second", 1))
+ failure:value("3", translatef("%d seconds", 3))
+ failure:value("5", translatef("%d seconds", 5))
+ failure:value("10", translatef("%d seconds", 10))
+ failure:value("20", translatef("%d seconds", 20))
+ failure:value("30", translatef("%d seconds", 30))
+ failure:value("60", translatef("%d minute", 1))
+ failure:value("300", translatef("%d minutes", 5))
+ failure:value("600", translatef("%d minutes", 10))
+ failure:value("900", translatef("%d minutes", 15))
+ failure:value("1800", translatef("%d minutes", 30))
+ failure:value("3600", translatef("%d hour", 1))
+
+recovery = mwan_interface:option(Value, "recovery_interval", translate("Recovery interval"),
+ translate("Ping interval during failure recovering"))
+ recovery.default = "5"
+ recovery:value("1", translatef("%d second", 1))
+ recovery:value("3", translatef("%d seconds", 3))
+ recovery:value("5", translatef("%d seconds", 5))
+ recovery:value("10", translatef("%d seconds", 10))
+ recovery:value("20", translatef("%d seconds", 20))
+ recovery:value("30", translatef("%d seconds", 30))
+ recovery:value("60", translatef("%d minute", 1))
+ recovery:value("300", translatef("%d minutes", 5))
+ recovery:value("600", translatef("%d minutes", 10))
+ recovery:value("900", translatef("%d minutes", 15))
+ recovery:value("1800", translatef("%d minutes", 30))
+ recovery:value("3600", translatef("%d hour", 1))
down = mwan_interface:option(ListValue, "down", translate("Interface down"),
translate("Interface will be deemed down after this many failed ping tests"))
@@ -175,6 +227,14 @@ up = mwan_interface:option(ListValue, "up", translate("Interface up"),
up:value("9")
up:value("10")
+flush = mwan_interface:option(ListValue, "flush_conntrack", translate("Flush conntrack table"),
+ translate("Flush global firewall conntrack table on interface events"))
+ flush.default = "never"
+ flush:value("ifup", translate("ifup"))
+ flush:value("ifdown", translate("ifdown"))
+ flush:value("never", translate("never"))
+ flush:value("always", translate("always"))
+
metric = mwan_interface:option(DummyValue, "metric", translate("Metric"),
translate("This displays the metric assigned to this interface in /etc/config/network"))
metric.rawhtml = true
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
index 181d22e06f..eb6f417afe 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
@@ -14,7 +14,7 @@ dsp = require "luci.dispatcher"
arg[1] = arg[1] or ""
-m5 = Map("mwan3", translate("MWAN Member Configuration - ") .. arg[1])
+m5 = Map("mwan3", translatef("MWAN Member Configuration - %s", arg[1]))
m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "member")
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua
index e141d696a9..08c3f69de6 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua
@@ -13,7 +13,7 @@ end
function policyWarn() -- display status and warning messages at the top of the page
if nameTooLong == 1 then
- return "<font color=\"ff0000\"><strong>WARNING: Some policies have names exceeding the maximum of 15 characters!</strong></font>"
+ return "<font color=\"ff0000\"><strong>" .. translate("WARNING: Some policies have names exceeding the maximum of 15 characters!") .. "</strong></font>"
else
return ""
end
@@ -30,7 +30,7 @@ policyCheck()
m5 = Map("mwan3", translate("MWAN Policy Configuration"),
- translate(policyWarn()))
+ policyWarn())
m5:append(Template("mwan/config_css"))
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua
index f48a104c67..06a0fec668 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua
@@ -9,7 +9,7 @@ end
function policyWarn() -- display status and warning messages at the top of the page
if nameTooLong == 1 then
- return "<font color=\"ff0000\"><strong>WARNING: this policy's name is " .. policyNameLength .. " characters exceeding the maximum of 15!</strong></font>"
+ return "<font color=\"ff0000\"><strong>" .. translatef("WARNING: this policy's name is %d characters exceeding the maximum of 15!", policyNameLength) .. "</strong></font>"
else
return ""
end
@@ -32,8 +32,8 @@ nameTooLong = 0
policyCheck()
-m5 = Map("mwan3", translate("MWAN Policy Configuration - " .. arg[1]),
- translate(policyWarn()))
+m5 = Map("mwan3", translatef("MWAN Policy Configuration - %s", arg[1]),
+ policyWarn())
m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "policy")
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua
index a22e01054c..412f369eb0 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua
@@ -17,7 +17,7 @@ end
function ruleWarn() -- display warning messages at the top of the page
if error_protocol_list ~= " " then
- return "<font color=\"ff0000\"><strong>WARNING: some rules have a port configured with no or improper protocol specified! Please configure a specific protocol!</strong></font>"
+ return "<font color=\"ff0000\"><strong>" .. translate("WARNING: some rules have a port configured with no or improper protocol specified! Please configure a specific protocol!") .. "</strong></font>"
else
return ""
end
@@ -34,7 +34,7 @@ ruleCheck()
m5 = Map("mwan3", translate("MWAN Rule Configuration"),
- translate(ruleWarn()))
+ ruleWarn())
m5:append(Template("mwan/config_css"))
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua
index f7fb341e1f..25a96f5c8f 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua
@@ -13,7 +13,7 @@ end
function ruleWarn() -- display warning message at the top of the page
if error_protocol == 1 then
- return "<font color=\"ff0000\"><strong>WARNING: this rule is incorrectly configured with no or improper protocol specified! Please configure a specific protocol!</strong></font>"
+ return "<font color=\"ff0000\"><strong>" .. translate("WARNING: this rule is incorrectly configured with no or improper protocol specified! Please configure a specific protocol!") .. "</strong></font>"
else
return ""
end
@@ -45,8 +45,8 @@ error_protocol = 0
ruleCheck()
-m5 = Map("mwan3", translate("MWAN Rule Configuration - ") .. arg[1],
- translate(ruleWarn()))
+m5 = Map("mwan3", translatef("MWAN Rule Configuration - %s", arg[1]),
+ ruleWarn())
m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "rule")
diff --git a/applications/luci-app-mwan3/po/ja/mwan3.po b/applications/luci-app-mwan3/po/ja/mwan3.po
new file mode 100644
index 0000000000..cae45b8a2f
--- /dev/null
+++ b/applications/luci-app-mwan3/po/ja/mwan3.po
@@ -0,0 +1,562 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "%d hour"
+msgstr "%d 時間"
+
+msgid "%d minute"
+msgstr "%d 分"
+
+msgid "%d minutes"
+msgstr "%d 分"
+
+msgid "%d second"
+msgstr "%d 秒"
+
+msgid "%d seconds"
+msgstr "%d 秒"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"利用可能な値: 1-100。上記の追跡 IP の合計個数のうち、Up 状態と判定するために"
+"に必要な、レスポンスが返された追跡 IP アドレスの個数です。"
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "利用可能な値: 1-1000。空欄の場合のデフォルトは1です。"
+
+msgid "Advanced"
+msgstr "詳細設定"
+
+msgid "Check IP rules"
+msgstr "IP ルールのチェック"
+
+msgid "Check routing table"
+msgstr "ルーティング テーブルのチェック"
+
+msgid "Configuration"
+msgstr "設定"
+
+msgid "Currently Configured Interfaces"
+msgstr "設定済みインターフェース"
+
+msgid "Currently Configured Members"
+msgstr "設定済みメンバー"
+
+msgid "Currently Configured Policies"
+msgstr "設定済みポリシー"
+
+msgid "Destination address"
+msgstr "宛先アドレス"
+
+msgid "Destination port"
+msgstr "宛先ポート"
+
+msgid "Detailed Status"
+msgstr "詳細ステータス"
+
+msgid "Diagnostic Results"
+msgstr "診断結果"
+
+msgid "Diagnostics"
+msgstr "診断機能"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr ""
+"Down 状態のインターフェースが Up 状態と判断されるまでに要する ping テストの成"
+"功回数です。"
+
+msgid "Enabled"
+msgstr "有効"
+
+msgid "Errors"
+msgstr "エラー"
+
+msgid "Failure interval"
+msgstr "障害検出 インターバル"
+
+msgid "Flush conntrack table"
+msgstr ""
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+
+msgid "Hotplug Script"
+msgstr "ホットプラグ スクリプト"
+
+msgid "Hotplug ifdown"
+msgstr "ホットプラグ ifdown"
+
+msgid "Hotplug ifup"
+msgstr "ホットプラグ ifup"
+
+msgid "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Interface"
+msgstr "インターフェース"
+
+msgid "Interface Status"
+msgstr "インターフェース ステータス"
+
+msgid "Interface down"
+msgstr "インターフェース Down"
+
+msgid "Interface up"
+msgstr "インターフェース Up"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr ""
+"インターフェースが Down 状態と判断されるまでに要する ping テストの失敗回数で"
+"す。"
+
+msgid "Interfaces"
+msgstr "インターフェース"
+
+msgid "Internet Protocol"
+msgstr "インターネット プロトコル"
+
+msgid "Last resort"
+msgstr "最終手段"
+
+msgid "Load Balancing"
+msgstr "負荷分散"
+
+msgid "Loading"
+msgstr "読込中"
+
+msgid "MWAN Config"
+msgstr "MWAN 設定"
+
+msgid "MWAN Detailed Status"
+msgstr "MWAN 詳細ステータス"
+
+msgid "MWAN Interface Configuration"
+msgstr "MWAN インターフェース設定"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN インターフェース設定 - %s"
+
+msgid "MWAN Interface Diagnostics"
+msgstr "MWAN インターフェース診断"
+
+msgid "MWAN Interface Live Status"
+msgstr "MWAN インターフェース Live ステータス"
+
+msgid "MWAN Interface Systemlog"
+msgstr "MWAN インターフェース システムログ"
+
+msgid "MWAN Member Configuration"
+msgstr "MWAN メンバー設定"
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN メンバー設定 - %s"
+
+msgid "MWAN Policy Configuration"
+msgstr "MWAN ポリシー設定"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN ポリシー設定 - %s"
+
+msgid "MWAN Rule Configuration"
+msgstr "MWAN ルール設定"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN ルール設定 - %s"
+
+msgid "MWAN Service Control"
+msgstr "MWAN サービス コントロール"
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces<br />Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+"MWAN は、250個までの物理または論理、あるいは両方のインターフェースをサポート"
+"します。<br />MWAN は、全てのインターフェースが /etc/config/network で設定さ"
+"れるユニークなメトリックを持つことを必要とします。<br />下記 \"インターフェー"
+"ス\" の名前は、 /etc/config/network に存在するインターフェース名と同じでなけ"
+"ればなりません(詳細設定タブを確認)。<br />名前は A-Z, a-z, 0-9, _ を含むこ"
+"とができますが、スペースは使用できません。<br />インターフェースには、設定済"
+"みのメンバーやポリシー、ルールと同じ名前を使用することはできません。"
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"単一または複数のポート(例: \"22\" または \"80,443\")、あるいはポートの範囲"
+"(例: \"1024:2048\")を、クオーテーション無しで指定することができます。"
+
+msgid "Member used"
+msgstr "使用されるメンバー"
+
+msgid "Members"
+msgstr "メンバー"
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+"メンバーは、MWAN インターフェースのメトリックおよびウエイトを関連付けたプロ"
+"ファイルです。<br />名前は A-Z, a-z, 0-9, _ を含むことができますが、スペース"
+"は使用できません。<br />メンバーには、設定済みのインターフェースやポリシー、"
+"ルールと同じ名前を使用することはできません。"
+
+msgid "Members assigned"
+msgstr "アサイン済みメンバー"
+
+msgid "Metric"
+msgstr "メトリック"
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"IPset ルールの名前です。このルールは、 /etc/dnsmasq.conf で必要です。(例: "
+"\"ipset=/youtube.com/youtube\")"
+
+msgid "Network Config"
+msgstr "ネットワーク設定"
+
+msgid "No"
+msgstr "いいえ"
+
+msgid "Overview"
+msgstr "概要"
+
+msgid "Ping count"
+msgstr "Ping 回数"
+
+msgid "Ping default gateway"
+msgstr "Ping デフォルト ゲートウェイ"
+
+msgid "Ping interval"
+msgstr "Ping インターバル"
+
+msgid "Ping interval during failure detection"
+msgstr "障害検出動作中の Ping 実行間隔です。"
+
+msgid "Ping interval during failure recovering"
+msgstr "障害復旧中の Ping 実行間隔です。"
+
+msgid "Ping size"
+msgstr "Ping サイズ"
+
+msgid "Ping timeout"
+msgstr "Ping タイムアウト"
+
+msgid "Ping tracking IP"
+msgstr "Ping トラッキング IP"
+
+msgid "Policies"
+msgstr "ポリシー"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<br />Load-balanced "
+"member interfaces distribute more traffic out those with higher weights<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+"ポリシーは、MWANがどのようにトラフィックの分配を行うかを制御する、1つ以上のメ"
+"ンバーをグループ化するプロファイルです。<br />最小のメトリックを持つメンバー "
+"インターフェースが最初に使用されます。同じメトリックを持つ複数のインター"
+"フェースでは、負荷分散を行います。<br />負荷分散に設定されたメンバー インター"
+"フェースでは、ウェイトの値が大きい方により多くのトラフィックを分配します。"
+"<br />名前は A-Z, a-z, 0-9, _ を含むことができますが、スペースは使用できませ"
+"ん。また、15文字以内でなければなりません。<br />ポリシーでは、設定済みのイン"
+"ターフェースやメンバー、ルールと同じ名前を使用することはできません。"
+
+msgid "Policy assigned"
+msgstr "アサイン済みポリシー"
+
+msgid "Protocol"
+msgstr "プロトコル"
+
+msgid "Recovery interval"
+msgstr "障害復旧 インターバル"
+
+msgid "Restart MWAN"
+msgstr "MWAN の再起動"
+
+msgid "Restore default hotplug script"
+msgstr "デフォルトのホットプラグ スクリプトの復元"
+
+msgid "Restore..."
+msgstr "復元..."
+
+msgid "Rules"
+msgstr "ルール"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table<br />Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+"ルールは IP アドレスやポート、プロトコルを基に、トラフィックがどの MWAN ポリ"
+"シーを使用するかを設定します。<br />ルールは上から下へマッチングが行われ、合"
+"致したルールより下のルールは無視されます。全てのルールに合致しないトラフィッ"
+"クは、メインのルーティング テーブルを使用してルートが決定されます。<br />既知"
+"(デフォルト以外)のネットワークへのトラフィックは、メインのルーティング テー"
+"ブルによって制御されます。ルールに合致したトラフィックでも、当該ポリシーの全 "
+"WAN インターフェースが Down 状態の場合は blackhole 状態となります。<br />名前"
+"は A-Z, a-z, 0-9, _ を含むことができますが、スペースは使用できません。<br />"
+"ルールは、設定済みのインターフェースやメンバー、ポリシーと同じ名前を使用する"
+"ことはできません。"
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr "秒。利用可能な値: 1-1000000。空欄の場合のデフォルト値は600です。"
+
+msgid "Source address"
+msgstr "送信元アドレス"
+
+msgid "Source port"
+msgstr "送信元ポート"
+
+msgid "Start MWAN"
+msgstr "MWAN の起動"
+
+msgid "Sticky"
+msgstr "Sticky"
+
+msgid "Sticky timeout"
+msgstr "Sticky タイムアウト"
+
+msgid "Stop MWAN"
+msgstr "MWAN の停止"
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "CIDR 表記のサポート(例: \"192.168.100.0/24\")"
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr "現在、250個中 %d 個のサポートされたインターフェースが設定済みです。"
+
+msgid ""
+"This IP address will be pinged to dermine if the link is up or down. Leave "
+"blank to assume interface is always online"
+msgstr ""
+"これらは、リンクの Up または Down を判定するために Ping が送信されるIP アドレ"
+"スです。常にオンラインとする場合、空欄のままにします。"
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+"/etc/config/network で、このインターフェースに割り当てられたメトリックです。"
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr ""
+"このセクションでは、 /etc/config/mwan3 の内容を変更することができます。"
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr ""
+"このセクションでは、 /etc/config/network の内容を変更することができます。"
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr ""
+"このセクションでは、 /etc/config/wireless の内容を変更することができます。"
+
+msgid ""
+"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+"mwancustom<br />This is useful for running system commands and/or scripts "
+"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
+"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
+">Lines beginning with # are comments and are not executed<br /><br /"
+">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
+"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
+"device name attached to the interface (eth0.1, eth1, etc.)"
+msgstr ""
+"このセクションでは、 /etc/hotplug.d/iface/16-mwancustom の内容を変更すること"
+"ができます。<br />これは、インターフェースの ifup または ifdown ホットプラグ "
+"イベント時にシステムコマンドまたはスクリプト、もしくはその両方を実行すること"
+"に役立ちます。<br /><br />注意:<br />スクリプトの1行目は、&#34;#!bin/sh&#34; "
+"である必要があります(クオーテーション不要)。<br /># で始まる行はコメントと"
+"して認識され、実行されません。<br /><br />利用可能な変数:<br />$ACTION - ホッ"
+"トプラグ イベント (ifup, ifdown)<br />$INTERFACE - インターフェース名(wan1, "
+"wan2, その他)<br />$DEVICE - インターフェースにアタッチされたデバイスの名前"
+"(eth0.1, eth1, その他)"
+
+msgid "Tracking IP"
+msgstr "追跡 IP"
+
+msgid "Tracking reliability"
+msgstr "追跡の信頼性"
+
+msgid "Traffic Rules"
+msgstr "トラフィック ルール"
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"以前このルールにマッチした同じアクセス元 IP アドレスからのトラフィックが、再"
+"度 Sticky 制限時間内にマッチした場合には、同じ WAN インターフェースが使用され"
+"ます。"
+
+msgid "Troubleshooting"
+msgstr "トラブルシューティング"
+
+msgid "Troubleshooting Data"
+msgstr "トラブルシューティング データ"
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr "プロトコルの説明については、 /etc/protocols の内容を確認してください。"
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr ""
+"警告: %d 個のインターフェースが、最大個数の 250個 を超えて設定されています!"
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+"警告: 最大文字数の 15 文字を超える名前が設定されているポリシーがあります!"
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+"警告: 設定を誤っているか、もしくは完全に設定されていないインターフェースがあ"
+"ります!"
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+"警告: 追跡 IP アドレスの個数より大きい追跡信頼性の値が設定されたインター"
+"フェースがあります!"
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+"警告: /etc/config/network で、重複するメトリックを設定されているインター"
+"フェースがあります!"
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+"警告: メインのルーティング テーブルで、デフォルト ルートを設定されていないイ"
+"ンターフェースがあります!"
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+"警告: /etc/config/network で、メトリックを設定されていないインターフェースが"
+"あります!"
+
+msgid ""
+"WARNING: some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"警告: 不適切なプロトコルが指定されている、または何も指定されていないポートを"
+"設定されたルールがあります!プロトコルを指定し直してください!"
+
+msgid ""
+"WARNING: this and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr ""
+"警告: これと他のインターフェースで重複するメトリックが /etc/config/network に"
+"設定されています!"
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+"警告: このインターフェースは、追跡 IP アドレスの個数より大きい追跡信頼性の値"
+"を設定されています!"
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+"警告: このインターフェースは、メインのルーティング テーブルにデフォルト ルー"
+"トが設定されていません!"
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+"警告: このインターフェースは、 /etc/config/network でメトリックが設定されてい"
+"ません!"
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+"警告: このインターフェースは /etc/config/network で設定が誤っているか、もしく"
+"は完全に設定されていません!"
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+"警告: このポリシーの名前は、最大文字数 15 文字を超える %d 文字が設定されてい"
+"ます!"
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"警告: このルールは不適切なプロトコルが指定されているか、または何も指定されて"
+"いません!プロトコルを指定し直してください!"
+
+msgid "Weight"
+msgstr "ウエイト"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+"ポリシーの全メンバーがオフラインの場合、合致したトラフィックに対してこのふる"
+"まいが使用されます。"
+
+msgid "Wireless Config"
+msgstr "無線設定"
+
+msgid "Yes"
+msgstr "はい"
+
+msgid "always"
+msgstr "always"
+
+msgid "blackhole (drop)"
+msgstr "blackhole (drop)"
+
+msgid "default (use main routing table)"
+msgstr "デフォルト(メインのルーティング テーブルを使用)"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "never"
+
+msgid "unreachable (reject)"
+msgstr "unreachable (reject)"
diff --git a/applications/luci-app-mwan3/po/templates/mwan3.pot b/applications/luci-app-mwan3/po/templates/mwan3.pot
new file mode 100644
index 0000000000..0bda248fae
--- /dev/null
+++ b/applications/luci-app-mwan3/po/templates/mwan3.pot
@@ -0,0 +1,464 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "%d hour"
+msgstr ""
+
+msgid "%d minute"
+msgstr ""
+
+msgid "%d minutes"
+msgstr ""
+
+msgid "%d second"
+msgstr ""
+
+msgid "%d seconds"
+msgstr ""
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Check IP rules"
+msgstr ""
+
+msgid "Check routing table"
+msgstr ""
+
+msgid "Configuration"
+msgstr ""
+
+msgid "Currently Configured Interfaces"
+msgstr ""
+
+msgid "Currently Configured Members"
+msgstr ""
+
+msgid "Currently Configured Policies"
+msgstr ""
+
+msgid "Destination address"
+msgstr ""
+
+msgid "Destination port"
+msgstr ""
+
+msgid "Detailed Status"
+msgstr ""
+
+msgid "Diagnostic Results"
+msgstr ""
+
+msgid "Diagnostics"
+msgstr ""
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid "Errors"
+msgstr ""
+
+msgid "Failure interval"
+msgstr ""
+
+msgid "Flush conntrack table"
+msgstr ""
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+
+msgid "Hotplug Script"
+msgstr ""
+
+msgid "Hotplug ifdown"
+msgstr ""
+
+msgid "Hotplug ifup"
+msgstr ""
+
+msgid "IPset"
+msgstr ""
+
+msgid "IPv4"
+msgstr ""
+
+msgid "IPv6"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Interface Status"
+msgstr ""
+
+msgid "Interface down"
+msgstr ""
+
+msgid "Interface up"
+msgstr ""
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr ""
+
+msgid "Interfaces"
+msgstr ""
+
+msgid "Internet Protocol"
+msgstr ""
+
+msgid "Last resort"
+msgstr ""
+
+msgid "Load Balancing"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "MWAN Config"
+msgstr ""
+
+msgid "MWAN Detailed Status"
+msgstr ""
+
+msgid "MWAN Interface Configuration"
+msgstr ""
+
+msgid "MWAN Interface Configuration - %s"
+msgstr ""
+
+msgid "MWAN Interface Diagnostics"
+msgstr ""
+
+msgid "MWAN Interface Live Status"
+msgstr ""
+
+msgid "MWAN Interface Systemlog"
+msgstr ""
+
+msgid "MWAN Member Configuration"
+msgstr ""
+
+msgid "MWAN Member Configuration - %s"
+msgstr ""
+
+msgid "MWAN Policy Configuration"
+msgstr ""
+
+msgid "MWAN Policy Configuration - %s"
+msgstr ""
+
+msgid "MWAN Rule Configuration"
+msgstr ""
+
+msgid "MWAN Rule Configuration - %s"
+msgstr ""
+
+msgid "MWAN Service Control"
+msgstr ""
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces<br />Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+
+msgid "Member used"
+msgstr ""
+
+msgid "Members"
+msgstr ""
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+
+msgid "Members assigned"
+msgstr ""
+
+msgid "Metric"
+msgstr ""
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+
+msgid "Network Config"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Ping count"
+msgstr ""
+
+msgid "Ping default gateway"
+msgstr ""
+
+msgid "Ping interval"
+msgstr ""
+
+msgid "Ping interval during failure detection"
+msgstr ""
+
+msgid "Ping interval during failure recovering"
+msgstr ""
+
+msgid "Ping size"
+msgstr ""
+
+msgid "Ping timeout"
+msgstr ""
+
+msgid "Ping tracking IP"
+msgstr ""
+
+msgid "Policies"
+msgstr ""
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<br />Load-balanced "
+"member interfaces distribute more traffic out those with higher weights<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+
+msgid "Policy assigned"
+msgstr ""
+
+msgid "Protocol"
+msgstr ""
+
+msgid "Recovery interval"
+msgstr ""
+
+msgid "Restart MWAN"
+msgstr ""
+
+msgid "Restore default hotplug script"
+msgstr ""
+
+msgid "Restore..."
+msgstr ""
+
+msgid "Rules"
+msgstr ""
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table<br />Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr ""
+
+msgid "Source address"
+msgstr ""
+
+msgid "Source port"
+msgstr ""
+
+msgid "Start MWAN"
+msgstr ""
+
+msgid "Sticky"
+msgstr ""
+
+msgid "Sticky timeout"
+msgstr ""
+
+msgid "Stop MWAN"
+msgstr ""
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr ""
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr ""
+
+msgid ""
+"This IP address will be pinged to dermine if the link is up or down. Leave "
+"blank to assume interface is always online"
+msgstr ""
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr ""
+
+msgid ""
+"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+"mwancustom<br />This is useful for running system commands and/or scripts "
+"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
+"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
+">Lines beginning with # are comments and are not executed<br /><br /"
+">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
+"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
+"device name attached to the interface (eth0.1, eth1, etc.)"
+msgstr ""
+
+msgid "Tracking IP"
+msgstr ""
+
+msgid "Tracking reliability"
+msgstr ""
+
+msgid "Traffic Rules"
+msgstr ""
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+
+msgid "Troubleshooting"
+msgstr ""
+
+msgid "Troubleshooting Data"
+msgstr ""
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr ""
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr ""
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid ""
+"WARNING: this and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+
+msgid "Wireless Config"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "always"
+msgstr ""
+
+msgid "blackhole (drop)"
+msgstr ""
+
+msgid "default (use main routing table)"
+msgstr ""
+
+msgid "ifdown"
+msgstr ""
+
+msgid "ifup"
+msgstr ""
+
+msgid "never"
+msgstr ""
+
+msgid "unreachable (reject)"
+msgstr ""
diff --git a/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
new file mode 100644
index 0000000000..b8948b3163
--- /dev/null
+++ b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
@@ -0,0 +1,510 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+msgid "%d hour"
+msgstr "%d 小时"
+
+msgid "%d minute"
+msgstr "%d 分钟"
+
+msgid "%d minutes"
+msgstr "%d 分钟"
+
+msgid "%d second"
+msgstr "%d 秒"
+
+msgid "%d seconds"
+msgstr "%d 秒"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"接受的值: 1-100。这个设置项指定了当多少个IP地址能够连通时接口会被认为在线"
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "接受的值: 1-100。如果不填写,默认值为 1"
+
+msgid "Advanced"
+msgstr "高级"
+
+msgid "Check IP rules"
+msgstr "检查IP规则"
+
+msgid "Check routing table"
+msgstr "检查路由表"
+
+msgid "Configuration"
+msgstr "配置"
+
+msgid "Currently Configured Interfaces"
+msgstr "当前配置的接口"
+
+msgid "Currently Configured Members"
+msgstr "当前配置的成员"
+
+msgid "Currently Configured Policies"
+msgstr "当前配置的策略"
+
+msgid "Destination address"
+msgstr "目标地址"
+
+msgid "Destination port"
+msgstr "目标端口"
+
+msgid "Detailed Status"
+msgstr "详细状态"
+
+msgid "Diagnostic Results"
+msgstr "诊断结果"
+
+msgid "Diagnostics"
+msgstr "诊断"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr "当 Ping 成功次数达到这个数值后,已经被认为离线的接口将会重新上线"
+
+msgid "Enabled"
+msgstr "启用"
+
+msgid "Errors"
+msgstr "错误"
+
+msgid "Failure interval"
+msgstr "故障检测间隔"
+
+msgid "Flush conntrack table"
+msgstr "刷新连接跟踪表"
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr "在接口事件触发时刷新全局防火墙连接跟踪表"
+
+msgid "Hotplug Script"
+msgstr "Hotplug 脚本"
+
+msgid "Hotplug ifdown"
+msgstr "Hotplug ifdown"
+
+msgid "Hotplug ifup"
+msgstr "Hotplug ifup"
+
+msgid "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Interface"
+msgstr "接口"
+
+msgid "Interface Status"
+msgstr "接口状态"
+
+msgid "Interface down"
+msgstr "接口离线"
+
+msgid "Interface up"
+msgstr "接口上线"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr "当 Ping 失败次数达到这个数值后接口会被认为离线"
+
+msgid "Interfaces"
+msgstr "接口"
+
+msgid "Internet Protocol"
+msgstr "互联网协议"
+
+msgid "Last resort"
+msgstr "备用成员"
+
+msgid "Load Balancing"
+msgstr "负载均衡"
+
+msgid "Loading"
+msgstr "载入中"
+
+msgid "MWAN Config"
+msgstr "MWAN 配置文件"
+
+msgid "MWAN Detailed Status"
+msgstr "MWAN 详细状态"
+
+msgid "MWAN Interface Configuration"
+msgstr "MWAN 接口配置"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN 接口配置 - %s"
+
+msgid "MWAN Interface Diagnostics"
+msgstr "MWAN 接口诊断"
+
+msgid "MWAN Interface Live Status"
+msgstr "MWAN 接口实时状态"
+
+msgid "MWAN Interface Systemlog"
+msgstr "MWAN 接口系统日志"
+
+msgid "MWAN Member Configuration"
+msgstr "MWAN 成员配置"
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN 成员配置 - %s"
+
+msgid "MWAN Policy Configuration"
+msgstr "MWAN 策略配置"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN 策略配置 - %s"
+
+msgid "MWAN Rule Configuration"
+msgstr "MWAN 规则配置"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN 规则配置 - %s"
+
+msgid "MWAN Service Control"
+msgstr "MWAN 服务控制"
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces<br />Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+"MWAN 支持最多 250 个物理或逻辑接口。<br />MWAN 要求所有接口必须在 /etc/"
+"config/network 中设定唯一的网关跃点。<br />名称必须与 /etc/config/network 中"
+"的接口名称匹配。(可查看“高级”选项卡)<br />名称允许包括A-Z、a-z、0-9、_ 但是不"
+"能有空格。<br />接口不应该与成员、策略、规则中的任意一个设置项使用相同的名称"
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"可以输入一个或多个端口 (例如 \"22\" 或者 \"80,443\") 或者是一个端口范围 (例"
+"如 \"1024:2048\") 不含引号"
+
+msgid "Member used"
+msgstr "使用的成员"
+
+msgid "Members"
+msgstr "成员"
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+"“成员”用来设置每一个 MWAN 接口的跃点数 (即接口优先级) 和所占比重。<br />名称"
+"允许包括 A-Z、 a-、0-9、_ 但是不能有空格。<br />成员不应该与接口、策略、规则"
+"中的任意一个设置项使用相同的名称"
+
+msgid "Members assigned"
+msgstr "分配的成员"
+
+msgid "Metric"
+msgstr "跃点数"
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"匹配 IPset 规则列表名称。需要先配置 /etc/dnsmasq.conf 中的 IPset 规则 (例如: "
+"\"ipset=/youtube.com/youtube\")"
+
+msgid "Network Config"
+msgstr "网络配置文件"
+
+msgid "No"
+msgstr "否"
+
+msgid "Overview"
+msgstr "概况"
+
+msgid "Ping count"
+msgstr "Ping 计数"
+
+msgid "Ping default gateway"
+msgstr "Ping 默认网关"
+
+msgid "Ping interval"
+msgstr "Ping 间隔"
+
+msgid "Ping interval during failure detection"
+msgstr "故障检测期间的 Ping 间隔"
+
+msgid "Ping interval during failure recovering"
+msgstr "故障恢复期间的 Ping 间隔"
+
+msgid "Ping size"
+msgstr "Ping 大小"
+
+msgid "Ping timeout"
+msgstr "Ping 超时"
+
+msgid "Ping tracking IP"
+msgstr "Ping 跟踪 IP"
+
+msgid "Policies"
+msgstr "策略"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<br />Load-balanced "
+"member interfaces distribute more traffic out those with higher weights<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+"“策略”把成员进行分组,告诉 MWAN 如何分配“规则”中使用这一策略的流量<br />拥有"
+"较低跃点数的成员将会被优先使用。拥有相同跃点数的成员把流量进行负载均衡。<br /"
+">进行负载均衡的成员之间拥有较高比重的成员将会被分配到更多流量。<br />名称允许"
+"包括A-Z、a-z、0-9、_ 但是不能有空格。名称应该在 15 个字符以内<br />策略不应该"
+"与接口、成员、规则中的任意一个设置项使用相同的名称"
+
+msgid "Policy assigned"
+msgstr "分配的策略"
+
+msgid "Protocol"
+msgstr "通信协议"
+
+msgid "Recovery interval"
+msgstr "故障恢复间隔"
+
+msgid "Restart MWAN"
+msgstr "重启 MWAN"
+
+msgid "Restore default hotplug script"
+msgstr "恢复默认的 hotplug 脚本"
+
+msgid "Restore..."
+msgstr "恢复..."
+
+msgid "Rules"
+msgstr "规则"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table<br />Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+"“规则”基于 IP 地址、协议、端口把流量划分到指定的“策略”中。<br />规则按照从上"
+"到下的顺序进行匹配。除了第一条能够匹配一次通信的规则以外,其它规则将被忽略。"
+"不匹配任何规则的通信将会由系统默认路由表进行。<br />来自已知的网络的转发流量"
+"由系统默认路由表接手,然后 MWAN 从中匹配出相应的流量并转移到 MWAN 自己的路由"
+"表。但是所有被划分到一个无法使用的策略的流量将会无法正常进行路由。<br />名称"
+"允许包括A-Z、a-z、0-9、_ 但是不能有空格。<br />规则不应该与接口、成员、策略中"
+"的任意一个设置项使用相同的名称"
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr "单位为秒。接受的值: 1-1000000。留空则使用默认值 600 秒"
+
+msgid "Source address"
+msgstr "源地址"
+
+msgid "Source port"
+msgstr "源端口"
+
+msgid "Start MWAN"
+msgstr "启动 MWAN"
+
+msgid "Sticky"
+msgstr "粘滞模式"
+
+msgid "Sticky timeout"
+msgstr "粘滞超时"
+
+msgid "Stop MWAN"
+msgstr "停止 MWAN"
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "支持 CIDR 记法 (例如: \"192.168.100.0/24\") 不含引号"
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr ""
+
+msgid ""
+"This IP address will be pinged to dermine if the link is up or down. Leave "
+"blank to assume interface is always online"
+msgstr ""
+"MWAN 将会通过 Ping 这些 IP 地址来确定接口是否上线。如果留空,则 MWAN 认为该接"
+"口永远在线"
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr "这里显示了这个接口在 /etc/config/network 中配置的跃点数"
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr "这里允许你修改 /etc/config/mwan3 的内容"
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr "这里允许你修改 /etc/config/network 的内容"
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr "这里允许你修改 /etc/config/wireless 的内容"
+
+msgid ""
+"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+"mwancustom<br />This is useful for running system commands and/or scripts "
+"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
+"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
+">Lines beginning with # are comments and are not executed<br /><br /"
+">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
+"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
+"device name attached to the interface (eth0.1, eth1, etc.)"
+msgstr ""
+"这里允许你修改/etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接口 "
+"ifup 或 ifdown Hotplug 事件时运行系统命令或脚本<br /><br />注意:<br />脚本的"
+"第一行必须是 &#34;#!/bin/sh&#34; 不含引号<br />以#开头的行是注释,不会执行"
+"<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件 (ifup, ifdown)<br />"
+"$INTERFACE 是接口名称 (wan1、wan2 等)<br />$DEVICE 是连接到接口的设备名称 "
+"(eth0.1、eth1 等)"
+
+msgid "Tracking IP"
+msgstr "跟踪的 IP"
+
+msgid "Tracking reliability"
+msgstr "跟踪可靠性"
+
+msgid "Traffic Rules"
+msgstr "流量规则"
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"来自相同源 IP 的流量,如果已经匹配过此规则并且在粘滞超时时间内,将会使用相同"
+"的 WAN 接口"
+
+msgid "Troubleshooting"
+msgstr "故障排除"
+
+msgid "Troubleshooting Data"
+msgstr "故障排除数据"
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr "请查看 /etc/protocols 获取可选协议详情"
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr ""
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid ""
+"WARNING: this and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid "Weight"
+msgstr "比重"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr "当所有策略成员都无法使用的时候,对使用该策略的流量使用这个操作"
+
+msgid "Wireless Config"
+msgstr "无线配置"
+
+msgid "Yes"
+msgstr "是"
+
+msgid "always"
+msgstr "总是"
+
+msgid "blackhole (drop)"
+msgstr "黑洞 (丢弃)"
+
+msgid "default (use main routing table)"
+msgstr "默认 (使用主路由表)"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "从不"
+
+msgid "unreachable (reject)"
+msgstr "不可达 (拒绝)"
diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
index d0771e5830..7865881cb6 100644
--- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
+++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
@@ -367,123 +367,122 @@ local knownParams = {
"server",
"10.200.200.0 255.255.255.0",
translate("Configure server mode"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"server_bridge",
"10.200.200.1 255.255.255.0 10.200.200.200 10.200.200.250",
translate("Configure server bridge"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ DynamicList,
"push",
{ "redirect-gateway", "comp-lzo" },
translate("Push options to peer"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Flag,
"push_reset",
0,
translate("Don't inherit global push options"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Flag,
"disable",
0,
translate("Client is disabled"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"ifconfig_pool",
"10.200.200.100 10.200.200.150 255.255.255.0",
translate("Set aside a pool of subnets"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"ifconfig_pool_persist",
"/etc/openvpn/ipp.txt 600",
translate("Persist/unpersist ifconfig-pool"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
-- deprecated and replaced by --topology p2p
-- { Flag,
-- "ifconfig_pool_linear",
-- 0,
-- translate("Use individual addresses rather than /30 subnets"),
- -- { server_mode="1" } },
+ -- { client="0" }, { client="" } },
{ Value,
"ifconfig_push",
"10.200.200.1 255.255.255.255",
translate("Push an ifconfig option to remote"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"iroute",
"10.200.200.0 255.255.255.0",
translate("Route subnet to client"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Flag,
"client_to_client",
0,
translate("Allow client-to-client traffic"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Flag,
"duplicate_cn",
0,
translate("Allow multiple clients with same certificate"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"client_config_dir",
"/etc/openvpn/ccd",
translate("Directory for custom client config files"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Flag,
"ccd_exclusive",
0,
translate("Refuse connection if no custom client config"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"tmp_dir",
"/var/run/openvpn",
translate("Temporary directory for client-connect return file"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"hash_size",
"256 256",
translate("Set size of real and virtual address hash tables"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"bcast_buffers",
256,
translate("Number of allocated broadcast buffers"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"tcp_queue_limit",
64,
translate("Maximum number of queued TCP output packets"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"max_clients",
10,
translate("Allowed maximum of connected clients"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"max_routes_per_client",
256,
translate("Allowed maximum of internal"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Value,
"connect_freq",
"3 10",
translate("Allowed maximum of new connections"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Flag,
"client_cert_not_required",
0,
translate("Don't require client certificate"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Flag,
"username_as_common_name",
0,
translate("Use username as common name"),
- { server_mode="1" } },
+ { client="0" }, { client="" } },
{ Flag,
"client",
0,
- translate("Configure client mode"),
- { server_mode="0" }, { server_mode="" } },
+ translate("Configure client mode") },
{ Flag,
"pull",
0,
@@ -511,7 +510,7 @@ local knownParams = {
{ client="1" } },
{ Flag,
"remote_random",
- 1,
+ 0,
translate("Randomly choose remote server"),
{ client="1" } },
{ ListValue,
diff --git a/applications/luci-app-openvpn/po/zh-cn/openvpn.po b/applications/luci-app-openvpn/po/zh-cn/openvpn.po
index 899b4d2388..3904ac4bf8 100644
--- a/applications/luci-app-openvpn/po/zh-cn/openvpn.po
+++ b/applications/luci-app-openvpn/po/zh-cn/openvpn.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-19 19:35+0200\n"
-"PO-Revision-Date: 2013-10-10 06:09+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
+"PO-Revision-Date: 2017-04-14 17:26-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
"Language-Team: QQ Group 75543259 <axishero@foxmail.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.0.1\n"
msgid "%s"
msgstr "%s"
@@ -498,13 +498,13 @@ msgid "Temporary directory for client-connect return file"
msgstr "客户端连接返回文件的临时目录"
msgid "The highest supported TLS version"
-msgstr ""
+msgstr "最高支持的 TLS 版本"
msgid "The key direction for 'tls-auth' and 'secret' options"
msgstr ""
msgid "The lowest supported TLS version"
-msgstr ""
+msgstr "最低支持的 TLS 版本"
msgid "Timeframe for key exchange"
msgstr "密钥交换时间表"
diff --git a/applications/luci-app-simple-adblock/po/ja/simple-adblock.po b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
index ff75c8bf1d..7926595b6e 100644
--- a/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
+++ b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
@@ -34,7 +34,9 @@ msgid "Force Router DNS server to all local devices"
msgstr "全ローカル デバイスにルーター DNSサーバーの使用を強制"
msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
-msgstr "ローカル デバイスに対し、ルーター上のDNSサーバーの使用を強制します。これは、DNS ハイジャックとしても知られています。"
+msgstr ""
+"ローカル デバイスに対し、ルーター上のDNSサーバーの使用を強制します。これは、"
+"DNS ハイジャックとしても知られています。"
msgid "Individual domains to be blacklisted"
msgstr "ブラックリストに登録する、個々のドメインです。"
diff --git a/applications/luci-app-statistics/po/zh-cn/rrdtool.po b/applications/luci-app-statistics/po/zh-cn/rrdtool.po
index 4e6ee4b4da..d55398ace7 100644
--- a/applications/luci-app-statistics/po/zh-cn/rrdtool.po
+++ b/applications/luci-app-statistics/po/zh-cn/rrdtool.po
@@ -2,16 +2,17 @@
# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-23 02:08+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-04-15 21:41-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
"Language-Team: none\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.0.1\n"
+"POT-Creation-Date: \n"
#. %H: Wireless - Signal Noise Ratio
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1
@@ -36,12 +37,12 @@ msgstr "信号强度"
#. %H: Wireless - Signal Quality
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5
msgid "stat_dg_title_wireless__signal_quality"
-msgstr "无线信号质量"
+msgstr "%H: 无线 - 信号质量"
#. n
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6
msgid "stat_dg_label_wireless__signal_quality"
-msgstr "无线信号质量"
+msgstr "n"
#. Signal Quality
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7
@@ -51,7 +52,7 @@ msgstr "信号质量"
#. %H: ICMP Roundtrip Times
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8
msgid "stat_dg_title_ping"
-msgstr "ping"
+msgstr "%H: ICMP 往返时间"
#. ms
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9
@@ -61,299 +62,299 @@ msgstr "响应"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10
msgid "stat_ds_ping"
-msgstr "ping"
+msgstr "%di"
#. %H: Firewall - Processed Packets
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11
msgid "stat_dg_title_iptables__ipt_packets"
-msgstr "iptables包"
+msgstr "%H: 防火墙 - 已处理的数据包"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12
msgid "stat_dg_label_iptables__ipt_packets"
-msgstr ""
+msgstr "Packets/s"
#. Chain \"%di\"
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13
msgid "stat_ds_ipt_packets"
-msgstr ""
+msgstr "Chain \\\"%di\\\""
#. %H: Netlink - Transfer on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14
msgid "stat_dg_title_netlink__if_octets"
-msgstr ""
+msgstr "%H: Netlink - %pi 上的数据传输"
#. Bytes/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15
msgid "stat_dg_label_netlink__if_octets"
-msgstr ""
+msgstr "字节/秒"
#. Bytes (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16
msgid "stat_ds_if_octets"
-msgstr ""
+msgstr "字节 (%ds)"
#. %H: Netlink - Packets on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17
msgid "stat_dg_title_netlink__if_packets"
-msgstr ""
+msgstr "%H: Netlink - %pi 的数据包"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18
msgid "stat_dg_label_netlink__if_packets"
-msgstr ""
+msgstr "Packets/s"
#. Processed (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19
msgid "stat_ds_if_packets"
-msgstr ""
+msgstr "已处理 (%ds)"
#. Dropped (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20
msgid "stat_ds_if_dropped"
-msgstr ""
+msgstr "丢弃 (%ds)"
#. Errors (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21
msgid "stat_ds_if_errors"
-msgstr ""
+msgstr "错误 (%ds)"
#. %H: Netlink - Multicast on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22
msgid "stat_dg_title_netlink__if_multicast"
-msgstr ""
+msgstr "%H: Netlink - %pi 上的多播"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23
msgid "stat_dg_label_netlink__if_multicast"
-msgstr ""
+msgstr "Packets/s"
#. Packets
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24
msgid "stat_ds_if_multicast"
-msgstr ""
+msgstr "数据包"
#. %H: Netlink - Collisions on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25
msgid "stat_dg_title_netlink__if_collisions"
-msgstr ""
+msgstr "%H: Netlink - %pi 上的 Collisions"
#. Collisions/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26
msgid "stat_dg_label_netlink__if_collisions"
-msgstr ""
+msgstr "Collisions/s"
#. Collisions
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27
msgid "stat_ds_if_collisions"
-msgstr ""
+msgstr "Collisions"
#. %H: Netlink - Errors on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28
msgid "stat_dg_title_netlink__if_tx_errors"
-msgstr ""
+msgstr "%H: Netlink - %pi 上发生的错误"
#. Errors/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29
msgid "stat_dg_label_netlink__if_tx_errors"
-msgstr ""
+msgstr "错误/秒"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30
msgid "stat_ds_if_tx_errors"
-msgstr ""
+msgstr "%di"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31
msgid "stat_ds_if_rx_errors"
-msgstr ""
+msgstr "%di"
#. %H: Processes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32
msgid "stat_dg_title_processes"
-msgstr ""
+msgstr "%H: 进程"
#. Processes/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33
msgid "stat_dg_label_processes"
-msgstr ""
+msgstr "进程/秒"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34
msgid "stat_ds_ps_state"
-msgstr ""
+msgstr "%di"
#. %H: Process %pi - used cpu time
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35
msgid "stat_dg_title_processes__ps_cputime"
-msgstr ""
+msgstr "%H: 进程 %s - 占用的 CPU 时间"
#. Jiffies
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36
msgid "stat_dg_label_processes__ps_cputime"
-msgstr ""
+msgstr "Jiffies"
#. system
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37
msgid "stat_ds_ps_cputime__syst"
-msgstr ""
+msgstr "系统"
#. user
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38
msgid "stat_ds_ps_cputime__user"
-msgstr ""
+msgstr "用户"
#. %H: Process %pi - threads and processes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39
msgid "stat_dg_title_processes__ps_count"
-msgstr ""
+msgstr "%H: 进程 %pi - 进程与线程"
#. Count
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40
msgid "stat_dg_label_processes__ps_count"
-msgstr ""
+msgstr "个"
#. %ds
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41
msgid "stat_ds_ps_count"
-msgstr ""
+msgstr "%ds"
#. %H: Process %pi - page faults
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42
msgid "stat_dg_title_processes__ps_pagefaults"
-msgstr ""
+msgstr "%H: 进程 %pi - 分页错误"
#. Pagefaults
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43
msgid "stat_dg_label_processes__ps_pagefaults"
-msgstr ""
+msgstr "分页错误"
#. page faults
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44
msgid "stat_ds_ps_pagefaults"
-msgstr ""
+msgstr "分页错误"
#. %H: Process %pi - virtual memory size
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45
msgid "stat_dg_title_processes__ps_rss"
-msgstr ""
+msgstr "%H: 进程 %pi - 虚拟内存大小"
#. Bytes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46
msgid "stat_dg_label_processes__ps_rss"
-msgstr ""
+msgstr "字节"
#. virtual memory
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47
msgid "stat_ds_ps_rss"
-msgstr ""
+msgstr "虚拟内存"
#. %H: Usage on Processor #%pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48
msgid "stat_dg_title_cpu"
-msgstr ""
+msgstr "%H: 对处理器 #%pi 的占用"
#. %
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49
msgid "stat_dg_label_cpu"
-msgstr ""
+msgstr "%"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50
msgid "stat_ds_cpu"
-msgstr ""
+msgstr "%di"
#. %H: Transfer on %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51
msgid "stat_dg_title_interface__if_octets"
-msgstr ""
+msgstr "%H: %di 上的数据传输情况"
#. Bytes/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52
msgid "stat_dg_label_interface__if_octets"
-msgstr ""
+msgstr "字节/秒"
#. %H: Packets on %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53
msgid "stat_dg_title_interface__if_packets"
-msgstr ""
+msgstr "%H: %di 上的数据包"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54
msgid "stat_dg_label_interface__if_packets"
-msgstr ""
+msgstr "Packets/s"
#. %H: TCP-Connections to Port %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55
msgid "stat_dg_title_tcpconns"
-msgstr ""
+msgstr "%H: 到端口 %pi 的 TCP 连接"
#. Connections/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56
msgid "stat_dg_label_tcpconns"
-msgstr ""
+msgstr "连接/秒"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57
msgid "stat_ds_tcp_connections"
-msgstr ""
+msgstr "%di"
#. %H: Disk Space Usage on %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58
msgid "stat_dg_title_df"
-msgstr ""
+msgstr "%H: %di 上的磁盘占用情况"
#. Bytes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59
msgid "stat_dg_label_df"
-msgstr ""
+msgstr "字节"
#. %ds
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60
msgid "stat_ds_df__free"
-msgstr ""
+msgstr "%ds"
#. %ds
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61
msgid "stat_ds_df__used"
-msgstr ""
+msgstr "%ds"
#. %H: Interrupts
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62
msgid "stat_dg_title_irq"
-msgstr ""
+msgstr "%H: 中断"
#. Issues/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63
msgid "stat_dg_label_irq"
-msgstr ""
+msgstr "Issues/s"
#. IRQ %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64
msgid "stat_ds_irq"
-msgstr ""
+msgstr "IRQ %di"
#. %H: System Load
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65
msgid "stat_dg_title_load"
-msgstr ""
+msgstr "%H: 系统负载"
#. Load
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66
msgid "stat_dg_label_load"
-msgstr ""
+msgstr "负载"
#. 1 min
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67
msgid "stat_ds_load__shortterm"
-msgstr ""
+msgstr "1 分钟"
#. 5 min
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68
msgid "stat_ds_load__midterm"
-msgstr ""
+msgstr "5 分钟"
#. 15 min
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69
msgid "stat_ds_load__longterm"
-msgstr ""
+msgstr "15 分钟"
diff --git a/applications/luci-app-statistics/po/zh-cn/statistics.po b/applications/luci-app-statistics/po/zh-cn/statistics.po
index a55f73fb18..a123851179 100644
--- a/applications/luci-app-statistics/po/zh-cn/statistics.po
+++ b/applications/luci-app-statistics/po/zh-cn/statistics.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2014-06-13 15:04+0200\n"
-"Last-Translator: phantasm131 <phantasm131@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-04-15 21:46-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.0.1\n"
+"Language-Team: \n"
msgid "Action (target)"
msgstr "动作(目标)"
@@ -38,10 +38,10 @@ msgid "Basic monitoring"
msgstr "基本监控"
msgid "CPU Frequency"
-msgstr ""
+msgstr "CPU 频率"
msgid "CPU Frequency Plugin Configuration"
-msgstr ""
+msgstr "CPU 频率插件配置"
msgid "CPU Plugin Configuration"
msgstr "CPU插件配置"
@@ -133,16 +133,16 @@ msgid "Email"
msgstr "电子邮件"
msgid "Empty value = monitor all"
-msgstr ""
+msgstr "留空 = 监控所有"
msgid "Enable this plugin"
msgstr "启用该插件"
msgid "Entropy"
-msgstr ""
+msgstr "熵"
msgid "Entropy Plugin Configuration"
-msgstr ""
+msgstr "熵值插件配置"
msgid "Exec"
msgstr "Exec"
@@ -166,7 +166,7 @@ msgid "Gather compression statistics"
msgstr ""
msgid "General plugins"
-msgstr ""
+msgstr "通用插件"
msgid "Generate a separate graph for each logged user"
msgstr ""
@@ -198,7 +198,7 @@ msgid ""
msgstr "在这里,你可以定义各种监控iptables规则临界值。"
msgid "Hold Ctrl to select multiple items or to deselect entries."
-msgstr ""
+msgstr "按住 Ctrl 键来选择或取消选择多个项目。"
msgid "Host"
msgstr "主机"
@@ -269,10 +269,10 @@ msgid "Monitor all local listen ports"
msgstr "监测所有本地监听端口"
msgid "Monitor all sensors"
-msgstr ""
+msgstr "监控所有传感器"
msgid "Monitor device(s) / thermal zone(s)"
-msgstr ""
+msgstr "监控设备/温感区域"
msgid "Monitor devices"
msgstr "监测设备"
@@ -329,6 +329,8 @@ msgid ""
"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
"directory and all its parent directories need to be world readable."
msgstr ""
+"注意:由于页面是以 'nobody' 身份生成的,因此 *.rrd 文件以及包含此文件的所有父"
+"目录必须全局可读。"
msgid "Number of threads for data collection"
msgstr "收集程序使用线程数"
@@ -343,13 +345,13 @@ msgid "Only create average RRAs"
msgstr "仅创建平均RRAs"
msgid "OpenVPN"
-msgstr ""
+msgstr "OpenVPN"
msgid "OpenVPN Plugin Configuration"
-msgstr ""
+msgstr "OpenVPN 插件配置"
msgid "OpenVPN status files"
-msgstr ""
+msgstr "OpenVPN 状态文件"
msgid "Options"
msgstr "选项"
@@ -409,13 +411,13 @@ msgid "Seconds"
msgstr "秒"
msgid "Sensor list"
-msgstr ""
+msgstr "传感器列表"
msgid "Sensors"
-msgstr ""
+msgstr "传感器"
msgid "Sensors Plugin Configuration"
-msgstr ""
+msgstr "传感器插件配置"
msgid "Server host"
msgstr "服务器主机"
@@ -424,7 +426,7 @@ msgid "Server port"
msgstr "服务器端口"
msgid "Setup"
-msgstr ""
+msgstr "设置"
msgid "Shaping class monitoring"
msgstr "整形类监控"
@@ -503,7 +505,7 @@ msgstr "OLSRd插件通过txtinfo获取meshed网络信息。"
msgid ""
"The OpenVPN plugin gathers information about the current vpn connection "
"status."
-msgstr ""
+msgstr "OpenVPN 插件可以获取 VPN 连接当前状态"
msgid ""
"The conntrack plugin collects statistics about the number of tracked "
@@ -629,6 +631,9 @@ msgid ""
"to gather data and <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> to "
"render diagram images."
msgstr ""
+"Statistics 软件包使用 <a href=\"https://collectd.org/\">Collectd</a> 来收集数"
+"据,并用 <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> 生成统计图"
+"表。"
msgid ""
"The tcpconns plugin collects informations about open tcp connections on "
@@ -640,6 +645,8 @@ msgid ""
"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be "
"read, e.g. thermal_zone1 )"
msgstr ""
+"温感插件将会监控系统温度。数据主要取自 /sys/class/thermal/*/temp ('*' 表示温"
+"感设备的名字,比如 thermal_zone1) 。"
msgid ""
"The unixsock plugin creates a unix socket which can be used to read "
@@ -650,13 +657,13 @@ msgid "The uptime plugin collects statistics about the uptime of the system."
msgstr ""
msgid "Thermal"
-msgstr ""
+msgstr "温感"
msgid "Thermal Plugin Configuration"
-msgstr ""
+msgstr "温感插件配置"
msgid "This plugin collects statistics about the processor frequency scaling."
-msgstr ""
+msgstr "此插件会获取 CPU 频率调整的数据。"
msgid ""
"This section defines on which interfaces collectd will wait for incoming "
@@ -686,13 +693,13 @@ msgid "Unixsock Plugin Configuration"
msgstr "Unixsock插件配置"
msgid "Uptime"
-msgstr ""
+msgstr "运行时间"
msgid "Uptime Plugin Configuration"
-msgstr ""
+msgstr "运行时间插件配置"
msgid "Use improved naming schema"
-msgstr ""
+msgstr "使用更高级的命名规则"
msgid "Used PID file"
msgstr "正在使用的PID文件"
@@ -711,7 +718,7 @@ msgstr "无线iwinfo插件配置"
msgid ""
"You can install additional collectd-mod-* plugins to enable more statistics."
-msgstr ""
+msgstr "您可以安装更多的 collectd-mod-* 插件以获得更多的统计数据。"
msgid "e.g. br-ff"
msgstr "例如:br-ff"
diff --git a/applications/luci-app-travelmate/Makefile b/applications/luci-app-travelmate/Makefile
index f4b1b0a4e3..6170f9d4c3 100644
--- a/applications/luci-app-travelmate/Makefile
+++ b/applications/luci-app-travelmate/Makefile
@@ -1,11 +1,11 @@
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
+# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# This is free software, licensed under the Apache License, Version 2.0
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI support for Travelmate
-LUCI_DEPENDS:=+travelmate
+LUCI_DEPENDS:=+travelmate +luci-lib-jsonc
LUCI_PKGARCH:=all
include ../../luci.mk
diff --git a/applications/luci-app-travelmate/luasrc/controller/travelmate.lua b/applications/luci-app-travelmate/luasrc/controller/travelmate.lua
index 27c19c4e52..4286b80d76 100644
--- a/applications/luci-app-travelmate/luasrc/controller/travelmate.lua
+++ b/applications/luci-app-travelmate/luasrc/controller/travelmate.lua
@@ -1,11 +1,29 @@
--- Licensed to the public under the Apache License 2.0.
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
module("luci.controller.travelmate", package.seeall)
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local template = require("luci.template")
+local i18n = require("luci.i18n")
+
function index()
if not nixio.fs.access("/etc/config/travelmate") then
return
end
+ entry({"admin", "services", "travelmate"}, firstchild(), _("Travelmate"), 30).dependent = false
+ entry({"admin", "services", "travelmate", "tab_from_cbi"}, cbi("travelmate/overview_tab"), _("Overview"), 10).leaf = true
+ entry({"admin", "services", "travelmate", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
+ entry({"admin", "services", "travelmate", "advanced"}, firstchild(), _("Advanced"), 100)
+ entry({"admin", "services", "travelmate", "advanced", "setup"}, cbi("travelmate/setup_tab"), _("Setup WWAN Interface"), 110).leaf = true
+ entry({"admin", "services", "travelmate", "advanced", "configuration"}, cbi("travelmate/configuration_tab"), _("Edit Travelmate Configuration"), 120).leaf = true
+ entry({"admin", "services", "travelmate", "advanced", "cfg_wireless"}, cbi("travelmate/cfg_wireless_tab"), _("Edit Wireless Configuration"), 130).leaf = true
+ entry({"admin", "services", "travelmate", "advanced", "cfg_network"}, cbi("travelmate/cfg_network_tab"), _("Edit Network Configuration"), 140).leaf = true
+ entry({"admin", "services", "travelmate", "advanced", "cfg_firewall"}, cbi("travelmate/cfg_firewall_tab"), _("Edit Firewall Configuration"), 150).leaf = true
+end
- entry({"admin", "services", "travelmate"}, cbi("travelmate"), _("Travelmate"), 60)
+function logread()
+ local logfile = util.trim(util.exec("logread -e 'travelmate'"))
+ template.render("travelmate/logread", {title = i18n.translate("Travelmate Logfile"), content = logfile})
end
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua
deleted file mode 100644
index fa44d4b523..0000000000
--- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua
+++ /dev/null
@@ -1,53 +0,0 @@
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("travelmate", translate("Travelmate"),
- translate("Configuration of the Travelmate package to enable travel router functionality. ") .. [[</p>]] ..
- translate("Brief advice: Create a wwan interface, configure it to use dhcp and " ..
- "add it to the wan zone in firewall. Create the wifi interfaces to be used ('client' mode, " ..
- "assigned to wwan network, left as disabled). Travelmate will try " ..
- "to connect to the known wifi client interfaces in the defined order. ") ..
- [[<a href="https://github.com/openwrt/packages/tree/master/net/travelmate/files/README.md" target="_blank">]]
- .. translate("Link to detailed advice")
- .. [[</a>]] )
-
--- General options
-
-s = m:section(NamedSection, "global", "travelmate", translate("Global options"))
-
-o = s:option(Flag, "trm_enabled", translate("Enable Travelmate"))
-o.rmempty = false
-o.default = 0
-
-o = s:option(Value, "trm_maxwait", translate("Max. timeout in seconds for wlan interface reload"),
- translate("Default 20, range 10-60"))
-o.rmempty = false
-o.default = 20
-o.datatype = "range(10,60)"
-
-o = s:option(Value, "trm_maxretry", translate("Max. number of connection retries to an uplink"),
- translate("Default 3, range 1-10"))
-o.rmempty = false
-o.default = 3
-o.datatype = "range(1,10)"
-
--- Extra options
-
-e = m:section(NamedSection, "global", "travelmate", translate("Extra options"))
-
-a = e:option(Flag, "trm_debug", translate("Debug logging"))
-a.rmempty = true
-a.default = a.disabled
-
-a = e:option(Value, "trm_iface", translate("Restrict reload trigger to certain interface(s)"),
- translate("Space separated list of wwan interfaces that trigger reload action. To disable reload trigger set it to 'false'. Default: empty"))
-a.rmempty = true
-a.default = ""
-a.datatype = "uciname"
-
-a = e:option(Flag, "trm_iw", translate("Use iw for scanning"),
- translate("Disable this if you want to use iwinfo instead of iw"))
-a.rmempty = true
-a.default = a.enabled
-
-return m
-
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua
new file mode 100644
index 0000000000..009ed805db
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/firewall"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main firewall configuration file (/etc/config/firewall)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua
new file mode 100644
index 0000000000..4d43637d9c
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/network"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main network configuration file (/etc/config/network)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua
new file mode 100644
index 0000000000..a025c1379f
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/wireless"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main wireless configuration file (/etc/config/wireless)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua
new file mode 100644
index 0000000000..6e9e2872fc
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/travelmate"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main travelmate configuration file (/etc/config/travelmate)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
new file mode 100644
index 0000000000..085d413d9a
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
@@ -0,0 +1,129 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("uci")
+local sys = require("luci.sys")
+local json = require("luci.jsonc")
+local trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json"
+local parse = json.parse(fs.readfile(trminput) or "")
+
+m = Map("travelmate", translate("Travelmate"),
+ translate("Configuration of the travelmate package to to enable travel router functionality. ")
+ .. translate("For further information ")
+ .. [[<a href="https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md" target="_blank">]]
+ .. translate("see online documentation")
+ .. [[</a>]]
+ .. translate("."))
+
+-- Main travelmate options
+
+s = m:section(NamedSection, "global", "travelmate")
+
+o1 = s:option(Flag, "trm_enabled", translate("Enable travelmate"))
+o1.default = o1.disabled
+o1.rmempty = false
+
+o2 = s:option(Flag, "trm_automatic", translate("Enable 'automatic' mode"),
+ translate("Keep travelmate in an active state."))
+o2.default = o2.enabled
+o2.rmempty = false
+
+o3 = s:option(Value, "trm_iface", translate("Restrict interface trigger to certain interface(s)"),
+ translate("Space separated list of interfaces that trigger travelmate processing. "..
+ "To disable event driven (re-)starts remove all entries."))
+o3.rmempty = true
+
+o4 = s:option(Value, "trm_triggerdelay", translate("Trigger delay"),
+ translate("Additional trigger delay in seconds before travelmate processing begins."))
+o4.default = 2
+o4.datatype = "range(1,90)"
+o4.rmempty = false
+
+o5 = s:option(Flag, "trm_debug", translate("Enable verbose debug logging"))
+o5.default = o5.disabled
+o5.rmempty = false
+
+-- Runtime information
+
+ds = s:option(DummyValue, "_dummy", translate("Runtime information"))
+ds.template = "cbi/nullsection"
+
+dv1 = s:option(DummyValue, "status", translate("Online Status"))
+dv1.template = "travelmate/runtime"
+if parse == nil then
+ dv1.value = translate("n/a")
+elseif parse.data.station_connection == "true" then
+ dv1.value = translate("connected")
+else
+ dv1.value = translate("not connected")
+end
+
+dv2 = s:option(DummyValue, "travelmate_version", translate("Travelmate version"))
+dv2.template = "travelmate/runtime"
+if parse ~= nil then
+ dv2.value = parse.data.travelmate_version or translate("n/a")
+else
+ dv2.value = translate("n/a")
+end
+
+dv3 = s:option(DummyValue, "station_ssid", translate("Station SSID"))
+dv3.template = "travelmate/runtime"
+if parse ~= nil then
+ dv3.value = parse.data.station_ssid or translate("n/a")
+else
+ dv3.value = translate("n/a")
+end
+
+dv4 = s:option(DummyValue, "station_interface", translate("Station Interface"))
+dv4.template = "travelmate/runtime"
+if parse ~= nil then
+ dv4.value = parse.data.station_interface or translate("n/a")
+else
+ dv4.value = translate("n/a")
+end
+
+dv5 = s:option(DummyValue, "station_radio", translate("Station Radio"))
+dv5.template = "travelmate/runtime"
+if parse ~= nil then
+ dv5.value = parse.data.station_radio or translate("n/a")
+else
+ dv5.value = translate("n/a")
+end
+
+dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate"))
+dv6.template = "travelmate/runtime"
+if parse ~= nil then
+ dv6.value = parse.data.last_rundate or translate("n/a")
+else
+ dv6.value = translate("n/a")
+end
+
+-- Extra options
+
+e = m:section(NamedSection, "global", "travelmate", translate("Extra options"),
+translate("Options for further tweaking in case the defaults are not suitable for you."))
+
+e1 = e:option(Value, "trm_radio", translate("Radio selection"),
+ translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'"))
+e1.rmempty = true
+
+e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
+ translate("How many times should travelmate try to connect to an Uplink"))
+e2.default = 3
+e2.datatype = "range(1,10)"
+e2.rmempty = false
+
+e3 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
+ translate("How long should travelmate wait for a successful wlan interface reload"))
+e3.default = 30
+e3.datatype = "range(5,60)"
+e3.rmempty = false
+
+e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
+ translate("Timeout in seconds between retries in 'automatic' mode"))
+e4.default = 60
+e4.datatype = "range(5,300)"
+e4.rmempty = false
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/setup_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/setup_tab.lua
new file mode 100644
index 0000000000..6cd030ce6e
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/setup_tab.lua
@@ -0,0 +1,55 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local nw = require("luci.model.network").init()
+local fw = require("luci.model.firewall").init()
+local util = require("luci.util")
+local uci = require("luci.model.uci").cursor()
+
+m = SimpleForm("network", translate("Interface Setup"),
+ translate("Automatically create a new wireless wan interface, configure it to use dhcp and " ..
+ "add it to the wan zone of the firewall. This step has only to be done once."))
+m.reset = false
+
+iface = m:field(Value, "netname", translate("Name of the new wireless wan interface"),
+ translate("The allowed characters are: <code>A-Z</code>, <code>a-z</code>, " ..
+ "<code>0-9</code> and <code>_</code> (3-15 characters)."))
+iface.default = "wwan"
+iface.datatype = "and(uciname,minlength(3),maxlength(15))"
+
+function iface.validate(self, value, section)
+ local value = iface:formvalue(section)
+ local name = uci.get("network", value)
+ if name then
+ iface:add_error(section, translate("The given network interface name already exist"))
+ else
+ iface.datatype = false
+ iface.default = iface.disabled
+ f = m:field(DummyValue, "textfield", "&nbsp;", translatef("Direct Link: "
+ .. "<a href=\"%s\">"
+ .. "Wireless Setup</a>", luci.dispatcher.build_url("admin/network/wireless")))
+ f.default = translatef("Network Interface '%s' created successfully." ..
+ " Feel free to scan & add new stations via standard wireless setup.", value)
+ f.disabled = true
+ end
+ return value
+end
+
+function iface.write(self, section, value)
+ local name = iface:formvalue(section)
+ if name then
+ local net = nw:add_network(name, { proto = "dhcp" })
+ if net then
+ nw:save("network")
+ nw:commit("network")
+ local zone = fw:get_zone_by_network("wan")
+ if zone then
+ zone:add_network(name)
+ fw:save("firewall")
+ fw:commit("firewall")
+ end
+ end
+ end
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm
new file mode 100644
index 0000000000..53493a18fb
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm
@@ -0,0 +1,10 @@
+<style type="text/css">
+ textarea
+ {
+ border: 1px solid #cccccc;
+ padding: 5px;
+ font-size: 12px;
+ font-family: monospace;
+ resize: none;
+ }
+</style>
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
new file mode 100644
index 0000000000..7f6ff7776d
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
@@ -0,0 +1,15 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+ <fieldset class="cbi-section">
+ <div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for travelmate related messages only.%></div>
+ <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+ </fieldset>
+</div>
+
+<%+footer%>
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm
new file mode 100644
index 0000000000..ee3a4553a8
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm
@@ -0,0 +1,10 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+cbi/valueheader%>
+
+<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border: none; box-shadow: none; background-color: #ffffff; color: #0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+
+<%+cbi/valuefooter%>
diff --git a/applications/luci-app-travelmate/po/ja/travelmate.po b/applications/luci-app-travelmate/po/ja/travelmate.po
index de1aceed95..edb041e2b0 100644
--- a/applications/luci-app-travelmate/po/ja/travelmate.po
+++ b/applications/luci-app-travelmate/po/ja/travelmate.po
@@ -7,73 +7,280 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.1\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ja\n"
+msgid "."
+msgstr "。"
+
msgid ""
-"Brief advice: Create a wwan interface, configure it to use dhcp and add it "
-"to the wan zone in firewall. Create the wifi interfaces to be used ('client' "
-"mode, assigned to wwan network, left as disabled). Travelmate will try to "
-"connect to the known wifi client interfaces in the defined order."
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr "Travelmate の処理が開始されるまでの、追加の遅延時間(秒)です。"
+
+msgid "Advanced"
+msgstr "詳細設定"
+
+msgid ""
+"Automatically create a new wireless wan interface, configure it to use dhcp "
+"and add it to the wan zone of the firewall. This step has only to be done "
+"once."
msgstr ""
-"簡単な解説: 予めWWANインターフェースを作成し、DHCPを使用するよう構成してファ"
-"イアウォールのWANゾーンに追加します。また、使用される無線インターフェースを作"
-"成しておきます(\"クライアント\" モード、WWANに割り当て、無効状態)。"
-"Travelmateは、登録されている順序で既知の無線クライアント インターフェースへの"
-"接続を試行します。"
+"新しい無線 WAN インターフェースを自動的に作成し、DHCP を使用するよう構成して"
+"ファイアウォールの wan ゾーンに追加します。このステップは、一度だけ実行する必"
+"要があります。"
msgid ""
-"Configuration of the Travelmate package to enable travel router "
+"Configuration of the travelmate package to to enable travel router "
"functionality."
-msgstr "トラベル ルータ機能を有効にする、Travelmate パッケージの設定です。"
+msgstr ""
+"トラベル ルーター機能を有効化するための、 Travelmate パッケージの設定です。"
+
+msgid "Connection Limit"
+msgstr "接続制限"
+
+msgid "Direct Link: <a href=\"%s\">Wireless Setup</a>"
+msgstr "ダイレクト リンク: <a href=\"%s\">無線設定</a>"
+
+msgid "Edit Firewall Configuration"
+msgstr "ファイアウォール設定の編集"
+
+msgid "Edit Network Configuration"
+msgstr "ネットワーク設定の編集"
-msgid "Debug logging"
-msgstr "デバッグ ログ"
+msgid "Edit Travelmate Configuration"
+msgstr "Travelmate 設定の編集"
-msgid "Default 20, range 10-60"
-msgstr "既定値 20、範囲 10 - 60"
+msgid "Edit Wireless Configuration"
+msgstr "無線設定の編集"
-msgid "Default 3, range 1-10"
-msgstr "既定値 3、範囲 1 - 10"
+msgid "Enable 'automatic' mode"
+msgstr "'automatic' モードの有効化"
-msgid "Disable this if you want to use iwinfo instead of iw"
-msgstr "iw の代わりに iwinfo を使用したい場合、この設定を無効にします。"
+msgid "Enable travelmate"
+msgstr "Travelmate の有効化"
-msgid "Enable Travelmate"
-msgstr "Travelmateの有効化"
+msgid "Enable verbose debug logging"
+msgstr "詳細なデバッグ ログの有効化"
msgid "Extra options"
msgstr "拡張オプション"
-msgid "Global options"
-msgstr "全般オプション"
+msgid "For further information"
+msgstr "詳細情報は"
+
+msgid "How long should travelmate wait for a successful wlan interface reload"
+msgstr ""
+"無線LAN インターフェースのリロードが成功するまでの、Travelmate の待機時間で"
+"す。"
+
+msgid "How many times should travelmate try to connect to an Uplink"
+msgstr "Travelmate がアップリンクに対して接続を試行する回数です。"
+
+msgid "Input file not found, please check your configuration."
+msgstr "入力ファイルが見つかりません。設定を確認してください。"
+
+msgid "Interface Setup"
+msgstr "インターフェース設定"
+
+msgid "Interface Timeout"
+msgstr "インターフェース タイムアウト"
+
+msgid "Keep travelmate in an active state."
+msgstr "Travelmate をアクティブ状態で維持します。"
+
+msgid "Last rundate"
+msgstr "最終実行日時"
+
+msgid "Name of the new wireless wan interface"
+msgstr "新しい無線 WAN のインターフェース名"
-msgid "Link to detailed advice"
-msgstr "詳細な解説へのリンク"
+msgid ""
+"Network Interface '%s' created successfully. Feel free to scan & add new "
+"stations via standard wireless setup."
+msgstr ""
+"ネットワーク インターフェース '%s' の作成に成功しました。通常の無線設定にて、"
+"スキャン及び新規ステーションの追加が可能です。"
+
+msgid "Online Status"
+msgstr "オンライン ステータス"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr "デフォルトの設定が適切でない場合、さらに設定するためのオプションです。"
+
+msgid "Overall Timeout"
+msgstr "全体タイムアウト"
+
+msgid "Overview"
+msgstr "概要"
+
+msgid "Radio selection"
+msgstr "無線の選択"
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr "インターフェース トリガーを特定のインターフェースに限定する"
-msgid "Max. number of connection retries to an uplink"
-msgstr "確立までの接続試行回数"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgstr "Travelmate が特定の無線に接続するようにします。例: 'radio0'"
-msgid "Max. timeout in seconds for wlan interface reload"
-msgstr "無線LANインターフェース リロード時の最大待機時間(秒)"
+msgid "Runtime information"
+msgstr "実行情報"
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "リロード トリガを特定のインターフェースに限定する"
+msgid "Setup WWAN Interface"
+msgstr "WWAN インターフェース設定"
msgid ""
-"Space separated list of wwan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Space separated list of interfaces that trigger travelmate processing. To "
+"disable event driven (re-)starts remove all entries."
msgstr ""
-"リロード動作のトリガとなる、スペースで区切られたWWAN インターフェースのリスト"
-"です。リロードのトリガを無効にするには、'false' を設定します。既定値:(空)"
+"Travelmate の処理のトリガーとなる、スペースで区切られたインターフェースのリス"
+"トです。処理を発生させるイベントを無効にするには、全てのエントリーを削除して"
+"空欄にします。"
+
+msgid "Station Interface"
+msgstr "ステーション インターフェース"
+
+msgid "Station Radio"
+msgstr "ステーション 無線"
+
+msgid "Station SSID"
+msgstr "ステーション SSID"
+
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code> (3-15 characters)."
+msgstr ""
+"使用可能文字: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> and "
+"<code>_</code>(3 - 15文字)"
+
+msgid "The given network interface name already exist"
+msgstr "入力されたネットワーク インターフェース名は、既に存在しています。"
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+"このフォームでは、ファイアウォール 設定ファイル (/etc/config/firewall) の内容"
+"を変更することができます。"
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+"このフォームでは、ネットワーク 設定ファイル (/etc/config/network) の内容を変"
+"更することができます。"
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+"このフォームでは、 Travelmate 設定ファイル (/etc/config/travelmate) の内容を"
+"変更することができます。"
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+"このフォームでは、無線 設定ファイル (/etc/config/wireless) の内容を変更するこ"
+"とができます。"
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+"このフォームには、システムログ内の Travelmate に関するメッセージのみが表示さ"
+"れます。"
+
+msgid "Timeout in seconds between retries in 'automatic' mode"
+msgstr "'automatic' モード時に接続を再試行する間隔(秒)です。"
msgid "Travelmate"
msgstr "Travelmate"
-msgid "Use iw for scanning"
-msgstr "スキャンに iw を使用する"
+msgid "Travelmate Logfile"
+msgstr "Travelmate ログファイル"
+
+msgid "Travelmate version"
+msgstr "Travelmate バージョン"
+
+msgid "Trigger delay"
+msgstr "トリガー遅延"
+
+msgid "View Logfile"
+msgstr "ログファイルの確認"
+
+msgid "connected"
+msgstr "接続済み"
+
+msgid "n/a"
+msgstr "利用不可"
+
+msgid "not connected"
+msgstr "未接続"
+
+msgid "see online documentation"
+msgstr "オンライン ドキュメントを確認してください"
+
+#~ msgid ""
+#~ "Brief advice: Create a wwan interface, configure it to use dhcp and add "
+#~ "it to the wan zone in firewall. Create the wifi interfaces to be used "
+#~ "('client' mode, assigned to wwan network, left as disabled). Travelmate "
+#~ "will try to connect to the known wifi client interfaces in the defined "
+#~ "order."
+#~ msgstr ""
+#~ "簡単な解説: 予めWWANインターフェースを作成し、DHCPを使用するよう構成して"
+#~ "ファイアウォールのWANゾーンに追加します。また、使用される無線インター"
+#~ "フェースを作成しておきます(\"クライアント\" モード、WWANに割り当て、無効"
+#~ "状態)。Travelmateは、登録されている順序で既知の無線クライアント インター"
+#~ "フェースへの接続を試行します。"
+
+#~ msgid ""
+#~ "Configuration of the Travelmate package to enable travel router "
+#~ "functionality."
+#~ msgstr "トラベル ルータ機能を有効にする、Travelmate パッケージの設定です。"
+
+#~ msgid "Debug logging"
+#~ msgstr "デバッグ ログ"
+
+#~ msgid "Default 20, range 10-60"
+#~ msgstr "既定値 20、範囲 10 - 60"
+
+#~ msgid "Default 3, range 1-10"
+#~ msgstr "既定値 3、範囲 1 - 10"
+
+#~ msgid "Disable this if you want to use iwinfo instead of iw"
+#~ msgstr "iw の代わりに iwinfo を使用したい場合、この設定を無効にします。"
+
+#~ msgid "Enable Travelmate"
+#~ msgstr "Travelmateの有効化"
+
+#~ msgid "Global options"
+#~ msgstr "全般オプション"
+
+#~ msgid "Link to detailed advice"
+#~ msgstr "詳細な解説へのリンク"
+
+#~ msgid "Max. number of connection retries to an uplink"
+#~ msgstr "確立までの接続試行回数"
+
+#~ msgid "Max. timeout in seconds for wlan interface reload"
+#~ msgstr "無線LANインターフェース リロード時の最大待機時間(秒)"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "リロード トリガを特定のインターフェースに限定する"
+
+#~ msgid ""
+#~ "Space separated list of wwan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "リロード動作のトリガとなる、スペースで区切られたWWAN インターフェースのリ"
+#~ "ストです。リロードのトリガを無効にするには、'false' を設定します。既定値:"
+#~ "(空)"
+
+#~ msgid "Use iw for scanning"
+#~ msgstr "スキャンに iw を使用する"
#~ msgid "Default 3, range 0-10. Set to 0 to allow unlimited retries"
#~ msgstr "既定値 3、範囲 0 - 10。再試行回数を制限しない場合、0 に設定します。"
diff --git a/applications/luci-app-travelmate/po/pt-br/travelmate.po b/applications/luci-app-travelmate/po/pt-br/travelmate.po
index bcfc1cfa2f..906c698dd8 100644
--- a/applications/luci-app-travelmate/po/pt-br/travelmate.po
+++ b/applications/luci-app-travelmate/po/pt-br/travelmate.po
@@ -12,67 +12,251 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: pt_BR\n"
+msgid "."
+msgstr ""
+
+msgid ""
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
msgid ""
-"Brief advice: Create a wwan interface, configure it to use dhcp and add it "
-"to the wan zone in firewall. Create the wifi interfaces to be used ('client' "
-"mode, assigned to wwan network, left as disabled). Travelmate will try to "
-"connect to the known wifi client interfaces in the defined order."
+"Automatically create a new wireless wan interface, configure it to use dhcp "
+"and add it to the wan zone of the firewall. This step has only to be done "
+"once."
msgstr ""
-"Breve conselho: Crie uma interface wwan, configure-a para usar DHCP e "
-"adicione-a à zona wan no firewall. Crie as interfaces wifi a serem usadas "
-"(modo 'cliente', atribuído à rede wwan, deixado como desativado). O "
-"Travelmate tentará se conectar às interfaces de cliente wifi conhecidas na "
-"ordem definida."
msgid ""
-"Configuration of the Travelmate package to enable travel router "
+"Configuration of the travelmate package to to enable travel router "
"functionality."
msgstr ""
-"Configuração do pacote Travelmate para permitir a funcionalidade de roteador "
-"de viagem."
-msgid "Debug logging"
-msgstr "Registros(log) para depuração"
+msgid "Connection Limit"
+msgstr ""
+
+msgid "Direct Link: <a href=\"%s\">Wireless Setup</a>"
+msgstr ""
+
+msgid "Edit Firewall Configuration"
+msgstr ""
+
+msgid "Edit Network Configuration"
+msgstr ""
+
+msgid "Edit Travelmate Configuration"
+msgstr ""
-msgid "Default 20, range 10-60"
-msgstr "Padrão 20, faixa 10-60"
+msgid "Edit Wireless Configuration"
+msgstr ""
-msgid "Default 3, range 1-10"
-msgstr "Padrão 3, faixa 1-10"
+msgid "Enable 'automatic' mode"
+msgstr ""
-msgid "Disable this if you want to use iwinfo instead of iw"
-msgstr "Desabilite isto se você quer usar o iwinfo ao invés do iw"
+msgid "Enable travelmate"
+msgstr ""
-msgid "Enable Travelmate"
-msgstr "Habilitar o Travelmate"
+msgid "Enable verbose debug logging"
+msgstr ""
msgid "Extra options"
msgstr "Opções adicionais"
-msgid "Global options"
-msgstr "Opções Globais"
+msgid "For further information"
+msgstr ""
+
+msgid "How long should travelmate wait for a successful wlan interface reload"
+msgstr ""
+
+msgid "How many times should travelmate try to connect to an Uplink"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Interface Setup"
+msgstr ""
+
+msgid "Interface Timeout"
+msgstr ""
+
+msgid "Keep travelmate in an active state."
+msgstr ""
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Name of the new wireless wan interface"
+msgstr ""
+
+msgid ""
+"Network Interface '%s' created successfully. Feel free to scan & add new "
+"stations via standard wireless setup."
+msgstr ""
+
+msgid "Online Status"
+msgstr ""
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+msgid "Overall Timeout"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Radio selection"
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid "Setup WWAN Interface"
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger travelmate processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Station Interface"
+msgstr ""
+
+msgid "Station Radio"
+msgstr ""
+
+msgid "Station SSID"
+msgstr ""
+
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code> (3-15 characters)."
+msgstr ""
-msgid "Link to detailed advice"
-msgstr "Endereço para conselhos detalhados"
+msgid "The given network interface name already exist"
+msgstr ""
-msgid "Max. number of connection retries to an uplink"
-msgstr "Máximo número de tentativas de conexão para um enlace"
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
-msgid "Max. timeout in seconds for wlan interface reload"
-msgstr "Tempo limite máximo em segundos para recarregar a interface wlan"
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
msgid ""
-"Space separated list of wwan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+
+msgid "Timeout in seconds between retries in 'automatic' mode"
msgstr ""
-"Lista separada por espaços de interfaces wwan que acionam a ação de recarga. "
-"Para desabilitar o gatilho de recarga, defina-o como 'false'. Padrão: vazio"
msgid "Travelmate"
msgstr "Travelmate"
-msgid "Use iw for scanning"
-msgstr "Use o iw para escaneamento"
+msgid "Travelmate Logfile"
+msgstr ""
+
+msgid "Travelmate version"
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "connected"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "not connected"
+msgstr ""
+
+msgid "see online documentation"
+msgstr ""
+
+#~ msgid ""
+#~ "Brief advice: Create a wwan interface, configure it to use dhcp and add "
+#~ "it to the wan zone in firewall. Create the wifi interfaces to be used "
+#~ "('client' mode, assigned to wwan network, left as disabled). Travelmate "
+#~ "will try to connect to the known wifi client interfaces in the defined "
+#~ "order."
+#~ msgstr ""
+#~ "Breve conselho: Crie uma interface wwan, configure-a para usar DHCP e "
+#~ "adicione-a à zona wan no firewall. Crie as interfaces wifi a serem usadas "
+#~ "(modo 'cliente', atribuído à rede wwan, deixado como desativado). O "
+#~ "Travelmate tentará se conectar às interfaces de cliente wifi conhecidas "
+#~ "na ordem definida."
+
+#~ msgid ""
+#~ "Configuration of the Travelmate package to enable travel router "
+#~ "functionality."
+#~ msgstr ""
+#~ "Configuração do pacote Travelmate para permitir a funcionalidade de "
+#~ "roteador de viagem."
+
+#~ msgid "Debug logging"
+#~ msgstr "Registros(log) para depuração"
+
+#~ msgid "Default 20, range 10-60"
+#~ msgstr "Padrão 20, faixa 10-60"
+
+#~ msgid "Default 3, range 1-10"
+#~ msgstr "Padrão 3, faixa 1-10"
+
+#~ msgid "Disable this if you want to use iwinfo instead of iw"
+#~ msgstr "Desabilite isto se você quer usar o iwinfo ao invés do iw"
+
+#~ msgid "Enable Travelmate"
+#~ msgstr "Habilitar o Travelmate"
+
+#~ msgid "Global options"
+#~ msgstr "Opções Globais"
+
+#~ msgid "Link to detailed advice"
+#~ msgstr "Endereço para conselhos detalhados"
+
+#~ msgid "Max. number of connection retries to an uplink"
+#~ msgstr "Máximo número de tentativas de conexão para um enlace"
+
+#~ msgid "Max. timeout in seconds for wlan interface reload"
+#~ msgstr "Tempo limite máximo em segundos para recarregar a interface wlan"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+
+#~ msgid ""
+#~ "Space separated list of wwan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "Lista separada por espaços de interfaces wwan que acionam a ação de "
+#~ "recarga. Para desabilitar o gatilho de recarga, defina-o como 'false'. "
+#~ "Padrão: vazio"
+
+#~ msgid "Use iw for scanning"
+#~ msgstr "Use o iw para escaneamento"
diff --git a/applications/luci-app-travelmate/po/templates/travelmate.pot b/applications/luci-app-travelmate/po/templates/travelmate.pot
index 20628196b6..4542ec85ef 100644
--- a/applications/luci-app-travelmate/po/templates/travelmate.pot
+++ b/applications/luci-app-travelmate/po/templates/travelmate.pot
@@ -1,58 +1,190 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
+msgid "."
+msgstr ""
+
msgid ""
-"Brief advice: Create a wwan interface, configure it to use dhcp and add it "
-"to the wan zone in firewall. Create the wifi interfaces to be used ('client' "
-"mode, assigned to wwan network, left as disabled). Travelmate will try to "
-"connect to the known wifi client interfaces in the defined order."
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr ""
+
+msgid "Advanced"
msgstr ""
msgid ""
-"Configuration of the Travelmate package to enable travel router "
+"Automatically create a new wireless wan interface, configure it to use dhcp "
+"and add it to the wan zone of the firewall. This step has only to be done "
+"once."
+msgstr ""
+
+msgid ""
+"Configuration of the travelmate package to to enable travel router "
"functionality."
msgstr ""
-msgid "Debug logging"
+msgid "Connection Limit"
+msgstr ""
+
+msgid "Direct Link: <a href=\"%s\">Wireless Setup</a>"
+msgstr ""
+
+msgid "Edit Firewall Configuration"
msgstr ""
-msgid "Default 20, range 10-60"
+msgid "Edit Network Configuration"
msgstr ""
-msgid "Default 3, range 1-10"
+msgid "Edit Travelmate Configuration"
msgstr ""
-msgid "Disable this if you want to use iwinfo instead of iw"
+msgid "Edit Wireless Configuration"
msgstr ""
-msgid "Enable Travelmate"
+msgid "Enable 'automatic' mode"
+msgstr ""
+
+msgid "Enable travelmate"
+msgstr ""
+
+msgid "Enable verbose debug logging"
msgstr ""
msgid "Extra options"
msgstr ""
-msgid "Global options"
+msgid "For further information"
+msgstr ""
+
+msgid "How long should travelmate wait for a successful wlan interface reload"
+msgstr ""
+
+msgid "How many times should travelmate try to connect to an Uplink"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Interface Setup"
+msgstr ""
+
+msgid "Interface Timeout"
msgstr ""
-msgid "Link to detailed advice"
+msgid "Keep travelmate in an active state."
msgstr ""
-msgid "Max. number of connection retries to an uplink"
+msgid "Last rundate"
msgstr ""
-msgid "Max. timeout in seconds for wlan interface reload"
+msgid "Name of the new wireless wan interface"
+msgstr ""
+
+msgid ""
+"Network Interface '%s' created successfully. Feel free to scan & add new "
+"stations via standard wireless setup."
msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Online Status"
msgstr ""
msgid ""
-"Space separated list of wwan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+msgid "Overall Timeout"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Radio selection"
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid "Setup WWAN Interface"
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger travelmate processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Station Interface"
+msgstr ""
+
+msgid "Station Radio"
+msgstr ""
+
+msgid "Station SSID"
+msgstr ""
+
+msgid ""
+"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
+"code> and <code>_</code> (3-15 characters)."
+msgstr ""
+
+msgid "The given network interface name already exist"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+
+msgid "Timeout in seconds between retries in 'automatic' mode"
msgstr ""
msgid "Travelmate"
msgstr ""
-msgid "Use iw for scanning"
+msgid "Travelmate Logfile"
+msgstr ""
+
+msgid "Travelmate version"
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "connected"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "not connected"
+msgstr ""
+
+msgid "see online documentation"
msgstr ""
diff --git a/applications/luci-app-uhttpd/Makefile b/applications/luci-app-uhttpd/Makefile
index 9a2cf462e5..3014770665 100644
--- a/applications/luci-app-uhttpd/Makefile
+++ b/applications/luci-app-uhttpd/Makefile
@@ -11,16 +11,9 @@ LUCI_TITLE:=uHTTPd Webserver Configuration
LUCI_DEPENDS:=+uhttpd
LUCI_PKGARCH:=all
-PKG_NAME:=luci-app-uhttpd
-PKG_VERSION:=1.0.0
-PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Daniel Dickinson <openwrt@daniel.thecshore.com>
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
LUA_TARGET:=source
include ../../luci.mk
diff --git a/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp b/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp
index a338c75d35..e9636f9a28 100755
--- a/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp
+++ b/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp
@@ -3,7 +3,7 @@
uci -q batch <<-EOF >/dev/null
delete ucitrack.@upnpd[-1]
add ucitrack upnpd
- set ucitrack.@upnpd[-1]=miniupnpd
+ set ucitrack.@upnpd[-1].init=miniupnpd
commit ucitrack
EOF
diff --git a/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po b/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
index 5adc5ed4f4..9f3fa2a679 100644
--- a/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
+++ b/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
@@ -18,8 +18,8 @@ msgstr "Domínios para evitar a VPN"
msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
msgstr ""
-msgid "Enable VPN Bypass"
-msgstr "Habilitar o VPN Bypass"
+msgid "Enable/start service"
+msgstr ""
msgid "Local IP Addresses to Bypass"
msgstr ""
@@ -61,6 +61,9 @@ msgstr "Configurações do VPN Bypass"
msgid "for syntax"
msgstr ""
+#~ msgid "Enable VPN Bypass"
+#~ msgstr "Habilitar o VPN Bypass"
+
#~ msgid "Configuration of VPN Bypass Settings"
#~ msgstr "Configurações do VPN Bypass"
diff --git a/applications/luci-app-wireguard/po/zh-cn/wireguard.po b/applications/luci-app-wireguard/po/zh-cn/wireguard.po
new file mode 100644
index 0000000000..e873a83891
--- /dev/null
+++ b/applications/luci-app-wireguard/po/zh-cn/wireguard.po
@@ -0,0 +1,73 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.1\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+msgid "Allowed IPs"
+msgstr "允许的 IP"
+
+msgid "Collecting data..."
+msgstr "正在收集数据..."
+
+msgid "Configuration"
+msgstr "配置"
+
+msgid "Data Received"
+msgstr "已接收"
+
+msgid "Data Transmitted"
+msgstr "已发送"
+
+msgid "Endpoint"
+msgstr "传输端点"
+
+msgid "Firewall Mark"
+msgstr "防火墙标识"
+
+msgid "Interface"
+msgstr "接口"
+
+msgid "Interface does not have a public key!"
+msgstr "接口没有配置公钥!"
+
+msgid "Latest Handshake"
+msgstr "上次握手"
+
+msgid "Listen Port"
+msgstr "监听端口"
+
+msgid "Never"
+msgstr "从不"
+
+msgid "Peer"
+msgstr "对端"
+
+msgid "Persistent Keepalive"
+msgstr "Keepalive 间隔(秒)"
+
+msgid "Public Key"
+msgstr "公钥"
+
+msgid "WireGuard Status"
+msgstr "WireGuard 状态"
+
+msgid "h ago"
+msgstr "小时前"
+
+msgid "m ago"
+msgstr "分钟前"
+
+msgid "over a day ago"
+msgstr "超过一天前"
+
+msgid "s ago"
+msgstr "秒前"