gridtracker/package.nw/i18n/patch.diff

3237 wiersze
189 KiB
Diff

--- package.nw/GridTracker.html.pretty.master 2022-08-12 17:20:46.000000000 +0200
+++ package.nw/GridTracker.html.pretty.cn 2022-08-12 17:24:04.000000000 +0200
@@ -27,15 +27,14 @@
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
-<!DOCTYPE html>
-<html lang="en">
+<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
-<meta name="generator" content="HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 4452), see www.w3.org">
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title data-i18n="appname-title">GridTracker</title>
-<link rel="stylesheet" href="./lib/dp-dark.css" type="text/css">
-<link rel="stylesheet" href="./lib/ol.css" type="text/css">
-<link rel="stylesheet" href="./lib/style.css" type="text/css">
+<meta name="generator" content="HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 4452), see www.w3.org" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>GridTracker</title>
+<link rel="stylesheet" href="./lib/dp-dark.css" type="text/css" />
+<link rel="stylesheet" href="./lib/ol.css" type="text/css" />
+<link rel="stylesheet" href="./lib/style.css" type="text/css" />
<script src="./lib/defaults.js" type="text/javascript">
</script>
<script src="./lib/protos.js" type="text/javascript">
@@ -58,28 +57,10 @@
</script>
<script src="./lib/callsigns.js" type="text/javascript">
</script>
-<script src="node_modules/jquery/dist/jquery.js" type="text/javascript">
-</script>
-<script src="./lib/CLDRPluralRuleParser.js" type="text/javascript">
-</script>
-<script src="./lib/jquery.i18n.js" type="text/javascript">
-</script>
-<script src="./lib/jquery.i18n.messagestore.js" type="text/javascript">
-</script>
-<script src="./lib/jquery.i18n.fallbacks.js" type="text/javascript">
-</script>
-<script src="./lib/jquery.i18n.parser.js" type="text/javascript">
-</script>
-<script src="./lib/jquery.i18n.emitter.js" type="text/javascript">
-</script>
-<script src="./lib/jquery.i18n.language.js" type="text/javascript">
-</script>
<script src="./lib/shadow.js" type="text/javascript">
</script>
<script src="./lib/gtws.js" type="text/javascript">
</script>
-<script src="./lib/pota.js" type="text/javascript">
-</script>
<script src="./lib/gt.js" type="text/javascript">
</script>
<script src="./lib/screens.js" type="text/javascript">
@@ -87,28 +68,28 @@
</head>
<body id="mainBody" onload="initialDatabases();">
<div id="startupDiv">
-<div class="fill"><img src="gridview.png" alt=""></div>
+<div class="fill"><img src="gridview.png" alt="" /></div>
<div>
-<div id="startupVersionDiv" data-i18n="appname-title">
+<div id="startupVersionDiv">
<h1>GridTracker</h1>
</div>
</div>
<div>
-<h3><i data-i18n="appname-sub-title">An Amateur Radio Companion</i></h3>
+<h2>Grid网格跟踪助手</h2>
</div>
-<div id="startupStatusDiv" data-i18n="startupStatusDiv">Initial Startup</div>
+<div id="startupStatusDiv">初始化启动</div>
</div>
<div id="documentsDiv" style="display: none">
<div>
-<div data-i18n="documents.Div1">Your documents folder (
+<div>您的文件夹(
<div id="searchedDocFolder"></div>
-) could not be located.</div>
-<br>
-<div data-i18n="documents.Div2">GridTracker can not continue without it.</div>
-<br>
-<div data-i18n="documents.Div3">Please select a directory so that GridTracker can store important files.</div>
-<br>
-<input id="documentDirectoryInput" type="file" nwdirectory="" onchange="directoryInput(this)"></div>
+) 找不到.</div>
+<br />
+<div>没有它, GridTracker就无法继续</div>
+<br />
+<div>请选择一个文件夹, 以便GridTracker可以储存重要数据.</div>
+<br />
+<input id="documentDirectoryInput" type="file" nwdirectory="" onchange="directoryInput(this)" /></div>
</div>
<div id="main" style="display: none">
<div id="mapDiv" class="mapDivEnd"></div>
@@ -116,69 +97,69 @@
<div id="LegendDiv" style="display: none" class="legendDivEnd">
<table align="center">
<tr>
-<td data-i18n="legend.title">Legend</td>
+<td>图例</td>
<td>
-<div data-i18n="legend.QSO.label" id="LegendDivQSO" title="Grids with worked station(s) by you" style="padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: #eeee00; color: #000;">QSO</div>
+<div id="LegendDivQSO" title="您曾经通过的电台网格" style=" padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: #eeee00; color: #000;">QSO</div>
</td>
<td>
-<div data-i18n="legend.QSL.label" id="LegendDivQSL" title="Grids with confirmed station(s) by you" style="padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: #dd0000; color: #000;">QSL</div>
+<div id="LegendDivQSL" title="您曾经通过并确认的电台网格" style=" padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: #dd0000; color: #000;">QSL</div>
</td>
</tr>
<tr>
<td>
-<div data-i18n="legend.QSX.label" id="LegendDivQSX" title="Grids with station(s) communicating with stations other than you" style="padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: #000088; color:#eee;">QSX</div>
+<div id="LegendDivQSX" title="其他正在通联带网格的电台" style=" padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: #000088; color:#eee;">QSX</div>
</td>
<td>
-<div data-i18n="legend.CQ.label" id="LegendDivCQ" title="Grids with station(s) calling CQ" style="padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: #00ff00; color: #000;">CQ</div>
+<div id="LegendDivCQ" title="网格内的电台正在呼叫CQ" style=" padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: #00ff00; color: #000;">CQ</div>
</td>
<td>
-<div data-i18n="legend.CQDX.label" id="LegendDivCQDX" title="Grids with station(s) calling CQ DX" style="padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: #00FFFF; color: #000;">CQDX</div>
+<div id="LegendDivCQDX" title="网格内的电台正在呼叫CQ远距离电台" style=" padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: #00FFFF; color: #000;">CQDX</div>
</td>
</tr>
<tr>
<td>
-<div data-i18n="legend.QRZ.label" id="LegendDivQRZ" title="Grids with station(s) calling you!" style="padding-top: 2px; border: 2px solid #ff0000; width: 42px; height: 16px; background-color: #eeee00; color: #000;">QRZ</div>
+<div id="LegendDivQRZ" title="网格内的电台正在呼叫您" style=" padding-top: 2px; border: 2px solid #ff0000; width: 42px; height: 16px; background-color: #eeee00; color: #000;">QRZ</div>
</td>
<td>
-<div data-i18n="legend.QTH.label" id="LegendDivQTH" title="Your home grid square!" style="padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: orange; color: #000;">QTH</div>
+<div id="LegendDivQTH" title="您所在的网格!" style=" padding-top: 2px; border: 2px solid #000000; width: 42px; height: 16px; background-color: orange; color: #000;">QTH</div>
</td>
<td>
-<div data-i18n="legend.WSPR.label" id="LegendDivWSPR" title="WSPR Stations" style="padding-top: 2px; border: 2px solid black; width: 42px; height: 16px; font-weight: bold; text-shadow: 0 0 3px #000;">
+<div id="LegendDivWSPR" title="WSPR 电台" style=" padding-top: 2px; border: 2px solid black; width: 42px; height: 16px; font-weight: bold; text-shadow: 0 0 3px #000;">
<div class="rainbow" style="text-shadow: 0 0 3px #000">WSPR</div>
</div>
</td>
</tr>
</table>
</div>
-<div id="chevronDiv" class="chevronDivStart" title="Click to show menu" onclick="collapseMenu(false)">≤</div>
+<div id="chevronDiv" class="chevronDivStart" title="单击显示菜单" onclick="collapseMenu(false)">≤</div>
<div id="menuDiv" class="menuDivEnd">
<div id="localInfoDiv" style="border: 1px solid white; margin: 1px; margin-top: 1px; margin-bottom: 1px; padding: 0px" class="roundBorder">
<table align="center">
<tr>
<td colspan="2">
-<div data-i18n="appname-title" class="button" title="Click to hide menu" style="color: #fff; margin: 0; padding: 0; font-weight: bold; width: 150px; padding-top: 2px; border-width: 2px;" onclick="collapseMenu(true);">GridTracker</div>
+<div class="button" title="单击隐藏菜单" style=" color: #fff; margin: 0; padding: 0; font-weight: bold; width: 150px; padding-top: 2px; border-width: 2px;" onclick="collapseMenu(true);">GridTracker</div>
</td>
</tr>
<tr>
<td>
-<div id="frequency" title="Frequency (Band)" style="font-weight: bold">0.000.000 Hz (?)</div>
+<div id="frequency" title="频率 (波段)" style="font-weight: bold">0.000.000 Hz (?)</div>
</td>
<td>
-<div id="wsjtxMode" title="Mode"></div>
+<div id="wsjtxMode" title="模式"></div>
</td>
</tr>
</table>
-<div id="currentTime" style="cursor: pointer" title="Toggle Local / UTC Time" onclick="toggleTime();"></div>
+<div id="currentTime" style="cursor: pointer" title="切换 本地/UTC时间" onclick="toggleTime();"></div>
<table align="center" style="border-collapse: collapse; margin-bottom: 2px">
<tr id="dxCallBoxDiv" class="DXCallBox">
<td>
-<div id="localDXcall" style="cursor: pointer" title="Who you're calling or last called" onclick="startLookup(g_localDXcall,localDXGrid.innerHTML);" oncontextmenu="showWorkedByCall(g_localDXcall, event);">-</div>
+<div id="localDXcall" style="cursor: pointer" title="您呼叫谁或是最后呼叫了谁" onclick="startLookup(g_localDXcall,localDXGrid.innerHTML);" oncontextmenu="showWorkedByCall(g_localDXcall, event);">-</div>
</td>
<td>
-<div id="localDXGrid" style="cursor: pointer" title="Their Gridsquare" onclick="centerOn(localDXGrid.innerHTML);">-</div>
+<div id="localDXGrid" style="cursor: pointer" title="对方的网格" onclick="centerOn(localDXGrid.innerHTML);">-</div>
</td>
<td>
-<div id="localDXReport" title="Last known SNR">&nbsp;</div>
+<div id="localDXReport" title="最后已知的信噪比">&nbsp;</div>
</td>
</tr>
<tr>
@@ -186,430 +167,429 @@
<div id="localDXCountry" style="font-size: smaller; font-weight: italic; color: lightgreen" title="DXCC">&nbsp;</div>
</td>
<td>
-<div id="localDXDistance" style="font-size: smaller; font-weight: italic; color: lightblue" title="Distance">&nbsp;</div>
+<div id="localDXDistance" style="font-size: smaller; font-weight: italic; color: lightblue" title="距离">&nbsp;</div>
</td>
<td>
-<div id="localDXAzimuth" style="font-size: smaller; font-weight: italic; color: lightgreen" title="Heading">&nbsp;</div>
+<div id="localDXAzimuth" style="font-size: smaller; font-weight: italic; color: lightgreen" title="方向">&nbsp;</div>
</td>
</tr>
</table>
</div>
-<div id="rigWrap" style="display: none; background-color: blue; border-style: inset; border-color: lightblue; border-width: 3px; margin: 0; margin-bottom: 1px; color: yellow; padding: 2px;" class="roundBorder">
+<div id="rigWrap" style=" display: none; background-color: blue; border-style: inset; border-color: lightblue; border-width: 3px; margin: 0; margin-bottom: 1px; color: yellow; padding: 2px;" class="roundBorder">
<div style="display: inline-block; padding-top: 0px; cursor: pointer; left: 0px" onclick="rigChange(false);">🡄&nbsp;</div>
<div style="display: inline-block" id="rigDiv">-no rig-</div>
<div style="display: inline-block; cursor: pointer; right: 0px" onclick="rigChange(true);">&nbsp;🡆</div>
</div>
-<div id="operatingMode" style="margin: 0; margin-bottom: 1px; cursor: pointer" onclick="ignoreMessagesToggle()" title="Click to ignore incoming messages">
-<div id="txrxdec" style="background-color: Green; border-style: outset; border-color: yellow; border-width: 3px" class="roundBorder">waiting for message</div>
+<div id="operatingMode" style="margin: 0; margin-bottom: 1px; cursor: pointer" onclick="ignoreMessagesToggle()" title="单击以忽略传入的信息">
+<div id="txrxdec" style="background-color: Green; border-style: outset; border-color: yellow; border-width: 3px" class="roundBorder">正在等待数据传入</div>
</div>
-<div id="pskReporterBandActivityDiv" class="roundBorder" style="position: relative; background-color: #000; border: 1px solid purple; margin: 1px; height: 49px; margin-bottom: 1px; padding: 0px;" title="PSK-Reporter Band Activity" oncontextmenu="toggleBaWindow(event)">
-<div id="graphDiv" style="bottom: 0; position: absolute; width: 100%; padding: 0px; margin-bottom: 2px"><br>
-...no data yet...<br>
+<div id="pskReporterBandActivityDiv" class="roundBorder" style=" position: relative; background-color: #000; border: 1px solid purple; margin: 1px; height: 49px; margin-bottom: 1px; padding: 0px;" title="PSKReporter网站波段活动" oncontextmenu="toggleBaWindow(event)">
+<div id="graphDiv" style="bottom: 0; position: absolute; width: 100%; padding: 0px; margin-bottom: 2px"><br />
+...还没有数据...<br />
&nbsp;</div>
</div>
-<div id="actionDiv" style="border: 1px solid blue; margin: 1px; margin-bottom: 1px; padding: 3px" class="roundBorder" title="Quick Stats">
+<div id="actionDiv" style="border: 1px solid blue; margin: 1px; margin-bottom: 1px; padding: 3px" class="roundBorder" title="快速统计">
<table align="center">
<tr>
-<td data-i18n="quickStats.CallRX.label" style="cursor: pointer" onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox)" title="Callsigns Heard" align="right">Rx Calls</td>
-<td style="cursor: pointer" onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox)" title="Callsigns Heard" class="roundBorderValue" align="center">
+<td style="cursor: pointer" onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox)" title="接收到的呼号数量" align="right">接收的数量</td>
+<td style="cursor: pointer" onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox)" title="接收的呼号" class="roundBorderValue" align="center">
<div id="callsignCount">0</div>
</td>
-<td data-i18n="quickStats.QSO.label" style="cursor: pointer" onclick="resetSearch(); openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox);" title="Worked Stations" align="right">QSO</td>
-<td style="cursor: pointer" class="roundBorderValue" onclick="resetSearch(); openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox);" title="Worked Stations" align="center">
+<td style="cursor: pointer" onclick="resetSearch(); openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox);" title="已通联电台数量" align="right">QSO</td>
+<td style="cursor: pointer" class="roundBorderValue" onclick="resetSearch(); openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox);" title="曾经通联电台数量" align="center">
<div id="qsoCount">0</div>
</td>
</tr>
<tr>
-<td data-i18n="quickStats.DXCCRx.label" style="cursor: pointer" onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox);" title="DXCC Heard" align="right">Rx DXCC</td>
-<td style="cursor: pointer" class="roundBorderValue" onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox);" title="DXCC Heard" align="center">
+<td style="cursor: pointer" onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox);" title="接收到DXCC数量" align="right">接收的 DXCC</td>
+<td style="cursor: pointer" class="roundBorderValue" onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox);" title="接收到DXCC数量" align="center">
<div id="countryCount">0</div>
</td>
-<td data-i18n="quickStats.QSL.label" style="cursor: pointer" onclick="resetSearch(); g_filterQSL = 'true'; openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox)" title="Show Confirmed List" align="right">QSL</td>
-<td style="cursor: pointer" class="roundBorderValue" onclick="resetSearch(); g_filterQSL = 'true'; openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox)" title="Show Confirmed List" align="center">
+<td style="cursor: pointer" onclick="resetSearch(); g_filterQSL = 'true'; openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox)" title="显示QSL数量" align="right">QSL</td>
+<td style="cursor: pointer" class="roundBorderValue" onclick="resetSearch(); g_filterQSL = 'true'; openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox)" title="显示已确认数量" align="center">
<div id="qslCount">0</div>
</td>
</tr>
<tr>
<td colspan="2">
-<div data-i18n="quickLoad.clearLive.label" class="button" onclick="clearLive();" title="Clear Live Data from GridTracker">Clear Live</div>
+<div class="button" onclick="clearLive();" title="清除来自GridTracker的实时数据">清除实时数据</div>
</td>
<td colspan="2">
-<div data-i18n="quickLoad.clearLog.label" style="min-width: 58px" id="clearOrLoadButton" class="button" onclick="clearOrLoadQSOs();updateCountStats();" title="Clear or Reload Log Data (does not delete files)">Clear Log</div>
+<div style="min-width: 58px" id="clearOrLoadButton" class="button" onclick="clearOrLoadQSOs();updateCountStats();" title="清除或重新载入日志数据 (不会删除文件)">Clear Log</div>
</td>
</tr>
</table>
</div>
-<div id="filterDiv" class="roundBorder" style="position: relative; background-color: #000; border: 1px solid cyan; margin: 1px; margin-bottom: 1px" title="Map View Control Panel">
+<div id="filterDiv" class="roundBorder" style="position: relative; background-color: #000; border: 1px solid cyan; margin: 1px; margin-bottom: 1px" title="地图显示控制面板">
<table align="center">
<tr>
-<td data-i18n="mapFilter.title.label" colspan="2">Map View Filters</td>
+<td colspan="2">地图视图筛选</td>
</tr>
-<tr title="Select Band (Auto tracks WSJT-X)">
-<td data-i18n="mapFilter.band.label"><font color="lightgreen">Band</font></td>
+<tr title="选择波段 (自动跟踪 WSJT-X)">
+<td><font color="lightgreen">波段</font></td>
<td><select id="gtBandFilter" onkeypress="return false;" onchange="gtBandFilterChanged(this);">
-<option data-i18n="mapFilter.band.Auto" value="auto">Auto</option>
-<option value="xx" disabled>--------</option>
-<option data-i18n="mapFilter.band.Mixed" value="">Mixed</option>
-<option data-i18n="mapFilter.band.4000m" value="4000m">4000m</option>
-<option data-i18n="mapFilter.band.2200m" value="2200m">2200m</option>
-<option data-i18n="mapFilter.band.630m" value="630m">630m</option>
-<option data-i18n="mapFilter.band.160m" value="160m">160m</option>
-<option data-i18n="mapFilter.band.80m" value="80m">80m</option>
-<option data-i18n="mapFilter.band.60m" value="60m">60m</option>
-<option data-i18n="mapFilter.band.40m" value="40m">40m</option>
-<option data-i18n="mapFilter.band.30m" value="30m">30m</option>
-<option data-i18n="mapFilter.band.20m" value="20m">20m</option>
-<option data-i18n="mapFilter.band.17m" value="17m">17m</option>
-<option data-i18n="mapFilter.band.15m" value="15m">15m</option>
-<option data-i18n="mapFilter.band.12m" value="12m">12m</option>
-<option data-i18n="mapFilter.band.11m" value="11m">11m</option>
-<option data-i18n="mapFilter.band.10m" value="10m">10m</option>
-<option data-i18n="mapFilter.band.6m" value="6m">6m</option>
-<option data-i18n="mapFilter.band.4m" value="4m">4m</option>
-<option data-i18n="mapFilter.band.2m" value="2m">2m</option>
-<option data-i18n="mapFilter.band.125cm" value="1.25m">1.25m</option>
-<option data-i18n="mapFilter.band.70cm" value="70cm">70cm</option>
-<option data-i18n="mapFilter.band.23cm" value="23cm">23cm</option>
-<option data-i18n="mapFilter.band.OOB" value="oob">OOB</option>
+<option value="auto">自动模式</option>
+<option value="xx" disabled="disabled">--------</option>
+<option value="">混合模式</option>
+<option value="4000m">4000m</option>
+<option value="2200m">2200m</option>
+<option value="630m">630m</option>
+<option value="160m">160m</option>
+<option value="80m">80m</option>
+<option value="60m">60m</option>
+<option value="40m">40m</option>
+<option value="30m">30m</option>
+<option value="20m">20m</option>
+<option value="17m">17m</option>
+<option value="15m">15m</option>
+<option value="12m">12m</option>
+<option value="11m">11m</option>
+<option value="10m">10m</option>
+<option value="6m">6m</option>
+<option value="4m">4m</option>
+<option value="2m">2m</option>
+<option value="1.25m">1.25m</option>
+<option value="70cm">70cm</option>
+<option value="23cm">23cm</option>
+<option value="oob">OOB</option>
</select></td>
</tr>
-<tr title="Select Mode">
-<td data-i18n="mapFilter.mode.label"><font color="orange">Mode</font></td>
+<tr title="选择模式">
+<td><font color="orange">模式</font></td>
<td><select id="gtModeFilter" onkeypress="return false;" onchange="gtModeFilterChanged(this);">
-<option data-i18n="mapFilter.mode.Auto" value="auto">Auto</option>
-<option value="xx" disabled>----------</option>
-<option data-i18n="mapFilter.mode.Mixed" value="">Mixed</option>
-<option data-i18n="mapFilter.mode.Digital" value="Digital">Digital</option>
-<option data-i18n="mapFilter.mode.Phone" value="Phone">Phone</option>
+<option value="auto">自动模式</option>
+<option value="xx" disabled="disabled">----------</option>
+<option value="">混合模式</option>
+<option value="Digital">数据模式</option>
+<option value="Phone">语音模式</option>
</select></td>
</tr>
-<tr title="Select Propagation Mode">
-<td data-i18n="mapFilter.prop.label"><font color="yellow">Prop</font></td>
+<tr title="选择传播模式视图">
+<td><font color="yellow">传播</font></td>
<td><select id="gtPropFilter" onkeypress="return false;" onchange="gtPropFilterChanged(this);">
-<option data-i18n="mapFilter.prop.Mixed" value="mixed">Mixed</option>
-<option value="xx" disabled>----------</option>
-<option data-i18n="mapFilter.prop.Unknown" value="">Unknown</option>
-<option value="xx" disabled>----------</option>
-<option data-i18n="mapFilter.prop.AircraftScatter" value="AS">Aircraft Scatter</option>
-<option data-i18n="mapFilter.prop.AuroraE" value="AUE">Aurora-E</option>
-<option data-i18n="mapFilter.prop.Aurora" value="AUR">Aurora</option>
-<option data-i18n="mapFilter.prop.BackScatter" value="BS">Back Scatter</option>
-<option data-i18n="mapFilter.prop.EchoLink" value="ECH">EchoLink</option>
-<option data-i18n="mapFilter.prop.EME" value="EME">EME</option>
-<option data-i18n="mapFilter.prop.SporadicE" value="ES">Sporadic E</option>
-<option data-i18n="mapFilter.prop.F2Reflection" value="F2">F2 Reflection</option>
-<option data-i18n="mapFilter.prop.FieldAlignedIregularities" value="FAI">Field Aligned I</option>
-<option data-i18n="mapFilter.prop.InternetAssist" value="INTERNET">Inet-assist</option>
-<option data-i18n="mapFilter.prop.Ionscatter" value="ION">Ionoscatter</option>
-<option data-i18n="mapFilter.prop.IRLP" value="IRL">IRLP</option>
-<option data-i18n="mapFilter.prop.MeteorScatter" value="MS">Meteor Scatter</option>
-<option data-i18n="mapFilter.prop.Repeater" value="RPT">Repeater</option>
-<option data-i18n="mapFilter.prop.RainScatter" value="RS">Rain Scatter</option>
-<option data-i18n="mapFilter.prop.Satellite" value="SAT">Satellite</option>
-<option data-i18n="mapFilter.prop.TransEquatorial" value="TEP">Trans-equatorial</option>
-<option data-i18n="mapFilter.prop.TropoDuct" value="TR">Tropo-ducting</option>
+<option value="mixed">混合模式</option>
+<option value="xx" disabled="disabled">----------</option>
+<option value="">未知</option>
+<option value="xx" disabled="disabled">----------</option>
+<option value="AS">飞机反射</option>
+<option value="AUE">极光-E</option>
+<option value="AUR">极光</option>
+<option value="BS">背面反射</option>
+<option value="ECH">EchoLink</option>
+<option value="EME">月球面反射</option>
+<option value="ES">零星 E</option>
+<option value="F2">F2 层反射</option>
+<option value="FAI">场对齐不规则性</option>
+<option value="INTERNET">互联网辅助</option>
+<option value="ION">电离层反射</option>
+<option value="IRL">互联网电台连接</option>
+<option value="MS">流星反射</option>
+<option value="RPT">中继</option>
+<option value="RS">雨水反射</option>
+<option value="SAT">卫星</option>
+<option value="TEP">跨赤道</option>
+<option value="TR">对流层管道</option>
</select></td>
</tr>
<tr>
-<td data-i18n="mapFilter.data.label"><font color="cyan">Data</font></td>
+<td><font color="cyan">数据</font></td>
<td>
-<div data-i18n="mapFilter.data.LogLive" id="gridViewButton" onclick="cycleGridView()" class="button" title="Cycle Grid View" style="min-width: 94px; background-color: darkgreen; color: #ff0; font-size: 13.3333px; text-align: left; margin-bottom: 2px;">Logbook &amp; Live</div>
+<div id="gridViewButton" onclick="cycleGridView()" class="button" title="循环显示" style=" min-width: 94px; background-color: darkgreen; color: #ff0; font-size: 13.3333px; text-align: left; margin-bottom: 2px;">实时 &amp; 日志</div>
</td>
</tr>
</table>
</div>
<div id="buttonsDiv" style="margin-left: 0px; white-space: normal">
-<div id="callRosterButton" class="iconButton" style="padding: 0px" onclick="openCallRosterWindow();" title="Open Call Roster"><img src="./img/roster-button.png" class="buttonImgWide"></div>
-<div id="pushPinButton" onclick="togglePushPinMode();" class="iconButton" title="Toggle Push-Pin Mode"><img id="pinImg" src="" class="buttonImg"></div>
-<div id="lookupButton" onclick="openLookupWindow(true)" class="iconButton" title="Open Lookup Window"><img src="./img/lookup.png" class="buttonImg"></div>
-<div id="statsDiv" onclick="showRootInfoBox();" class="iconButton" title="Show Stats"><img src="./img/stats-button.png" class="buttonImg"></div>
-<div id="modeModeDiv" onclick="toggleOffline()" class="iconButton" title="Toggle Online/Offline Mode"><img id="offlineImg" src="" class="buttonImg"></div>
-<div id="earthShadow" onclick="toggleEarth()" class="iconButton" title="Toggle Grayline"><img id="earthImg" src="" class="buttonImg"></div>
-<div id="legendToggleDiv" onclick="toggleLegend()" class="iconButton" title="Toggle Map Legend"><img id="legendImg" src="./img/gt_key.png" class="buttonImg"></div>
-<div id="gtShareButton" onclick="toggleGtShareEnable();" class="iconButton" title="Share your On-Air Status with other GridTracker users"><img id="gtShareFlagImg" src="./img/share-off.png" class="buttonImg"></div>
-<div id="helpButton" onclick="toggleHelp();" class="iconButton" title="Toggle Hotkey List"><img src="./img/help.png" class="buttonImg"></div>
-<div id="trophyButton" onclick="cycleTrophyOverlay();" class="iconButton" title="Cycle Award Overlays"><img id="trophyImg" src="./img/blank_trophy.png" class="buttonImg"></div>
-<div id="buttonStrikesDiv" onclick="toggleStrikesValue()" class="iconButton" title="Toggle Lightning Strikes"><img id="strikesImg" src="./img/lw.png" class="buttonImg"></div>
-<div id="lunaButton" onclick="toggleMoon();" class="iconButton" title="Toggle Moon"><img id="lunaButonImg" src="./img/luna.png" class="buttonImg"></div>
-<div id="gridModeDiv" onclick="toggleGridMode()" class="iconButton" title="Toggle Maidenhead Width"><img id="modeImg" src="" class="buttonImg"></div>
-<div id="settingsButton" onclick="showSettingsBox();" class="iconButton" title="Settings"><img src="./img/settings-button.png" class="buttonImg"></div>
-<div id="adifLoadDiv" onclick="adifLoadDialog()" class="iconButton" title="Load ADIF Log"><img src="./img/adif.png" class="buttonImg"></div>
-<div id="conditionsButton" onclick="showConditionsBox();" class="iconButton" title="View Current Conditions"><img src="./img/conditions.png" class="buttonImg"></div>
-<div id="donateButton" onclick="gotoDonate();" class="iconButton" title="Donate with PayPal"><img style="-webkit-filter: brightness(50%); filter: brightness(50%)" src="./img/donate.png" class="buttonImg"></div>
-<div id="alterMuteDiv" onclick="toggleAlertMute()" class="iconButton" title="Toggle Audio Mute"><img id="alertMuteImg" src="" class="buttonImg"></div>
-<div id="buttonPSKSpotsBoxDiv" onclick="togglePskSpots();" class="iconButton" title="View Spot Reports"><img id="pskSpotsImg" src="./img/spots.png" class="buttonImg"></div>
-<div id="buttonPsk24CheckBoxDiv" onclick="grabPsk24()" class="iconButton" title="Your PSK 24hour report"><img id="pskImg" src="./img/psk_24_32.png" class="buttonImg"></div>
-<div id="buttonQRZCheckBoxDiv" onclick="if ( ValidateQrzApi(qrzApiKey ) ) grabQrzComLog()" class="iconButton" title="Download log from QRZ.com"><img id="qrzLogImg" src="./img/log_QRZ.png" class="buttonImg"></div>
-<div id="buttonLOTWCheckBoxDiv" onclick="if ( ValidateText(lotwLogin) &amp;&amp; ValidateText(lotwPassword) ) { grabLOtWLog(false); }" class="iconButton" title="Download log from Logbook of the World"><img id="lotwLogImg" src="./img/log_LoTW.png" class="buttonImg"></div>
-<div id="buttonClubCheckBoxDiv" onclick="if ( ValidateText(clubEmail) &amp;&amp; ValidateText(clubPassword) ) grabClubLog()" class="iconButton" title="Download log from ClubLog"><img id="ClubLogImg" src="./img/log_club.png" class="buttonImg"></div>
-<div id="buttonAdifCheckBoxDiv" onclick="startupAdifLoadFunction()" class="iconButton" title="Reload Local ADIF Files"><img src="./img/log_local.png" class="buttonImg"></div>
-<div id="timezoneButton" onclick="toggleTimezones()" class="iconButton" title="Toggle Timezone Layer"><img src="./img/timezone-button.png" class="buttonImg"></div>
-<div id="radarButton" onclick="toggleNexrad()" class="iconButton" title="Toggle US Nexrad"><img src="./img/radar-button.png" class="buttonImg"></div>
-<div id="gridOverlayButton" onclick="toggleAllGrids()" class="iconButton" title="Toggle All Grid Overlay"><img src="./img/grid-overlay.png" class="buttonImg"></div>
-<div id="gtFlagButton" onclick="toggleGtMap();" class="iconButton" title="Toggle View GridTracker Users"><img id="gtFlagImg" src="" class="buttonImg"></div>
-<div id="msgButton" onclick="showMessaging();" class="iconButton" title="Messaging Window"><img id="msgImg" src="./img/gt_chat.png" class="buttonImg"></div>
+<div id="callRosterButton" class="iconButton" style="padding: 0px" onclick="openCallRosterWindow();" title="打开呼叫列表(R)"><img src="./img/roster-button.png" class="buttonImgWide" /></div>
+<div id="pushPinButton" onclick="togglePushPinMode();" class="iconButton" title="切换图钉模式(P)"><img id="pinImg" src="" class="buttonImg" /></div>
+<div id="lookupButton" onclick="openLookupWindow(true)" class="iconButton" title="打开查询窗口"><img src="./img/lookup.png" class="buttonImg" /></div>
+<div id="statsDiv" onclick="showRootInfoBox();" class="iconButton" title="显示统计信息(I)"><img src="./img/stats-button.png" class="buttonImg" /></div>
+<div id="modeModeDiv" onclick="toggleOffline()" class="iconButton" title="切换在线/离线模式"><img id="offlineImg" src="" class="buttonImg" /></div>
+<div id="earthShadow" onclick="toggleEarth()" class="iconButton" title="显示昼夜灰线图层(N)"><img id="earthImg" src="" class="buttonImg" /></div>
+<div id="legendToggleDiv" onclick="toggleLegend()" class="iconButton" title="显示地图图例"><img id="legendImg" src="./img/gt_key.png" class="buttonImg" /></div>
+<div id="gtShareButton" onclick="toggleGtShareEnable();" class="iconButton" title="让其他GridTracker用户看到您的在线状态"><img id="gtShareFlagImg" src="./img/share-off.png" class="buttonImg" /></div>
+<div id="helpButton" onclick="toggleHelp();" class="iconButton" title="打开热键清单(F1)"><img src="./img/help.png" class="buttonImg" /></div>
+<div id="trophyButton" onclick="cycleTrophyOverlay();" class="iconButton" title="循环显示奖状图层(=)"><img id="trophyImg" src="./img/blank_trophy.png" class="buttonImg" /></div>
+<div id="buttonStrikesDiv" onclick="toggleStrikesValue()" class="iconButton" title="显示全球闪电实时状态(Y)"><img id="strikesImg" src="./img/lw.png" class="buttonImg" /></div>
+<div id="lunaButton" onclick="toggleMoon();" class="iconButton" title="显示月球位置(D)"><img id="lunaButonImg" src="./img/luna.png" class="buttonImg" /></div>
+<div id="gridModeDiv" onclick="toggleGridMode()" class="iconButton" title="切换梅登黑德网格位数(W)"><img id="modeImg" src="" class="buttonImg" /></div>
+<div id="settingsButton" onclick="showSettingsBox();" class="iconButton" title="设置(S)"><img src="./img/settings-button.png" class="buttonImg" /></div>
+<div id="adifLoadDiv" onclick="adifLoadDialog()" class="iconButton" title="载入本地ADIF日志(L)"><img src="./img/adif.png" class="buttonImg" /></div>
+<div id="conditionsButton" onclick="showConditionsBox();" class="iconButton" title="查看当前空间数据(C)"><img src="./img/conditions.png" class="buttonImg" /></div>
+<div id="donateButton" onclick="gotoDonate();" class="iconButton" title="使用PayPal捐款"><img style="-webkit-filter: brightness(50%); filter: brightness(50%)" src="./img/donate.png" class="buttonImg" /></div>
+<div id="alterMuteDiv" onclick="toggleAlertMute()" class="iconButton" title="切换静音状态(M)"><img id="alertMuteImg" src="" class="buttonImg" /></div>
+<div id="buttonPSKSpotsBoxDiv" onclick="togglePskSpots();" class="iconButton" title="显示Spot信息报告(O)"><img id="pskSpotsImg" src="./img/spots.png" class="buttonImg" /></div>
+<div id="buttonPsk24CheckBoxDiv" onclick="grabPsk24()" class="iconButton" title="您24小时的PSK报告"><img id="pskImg" src="./img/psk_24_32.png" class="buttonImg" /></div>
+<div id="buttonQRZCheckBoxDiv" onclick="if ( ValidateQrzApi(qrzApiKey ) ) grabQrzComLog()" class="iconButton" title="从QRZ.com下载日志"><img id="qrzLogImg" src="./img/log_QRZ.png" class="buttonImg" /></div>
+<div id="buttonLOTWCheckBoxDiv" onclick="if ( ValidateText(lotwLogin) &amp;&amp; ValidateText(lotwPassword) ) { grabLOtWLog(false); }" class="iconButton" title="从LOTW下载日志"><img id="lotwLogImg" src="./img/log_LoTW.png" class="buttonImg" /></div>
+<div id="buttonClubCheckBoxDiv" onclick="if ( ValidateText(clubEmail) &amp;&amp; ValidateText(clubPassword) ) grabClubLog()" class="iconButton" title="从ClubLog下载日志"><img id="ClubLogImg" src="./img/log_club.png" class="buttonImg" /></div>
+<div id="buttonAdifCheckBoxDiv" onclick="startupAdifLoadFunction()" class="iconButton" title="重新载入本地ADIF文件"><img src="./img/log_local.png" class="buttonImg" /></div>
+<div id="timezoneButton" onclick="toggleTimezones()" class="iconButton" title="显示时区图层"><img src="./img/timezone-button.png" class="buttonImg" /></div>
+<div id="radarButton" onclick="toggleNexrad()" class="iconButton" title="显示美国地区气象雷达图层(数字0)"><img src="./img/radar-button.png" class="buttonImg" /></div>
+<div id="gridOverlayButton" onclick="toggleAllGrids()" class="iconButton" title="显示网格图层(B)"><img src="./img/grid-overlay.png" class="buttonImg" /></div>
+<div id="gtFlagButton" onclick="toggleGtMap();" class="iconButton" title="切换查看GridTracker在线用户(G)"><img id="gtFlagImg" src="" class="buttonImg" /></div>
+<div id="msgButton" onclick="showMessaging();" class="iconButton" title="信息服务窗口(聊天室)"><img id="msgImg" src="./img/gt_chat.png" class="buttonImg" /></div>
</div>
<div id="SpotsDiv" style="display: none; border: 1px solid yellow; margin: 1px; margin-bottom: 1px; margin-top: 2px" class="roundBorder">
<table align="center">
<tr>
<td id="spotCountDiv">Spots: 0</td>
-<td id="spotRefreshDiv">Refresh: -</td>
+<td id="spotRefreshDiv">刷新: -</td>
</tr>
<tr>
<td colspan="2" align="center" id="spotHistoryTimeTd"></td>
</tr>
<tr>
-<td colspan="2"><input type="range" min="5" max="1440" value="15" step="5" class="slider" id="spotHistoryTimeValue" oninput="changeSpotValues();" onkeyup="redrawSpots();" onmouseup="redrawSpots();"></td>
+<td colspan="2"><input type="range" min="5" max="1440" value="15" step="5" class="slider" id="spotHistoryTimeValue" oninput="changeSpotValues();" onkeyup="redrawSpots();" onmouseup="redrawSpots();" /></td>
</tr>
</table>
</div>
-<div id="trafficDiv" class="roundBorder" style="position: relative; background-color: #000; color: #888; border: 1px solid black; margin: 2px; bottom: 2px; right: 2px; white-space: no-wrap; overflow: hidden;"></div>
+<div id="trafficDiv" class="roundBorder" style=" position: relative; background-color: #000; color: #888; border: 1px solid black; margin: 2px; bottom: 2px; right: 2px; white-space: no-wrap; overflow: hidden;"></div>
</div>
<div id="myFlagtip" class="myFlagtipEnd"></div>
-<div id="myTooltip" style="-webkit-user-select: text; user-select: text; background-color: black; padding: 5px; text-align: center; display: block; position: absolute; z-index: -500; left: -1000px; top: -1000px; border: 2px solid white; white-space: nowrap; overflow: hidden;" class="roundBorder"></div>
-<div id="myGridTooltip" style="background-color: black; padding: 5px; text-align: center; display: block; position: absolute; z-index: -499; left: 50px; top: 50px; border: 2px solid white; white-space: nowrap; overflow: hidden;" class="roundBorder"></div>
-<div id="myTrophyTooltip" style="background-color: black; padding: 5px; text-align: center; display: block; position: absolute; z-index: -499; left: 50px; top: 50px; border: 2px solid white; white-space: nowrap; overflow: hidden;" class="roundBorder"></div>
-<div id="myMoonTooltip" style="background-color: black; padding: 5px; text-align: center; display: block; position: absolute; z-index: -499; left: 50px; top: 50px; border: 2px solid white; white-space: nowrap; overflow: hidden;" class="roundBorder"></div>
-<div id="helpDiv" style="animation: fadeInEffect 0.1s; margin: 2px; left: 30px; top: 20px; display: none; background-color: black; padding: 5px; text-align: center; vertical-align: middle; position: absolute; z-index: 600; border: 1px cyan;" class="roundBorder">
+<div id="myTooltip" style=" -webkit-user-select: text; user-select: text; background-color: black; padding: 5px; text-align: center; display: block; position: absolute; z-index: -500; left: -1000px; top: -1000px; border: 2px solid white; white-space: nowrap; overflow: hidden;" class="roundBorder"></div>
+<div id="myGridTooltip" style=" background-color: black; padding: 5px; text-align: center; display: block; position: absolute; z-index: -499; left: 50px; top: 50px; border: 2px solid white; white-space: nowrap; overflow: hidden;" class="roundBorder"></div>
+<div id="myTrophyTooltip" style=" background-color: black; padding: 5px; text-align: center; display: block; position: absolute; z-index: -499; left: 50px; top: 50px; border: 2px solid white; white-space: nowrap; overflow: hidden;" class="roundBorder"></div>
+<div id="myMoonTooltip" style=" background-color: black; padding: 5px; text-align: center; display: block; position: absolute; z-index: -499; left: 50px; top: 50px; border: 2px solid white; white-space: nowrap; overflow: hidden;" class="roundBorder"></div>
+<div id="helpDiv" style=" animation: fadeInEffect 0.1s; margin: 2px; left: 30px; top: 20px; display: none; background-color: black; padding: 5px; text-align: center; vertical-align: middle; position: absolute; z-index: 600; border: 1px cyan;" class="roundBorder">
<div id="printHotKeyDiv" style="border: 1px solid cyan; color: white; text-align: auto">
<table align="center" class="darkTable">
<tr>
-<th colspan="6">Hot Key List (v1.20.0825+)</th>
+<th colspan="6">热键清单 (v1.20.0825+)</th>
</tr>
<tr>
<th>Key</th>
<th align="left">Action</th>
<th>Condition</th>
-<th>Key</th>
+<th>键</th>
<th align="left">Action</th>
-<th>Condition</th>
+<th>条件</th>
</tr>
<tr>
<td>1</td>
-<td align="left">Show General Map Layer</td>
+<td align="left">显示一般地图图层</td>
<td></td>
<td>Q</td>
-<td align="left">Cycle Logbook/Live View</td>
+<td align="left">循环日志/实时视图</td>
<td></td>
</tr>
<tr>
<td>2</td>
-<td align="left">Show CQ Zones Award Layer</td>
+<td align="left">显示CQ区域奖状图层</td>
<td></td>
<td>R</td>
-<td align="left">Open Call Roster Window</td>
+<td align="left">打开呼叫列表窗口</td>
<td></td>
</tr>
<tr>
<td>3</td>
-<td align="left">Show ITU Zones Award Layer</td>
+<td align="left">显示ITU区域奖状图层</td>
<td></td>
<td>S</td>
-<td align="left">Open Settings</td>
+<td align="left">打开设置</td>
<td></td>
</tr>
<tr>
<td>4</td>
-<td align="left">Show Continents Award Layer</td>
+<td align="left">显示WAC大洲奖状图层</td>
<td></td>
<td>T</td>
-<td align="left">Toggle RX Spots over Grids</td>
+<td align="left">切换网格上的Spots显示</td>
<td></td>
</tr>
<tr>
<td>5</td>
-<td align="left">Show US States Award Layer</td>
+<td align="left">显示WAS美国州奖状图层</td>
<td></td>
<td>T</td>
-<td align="left">Add TTS Alert</td>
-<td>right-click<br>
-empty grid</td>
+<td align="left">增加TTS警报</td>
+<td>单击右键<br />
+清除网格</td>
</tr>
<tr>
<td>6</td>
-<td align="left">Show DXCC Award Layer</td>
+<td align="left">显示DXCC奖状图层</td>
<td></td>
<td>U</td>
-<td align="left">Toggle Award Layer Merge</td>
+<td align="left">切换奖状图层</td>
<td></td>
</tr>
<tr>
<td>7</td>
-<td align="left">Show US Counties Award Layer</td>
+<td align="left">显示美国县奖状图层</td>
<td></td>
<td>V</td>
-<td align="left">Add PopUp Alert</td>
-<td>right-click<br>
-empty grid</td>
+<td align="left">增加弹出通知</td>
+<td>单击右键<br />
+清除网格</td>
</tr>
<tr>
<td>8</td>
-<td align="left">Show US Continental Grids Award Layer</td>
+<td align="left">显示美国大陆网格奖状图层</td>
<td></td>
<td>W</td>
-<td align="left">Toggle Maidenhead Grid Size</td>
+<td align="left">切换梅登黑德网格的位数</td>
<td></td>
</tr>
<tr>
<td>9</td>
-<td align="left">Toggle Timezone Overlay</td>
+<td align="left">显示时区图层</td>
<td></td>
<td>X</td>
-<td align="left">Toggle Map Position Info</td>
+<td align="left">切换地图位置信息</td>
<td></td>
</tr>
<tr>
<td>0</td>
-<td align="left">Toggle US Nexrad Overlay</td>
+<td align="left">显示美国气象雷达图层</td>
<td></td>
<td>Y</td>
-<td align="left">Toggle Global Lightning</td>
+<td align="left">显示全球闪电报告</td>
<td></td>
</tr>
<tr>
<td>=</td>
-<td align="left">Cycle Award Layers</td>
+<td align="left">循环多种奖状图层</td>
<td></td>
<td>Z</td>
-<td align="left">Center Map on QTH Grid</td>
+<td align="left">移到您所在的中心位置</td>
<td></td>
</tr>
<tr>
<td>A</td>
-<td align="left">Toggle Active Path Animation</td>
+<td align="left">切换活动路径动画效果</td>
<td></td>
<td>F1</td>
-<td align="left">Hot Key List (This List)</td>
+<td align="left">热键清单(此清单)</td>
<td></td>
</tr>
<tr>
<td>B</td>
-<td align="left">Toggle All Grid Overlay</td>
+<td align="left">切换网格图层</td>
<td></td>
<td>F5</td>
-<td align="left">Recall Map Position 1</td>
+<td align="left">召回地图位置 1</td>
<td></td>
</tr>
<tr>
<td>C</td>
-<td align="left">Open Conditions Windows</td>
+<td align="left">打开实时空间数据窗口</td>
<td></td>
<td>F5</td>
-<td align="left">Store Map Position 1</td>
+<td align="left">存储地图位置 1</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>D</td>
-<td align="left">Toggle Moon Tracking</td>
+<td align="left">切换月球位置显示</td>
<td></td>
<td>F6</td>
-<td align="left">Recall Map Position 2</td>
+<td align="left">召回地图位置 2</td>
<td></td>
</tr>
<tr>
<td>E</td>
-<td align="left">Toggle 24h Moon Trajectory</td>
+<td align="left">切换显示月球轨道</td>
<td></td>
<td>F6</td>
-<td align="left">Store Map Position 2</td>
+<td align="left">存储地图位置 2</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>F</td>
-<td align="left">Toggle RX Spots Flight</td>
+<td align="left">Spots数据接收开关 ★★★</td>
<td></td>
<td>F7</td>
-<td align="left">Recall Map Position 3</td>
+<td align="left">召回地图位置 3</td>
<td></td>
</tr>
<tr>
<td>G</td>
-<td align="left">Toggle GridTracker Flags</td>
+<td align="left">切换GT在线用户数显示</td>
<td></td>
<td>F7</td>
-<td align="left">Store Map Position 3</td>
+<td align="left">存储地图位置 3</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>H</td>
-<td align="left">Toggle RX Spots Heatmap</td>
+<td align="left">切换Spots热图模式或聚光灯模式 ★</td>
<td></td>
<td>F8</td>
-<td align="left">Recall Map Position 4</td>
+<td align="left">召回地图位置 4</td>
<td></td>
</tr>
<tr>
<td>I</td>
-<td align="left">Open Stats/Info</td>
+<td align="left">打开统计数据窗口</td>
<td></td>
<td>F8</td>
-<td align="left">Store Map Position 4</td>
+<td align="left">存储地图位置 4</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>K</td>
-<td align="left">Capture Screenshot</td>
+<td align="left">屏幕截图</td>
<td></td>
<td>F9</td>
-<td align="left">Recall Map Position 5</td>
+<td align="left">召回地图位置 5</td>
<td></td>
</tr>
<tr>
<td>L</td>
-<td align="left">Open ADIF file</td>
+<td align="left">打开ADIF文件</td>
<td></td>
<td>F9</td>
-<td align="left">Store Map Position 5</td>
-<td>Shift-Key</td>
+<td align="left">存储地图位置 5</td>
+<td>Shift键</td>
</tr>
<tr>
<td>M</td>
-<td align="left">Toggle Audio Mute</td>
+<td align="left">切换静音状态</td>
<td></td>
<td>F10</td>
-<td align="left">Recall Map Position 6</td>
+<td align="left">召回地图位置 6</td>
<td></td>
</tr>
<tr>
<td>M</td>
-<td align="left">Add MapCenter Alert</td>
-<td>right-click<br>
-empty grid</td>
+<td align="left">增加地图中心警报</td>
+<td>单击右键<br />
+清除网格</td>
<td>F10</td>
-<td align="left">Store Map Position 6</td>
+<td align="left">存储地图位置 6</td>
<td>Shift-Key</td>
</tr>
<tr>
<td>N</td>
-<td align="left">Toggle Grayline</td>
+<td align="left">显示昼夜灰线图层</td>
<td></td>
<td>F11</td>
-<td align="left">Toggle Fullscreen</td>
+<td align="left">切换全屏</td>
<td></td>
</tr>
<tr>
<td>O</td>
-<td align="left">Toggle RX Spots</td>
+<td align="left">开关接收Spots控制栏</td>
<td></td>
<td>F12</td>
-<td align="left">Toggle Sidebar Menu</td>
+<td align="left">切换侧边栏菜单</td>
<td></td>
</tr>
<tr>
<td>P</td>
-<td align="left">Toggle Grid/PushPin Mode</td>
+<td align="left">切换网格/图钉模式</td>
<td></td>
</tr>
</table>
</div>
-<div><br>
-<div class="button" onclick="require('nw.gui').Shell.openExternal('https://storage.googleapis.com/gt_app/gt_print.html');">Print</div>
+<div><br />
+<div class="button" onclick="require('nw.gui').Shell.openExternal('http://www.srac.cn/gt-app/gt_print.html');">打印</div>
</div>
<div style="top: 6px; right: 6px; position: absolute"><button class="Xbutton" onclick="g_helpShow=false;helpDiv.style.display='none';">X</button></div>
</div>
-<div id="rootSettingsDiv" style="margin: 0; top: 1px; display: none; background-color: #00000000; padding: 0px; text-align: center; vertical-align: middle; position: relative; z-index: 600;" class="roundBorder">
-<div class="settingstab"><button data-i18n="settings.General.label" id="generalbut" class="settingsTablinks active" onclick="openSettingsTab(event, 'udpSettingsDiv')">General</button> <button data-i18n="settings.Lookups.label" id="lookupbut" class="settingsTablinks" onclick="openSettingsTab(event, 'lookupsSettingsDiv')">Lookups</button> <button data-i18n="settings.Audio.label" class="settingsTablinks" onclick="openSettingsTab(event, 'SpeechSettingsDiv')">Audio</button> <button data-i18n="settings.Map.label" class="settingsTablinks" onclick="openSettingsTab(event, 'mapSettingsDiv')">Map</button> <button data-i18n="settings.Grids.label" class="settingsTablinks" onclick="openSettingsTab(event, 'gridSettingsDiv')">Grids</button> <button data-i18n="settings.Logging.label" class="settingsTablinks" onclick="openSettingsTab(event, 'logSettingsDiv')">Logging</button> <button data-i18n="settings.Alerts.label" class="settingsTablinks" onclick="openSettingsTab(event, 'alertsDiv')">Alerts</button> <button data-i18n="settings.CallRoster.label" class="settingsTablinks" onclick="openSettingsTab(event, 'callRosterDiv')">Call Roster</button> <button data-i18n="settings.OAMS.label" class="settingsTablinks" onclick="openSettingsTab(event, 'chatSettingsDiv')">OAMS</button> <button data-i18n="settings.Logbook.label" id="logbut" class="settingsTablinks" onclick="openSettingsTab(event, 'logbookSettingsDiv')">Logbook</button> <button data-i18n="settings.Update.label" id="updatebut" class="settingsTablinks" onclick="openSettingsTab(event, 'updateSettingsDiv')">Update</button> <button data-i18n=
-"settings.About.label" class="settingsTablinks" style="margin-right: 25px" onclick="openSettingsTab(event, 'aboutDiv')">About</button></div>
+<div id="rootSettingsDiv" style=" margin: 0; top: 1px; display: none; background-color: #00000000; padding: 0px; text-align: center; vertical-align: middle; position: relative; z-index: 600;" class="roundBorder">
+<div class="settingstab"><button id="generalbut" class="settingsTablinks active" onclick="openSettingsTab(event, 'udpSettingsDiv')">常规</button> <button id="lookupbut" class="settingsTablinks" onclick="openSettingsTab(event, 'lookupsSettingsDiv')">查找</button> <button class="settingsTablinks" onclick="openSettingsTab(event, 'SpeechSettingsDiv')">声音</button> <button class="settingsTablinks" onclick="openSettingsTab(event, 'mapSettingsDiv')">地图</button> <button class="settingsTablinks" onclick="openSettingsTab(event, 'gridSettingsDiv')">网格</button> <button class="settingsTablinks" onclick="openSettingsTab(event, 'logSettingsDiv')">日志记录</button> <button class="settingsTablinks" onclick="openSettingsTab(event, 'alertsDiv')">警报</button> <button class="settingsTablinks" onclick="openSettingsTab(event, 'callRosterDiv')">呼叫列表</button> <button class="settingsTablinks" onclick="openSettingsTab(event, 'chatSettingsDiv')">OAMS</button> <button id="logbut" class="settingsTablinks" onclick="openSettingsTab(event, 'logbookSettingsDiv')">日志</button> <button id="updatebut" class="settingsTablinks" onclick="openSettingsTab(event, 'updateSettingsDiv')">更新</button> <button class="settingsTablinks" style="margin-right: 25px" onclick="openSettingsTab(event, 'aboutDiv')">关于</button></div>
<div id="udpSettingsDiv" class="settingsTabcontent" style="display: block">
<table align="center">
<tr>
@@ -617,10 +597,10 @@
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.general.AppStatus.label">Application Status</td>
+<td>应用软件状态</td>
</tr>
<tr>
-<td id="runningAppsDiv" class="roundBorderValue">Neither WSJT-X or JTDX are running.</td>
+<td id="runningAppsDiv" class="roundBorderValue">WSJT-X 和 JTDX 没有运行</td>
</tr>
</table>
</div>
@@ -633,22 +613,22 @@
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.general.UDP.Messages.label"><b>Receive UDP Messages</b></td>
+<td><b>接收UDP信息</b></td>
</tr>
<tr>
-<td id="lastMsgTimeDiv">No messages yet.</td>
+<td id="lastMsgTimeDiv">尚未有信息.</td>
</tr>
<tr>
-<td id="secondsAgoMsg" class="roundBorderValue">Never</td>
+<td id="secondsAgoMsg" class="roundBorderValue">从未</td>
</tr>
<tr>
-<td><label data-i18n="settings.general.UDP.Multicast.label" for="multicastEnable">Multicast?</label> <input title="Enable / Disable Local Network Multicast" type="checkbox" id="multicastEnable" onclick="setMulticastEnable(this);"></td>
+<td>组播? <input title="启用/禁用本地组播网络" type="checkbox" id="multicastEnable" onclick="setMulticastEnable(this);" /></td>
</tr>
<tr>
-<td id="multicastTD" style="display: none"><label data-i18n="settings.general.UDP.IP.label" for="multicastIpInput">IP</label> <input id="multicastIpInput" type="text" class="inputTextValue" maxlength="255" size="16" onkeypress="return validIpKeys(event.charCode);" oninput="if ( ValidateMulticast(this) ) setMulticastIp();"></td>
+<td id="multicastTD" style="display: none">IP地址 <input id="multicastIpInput" type="text" class="inputTextValue" maxlength="255" size="16" onkeypress="return validIpKeys(event.charCode);" oninput=" if ( ValidateMulticast(this) ) setMulticastIp();" /></td>
</tr>
<tr>
-<td><label data-i18n="settings.general.UDP.Port.label" for="udpPortInput">Port</label> <input id="udpPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress="return validNumberKeys(event.charCode);" oninput="if ( ValidatePort(this, null, CheckReceivePortIsNotForwardPort) ) setUdpPort();"></td>
+<td>端口 <input id="udpPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress="return validNumberKeys(event.charCode);" oninput="if ( ValidatePort(this, null, CheckReceivePortIsNotForwardPort) ) setUdpPort();" /></td>
</tr>
</table>
</div>
@@ -657,19 +637,19 @@
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.general.Fwd.Messages.label1"><b>Forward UDP Messsages</b></td>
+<td><b>转发UDP信息</b></td>
</tr>
<tr>
-<td data-i18n="settings.general.Fwd.Messages.label2"><i>e.g. GridTracker on another host</i></td>
+<td><i>例如, 在另一个主机上的GridTracker</i></td>
</tr>
<tr>
-<td><label data-i18n="settings.general.Fwd.IP.label" for="udpForwardIpInput">IP</label> <input id="udpForwardIpInput" type="text" class="inputTextValue" maxlength="255" size="16" onkeypress="return validIpKeys(event.charCode);" oninput="if ( ValidateIPaddress(this, udpForwardEnable) ) setForwardIp();"></td>
+<td>IP <input id="udpForwardIpInput" type="text" class="inputTextValue" maxlength="255" size="16" onkeypress="return validIpKeys(event.charCode);" oninput=" if ( ValidateIPaddress(this, udpForwardEnable) ) setForwardIp();" /></td>
</tr>
<tr>
-<td><label data-i18n="settings.general.Fwd.Port.label" for="udpForwardPortInput">Port</label> <input id="udpForwardPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress="return validNumberKeys(event.charCode);" oninput="if ( ValidatePort(this, udpForwardEnable, CheckForwardPortIsNotReceivePort) ) setForwardPort();"></td>
+<td>端口 <input id="udpForwardPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress="return validNumberKeys(event.charCode);" oninput="if ( ValidatePort(this, udpForwardEnable, CheckForwardPortIsNotReceivePort) ) setForwardPort();" /></td>
</tr>
<tr>
-<td><label data-i18n="settings.general.Fwd.Enabled.label" for="setUdpForwardEnable">Enabled?</label> <input title="Enable / Disable UDP Message forwarding" type="checkbox" id="udpForwardEnable" onclick="setUdpForwardEnable(this);"></td>
+<td>启用?<input title="启用/禁用转发UDP信息" type="checkbox" id="udpForwardEnable" onclick="setUdpForwardEnable(this);" /></td>
</tr>
</table>
</div>
@@ -682,10 +662,10 @@
<div id="CenterGridDiv" class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.general.CenterGrid.label">Center Gridsquare</td>
+<td>所在网格</td>
</tr>
<tr>
-<td><input id="homeQTHInput" type="text" class="inputTextValue" maxlength="8" size="8" oninput="{ if ( ValidateGridsquare(this,null) ) { setCenterGridsquare(); }}"></td>
+<td><input id="homeQTHInput" type="text" class="inputTextValue" maxlength="8" size="8" oninput="{ if ( ValidateGridsquare(this,null) ) { setCenterGridsquare(); }}" /></td>
</tr>
</table>
</div>
@@ -694,14 +674,14 @@
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.general.DistanceUnits.label" title="Distance Units">Distance Units</td>
+<td title="距离单位">距离单位</td>
</tr>
<tr>
<td><select id="distanceUnit" value="KM" onchange="changeDistanceUnit();">
-<option data-i18n="settings.general.Distance.km" value="KM">Kilometres</option>
-<option data-i18n="settings.general.Distance.mi" value="MI">Statute Miles</option>
-<option data-i18n="settings.general.Distance.nm" value="NM">Nautical Miles</option>
-<option data-i18n="settings.general.Distance.dg" value="DG">Degrees</option>
+<option value="KM">公里</option>
+<option value="MI">英里</option>
+<option value="NM">海里</option>
+<option value="DG">角度</option>
</select></td>
</tr>
</table>
@@ -713,12 +693,12 @@
<tr>
<td>
<div class="mapItem">
-<table align="center" title="Enable Decode Traffic Visual in Menu">
+<table align="center" title="在可视菜单中启用解码流量">
<tr>
-<td data-i18n="settings.general.DecodeWaterfall.label">Decode Traffic Waterfall</td>
+<td>右下角解码信息框</td>
</tr>
<tr>
-<td><input type="checkbox" id="trafficDecode" onclick="changeTrafficDecode()"></td>
+<td><input type="checkbox" id="trafficDecode" onclick="changeTrafficDecode()" /></td>
</tr>
</table>
</div>
@@ -727,7 +707,7 @@
<div id="CheckForNewVersionDiv" class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.general.CheckNewVersion.label">Check for new version</td>
+<td>检查新版本</td>
</tr>
<tr>
<td>
@@ -746,11 +726,11 @@
<table align="center">
<tr>
<td>
-<div data-i18n="settings.general.ClearAllSettings.label" class="button" onclick="if ( imSureCheck.checked ) { clearAndReload(); }">Clear All Settings!</div>
+<div class="button" onclick="if ( imSureCheck.checked ) { clearAndReload(); }">清除所有设置!</div>
</td>
</tr>
<tr>
-<td><label data-i18n="settings.general.ClearSettingSure.label" for="imSureCheck">Yes, I'm sure!</label> <input type="checkbox" id="imSureCheck" title="Must be checked to enable clearing of settings"></td>
+<td>是的, 我确定!<input type="checkbox" id="imSureCheck" title="必须选择这才能清除设置" /></td>
</tr>
</table>
</div>
@@ -760,12 +740,12 @@
<table align="center">
<tr>
<td>
-<div data-i18n="settings.general.ExportSettings.label" class="button" onclick="exportSettings();">Export Settings</div>
+<div class="button" onclick="exportSettings();">导出设置</div>
</td>
</tr>
<tr>
<td>
-<div data-i18n="settings.general.ImportSettings.label" style="display: none" id="importSettingsButton" class="button" onclick="importSettings();">Import Settings</div>
+<div style="display: none" id="importSettingsButton" class="button" onclick="importSettings();">导入设置</div>
</td>
</tr>
<tr>
@@ -781,111 +761,111 @@
<div class="mapItem">
<table align="center">
<tr align="center">
-<td data-i18n="settings.lookup.label" align="center" style="font-weight: bold; color: cyan">Callsign Lookup Service</td>
+<td align="center" style="font-weight: bold; color: cyan">呼号查找服务</td>
</tr>
<tr align="center">
<td colspan="1"><select id="lookupService" value="CALLOOK" onchange="lookupValueChanged();">
-<option data-i18n="settings.lookup.Callook" value="CALLOOK">C A L L O O K (US only)</option>
-<option data-i18n="settings.lookup.HamQTH" value="HAMQTH">HamQTH (Free Login Required)</option>
-<option data-i18n="settings.lookup.QRZcom" value="QRZ">QRZ.com (Free and Paid Members Only)</option>
-<option data-i18n="settings.lookup.QRZCQ" value="QRZCQ">QRZCQ.com (Paid Members Only)</option>
+<option value="CALLOOK">C A L L O O K (仅限美国)</option>
+<option value="HAMQTH">HamQTH (免费登入)</option>
+<option value="QRZ">QRZ.com (仅限免费和付费会员)</option>
+<option value="QRZCQ">QRZCQ.com (仅限付费会员)</option>
</select></td>
</tr>
<tr align="center" id="lookupCredentials" style="display: none">
-<td data-i18n="settings.lookup.Username.label">Username<input id="lookupLogin" type="text" class="inputTextValue" size="8" oninput="lookupValueChanged();"> Password<input id="lookupPassword" type="password" class="inputTextValue" size="8" oninput="lookupValueChanged();"></td>
+<td>用户姓名<input id="lookupLogin" type="text" class="inputTextValue" size="8" oninput="lookupValueChanged();" /> 密码<input id="lookupPassword" type="password" class="inputTextValue" size="8" oninput="lookupValueChanged();" /></td>
<td>
-<div data-i18n="settings.lookup.QRZTest" class="button" onclick="GetSessionID(lookupQrzTestResult);">Test</div>
+<div class="button" onclick="GetSessionID(lookupQrzTestResult);">测试</div>
</td>
<td id="lookupQrzTestResult">&nbsp;</td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.lookup.AddData.label" align="center">Add Lookup Data to QSO Log event</td>
+<td align="center">将寻找得到的资料增加至QSO纪录中</td>
</tr>
<tr align="center">
-<td title="When finsihing a QSO... add extra data from Lookup service"><input type="checkbox" id="lookupMerge" onclick="changeLookupMerge(this)"></td>
+<td title="当完成一个QSO时... 增加来自查找得到的额外数据"><input type="checkbox" id="lookupMerge" onclick="changeLookupMerge(this)" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="lookupMissingGridDiv" style="display: none">
<table align="center">
<tr>
-<td data-i18n="settings.lookup.AddGrid.label" align="center">Add Lookup Grid if QSO Grid missing</td>
+<td align="center">如果缺少QSO网格则增加查找网格数据</td>
</tr>
<tr align="center">
-<td title="Add Lookup Grid if QSO Grid Missing"><input type="checkbox" id="lookupMissingGrid" onclick="changeLookupMerge(this)"></td>
+<td title="如果缺少QSO网格则增加查找网格数据"><input type="checkbox" id="lookupMissingGrid" onclick="changeLookupMerge(this)" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.lookup.OpenOnTx.label" align="center">Open Lookup On Transmit</td>
+<td align="center">在传输时打开查找</td>
</tr>
<tr align="center">
-<td title="Open Lookup Window On Transmit"><input type="checkbox" id="lookupOnTx" onclick="changelookupOnTx()"></td>
+<td title="在传输时打开查找窗口"><input type="checkbox" id="lookupOnTx" onclick="changelookupOnTx()" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="lookupCloseLogDiv">
<table align="center">
<tr>
-<td data-i18n="settings.lookup.CloseOnLog.label" align="center">Close Lookup After Logging</td>
+<td align="center">记录日志后关闭查找</td>
</tr>
<tr align="center">
-<td title="Close Lookup Window After Logging"><input type="checkbox" id="lookupCloseLog" onclick="changelookupOnTx()"></td>
+<td title="记录日志后关闭查找窗口"><input type="checkbox" id="lookupCloseLog" onclick="changelookupOnTx()" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="lookupCallookPreferredDiv">
<table align="center">
<tr>
-<td data-i18n="settings.lookup.CallookFirst.label" align="center">Use Callook before using other service</td>
+<td align="center">使用其他服务之前使用呼号查找</td>
</tr>
<tr align="center">
-<td title="Use Callook before using other service. Free Callook yields more data than free QRZ."><input type="checkbox" id="lookupCallookPreferred" onclick="lookupValueChanged()"></td>
+<td title="使用其他服务之前使用呼号查找. 免费的Callook yields比免费的QRZ有更多的数据."><input type="checkbox" id="lookupCallookPreferred" onclick="lookupValueChanged()" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div id="callsignDatabaseDiv" class="mapItem">
<table align="center" class="darkTable">
<tr>
-<th data-i18n="settings.lookup.Databases.label" colspan="6" style="font-weight: bold; color: yellow">Callsign Databases</th>
+<th colspan="6" style="font-weight: bold; color: yellow">呼号数据库</th>
</tr>
<tr>
-<th data-i18n="settings.lookup.Databases.header">Database</th>
-<th data-i18n="settings.lookup.Enabled.header">Enabled</th>
-<th data-i18n="settings.lookup.LastDwnld.header">Last Download</th>
-<th data-i18n="settings.lookup.Count.header">Count</th>
+<th>数据库</th>
+<th>启用</th>
+<th>最后下载</th>
+<th>计数</th>
</tr>
<tr>
-<td data-i18n="settings.lookup.db.ULS">United States ULS</td>
-<td><input type="checkbox" id="ulsUseEnable" onclick="ulsValuesChanged();"></td>
-<td id="ulsUpdatedTd">Never</td>
+<td>美国 ULS</td>
+<td><input type="checkbox" id="ulsUseEnable" onclick="ulsValuesChanged();" /></td>
+<td id="ulsUpdatedTd">从未</td>
<td id="ulsCountTd">0</td>
</tr>
<tr>
-<td data-i18n="settings.lookup.db.LoTW">Logbook of The World</td>
-<td><input type="checkbox" id="lotwUseEnable" onclick="lotwValuesChanged();"></td>
-<td id="lotwUpdatedTd">Never</td>
+<td>LoTW</td>
+<td><input type="checkbox" id="lotwUseEnable" onclick="lotwValuesChanged();" /></td>
+<td id="lotwUpdatedTd">从未</td>
<td id="lotwCountTd">0</td>
</tr>
<tr>
-<td data-i18n="settings.lookup.db.eQSL">eQSL</td>
-<td><input type="checkbox" id="eqslUseEnable" onclick="eqslValuesChanged();"></td>
-<td id="eqslUpdatedTd">Never</td>
+<td>eQSL</td>
+<td><input type="checkbox" id="eqslUseEnable" onclick="eqslValuesChanged();" /></td>
+<td id="eqslUpdatedTd">从未</td>
<td id="eqslCountTd">0</td>
</tr>
<tr>
-<td data-i18n="settings.lookup.db.OQRS">ClubLog OQRS</td>
-<td><input type="checkbox" id="oqrsUseEnable" onclick="oqrsValuesChanged();"></td>
-<td id="oqrsUpdatedTd">Never</td>
+<td>ClubLog OQRS</td>
+<td><input type="checkbox" id="oqrsUseEnable" onclick="oqrsValuesChanged();" /></td>
+<td id="oqrsUpdatedTd">从未</td>
<td id="oqrsCountTd">0</td>
</tr>
</table>
@@ -896,7 +876,7 @@
<div class="mapItem">
<table align="center">
<tr align="center">
-<td data-i18n="settings.audio.TextToSpeech.label" align="center">Text-to-speech Voice</td>
+<td align="center">文本朗读语言包</td>
</tr>
<tr align="center">
<td colspan="1">
@@ -905,47 +885,47 @@
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem">
<table align="center">
<tr align="center">
-<td data-i18n="settings.audio.Speech.Rate.label" align="center">Speech Rate</td>
+<td align="center">朗读速度</td>
<td align="center" id="speechRateTd">1</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0.1" max="10" value="1" step="0.1" class="slider" id="speechRate" oninput="changeSpeechValues()"></td>
+<td colspan="2"><input type="range" min="0.1" max="10" value="1" step="0.1" class="slider" id="speechRate" oninput="changeSpeechValues()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.audio.Speech.Pitch.label" align="center">Speech Pitch</td>
+<td align="center">朗读音调</td>
<td align="center" id="speechPitchTd">1</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0" max="2" value="1" step="0.1" class="slider" id="speechPitch" oninput="changeSpeechValues()"></td>
+<td colspan="2"><input type="range" min="0" max="2" value="1" step="0.1" class="slider" id="speechPitch" oninput="changeSpeechValues()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.audio.Speech.Volume.label" align="center">Speech Volume</td>
+<td align="center">朗读音量</td>
<td align="center" id="speechVolumeTd">1</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0.1" max="1" value="1" step="0.05" class="slider" id="speechVolume" oninput="changeSpeechValues()"></td>
+<td colspan="2"><input type="range" min="0.1" max="1" value="1" step="0.05" class="slider" id="speechVolume" oninput="changeSpeechValues()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.audio.Speech.Phonetics.label" title="Speak Callsigns and Gridsquares phonetically">Phonetics</td>
+<td title="朗读说出呼号和网格的音质">朗读音质</td>
</tr>
<tr>
-<td title="Speak Callsigns and Gridsquares phonetically"><input type="checkbox" id="speechPhonetics" onclick="changeSpeechValues()"></td>
+<td title="朗读说出呼号和网格的音质"><input type="checkbox" id="speechPhonetics" onclick="changeSpeechValues()" /></td>
</tr>
</table>
</div>
@@ -953,7 +933,7 @@
<div class="mapItem">
<table align="center">
<tr align="center">
-<td data-i18n="settings.audio.Device.label" align="center">Audio Device</td>
+<td align="center">音频设备</td>
</tr>
<tr align="center">
<td colspan="1">
@@ -962,38 +942,38 @@
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem" style="white-space: nowrap">
<table align="center">
<tr>
-<td data-i18n="settings.audio.File.Volume.label" align="center">File Audio Volume</td>
+<td align="center">音频文件音量</td>
<td align="center" id="audioVolumeTd">1</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0.00" max="1" value="1" step="0.01" class="slider" id="audioVolume" oninput="changeAudioValues()"></td>
+<td colspan="2"><input type="range" min="0.00" max="1" value="1" step="0.01" class="slider" id="audioVolume" oninput="changeAudioValues()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.audio.lighteningAlert.label" title="Lightning Strike Audio Alert">Lightning Strike Audio Alert</td>
+<td title="雷电音频警报">雷电音频警报</td>
</tr>
<tr>
<td><select id="strikesAlert" value="0" onchange="changeStrikesAlert();">
-<option data-i18n="settings.audio.lighteningAlert.none" value="0">None</option>
-<option data-i18n="settings.audio.lighteningAlert.short" value="1">Short</option>
-<option data-i18n="settings.audio.lighteningAlert.long" value="2">Long</option>
-<option data-i18n="settings.audio.lighteningAlert.voice" value="3">Voice</option>
+<option value="0">无声</option>
+<option value="1">短</option>
+<option value="2">长</option>
+<option value="3">语音</option>
</select></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem" style="white-space: nowrap">
<table align="center">
<tr>
-<td data-i18n="settings.audio.QSOLogEventFile.label" align="center">QSO Log Event Notification</td>
+<td align="center">QSO日志事件通知</td>
</tr>
<tr align="center">
<td><select id="logEventMedia" onchange="newLogEventSetting(this); alertLogMessage();"></select></td>
@@ -1003,42 +983,42 @@
</div>
<div id="logbookSettingsDiv" class="settingsTabcontent" style="padding: 5px">
<div style="padding: 5px" class="mapItem">
-<div style="padding: 5px" class="mapItem" title="Filter Logbook QSOs to include these Callsigns only (comma separated)">
+<div style="padding: 5px" class="mapItem" title="仅筛选日志 QSO 以包含这些呼号 (逗号分隔)">
<table align="center">
<tr>
-<td data-i18n="settings.logbook.callsigns.label"><b>Working Callsign(s)</b></td>
+<td><b>曾经通联的呼号(s)</b></td>
</tr>
<tr>
-<td><label data-i18n="settings.logbook.callsigns.enable" for="workingCallsignEnable">Enable?</label> <input title="Enable Filtering" type="checkbox" id="workingCallsignEnable" onclick="workingCallsignEnableChanged(this);"></td>
+<td>Enable? <input title="启用筛选" type="checkbox" id="workingCallsignEnable" onclick="workingCallsignEnableChanged(this);" /></td>
</tr>
<tr>
-<td id="workingCallsignsTd"><label data-i18n="settings.logbook.callsigns.callsigns" for="workingCallsignsValue">Callsign(s)</label> <input id="workingCallsignsValue" type="text" class="inputTextValue" size="15" onkeypress="return validCallsignsKeys(event.charCode);" oninput="if ( ValidateCallsigns(this) ) workingCallsignsChanged(this);"></td>
+<td id="workingCallsignsTd">呼号(s)<input id="workingCallsignsValue" type="text" class="inputTextValue" size="15" onkeypress="return validCallsignsKeys(event.charCode);" oninput="if ( ValidateCallsigns(this) ) workingCallsignsChanged(this);" /></td>
</tr>
</table>
</div>
<div style="padding: 5px" class="mapItem" title="Filter Logbook QSOs from before this Date">
<table align="center">
<tr>
-<td data-i18n="settings.logbook.date.label"><b>Working Date</b></td>
+<td><b>通联日期</b></td>
</tr>
<tr>
-<td><label data-i18n="settings.logbook.date.enable" for="workingDateEnable">Enable?</label> <input title="Enable Filtering" type="checkbox" id="workingDateEnable" onclick="workingDateEnableChanged(this);"></td>
+<td>启用? <input title="启用筛选" type="checkbox" id="workingDateEnable" onclick="workingDateEnableChanged(this);" /></td>
</tr>
<tr>
<td>
-<div class="roundBorderValue" style="width: auto; font-size: larger; font-weight: bold" id="workingDateString">No Date</div>
+<div class="roundBorderValue" style="width: auto; font-size: larger; font-weight: bold" id="workingDateString">没有日期</div>
</td>
<td></td>
</tr>
<tr>
-<td id="workingDateTd" title="Date is UTC"><input style="display: none" type="text" id="workingDateValue">
+<td id="workingDateTd" title="日期是以 UTC"><input style="display: none" type="text" id="workingDateValue" />
<div id="pick-inline"></div>
</td>
</tr>
</table>
</div>
-<br>
-<div data-i18n="settings.apply.label" style="padding: 5px; display: none; font-size: larger; font-weight: bold; color: cyan" id="applyCallsignsAndDateDiv" class="button" onclick="applyCallsignsAndDates();" title="Apply Changes and Re-Import Logbook(s)">Apply Changes</div>
+<br />
+<div style="padding: 5px; display: none; font-size: larger; font-weight: bold; color: cyan" id="applyCallsignsAndDateDiv" class="button" onclick="applyCallsignsAndDates();" title="套用变更和重新汇入日志">Apply Changes</div>
</div>
</div>
<div id="gridSettingsDiv" class="settingsTabcontent">
@@ -1046,11 +1026,11 @@
<div class="mapItem" style="height:49px;">
<table align="center">
<tr align="center">
-<td data-i18n="settings.grids.reset.title" align="center"><b><i>Gridsquare Colors</i></b></td>
+<td align="center"><b><i>网格颜色</i></b></td>
</tr>
<tr align="center">
-<td title="Reset Gridsquare Colors To Default">
-<div data-i18n="settings.grids.reset.label" class="button" onclick="resetLegendColors()">Reset Colors</div>
+<td title="将网格颜色重置为预设值">
+<div class="button" onclick="resetLegendColors()">重置颜色</div>
</td>
</tr>
</table>
@@ -1058,129 +1038,129 @@
<div class="mapItem" id="QSOgridDiv">
<table align="center">
<tr align="center">
-<td align="center" data-i18n="settings.grids.QSO.label"><b>QSO / Worked</b></td>
+<td align="center"><b>QSO/曾经通联</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="color" id="QSOgridValue" value="#000000" oninput="changeLegendColor(this)"></td>
+<td colspan="2"><input type="color" id="QSOgridValue" value="#000000" oninput="changeLegendColor(this)" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="QSLgridDiv">
<table align="center">
<tr align="center">
-<td align="center" data-i18n="settings.grids.QSL.label"><b>QSL / Confirmed</b></td>
+<td align="center"><b>QSL / 已经确认</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="color" id="QSLgridValue" value="#000000" oninput="changeLegendColor(this)"></td>
+<td colspan="2"><input type="color" id="QSLgridValue" value="#000000" oninput="changeLegendColor(this)" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="QSXgridDiv">
<table align="center">
<tr align="center">
-<td align="center" data-i18n="settings.grids.QSX.label"><b>QSX / Station-2-Station</b></td>
+<td align="center"><b>QSX/其他正在通联的电台</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="color" id="QSXgridValue" value="#000000" oninput="changeLegendColor(this)"></td>
+<td colspan="2"><input type="color" id="QSXgridValue" value="#000000" oninput="changeLegendColor(this)" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem" id="CQgridDiv">
<table align="center">
<tr align="center">
-<td align="center" data-i18n="settings.grids.CQ.label"><b>'CQ' Stations</b></td>
+<td align="center"><b>'CQ' 的电台</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="color" id="CQgridValue" value="#000000" oninput="changeLegendColor(this)"></td>
+<td colspan="2"><input type="color" id="CQgridValue" value="#000000" oninput="changeLegendColor(this)" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="CQDXgridDiv">
<table align="center">
<tr align="center">
-<td align="center" data-i18n="settings.grids.CQDX.label"><b>'CQ DX' Stations</b></td>
+<td align="center"><b>'CQ DX' 的电台</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="color" id="CQDXgridValue" value="#000000" oninput="changeLegendColor(this)"></td>
+<td colspan="2"><input type="color" id="CQDXgridValue" value="#000000" oninput="changeLegendColor(this)" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="QRZgridDiv">
<table align="center">
<tr align="center">
-<td align="center" data-i18n="settings.grids.QRZ.label"><b>QRZ / Your Traffic</b></td>
+<td align="center"><b>QRZ / 您的通联</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="color" id="QRZgridValue" value="#000000" oninput="changeLegendColor(this)"></td>
+<td colspan="2"><input type="color" id="QRZgridValue" value="#000000" oninput="changeLegendColor(this)" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="QTHgridDiv">
<table align="center">
<tr align="center">
-<td align="center" data-i18n="settings.grids.QTH.label"><b>QTH / Home Gridsquare</b></td>
+<td align="center"><b>QTH / 您的网格</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="color" id="QTHgridValue" value="#000000" oninput="changeLegendColor(this)"></td>
+<td colspan="2"><input type="color" id="QTHgridValue" value="#000000" oninput="changeLegendColor(this)" /></td>
</tr>
</table>
</div>
</div>
-<br>
-<br>
+<br />
+<br />
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.grids.spotsOverGrids.label" title="Place RX Spots over Grid Layer">PSK-Spots Over Grids</td>
+<td title="将接收Spots放置在网格图层上">PSK-Spots在网格之上</td>
</tr>
<tr>
-<td title="Place RX Spots over Grid Layer"><input type="checkbox" id="spotMergeValue" onclick="changeSpotValues();redrawSpots();"></td>
+<td title="将接收Spots放置在网格图层上"><input type="checkbox" id="spotMergeValue" onclick="changeSpotValues();redrawSpots();" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.grids.opacity.label" align="center">Grid Opacity</td>
+<td align="center">网格透明度</td>
<td align="left" id="showOpacityTd">10%</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="16" max="255" value="136" step="1" class="slider" id="opacityValue" oninput="changeGridOpacity()" onkeyup="redrawGrids()" onmouseup="redrawGrids()"></td>
+<td colspan="2"><input type="range" min="16" max="255" value="136" step="1" class="slider" id="opacityValue" oninput="changeGridOpacity()" onkeyup="redrawGrids()" onmouseup="redrawGrids()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.grids.splitQSL.label" align="center">Split QSL Grids</td>
+<td align="center">分离QSL网格</td>
</tr>
<tr align="center">
-<td title="Toggle Split QSL Grids with Live Grids"><input type="checkbox" id="splitQSLValue" onclick="changeSplitQSL()"></td>
+<td title="切换用即时网格分离QSL网格"><input type="checkbox" id="splitQSLValue" onclick="changeSplitQSL()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.grids.AutoMouseOver.label" align="center">Auto Mouseover Grids</td>
+<td align="center">鼠标自动移至网格</td>
</tr>
<tr align="center">
-<td title="Toggle Auto Mouseover Grid Tables"><input type="checkbox" id="mouseOverValue" onclick="changeMouseOverValue()"></td>
+<td title="切换鼠标自动移至网格表上"><input type="checkbox" id="mouseOverValue" onclick="changeMouseOverValue()" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem" id="decayRateDiv">
<table align="center">
<tr align="center">
-<td data-i18n="settings.grids.liveDecay.label" align="center">Live Grid Decay</td>
+<td align="center">在线网格衰减</td>
</tr>
<tr>
<td align="center" id="decayRateTd">10m</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0" max="86400" value="600" step="60" class="slider" id="gridDecay" oninput="changeGridDecay()" onkeyup="redrawGrids()" onmouseup="redrawGrids()"></td>
+<td colspan="2"><input type="range" min="0" max="86400" value="600" step="60" class="slider" id="gridDecay" oninput="changeGridDecay()" onkeyup="redrawGrids()" onmouseup="redrawGrids()" /></td>
</tr>
</table>
</div>
@@ -1189,7 +1169,7 @@
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.current.label" title="Change map">Current Map</td>
+<td title="Change map">当前地图</td>
</tr>
<tr>
<td><select id="mapSelect" value="terrain-background" onchange="changeMapValues();"></select></td>
@@ -1199,234 +1179,234 @@
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.animatePaths.label" colspan="1" align="center">Animate Active Paths</td>
+<td colspan="1" align="center">活动路径动画</td>
</tr>
<tr align="center">
-<td style="padding: 0px; margin: 0px" title="Toggle Traffic Path Animation"><input type="checkbox" id="animateValue" onclick="changeAnimate()"></td>
+<td style="padding: 0px; margin: 0px" title="切换活动路径动画"><input type="checkbox" id="animateValue" onclick="changeAnimate()" /></td>
</tr>
<tr style="display: none" id="animationSpeedTd">
-<td><input title="Animation Speed" type="range" min="1" max="20" value="10" step="1" class="slider" id="animateSpeedValue" oninput="changeAnimateSpeedValue()"></td>
+<td><input title="动画速度" type="range" min="1" max="20" value="10" step="1" class="slider" id="animateSpeedValue" oninput="changeAnimateSpeedValue()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.transparency.label" align="center" colspan="2">Map Settings Transparency</td>
+<td align="center" colspan="2">设置本窗口透明度</td>
</tr>
<tr>
<td align="center" id="mapTransTd">50%</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0" max="1" value="0.5" step="0.01" class="slider" id="mapTransValue" oninput="mapTransChange();"></td>
+<td colspan="2"><input type="range" min="0" max="1" value="0.5" step="0.01" class="slider" id="mapTransValue" oninput="mapTransChange();" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.QSXPath.width.label" align="center">QSX Path Width</td>
+<td align="center">QSX路径宽度</td>
<td align="left" id="pathWidthTd">1.5</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0.0" max="8" value="1.5" step="0.1" class="slider" id="pathWidthValue" oninput="changePathWidth()"></td>
+<td colspan="2"><input type="range" min="0.0" max="8" value="1.5" step="0.1" class="slider" id="pathWidthValue" oninput="changePathWidth()" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="pathColorDiv">
<table align="center">
<tr align="center">
-<td data-i18n="settings.map.QSXPath.color.label" align="center"><b>QSX Path Color</b></td>
+<td align="center"><b>QSX路径颜色</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0" max="361" value="0" class="slider" id="pathColorValue" oninput="changeMapValues()"></td>
+<td colspan="2"><input type="range" min="0" max="361" value="0" class="slider" id="pathColorValue" oninput="changeMapValues()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.QRZPath.width.label" align="center">QRZ Path Width</td>
+<td align="center">QRZ路径宽度</td>
<td align="left" id="qrzPathWidthTd">1.5</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0.0" max="10" value="1.5" step="0.1" class="slider" id="qrzPathWidthValue" oninput="changePathWidth()"></td>
+<td colspan="2"><input type="range" min="0.0" max="10" value="1.5" step="0.1" class="slider" id="qrzPathWidthValue" oninput="changePathWidth()" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="qrzPathColorDiv">
<table align="center">
<tr align="center">
-<td data-i18n="settings.map.QRZPath.color.label" align="center"><b>QRZ Path Color</b></td>
+<td align="center"><b>QRZ路径颜色</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0" max="361" value="360" class="slider" id="qrzPathColorValue" oninput="changeMapValues()"></td>
+<td colspan="2"><input type="range" min="0" max="361" value="360" class="slider" id="qrzPathColorValue" oninput="changeMapValues()" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.GraylineDarkness.label" align="center">Grayline Darkness</td>
+<td align="center">灰线明暗度</td>
<td align="left" id="showDarknessTd">10%</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0.03" max="0.70" value="0.1" step="0.01" class="slider" id="shadowValue" oninput="changeShadow()"></td>
+<td colspan="2"><input type="range" min="0.03" max="0.70" value="0.1" step="0.01" class="slider" id="shadowValue" oninput="changeShadow()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.Brightness.label" align="center">Brightness</td>
+<td align="center">亮度</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0" max="1" value="1" step="0.01" class="slider" id="brightnessValue" oninput="changeMapValues()"></td>
+<td colspan="2"><input type="range" min="0" max="1" value="1" step="0.01" class="slider" id="brightnessValue" oninput="changeMapValues()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.MergeAward.label" align="center">Merge Award Overlay</td>
+<td align="center">合并奖状图层</td>
</tr>
<tr align="center">
-<td title="Toggle Merge Award Overlay"><input type="checkbox" id="mergeOverlayValue" onclick="changeMergeOverlayValue()"></td>
+<td title="Toggle Merge Award Overlay"><input type="checkbox" id="mergeOverlayValue" onclick="changeMergeOverlayValue()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.FitMapToQRZ.label" align="center">Fit Map To QRZ</td>
+<td align="center">使地图适合用于QRZ</td>
</tr>
<tr align="center">
-<td title="Toggle Fit Map To QRZ"><input type="checkbox" id="fitQRZvalue" onclick="changeFitQRZvalue()"></td>
+<td title="切换使地图适合用于QRZ"><input type="checkbox" id="fitQRZvalue" onclick="changeFitQRZvalue()" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.CQHighlight.label" align="center">'CQ' Highlighting</td>
+<td align="center">'CQ' 突出显示</td>
</tr>
<tr align="center">
-<td title="Toggle 'CQ XX' Highlighting"><input type="checkbox" id="CqHiliteValue" onclick="changeCqHiliteValue(this);"></td>
+<td title="Toggle 'CQ XX' Highlighting"><input type="checkbox" id="CqHiliteValue" onclick="changeCqHiliteValue(this);" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.MissingGrid.label" align="center">QRZ Missing Grid<br>
-DXCC Fallback</td>
+<td align="center">QRZ缺少网格<br />
+DXCC退回</td>
</tr>
<tr align="center">
-<td title="If a station grid is not known use the DXCC"><input type="checkbox" id="qrzDxccFallbackValue" onclick="changeQrzDxccFallbackValue();"></td>
+<td title="如果一个电台缺少网格则使用DXCC"><input type="checkbox" id="qrzDxccFallbackValue" onclick="changeQrzDxccFallbackValue();" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="spotPathColorDiv">
<table align="center">
<tr align="center">
-<td data-i18n="settings.map.RXSpotPath.color.label" align="center"><b>PSK-Spot Color</b></td>
+<td align="center"><b>PSK-Spot颜色</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="-1" max="361" value="-1" class="slider" id="spotPathColorValue" oninput="spotPathChange();" onkeyup="redrawSpots();" onmouseup="redrawSpots();"></td>
+<td colspan="2"><input type="range" min="-1" max="361" value="-1" class="slider" id="spotPathColorValue" oninput="spotPathChange();" onkeyup="redrawSpots();" onmouseup="redrawSpots();" /></td>
</tr>
<tr align="center">
-<td data-i18n="settings.map.RXSpotPath.color.default" id="spotPathInfoTd">PSK-Reporter Palette</td>
+<td id="spotPathInfoTd">PSK-Reporter 调色板</td>
</tr>
</table>
</div>
<div class="mapItem" id="spotPathsDiv">
<table align="center">
<tr>
-<td data-i18n="settings.map.RXSpotPath.enable.label" title="Toggle flight paths to spots">PSK-Spot Paths</td>
+<td title="Toggle flight paths to spots">PSK-Spot 路径</td>
</tr>
<tr>
-<td title="Toggle flight paths to spots"><input type="checkbox" id="spotPathsValue" onclick="changeSpotValues();redrawSpots();"></td>
+<td title="切换前往spots的路径"><input type="checkbox" id="spotPathsValue" onclick="changeSpotValues();redrawSpots();" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem" id="spotPathWidthDiv">
<table align="center">
<tr>
-<td data-i18n="settings.map.RXSpotPath.width.label" align="center">PSK-Spot Path Width</td>
+<td align="center">PSK-Spot 路径宽度</td>
<td align="left" id="spotWidthTd">1.5</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0.0" max="5" value="1.5" step="0.05" class="slider" id="spotWidthValue" oninput="spotPathChange();" onkeyup="redrawSpots();" onmouseup="redrawSpots();"></td>
+<td colspan="2"><input type="range" min="0.0" max="5" value="1.5" step="0.05" class="slider" id="spotWidthValue" oninput="spotPathChange();" onkeyup="redrawSpots();" onmouseup="redrawSpots();" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.AutoNight.enable.label" title="Night Map">Auto Night Map</td>
+<td title="Night Map">自动夜间地图</td>
</tr>
<tr align="center">
-<td title="Toggle Automatic Night Map Switching"><input type="checkbox" id="nightMapEnable" onclick="changeNightMapEnable(this);"></td>
+<td title="切换自动夜间地图切换"><input type="checkbox" id="nightMapEnable" onclick="changeNightMapEnable(this);" /></td>
</tr>
<tr>
<td style="display: none" id="nightMapTd">
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.NightMap.select.label" title="Change map">Night Map</td>
+<td title="更改地图">夜间地图</td>
</tr>
<tr>
<td><select id="mapNightSelect" value="18" onchange="changeMapNightValues();"></select></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem" id="pathNightColorDiv">
<table align="center">
<tr align="center">
-<td data-i18n="settings.map.NightQSXPath.color.label" align="center"><b>Night QSX Path Color</b></td>
+<td align="center"><b>夜间QSX路径颜色</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0" max="361" value="0" class="slider" id="nightPathColorValue" oninput="changeMapNightValues()"></td>
+<td colspan="2"><input type="range" min="0" max="361" value="0" class="slider" id="nightPathColorValue" oninput="changeMapNightValues()" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="pathNightQrzColorDiv">
<table align="center">
<tr align="center">
-<td data-i18n="settings.map.NightQRZPath.color.label" align="center"><b>Night QRZ Path Color</b></td>
+<td align="center"><b>夜间QRZ路径颜色</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0" max="361" value="0" class="slider" id="nightQrzPathColorValue" oninput="changeMapNightValues()"></td>
+<td colspan="2"><input type="range" min="0" max="361" value="0" class="slider" id="nightQrzPathColorValue" oninput="changeMapNightValues()" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="spotNightPathColorDiv" style="display: none">
<table align="center">
<tr align="center">
-<td data-i18n="settings.map.NightRXSpot.color.label" align="center"><b>Night PSK-Spot Color</b></td>
+<td align="center"><b>夜间PSK-Spot颜色</b></td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="-1" max="361" value="-1" class="slider" id="spotNightPathColorValue" oninput="spotPathChange();" onkeyup="redrawSpots();" onmouseup="redrawSpots();"></td>
+<td colspan="2"><input type="range" min="-1" max="361" value="-1" class="slider" id="spotNightPathColorValue" oninput="spotPathChange();" onkeyup="redrawSpots();" onmouseup="redrawSpots();" /></td>
</tr>
<tr align="center">
-<td data-i18n="settings.map.NightRXSpot.color.default" id="spotNightPathInfoTd">PSK-Reporter Palette</td>
+<td id="spotNightPathInfoTd">PSK-Reporter调色板</td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.map.NightBrightness.label" align="center">Night Brightness</td>
+<td align="center">夜间亮度</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="0" max="1" value="1" step="0.01" class="slider" id="nightBrightnessValue" oninput="changeMapNightValues()"></td>
+<td colspan="2"><input type="range" min="0" max="1" value="1" step="0.01" class="slider" id="nightBrightnessValue" oninput="changeMapNightValues()" /></td>
</tr>
</table>
</div>
@@ -1439,37 +1419,37 @@
<div id="LoadAdifOnStartupDiv" style="left: 0; padding: 1px; overflow: auto; overflow-x: hidden; display: inline-block; height: 602px" class="roundBorder">
<table class="darkTable" align="center">
<tr>
-<th data-i18n="settings.logging.tableheader.source">Source/Sync</th>
-<th data-i18n="settings.logging.tableheader.menu">Menu?</th>
-<th data-i18n="settings.logging.tableheader.startup">Startup?</th>
-<th data-i18n="settings.logging.tableheader.log">Log?</th>
-<th data-i18n="settings.logging.tableheader.details">Details</th>
-<th data-i18n="settings.logging.tableheader.test">Test</th>
-<th data-i18n="settings.logging.tableheader.result">Result</th>
+<th>源/同步</th>
+<th>菜单?</th>
+<th>启动?</th>
+<th>日志?</th>
+<th>详细资讯</th>
+<th>测试</th>
+<th>结果</th>
</tr>
<tr>
-<td data-i18n="settings.logging.gridtracker.source">GridTracker</td>
+<td>GridTracker</td>
<td></td>
-<td><input type="checkbox" checked="false" id="loadGTCheckBox" onclick="adifStartupCheckBoxChanged(this);"></td>
-<td><input type="checkbox" checked="false" id="logGTqsoCheckBox" onclick="adifLogQsoCheckBoxChanged(this);"></td>
-<td data-i18n="settings.logging.gridtracker.details">GridTracker QSO Logfile</td>
+<td><input type="checkbox" checked="false" id="loadGTCheckBox" onclick="adifStartupCheckBoxChanged(this);" /></td>
+<td><input type="checkbox" checked="false" id="logGTqsoCheckBox" onclick="adifLogQsoCheckBoxChanged(this);" /></td>
+<td>GridTracker QSO日志文件</td>
<td></td>
<td></td>
</tr>
<tr>
-<td data-i18n="settings.logging.LocalFiles.source">Local File(s)</td>
-<td><input type="checkbox" checked="false" id="buttonAdifCheckBox" onclick="adifMenuCheckBoxChanged(this);"></td>
-<td><input type="checkbox" checked="false" id="loadAdifCheckBox" onclick="adifStartupCheckBoxChanged(this);"></td>
+<td>本地文件(s)</td>
+<td><input type="checkbox" checked="false" id="buttonAdifCheckBox" onclick="adifMenuCheckBoxChanged(this);" /></td>
+<td><input type="checkbox" checked="false" id="loadAdifCheckBox" onclick="adifStartupCheckBoxChanged(this);" /></td>
<td></td>
<td>
<div id="selectFileOnStartupDiv" style="display: none">
<table align="center" class="subtable">
<tr>
<td>
-<div data-i18n="settings.logging.LocalFiles.details.add" class="button" id="selectAdifButton">Add File</div>
+<div class="button" id="selectAdifButton">增加文件</div>
</td>
<td>
-<div data-i18n="settings.logging.LocalFiles.details.noFiles" id="startupLogFileDiv">No file(s) selected</div>
+<div id="startupLogFileDiv">未选择文件</div>
</td>
</tr>
</table>
@@ -1479,137 +1459,136 @@
<td></td>
</tr>
<tr id="pskTr">
-<td data-i18n="settings.logging.PSKReporter.source">PSK-Reporter</td>
-<td><input type="checkbox" checked="false" id="buttonPsk24CheckBox" onclick="adifMenuCheckBoxChanged(this);"></td>
-<td><input type="checkbox" checked="false" id="loadPsk24CheckBox" onclick="adifStartupCheckBoxChanged(this);"></td>
+<td>PSK-Reporter</td>
+<td><input type="checkbox" checked="false" id="buttonPsk24CheckBox" onclick="adifMenuCheckBoxChanged(this);" /></td>
+<td><input type="checkbox" checked="false" id="loadPsk24CheckBox" onclick="adifStartupCheckBoxChanged(this);" /></td>
<td></td>
<td>
-<div data-i18n="settings.logging.PSKReporter.details" id="pskDaysDiv">24 Hour History</div>
+<div id="pskDaysDiv">24小时历史纪录</div>
</td>
<td></td>
<td></td>
</tr>
<tr>
-<td data-i18n="settings.logging.QRZcom.source">QRZ.com</td>
-<td><input type="checkbox" checked="false" id="buttonQRZCheckBox" onclick="adifMenuCheckBoxChanged(this);"></td>
-<td><input type="checkbox" checked="false" id="loadQRZCheckBox" onclick="adifStartupCheckBoxChanged(this);"></td>
-<td><input type="checkbox" checked="false" id="logQRZqsoCheckBox" onclick="adifLogQsoCheckBoxChanged(this);"></td>
-<td><label data-i18n="settings.logging.QRZcom.details.apikey" for="qrzApiKey">API Key</label> <input id="qrzApiKey" type="password" class="inputTextValue" maxlength="19" size="21" oninput="ValidateQrzApi(this); adifTextValueChange(this);"></td>
+<td>QRZ.com</td>
+<td><input type="checkbox" checked="false" id="buttonQRZCheckBox" onclick="adifMenuCheckBoxChanged(this);" /></td>
+<td><input type="checkbox" checked="false" id="loadQRZCheckBox" onclick="adifStartupCheckBoxChanged(this);" /></td>
+<td><input type="checkbox" checked="false" id="logQRZqsoCheckBox" onclick="adifLogQsoCheckBoxChanged(this);" /></td>
+<td>API 密匙<input id="qrzApiKey" type="password" class="inputTextValue" maxlength="19" size="21" oninput="ValidateQrzApi(this); adifTextValueChange(this);" /></td>
<td>
-<div data-i18n="settings.logging.QRZcom.test.button" class="button" onclick="if ( ValidateQrzApi(qrzApiKey ) ) grabQrzComLog(true);">Test</div>
+<div class="button" onclick="if ( ValidateQrzApi(qrzApiKey ) ) grabQrzComLog(true);">测试</div>
</td>
<td id="qrzTestResult"></td>
</tr>
<tr>
-<td data-i18n="settings.logging.ClubLog.source">ClubLog</td>
-<td><input type="checkbox" checked="false" id="buttonClubCheckBox" onclick="adifMenuCheckBoxChanged(this);"></td>
-<td><input type="checkbox" checked="false" id="loadClubCheckBox" onclick="adifStartupCheckBoxChanged(this);"></td>
-<td><input type="checkbox" checked="false" id="logClubqsoCheckBox" onclick="adifLogQsoCheckBoxChanged(this);"></td>
-<td><label data-i18n="settings.logging.ClubLog.details.callsign" for="clubCall">Callsign</label> <input id="clubCall" type="text" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);"> <label data-i18n="settings.logging.ClubLog.details.password" for="clubPassword">Password</label> <input id="clubPassword" type="password" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);"><br>
-<label data-i18n="settings.logging.ClubLog.details.email" for="clubEmail">Email</label> <input id="clubEmail" type="text" class="inputTextValue" size="20" oninput="ValidateText(this); adifTextValueChange(this);"></td>
+<td>ClubLog</td>
+<td><input type="checkbox" checked="false" id="buttonClubCheckBox" onclick="adifMenuCheckBoxChanged(this);" /></td>
+<td><input type="checkbox" checked="false" id="loadClubCheckBox" onclick="adifStartupCheckBoxChanged(this);" /></td>
+<td><input type="checkbox" checked="false" id="logClubqsoCheckBox" onclick="adifLogQsoCheckBoxChanged(this);" /></td>
+<td>呼号<input id="clubCall" type="text" class="inputTextValue" size="8" oninput=" ValidateText(this); adifTextValueChange(this);" /> 密码<input id="clubPassword" type="password" class="inputTextValue" size="8" oninput=" ValidateText(this); adifTextValueChange(this);" /><br />
+电子邮件<input id="clubEmail" type="text" class="inputTextValue" size="20" oninput="ValidateText(this); adifTextValueChange(this);" /></td>
<td>
-<div data-i18n="settings.logging.ClubLog.test.button" class="button" onclick="if ( ValidateText(clubEmail) &amp;&amp; ValidateText(clubPassword) ) grabClubLog(true);">Test</div>
+<div class="button" onclick="if ( ValidateText(clubEmail) &amp;&amp; ValidateText(clubPassword) ) grabClubLog(true);">测试</div>
</td>
<td id="clubTestResult"></td>
</tr>
<tr>
-<td data-i18n="settings.logging.HRDLogNet.source">HRDLOG.net</td>
+<td>HRDLOG.net</td>
<td></td>
<td></td>
-<td><input type="checkbox" checked="false" id="logHRDLOGqsoCheckBox" onclick="adifLogQsoCheckBoxChanged(this);"></td>
-<td><label data-i18n="settings.logging.HRDLogNet.details.callsign" for="HRDLOGCallsign">Callsign</label> <input id="HRDLOGCallsign" type="text" class="inputTextValue" size="12" oninput="ValidateText(this); adifTextValueChange(this);"> <label data-i18n="settings.logging.HRDLogNet.details.upcode" for="HRDLOGUploadCode">Upload Code</label> <input id="HRDLOGUploadCode" type="password" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);"><br>
-<a href="http://www.hrdlog.net/docs/Tips.aspx#upcode" target="_blank" data-i18n="settings.logging.HRDLogNet.details.help.label" title="Click to learn how to get upload code">*** How to get upload code ***</a></td>
+<td><input type="checkbox" checked="false" id="logHRDLOGqsoCheckBox" onclick="adifLogQsoCheckBoxChanged(this);" /></td>
+<td>呼号<input id="HRDLOGCallsign" type="text" class="inputTextValue" size="12" oninput="ValidateText(this); adifTextValueChange(this);" /> 上传码<input id="HRDLOGUploadCode" type="password" class="inputTextValue" size="8" oninput=" ValidateText(this); adifTextValueChange(this);" /><br />
+<a href="http://www.hrdlog.net/docs/Tips.aspx#upcode" target="_blank" title="单击以了解如何获取上传码">*** 如何获取上传码 ***</a></td>
<td>
-<div data-i18n="settings.logging.HRDLogNet.test.button" class="button" onclick="if ( ValidateText(HRDLOGCallsign) &amp;&amp; ValidateText(HRDLOGUploadCode) ) hrdCredentialTest(true);">Test</div>
+<div class="button" onclick="if ( ValidateText(HRDLOGCallsign) &amp;&amp; ValidateText(HRDLOGUploadCode) ) hrdCredentialTest(true);">测试</div>
</td>
<td id="HRDLogTestResult"></td>
</tr>
<tr>
-<td data-i18n="settings.logging.CloudLog.source">Cloudlog</td>
+<td>Cloudlog</td>
<td></td>
<td></td>
-<td><input type="checkbox" checked="false" id="logCloudlogQSOCheckBox" onclick="adifLogQsoCheckBoxChanged(this);"></td>
-<td><label data-i18n="settings.logging.CloudLog.details.URL" for="CloudlogURL">URL</label> <input id="CloudlogURL" type="text" class="inputTextValue" size="35" oninput="ValidateText(this); adifTextValueChange(this);"><br>
-<label data-i18n="settings.logging.CloudLog.details.API" for="CloudlogAPI">API Key</label> <input id="CloudlogAPI" type="password" class="inputTextValue" size="12" oninput="ValidateText(this); adifTextValueChange(this);"><br>
-Station Profile ID<input id="CloudlogStationProfileID" type="text" class="inputTextValue" size="12" oninput="ValidateText(this); adifTextValueChange(this);"></td>
+<td><input type="checkbox" checked="false" id="logCloudlogQSOCheckBox" onclick="adifLogQsoCheckBoxChanged(this);" /></td>
+<td>URL<input id="CloudlogURL" type="text" class="inputTextValue" size="35" oninput="ValidateText(this); adifTextValueChange(this);" /><br />
+API 密钥<input id="CloudlogAPI" type="text" class="inputTextValue" size="12" oninput=" ValidateText(this); adifTextValueChange(this);" /></td>
<td>
-<div data-i18n="settings.logging.CloudLog.test.button" class="button" onclick="if ( ValidateText(CloudlogURL) &amp;&amp; ValidateText(CloudlogAPI) ) ClublogTest(true);">Test</div>
+<div class="button" onclick="if ( ValidateText(CloudlogURL) &amp;&amp; ValidateText(CloudlogAPI) ) ClublogTest(true);">测试</div>
</td>
<td id="CloudlogTestResult"></td>
</tr>
<tr>
-<td data-i18n="settings.logging.eQSLcc.source">eQSL.cc</td>
+<td>eQSL.cc</td>
<td></td>
<td></td>
-<td><input type="checkbox" checked="false" id="logeQSLQSOCheckBox" onclick="adifLogQsoCheckBoxChanged(this);"></td>
-<td><label data-i18n="settings.logging.eQSLcc.details.user" for="eQSLUser">User</label> <input id="eQSLUser" type="text" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);"> <label data-i18n="settings.logging.eQSLcc.details.password" for="eQSLPassword">Password</label> <input id="eQSLPassword" type="password" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);"><br>
-<label data-i18n="settings.logging.eQSLcc.details.QTHnick" for="nicknameeQSLCheckBox">QTH Nickname</label> <input type="checkbox" checked="false" id="nicknameeQSLCheckBox" onclick="adifNicknameCheckBoxChanged(this);"> <input id="eQSLNickname" style="display: none" type="text" class="inputTextValue" size="12" oninput="ValidateText(this); adifTextValueChange(this);"></td>
+<td><input type="checkbox" checked="false" id="logeQSLQSOCheckBox" onclick="adifLogQsoCheckBoxChanged(this);" /></td>
+<td>用户名<input id="eQSLUser" type="text" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);" /> 密码<input id="eQSLPassword" type="password" class="inputTextValue" size="8" oninput=" ValidateText(this); adifTextValueChange(this);" /><br />
+QTH 昵称<input type="checkbox" checked="false" id="nicknameeQSLCheckBox" onclick="adifNicknameCheckBoxChanged(this);" /> <input id="eQSLNickname" style="display: none" type="text" class="inputTextValue" size="12" oninput=" ValidateText(this); adifTextValueChange(this);" /></td>
<td>
-<div data-i18n="settings.logging.eQSLcc.test.button" class="button" onclick="if ( ValidateText(eQSLUser) &amp;&amp; ValidateText(eQSLPassword) ) eQSLTest(true);">Test</div>
+<div class="button" onclick="if ( ValidateText(eQSLUser) &amp;&amp; ValidateText(eQSLPassword) ) eQSLTest(true);">测试</div>
</td>
<td id="eQSLTestResult"></td>
</tr>
<tr>
-<td data-i18n="settings.logging.LoTW.source">LotW</td>
-<td><input type="checkbox" checked="false" id="buttonLOTWCheckBox" onclick="adifMenuCheckBoxChanged(this);"></td>
-<td><input type="checkbox" checked="false" id="loadLOTWCheckBox" onclick="adifStartupCheckBoxChanged(this);"></td>
-<td><input type="checkbox" checked="false" id="logLOTWqsoCheckBox" onclick="adifLogQsoCheckBoxChanged(this);"></td>
-<td><label data-i18n="settings.logging.LoTW.details.login" for="lotwLogin">Login</label> <input id="lotwLogin" type="text" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);"> <label data-i18n="settings.logging.LoTW.details.password" for="lotwPassword">Password</label> <input id="lotwPassword" type="password" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);"><br>
+<td>LotW</td>
+<td><input type="checkbox" checked="false" id="buttonLOTWCheckBox" onclick="adifMenuCheckBoxChanged(this);" /></td>
+<td><input type="checkbox" checked="false" id="loadLOTWCheckBox" onclick="adifStartupCheckBoxChanged(this);" /></td>
+<td><input type="checkbox" checked="false" id="logLOTWqsoCheckBox" onclick="adifLogQsoCheckBoxChanged(this);" /></td>
+<td>登入名称<input id="lotwLogin" type="text" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);" /> 密码<input id="lotwPassword" type="password" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);" /><br />
<div id="lotwUpload" style="display: none">
-<div data-i18n="settings.logging.LoTW.details.TQSLPath" class="button" id="selectTQSLButton">TQSL Path</div>
-<br>
-<label data-i18n="settings.logging.LoTW.details.TQSLPass" for="lotwTrusted">TQSL Password</label> <input id="lotwTrusted" type="password" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);"><br>
-<label data-i18n="settings.logging.LoTW.details.station" for="lotwStation">Station Name</label> <select id="lotwStation" class="inputTextValue" onchange="ValidateText(this); adifTextValueChange(this);"></select></div>
+<div class="button" id="selectTQSLButton">TQSL 路径</div>
+<br />
+TQSL 密码<input id="lotwTrusted" type="password" class="inputTextValue" size="8" oninput="ValidateText(this); adifTextValueChange(this);" /><br />
+电台名称<select id="lotwStation" class="inputTextValue" onchange="ValidateText(this); adifTextValueChange(this);"></select></div>
</td>
<td>
-<div data-i18n="settings.logging.LoTW.test.downloadButton" class="button" onclick="if ( ValidateText(lotwLogin) &amp;&amp; ValidateText(lotwPassword) ) grabLOtWLog(true);">Test Download</div>
-<br>
-<div data-i18n="settings.logging.LoTW.test.TQSLButton" id="trustedTestButton" style="margin-top: 25px" class="button" onclick="testTrustedQSL(true);">Test TQSL</div>
+<div class="button" onclick="if ( ValidateText(lotwLogin) &amp;&amp; ValidateText(lotwPassword) ) grabLOtWLog(true);">测试下载</div>
+<br />
+<div id="trustedTestButton" style="margin-top: 25px" class="button" onclick="testTrustedQSL(true);">测试 TQSL</div>
</td>
<td id="lotwTestResult"></td>
</tr>
<tr>
-<td data-i18n="settings.logging.N1MM.source">N1MM Logger+</td>
+<td>N1MM Logger+</td>
<td></td>
<td></td>
-<td><input type="checkbox" checked="false" class="inputTextValue" id="buttonN1MMCheckBox" onclick="ValidateIPaddress(N1MMIpInput,this); ValidatePort(N1MMPortInput,this, null ); n1mmLoggerChanged();"></td>
-<td><label data-i18n="settings.logging.N1MM.details.IP" for="N1MMIpInput">IP</label> <input id="N1MMIpInput" type="text" class="inputTextValue" maxlength="15" size="15" onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttonN1MMCheckBox); n1mmLoggerChanged();"> <label data-i18n="settings.logging.N1MM.details.Port" for="N1MMPortInput">Port</label> <input id="N1MMPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttonN1MMCheckBox, null ); n1mmLoggerChanged();"></td>
+<td><input type="checkbox" checked="false" class="inputTextValue" id="buttonN1MMCheckBox" onclick=" ValidateIPaddress(N1MMIpInput,this); ValidatePort(N1MMPortInput,this, null ); n1mmLoggerChanged();" /></td>
+<td>IP地址<input id="N1MMIpInput" type="text" class="inputTextValue" maxlength="15" size="15" onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttonN1MMCheckBox); n1mmLoggerChanged();" /> 端口<input id="N1MMPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttonN1MMCheckBox, null ); n1mmLoggerChanged();" /></td>
<td></td>
<td></td>
</tr>
<tr>
-<td data-i18n="settings.logging.Log4OM.source">Log4OM</td>
+<td>Log4OM</td>
<td></td>
<td></td>
-<td><input type="checkbox" checked="false" class="inputTextValue" id="buttonLog4OMCheckBox" onclick="ValidateIPaddress(log4OMIpInput,this); ValidatePort(log4OMPortInput,this, null ); log4OMLoggerChanged();"></td>
-<td><label data-i18n="settings.logging.Log4OM.details.IP" for="log4OMIpInput">IP</label> <input id="log4OMIpInput" type="text" class="inputTextValue" maxlength="15" size="15" onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttonLog4OMCheckBox); log4OMLoggerChanged();"> <label data-i18n="settings.logging.Log4OM.details.Port" for="log4OMPortInput">Port</label> <input id="log4OMPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttonLog4OMCheckBox, null ); log4OMLoggerChanged();"></td>
+<td><input type="checkbox" checked="false" class="inputTextValue" id="buttonLog4OMCheckBox" onclick=" ValidateIPaddress(log4OMIpInput,this); ValidatePort(log4OMPortInput,this, null ); log4OMLoggerChanged();" /></td>
+<td>IP地址<input id="log4OMIpInput" type="text" class="inputTextValue" maxlength="15" size="15" onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttonLog4OMCheckBox); log4OMLoggerChanged();" /> 端口<input id="log4OMPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttonLog4OMCheckBox, null ); log4OMLoggerChanged();" /></td>
<td></td>
<td></td>
</tr>
<tr>
-<td data-i18n="settings.logging.N3FJP.source">N3FJP Loggers</td>
+<td>N3FJP 日志</td>
<td></td>
<td></td>
-<td><input type="checkbox" checked="false" class="inputTextValue" id="buttonacLogCheckBox" onclick="ValidateIPaddress(acLogIpInput,this); ValidatePort(acLogPortInput,this, null ); acLogLoggerChanged();"></td>
-<td><label data-i18n="settings.logging.N3FJP.details.IP" for="acLogIpInput">IP</label> <input id="acLogIpInput" type="text" class="inputTextValue" maxlength="15" size="15" onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttonacLogCheckBox); acLogLoggerChanged();"> <label data-i18n="settings.logging.N3FJP.details.Port" for="acLogPortInput">Port</label> <input id="acLogPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttonacLogCheckBox, null ); acLogLoggerChanged();"></td>
+<td><input type="checkbox" checked="false" class="inputTextValue" id="buttonacLogCheckBox" onclick=" ValidateIPaddress(acLogIpInput,this); ValidatePort(acLogPortInput,this, null ); acLogLoggerChanged();" /></td>
+<td>IP地址<input id="acLogIpInput" type="text" class="inputTextValue" maxlength="15" size="15" onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttonacLogCheckBox); acLogLoggerChanged();" /> 端口<input id="acLogPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttonacLogCheckBox, null ); acLogLoggerChanged();" /></td>
<td></td>
<td></td>
</tr>
<tr>
-<td data-i18n="settings.logging.DXKeeper.source">DXKeeper</td>
+<td>DXKeeper</td>
<td></td>
<td></td>
-<td><input type="checkbox" checked="false" class="inputTextValue" id="buttondxkLogCheckBox" onclick="ValidateIPaddress(dxkLogIpInput,this); ValidatePort(dxkLogPortInput,this, null ); dxkLogLoggerChanged();"></td>
-<td><label data-i18n="settings.logging.DXKeeper.details.IP" for="dxkLogIpInput">IP</label> <input id="dxkLogIpInput" type="text" class="inputTextValue" maxlength="15" size="15" onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttondxkLogCheckBox); dxkLogLoggerChanged();"> <label data-i18n="settings.logging.DXKeeper.details.Port" for="dxkLogPortInput">Port</label> <input id="dxkLogPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttondxkLogCheckBox, null ); dxkLogLoggerChanged();"></td>
+<td><input type="checkbox" checked="false" class="inputTextValue" id="buttondxkLogCheckBox" onclick=" ValidateIPaddress(dxkLogIpInput,this); ValidatePort(dxkLogPortInput,this, null ); dxkLogLoggerChanged();" /></td>
+<td>IP地址<input id="dxkLogIpInput" type="text" class="inputTextValue" maxlength="15" size="15" onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttondxkLogCheckBox); dxkLogLoggerChanged();" /> 端口<input id="dxkLogPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttondxkLogCheckBox, null ); dxkLogLoggerChanged();" /></td>
<td></td>
<td></td>
</tr>
<tr>
-<td data-i18n="settings.logging.HRDLogbook.source">HRD Logbook</td>
+<td>HRD Logbook</td>
<td></td>
<td></td>
-<td><input type="checkbox" checked="false" class="inputTextValue" id="buttonHrdLogbookCheckBox" onclick="ValidateIPaddress(hrdLogbookIpInput,this); ValidatePort(hrdLogbookPortInput,this, null ); hrdLogbookLoggerChanged();"></td>
-<td><label data-i18n="settings.logging.HRDLogbook.details.IP" for="hrdLogbookIpInput">IP</label> <input id="hrdLogbookIpInput" type="text" class="inputTextValue" maxlength="15" size="15" onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttonHrdLogbookCheckBox); hrdLogbookLoggerChanged();"> <label data-i18n="settings.logging.HRDLogbook.details.Port" for="hrdLogbookPortInput">Port</label> <input id="hrdLogbookPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttonHrdLogbookCheckBox, null ); hrdLogbookLoggerChanged();"></td>
+<td><input type="checkbox" checked="false" class="inputTextValue" id="buttonHrdLogbookCheckBox" onclick=" ValidateIPaddress(hrdLogbookIpInput,this); ValidatePort(hrdLogbookPortInput,this, null ); hrdLogbookLoggerChanged();" /></td>
+<td>IP地址<input id="hrdLogbookIpInput" type="text" class="inputTextValue" maxlength="15" size="15" onkeypress='return validIpKeys(event.charCode);' oninput="ValidateIPaddress(this,buttonHrdLogbookCheckBox); hrdLogbookLoggerChanged();" /> 端口<input id="hrdLogbookPortInput" type="text" class="inputTextValue" maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);' oninput="ValidatePort(this,buttonHrdLogbookCheckBox, null ); hrdLogbookLoggerChanged();" /></td>
<td></td>
<td></td>
</tr>
@@ -1620,78 +1599,78 @@
<div class="mapItem">
<table align="center">
<tr align="center">
-<td data-i18n="settings.callroster.AlwaysOnTop.label" align="center">Window Always On Top</td>
+<td align="center">窗口总是在最上层</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="checkbox" id="rosterAlwaysOnTop" onchange="changeRosterTop(this);"></td>
+<td colspan="2"><input type="checkbox" id="rosterAlwaysOnTop" onchange="changeRosterTop(this);" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr align="center">
-<td data-i18n="settings.callroster.MaxAge.label" align="center">Call Roster Max Age</td>
+<td align="center">呼叫列表最长时间</td>
</tr>
<tr align="center">
<td align="center" id="rosterTimeTd">2m 0s</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="range" min="5" max="300" value="120" step="15" class="slider" id="rosterTime" oninput="changeRosterTime()"></td>
+<td colspan="2"><input type="range" min="15" max="300" value="120" step="15" class="slider" id="rosterTime" oninput="changeRosterTime()" /></td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr align="center">
-<td align="center">Clear Call Roster on Band change</td>
+<td align="center">更换波段时清空呼叫列表</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="checkbox" id="clearRosterOnBandChange" onchange="clearRosterOnBandChangeValueChanged(this);"></td>
+<td colspan="2"><input type="checkbox" id="clearRosterOnBandChange" onchange="clearRosterOnBandChangeValueChanged(this);" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem" id="haltTXDiv" style="display: none">
<table align="center">
<tr align="center">
-<td data-i18n="settings.callroster.MultiRig.label" align="center">On QSO Reply</td>
+<td align="center">当QSO回答</td>
</tr>
<tr align="center">
-<td data-i18n="settings.callroster.MultiRig.HaltTx.label" align="center">Halt TX On All Other Instances</td>
+<td align="center">在所有其他情况下停止发射</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="checkbox" id="haltAllOnTxValue" onchange="changeHaltOntTxValue(this);"></td>
+<td colspan="2"><input type="checkbox" id="haltAllOnTxValue" onchange="changeHaltOntTxValue(this);" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="multiRigCRDiv" style="display: none">
<table align="center">
<tr align="center">
-<td data-i18n="settings.callroster.MultiRig.label" align="center">On QSO Reply</td>
+<td align="center">当QSO回答</td>
</tr>
<tr align="center">
-<td data-i18n="settings.callroster.MultiRig.SwitchView.label" align="center">Switch View To Transmitting Instance</td>
+<td align="center">将显示切换到传输实例</td>
</tr>
<tr align="center">
-<td colspan="2"><input type="checkbox" id="focusRigValue" onchange="changeFocusRigValue(this);"></td>
+<td colspan="2"><input type="checkbox" id="focusRigValue" onchange="changeFocusRigValue(this);" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem">
-<table align="center" title="Alert when new 'Wanted Row(s)' appear in the Call Roster">
+<table align="center" title="在呼叫列表出现新 '渴望(s)' 报警">
<tr>
-<td data-i18n="settings.callroster.AudioAlert.label" colspan="2">Audio Alert On <b>New Wanted</b></td>
+<td colspan="2">开启声音警报 <b>新渴望</b></td>
</tr>
<tr>
-<td colspan="2"><input type="checkbox" id="huntRoster" onchange="wantedChanged(this);"></td>
+<td colspan="2"><input type="checkbox" id="huntRoster" onchange="wantedChanged(this);" /></td>
</tr>
<tr>
<td><select id="huntRosterNotify" onchange="wantedChanged(this);">
-<option data-i18n="settings.callroster.AudioAlert.TextToSpeech" value="1">Text-to-Speech</option>
-<option data-i18n="settings.callroster.AudioAlert.MediaFile" value="0">Media File</option>
+<option value="1">文本朗读</option>
+<option value="0">媒体文件</option>
</select></td>
-<td><input id="huntRosterNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);"> <select id="huntRosterNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
+<td><input id="huntRosterNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);" /> <select id="huntRosterNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
</tr>
</table>
</div>
@@ -1700,136 +1679,136 @@
<div id="alertMatrixDiv" style="display: inline-block">
<table class="roundBorder" align="left" style="border: 1px solid #066; margin: auto; padding: 1px">
<tr>
-<th data-i18n="settings.alerts.AudioAlert.label" colspan="5">Audio Alerts</th>
+<th colspan="5">声音警报</th>
</tr>
-<tr colspan="5" title="Log file reference">
-<td data-i18n="settings.alerts.AudioAlert.Reference.label" align="right" colspan="3">Reference</td>
+<tr colspan="5" title="日志文件参考">
+<td align="right" colspan="3">参考</td>
<td align="left" colspan="2"><select id="referenceNeed" onchange="exceptionValuesChanged();">
-<option data-i18n="settings.alerts.AudioAlert.Reference.currentBandAndMode" value="0">Current Band and Mode</option>
-<option data-i18n="settings.alerts.AudioAlert.Reference.currentBandAnyMode" value="1">Current Band, Any Mode</option>
-<option data-i18n="settings.alerts.AudioAlert.Reference.currentBandAnyDigi" value="2">Current Band, Any Digi Mode</option>
-<option data-i18n="settings.alerts.AudioAlert.Reference.currentModeAnyBand" value="3">Current Mode, Any Band</option>
-<option data-i18n="settings.alerts.AudioAlert.Reference.anyBandAnyMode" value="4">Any Band, Any Mode</option>
-<option data-i18n="settings.alerts.AudioAlert.Reference.anyBandAnyDigi" value="5">Any Band, Any Digi Mode</option>
+<option value="0">当前波段及模式</option>
+<option value="1">当前波段, 任何模式</option>
+<option value="2">当前波段, 任何数据模式</option>
+<option value="3">当前模式, 任何波段</option>
+<option value="4">任何波段, 任何模式</option>
+<option value="5">任何波段, 任何数据模式</option>
</select></td>
</tr>
<tr>
<td></td>
-<td data-i18n="settings.alerts.AudioAlert.Header.Enable">Enable</td>
-<td data-i18n="settings.alerts.AudioAlert.Header.Status">Status</td>
-<td data-i18n="settings.alerts.AudioAlert.Header.Notify">Notify</td>
-<td data-i18n="settings.alerts.AudioAlert.Header.Value">Value</td>
+<td>启用</td>
+<td>状态</td>
+<td>通知</td>
+<td>数值</td>
</tr>
<tr>
-<th data-i18n="settings.alerts.AudioAlert.Types.Callsign">Callsign</th>
-<td><input type="checkbox" id="huntCallsign" onchange="wantedChanged(this);"></td>
-<td><select title="Used by All Classic Alerts" id="huntCallsignNeed" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Status.worked" value="worked">New</option>
-<option data-i18n="settings.alerts.AudioAlert.Status.confirmed" value="confirmed">New+Unconf</option>
+<th>呼号</th>
+<td><input type="checkbox" id="huntCallsign" onchange="wantedChanged(this);" /></td>
+<td><select title="所有经典警报都使用" id="huntCallsignNeed" onchange="wantedChanged(this);" name="D14">
+<option value="worked">新的</option>
+<option value="confirmed">新的+未确认的</option>
</select></td>
<td><select id="huntCallsignNotify" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Notify.TextToSpeech" value="1">Text-to-Speech</option>
-<option data-i18n="settings.alerts.AudioAlert.Notify.MediaFile" value="0">Media File</option>
+<option value="1">文本朗读</option>
+<option value="0">媒体文件</option>
</select></td>
-<td><input id="huntCallsignNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value); }" oninput="ValidateText(this);wantedChanged(this);"> <select id="huntCallsignNotifyMedia" onchange="wantedChanged(this);"></select></td>
+<td><input id="huntCallsignNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value); }" oninput="ValidateText(this);wantedChanged(this);" /> <select id="huntCallsignNotifyMedia" onchange="wantedChanged(this);"></select></td>
</tr>
<tr>
-<th data-i18n="settings.alerts.AudioAlert.Types.Grid">Grid</th>
-<td><input type="checkbox" id="huntGrid" onchange="wantedChanged(this);"></td>
+<th>网格</th>
+<td><input type="checkbox" id="huntGrid" onchange="wantedChanged(this);" /></td>
<td><select id="huntGridNeed" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Status.worked" value="worked">New</option>
-<option data-i18n="settings.alerts.AudioAlert.Status.confirmed" value="confirmed">New+Unconf</option>
+<option value="worked">新的</option>
+<option value="confirmed">新的+未确认的</option>
</select></td>
<td><select id="huntGridNotify" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Notify.TextToSpeech" value="1">Text-to-Speech</option>
-<option data-i18n="settings.alerts.AudioAlert.Notify.MediaFile" value="0">Media File</option>
+<option value="1">文本朗读</option>
+<option value="0">媒体文件</option>
</select></td>
-<td><input id="huntGridNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);"> <select id="huntGridNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
+<td><input id="huntGridNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);" /> <select id="huntGridNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
</tr>
<tr>
-<th data-i18n="settings.alerts.AudioAlert.Types.DXCC">DXCC</th>
-<td><input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);"></td>
+<th>DXCC</th>
+<td><input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);" /></td>
<td><select id="huntDXCCNeed" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Status.worked" value="worked">New</option>
-<option data-i18n="settings.alerts.AudioAlert.Status.confirmed" value="confirmed">New+Unconf</option>
+<option value="worked">新的</option>
+<option value="confirmed">新的+未确认的</option>
</select></td>
<td><select id="huntDXCCNotify" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Notify.TextToSpeech" value="1">Text-to-Speech</option>
-<option data-i18n="settings.alerts.AudioAlert.Notify.MediaFile" value="0">Media File</option>
+<option value="1">文本朗读</option>
+<option value="0">媒体文件</option>
</select></td>
-<td><input id="huntDXCCNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);"> <select id="huntDXCCNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
+<td><input id="huntDXCCNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);" /> <select id="huntDXCCNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
</tr>
<tr>
-<th data-i18n="settings.alerts.AudioAlert.Types.CQZone">CQ Zone</th>
-<td><input type="checkbox" id="huntCQz" onchange="wantedChanged(this);"></td>
-<td><select id="huntCQzNeed" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Status.worked" value="worked">New</option>
-<option data-i18n="settings.alerts.AudioAlert.Status.confirmed" value="confirmed">New+Unconf</option>
+<th>CQ Zone</th>
+<td><input type="checkbox" id="huntCQz" onchange="wantedChanged(this);" /></td>
+<td><select id="huntCQzNeed" onchange="wantedChanged(this);" name="D23">
+<option value="worked">新的</option>
+<option value="confirmed">新的+未确认的</option>
</select></td>
-<td><select id="huntCQzNotify" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Notify.TextToSpeech" value="1">Text-to-Speech</option>
-<option data-i18n="settings.alerts.AudioAlert.Notify.MediaFile" value="0">Media File</option>
+<td><select id="huntCQzNotify" onchange="wantedChanged(this);" name="D24">
+<option value="1">文本朗读</option>
+<option value="0">媒体文件</option>
</select></td>
-<td><input id="huntCQzNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);"> <select id="huntCQzNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
+<td><input id="huntCQzNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);" /> <select id="huntCQzNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
</tr>
<tr>
-<th data-i18n="settings.alerts.AudioAlert.Types.ITUZone">ITU Zone</th>
-<td><input type="checkbox" id="huntITUz" onchange="wantedChanged(this);"></td>
+<th>ITU 分区</th>
+<td><input type="checkbox" id="huntITUz" onchange="wantedChanged(this);" /></td>
<td><select id="huntITUzNeed" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Status.worked" value="worked">New</option>
-<option data-i18n="settings.alerts.AudioAlert.Status.confirmed" value="confirmed">New+Unconf</option>
+<option value="worked">新的</option>
+<option value="confirmed">新的+未确认的</option>
</select></td>
<td><select id="huntITUzNotify" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Notify.TextToSpeech" value="1">Text-to-Speech</option>
-<option data-i18n="settings.alerts.AudioAlert.Notify.MediaFile" value="0">Media File</option>
+<option value="1">文本朗读</option>
+<option value="0">媒体文件</option>
</select></td>
-<td><input id="huntITUzNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);"> <select id="huntITUzNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
+<td><input id="huntITUzNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);" /> <select id="huntITUzNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
</tr>
<tr>
-<th data-i18n="settings.alerts.AudioAlert.Types.USStates">US States</th>
-<td><input type="checkbox" id="huntStates" onchange="wantedChanged(this);"></td>
+<th>美国各州</th>
+<td><input type="checkbox" id="huntStates" onchange="wantedChanged(this);" /></td>
<td><select id="huntStatesNeed" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Status.worked" value="worked">New</option>
-<option data-i18n="settings.alerts.AudioAlert.Status.confirmed" value="confirmed">New+Unconf</option>
+<option value="worked">新的</option>
+<option value="confirmed">新的+未确认的</option>
</select></td>
<td><select id="huntStatesNotify" onchange="wantedChanged(this);">
-<option data-i18n="settings.alerts.AudioAlert.Notify.TextToSpeech" value="1">Text-to-Speech</option>
-<option data-i18n="settings.alerts.AudioAlert.Notify.MediaFile" value="0">Media File</option>
+<option value="1">文本朗读</option>
+<option value="0">媒体文件</option>
</select></td>
-<td><input id="huntStatesNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);"> <select id="huntStatesNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
+<td><input id="huntStatesNotifyWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}" oninput="ValidateText(this);wantedChanged(this);" /> <select id="huntStatesNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select></td>
</tr>
</table>
<table class="roundBorder" align="left" style="border: 1px solid #622; margin: auto; padding: 1px; text-align: left">
<tr>
-<th data-i18n="settings.alerts.AudioAlert.Exceptions.label" colspan="6" align="center">Exceptions</th>
+<th colspan="6" align="center">例外情况</th>
</tr>
<tr>
<td>
<table>
<tr>
-<td colspan="2"><input type="checkbox" id="cqOnly" onchange="exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.CQOnly" for="cqOnly">CQ Only</label></td>
+<td colspan="2"><input type="checkbox" id="cqOnly" onchange="exceptionValuesChanged();" />仅限CQ</td>
</tr>
<tr>
-<td colspan="2"><input type="checkbox" id="wantGrid" onchange="exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.ReqGrid" for="wantGrid">Require Grid</label></td>
+<td colspan="2"><input type="checkbox" id="wantGrid" onchange="exceptionValuesChanged();" />需要网格</td>
</tr>
<tr>
-<td><input type="checkbox" id="wantMinDB" onchange="exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.MinDB" for="wantMinDB">Min DB</label></td>
-<td><input type="range" min="-25" max="0" step="1" class="slider" id="minDb" oninput="exceptionValuesChanged();" style="width: 75px"></td>
+<td><input type="checkbox" id="wantMinDB" onchange="exceptionValuesChanged();" />最小分贝</td>
+<td><input type="range" min="-25" max="0" step="1" class="slider" id="minDb" oninput="exceptionValuesChanged();" style="width: 75px" /></td>
<td align="center" id="minDbView" class="roundBorderValue">-24</td>
</tr>
<tr>
-<td><input type="checkbox" id="wantMaxDT" onchange="exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.MaxDT" for="wantMaxDT">Max DT</label></td>
-<td><input type="range" min="0.1" max="2" step="0.1" class="slider" id="maxDT" oninput="exceptionValuesChanged();" style="width: 75px"></td>
+<td><input type="checkbox" id="wantMaxDT" onchange="exceptionValuesChanged();" />最大时差</td>
+<td><input type="range" min="0.1" max="2" step="0.1" class="slider" id="maxDT" oninput="exceptionValuesChanged();" style="width: 75px" /></td>
<td align="center" id="maxDTView" class="roundBorderValue">.5</td>
</tr>
<tr>
-<td><input type="checkbox" id="wantMinFreq" onchange="exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.MinFreq" for="wantMinFreq">Min Freq</label></td>
-<td><input type="range" min="0" max="2500" step="10" class="slider" id="minFreq" oninput="exceptionValuesChanged();" style="width: 75px"></td>
+<td><input type="checkbox" id="wantMinFreq" onchange="exceptionValuesChanged();" />最低频率</td>
+<td><input type="range" min="0" max="2500" step="10" class="slider" id="minFreq" oninput="exceptionValuesChanged();" style="width: 75px" /></td>
<td align="center" id="minFreqView" class="roundBorderValue">400</td>
</tr>
<tr>
-<td><input type="checkbox" id="wantMaxFreq" onchange="exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.MaxFreq" for="wantMaxFreq">Max Freq</label></td>
-<td><input type="range" min="500" max="3000" step="10" class="slider" id="maxFreq" oninput="exceptionValuesChanged();" style="width: 75px"></td>
+<td><input type="checkbox" id="wantMaxFreq" onchange="exceptionValuesChanged();" />最高频率</td>
+<td><input type="range" min="500" max="3000" step="10" class="slider" id="maxFreq" oninput="exceptionValuesChanged();" style="width: 75px" /></td>
<td align="center" id="maxFreqView" class="roundBorderValue">3000</td>
</tr>
</table>
@@ -1837,25 +1816,25 @@
<td>
<table>
<tr>
-<td colspan="2"><input type="checkbox" id="noMyDxcc" onchange="onlyMyDxcc.checked=false; exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.NotMyDXCC" for="noMyDxcc">Not My DXCC</label></td>
+<td colspan="2"><input type="checkbox" id="noMyDxcc" onchange="onlyMyDxcc.checked=false; exceptionValuesChanged();" />不是我的DXCC</td>
</tr>
<tr>
-<td colspan="2"><input type="checkbox" id="onlyMyDxcc" onchange="noMyDxcc.checked=false; exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.OnlyMyDXCC" for="onlyMyDxcc">Only My DXCC</label></td>
+<td colspan="2"><input type="checkbox" id="onlyMyDxcc" onchange="noMyDxcc.checked=false; exceptionValuesChanged();" />仅限我的DXCC</td>
</tr>
<tr>
-<td colspan="2"><input type="checkbox" id="noRoundUp" onchange="onlyRoundUp.checked=false; exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.NoRoundUp" for="noRoundUp">No Round-Up</label></td>
+<td colspan="2"><input type="checkbox" id="noRoundUp" onchange="onlyRoundUp.checked=false; exceptionValuesChanged();" />不要摘要</td>
</tr>
<tr>
-<td colspan="2"><input type="checkbox" id="onlyRoundUp" onchange="noRoundUp.checked=false; exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.OnlyRoundUp" for="onlyRoundUp">Only Round-Up</label></td>
+<td colspan="2"><input type="checkbox" id="onlyRoundUp" onchange="noRoundUp.checked=false; exceptionValuesChanged();" />仅限摘要</td>
</tr>
<tr>
<td colspan="2">
-<div id="usesLoTWDiv" style="display: none"><input type="checkbox" id="usesLoTW" onchange="exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.UsesLoTW" for="usesLoTW">Uses LoTW</label></div>
+<div id="usesLoTWDiv" style="display: none"><input type="checkbox" id="usesLoTW" onchange="exceptionValuesChanged();" />使用LoTW</div>
</td>
</tr>
<tr>
<td colspan="2">
-<div id="useseQSLDiv" style="display: none"><input type="checkbox" id="useseQSL" onchange="exceptionValuesChanged();"> <label data-i18n="settings.alerts.AudioAlert.Exceptions.UsesEQSL" for="useseQSL">Uses eQSL</label></div>
+<div id="useseQSLDiv" style="display: none"><input type="checkbox" id="useseQSL" onchange="exceptionValuesChanged();" />使用eQSL</div>
</td>
</tr>
</table>
@@ -1863,107 +1842,107 @@
</tr>
</table>
</div>
-<br>
+<br />
<div id="alertFormDiv" style="display: inline-block">
<table align="center" class="roundBorder" style="border: 3px groove darkred; margin: 0 auto">
<tr>
-<th data-i18n="settings.alerts.CustomAlerts.label" colspan="8">Custom Alerts</th>
+<th colspan="8">自定义警报</th>
</tr>
<tr>
-<td data-i18n="settings.alerts.CustomAlerts.new.type.label">Type</td>
-<td data-i18n="settings.alerts.CustomAlerts.new.value.label">Value</td>
-<td data-i18n="settings.alerts.CustomAlerts.new.notify.label">Notify</td>
+<td>类型</td>
+<td>数值</td>
+<td>通知</td>
<td></td>
-<td data-i18n="settings.alerts.CustomAlerts.new.repeat.label">Repeat</td>
+<td>重复</td>
</tr>
<tr>
<td><select id="alertTypeSelect" name="alertTypeSelect" onchange="alertTypeChanged();">
-<option data-i18n="settings.alerts.CustomAlerts.new.type.callsign.exact" value="0">Callsign (exact)</option>
-<option data-i18n="settings.alerts.CustomAlerts.new.type.callsign.partial" value="5">Callsign (partial)</option>
-<option data-i18n="settings.alerts.CustomAlerts.new.type.callsign.regex" value="6">Callsign (regex)</option>
-<option data-i18n="settings.alerts.CustomAlerts.new.type.gridquare" value="2">Gridsquare</option>
-<option data-i18n="settings.alerts.CustomAlerts.new.type.QRZ" value="4">QRZ</option>
+<option value="0">呼号 (准确)</option>
+<option value="5">呼号 (局部)</option>
+<option value="6">呼号(正则表达式)</option>
+<option value="2">网格</option>
+<option value="4">QRZ</option>
</select></td>
-<td id="alertValueSelect"><input id="alertValueInput" type="text" class="inputTextValue" size="7" oninput="ValidateCallsign(this,null);"></td>
+<td id="alertValueSelect"><input id="alertValueInput" type="text" class="inputTextValue" size="7" oninput="ValidateCallsign(this,null);" /></td>
<td><select id="alertNotifySelect" name="alertNotifySelect" onchange="alertNotifyChanged();">
-<option data-i18n="settings.alerts.CustomAlerts.new.notify.textToSpeech" value="1">Text-to-speech</option>
-<option data-i18n="settings.alerts.CustomAlerts.new.notify.mediaFile" value="0">Media File</option>
-<option data-i18n="settings.alerts.CustomAlerts.new.notify.visual" value="2">Visual Popup</option>
-<option data-i18n="settings.alerts.CustomAlerts.new.notify.mapcenter" value="3">Map Center</option>
+<option value="1">文本朗读</option>
+<option value="0">媒体文件</option>
+<option value="2">弹出可视窗口</option>
+<option value="3">地图中心</option>
</select></td>
<td><select style="display: none" id="alertMediaSelect" onchange="alertNotifyChanged('media');"></select></td>
<td><select id="alertRepeatSelect" name="alertRepeatSelect">
-<option data-i18n="settings.alerts.CustomAlerts.new.repeat.deleted" value="2">Until Deleted</option>
-<option data-i18n="settings.alerts.CustomAlerts.new.repeat.exit" value="3">Until Exit</option>
-<option data-i18n="settings.alerts.CustomAlerts.new.repeat.once" value="1">Once</option>
-<option data-i18n="settings.alerts.CustomAlerts.new.repeat.never" value="0">Never</option>
+<option value="2">直到删除</option>
+<option value="3">直到退出</option>
+<option value="1">一次</option>
+<option value="0">从不</option>
</select></td>
<td id="addButton">
-<div data-i18n="settings.alerts.CustomAlerts.new.addButton" class="button" style="min-width: 26px; width: 26px" onclick="addNewAlert();">ADD</div>
+<div class="button" style="min-width: 26px; width: 26px" onclick="addNewAlert();">增加</div>
</td>
<td id="addError" style="color: red"></td>
</tr>
</table>
</div>
-<br>
+<br />
<div id="alertListDiv" style="margin: 4px; padding: 4px"></div>
</div>
<div id="chatSettingsDiv" class="settingsTabcontent">
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.OAMS.message.enable.label" title="Messaging Enable">Messaging Enable</td>
+<td title="启用信息传递">启用信息传递</td>
</tr>
<tr>
-<td><input title="Enable / Disable Messaging" type="checkbox" id="msgEnable" onclick="setMsgEnable(this);"></td>
+<td><input title="启用/禁用信息" type="checkbox" id="msgEnable" onclick="setMsgEnable(this);" /></td>
</tr>
</table>
</div>
<div class="mapItem" id="GTspotDiv">
<table align="center">
<tr>
-<td data-i18n="settings.OAMS.spotting.enable.label" title="Send and Recieve Spot Reports through the OAMS network">Spotting</td>
+<td title="通过离线信息网络发送和接收Spot报告">Spot报告</td>
</tr>
<tr>
-<td><input title="Enable / Disable Spotting" type="checkbox" id="GTspotEnable" onclick="setGTspotEnable(this);"></td>
+<td><input title="启用/禁用Spot报告" type="checkbox" id="GTspotEnable" onclick="setGTspotEnable(this);" /></td>
</tr>
</table>
</div>
-<br>
+<br />
<div id="msgSettingsDiv" class="mapItem" style="padding: 5px">
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.OAMS.message.newAlert.label" title="New Message Alert">New Message Alert</td>
+<td title="新信息警报">新信息警报</td>
</tr>
<tr>
<td><select id="msgAlertSelect" name="msgAlertSelect" onchange="newMessageSetting(this); alertChatMessage();">
-<option data-i18n="settings.OAMS.message.newAlert.none" value="0">None</option>
-<option data-i18n="settings.OAMS.message.newAlert.textToSpeech" value="1">Text-to-Speech</option>
-<option data-i18n="settings.OAMS.message.newAlert.mediaFile" value="2">Media File</option>
+<option value="0">无</option>
+<option value="1">文本朗读</option>
+<option value="2">媒体文件</option>
</select></td>
</tr>
<tr>
-<td><input id="msgAlertWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) {newMessageSetting(this); alertChatMessage(); }" oninput="ValidateText(this);newMessageSetting(this);"> <select id="msgAlertMedia" onchange="newMessageSetting(this); alertChatMessage();"></select></td>
+<td><input id="msgAlertWord" type="text" class="inputTextValue" size="14" onkeyup="if (event.keyCode === 13) {newMessageSetting(this); alertChatMessage(); }" oninput="ValidateText(this);newMessageSetting(this);" /> <select id="msgAlertMedia" onchange="newMessageSetting(this); alertChatMessage();"></select></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem" id="msgFrequencySelectDiv">
<table align="center">
<tr>
-<td data-i18n="settings.OAMS.message.newAlert.Frequency" title="New Message Alert Frequency">Alert Frequency</td>
+<td title="新信息警报出现率">警报出现率</td>
</tr>
<tr>
<td><select id="msgFrequencySelect" name="msgFrequencySelect" onchange="newMessageSetting(this);">
-<option data-i18n="settings.OAMS.message.newAlert.Once" value="0">Once</option>
-<option data-i18n="settings.OAMS.message.newAlert.1min" value="1">1 minute</option>
-<option data-i18n="settings.OAMS.message.newAlert.3min" value="3">3 minutes</option>
-<option data-i18n="settings.OAMS.message.newAlert.5min" value="5">5 minutes</option>
-<option data-i18n="settings.OAMS.message.newAlert.10min" value="10">10 minutes</option>
-<option data-i18n="settings.OAMS.message.newAlert.15min" value="15">15 minutes</option>
-<option data-i18n="settings.OAMS.message.newAlert.30min" value="30">30 minutes</option>
-<option data-i18n="settings.OAMS.message.newAlert.60min" value="60">1 hour</option>
+<option value="0">一次</option>
+<option value="1">1 分钟</option>
+<option value="3">3 分钟</option>
+<option value="5">5 分钟</option>
+<option value="10">10 分钟</option>
+<option value="15">15 分钟</option>
+<option value="30">30 分钟</option>
+<option value="60">1 小时</option>
</select></td>
</tr>
</table>
@@ -1971,38 +1950,38 @@
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.OAMS.message.newAlert.Action" title="New Message Action">New Message Action</td>
+<td title="新信息操作">新信息操作</td>
</tr>
<tr>
<td><select id="msgActionSelect" name="msgActionSelect" onchange="newMessageSetting(this);">
-<option data-i18n="settings.OAMS.message.newAlert.Nothing" value="0">Do nothing</option>
-<option data-i18n="settings.OAMS.message.newAlert.OpenWindow" value="1">Open Messaging Window</option>
+<option value="0">什么都不做</option>
+<option value="1">打开信息窗口</option>
</select></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem">
<table align="center">
<tr>
-<td data-i18n="settings.OAMS.message.awayMode" title="Away Mode">Away Mode</td>
+<td title="Away Mode">离开模式</td>
</tr>
<tr>
<td><select id="msgAwaySelect" name="msgAwaySelect" onchange="newMessageSetting(this);">
-<option data-i18n="settings.OAMS.message.NotAway" value="0">Not Away</option>
-<option data-i18n="settings.OAMS.message.AmAway" value="1">I Am Away</option>
+<option value="0">不要离开</option>
+<option value="1">我离开</option>
</select></td>
</tr>
</table>
</div>
-<br>
+<br />
<div class="mapItem" id="msgAwayTextDiv">
<table align="center">
<tr>
-<td data-i18n="settings.OAMS.message.awayText" title="Away Text">Away Text</td>
+<td title="Away Text">离开文本</td>
</tr>
<tr>
-<td><input id="msgAwayText" type="text" class="inputTextValue" size="30" oninput="ValidateText(this); newMessageSetting(this);"></td>
+<td><input id="msgAwayText" type="text" class="inputTextValue" size="30" oninput="ValidateText(this); newMessageSetting(this);" /></td>
</tr>
</table>
</div>
@@ -2010,51 +1989,56 @@
</div>
<div id="aboutDiv" class="settingsTabcontent">
<div class="mapItem" style="padding: 4px">
-<div data-i18n="settings.about.AppVersion" id="aboutVersionDiv">
+<div id="aboutVersionDiv">
<h2>GridTracker</h2>
</div>
-<p>GridTracker is a warehouse of amateur radio information presented in an easy to use interface<br>
-<br>
-From Live Traffic Decodes<br>
-Logbooks<br>
-Real-time Spot Reports<br>
-Weather<br>
-Current Solar Conditions and More!<br>
-Learn more at <a href="#" style="cursor: pointer" onclick="require('nw.gui').Shell.openExternal('https://gridtracker.org/grid-tracker/');">GridTracker.org!</a></p>
-<p>Copyright © 2022 GridTracker.org</p>
-<img src="./gridview.png"><br></div>
+<p>GridTracker 是一个业余无线电信息仓库,并把所有信息呈现在<br />
+一个易于使用的界面中,它包含了实时数据解码、<br />
+多平台保存日志、现场报告、实时天气、当前太阳<br />
+数据预报等诸多功能!<br />
+<br />
+来自实时流量解码<br />
+Logbooks<br />
+实时Spot报告<br />
+天气<br />
+目前的太阳状况和更多!<br />
+了解更多信息 <a href="#" style="cursor: pointer" onclick="require('nw.gui').Shell.openExternal('https://gridtracker.org/grid-tracker/');">GridTracker.org!</a></p>
+<p>版权所有 © 2022 GridTracker.org</p>
+<img src="./gridview.png" /><br />
+简体中文由 BD3OOX VR2UPU 翻译<br />
+石家庄业余无线电俱乐部 FT8数据通信俱乐部<br />
+<br /></div>
</div>
<div id="updateSettingsDiv" class="settingsTabcontent">
-<div style="left: 0; display: inline-block; height: 510px; width: 740px" id="updateText"><embed src="./gt_update.pdf" style="width: 100%; height: 100%" frameborder="0" scrolling="yes"></div>
+<div style="left: 0; display: inline-block; height: 510px; width: 740px" id="updateText"><embed src="./gt_update.pdf" style="width: 100%; height: 100%" frameborder="0" scrolling="yes" /></div>
</div>
<div style="top: 0; right: 1px; position: absolute"><button class="Xbutton" onclick="rootSettingsDiv.style.display='none';">X</button></div>
</div>
</div>
-<div id="alertsPopDiv" style="margin: 0 auto; top: 2px; min-height: 80px; max-height: 80%; left: 2px; display: none; background-color: white; padding: 0px; text-align: center; vertical-align: middle; position: absolute; z-index: 650; border: 3px groove red; white-space: nowrap; overflow: hidden;" class="roundBorder">
-<div data-i18n="alertPopup.title" id="alertPopTextDiv">New Alerts!!!</div>
+<div id="alertsPopDiv" style=" margin: 0 auto; top: 2px; min-height: 80px; max-height: 80%; left: 2px; display: none; background-color: white; padding: 0px; text-align: center; vertical-align: middle; position: absolute; z-index: 650; border: 3px groove red; white-space: nowrap; overflow: hidden;" class="roundBorder"><b>新警报!!!</b>
<div id="alertPopListDiv" style="margin: 2px; padding: 2px"></div>
-<div data-i18n="alertPopup.dismiss" class="button" onclick="ackAlerts();">DISMISS</div>
+<div class="button" onclick="ackAlerts();">解除</div>
</div>
-<div id="versionDiv" style="margin: 0 auto; left: 0; right: 0; top: 0; width: 100%; height: 100%; display: none; background-color: black; text-align: center; vertical-align: middle; position: absolute; z-index: 800;">
-<h1 data-i18n="updatePopup.newUpdate">GridTracker Updated!</h1>
+<div id="versionDiv" style=" margin: 0 auto; left: 0; right: 0; top: 0; width: 100%; height: 100%; display: none; background-color: black; text-align: center; vertical-align: middle; position: absolute; z-index: 800;">
+<h1>GridTracker已更新!</h1>
<div id="newVersionMustDownloadDiv" style="color: LightGreen"></div>
<table align="center">
<tr>
<td>
-<div data-i18n="updatePopup.noThanks" class="button" onclick="cancelVersion();">No, thanks.</div>
+<div class="button" onclick="cancelVersion();">不用了, 谢谢.</div>
</td>
<td>
-<div data-i18n="updatePopup.doUpdate" class="button" onclick="onExitAppToGoWebsite();">Yes, please!</div>
+<div class="button" onclick="onExitAppToGoWebsite();">是的,请更新!</div>
</td>
</tr>
<tr>
-<td><label data-i18n="updatePopup.stopAsking" for="stopAskingCheckbox">Stop asking?</label> <input type="checkbox" checked="false" id="stopAskingCheckbox" onclick="stopAsking(this);"></td>
+<td>停止询问?<input type="checkbox" checked="false" id="stopAskingCheckbox" onclick="stopAsking(this);" /></td>
</tr>
</table>
</div>
-<div id="upToDateDiv" style="margin: 0 auto; left: 0; right: 0; top: 0; height: 100%; width: 100%; display: none; background-color: black; text-align: center; vertical-align: middle; position: absolute; z-index: 800; white-space: nowrap; overflow: hidden;">
-<h2 data-i18n="updatePopup.noUpdate">GridTracker is up to date!</h2>
-<div data-i18n="updatePopup.ok" class="button" onclick="closeUpdateToDateDiv();">OK</div>
+<div id="upToDateDiv" style=" margin: 0 auto; left: 0; right: 0; top: 0; height: 100%; width: 100%; display: none; background-color: black; text-align: center; vertical-align: middle; position: absolute; z-index: 800; white-space: nowrap; overflow: hidden;">
+<h2>您的GridTracker是最新版的!</h2>
+<div class="button" onclick="closeUpdateToDateDiv();">OK</div>
</div>
<div id="selectNodeDiv" style="-webkit-user-select: text; user-select: text; display: block; z-index: -10000"></div>
</body>
--- gt_bandactivity.html.pretty 2022-08-12 22:12:59.000000000 +0200
+++ gt_bandactivity.html.pretty.cn 2022-08-12 17:47:55.000000000 +0200
@@ -19,7 +19,7 @@
<head>
<meta name="generator" content="HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 4452), see www.w3.org" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title data-i18n="bandactivity.title">Band Activity</title>
+<title>波段活动</title>
<link rel="stylesheet" href="./lib/style.css" type="text/css" />
<script src="./lib/protos.js" type="text/javascript">
</script>
@@ -48,8 +48,8 @@
</head>
<body id="mainBody" style=" -webkit-app-region: drag; margin: 0px; right: 0px; left: 0px; bottom: 0px; top: 0px; display: block; background-color: #000000ff; padding: 0px; text-align: center; vertical-align: middle; position: absolute; z-index: 600;">
<div id="pskReporterBandActivityDiv" style=" position: relative; background-color: #000; border: 1px solid purple; margin: 1px; height: 49px; margin-bottom: 1px; padding: 0px;" title="PSK-Reporter Band Activity">
-<div data-i18n="bandactivity.noData" id="graphDiv" style="bottom: 0; position: absolute; width: 100%; padding: 0px; margin-bottom: 2px"><br />
-...no data yet...<br />
+<div id="graphDiv" style="bottom: 0; position: absolute; width: 100%; padding: 0px; margin-bottom: 2px"><br />
+...还没有数据...<br />
&nbsp;</div>
</div>
</body>
--- gt_chat.html.pretty 2022-08-12 22:12:59.000000000 +0200
+++ gt_chat.html.pretty.cn 2022-08-12 22:04:28.000000000 +0200
@@ -16,10 +16,120 @@
<html xmlns="http://www.w3.org/1999/xhtml" style="height: 100%; width: 100%">
<head>
<meta name="generator" content="HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 4452), see www.w3.org" />
-<title data-i18n="chat.title">Off-Air Message Service (OAMS)</title>
+<title>信息服务 (OAMS)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="./lib/style.css" type="text/css" />
-<link rel="stylesheet" href="./lib/chat.css" type="text/css" />
+<style type="text/css">
+/*<![CDATA[*/
+ table,
+ th,
+ td,
+ body,
+ input {
+ color: #fff;
+ white-space: nowrap;
+ font-family: Sans-Serif;
+ font-size: 13px;
+ text-align: auto;
+ }
+ .boxDisplay {
+ margin: 1px;
+ padding: 2px;
+ border-width: 2px;
+ border-color: #aaa;
+ border-style: inset;
+ vertical-align: top;
+ -webkit-border-radius: 4px;
+ }
+ textarea {
+ width: 100%;
+ resize: none;
+ font-size: 15px;
+ }
+ .self {
+ color: #ffff00;
+ font-weight: bold;
+ }
+ .them {
+ color: #00ffff;
+ font-weight: bold;
+ }
+ .system {
+ color: #ff0000;
+ font-weight: bold;
+ }
+ .when {
+ color: #777777;
+ font-size: 12px;
+ }
+ .msgText {
+ color: #eeeeee;
+ font-size: 15px;
+ }
+ .msgTextUnicode {
+ color: #eeeeee;
+ font-size: 15px;
+ }
+
+ body {
+ background-image: url(img/gridtracker10.png);
+ background-repeat: no-repeat;
+ background-attachment: fixed;
+ background-position: center;
+ }
+ #callsign {
+ color: #00ffff;
+ font-weight: bold;
+ }
+ #country,
+ #dxcc {
+ color: #ffff00;
+ font-weight: bold;
+ }
+ #grid {
+ color: orange;
+ font-weight: bold;
+ }
+ #band {
+ color: #009900;
+ font-weight: bold;
+ }
+ #mode {
+ color: #ee0000;
+ font-weight: bold;
+ }
+
+ .rosterOn {
+ color: #ffffff;
+ }
+
+ .rosterOff {
+ color: #777777;
+ }
+
+ .imgGray {
+ -webkit-filter: grayscale(1); /* Google Chrome, Safari 6+ & Opera 15+ */
+ }
+
+ .imgNoFilter {
+ }
+
+ input:focus,
+ textarea:focus,
+ select:focus {
+ outline: none;
+ }
+
+ table {
+ border-collapse: collapse;
+ }
+
+ tr:hover td {
+ box-shadow: inset 0px 11px 6px -8px #888, inset 0px -11px 6px -8px #888;
+ }
+/*]]>*/
+</style>
+
<script src="./lib/protos.js" type="text/javascript">
</script>
<script src="./lib/third-party.js" type="text/javascript">
@@ -288,7 +398,7 @@
worker += "<\/table>";
activeCallsignsDiv.innerHTML = worker;
} else {
- activeCallsignsDiv.innerHTML = "<font color='gray'>no message history<\/font>";
+ activeCallsignsDiv.innerHTML = "<font color='gray'>没有信息历史<\/font>";
}
}
@@ -458,13 +568,13 @@
</script>
</head>
<body onload="init();" style="height: 100%; width: 100%" onresize="Resize();">
-<div id="noticeDiv" style="display: none; width: 80%; overflow-wrap: break-word; white-space: normal">
-<p data-i18n="chat.notice.para1"><b>NOTICE</b>: GridTracker chat is not encrypted or obfuscated beyond HTTPS. This means that it's sent as plaintext that is vulnerable to hackers, pirates, the NSA, your wife, and anyone that thinks you're interesting enough to monitor.</p>
-<p data-i18n="chat.notice.para2"><b>NEVER</b> give passwords, credit card numbers, safe combinations or any personal information that you don't want bad people to know because there are some very bad people out there.</p>
-<p data-i18n="chat.notice.para3">Not us, though. While GridTracker is free, unlike some other free apps, we don't store, save, sell, peek at or otherwise do anything with the chat that would violate your trust. We don't keep logs. We don't save Metadata. We just don't.</p>
-<p data-i18n="chat.notice.para4">Close GridTracker, lose the text. So write anything down you want to save.<br />
-Because when it's gone, gone is forever.</p>
-<div data-i18n="chat.notice.agree" class="button" onclick="userAgrees();">Click here to acknowledge the above and enable messaging</div>
+<div id="noticeDiv" style="display: none; width: 80%; overflow-wrap: break-word; white-space: normal"><b>注意</b>: GridTracker 聊天服务不是用HTTPS网络加密或会显示混乱代码. 这意味着它作为它以明文形式发送, 容易受到黑客攻击, 海盗假冒是:国家安全局, 你的妻子, 任何觉得你有趣及关注的人.
+<p><b>永不</b> 提供密码, 信用卡, 保险箱组合密码或任何你不想让坏人知道的个人资讯因为外面有一些很坏的人.</p>
+<p>但不是我们. 而GridTracker是免费的, 与其他一些免费应用程序不同, 我们不保留, 储存, 销售, 浏览或删除 另一方面你不可以对聊天做任何违背信任的事. 我们不会储存会谈纪录. 我们不储存中继资料. 我们就是不会.</p>
+<p>关闭GridTracker, 将失去会谈内容. 所以写下你想保存的东西.<br />
+因为当它消失的时候, 就永远消失了.</p>
+<p><br /></p>
+<div class="button" onclick="userAgrees();">单击此处确认上述内容并启用信息传递</div>
</div>
<div id="wrapperDiv" style="display: none">
<div id="messageAreaDiv" style=" position: fixed; left: 2px; top: 2px; display: none; text-align: left; overflow-wrap: break-word; white-space: normal;">
@@ -475,15 +585,15 @@
</textarea></div>
</div>
<div class="boxDisplay" style=" top: 2px; right: 2px; position: fixed; vertical-align: top; display: inline-block; overflow: none; width: 132px;">
-<div style="display: inline-block; cursor: pointer" onclick="toggleBand()"><font data-i18n="chat.filter.band" color="lightgreen">Band:</font> <font id="viewBand" color="yellow">All</font></div>
-<div style="display: inline-block; cursor: pointer" onclick="toggleMode()"><font data-i18n="chat.filter.mode" color="orange">Mode:</font> <font id="viewMode" color="yellow">All</font></div>
+<div style="display: inline-block; cursor: pointer" onclick="toggleBand()"><font color="lightgreen">波段:</font> <font id="viewBand" color="yellow">所有</font></div>
+<div style="display: inline-block; cursor: pointer" onclick="toggleMode()"><font color="orange">模式:</font> <font id="viewMode" color="yellow">所有</font></div>
</div>
-<img id="clearSearch" title="Clear Search" onclick='searchBox.value="";KeepUpper(searchBox);' src="/img/trash_24x48.png" style="display: none; top: 30px; right: 114px; position: absolute; width: 30px; cursor: pointer" /> <input id="searchBox" type="text" title="Call Search" class="inputTextValue" style=" top: 26px; right: 45px; position: absolute; vertical-align: top; display: inline-block; overflow: auto; overflow-x: hidden; width: 75px; background-color: green; color: yellow;" maxlength="100" oninput="KeepUpper(this);" />
-<div id="userCount" class="roundBorderValue" style=" top: 30px; right: 3px; position: absolute; vertical-align: top; overflow: hidden; width: 40px; margin: 0px; padding: 0px; text-overflow: ellipsis;" title="Station Count">0</div>
+<img id="clearSearch" title="清除搜索" onclick='searchBox.value="";KeepUpper(searchBox);' src="/img/trash_24x48.png" style="display: none; top: 30px; right: 114px; position: absolute; width: 30px; cursor: pointer" /> <input id="searchBox" type="text" title="呼号搜索" class="inputTextValue" style=" top: 26px; right: 45px; position: absolute; vertical-align: top; display: inline-block; overflow: auto; overflow-x: hidden; width: 75px; background-color: green; color: yellow;" maxlength="100" oninput="KeepUpper(this);" />
+<div id="userCount" class="roundBorderValue" style=" top: 30px; right: 3px; position: absolute; vertical-align: top; overflow: hidden; width: 40px; margin: 0px; padding: 0px; text-overflow: ellipsis;" title="电台统计数">0</div>
<div id="allCallsignsDiv" class="boxDisplay" style=" top: 48px; right: 2px; bottom: 5px; position: fixed; vertical-align: top; display: inline-block; overflow: auto; overflow-x: hidden; width: 132px;">
<table style="width: 100%" id="allCallTable"></table>
</div>
-<div id="activeCallsignsDiv" class="boxDisplay" style=" bottom: 2px; right: 2px; position: fixed; vertical-align: top; display: inline-block; overflow: auto; overflow-x: hidden; width: 132px; max-height: 60px;"><font color="gray">no message history</font></div>
+<div id="activeCallsignsDiv" class="boxDisplay" style=" bottom: 2px; right: 2px; position: fixed; vertical-align: top; display: inline-block; overflow: auto; overflow-x: hidden; width: 132px; max-height: 60px;"><font color="gray">没有信息历史纪录</font></div>
</div>
</body>
</html>
--- gt_lookup.html.pretty 2022-08-12 22:12:59.000000000 +0200
+++ gt_lookup.html.pretty.cn 2022-08-12 17:47:55.000000000 +0200
@@ -19,7 +19,7 @@
<head>
<meta name="generator" content="HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 4452), see www.w3.org" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title data-i18n="lookup.title">Callsign Lookup</title>
+<title>呼号信息查询</title>
<link rel="stylesheet" href="./lib/style.css" type="text/css" />
<script src="./lib/protos.js" type="text/javascript">
</script>
@@ -104,12 +104,12 @@
<body id="mainBody" onresize="Resize();" onload="init();">
<div id="rootInfoDiv" style=" margin: 0px; right: 0px; left: 0px; bottom: 0px; top: 3px; display: block; background-color: black; padding: 0px; text-align: center; vertical-align: middle; position: absolute; z-index: 600;" class="roundBorder">
<div id="lookupBoxDiv" class="lookupContent" style="display: block; overflow: auto; overflow-x: hidden">
-<div><label data-i18n="lookup.callsign.label" for="lookupCallsignInput">Callsign</label> <input id="lookupCallsignInput" type="text" class="inputTextValue" size="12" onkeyup="if (event.keyCode === 13) lookupButtonID.click();" oninput="ValidateCallsign(this,null);" />
-<div data-i18n="lookup.callsign.button" id="lookupButtonID" title="Lookup Callsign" class="button" onclick="if ( ValidateCallsign(lookupCallsignInput,null) ) { lookupCallsign(lookupCallsignInput.value, null, false);}">Lookup</div>
+<div>呼号<input id="lookupCallsignInput" type="text" class="inputTextValue" size="12" onkeyup="if (event.keyCode === 13) lookupButtonID.click();" oninput="ValidateCallsign(this,null);" />
+<div id="lookupButtonID" title="Lookup Callsign" class="button" onclick="if ( ValidateCallsign(lookupCallsignInput,null) ) { lookupCallsign(lookupCallsignInput.value, null, false);}">查找</div>
</div>
<div id="lookupLocalDiv"></div>
-<div data-i18n="lookup.noinfo" id="lookupInfoDiv">No Callsign information to display<br />
-try a lookup!</div>
+<div id="lookupInfoDiv">没有要显示的呼号信息<br />
+尝试查找!</div>
</div>
</div>
</body>
--- gt_print.html.pretty 2022-08-12 22:12:59.000000000 +0200
+++ gt_print.html.pretty.cn 2022-08-12 17:47:55.000000000 +0200
@@ -18,7 +18,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 4452), see www.w3.org" />
-<title>GridTracker - Print</title>
+<title>GridTracker - 打印</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
/*<![CDATA[*/
@@ -64,124 +64,124 @@
<div id="printDiv">
<table align="center" class="darkTable">
<tr>
-<th colspan="3">Hot Key List</th>
+<th colspan="3">热键清单</th>
</tr>
<tr>
<th>Key</th>
-<th align="left">Action</th>
-<th>Condition</th>
+<th align="left">开始行动</th>
+<th>条件</th>
</tr>
<tr>
<td>C</td>
-<td align="left">Open Conditions Windows</td>
+<td align="left">打开条件视窗</td>
<td></td>
</tr>
<tr>
<td>G</td>
-<td align="left">Toggle GridTracker Flags</td>
+<td align="left">切换GridTracker标志</td>
<td></td>
</tr>
<tr>
<td>I</td>
-<td align="left">Open Stats/Info</td>
+<td align="left">打开状态/信息</td>
<td></td>
</tr>
<tr>
<td>L</td>
-<td align="left">Open ADIF file</td>
+<td align="left">打开ADIF档案</td>
<td></td>
</tr>
<tr>
<td>M</td>
-<td align="left">Toggle Audio Mute</td>
+<td align="left">切换声音静音</td>
<td></td>
</tr>
<tr>
<td>N</td>
-<td align="left">Toggle Earth Shadow</td>
+<td align="left">切换地球阴影</td>
<td></td>
</tr>
<tr>
<td>P</td>
-<td align="left">Toggle Grid/PushPin Mode</td>
+<td align="left">切换网格/图钉模式</td>
<td></td>
</tr>
<tr>
<td>Q</td>
-<td align="left">Cycle QSO/LIVE view</td>
+<td align="left">循环QSO/实时显示</td>
<td></td>
</tr>
<tr>
<td>R</td>
-<td align="left">Open Call Roster Window</td>
+<td align="left">打开呼叫名册视窗</td>
<td></td>
</tr>
<tr>
<td>S</td>
-<td align="left">Open Settings</td>
+<td align="left">打开设置</td>
<td></td>
</tr>
<tr>
<td>W</td>
-<td align="left">Toggle Maidenhead Grid Size</td>
+<td align="left">切换梅登黑德网格的值</td>
<td></td>
</tr>
<tr>
<td>1</td>
-<td align="left">Show General Map Layer</td>
+<td align="left">显示一般地图图层</td>
<td></td>
</tr>
<tr>
<td>2</td>
-<td align="left">Show CQ Zones Award Layer</td>
+<td align="left">显示CQ区域奖状图层</td>
<td></td>
</tr>
<tr>
<td>3</td>
-<td align="left">Show ITU Zones Award Layer</td>
+<td align="left">显示ITU区域奖状图层</td>
<td></td>
</tr>
<tr>
<td>4</td>
-<td align="left">Show Continents Award Layer</td>
+<td align="left">显示大陆奖状图层</td>
<td></td>
</tr>
<tr>
<td>5</td>
-<td align="left">Show US States Award Layer</td>
+<td align="left">显示美国州奖状图层</td>
<td></td>
</tr>
<tr>
<td>6</td>
-<td align="left">Show DXCC Award Layer</td>
+<td align="left">显示DXCC奖状图层</td>
<td></td>
</tr>
<tr>
<td>7</td>
-<td align="left">Show US Counties Award Layer</td>
+<td align="left">显示美国县奖状图层</td>
<td></td>
</tr>
<tr>
<td>M</td>
-<td align="left">Add MapCenter Alert</td>
+<td align="left">增加地图中心警报</td>
<td>right-click<br />
-empty grid</td>
+清除网格</td>
</tr>
<tr>
<td>T</td>
-<td align="left">Add TTS Alert</td>
+<td align="left">增加TTS警报</td>
<td>right-click<br />
-empty grid</td>
+清除网格</td>
</tr>
<tr>
<td>V</td>
-<td align="left">Add PopUp Alert</td>
+<td align="left">增加弹出警报</td>
<td>right-click<br />
-empty grid</td>
+清除网格</td>
</tr>
<tr>
<td>F1</td>
-<td align="left">Hot Key List</td>
+<td align="left">热键清单</td>
<td></td>
</tr>
</table>
--- gt_roster.html.pretty 2022-08-12 22:12:59.000000000 +0200
+++ gt_roster.html.pretty.cn 2022-08-12 22:02:23.000000000 +0200
@@ -16,7 +16,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" style="height: 100%; width: 100%">
<head>
<meta name="generator" content="HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 4452), see www.w3.org" />
-<title data-i18n="roster.title">Call Roster</title>
+<title>呼叫列表</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="./lib/style.css" type="text/css" />
<link id="roster" rel="stylesheet" href="./lib/style_roster.css" type="text/css" />
@@ -50,70 +50,70 @@
<body onload="init()" class="roster" oncontextmenu="return handleContextMenu(event);">
<div id="MainCallRoster">
<div id="TransmitControls">
-<div id="txrxdec" style=" background-color: Green; border-style: outset; border-color: yellow; border-width: 3px; margin: 2px;" class="roundBorder">Waiting…</div>
-<div class="button" style="margin: 3px" onclick="window.opener.haltAllTx(true);">Halt Tx</div>
+<div id="txrxdec" style=" background-color: Green; border-style: outset; border-color: yellow; border-width: 3px; margin: 2px;" class="roundBorder">等待中…</div>
+<div class="button" style="margin: 3px" onclick="window.opener.haltAllTx(true);">停止发射</div>
</div>
<div id="MoreLessControls">
-<div data-i18n="roster.controls.more" class="link" onclick="toggleMoreControls()" id="ShowMoreControlsLink">More Controls</div>
-<div data-i18n="roster.controls.less" class="link" onclick="toggleMoreControls()" id="ShowFewerControlsLink">Fewer Controls</div>
+<div class="link" onclick="toggleMoreControls()" id="ShowMoreControlsLink">打开控件栏</div>
+<div class="link" onclick="toggleMoreControls()" id="ShowFewerControlsLink">关闭控件栏</div>
</div>
<div id="MainRosterControls">
-<div id="LogbookControls"><label data-i18n="roster.controls.logbook.label">Logbook</label> <select id="referenceNeed" onchange="valuesChanged();">
-<option data-i18n="roster.controls.logbook.awardTracker" value="6">Award Tracker</option>
-<option data-i18n="roster.controls.logbook.liveBandMode" value="0">Live Band &amp; Mode</option>
-<option data-i18n="roster.controls.logbook.liveBandMixMode" value="1">Live Band, Mix Modes</option>
-<option data-i18n="roster.controls.logbook.liveBandDigiMode" value="2">Live Band, Digi Modes</option>
-<option data-i18n="roster.controls.logbook.mixBandLiveMode" value="3">Mix Band, Live Mode</option>
-<option data-i18n="roster.controls.logbook.mixBandMode" value="4">Mix Band &amp; Modes</option>
-<option data-i18n="roster.controls.logbook.mixBandDigiMode" value="5">Mix Band &amp; Digi Modes</option>
+<div id="LogbookControls"><label>日志</label> <select id="referenceNeed" onchange="valuesChanged();">
+<option value="6">奖励追踪器</option>
+<option value="0">实时波段和模式</option>
+<option value="1">实时波段, 混合模式</option>
+<option value="2">实时波段, 数字模式</option>
+<option value="3">实时模式, 混合波段</option>
+<option value="4">混合波段和模式</option>
+<option value="5">混合波段和数字模式</option>
</select></div>
-<div id="CallsignsControls"><label data-i18n="roster.controls.callsigns.label">Callsigns</label> <select id="callsignNeed" onchange="valuesChanged();">
-<option data-i18n="roster.controls.callsigns.worked" value="worked">New</option>
-<option data-i18n="roster.controls.callsigns.confirmed" value="confirmed">New+Unconfirmed</option>
-<option data-i18n="roster.controls.callsigns.all" value="all">All Traffic</option>
-<option data-i18n="roster.controls.callsigns.hits" value="hits">All Traffic/Only Wanted</option>
+<div id="CallsignsControls"><label>呼号</label> <select id="callsignNeed" onchange="valuesChanged();">
+<option value="worked">新的</option>
+<option value="confirmed">新的+未确认的</option>
+<option value="all">所有通联</option>
+<option value="hits">所有通联/仅限想要的</option>
</select></div>
-<div id="HuntModeControls"><label data-i18n="roster.controls.hunting.label">Hunting</label> <select id="huntMode" onchange="valuesChanged();" value="callsign">
-<option data-i18n="roster.controls.hunting.callsign" value="callsign">Callsign</option>
-<option data-i18n="roster.controls.hunting.grid" value="grid">Grid</option>
-<option data-i18n="roster.controls.hunting.dxcc" value="dxcc">DXCC</option>
-<option data-i18n="roster.controls.hunting.dxccSingle" value="dxccs">DXCC (Single)</option>
-<option data-i18n="roster.controls.hunting.cqZone" value="cq">CQ Zone</option>
-<option data-i18n="roster.controls.hunting.ituZone" value="itu">ITU Zone</option>
-<option data-i18n="roster.controls.hunting.usStates" value="usstates">US States (WAS)</option>
-<option data-i18n="roster.controls.hunting.usState" value="usstate">US State (Single)</option>
-<option data-i18n="roster.controls.hunting.wpx" value="wpx">Prefix (WPX)</option>
+<div id="HuntModeControls"><label>追寻</label> <select id="huntMode" onchange="valuesChanged();" value="callsign">
+<option value="callsign">呼号</option>
+<option value="grid">网格</option>
+<option value="dxcc">DXCC</option>
+<option value="dxccs">DXCC (单独)</option>
+<option value="cq">CQ 分区</option>
+<option value="itu">ITU 分区</option>
+<option value="usstates">美国各州 (WAS)</option>
+<option value="usstate">美国州 (单独)</option>
+<option value="wpx">前缀 (WPX)</option>
</select> <select id="huntNeed" onchange="valuesChanged();">
-<option data-i18n="roster.controls.huntNeed.worked" value="worked">New</option>
-<option data-i18n="roster.controls.huntNeed.confirmed" value="confirmed">New+Unconfirmed</option>
-<option data-i18n="roster.controls.huntNeed.mixed" value="mixed">Mixed</option>
+<option value="worked">新的</option>
+<option value="confirmed">新的+未确认的</option>
+<option value="mixed">混合模式</option>
</select> <select id="stateSelect" onchange="valuesChanged();">
-<option data-i18n="roster.controls.huntState.label" value="" selected="true">Select Territory</option>
+<option value="" selected="true">选择区域</option>
</select> <select onchange="valuesChanged();" id="HuntDXCCsControls">
-<option data-i18n="roster.controls.huntDXCC.label" value="-1" selected="true">Select DXCC</option>
+<option value="-1" selected="true">选择DXCC</option>
</select></div>
<div id="scriptIcon" style="display: none; padding: 0; margin: 0"></div>
<div id="AwardTrackerControls">
<div id="AwardWantedList"></div>
-<div data-i18n="roster.controls.awardTracker.addButton" class="button" onclick="openAwardPopup()">Add Awards</div>
+<div class="button" onclick="openAwardPopup()">添加奖励</div>
<div id="awardHunterDiv" style="display: none;">
<table style="padding: 15px">
<tr>
-<th data-i18n="roster.controls.awardTracker.new" align="center">New Award Tracker</th>
+<th align="center">新奖项追踪器</th>
</tr>
<tr>
<td align="left"><select id="awardSponsor" onchange="awardSponsorChanged();">
-<option data-i18n="roster.controls.awardTracker.sponsor" value="" disabled="disabled" selected="selected">Sponsor</option>
+<option value="" disabled="disabled" selected="selected">赞助商</option>
</select></td>
</tr>
<tr>
<td align="left"><select id="awardName" onchange="awardNameChanged();">
-<option data-i18n="roster.controls.awardTracker.name" value="" disabled="disabled" selected="selected">Name</option>
+<option value="" disabled="disabled" selected="selected">姓名</option>
</select></td>
</tr>
<tr>
<td align="center">
-<div data-i18n="roster.controls.awardTracker.add" class="button" style="margin: 3px" onclick="closeAwardPopup()">Done</div>
+<div class="button" style="margin: 3px" onclick="closeAwardPopup()">完成</div>
</td>
</tr>
</table>
@@ -122,55 +122,53 @@
</div>
<div id="SecondaryRosterControls">
<div id="huntingMatrixDiv" class="secondaryControlGroup">
-<h3 data-i18n="roster.secondary.wanted.label">Wanted</h3>
+<h3>想要的</h3>
<div class='columns'>
-<div><input type="checkbox" id="huntCallsign" onchange="wantedChanged(this);" /> <label data-i18n="roster.secondary.wanted.callsign" for="huntCallsign">Callsign</label></div>
-<div><input type="checkbox" id="huntGrid" onchange="wantedChanged(this);" /> <label data-i18n="roster.secondary.wanted.grid" for="huntGrid">Grid</label></div>
-<div><input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);" /> <label data-i18n="roster.secondary.wanted.dxcc" for="huntDXCC">DXCC</label></div>
-<div><input type="checkbox" id="huntQRZ" onchange="wantedChanged(this);" /> <label data-i18n="roster.secondary.wanted.qrz" for="huntQRZ" title="Stations calling *you*">QRZ</label></div>
-<div><input type="checkbox" id="huntPX" onchange="wantedChanged(this);" /> <label data-i18n="roster.secondary.wanted.wpx" for="huntPX">WPX</label></div>
-<div><input type="checkbox" id="huntPOTA" onchange="wantedChanged(this);" /> <label data-i18n="roster.secondary.wanted.pota" for="huntPOTA" title="Parks On The Air">POTA</label></div>
-<div><input type="checkbox" id="huntOAMS" onchange="wantedChanged(this);" /> <label data-i18n="roster.secondary.wanted.OAMS" for="huntOAMS" title="Off-Air Message Service Users">OAMS</label></div>
+<div><label><input type="checkbox" id="huntCallsign" onchange="wantedChanged(this);" />呼号</label></div>
+<div><label><input type="checkbox" id="huntGrid" onchange="wantedChanged(this);" /> 网格</label></div>
+<div><label><input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);" /> DXCC</label></div>
+<div><label title="呼叫*你*的电台"><input type="checkbox" id="huntQRZ" onchange="wantedChanged(this);" /> QRZ</label></div>
+<div><label><input type="checkbox" id="huntPX" onchange="wantedChanged(this);" /> WPX</label></div>
+<div><label title="已经关闭信息服务的用户"><input type="checkbox" id="huntOAMS" onchange="wantedChanged(this);" /> OAMS</label></div>
<div><label><input type="checkbox" id="huntCQz" onchange="wantedChanged(this);" /> CQz</label></div>
<div><label><input type="checkbox" id="huntITUz" onchange="wantedChanged(this);" /> ITUz</label></div>
-<div><label title='CQ DX Marathon'><input type="checkbox" id="huntMarathon" onchange="wantedChanged(this);" /> Marathon</label></div>
-<div><label><input type="checkbox" id="huntState" onchange="wantedChanged(this);" /> State</label></div>
-<div><label><input type="checkbox" id="huntCounty" onchange="wantedChanged(this);" /> County</label></div>
+<div><label><input type="checkbox" id="huntState" onchange="wantedChanged(this);" /> 州</label></div>
+<div><label><input type="checkbox" id="huntCounty" onchange="wantedChanged(this);" /> 县</label></div>
<div><label><input type="checkbox" id="huntCont" onchange="wantedChanged(this);" /> Cont</label></div>
</div>
</div>
<div id="exceptionDiv" class="secondaryControlGroup">
-<h3>Exceptions</h3>
+<h3>例外情况</h3>
<div class='columns'>
-<div><label><input type="checkbox" id="cqOnly" onchange="valuesChanged();" /> CQ Only</label></div>
-<div><label><input type="checkbox" id="wantGrid" onchange="valuesChanged();" /> Has Grid</label></div>
-<div><label><input type="checkbox" id="wantMinDB" onchange="valuesChanged();" /> Min dB</label> <input type="range" min="-25" max="0" step="1" class="slider" id="minDb" oninput="valuesChanged();" /> <span id="minDbView" class="roundBorderValue">-24</span></div>
-<div><label><input type="checkbox" id="wantMaxDT" onchange="valuesChanged();" /> Max DT</label> <input type="range" min="0.1" max="2" step="0.1" class="slider" id="maxDT" oninput="valuesChanged();" /> <span id="maxDTView" class="roundBorderValue">.5</span></div>
-<div><label><input type="checkbox" id="wantMinFreq" onchange="valuesChanged();" /> Min freq</label> <input type="range" min="0" max="2500" step="10" class="slider" id="minFreq" oninput="valuesChanged();" /> <span id="minFreqView" class="roundBorderValue">400</span></div>
-<div><label><input type="checkbox" id="wantMaxFreq" onchange="valuesChanged();" /> Max freq</label> <input type="range" min="500" max="3500" step="10" class="slider" id="maxFreq" oninput="valuesChanged();" /> <span id="maxFreqView" class="roundBorderValue">3500</span></div>
-<div id="usesLoTWDiv"><label><input type="checkbox" id="usesLoTW" onchange="valuesChanged();" /> Uses LoTW</label> <input title="Max time since their last upload" type="range" min="3" max="27" step="3" class="slider" id="maxLoTW" oninput="valuesChanged();" /> <span id="maxLoTWView" class="roundBorderValue" style="width: 35px;">3</span></div>
-<div id="onlySpotDiv"><label><input type="checkbox" id="onlySpot" onchange="valuesChanged();" /> Spotted Me</label></div>
-<div><label><input type="checkbox" id="noMyDxcc" onchange="onlyMyDxcc.checked=false; valuesChanged();" /> Not My DXCC</label></div>
-<div><label><input type="checkbox" id="onlyMyDxcc" onchange="noMyDxcc.checked=false; valuesChanged();" /> Only My DXCC</label></div>
-<div id="useseQSLDiv"><label><input type="checkbox" id="useseQSL" onchange="valuesChanged();" /> Uses eQSL</label></div>
-<div id="usesOQRSDiv"><label><input type="checkbox" id="usesOQRS" onchange="valuesChanged();" /> Uses OQRS</label></div>
-<div id="allOnlyNewDiv"><label><input type="checkbox" id="allOnlyNew" onchange="valuesChanged();" /> Only New Calls</label></div>
-<div><label title="No Decodes Containing..."><input type="checkbox" id="noMsg" onchange="valuesChanged();" /> No &nbsp;&nbsp;</label> <input type="text" class="inputTextValue" size="8" id="noMsgValue" onfocus="g_regFocus=true;" onblur="g_regFocus=false;" oninput="valuesChanged();" onkeydown="checkForEnter(this);" /></div>
-<div><label title="Only Decodes Containing..."><input type="checkbox" id="onlyMsg" onchange="valuesChanged();" /> Only</label> <input type="text" class="inputTextValue" size="8" id="onlyMsgValue" onfocus="g_regFocus=true;" onblur="g_regFocus=false;" oninput="valuesChanged();" onkeydown="checkForEnter(this);" /></div>
-<div><label title="Callsign Regular Expression"><input type="checkbox" id="useRegex" onchange="valuesChanged();" /> <a title="Regular Expressions 101" href="https://regex101.com/?flavor=javascript" target="_blank">Regex</a></label> <input type="text" class="inputTextValue" size="12" id="callsignRegex" onfocus="g_regFocus=true;" onblur="g_regFocus=false;" oninput="valuesChanged();" onkeydown="checkForEnter(this);" /></div>
+<div><label><input type="checkbox" id="cqOnly" onchange="valuesChanged();" /> 仅限 CQ</label></div>
+<div><label><input type="checkbox" id="wantGrid" onchange="valuesChanged();" /> 有网格</label></div>
+<div><label><input type="checkbox" id="wantMinDB" onchange="valuesChanged();" /> 最小 dB</label> <input type="range" min="-25" max="0" step="1" class="slider" id="minDb" oninput="valuesChanged();" /> <span id="minDbView" class="roundBorderValue">-24</span></div>
+<div><label><input type="checkbox" id="wantMaxDT" onchange="valuesChanged();" /> 最大DT</label> <input type="range" min="0.1" max="2" step="0.1" class="slider" id="maxDT" oninput="valuesChanged();" /> <span id="maxDTView" class="roundBorderValue">.5</span></div>
+<div><label><input type="checkbox" id="wantMinFreq" onchange="valuesChanged();" /> 最小频率</label> <input type="range" min="0" max="2500" step="10" class="slider" id="minFreq" oninput="valuesChanged();" /> <span id="minFreqView" class="roundBorderValue">400</span></div>
+<div><label><input type="checkbox" id="wantMaxFreq" onchange="valuesChanged();" /> 最大频率</label> <input type="range" min="500" max="3500" step="10" class="slider" id="maxFreq" oninput="valuesChanged();" /> <span id="maxFreqView" class="roundBorderValue">3500</span></div>
+<div id="usesLoTWDiv"><label><input type="checkbox" id="usesLoTW" onchange="valuesChanged();" /> 在用 LoTW</label> <input title="最后上传距今" type="range" min="3" max="27" step="3" class="slider" id="maxLoTW" oninput="valuesChanged();" /> <span id="maxLoTWView" class="roundBorderValue" style="width: 35px;">3</span></div>
+<div id="onlySpotDiv"><label><input type="checkbox" id="onlySpot" onchange="valuesChanged();" /> 发报自己</label></div>
+<div><label><input type="checkbox" id="noMyDxcc" onchange="onlyMyDxcc.checked=false; valuesChanged();" /> 不是我的 DXCC</label></div>
+<div><label><input type="checkbox" id="onlyMyDxcc" onchange="noMyDxcc.checked=false; valuesChanged();" /> 仅限我的 DXCC</label></div>
+<div id="useseQSLDiv"><label><input type="checkbox" id="useseQSL" onchange="valuesChanged();" /> 在用 eQSL</label></div>
+<div id="usesOQRSDiv"><label><input type="checkbox" id="usesOQRS" onchange="valuesChanged();" /> 在用 OQRS</label></div>
+<div id="allOnlyNewDiv"><label><input type="checkbox" id="allOnlyNew" onchange="valuesChanged();" /> 仅限新呼号</label></div>
+<div><label title="不包含解码..."><input type="checkbox" id="noMsg" onchange="valuesChanged();" /> 不包含</label> <input type="text" class="inputTextValue" size="8" id="noMsgValue" onfocus="g_regFocus=true;" onblur="g_regFocus=false;" oninput="valuesChanged();" onkeydown="checkForEnter(this);" /></div>
+<div><label title="仅包含解码..."><input type="checkbox" id="onlyMsg" onchange="valuesChanged();" /> 只包含</label> <input type="text" class="inputTextValue" size="8" id="onlyMsgValue" onfocus="g_regFocus=true;" onblur="g_regFocus=false;" oninput="valuesChanged();" onkeydown="checkForEnter(this);" /></div>
+<div><label title="呼号常规格式"><input type="checkbox" id="useRegex" onchange="valuesChanged();" /> <a title="常规格式网 101" href="https://regex101.com/?flavor=javascript" target="_blank">常规格式</a></label> <input type="text" class="inputTextValue" size="12" id="callsignRegex" onfocus="g_regFocus=true;" onblur="g_regFocus=false;" oninput="valuesChanged();" onkeydown="checkForEnter(this);" /></div>
</div>
</div>
<div id="instancesWrapper" class="secondaryControlGroup">
-<h3>Instances</h3>
+<h3>实例</h3>
<div id="instancesDiv"></div>
</div>
</div>
</div>
<div id="editView" class="roundBorder" style="height: 100%; border: 3px solid #066; padding: 10px; margin: 10px; display: none">
-<div style="display: block; font-size: larger">Callsign, CQ and DXCC Ignores</div>
+<div style="display: block; font-size: larger">呼号, 忽略CQ和DXCC</div>
<br />
<div id="editTables"></div>
-<div class="button" style="margin-top: 5px" onclick="closeEditIgnores()">Close</div>
+<div class="button" style="margin-top: 5px" onclick="closeEditIgnores()">关闭</div>
</div>
</body>
</html>
--- gt_stats.html.pretty 2022-08-12 22:12:59.000000000 +0200
+++ gt_stats.html.pretty.cn 2022-08-12 17:47:55.000000000 +0200
@@ -19,7 +19,7 @@
<head>
<meta name="generator" content="HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 4452), see www.w3.org" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>Statistics</title>
+<title>统计</title>
<link rel="stylesheet" href="./lib/style.css" type="text/css" />
<script src="./lib/protos.js" type="text/javascript">
</script>
@@ -30,7 +30,7 @@
</head>
<body id="mainBody" onresize="Resize();" onload="init();">
<div id="rootInfoDiv" style=" margin: 0px; right: 0px; left: 0px; bottom: 0px; top: 3px; display: block; background-color: black; padding: 0px; text-align: center; vertical-align: middle; position: absolute; z-index: 600; border: 1px green;" class="roundBorder">
-<div class="infotab"><button id="qsobox" class="infoTablinks active" onclick="resetSearch(); openInfoTab(event, 'workedBoxDiv', 'showWorkedBox')">Logbook</button> <button id="stabox" class="infoTablinks" onclick="openInfoTab(event, 'statBoxDiv', 'showStatBox');">Scores</button> <button id="dxcbox" class="infoTablinks" onclick="openInfoTab(event, 'dxccBoxDiv', 'showDXCCsBox')">DXCCs</button> <button id="cqzbox" class="infoTablinks" onclick="openInfoTab(event, 'cqzoneBoxDiv', 'showCQzoneBox')">CQ Zones</button> <button id="itubox" class="infoTablinks" onclick="openInfoTab(event, 'ituzoneBoxDiv', 'showITUzoneBox')">ITU Zones</button> <button id="waswacbox" class="infoTablinks" onclick="openInfoTab(event, 'waswaczoneBoxDiv', 'showWASWACzoneBox')">WAC / WAS</button> <button id="wpxbox" class="infoTablinks" onclick="openInfoTab(event, 'wpxBoxDiv', 'showWPXBox')">WPX</button> <button id="calbox" class="infoTablinks" onclick="openInfoTab(event, 'callsignBoxDiv', 'showCallsignBox')">Live</button> <button id="ldrbox" class="infoTablinks" onclick="openInfoTab(event, 'decodeLastDiv', null)">Decodes</button></div>
+<div class="infotab"><button id="qsobox" class="infoTablinks active" onclick="resetSearch(); openInfoTab(event, 'workedBoxDiv', 'showWorkedBox')">日志</button> <button id="stabox" class="infoTablinks" onclick="openInfoTab(event, 'statBoxDiv', 'showStatBox');">分数</button> <button id="dxcbox" class="infoTablinks" onclick="openInfoTab(event, 'dxccBoxDiv', 'showDXCCsBox')">DXCCs</button> <button id="cqzbox" class="infoTablinks" onclick="openInfoTab(event, 'cqzoneBoxDiv', 'showCQzoneBox')">CQ 分区</button> <button id="itubox" class="infoTablinks" onclick="openInfoTab(event, 'ituzoneBoxDiv', 'showITUzoneBox')">ITU 分区</button> <button id="waswacbox" class="infoTablinks" onclick="openInfoTab(event, 'waswaczoneBoxDiv', 'showWASWACzoneBox')">WAC / WAS</button> <button id="wpxbox" class="infoTablinks" onclick="openInfoTab(event, 'wpxBoxDiv', 'showWPXBox')">WPX</button> <button id="calbox" class="infoTablinks" onclick="openInfoTab(event, 'callsignBoxDiv', 'showCallsignBox')">在线</button> <button id="ldrbox" class="infoTablinks" onclick="openInfoTab(event, 'decodeLastDiv', null)">已解码</button></div>
<div id="statBoxDiv" class="infoTabcontent">
<div id="statViewDiv" style="margin: 2px; padding: 2px; overflow: auto"></div>
</div>
@@ -57,7 +57,7 @@
<div id="callsignListDiv" style="margin: 2px; padding: 2px"></div>
</div>
<div id="decodeLastDiv" class="infoTabcontent">
-<div id="decodeLastListDiv" style="margin: 2px; padding: 2px; overflow: auto; overflow-x: hidden">No decodes yet</div>
+<div id="decodeLastListDiv" style="margin: 2px; padding: 2px; overflow: auto; overflow-x: hidden">还没有解码</div>
</div>
</div>
</body>