gridtracker/patch.diff

12021 wiersze
428 KiB
Diff
Czysty Wina Historia

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

diff --git a/package.nw/GridTracker.html b/package.nw/GridTracker.html
index ee9df69..6b95e40 100644
--- a/package.nw/GridTracker.html
+++ b/package.nw/GridTracker.html
@@ -31,7 +31,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<html lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title data-i18n="appname-title">GridTracker</title>
+ <title>GridTracker</title>
<link rel="stylesheet" href="./lib/dp-dark.css" />
<link rel="stylesheet" href="./lib/ol.css" />
<link rel="stylesheet" href="./lib/style.css" />
@@ -46,19 +46,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<script src="./lib/moment-timezone-with-data.js" type="text/javascript"></script>
<script src="./lib/datepicker.js"></script>
<script src="./lib/callsigns.js" type="text/javascript"></script>
- <script src="node_modules/jquery/dist/jquery.js"></script>
- <script src="./lib/CLDRPluralRuleParser.js"></script>
- <script src="./lib/jquery.i18n.js"></script>
- <script src="./lib/jquery.i18n.messagestore.js"></script>
- <script src="./lib/jquery.i18n.fallbacks.js"></script>
- <script src="./lib/jquery.i18n.parser.js"></script>
- <script src="./lib/jquery.i18n.emitter.js"></script>
- <script src="./lib/jquery.i18n.language.js"></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"></script>
+ <script src="./lib/screens.js"></script>
</head>
<body id="mainBody" onload="initialDatabases();">
<div id="startupDiv">
@@ -66,24 +57,24 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<img src="gridview.png" alt="" />
</div>
<div>
- <h1><div id="startupVersionDiv" data-i18n="appname-title">GridTracker</div></h1>
+ <h1><div id="startupVersionDiv">GridTracker</div></h1>
</div>
<div>
- <h3><i data-i18n="appname-sub-title">An Amateur Radio Companion</i></h3>
+ <h3><i>Grid网格跟踪助手</i></h3>
</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>
+ <div>没有它, GridTracker就无法继续</div>
<br />
- <div data-i18n="documents.Div3">Please select a directory so that GridTracker can store important files.</div>
+ <div>请选择一个文件夹, 以便GridTracker可以储存重要数据.</div>
<br />
<input id="documentDirectoryInput" type="file" nwdirectory onchange="directoryInput(this)" />
</div>
@@ -94,12 +85,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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"
+ title="您曾经通过的电台网格"
style="
padding-top: 2px;
border: 2px solid #000000;
@@ -114,9 +104,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
<td>
<div
- data-i18n="legend.QSL.label"
id="LegendDivQSL"
- title="Grids with confirmed station(s) by you"
+ title="您曾经通过并确认的电台网格"
style="
padding-top: 2px;
border: 2px solid #000000;
@@ -133,9 +122,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<tr>
<td>
<div
- data-i18n="legend.QSX.label"
id="LegendDivQSX"
- title="Grids with station(s) communicating with stations other than you"
+ title="其他正在通联带网格的电台"
style="
padding-top: 2px;
border: 2px solid #000000;
@@ -150,9 +138,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
<td>
<div
- data-i18n="legend.CQ.label"
id="LegendDivCQ"
- title="Grids with station(s) calling CQ"
+ title="网格内的电台正在呼叫CQ"
style="
padding-top: 2px;
border: 2px solid #000000;
@@ -167,9 +154,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
<td>
<div
- data-i18n="legend.CQDX.label"
id="LegendDivCQDX"
- title="Grids with station(s) calling CQ DX"
+ title="网格内的电台正在呼叫CQ远距离电台"
style="
padding-top: 2px;
border: 2px solid #000000;
@@ -186,9 +172,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<tr>
<td>
<div
- data-i18n="legend.QRZ.label"
id="LegendDivQRZ"
- title="Grids with station(s) calling you!"
+ title="网格内的电台正在呼叫您"
style="
padding-top: 2px;
border: 2px solid #ff0000;
@@ -203,9 +188,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
<td>
<div
- data-i18n="legend.QTH.label"
id="LegendDivQTH"
- title="Your home grid square!"
+ title="您所在的网格!"
style="
padding-top: 2px;
border: 2px solid #000000;
@@ -220,9 +204,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
<td>
<div
- data-i18n="legend.WSPR.label"
id="LegendDivWSPR"
- title="WSPR Stations"
+ title="WSPR 电台"
style="
padding-top: 2px;
border: 2px solid black;
@@ -239,7 +222,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</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"
@@ -250,9 +233,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<tr>
<td colspan="2">
<div
- data-i18n="appname-title"
class="button"
- title="Click to hide menu"
+ title="单击隐藏菜单"
style="
color: #fff;
margin: 0;
@@ -270,14 +252,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</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">
@@ -285,7 +267,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<div
id="localDXcall"
style="cursor: pointer"
- title="Who you're calling or last called"
+ title="您呼叫谁或是最后呼叫了谁"
onclick="startLookup(g_localDXcall,localDXGrid.innerHTML);"
oncontextmenu="showWorkedByCall(g_localDXcall, event);"
>
@@ -296,14 +278,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<div
id="localDXGrid"
style="cursor: pointer"
- title="Their Gridsquare"
+ 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>
@@ -320,7 +302,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<div
id="localDXDistance"
style="font-size: smaller; font-weight: italic; color: lightblue"
- title="Distance"
+ title="距离"
>
&nbsp;
</div>
@@ -329,7 +311,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<div
id="localDXAzimuth"
style="font-size: smaller; font-weight: italic; color: lightgreen"
- title="Heading"
+ title="方向"
>
&nbsp;
</div>
@@ -362,14 +344,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
id="operatingMode"
style="margin: 0; margin-bottom: 1px; cursor: pointer"
onclick="ignoreMessagesToggle()"
- title="Click to ignore incoming messages"
+ title="单击以忽略传入的信息"
>
<div
id="txrxdec"
style="background-color: Green; border-style: outset; border-color: yellow; border-width: 3px"
class="roundBorder"
>
- waiting for message
+ 正在等待数据传入
</div>
</div>
@@ -385,11 +367,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
margin-bottom: 1px;
padding: 0px;
"
- title="PSK-Reporter Band Activity"
+ title="PSKReporter网站波段活动"
oncontextmenu="toggleBaWindow(event)"
>
<div id="graphDiv" style="bottom: 0; position: absolute; width: 100%; padding: 0px; margin-bottom: 2px">
- <br />...no data yet...<br />
+ <br />...还没有数据...<br />
&nbsp;
</div>
</div>
@@ -398,33 +380,31 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
id="actionDiv"
style="border: 1px solid blue; margin: 1px; margin-bottom: 1px; padding: 3px"
class="roundBorder"
- title="Quick Stats"
+ title="快速统计"
>
<table align="center">
<tr>
<td
- data-i18n="quickStats.CallRX.label"
style="cursor: pointer"
onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox)"
- title="Callsigns Heard"
+ title="接收到的呼号数量"
align="right"
>
- Rx Calls
+ 接收的数量
</td>
<td
style="cursor: pointer"
onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox)"
- title="Callsigns Heard"
+ 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"
+ title="已通联电台数量"
align="right"
>
QSO
@@ -433,7 +413,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
style="cursor: pointer"
class="roundBorderValue"
onclick="resetSearch(); openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox);"
- title="Worked Stations"
+ title="曾经通联电台数量"
align="center"
>
<div id="qsoCount">0</div>
@@ -441,28 +421,26 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</tr>
<tr>
<td
- data-i18n="quickStats.DXCCRx.label"
style="cursor: pointer"
onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox);"
- title="DXCC Heard"
+ title="接收到DXCC数量"
align="right"
>
- Rx DXCC
+ 接收的 DXCC
</td>
<td
style="cursor: pointer"
class="roundBorderValue"
onclick="openInfoTab('calbox', 'callsignBoxDiv', showCallsignBox);"
- title="DXCC Heard"
+ 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"
+ title="显示QSL数量"
align="right"
>
QSL
@@ -471,7 +449,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
style="cursor: pointer"
class="roundBorderValue"
onclick="resetSearch(); g_filterQSL = 'true'; openInfoTab('qsobox', 'workedBoxDiv', showWorkedBox)"
- title="Show Confirmed List"
+ title="显示已确认数量"
align="center"
>
<div id="qslCount">0</div>
@@ -480,23 +458,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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&#10;(does not delete files)"
+ title="清除或重新载入日志数据&#10;(不会删除文件)"
>
Clear Log
</div>
@@ -508,94 +478,93 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
id="filterDiv"
class="roundBorder"
style="position: relative; background-color: #000; border: 1px solid cyan; margin: 1px; margin-bottom: 1px"
- title="Map View Control Panel"
+ 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&#10;(Auto tracks WSJT-X)">
- <td data-i18n="mapFilter.band.label"><font color="lightgreen">Band</font></td>
+ <tr title="选择波段&#10;(自动跟踪 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="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="">混合模式</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="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="">混合模式</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="mixed">混合模式</option>
<option value="xx" disabled>----------</option>
- <option data-i18n="mapFilter.prop.Unknown" value="">Unknown</option>
+ <option value="">未知</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="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"
+ title="循环显示"
style="
min-width: 94px;
background-color: darkgreen;
@@ -605,7 +574,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
margin-bottom: 2px;
"
>
- Logbook &amp; Live
+ 实时 &amp; 日志
</div>
</td>
</tr>
@@ -617,81 +586,81 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
class="iconButton"
style="padding: 0px"
onclick="openCallRosterWindow();"
- title="Open Call Roster"
+ title="打开呼叫列表(R)"
>
<img src="./img/roster-button.png" class="buttonImgWide" />
</div>
- <div id="pushPinButton" onclick="togglePushPinMode();" class="iconButton" title="Toggle Push-Pin Mode">
+ <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="Open Lookup Window">
+ <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="Show Stats">
+ <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="Toggle Online/Offline Mode">
+ <div id="modeModeDiv" onclick="toggleOffline()" class="iconButton" title="切换在线/离线模式">
<img id="offlineImg" src="" class="buttonImg" />
</div>
- <div id="earthShadow" onclick="toggleEarth()" class="iconButton" title="Toggle Grayline">
+ <div id="earthShadow" onclick="toggleEarth()" class="iconButton" title="显示昼夜灰线图层(N)">
<img id="earthImg" src="" class="buttonImg" />
</div>
- <div id="legendToggleDiv" onclick="toggleLegend()" class="iconButton" title="Toggle Map Legend">
+ <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="Share your On-Air Status with other GridTracker users"
+ title="让其他GridTracker用户看到您的在线状态"
>
<img id="gtShareFlagImg" src="./img/share-off.png" class="buttonImg" />
</div>
- <div id="helpButton" onclick="toggleHelp();" class="iconButton" title="Toggle Hotkey List">
+ <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="Cycle Award Overlays">
+ <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="Toggle Lightning Strikes">
+ <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="Toggle Moon">
+ <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="Toggle Maidenhead Width">
+ <div id="gridModeDiv" onclick="toggleGridMode()" class="iconButton" title="切换梅登黑德网格位数(W)">
<img id="modeImg" src="" class="buttonImg" />
</div>
- <div id="settingsButton" onclick="showSettingsBox();" class="iconButton" title="Settings">
+ <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="Load ADIF Log">
+ <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="View Current Conditions">
+ <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="Donate with PayPal">
+ <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="Toggle Audio Mute">
+ <div id="alterMuteDiv" onclick="toggleAlertMute()" class="iconButton" title="切换静音状态(M)">
<img id="alertMuteImg" src="" class="buttonImg" />
</div>
- <div id="buttonPSKSpotsBoxDiv" onClick="togglePskSpots();" class="iconButton" title="View Spot Reports">
+ <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="Your PSK 24hour report">
+ <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="Download log from QRZ.com"
+ title="从QRZ.com下载日志"
>
<img id="qrzLogImg" src="./img/log_QRZ.png" class="buttonImg" />
</div>
@@ -699,7 +668,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
id="buttonLOTWCheckBoxDiv"
onclick="if ( ValidateText(lotwLogin) && ValidateText(lotwPassword) ) { grabLOtWLog(false); } "
class="iconButton"
- title="Download log from Logbook of the World"
+ title="从LOTW下载日志"
>
<img id="lotwLogImg" src="./img/log_LoTW.png" class="buttonImg" />
</div>
@@ -707,7 +676,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
id="buttonClubCheckBoxDiv"
onclick="if ( ValidateText(clubEmail) && ValidateText(clubPassword) ) grabClubLog()"
class="iconButton"
- title="Download log from ClubLog"
+ title="从ClubLog下载日志"
>
<img id="ClubLogImg" src="./img/log_club.png" class="buttonImg" />
</div>
@@ -715,23 +684,23 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
id="buttonAdifCheckBoxDiv"
onclick="startupAdifLoadFunction()"
class="iconButton"
- title="Reload Local ADIF Files"
+ title="重新载入本地ADIF文件"
>
<img src="./img/log_local.png" class="buttonImg" />
</div>
- <div id="timezoneButton" onclick="toggleTimezones()" class="iconButton" title="Toggle Timezone Layer">
+ <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="Toggle US Nexrad">
+ <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="Toggle All Grid Overlay">
+ <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="Toggle View GridTracker Users">
+ <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="Messaging Window">
+ <div id="msgButton" onclick="showMessaging();" class="iconButton" title="信息服务窗口(聊天室)">
<img id="msgImg" src="./img/gt_chat.png" class="buttonImg" />
</div>
</div>
@@ -743,7 +712,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -874,227 +843,227 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -1103,9 +1072,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<br />
<div
class="button"
- onclick="require('nw.gui').Shell.openExternal('https://storage.googleapis.com/gt_app/gt_print.html');"
+ onclick="require('nw.gui').Shell.openExternal('http://www.srac.cn/gt-app/gt_print.html');"
>
- Print
+ 打印
</div>
</div>
<div style="top: 6px; right: 6px; position: absolute">
@@ -1129,18 +1098,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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>
+ <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">
@@ -1149,10 +1118,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -1165,19 +1134,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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"
+ title="启用/禁用本地组播网络"
type="checkbox"
id="multicastEnable"
onclick="setMulticastEnable(this);"
@@ -1186,7 +1155,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</tr>
<tr>
<td id="multicastTD" style="display: none">
- <label data-i18n="settings.general.UDP.IP.label" for="multicastIpInput">IP</label>
+ IP地址
<input
id="multicastIpInput"
type="text"
@@ -1200,7 +1169,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</tr>
<tr>
<td>
- <label data-i18n="settings.general.UDP.Port.label" for="udpPortInput">Port</label>
+ 端口
<input
id="udpPortInput"
type="text"
@@ -1219,14 +1188,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
+ IP
<input
id="udpForwardIpInput"
type="text"
@@ -1240,7 +1209,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</tr>
<tr>
<td>
- <label data-i18n="settings.general.Fwd.Port.label" for="udpForwardPortInput">Port</label>
+ 端口
<input
id="udpForwardPortInput"
type="text"
@@ -1254,9 +1223,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</tr>
<tr>
<td>
- <label data-i18n="settings.general.Fwd.Enabled.label" for="setUdpForwardEnable">Enabled?</label>
- <input
- title="Enable / Disable UDP Message forwarding"
+ 启用?<input
+ title="启用/禁用转发UDP信息"
type="checkbox"
id="udpForwardEnable"
onclick="setUdpForwardEnable(this);"
@@ -1274,7 +1242,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<div id="CenterGridDiv" class="mapItem">
<table align="center">
<tr>
- <td data-i18n="settings.general.CenterGrid.label">Center Gridsquare</td>
+ <td>所在网格</td>
</tr>
<tr>
<td>
@@ -1295,15 +1263,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -1316,9 +1284,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -1332,7 +1300,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -1351,18 +1319,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<table align="center">
<tr>
<td>
- <div data-i18n="settings.general.ClearAllSettings.label" class="button" onclick="if ( imSureCheck.checked ) { clearAndReload(); }">
- Clear All Settings!
+ <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
+ 是的, 我确定!<input
type="checkbox"
id="imSureCheck"
- title="Must be checked to enable clearing of settings"
+ title="必须选择这才能清除设置"
/>
</td>
</tr>
@@ -1374,13 +1341,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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 style="display: none" id="importSettingsButton" class="button" onclick="importSettings();">
+ 导入设置
</div>
</td>
</tr>
@@ -1399,26 +1366,26 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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"
+ <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>
@@ -1428,10 +1395,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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...&#10;add extra data from Lookup service">
+ <td title="当完成一个QSO时...&#10;增加来自查找得到的额外数据">
<input type="checkbox" id="lookupMerge" onclick="changeLookupMerge(this)" />
</td>
</tr>
@@ -1440,10 +1407,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <td title="如果缺少QSO网格则增加查找网格数据">
<input type="checkbox" id="lookupMissingGrid" onclick="changeLookupMerge(this)" />
</td>
</tr>
@@ -1453,10 +1420,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <td title="在传输时打开查找窗口">
<input type="checkbox" id="lookupOnTx" onclick="changelookupOnTx()" />
</td>
</tr>
@@ -1465,10 +1432,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <td title="记录日志后关闭查找窗口">
<input type="checkbox" id="lookupCloseLog" onclick="changelookupOnTx()" />
</td>
</tr>
@@ -1477,10 +1444,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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.">
+ <td title="使用其他服务之前使用呼号查找. 免费的Callook yields比免费的QRZ有更多的数据.">
<input type="checkbox" id="lookupCallookPreferred" onclick="lookupValueChanged()" />
</td>
</tr>
@@ -1491,44 +1458,44 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>美国 ULS</td>
<td>
<input type="checkbox" id="ulsUseEnable" onclick="ulsValuesChanged();" />
</td>
- <td id="ulsUpdatedTd">Never</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>LoTW</td>
<td>
<input type="checkbox" id="lotwUseEnable" onclick="lotwValuesChanged();" />
</td>
- <td id="lotwUpdatedTd">Never</td>
+ <td id="lotwUpdatedTd">从未</td>
<td id="lotwCountTd">0</td>
</tr>
<tr>
- <td data-i18n="settings.lookup.db.eQSL">eQSL</td>
+ <td>eQSL</td>
<td>
<input type="checkbox" id="eqslUseEnable" onclick="eqslValuesChanged();" />
</td>
- <td id="eqslUpdatedTd">Never</td>
+ <td id="eqslUpdatedTd">从未</td>
<td id="eqslCountTd">0</td>
</tr>
<tr>
- <td data-i18n="settings.lookup.db.OQRS">ClubLog OQRS</td>
+ <td>ClubLog OQRS</td>
<td>
<input type="checkbox" id="oqrsUseEnable" onclick="oqrsValuesChanged();" />
</td>
- <td id="oqrsUpdatedTd">Never</td>
+ <td id="oqrsUpdatedTd">从未</td>
<td id="oqrsCountTd">0</td>
</tr>
</table>
@@ -1539,7 +1506,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1552,7 +1519,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1574,7 +1541,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1596,7 +1563,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1618,10 +1585,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <td title="朗读说出呼号和网格的音质">
<input type="checkbox" id="speechPhonetics" onclick="changeSpeechValues()" />
</td>
</tr>
@@ -1631,7 +1598,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1644,7 +1611,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1666,15 +1633,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -1684,7 +1651,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -1699,17 +1666,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<div
style="padding: 5px"
class="mapItem"
- title="Filter Logbook QSOs to include these Callsigns only&#10;(comma separated)"
+ title="仅筛选日志 QSO 以包含这些呼号&#10;(逗号分隔)"
>
<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>
+ Enable?
<input
- title="Enable Filtering"
+ title="启用筛选"
type="checkbox"
id="workingCallsignEnable"
onclick="workingCallsignEnableChanged(this);"
@@ -1718,8 +1685,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</tr>
<tr>
<td id="workingCallsignsTd">
- <label data-i18n="settings.logbook.callsigns.callsigns" for="workingCallsignsValue">Callsign(s)</label>
- <input
+ 呼号(s)<input
id="workingCallsignsValue"
type="text"
class="inputTextValue"
@@ -1734,13 +1700,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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"
+ title="启用筛选"
type="checkbox"
id="workingDateEnable"
onclick="workingDateEnableChanged(this);"
@@ -1754,14 +1720,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
style="width: auto; font-size: larger; font-weight: bold"
id="workingDateString"
>
- No Date
+ 没有日期
</div>
</td>
+
<td></td>
</tr>
<tr>
- <td id="workingDateTd" title="Date is UTC">
+ <td id="workingDateTd" title="日期是以 UTC">
<input style="display: none" type="text" id="workingDateValue" />
<div id="pick-inline"></div>
</td>
@@ -1770,12 +1737,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</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)"
+ title="套用变更和重新汇入日志"
>
Apply Changes
</div>
@@ -1786,11 +1752,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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 align="center"><b><i>网格颜色</i></b>
</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>
@@ -1799,7 +1765,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1811,7 +1777,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1823,7 +1789,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1836,7 +1802,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1849,7 +1815,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1861,7 +1827,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1873,7 +1839,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1890,10 +1856,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <td title="将接收Spots放置在网格图层上">
<input type="checkbox" id="spotMergeValue" onclick="changeSpotValues();redrawSpots();" />
</td>
</tr>
@@ -1902,7 +1868,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -1926,10 +1892,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <td title="切换用即时网格分离QSL网格">
<input type="checkbox" id="splitQSLValue" onclick="changeSplitQSL()" />
</td>
</tr>
@@ -1938,10 +1904,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <td title="切换鼠标自动移至网格表上">
<input type="checkbox" id="mouseOverValue" onclick="changeMouseOverValue()" />
</td>
</tr>
@@ -1951,7 +1917,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -1983,7 +1949,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -1995,17 +1961,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <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"
+ title="动画速度"
type="range"
min="1"
max="20"
@@ -2022,7 +1988,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -2047,7 +2013,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2069,7 +2035,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2089,7 +2055,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2111,7 +2077,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2133,7 +2099,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2155,7 +2121,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2176,7 +2142,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2188,10 +2154,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <td title="切换使地图适合用于QRZ">
<input type="checkbox" id="fitQRZvalue" onclick="changeFitQRZvalue()" />
</td>
</tr>
@@ -2201,7 +2167,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2213,10 +2179,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <td title="如果一个电台缺少网格则使用DXCC">
<input type="checkbox" id="qrzDxccFallbackValue" onclick="changeQrzDxccFallbackValue();" />
</td>
</tr>
@@ -2225,7 +2191,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2243,17 +2209,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</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">
+ <td title="切换前往spots的路径">
<input type="checkbox" id="spotPathsValue" onclick="changeSpotValues();redrawSpots();" />
</td>
</tr>
@@ -2263,7 +2229,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2289,10 +2255,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
+ <td title="切换自动夜间地图切换">
<input type="checkbox" id="nightMapEnable" onclick="changeNightMapEnable(this);" />
</td>
</tr>
@@ -2302,7 +2268,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -2315,7 +2281,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2335,7 +2301,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2355,7 +2321,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2373,7 +2339,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</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>
@@ -2381,7 +2347,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2412,16 +2378,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>
<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
@@ -2439,12 +2405,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
onclick="adifLogQsoCheckBoxChanged(this);"
/>
</td>
- <td data-i18n="settings.logging.gridtracker.details">GridTracker QSO Logfile</td>
+ <td>GridTracker QSO日志文件</td>
<td></td>
<td></td>
</tr>
<tr>
- <td data-i18n="settings.logging.LocalFiles.source">Local File(s)</td>
+ <td>本地文件(s)</td>
<td>
<input
type="checkbox"
@@ -2467,10 +2433,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -2480,7 +2446,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<td></td>
</tr>
<tr id="pskTr">
- <td data-i18n="settings.logging.PSKReporter.source">PSK-Reporter</td>
+ <td>PSK-Reporter</td>
<td>
<input
type="checkbox"
@@ -2499,13 +2465,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</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>QRZ.com</td>
<td>
<input
type="checkbox"
@@ -2531,8 +2497,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</td>
<td>
- <label data-i18n="settings.logging.QRZcom.details.apikey" for="qrzApiKey">API Key</label>
- <input
+ API 密匙<input
id="qrzApiKey"
type="password"
class="inputTextValue"
@@ -2542,12 +2507,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</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>ClubLog</td>
<td>
<input
type="checkbox"
@@ -2573,30 +2538,24 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</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"
+ 呼号<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 />
- <label data-i18n="settings.logging.ClubLog.details.email" for="clubEmail">Email</label>
- <input id="clubEmail" type="text" class="inputTextValue" size="20"
+ <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) && ValidateText(clubPassword) ) grabClubLog(true);"
>
- Test
+ 测试
</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>
@@ -2608,16 +2567,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</td>
<td>
- <label data-i18n="settings.logging.HRDLogNet.details.callsign" for="HRDLOGCallsign">Callsign</label>
- <input
+ 呼号<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
+ 上传码<input
id="HRDLOGUploadCode"
type="password"
class="inputTextValue"
@@ -2628,24 +2585,22 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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
+ title="单击以了解如何获取上传码"
+ >*** 如何获取上传码 ***</a
>
</td>
<td>
<div
- data-i18n="settings.logging.HRDLogNet.test.button"
class="button"
onclick="if ( ValidateText(HRDLOGCallsign) && ValidateText(HRDLOGUploadCode) ) hrdCredentialTest(true);"
>
- Test
+ 测试
</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>
@@ -2657,8 +2612,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</td>
<td>
- <label data-i18n="settings.logging.CloudLog.details.URL" for="CloudlogURL">URL</label>
- <input
+ URL<input
id="CloudlogURL"
type="text"
class="inputTextValue"
@@ -2666,17 +2620,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
oninput="ValidateText(this); adifTextValueChange(this);"
/>
<br />
- <label data-i18n="settings.logging.CloudLog.details.API" for="CloudlogAPI">API Key</label>
- <input
+ API 密钥<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"
@@ -2685,17 +2630,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
<td>
<div
- data-i18n="settings.logging.CloudLog.test.button"
class="button"
onclick="if ( ValidateText(CloudlogURL) && ValidateText(CloudlogAPI) ) ClublogTest(true);"
>
- Test
+ 测试
</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>
@@ -2707,24 +2651,21 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</td>
<td>
- <label data-i18n="settings.logging.eQSLcc.details.user" for="eQSLUser">User</label>
- <input
+ 用户名<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
+ 密码<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
+ QTH 昵称<input
type="checkbox"
checked="false"
id="nicknameeQSLCheckBox"
@@ -2741,17 +2682,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
<td>
<div
- data-i18n="settings.logging.eQSLcc.test.button"
class="button"
onclick="if ( ValidateText(eQSLUser) && ValidateText(eQSLPassword) ) eQSLTest(true);"
>
- Test
+ 测试
</div>
</td>
<td id="eQSLTestResult"></td>
</tr>
<tr>
- <td data-i18n="settings.logging.LoTW.source">LotW</td>
+ <td>LotW</td>
<td>
<input
type="checkbox"
@@ -2777,22 +2717,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</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"
+ 登入名称<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>
+ <div class="button" id="selectTQSLButton">TQSL 路径</div>
<text id="tqslFileDiv" style="margin-top: 2px; padding: 2px" class="roundBorderValue"
- >No file selected</text
+ >未选择文件</text
><br />
- <label data-i18n="settings.logging.LoTW.details.TQSLPass" for="lotwTrusted">TQSL Password</label>
- <input id="lotwTrusted" type="password" class="inputTextValue" size="8"
+ TQSL 密码<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
+ 电台名称<select
id="lotwStation"
class="inputTextValue"
onchange="ValidateText(this); adifTextValueChange(this);"
@@ -2801,21 +2736,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
<td>
<div
- data-i18n="settings.logging.LoTW.test.downloadButton"
class="button"
onclick="if ( ValidateText(lotwLogin) && 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 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>
@@ -2828,12 +2762,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</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"
+ IP地址<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"
+ n1mmLoggerChanged(); "/ > 端口<input id="N1MMPortInput" type="text" class="inputTextValue"
maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);'
oninput="ValidatePort(this,buttonN1MMCheckBox, null ); n1mmLoggerChanged(); " / >
</td>
@@ -2841,7 +2772,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<td></td>
</tr>
<tr>
- <td data-i18n="settings.logging.Log4OM.source">Log4OM</td>
+ <td>Log4OM</td>
<td></td>
<td></td>
<td>
@@ -2854,12 +2785,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</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"
+ IP地址<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
+ 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(); " / >
@@ -2868,7 +2796,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<td></td>
</tr>
<tr>
- <td data-i18n="settings.logging.N3FJP.source">N3FJP Loggers</td>
+ <td>N3FJP 日志</td>
<td></td>
<td></td>
<td>
@@ -2881,12 +2809,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</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"
+ IP地址<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"
+ acLogLoggerChanged(); "/ > 端口<input id="acLogPortInput" type="text" class="inputTextValue"
maxlength="5" size="5" onkeypress='return validNumberKeys(event.charCode);'
oninput="ValidatePort(this,buttonacLogCheckBox, null ); acLogLoggerChanged(); " / >
</td>
@@ -2894,7 +2819,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<td></td>
</tr>
<tr>
- <td data-i18n="settings.logging.DXKeeper.source">DXKeeper</td>
+ <td>DXKeeper</td>
<td></td>
<td></td>
<td>
@@ -2907,12 +2832,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</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"
+ IP地址<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
+ 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(); " / >
@@ -2921,7 +2843,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<td></td>
</tr>
<tr>
- <td data-i18n="settings.logging.HRDLogbook.source">HRD Logbook</td>
+ <td>HRD Logbook</td>
<td></td>
<td></td>
<td>
@@ -2934,12 +2856,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/>
</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"
+ IP地址<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
+ 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>
@@ -2953,7 +2873,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -2965,7 +2885,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -2974,7 +2894,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<td colspan="2">
<input
type="range"
- min="5"
+ min="15"
max="300"
value="120"
step="15"
@@ -2989,7 +2909,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -3002,10 +2922,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -3017,10 +2937,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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">
@@ -3031,9 +2951,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</div>
<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">
@@ -3043,8 +2963,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -3066,43 +2986,43 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
+ <th>呼号</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>
+ <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>
@@ -3118,20 +3038,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
</tr>
<tr>
- <th data-i18n="settings.alerts.AudioAlert.Types.Grid">Grid</th>
+ <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>
@@ -3147,20 +3067,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
</tr>
<tr>
- <th data-i18n="settings.alerts.AudioAlert.Types.DXCC">DXCC</th>
+ <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>
@@ -3176,20 +3096,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
</tr>
<tr>
- <th data-i18n="settings.alerts.AudioAlert.Types.CQZone">CQ Zone</th>
+ <th>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>
+ <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>
+ <select id="huntCQzNotify" onchange="wantedChanged(this);" name="D24">
+ <option value="1">文本朗读</option>
+ <option value="0">媒体文件</option>
</select>
</td>
<td>
@@ -3205,20 +3125,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
</tr>
<tr>
- <th data-i18n="settings.alerts.AudioAlert.Types.ITUZone">ITU Zone</th>
+ <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>
@@ -3234,20 +3154,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td>
</tr>
<tr>
- <th data-i18n="settings.alerts.AudioAlert.Types.USStates">US States</th>
+ <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>
@@ -3269,59 +3189,82 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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>
+ <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>
+ <input type="checkbox" id="wantGrid" onchange="exceptionValuesChanged();" />需要网格
</td>
</tr>
<tr>
+ <td><input type="checkbox" id="wantMinDB" onchange="exceptionValuesChanged();" />最小分贝</td>
<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"/>
+ <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();" />最大时差</td>
<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"/>
+ <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();" />最低频率</td>
<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"/>
+ <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="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"/>
+ <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>
@@ -3331,41 +3274,51 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
+ <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>
+ <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>
+ <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>
+ <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>
+ <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>
+ <input type="checkbox" id="useseQSL" onchange="exceptionValuesChanged();" />使用eQSL
</div>
</td>
</tr>
@@ -3377,33 +3330,34 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<br />
<div id="alertFormDiv" style="display: inline-block">
<table align="center" class="roundBorder" style="border: 3px groove darkred; margin: 0 auto">
- <th data-i18n="settings.alerts.CustomAlerts.label" colspan="8">Custom Alerts</th>
+ <th colspan="8">自定义警报</th>
<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);" / >
+ <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>
@@ -3411,14 +3365,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</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>
@@ -3431,11 +3385,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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);"/>
+ <input
+ title="启用/禁用信息"
+ type="checkbox"
+ id="msgEnable"
+ onclick="setMsgEnable(this);"
+ />
</td>
</tr>
</table>
@@ -3443,11 +3402,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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);"/>
+ <input
+ title="启用/禁用Spot报告"
+ type="checkbox"
+ id="GTspotEnable"
+ onclick="setGTspotEnable(this);"
+ />
</td>
</tr>
</table>
@@ -3457,20 +3421,31 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
+ <select
+ id="msgAlertSelect"
+ name="msgAlertSelect"
+ onchange="newMessageSetting(this); alertChatMessage();"
+ >
+ <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);"/>
+ <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>
@@ -3480,19 +3455,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -3501,13 +3476,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -3517,13 +3492,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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>
@@ -3533,11 +3508,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<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);" / >
+ <input id="msgAwayText" type="text" class="inputTextValue" size="30" oninput="ValidateText(this);
+ newMessageSetting(this);" / >
</td>
</tr>
</table>
@@ -3546,16 +3522,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</div>
<div id="aboutDiv" class="settingsTabcontent">
<div class="mapItem" style="padding: 4px">
- <h2><div data-i18n="settings.about.AppVersion" id="aboutVersionDiv">GridTracker</div></h2>
+ <h2><div id="aboutVersionDiv">GridTracker</div></h2>
<p>
- GridTracker is a warehouse of amateur radio information presented in an easy to use interface<br />
+ GridTracker 是一个业余无线电信息仓库,并把所有信息呈现在<br/>一个易于使用的界面中,它包含了实时数据解码、<br/>
+ 多平台保存日志、现场报告、实时天气、当前太阳<br/>数据预报等诸多功能!<br />
<br />
- From Live Traffic Decodes<br />
+ 来自实时流量解码<br />
Logbooks<br />
- Real-time Spot Reports<br />
- Weather<br />
- Current Solar Conditions and More!<br />
- Learn more at
+ 实时Spot报告<br />
+ 天气<br />
+ 目前的太阳状况和更多!<br />
+ 了解更多信息
<a
href="#"
style="cursor: pointer"
@@ -3563,8 +3540,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>GridTracker.org!</a
>
</p>
- <p>Copyright &copy; 2022 GridTracker.org</p>
- <img src="./gridview.png" /> <br />
+ <p>版权所有 &copy; 2022 GridTracker.org</p>
+ <img src="./gridview.png" /> <br /> 简体中文由 BD3OOX VR2UPU 翻译<br />石家庄业余无线电俱乐部 FT8数据通信俱乐部<br /><br />
</div>
</div>
<div id="updateSettingsDiv" class="settingsTabcontent">
@@ -3594,11 +3571,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
z-index: 650;
border: 3px groove red;
white-space: nowrap;
- overflow: hidden;"
- class="roundBorder">
- <div data-i18n="alertPopup.title" id="alertPopTextDiv"><b></b>New Alerts!!!</b></div>
+ 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"
@@ -3614,23 +3593,24 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
text-align: center;
vertical-align: middle;
position: absolute;
- z-index: 800;">
- <h1 data-i18n="updatePopup.newUpdate">GridTracker Updated!</h1>
+ 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);" />
+ 停止询问?<input type="checkbox" checked="false" id="stopAskingCheckbox" onclick="stopAsking(this);" />
</td>
</tr>
</table>
@@ -3651,9 +3631,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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>
+ 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>
diff --git a/package.nw/data/mh-root-prefixed.json b/package.nw/data/mh-root-prefixed.json
index 1da0b5d..0aa7921 100644
--- a/package.nw/data/mh-root-prefixed.json
+++ b/package.nw/data/mh-root-prefixed.json
@@ -4,7 +4,7 @@
"dxcc": "1",
"cc": "CA",
"ccc": "CAN",
- "name": "Canada",
+ "name": "加拿大",
"continent": "NA",
"ituzone": ["2", "3", "4", "9", "75"],
"cqzone": ["1", "2", "3", "4", "5"],
@@ -1513,7 +1513,7 @@
"dxcc": "2",
"cc": "SA",
"ccc": "SAU",
- "name": "Abu Ali Is.",
+ "name": "阿布阿里是群岛",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["21"],
@@ -1538,7 +1538,7 @@
"dxcc": "3",
"cc": "AF",
"ccc": "AFG",
- "name": "Afghanistan",
+ "name": "阿富汗",
"continent": "AS",
"ituzone": ["40"],
"cqzone": ["21"],
@@ -1614,7 +1614,7 @@
"dxcc": "4",
"cc": "MP",
"ccc": "MNP",
- "name": "Agalega & St. Brandon",
+ "name": "阿加莱加群岛及圣布兰登群岛",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
@@ -1639,7 +1639,7 @@
"dxcc": "5",
"cc": "AX",
"ccc": "ALA",
- "name": "Aland Is.",
+ "name": "奥兰群岛",
"continent": "EU",
"ituzone": ["18"],
"cqzone": ["15"],
@@ -1677,7 +1677,7 @@
"dxcc": "6",
"cc": "US",
"ccc": "USA",
- "name": "Alaska",
+ "name": "阿拉斯加",
"continent": "NA",
"ituzone": ["1", "2"],
"cqzone": ["1"],
@@ -2510,7 +2510,7 @@
"dxcc": "7",
"cc": "AL",
"ccc": "ALB",
- "name": "Albania",
+ "name": "阿尔巴尼亚",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -2535,7 +2535,7 @@
"dxcc": "9",
"cc": "AS",
"ccc": "ASM",
- "name": "American Samoa",
+ "name": "美属萨摩亚",
"continent": "OC",
"ituzone": ["62"],
"cqzone": ["32"],
@@ -2575,7 +2575,7 @@
"dxcc": "10",
"cc": "FR",
"ccc": "FRA",
- "name": "Amsterdam & St. Paul Is.",
+ "name": "阿姆斯特丹岛和圣保罗岛",
"continent": "AF",
"ituzone": ["68"],
"cqzone": ["39"],
@@ -2610,7 +2610,7 @@
"dxcc": "11",
"cc": "IN",
"ccc": "IND",
- "name": "Andaman & Nicobar Is.",
+ "name": "安达曼群岛和尼科巴群岛",
"continent": "AS",
"ituzone": ["49"],
"cqzone": ["26"],
@@ -2652,7 +2652,7 @@
"dxcc": "12",
"cc": "AI",
"ccc": "AIA",
- "name": "Anguilla",
+ "name": "安圭拉岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -2677,7 +2677,7 @@
"dxcc": "13",
"cc": "AQ",
"ccc": "ATA",
- "name": "Antarctica",
+ "name": "南极洲",
"continent": "OC",
"ituzone": ["67", "69", "70", "71", "72", "73", "74"],
"cqzone": ["12", "13", "29", "30", "32", "38", "39"],
@@ -6216,7 +6216,7 @@
"dxcc": "14",
"cc": "AM",
"ccc": "ARM",
- "name": "Armenia",
+ "name": "亚美尼亚",
"continent": "AS",
"ituzone": ["29"],
"cqzone": ["21"],
@@ -6241,7 +6241,7 @@
"dxcc": "15",
"cc": "RX",
"ccc": "RUS",
- "name": "Asiatic Russia",
+ "name": "俄罗斯亚洲",
"continent": "AS",
"ituzone": [
"20",
@@ -10615,13 +10615,13 @@
"dxcc": "16",
"cc": "NZ",
"ccc": "NZL",
- "name": "Campbell Is.",
+ "name": "坎贝尔群岛",
"continent": "OC",
"ituzone": ["60"],
"cqzone": ["32"],
"timezone": "12",
"ccode": "554",
- "aname": "New Zeland Subantartic Islands",
+ "aname": "亚南塔群岛",
"mh": ["RD47"],
"prefix": ["ZL9"],
"worked": false,
@@ -10640,7 +10640,7 @@
"dxcc": "17",
"cc": "VE",
"ccc": "VEN",
- "name": "Aves I.",
+ "name": "阿维斯岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -10665,7 +10665,7 @@
"dxcc": "18",
"cc": "AZ",
"ccc": "AZE",
- "name": "Azerbaijan",
+ "name": "阿塞拜疆",
"continent": "AS",
"ituzone": ["29"],
"cqzone": ["21"],
@@ -10729,7 +10729,7 @@
"dxcc": "20",
"cc": "US",
"ccc": "USA",
- "name": "Baker & Howland Is.",
+ "name": "贝克岛和豪兰岛",
"continent": "OC",
"ituzone": ["61"],
"cqzone": ["31"],
@@ -10754,7 +10754,7 @@
"dxcc": "21",
"cc": "ES",
"ccc": "ESP",
- "name": "Balearic Is.",
+ "name": "巴里亚利群岛",
"continent": "EU",
"ituzone": ["37"],
"cqzone": ["14"],
@@ -10842,7 +10842,7 @@
"dxcc": "22",
"cc": "PW",
"ccc": "PLW",
- "name": "Palau",
+ "name": "帛琉",
"continent": "OC",
"ituzone": ["64"],
"cqzone": ["27"],
@@ -10867,7 +10867,7 @@
"dxcc": "24",
"cc": "BV",
"ccc": "BVT",
- "name": "Bouvet",
+ "name": "布韦岛",
"continent": "AF",
"ituzone": ["67"],
"cqzone": ["38"],
@@ -10892,7 +10892,7 @@
"dxcc": "27",
"cc": "BY",
"ccc": "BLR",
- "name": "Belarus",
+ "name": "白俄罗斯",
"continent": "EU",
"ituzone": ["29"],
"cqzone": ["16"],
@@ -10943,7 +10943,7 @@
"dxcc": "29",
"cc": "ES",
"ccc": "ESP",
- "name": "Canary Is.",
+ "name": "加那利群岛",
"continent": "AF",
"ituzone": ["36"],
"cqzone": ["33"],
@@ -11067,7 +11067,7 @@
"dxcc": "31",
"cc": "KI",
"ccc": "KIR",
- "name": "Central Kiribati",
+ "name": "中基里巴斯岛",
"continent": "OC",
"ituzone": ["62"],
"cqzone": ["31"],
@@ -11092,7 +11092,7 @@
"dxcc": "32",
"cc": "ES",
"ccc": "ESP",
- "name": "Ceuta & Melilla",
+ "name": "休达和梅利利亚",
"continent": "AF",
"ituzone": ["37"],
"cqzone": ["33"],
@@ -11157,7 +11157,7 @@
"dxcc": "33",
"cc": "GB",
"ccc": "GBR",
- "name": "Chagos Is.",
+ "name": "查戈斯群岛",
"continent": "AF",
"ituzone": ["41"],
"cqzone": ["39"],
@@ -11182,7 +11182,7 @@
"dxcc": "34",
"cc": "NZ",
"ccc": "NZL",
- "name": "Chatham Is.",
+ "name": "查塔姆岛",
"continent": "OC",
"ituzone": ["60"],
"cqzone": ["32"],
@@ -11207,7 +11207,7 @@
"dxcc": "35",
"cc": "CX",
"ccc": "CXR",
- "name": "Christmas I.",
+ "name": "圣诞岛",
"continent": "OC",
"ituzone": ["54"],
"cqzone": ["29"],
@@ -11254,7 +11254,7 @@
"dxcc": "36",
"cc": "FR",
"ccc": "FRA",
- "name": "Clipperton I.",
+ "name": "克利珀顿岛",
"continent": "NA",
"ituzone": ["10"],
"cqzone": ["7"],
@@ -11279,7 +11279,7 @@
"dxcc": "37",
"cc": "CR",
"ccc": "CRI",
- "name": "Cocos I.",
+ "name": "科科斯岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["7"],
@@ -11304,7 +11304,7 @@
"dxcc": "38",
"cc": "CC",
"ccc": "CCK",
- "name": "Cocos (Keeling) Is.",
+ "name": "科科斯(基林)群岛",
"continent": "OC",
"ituzone": ["54"],
"cqzone": ["29"],
@@ -11357,7 +11357,7 @@
"dxcc": "40",
"cc": "GR",
"ccc": "GRC",
- "name": "Crete",
+ "name": "克里特岛",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["20"],
@@ -11418,7 +11418,7 @@
"dxcc": "41",
"cc": "FR",
"ccc": "FRA",
- "name": "Crozet I.",
+ "name": "克罗泽特岛",
"continent": "AF",
"ituzone": ["68"],
"cqzone": ["39"],
@@ -11443,7 +11443,7 @@
"dxcc": "43",
"cc": "PR",
"ccc": "PRI",
- "name": "Desecheo I.",
+ "name": "德塞切奥岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -11468,7 +11468,7 @@
"dxcc": "45",
"cc": "GR",
"ccc": "GRC",
- "name": "Dodecanese",
+ "name": "多德卡尼斯群岛",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["20"],
@@ -11521,7 +11521,7 @@
"dxcc": "46",
"cc": "MY",
"ccc": "MYS",
- "name": "East Malaysia",
+ "name": "东马来西亚",
"continent": "OC",
"ituzone": ["54"],
"cqzone": ["28"],
@@ -11652,7 +11652,7 @@
"dxcc": "47",
"cc": "CL",
"ccc": "CHL",
- "name": "Easter I.",
+ "name": "复活节岛",
"continent": "SA",
"ituzone": ["63"],
"cqzone": ["12"],
@@ -11677,7 +11677,7 @@
"dxcc": "48",
"cc": "KI",
"ccc": "KIR",
- "name": "East Kiribati",
+ "name": "东基里巴斯",
"continent": "OC",
"ituzone": ["61", "63"],
"cqzone": ["31"],
@@ -11712,7 +11712,7 @@
"dxcc": "49",
"cc": "GQ",
"ccc": "GNQ",
- "name": "Equatorial Guinea",
+ "name": "赤道几内亚",
"continent": "AF",
"ituzone": ["47"],
"cqzone": ["36"],
@@ -11737,7 +11737,7 @@
"dxcc": "50",
"cc": "MX",
"ccc": "MEX",
- "name": "Mexico",
+ "name": "墨西哥",
"continent": "NA",
"ituzone": ["10"],
"cqzone": ["6"],
@@ -11930,7 +11930,7 @@
"dxcc": "51",
"cc": "ER",
"ccc": "ERI",
- "name": "Eritrea",
+ "name": "厄立特里亚",
"continent": "AF",
"ituzone": ["48"],
"cqzone": ["37"],
@@ -11972,7 +11972,7 @@
"dxcc": "52",
"cc": "EE",
"ccc": "EST",
- "name": "Estonia",
+ "name": "爱沙尼亚",
"continent": "EU",
"ituzone": ["29"],
"cqzone": ["15"],
@@ -12010,7 +12010,7 @@
"dxcc": "53",
"cc": "ET",
"ccc": "ETH",
- "name": "Ethiopia",
+ "name": "埃塞俄比亚",
"continent": "AF",
"ituzone": ["48"],
"cqzone": ["37"],
@@ -12102,7 +12102,7 @@
"dxcc": "54",
"cc": "RU",
"ccc": "RUS",
- "name": "European Russia",
+ "name": "俄罗斯欧洲",
"continent": "EU",
"ituzone": ["19", "20", "29", "30"],
"cqzone": ["16"],
@@ -13966,7 +13966,7 @@
"dxcc": "56",
"cc": "BR",
"ccc": "BRA",
- "name": "Fernando de Noronha",
+ "name": "费尔南多德诺罗尼亚岛",
"continent": "SA",
"ituzone": ["13"],
"cqzone": ["11"],
@@ -14052,7 +14052,7 @@
"dxcc": "60",
"cc": "BS",
"ccc": "BHS",
- "name": "Bahamas",
+ "name": "巴哈马",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14094,7 +14094,7 @@
"dxcc": "61",
"cc": "RU",
"ccc": "RUS",
- "name": "Franz Josef Land",
+ "name": "法兰士约瑟夫地群岛",
"continent": "EU",
"ituzone": ["75"],
"cqzone": ["40"],
@@ -14141,7 +14141,7 @@
"dxcc": "62",
"cc": "BB",
"ccc": "BRB",
- "name": "Barbados",
+ "name": "巴巴多斯",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14166,7 +14166,7 @@
"dxcc": "63",
"cc": "GF",
"ccc": "GUF",
- "name": "French Guiana",
+ "name": "法属圭亚那",
"continent": "SA",
"ituzone": ["12"],
"cqzone": ["9"],
@@ -14213,7 +14213,7 @@
"dxcc": "64",
"cc": "BM",
"ccc": "BMU",
- "name": "Bermuda",
+ "name": "百慕大",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["5"],
@@ -14238,7 +14238,7 @@
"dxcc": "65",
"cc": "VG",
"ccc": "VGB",
- "name": "British Virgin Is.",
+ "name": "英属维京岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14263,7 +14263,7 @@
"dxcc": "66",
"cc": "BZ",
"ccc": "BLZ",
- "name": "Belize",
+ "name": "伯利兹",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["7"],
@@ -14288,7 +14288,7 @@
"dxcc": "69",
"cc": "KY",
"ccc": "CYM",
- "name": "Cayman Is.",
+ "name": "开曼群岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14313,7 +14313,7 @@
"dxcc": "70",
"cc": "CU",
"ccc": "CUB",
- "name": "Cuba",
+ "name": "古巴",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14357,7 +14357,7 @@
"dxcc": "71",
"cc": "EC",
"ccc": "ECU",
- "name": "Galapagos Is.",
+ "name": "加拉帕戈斯岛",
"continent": "SA",
"ituzone": ["12"],
"cqzone": ["10"],
@@ -14396,7 +14396,7 @@
"dxcc": "72",
"cc": "DO",
"ccc": "DOM",
- "name": "Dominican Republic",
+ "name": "多米尼加共和国",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14421,7 +14421,7 @@
"dxcc": "74",
"cc": "SV",
"ccc": "SLV",
- "name": "El Salvador",
+ "name": "萨尔瓦多",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["7"],
@@ -14446,7 +14446,7 @@
"dxcc": "75",
"cc": "GE",
"ccc": "GEO",
- "name": "Georgia",
+ "name": "格鲁吉亚",
"continent": "AS",
"ituzone": ["29"],
"cqzone": ["21"],
@@ -14490,7 +14490,7 @@
"dxcc": "76",
"cc": "GT",
"ccc": "GTM",
- "name": "Guatemala",
+ "name": "危地马拉",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["7"],
@@ -14528,7 +14528,7 @@
"dxcc": "77",
"cc": "GD",
"ccc": "GRD",
- "name": "Grenada",
+ "name": "格林纳达",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14553,7 +14553,7 @@
"dxcc": "78",
"cc": "HT",
"ccc": "HTI",
- "name": "Haiti",
+ "name": "海地",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14578,7 +14578,7 @@
"dxcc": "79",
"cc": "GP",
"ccc": "GLP",
- "name": "Guadeloupe",
+ "name": "瓜德罗普岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14645,7 +14645,7 @@
"dxcc": "80",
"cc": "HN",
"ccc": "HND",
- "name": "Honduras",
+ "name": "洪都拉斯",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["7"],
@@ -14685,7 +14685,7 @@
"dxcc": "82",
"cc": "JM",
"ccc": "JAM",
- "name": "Jamaica",
+ "name": "牙买加",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14710,7 +14710,7 @@
"dxcc": "84",
"cc": "MQ",
"ccc": "MTQ",
- "name": "Martinique",
+ "name": "马提尼克岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14782,7 +14782,7 @@
"dxcc": "85",
"cc": "AN",
"ccc": "ANT",
- "name": "Netherlands Antillies",
+ "name": "荷属安的列斯群岛",
"continent": "SA",
"ituzone": ["0"],
"cqzone": ["0"],
@@ -14807,7 +14807,7 @@
"dxcc": "86",
"cc": "NI",
"ccc": "NIC",
- "name": "Nicaragua",
+ "name": "尼加拉瓜",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["7"],
@@ -14848,7 +14848,7 @@
"dxcc": "88",
"cc": "PA",
"ccc": "PAN",
- "name": "Panama",
+ "name": "巴拿马",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["7"],
@@ -14885,7 +14885,7 @@
"dxcc": "89",
"cc": "TC",
"ccc": "TCA",
- "name": "Turks & Caicos Is.",
+ "name": "特克斯和凯科斯群岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14910,7 +14910,7 @@
"dxcc": "90",
"cc": "TT",
"ccc": "TTO",
- "name": "Trinidad & Tobago",
+ "name": "特立尼达和多巴哥共和国",
"continent": "SA",
"ituzone": ["11"],
"cqzone": ["9"],
@@ -14935,7 +14935,7 @@
"dxcc": "91",
"cc": "AW",
"ccc": "ABW",
- "name": "Aruba",
+ "name": "阿鲁巴",
"continent": "SA",
"ituzone": ["11"],
"cqzone": ["9"],
@@ -14960,7 +14960,7 @@
"dxcc": "94",
"cc": "AG",
"ccc": "ATG",
- "name": "Antigua & Barbuda",
+ "name": "安提瓜及巴布达",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -14985,7 +14985,7 @@
"dxcc": "95",
"cc": "DM",
"ccc": "DMA",
- "name": "Dominica",
+ "name": "多米尼克",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -15010,7 +15010,7 @@
"dxcc": "96",
"cc": "MS",
"ccc": "MSR",
- "name": "Montserrat",
+ "name": "蒙特塞拉特",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -15035,7 +15035,7 @@
"dxcc": "97",
"cc": "LC",
"ccc": "LCA",
- "name": "St. Lucia",
+ "name": "圣卢西亚",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -15060,7 +15060,7 @@
"dxcc": "98",
"cc": "VC",
"ccc": "VCT",
- "name": "St. Vincent",
+ "name": "圣文森特岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -15085,7 +15085,7 @@
"dxcc": "99",
"cc": "FR",
"ccc": "FRA",
- "name": "Glorioso Is.",
+ "name": "格洛里厄斯群岛",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
@@ -15122,7 +15122,7 @@
"dxcc": "100",
"cc": "AR",
"ccc": "ARG",
- "name": "Argentina",
+ "name": "阿根廷",
"continent": "SA",
"ituzone": ["14", "16"],
"cqzone": ["13"],
@@ -16127,7 +16127,7 @@
"dxcc": "103",
"cc": "GU",
"ccc": "GUM",
- "name": "Guam",
+ "name": "关岛",
"continent": "OC",
"ituzone": ["64"],
"cqzone": ["27"],
@@ -16226,7 +16226,7 @@
"dxcc": "104",
"cc": "BO",
"ccc": "BOL",
- "name": "Bolivia",
+ "name": "玻利维亚",
"continent": "SA",
"ituzone": ["12", "14"],
"cqzone": ["10"],
@@ -16321,7 +16321,7 @@
"dxcc": "105",
"cc": "US",
"ccc": "USA",
- "name": "Guantanamo Bay",
+ "name": "关塔那摩湾",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -17024,7 +17024,7 @@
"dxcc": "106",
"cc": "GG",
"ccc": "GGY",
- "name": "Guernsey",
+ "name": "根西岛",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -17078,7 +17078,7 @@
"dxcc": "107",
"cc": "GN",
"ccc": "GIN",
- "name": "Guinea",
+ "name": "几内亚",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -17126,7 +17126,7 @@
"dxcc": "108",
"cc": "BR",
"ccc": "BRA",
- "name": "Brazil",
+ "name": "巴西",
"continent": "SA",
"ituzone": ["12", "13", "15"],
"cqzone": ["11"],
@@ -17678,7 +17678,7 @@
"dxcc": "109",
"cc": "GW",
"ccc": "GNB",
- "name": "Guinea-Bissau",
+ "name": "几内亚比绍",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -17703,7 +17703,7 @@
"dxcc": "110",
"cc": "US",
"ccc": "USA",
- "name": "Hawaii",
+ "name": "夏威夷",
"continent": "OC",
"ituzone": ["61"],
"cqzone": ["31"],
@@ -18288,7 +18288,7 @@
"dxcc": "111",
"cc": "HM",
"ccc": "HMD",
- "name": "Heard I.",
+ "name": "赫德岛",
"continent": "AF",
"ituzone": ["68"],
"cqzone": ["39"],
@@ -18313,7 +18313,7 @@
"dxcc": "112",
"cc": "CL",
"ccc": "CHL",
- "name": "Chile",
+ "name": "智利",
"continent": "SA",
"ituzone": ["14", "16"],
"cqzone": ["12"],
@@ -18474,7 +18474,7 @@
"dxcc": "114",
"cc": "IM",
"ccc": "IMN",
- "name": "Isle of Man",
+ "name": "马恩岛",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -18556,7 +18556,7 @@
"dxcc": "116",
"cc": "CO",
"ccc": "COL",
- "name": "Colombia",
+ "name": "哥伦比亚",
"continent": "SA",
"ituzone": ["12"],
"cqzone": ["9"],
@@ -18658,7 +18658,7 @@
"dxcc": "117",
"cc": "IG",
"ccc": "CHE",
- "name": "ITU HQ Geneva",
+ "name": "国际电联总部",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["14"],
@@ -18683,7 +18683,7 @@
"dxcc": "118",
"cc": "SJ",
"ccc": "SJM",
- "name": "Jan Mayen",
+ "name": "扬马延岛",
"continent": "EU",
"ituzone": ["18"],
"cqzone": ["40"],
@@ -18708,7 +18708,7 @@
"dxcc": "120",
"cc": "EC",
"ccc": "ECU",
- "name": "Ecuador",
+ "name": "厄瓜多尔",
"continent": "SA",
"ituzone": ["12"],
"cqzone": ["10"],
@@ -18757,7 +18757,7 @@
"dxcc": "122",
"cc": "JE",
"ccc": "JEY",
- "name": "Jersey",
+ "name": "泽西岛",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -18807,7 +18807,7 @@
"dxcc": "123",
"cc": "US",
"ccc": "USA",
- "name": "Johnston I.",
+ "name": "约翰斯顿岛",
"continent": "OC",
"ituzone": ["61"],
"cqzone": ["31"],
@@ -18832,13 +18832,13 @@
"dxcc": "124",
"cc": "FR",
"ccc": "FRA",
- "name": "Juan de Nova I.",
+ "name": "新胡安岛欧罗巴岛",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
"timezone": "3",
"ccode": "250",
- "aname": "Juan de Nova, Europa",
+ "aname": "胡安德诺瓦岛, 欧洲",
"mh": ["LH12"],
"prefix": [
"=FR/F5NHJ/E",
@@ -18880,7 +18880,7 @@
"dxcc": "125",
"cc": "CL",
"ccc": "CHL",
- "name": "Juan Fernandez Is.",
+ "name": "胡安费南德斯岛",
"continent": "SA",
"ituzone": ["14"],
"cqzone": ["12"],
@@ -18915,7 +18915,7 @@
"dxcc": "126",
"cc": "RU",
"ccc": "RUS",
- "name": "Kaliningrad",
+ "name": "加里宁格勒",
"continent": "EU",
"ituzone": ["29"],
"cqzone": ["15"],
@@ -19077,7 +19077,7 @@
"dxcc": "129",
"cc": "GY",
"ccc": "GUY",
- "name": "Guyana",
+ "name": "圭亚那",
"continent": "SA",
"ituzone": ["12"],
"cqzone": ["9"],
@@ -19122,7 +19122,7 @@
"dxcc": "130",
"cc": "KZ",
"ccc": "KAZ",
- "name": "Kazakhstan",
+ "name": "哈萨克斯坦",
"continent": "AS",
"ituzone": ["29", "30", "31"],
"cqzone": ["17"],
@@ -19535,7 +19535,7 @@
"dxcc": "131",
"cc": "FR",
"ccc": "FRA",
- "name": "Kerguelen Is.",
+ "name": "凯尔盖朗岛",
"continent": "AF",
"ituzone": ["68"],
"cqzone": ["39"],
@@ -19560,7 +19560,7 @@
"dxcc": "132",
"cc": "PY",
"ccc": "PRY",
- "name": "Paraguay",
+ "name": "巴拉圭",
"continent": "SA",
"ituzone": ["14", "16"],
"cqzone": ["11"],
@@ -19618,7 +19618,7 @@
"dxcc": "133",
"cc": "NZ",
"ccc": "NZL",
- "name": "Kermadec Is.",
+ "name": "克马德克群岛",
"continent": "OC",
"ituzone": ["60"],
"cqzone": ["32"],
@@ -19643,7 +19643,7 @@
"dxcc": "134",
"cc": "US",
"ccc": "USA",
- "name": "Kingman Reef",
+ "name": "金曼礁",
"continent": "OC",
"ituzone": ["61"],
"cqzone": ["31"],
@@ -19668,7 +19668,7 @@
"dxcc": "135",
"cc": "KG",
"ccc": "KGZ",
- "name": "Kyrgyzstan",
+ "name": "吉尔吉斯坦",
"continent": "AS",
"ituzone": ["30", "31"],
"cqzone": ["17"],
@@ -19728,7 +19728,7 @@
"dxcc": "136",
"cc": "PE",
"ccc": "PER",
- "name": "Peru",
+ "name": "秘鲁",
"continent": "SA",
"ituzone": ["12"],
"cqzone": ["10"],
@@ -19837,7 +19837,7 @@
"dxcc": "137",
"cc": "KR",
"ccc": "KOR",
- "name": "South Korea",
+ "name": "韩国",
"continent": "AS",
"ituzone": ["44"],
"cqzone": ["25"],
@@ -19897,7 +19897,7 @@
"dxcc": "138",
"cc": "US",
"ccc": "USA",
- "name": "Kure Atoll",
+ "name": "库雷环礁",
"continent": "OC",
"ituzone": ["61"],
"cqzone": ["31"],
@@ -19922,7 +19922,7 @@
"dxcc": "140",
"cc": "SR",
"ccc": "SUR",
- "name": "Suriname",
+ "name": "苏里南",
"continent": "SA",
"ituzone": ["12"],
"cqzone": ["9"],
@@ -19961,7 +19961,7 @@
"dxcc": "141",
"cc": "FK",
"ccc": "FLK",
- "name": "Falkland Is. (Malvinas)",
+ "name": "福克兰群岛",
"continent": "SA",
"ituzone": ["16"],
"cqzone": ["13"],
@@ -19986,7 +19986,7 @@
"dxcc": "142",
"cc": "IN",
"ccc": "IND",
- "name": "Lakshadweep Is.",
+ "name": "拉克沙威岛",
"continent": "AS",
"ituzone": ["41"],
"cqzone": ["22"],
@@ -20011,7 +20011,7 @@
"dxcc": "143",
"cc": "LA",
"ccc": "LAO",
- "name": "Laos",
+ "name": "老挝",
"continent": "AS",
"ituzone": ["49"],
"cqzone": ["26"],
@@ -20062,7 +20062,7 @@
"dxcc": "144",
"cc": "UY",
"ccc": "URY",
- "name": "Uruguay",
+ "name": "乌拉圭",
"continent": "SA",
"ituzone": ["14"],
"cqzone": ["13"],
@@ -20120,7 +20120,7 @@
"dxcc": "145",
"cc": "LV",
"ccc": "LVA",
- "name": "Latvia",
+ "name": "拉脱维亚",
"continent": "EU",
"ituzone": ["29"],
"cqzone": ["15"],
@@ -20174,7 +20174,7 @@
"dxcc": "146",
"cc": "LT",
"ccc": "LTU",
- "name": "Lithuania",
+ "name": "立陶宛",
"continent": "EU",
"ituzone": ["29"],
"cqzone": ["15"],
@@ -20237,7 +20237,7 @@
"dxcc": "147",
"cc": "AU",
"ccc": "AUS",
- "name": "Lord Howe I.",
+ "name": "豪勋爵岛",
"continent": "OC",
"ituzone": ["60"],
"cqzone": ["30"],
@@ -20297,7 +20297,7 @@
"dxcc": "148",
"cc": "VE",
"ccc": "VEN",
- "name": "Venezuela",
+ "name": "委内瑞拉",
"continent": "SA",
"ituzone": ["12"],
"cqzone": ["9"],
@@ -20384,7 +20384,7 @@
"dxcc": "149",
"cc": "PT",
"ccc": "PRT",
- "name": "Azores",
+ "name": "亚速尔群岛",
"continent": "EU",
"ituzone": ["36"],
"cqzone": ["14"],
@@ -20423,7 +20423,7 @@
"dxcc": "150",
"cc": "AU",
"ccc": "AUS",
- "name": "Australia",
+ "name": "澳大利亚",
"continent": "OC",
"ituzone": ["55", "58", "59"],
"cqzone": ["29", "30"],
@@ -21040,7 +21040,7 @@
"dxcc": "151",
"cc": "RU",
"ccc": "RUS",
- "name": "Malyj Vysotskij I.",
+ "name": "马里-维索茨克岛",
"continent": "EU",
"ituzone": ["29"],
"cqzone": ["16"],
@@ -21065,7 +21065,7 @@
"dxcc": "152",
"cc": "MO",
"ccc": "MAC",
- "name": "Macao",
+ "name": "中国澳门",
"continent": "AS",
"ituzone": ["44"],
"cqzone": ["24"],
@@ -21090,7 +21090,7 @@
"dxcc": "153",
"cc": "AU",
"ccc": "AUS",
- "name": "Macquarie I.",
+ "name": "麦格理岛",
"continent": "OC",
"ituzone": ["60"],
"cqzone": ["30"],
@@ -21130,7 +21130,7 @@
"dxcc": "157",
"cc": "NR",
"ccc": "NRU",
- "name": "Nauru",
+ "name": "瑙鲁",
"continent": "OC",
"ituzone": ["65"],
"cqzone": ["31"],
@@ -21155,7 +21155,7 @@
"dxcc": "158",
"cc": "VU",
"ccc": "VUT",
- "name": "Vanuatu",
+ "name": "瓦努阿图",
"continent": "OC",
"ituzone": ["56"],
"cqzone": ["32"],
@@ -21193,7 +21193,7 @@
"dxcc": "159",
"cc": "MV",
"ccc": "MDV",
- "name": "Maldives",
+ "name": "马尔代夫",
"continent": "AS",
"ituzone": ["41"],
"cqzone": ["22"],
@@ -21228,7 +21228,7 @@
"dxcc": "160",
"cc": "TO",
"ccc": "TON",
- "name": "Tonga",
+ "name": "汤加",
"continent": "OC",
"ituzone": ["62"],
"cqzone": ["32"],
@@ -21253,7 +21253,7 @@
"dxcc": "161",
"cc": "CO",
"ccc": "COL",
- "name": "Malpelo I.",
+ "name": "马尔佩洛岛",
"continent": "SA",
"ituzone": ["12"],
"cqzone": ["9"],
@@ -21288,7 +21288,7 @@
"dxcc": "162",
"cc": "NC",
"ccc": "NCL",
- "name": "New Caledonia",
+ "name": "新喀里多尼亚",
"continent": "OC",
"ituzone": ["56"],
"cqzone": ["32"],
@@ -21344,7 +21344,7 @@
"dxcc": "163",
"cc": "PG",
"ccc": "PNG",
- "name": "Papua New Guinea",
+ "name": "巴布亚纽几内亚",
"continent": "OC",
"ituzone": ["51"],
"cqzone": ["28"],
@@ -21441,7 +21441,7 @@
"dxcc": "165",
"cc": "MU",
"ccc": "MUS",
- "name": "Mauritius",
+ "name": "毛里求斯",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
@@ -21466,7 +21466,7 @@
"dxcc": "166",
"cc": "US",
"ccc": "USA",
- "name": "Mariana Is.",
+ "name": "马利亚纳群岛",
"continent": "OC",
"ituzone": ["64"],
"cqzone": ["27"],
@@ -21550,7 +21550,7 @@
"dxcc": "167",
"cc": "SE",
"ccc": "SWE",
- "name": "Market Reef",
+ "name": "马凯特礁",
"continent": "EU",
"ituzone": ["18"],
"cqzone": ["15"],
@@ -21575,7 +21575,7 @@
"dxcc": "168",
"cc": "MH",
"ccc": "MHL",
- "name": "Marshall Is.",
+ "name": "马绍尔群岛",
"continent": "OC",
"ituzone": ["65"],
"cqzone": ["31"],
@@ -21620,7 +21620,7 @@
"dxcc": "169",
"cc": "YT",
"ccc": "MYT",
- "name": "Mayotte",
+ "name": "马约特岛",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
@@ -21659,7 +21659,7 @@
"dxcc": "170",
"cc": "NZ",
"ccc": "NZL",
- "name": "New Zealand",
+ "name": "纽西兰",
"continent": "OC",
"ituzone": ["60"],
"cqzone": ["32"],
@@ -21752,7 +21752,7 @@
"dxcc": "171",
"cc": "AU",
"ccc": "AUS",
- "name": "Mellish Reef",
+ "name": "梅利什礁",
"continent": "OC",
"ituzone": ["55"],
"cqzone": ["30"],
@@ -21788,7 +21788,7 @@
"dxcc": "172",
"cc": "PN",
"ccc": "PCN",
- "name": "Pitcairn I.",
+ "name": "皮特凯恩群岛",
"continent": "OC",
"ituzone": ["63"],
"cqzone": ["32"],
@@ -21813,7 +21813,7 @@
"dxcc": "173",
"cc": "FM",
"ccc": "FSM",
- "name": "Micronesia",
+ "name": "密克罗尼西亚",
"continent": "OC",
"ituzone": ["64", "65"],
"cqzone": ["27"],
@@ -21864,7 +21864,7 @@
"dxcc": "174",
"cc": "US",
"ccc": "USA",
- "name": "Midway I.",
+ "name": "中途岛",
"continent": "OC",
"ituzone": ["61"],
"cqzone": ["31"],
@@ -21889,7 +21889,7 @@
"dxcc": "175",
"cc": "PF",
"ccc": "PYF",
- "name": "French Polynesia",
+ "name": "法属波利尼西亚",
"continent": "OC",
"ituzone": ["63"],
"cqzone": ["32"],
@@ -21959,7 +21959,7 @@
"dxcc": "176",
"cc": "FJ",
"ccc": "FJI",
- "name": "Fiji",
+ "name": "斐济",
"continent": "OC",
"ituzone": ["56"],
"cqzone": ["32"],
@@ -22000,7 +22000,7 @@
"dxcc": "177",
"cc": "JP",
"ccc": "JPN",
- "name": "Minami Torishima",
+ "name": "南鸟岛",
"continent": "OC",
"ituzone": ["90"],
"cqzone": ["27"],
@@ -22062,7 +22062,7 @@
"dxcc": "179",
"cc": "MD",
"ccc": "MDA",
- "name": "Moldova",
+ "name": "摩尔多瓦",
"continent": "EU",
"ituzone": ["29"],
"cqzone": ["16"],
@@ -22087,7 +22087,7 @@
"dxcc": "180",
"cc": "GR",
"ccc": "GRC",
- "name": "Mount Athos",
+ "name": "阿索斯圣山",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["20"],
@@ -22119,7 +22119,7 @@
"dxcc": "181",
"cc": "MZ",
"ccc": "MOZ",
- "name": "Mozambique",
+ "name": "莫桑比克",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["37"],
@@ -22207,7 +22207,7 @@
"dxcc": "182",
"cc": "US",
"ccc": "USA",
- "name": "Navassa I.",
+ "name": "纳瓦萨岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -22232,7 +22232,7 @@
"dxcc": "185",
"cc": "SB",
"ccc": "SLB",
- "name": "Solomon Is.",
+ "name": "所罗门群岛",
"continent": "OC",
"ituzone": ["51"],
"cqzone": ["28"],
@@ -22280,7 +22280,7 @@
"dxcc": "187",
"cc": "NE",
"ccc": "NER",
- "name": "Niger",
+ "name": "尼日尔",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -22375,7 +22375,7 @@
"dxcc": "188",
"cc": "NU",
"ccc": "NIU",
- "name": "Niue",
+ "name": "纽埃",
"continent": "OC",
"ituzone": ["62"],
"cqzone": ["32"],
@@ -22400,7 +22400,7 @@
"dxcc": "189",
"cc": "NF",
"ccc": "NFK",
- "name": "Norfolk I.",
+ "name": "诺福克岛",
"continent": "OC",
"ituzone": ["60"],
"cqzone": ["32"],
@@ -22455,7 +22455,7 @@
"dxcc": "190",
"cc": "WS",
"ccc": "WSM",
- "name": "Samoa",
+ "name": "萨摩亚",
"continent": "OC",
"ituzone": ["62"],
"cqzone": ["32"],
@@ -22480,7 +22480,7 @@
"dxcc": "191",
"cc": "NZ",
"ccc": "NZL",
- "name": "North Cook Is.",
+ "name": "北库克群岛",
"continent": "OC",
"ituzone": ["62"],
"cqzone": ["32"],
@@ -22536,7 +22536,7 @@
"dxcc": "192",
"cc": "JP",
"ccc": "JPN",
- "name": "Ogasawara",
+ "name": "小笠原岛",
"continent": "AS",
"ituzone": ["45"],
"cqzone": ["27"],
@@ -22561,7 +22561,7 @@
"dxcc": "193",
"cc": "JP",
"ccc": "JPN",
- "name": "Okinawa (Ryukyu Is.)",
+ "name": "琉球群岛",
"continent": "AS",
"ituzone": ["45"],
"cqzone": ["25"],
@@ -22586,7 +22586,7 @@
"dxcc": "195",
"cc": "GQ",
"ccc": "GNQ",
- "name": "Annobon I.",
+ "name": "安诺本岛",
"continent": "AF",
"ituzone": ["52"],
"cqzone": ["36"],
@@ -22611,7 +22611,7 @@
"dxcc": "197",
"cc": "US",
"ccc": "USA",
- "name": "Palmyra & Jarvis Is.",
+ "name": "巴尔米拉环礁和贾维斯岛",
"continent": "OC",
"ituzone": ["61", "62"],
"cqzone": ["31"],
@@ -22636,7 +22636,7 @@
"dxcc": "199",
"cc": "NO",
"ccc": "NOR",
- "name": "Peter I I.",
+ "name": "彼得一世岛",
"continent": "AN",
"ituzone": ["72"],
"cqzone": ["12"],
@@ -22661,7 +22661,7 @@
"dxcc": "201",
"cc": "ZA",
"ccc": "ZAF",
- "name": "Prince Edward & Marion I.",
+ "name": "爱德华王子岛",
"continent": "AF",
"ituzone": ["57"],
"cqzone": ["38"],
@@ -22686,7 +22686,7 @@
"dxcc": "202",
"cc": "PR",
"ccc": "PRI",
- "name": "Puerto Rico",
+ "name": "波多黎各",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -22914,7 +22914,7 @@
"dxcc": "203",
"cc": "AD",
"ccc": "AND",
- "name": "Andorra",
+ "name": "安道尔",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -22939,7 +22939,7 @@
"dxcc": "204",
"cc": "MX",
"ccc": "MEX",
- "name": "Revillagigedo",
+ "name": "雷维亚希赫多群岛",
"continent": "NA",
"ituzone": ["10"],
"cqzone": ["6"],
@@ -22984,7 +22984,7 @@
"dxcc": "205",
"cc": "AC",
"ccc": "ASC",
- "name": "Ascension I.",
+ "name": "阿森松岛",
"continent": "AF",
"ituzone": ["66"],
"cqzone": ["36"],
@@ -23009,7 +23009,7 @@
"dxcc": "206",
"cc": "AT",
"ccc": "AUT",
- "name": "Austria",
+ "name": "奥地利",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -23090,7 +23090,7 @@
"dxcc": "207",
"cc": "MU",
"ccc": "MUS",
- "name": "Rodriguez I.",
+ "name": "罗德里格斯岛",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
@@ -23115,7 +23115,7 @@
"dxcc": "209",
"cc": "BE",
"ccc": "BEL",
- "name": "Belgium",
+ "name": "比利时",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -23186,7 +23186,7 @@
"dxcc": "211",
"cc": "CA",
"ccc": "CAN",
- "name": "Sable I.",
+ "name": "塞布尔岛",
"continent": "NA",
"ituzone": ["9"],
"cqzone": ["5"],
@@ -23211,7 +23211,7 @@
"dxcc": "212",
"cc": "BG",
"ccc": "BGR",
- "name": "Bulgaria",
+ "name": "保加利亚",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["20"],
@@ -23251,7 +23251,7 @@
"dxcc": "213",
"cc": "FR",
"ccc": "FRA",
- "name": "Saint Martin",
+ "name": "圣马丁岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -23285,7 +23285,7 @@
"dxcc": "214",
"cc": "FR",
"ccc": "FRA",
- "name": "Corsica",
+ "name": "科西嘉岛",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -23310,7 +23310,7 @@
"dxcc": "215",
"cc": "CY",
"ccc": "CYP",
- "name": "Cyprus",
+ "name": "塞浦路斯",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["20"],
@@ -23346,7 +23346,7 @@
"dxcc": "216",
"cc": "NI",
"ccc": "NIC",
- "name": "San Andres & Providencia",
+ "name": "圣安德烈斯和普罗维登西亚岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["7"],
@@ -23382,7 +23382,7 @@
"dxcc": "217",
"cc": "CL",
"ccc": "CHL",
- "name": "San Felix",
+ "name": "圣菲力斯岛",
"continent": "SA",
"ituzone": ["14"],
"cqzone": ["12"],
@@ -23417,7 +23417,7 @@
"dxcc": "219",
"cc": "ST",
"ccc": "STP",
- "name": "Sao Tome & Principe",
+ "name": "圣多美和普林西比",
"continent": "AF",
"ituzone": ["47"],
"cqzone": ["36"],
@@ -23442,7 +23442,7 @@
"dxcc": "221",
"cc": "DK",
"ccc": "DNK",
- "name": "Denmark",
+ "name": "丹麦",
"continent": "EU",
"ituzone": ["18"],
"cqzone": ["14"],
@@ -23547,7 +23547,7 @@
"dxcc": "222",
"cc": "FO",
"ccc": "FRO",
- "name": "Faroe Is.",
+ "name": "法罗群岛",
"continent": "EU",
"ituzone": ["18"],
"cqzone": ["14"],
@@ -23572,7 +23572,7 @@
"dxcc": "223",
"cc": "GB",
"ccc": "GBR",
- "name": "England",
+ "name": "英国",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -23682,7 +23682,7 @@
"dxcc": "224",
"cc": "FI",
"ccc": "FIN",
- "name": "Finland",
+ "name": "芬兰",
"continent": "EU",
"ituzone": ["18"],
"cqzone": ["15"],
@@ -23991,7 +23991,7 @@
"dxcc": "225",
"cc": "IT",
"ccc": "ITA",
- "name": "Sardinia",
+ "name": "撒丁岛",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -24089,7 +24089,7 @@
"dxcc": "227",
"cc": "FR",
"ccc": "FRA",
- "name": "France",
+ "name": "法国",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -24198,7 +24198,7 @@
"dxcc": "230",
"cc": "DE",
"ccc": "DEU",
- "name": "Germany",
+ "name": "德国",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["14"],
@@ -24478,7 +24478,7 @@
"dxcc": "232",
"cc": "SO",
"ccc": "SOM",
- "name": "Somalia",
+ "name": "索马里",
"continent": "AF",
"ituzone": ["48"],
"cqzone": ["37"],
@@ -24553,7 +24553,7 @@
"dxcc": "233",
"cc": "GI",
"ccc": "GIB",
- "name": "Gibraltar",
+ "name": "直布罗陀",
"continent": "EU",
"ituzone": ["37"],
"cqzone": ["14"],
@@ -24578,7 +24578,7 @@
"dxcc": "234",
"cc": "GS",
"ccc": "SGS",
- "name": "South Cook Is.",
+ "name": "南库克群岛",
"continent": "OC",
"ituzone": ["63"],
"cqzone": ["32"],
@@ -24624,7 +24624,7 @@
"dxcc": "235",
"cc": "GS",
"ccc": "SGS",
- "name": "South Georgia I.",
+ "name": "南乔治亚岛",
"continent": "SA",
"ituzone": ["73"],
"cqzone": ["13"],
@@ -24670,7 +24670,7 @@
"dxcc": "236",
"cc": "GR",
"ccc": "GRC",
- "name": "Greece",
+ "name": "希腊",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["20"],
@@ -24778,7 +24778,7 @@
"dxcc": "237",
"cc": "GL",
"ccc": "GRL",
- "name": "Greenland",
+ "name": "格陵兰",
"continent": "NA",
"ituzone": ["5", "75"],
"cqzone": ["40"],
@@ -25216,7 +25216,7 @@
"dxcc": "238",
"cc": "GB",
"ccc": "GBR",
- "name": "South Orkney Is.",
+ "name": "南奥克尼岛",
"continent": "SA",
"ituzone": ["73"],
"cqzone": ["13"],
@@ -25252,7 +25252,7 @@
"dxcc": "239",
"cc": "HU",
"ccc": "HUN",
- "name": "Hungary",
+ "name": "匈牙利",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -25301,7 +25301,7 @@
"dxcc": "240",
"cc": "GS",
"ccc": "SGS",
- "name": "South Sandwich Is.",
+ "name": "南桑德韦奇岛",
"continent": "SA",
"ituzone": ["73"],
"cqzone": ["13"],
@@ -25326,7 +25326,7 @@
"dxcc": "241",
"cc": "GB",
"ccc": "GBR",
- "name": "South Shetland Is.",
+ "name": "南设特兰群岛",
"continent": "SA",
"ituzone": ["73"],
"cqzone": ["13"],
@@ -25418,7 +25418,7 @@
"dxcc": "242",
"cc": "IS",
"ccc": "ISL",
- "name": "Iceland",
+ "name": "冰岛",
"continent": "EU",
"ituzone": ["17"],
"cqzone": ["40"],
@@ -25475,7 +25475,7 @@
"dxcc": "245",
"cc": "IE",
"ccc": "IRL",
- "name": "Ireland",
+ "name": "爱尔兰",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -25528,7 +25528,7 @@
"dxcc": "246",
"cc": "MT",
"ccc": "MLT",
- "name": "SMO Malta",
+ "name": "马耳他骑士团",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -25553,7 +25553,7 @@
"dxcc": "247",
"cc": "PH",
"ccc": "PHL",
- "name": "Spratly Is.",
+ "name": "中国南沙群岛",
"continent": "AS",
"ituzone": ["50"],
"cqzone": ["26"],
@@ -25585,7 +25585,7 @@
],
"worked": false,
"confirmed": false,
- "flag": "ph.png",
+ "flag": "cn.png",
"pp": "1S",
"lat": 9.74688452371069,
"lon": 114.44444444444443,
@@ -25599,7 +25599,7 @@
"dxcc": "248",
"cc": "IT",
"ccc": "ITA",
- "name": "Italy",
+ "name": "意大利",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -25879,7 +25879,7 @@
"dxcc": "249",
"cc": "KN",
"ccc": "KNA",
- "name": "St. Kitts & Nevis",
+ "name": "圣基茨和尼维斯",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -25904,7 +25904,7 @@
"dxcc": "250",
"cc": "SH",
"ccc": "SHN",
- "name": "St. Helena",
+ "name": "圣赫勒拿岛",
"continent": "AF",
"ituzone": ["66"],
"cqzone": ["36"],
@@ -25929,7 +25929,7 @@
"dxcc": "251",
"cc": "LI",
"ccc": "LIE",
- "name": "Liechtenstein",
+ "name": "列支敦士登",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["14"],
@@ -25954,7 +25954,7 @@
"dxcc": "252",
"cc": "CA",
"ccc": "CAN",
- "name": "St Paul I.",
+ "name": "圣保罗岛",
"continent": "NA",
"ituzone": ["9"],
"cqzone": ["5"],
@@ -25979,7 +25979,7 @@
"dxcc": "253",
"cc": "BR",
"ccc": "BRA",
- "name": "St Peter & St Paul Rocks",
+ "name": "圣彼得及圣保罗礁",
"continent": "SA",
"ituzone": ["13"],
"cqzone": ["11"],
@@ -26035,7 +26035,7 @@
"dxcc": "254",
"cc": "LU",
"ccc": "LUX",
- "name": "Luxembourg",
+ "name": "卢森堡",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -26060,7 +26060,7 @@
"dxcc": "256",
"cc": "PT",
"ccc": "PRT",
- "name": "Madeira Is.",
+ "name": "马德拉岛",
"continent": "AF",
"ituzone": ["36"],
"cqzone": ["33"],
@@ -26096,7 +26096,7 @@
"dxcc": "257",
"cc": "MT",
"ccc": "MLT",
- "name": "Malta",
+ "name": "马耳他",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -26138,7 +26138,7 @@
"dxcc": "259",
"cc": "SJ",
"ccc": "SJM",
- "name": "Svalbard",
+ "name": "斯瓦尔巴群岛",
"continent": "EU",
"ituzone": ["18"],
"cqzone": ["40"],
@@ -26223,7 +26223,7 @@
"dxcc": "260",
"cc": "MC",
"ccc": "MCO",
- "name": "Monaco",
+ "name": "摩纳哥",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -26248,7 +26248,7 @@
"dxcc": "262",
"cc": "TJ",
"ccc": "TJK",
- "name": "Tajikistan",
+ "name": "塔吉克斯坦",
"continent": "AS",
"ituzone": ["30"],
"cqzone": ["17"],
@@ -26294,7 +26294,7 @@
"dxcc": "263",
"cc": "NL",
"ccc": "NLD",
- "name": "Netherlands",
+ "name": "荷兰",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -26503,7 +26503,7 @@
"dxcc": "265",
"cc": "IE",
"ccc": "IRL",
- "name": "Northern Ireland",
+ "name": "北爱尔兰",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -26880,7 +26880,7 @@
"dxcc": "266",
"cc": "NO",
"ccc": "NOR",
- "name": "Norway",
+ "name": "挪威",
"continent": "EU",
"ituzone": ["18"],
"cqzone": ["14"],
@@ -27084,7 +27084,7 @@
"dxcc": "269",
"cc": "PL",
"ccc": "POL",
- "name": "Poland",
+ "name": "波兰",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -27197,7 +27197,7 @@
"dxcc": "270",
"cc": "TK",
"ccc": "TKL",
- "name": "Tokelau Is.",
+ "name": "托克劳群岛",
"continent": "OC",
"ituzone": ["62"],
"cqzone": ["31"],
@@ -27222,7 +27222,7 @@
"dxcc": "272",
"cc": "PT",
"ccc": "PRT",
- "name": "Portugal",
+ "name": "葡萄牙",
"continent": "EU",
"ituzone": ["37"],
"cqzone": ["14"],
@@ -27277,7 +27277,7 @@
"dxcc": "273",
"cc": "BR",
"ccc": "BRA",
- "name": "Trindade & Martim Vaz Is.",
+ "name": "特林达迪马丁瓦斯群岛",
"continent": "SA",
"ituzone": ["15"],
"cqzone": ["11"],
@@ -27333,7 +27333,7 @@
"dxcc": "274",
"cc": "GB",
"ccc": "GBR",
- "name": "Tristan da Cunha & Gough I.",
+ "name": "特里斯坦达库尼亚岛",
"continent": "AF",
"ituzone": ["66"],
"cqzone": ["38"],
@@ -27358,7 +27358,7 @@
"dxcc": "275",
"cc": "RO",
"ccc": "ROU",
- "name": "Romania",
+ "name": "罗马尼亚",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["20"],
@@ -27421,7 +27421,7 @@
"dxcc": "276",
"cc": "FR",
"ccc": "FRA",
- "name": "Tromelin I.",
+ "name": "特罗姆兰岛",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
@@ -27459,7 +27459,7 @@
"dxcc": "277",
"cc": "CA",
"ccc": "CAN",
- "name": "St Pierre & Miquelon",
+ "name": "圣皮埃尔和密克隆岛",
"continent": "NA",
"ituzone": ["9"],
"cqzone": ["5"],
@@ -27484,7 +27484,7 @@
"dxcc": "278",
"cc": "SM",
"ccc": "SMR",
- "name": "San Marino",
+ "name": "圣马利诺",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -27509,7 +27509,7 @@
"dxcc": "279",
"cc": "GB",
"ccc": "GBR",
- "name": "Scotland",
+ "name": "苏格兰",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -28501,7 +28501,7 @@
"dxcc": "280",
"cc": "TM",
"ccc": "TKM",
- "name": "Turkmenistan",
+ "name": "土库曼斯坦",
"continent": "AS",
"ituzone": ["30"],
"cqzone": ["17"],
@@ -28572,7 +28572,7 @@
"dxcc": "281",
"cc": "ES",
"ccc": "ESP",
- "name": "Spain",
+ "name": "西班牙",
"continent": "EU",
"ituzone": ["37"],
"cqzone": ["14"],
@@ -28825,7 +28825,7 @@
"dxcc": "282",
"cc": "TV",
"ccc": "TUV",
- "name": "Tuvalu",
+ "name": "图瓦卢",
"continent": "OC",
"ituzone": ["65"],
"cqzone": ["31"],
@@ -28850,7 +28850,7 @@
"dxcc": "283",
"cc": "CY",
"ccc": "CYP",
- "name": "Cyprus SBA",
+ "name": "英国塞浦路斯基地",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["20"],
@@ -28875,7 +28875,7 @@
"dxcc": "284",
"cc": "SE",
"ccc": "SWE",
- "name": "Sweden",
+ "name": "瑞典",
"continent": "EU",
"ituzone": ["18"],
"cqzone": ["14"],
@@ -29044,7 +29044,7 @@
"dxcc": "285",
"cc": "VI",
"ccc": "VIR",
- "name": "US Virgin Is.",
+ "name": "美属维京岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -29126,7 +29126,7 @@
"dxcc": "286",
"cc": "UG",
"ccc": "UGA",
- "name": "Uganda",
+ "name": "乌干达",
"continent": "AF",
"ituzone": ["48"],
"cqzone": ["37"],
@@ -29172,7 +29172,7 @@
"dxcc": "287",
"cc": "CH",
"ccc": "CHE",
- "name": "Switzerland",
+ "name": "瑞士",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["14"],
@@ -29209,7 +29209,7 @@
"dxcc": "288",
"cc": "UA",
"ccc": "UKR",
- "name": "Ukraine",
+ "name": "乌克兰",
"continent": "EU",
"ituzone": ["29"],
"cqzone": ["16"],
@@ -29370,7 +29370,7 @@
"dxcc": "291",
"cc": "US",
"ccc": "USA",
- "name": "United States",
+ "name": "美国",
"continent": "NA",
"ituzone": ["6", "7", "8"],
"cqzone": ["3", "4", "5"],
@@ -33295,7 +33295,7 @@
"dxcc": "292",
"cc": "UZ",
"ccc": "UZB",
- "name": "Uzbekistan",
+ "name": "乌兹别克斯坦",
"continent": "AS",
"ituzone": ["30"],
"cqzone": ["17"],
@@ -33371,7 +33371,7 @@
"dxcc": "293",
"cc": "VN",
"ccc": "VNM",
- "name": "Viet Nam",
+ "name": "越南",
"continent": "AS",
"ituzone": ["49"],
"cqzone": ["26"],
@@ -33437,7 +33437,7 @@
"dxcc": "294",
"cc": "GB",
"ccc": "GBR",
- "name": "Wales",
+ "name": "威尔士",
"continent": "EU",
"ituzone": ["27"],
"cqzone": ["14"],
@@ -34228,7 +34228,7 @@
"dxcc": "295",
"cc": "VA",
"ccc": "VAT",
- "name": "Vatican City",
+ "name": "梵蒂冈",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -34253,7 +34253,7 @@
"dxcc": "296",
"cc": "RS",
"ccc": "SRB",
- "name": "Serbia",
+ "name": "塞尔维亚",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -34308,7 +34308,7 @@
"dxcc": "297",
"cc": "US",
"ccc": "USA",
- "name": "Wake I.",
+ "name": "威克岛",
"continent": "OC",
"ituzone": ["65"],
"cqzone": ["31"],
@@ -34333,7 +34333,7 @@
"dxcc": "298",
"cc": "WF",
"ccc": "WLF",
- "name": "Wallis & Futuna Is.",
+ "name": "瓦利斯及富图纳群岛",
"continent": "OC",
"ituzone": ["62"],
"cqzone": ["32"],
@@ -34358,7 +34358,7 @@
"dxcc": "299",
"cc": "MY",
"ccc": "MYS",
- "name": "West Malaysia",
+ "name": "西马来西亚",
"continent": "AS",
"ituzone": ["54"],
"cqzone": ["28"],
@@ -34410,7 +34410,7 @@
"dxcc": "301",
"cc": "KI",
"ccc": "KIR",
- "name": "Kiribati",
+ "name": "西基里巴斯",
"continent": "OC",
"ituzone": ["65"],
"cqzone": ["31"],
@@ -34459,7 +34459,7 @@
"dxcc": "302",
"cc": "EH",
"ccc": "ESH",
- "name": "Western Sahara",
+ "name": "西萨哈拉",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["33"],
@@ -34506,7 +34506,7 @@
"dxcc": "303",
"cc": "AU",
"ccc": "AUS",
- "name": "Willis Is.",
+ "name": "威里斯岛",
"continent": "OC",
"ituzone": ["55"],
"cqzone": ["30"],
@@ -34552,7 +34552,7 @@
"dxcc": "304",
"cc": "BH",
"ccc": "BHR",
- "name": "Bahrain",
+ "name": "巴林",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["21"],
@@ -34577,7 +34577,7 @@
"dxcc": "305",
"cc": "BD",
"ccc": "BGD",
- "name": "Bangladesh",
+ "name": "孟加拉",
"continent": "AS",
"ituzone": ["41"],
"cqzone": ["22"],
@@ -34620,7 +34620,7 @@
"dxcc": "306",
"cc": "BT",
"ccc": "BTN",
- "name": "Bhutan",
+ "name": "不丹",
"continent": "AS",
"ituzone": ["41"],
"cqzone": ["22"],
@@ -34645,7 +34645,7 @@
"dxcc": "308",
"cc": "CR",
"ccc": "CRI",
- "name": "Costa Rica",
+ "name": "哥斯达黎加",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["7"],
@@ -34670,7 +34670,7 @@
"dxcc": "309",
"cc": "MM",
"ccc": "MMR",
- "name": "Burma",
+ "name": "缅甸",
"continent": "AS",
"ituzone": ["49"],
"cqzone": ["26"],
@@ -34758,7 +34758,7 @@
"dxcc": "312",
"cc": "KH",
"ccc": "KHM",
- "name": "Cambodia",
+ "name": "柬埔寨",
"continent": "AS",
"ituzone": ["49"],
"cqzone": ["26"],
@@ -34800,7 +34800,7 @@
"dxcc": "315",
"cc": "LK",
"ccc": "LKA",
- "name": "Sri Lanka",
+ "name": "斯里兰卡",
"continent": "AS",
"ituzone": ["41"],
"cqzone": ["22"],
@@ -34835,7 +34835,7 @@
"dxcc": "318",
"cc": "CN",
"ccc": "CHN",
- "name": "China",
+ "name": "中国",
"continent": "AS",
"ituzone": ["33", "42", "43", "44"],
"cqzone": ["23", "24"],
@@ -37777,7 +37777,7 @@
"dxcc": "321",
"cc": "HK",
"ccc": "HKG",
- "name": "Hong Kong",
+ "name": "中国香港",
"continent": "AS",
"ituzone": ["44"],
"cqzone": ["24"],
@@ -37802,7 +37802,7 @@
"dxcc": "324",
"cc": "IN",
"ccc": "IND",
- "name": "India",
+ "name": "印度",
"continent": "AS",
"ituzone": ["41"],
"cqzone": ["22"],
@@ -38062,7 +38062,7 @@
"dxcc": "327",
"cc": "ID",
"ccc": "IDN",
- "name": "Indonesia",
+ "name": "印度尼西亚",
"continent": "OC",
"ituzone": ["51", "54"],
"cqzone": ["28"],
@@ -38438,7 +38438,7 @@
"dxcc": "330",
"cc": "IR",
"ccc": "IRN",
- "name": "Iran",
+ "name": "伊朗",
"continent": "AS",
"ituzone": ["40"],
"cqzone": ["21"],
@@ -38571,7 +38571,7 @@
"dxcc": "333",
"cc": "IQ",
"ccc": "IRQ",
- "name": "Iraq",
+ "name": "伊拉克",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["21"],
@@ -38631,7 +38631,7 @@
"dxcc": "336",
"cc": "IL",
"ccc": "ISR",
- "name": "Israel",
+ "name": "以色列",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["20"],
@@ -38703,7 +38703,7 @@
"dxcc": "339",
"cc": "JP",
"ccc": "JPN",
- "name": "Japan",
+ "name": "日本",
"continent": "AS",
"ituzone": ["45"],
"cqzone": ["25"],
@@ -38828,7 +38828,7 @@
"dxcc": "342",
"cc": "JO",
"ccc": "JOR",
- "name": "Jordan",
+ "name": "约旦",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["20"],
@@ -38865,7 +38865,7 @@
"dxcc": "344",
"cc": "KP",
"ccc": "PRK",
- "name": "North Korea",
+ "name": "朝鲜",
"continent": "AS",
"ituzone": ["44"],
"cqzone": ["25"],
@@ -38908,7 +38908,7 @@
"dxcc": "345",
"cc": "BN",
"ccc": "BRN",
- "name": "Brunei",
+ "name": "文莱",
"continent": "OC",
"ituzone": ["54"],
"cqzone": ["28"],
@@ -38933,7 +38933,7 @@
"dxcc": "348",
"cc": "KW",
"ccc": "KWT",
- "name": "Kuwait",
+ "name": "科威特",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["21"],
@@ -38958,7 +38958,7 @@
"dxcc": "354",
"cc": "LB",
"ccc": "LBN",
- "name": "Lebanon",
+ "name": "黎巴嫩",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["20"],
@@ -38983,7 +38983,7 @@
"dxcc": "363",
"cc": "MN",
"ccc": "MNG",
- "name": "Mongolia",
+ "name": "蒙古",
"continent": "AS",
"ituzone": ["32", "33"],
"cqzone": ["23"],
@@ -39135,7 +39135,7 @@
"dxcc": "369",
"cc": "NP",
"ccc": "NPL",
- "name": "Nepal",
+ "name": "尼泊尔",
"continent": "AS",
"ituzone": ["42"],
"cqzone": ["22"],
@@ -39178,7 +39178,7 @@
"dxcc": "370",
"cc": "OM",
"ccc": "OMN",
- "name": "Oman",
+ "name": "阿曼",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["21"],
@@ -39289,7 +39289,7 @@
"dxcc": "372",
"cc": "PK",
"ccc": "PAK",
- "name": "Pakistan",
+ "name": "巴基斯坦",
"continent": "AS",
"ituzone": ["41"],
"cqzone": ["21"],
@@ -39382,7 +39382,7 @@
"dxcc": "375",
"cc": "PH",
"ccc": "PHL",
- "name": "Philippines",
+ "name": "菲律宾",
"continent": "OC",
"ituzone": ["50"],
"cqzone": ["27"],
@@ -39481,7 +39481,7 @@
"dxcc": "376",
"cc": "QA",
"ccc": "QAT",
- "name": "Qatar",
+ "name": "卡塔尔",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["21"],
@@ -39506,7 +39506,7 @@
"dxcc": "378",
"cc": "SA",
"ccc": "SAU",
- "name": "Saudi Arabia",
+ "name": "沙特阿拉伯",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["21"],
@@ -39684,7 +39684,7 @@
"dxcc": "379",
"cc": "SC",
"ccc": "SYC",
- "name": "Seychelles",
+ "name": "塞舌尔群岛",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
@@ -39709,7 +39709,7 @@
"dxcc": "381",
"cc": "SG",
"ccc": "SGP",
- "name": "Singapore",
+ "name": "新加坡",
"continent": "AS",
"ituzone": ["54"],
"cqzone": ["28"],
@@ -39734,7 +39734,7 @@
"dxcc": "382",
"cc": "DJ",
"ccc": "DJI",
- "name": "Djibouti",
+ "name": "吉布提",
"continent": "AF",
"ituzone": ["48"],
"cqzone": ["37"],
@@ -39759,7 +39759,7 @@
"dxcc": "384",
"cc": "SY",
"ccc": "SYR",
- "name": "Syria",
+ "name": "叙利亚",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["20"],
@@ -39805,7 +39805,7 @@
"dxcc": "386",
"cc": "TW",
"ccc": "TWN",
- "name": "Taiwan",
+ "name": "中国台湾",
"continent": "AS",
"ituzone": ["44"],
"cqzone": ["24"],
@@ -39827,7 +39827,7 @@
"prefix": ["BM", "BN", "BO", "BP", "BQ", "BU", "BV", "BW", "BX"],
"worked": false,
"confirmed": false,
- "flag": "tw.png",
+ "flag": "cn.png",
"pp": "BV",
"lat": 23.96077747924268,
"lon": 120.73159579332417,
@@ -39841,7 +39841,7 @@
"dxcc": "387",
"cc": "TH",
"ccc": "THA",
- "name": "Thailand",
+ "name": "泰国",
"continent": "AS",
"ituzone": ["49"],
"cqzone": ["26"],
@@ -39914,7 +39914,7 @@
"dxcc": "390",
"cc": "TR",
"ccc": "TUR",
- "name": "Turkey",
+ "name": "土耳其",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["20"],
@@ -40094,7 +40094,7 @@
"dxcc": "391",
"cc": "AE",
"ccc": "ARE",
- "name": "United Arab Emirates",
+ "name": "阿拉伯联合酋长国",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["21"],
@@ -40170,7 +40170,7 @@
"dxcc": "400",
"cc": "DZ",
"ccc": "DZA",
- "name": "Algeria",
+ "name": "阿尔及利亚",
"continent": "AF",
"ituzone": ["37"],
"cqzone": ["33"],
@@ -40343,7 +40343,7 @@
"dxcc": "401",
"cc": "AO",
"ccc": "AGO",
- "name": "Angola",
+ "name": "安哥拉",
"continent": "AF",
"ituzone": ["52"],
"cqzone": ["36"],
@@ -40449,7 +40449,7 @@
"dxcc": "402",
"cc": "BW",
"ccc": "BWA",
- "name": "Botswana",
+ "name": "博茨瓦纳",
"continent": "AF",
"ituzone": ["57"],
"cqzone": ["38"],
@@ -40510,7 +40510,7 @@
"dxcc": "404",
"cc": "BI",
"ccc": "BDI",
- "name": "Burundi",
+ "name": "布隆迪",
"continent": "AF",
"ituzone": ["52"],
"cqzone": ["36"],
@@ -40535,7 +40535,7 @@
"dxcc": "406",
"cc": "CM",
"ccc": "CMR",
- "name": "Cameroon",
+ "name": "喀麦隆",
"continent": "AF",
"ituzone": ["47"],
"cqzone": ["36"],
@@ -40598,7 +40598,7 @@
"dxcc": "408",
"cc": "CF",
"ccc": "CAF",
- "name": "Central African Republic",
+ "name": "中非共和国",
"continent": "AF",
"ituzone": ["47"],
"cqzone": ["36"],
@@ -40666,7 +40666,7 @@
"dxcc": "409",
"cc": "CV",
"ccc": "CPV",
- "name": "Cape Verde",
+ "name": "佛得角",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -40691,7 +40691,7 @@
"dxcc": "410",
"cc": "TD",
"ccc": "TCD",
- "name": "Chad",
+ "name": "乍得",
"continent": "AF",
"ituzone": ["47"],
"cqzone": ["36"],
@@ -40799,7 +40799,7 @@
"dxcc": "411",
"cc": "KM",
"ccc": "COM",
- "name": "Comoros",
+ "name": "科摩罗",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
@@ -40824,7 +40824,7 @@
"dxcc": "412",
"cc": "CG",
"ccc": "COG",
- "name": "Congo",
+ "name": "刚果共和国",
"continent": "AF",
"ituzone": ["52"],
"cqzone": ["36"],
@@ -40881,7 +40881,7 @@
"dxcc": "414",
"cc": "CD",
"ccc": "COD",
- "name": "DRC",
+ "name": "刚果民主共和国",
"continent": "AF",
"ituzone": ["52"],
"cqzone": ["36"],
@@ -41035,7 +41035,7 @@
"dxcc": "416",
"cc": "BJ",
"ccc": "BEN",
- "name": "Benin",
+ "name": "贝宁",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -41074,7 +41074,7 @@
"dxcc": "420",
"cc": "GA",
"ccc": "GAB",
- "name": "Gabon",
+ "name": "加蓬",
"continent": "AF",
"ituzone": ["52"],
"cqzone": ["36"],
@@ -41123,7 +41123,7 @@
"dxcc": "422",
"cc": "GM",
"ccc": "GMB",
- "name": "Gambia",
+ "name": "冈比亚",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -41148,7 +41148,7 @@
"dxcc": "424",
"cc": "GH",
"ccc": "GHA",
- "name": "Ghana",
+ "name": "加纳",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -41197,7 +41197,7 @@
"dxcc": "428",
"cc": "CI",
"ccc": "CIV",
- "name": "Cote d'Ivorie",
+ "name": "象牙海岸",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -41247,7 +41247,7 @@
"dxcc": "430",
"cc": "KE",
"ccc": "KEN",
- "name": "Kenya",
+ "name": "肯尼亚",
"continent": "AF",
"ituzone": ["48"],
"cqzone": ["37"],
@@ -41311,7 +41311,7 @@
"dxcc": "432",
"cc": "LS",
"ccc": "LSO",
- "name": "Lesotho",
+ "name": "莱索托",
"continent": "AF",
"ituzone": ["57"],
"cqzone": ["38"],
@@ -41336,7 +41336,7 @@
"dxcc": "434",
"cc": "LR",
"ccc": "LBR",
- "name": "Liberia",
+ "name": "利比里亚",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -41374,7 +41374,7 @@
"dxcc": "436",
"cc": "LY",
"ccc": "LBY",
- "name": "Libya",
+ "name": "利比亚",
"continent": "AF",
"ituzone": ["38"],
"cqzone": ["34"],
@@ -41502,7 +41502,7 @@
"dxcc": "438",
"cc": "MG",
"ccc": "MDG",
- "name": "Madagascar",
+ "name": "马达加斯加",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
@@ -41573,7 +41573,7 @@
"dxcc": "440",
"cc": "MW",
"ccc": "MWI",
- "name": "Malawi",
+ "name": "马拉维",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["37"],
@@ -41614,7 +41614,7 @@
"dxcc": "442",
"cc": "ML",
"ccc": "MLI",
- "name": "Mali",
+ "name": "马里",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -41720,7 +41720,7 @@
"dxcc": "444",
"cc": "MR",
"ccc": "MRT",
- "name": "Mauritania",
+ "name": "毛里塔尼亚",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -41811,7 +41811,7 @@
"dxcc": "446",
"cc": "MA",
"ccc": "MAR",
- "name": "Morocco",
+ "name": "摩洛哥",
"continent": "AF",
"ituzone": ["37"],
"cqzone": ["33"],
@@ -41872,7 +41872,7 @@
"dxcc": "450",
"cc": "NG",
"ccc": "NGA",
- "name": "Nigeria",
+ "name": "尼日利亚",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -41954,7 +41954,7 @@
"dxcc": "452",
"cc": "ZW",
"ccc": "ZWE",
- "name": "Zimbabwe",
+ "name": "津巴布韦",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["38"],
@@ -42011,7 +42011,7 @@
"dxcc": "453",
"cc": "RE",
"ccc": "REU",
- "name": "Reunion Is.",
+ "name": "留尼旺岛",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["39"],
@@ -42053,7 +42053,7 @@
"dxcc": "454",
"cc": "RW",
"ccc": "RWA",
- "name": "Rwanda",
+ "name": "卢旺达",
"continent": "AF",
"ituzone": ["52"],
"cqzone": ["36"],
@@ -42078,7 +42078,7 @@
"dxcc": "456",
"cc": "SN",
"ccc": "SEN",
- "name": "Senegal",
+ "name": "塞内加尔",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -42122,7 +42122,7 @@
"dxcc": "458",
"cc": "SL",
"ccc": "SLE",
- "name": "Sierra Leone",
+ "name": "塞拉利昂",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -42147,7 +42147,7 @@
"dxcc": "460",
"cc": "FJ",
"ccc": "FJI",
- "name": "Rotuma",
+ "name": "罗图马岛",
"continent": "OC",
"ituzone": ["56"],
"cqzone": ["32"],
@@ -42186,7 +42186,7 @@
"dxcc": "462",
"cc": "ZA",
"ccc": "ZAF",
- "name": "South Africa",
+ "name": "南非",
"continent": "AF",
"ituzone": ["57"],
"cqzone": ["38"],
@@ -42330,7 +42330,7 @@
"dxcc": "464",
"cc": "NA",
"ccc": "NAM",
- "name": "Namibia",
+ "name": "纳米比亚",
"continent": "AF",
"ituzone": ["57"],
"cqzone": ["38"],
@@ -42420,7 +42420,7 @@
"dxcc": "466",
"cc": "SD",
"ccc": "SDN",
- "name": "Sudan",
+ "name": "苏丹",
"continent": "AF",
"ituzone": ["47", "48"],
"cqzone": ["34"],
@@ -42549,7 +42549,7 @@
"dxcc": "468",
"cc": "SZ",
"ccc": "SWZ",
- "name": "Swaziland",
+ "name": "斯威士兰王国",
"continent": "AF",
"ituzone": ["57"],
"cqzone": ["38"],
@@ -42574,7 +42574,7 @@
"dxcc": "470",
"cc": "TZ",
"ccc": "TZA",
- "name": "Tanzania",
+ "name": "坦桑尼亚",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["37"],
@@ -42653,7 +42653,7 @@
"dxcc": "474",
"cc": "TN",
"ccc": "TUN",
- "name": "Tunisia",
+ "name": "突尼斯",
"continent": "AF",
"ituzone": ["37"],
"cqzone": ["33"],
@@ -42697,7 +42697,7 @@
"dxcc": "478",
"cc": "EG",
"ccc": "EGY",
- "name": "Egypt",
+ "name": "埃及",
"continent": "AF",
"ituzone": ["38"],
"cqzone": ["34"],
@@ -42791,7 +42791,7 @@
"dxcc": "480",
"cc": "BF",
"ccc": "BFA",
- "name": "Burkina Faso",
+ "name": "布吉那法索",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -42841,7 +42841,7 @@
"dxcc": "482",
"cc": "ZM",
"ccc": "ZMB",
- "name": "Zambia",
+ "name": "赞比亚",
"continent": "AF",
"ituzone": ["53"],
"cqzone": ["36"],
@@ -42914,7 +42914,7 @@
"dxcc": "483",
"cc": "TG",
"ccc": "TGO",
- "name": "Togo",
+ "name": "多哥",
"continent": "AF",
"ituzone": ["46"],
"cqzone": ["35"],
@@ -42939,7 +42939,7 @@
"dxcc": "489",
"cc": "FJ",
"ccc": "FJI",
- "name": "Conway Reef",
+ "name": "康威礁",
"continent": "OC",
"ituzone": ["56"],
"cqzone": ["32"],
@@ -42964,7 +42964,7 @@
"dxcc": "490",
"cc": "KI",
"ccc": "KIR",
- "name": "Banaba Is.",
+ "name": "巴纳巴岛",
"continent": "OC",
"ituzone": ["65"],
"cqzone": ["31"],
@@ -42989,7 +42989,7 @@
"dxcc": "492",
"cc": "YE",
"ccc": "YEM",
- "name": "Yemen",
+ "name": "也门",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["21"],
@@ -43049,7 +43049,7 @@
"dxcc": "497",
"cc": "HR",
"ccc": "HRV",
- "name": "Croatia",
+ "name": "克罗地亚",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -43115,7 +43115,7 @@
"dxcc": "499",
"cc": "SI",
"ccc": "SVN",
- "name": "Slovenia",
+ "name": "斯洛文尼亚",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -43147,7 +43147,7 @@
"dxcc": "501",
"cc": "BA",
"ccc": "BIH",
- "name": "Bosnia-Herzegovina",
+ "name": "波斯尼亚和黑塞哥维那",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -43183,7 +43183,7 @@
"dxcc": "502",
"cc": "MK",
"ccc": "MKD",
- "name": "Macedonia",
+ "name": "北马其顿",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -43208,7 +43208,7 @@
"dxcc": "503",
"cc": "CZ",
"ccc": "CZE",
- "name": "Czech Republic",
+ "name": "捷克",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -43254,7 +43254,7 @@
"dxcc": "504",
"cc": "SK",
"ccc": "SVK",
- "name": "Slovak Republic",
+ "name": "斯洛伐克",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -43290,7 +43290,7 @@
"dxcc": "505",
"cc": "TW",
"ccc": "TWN",
- "name": "Pratas I.",
+ "name": "中国东沙群岛",
"continent": "AS",
"ituzone": ["44"],
"cqzone": ["24"],
@@ -43311,7 +43311,7 @@
],
"worked": false,
"confirmed": false,
- "flag": "tw.png",
+ "flag": "cn.png",
"pp": "BV9P",
"lat": 20.78161356717223,
"lon": 116.74439871970733,
@@ -43325,7 +43325,7 @@
"dxcc": "506",
"cc": "PH",
"ccc": "PHL",
- "name": "Scarborough Reef",
+ "name": "中国黄岩岛",
"continent": "AS",
"ituzone": ["50"],
"cqzone": ["27"],
@@ -43336,7 +43336,7 @@
"prefix": ["=BS7H"],
"worked": false,
"confirmed": false,
- "flag": "ph.png",
+ "flag": "cn.png",
"pp": "BS7",
"lat": 15.28852689750839,
"lon": 117.76863283036123,
@@ -43350,7 +43350,7 @@
"dxcc": "507",
"cc": "SB",
"ccc": "SLB",
- "name": "Temotu",
+ "name": "泰莫图省",
"continent": "OC",
"ituzone": ["51"],
"cqzone": ["28"],
@@ -43375,7 +43375,7 @@
"dxcc": "508",
"cc": "PF",
"ccc": "PYF",
- "name": "Austral Is & Tubuai",
+ "name": "南方群岛",
"continent": "OC",
"ituzone": ["63"],
"cqzone": ["32"],
@@ -43419,6 +43419,7 @@
"=TX3D",
"=TX5BTY",
"=TX5D",
+ "=TX5N",
"=TX5RV",
"=TX5SPA",
"=TX5T",
@@ -43442,7 +43443,7 @@
"dxcc": "509",
"cc": "FR",
"ccc": "FRA",
- "name": "Marquesas Is.",
+ "name": "马克萨斯岛",
"continent": "OC",
"ituzone": ["63"],
"cqzone": ["31"],
@@ -43501,7 +43502,7 @@
"dxcc": "510",
"cc": "PS",
"ccc": "PSE",
- "name": "Palestine",
+ "name": "巴勒斯坦",
"continent": "AS",
"ituzone": ["39"],
"cqzone": ["20"],
@@ -43526,7 +43527,7 @@
"dxcc": "511",
"cc": "TL",
"ccc": "TLS",
- "name": "Timor-Leste",
+ "name": "东帝汶",
"continent": "OC",
"ituzone": ["54"],
"cqzone": ["28"],
@@ -43551,7 +43552,7 @@
"dxcc": "512",
"cc": "GB",
"ccc": "GBR",
- "name": "Chesterfield Is.",
+ "name": "切斯特菲尔德岛",
"continent": "OC",
"ituzone": ["55"],
"cqzone": ["30"],
@@ -43585,7 +43586,7 @@
"dxcc": "513",
"cc": "PN",
"ccc": "PCN",
- "name": "Ducie I.",
+ "name": "迪西岛",
"continent": "OC",
"ituzone": ["63"],
"cqzone": ["32"],
@@ -43610,7 +43611,7 @@
"dxcc": "514",
"cc": "ME",
"ccc": "MNE",
- "name": "Montenegro",
+ "name": "黑山共和国",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -43635,7 +43636,7 @@
"dxcc": "515",
"cc": "US",
"ccc": "USA",
- "name": "Swains I.",
+ "name": "斯温斯岛",
"continent": "OC",
"ituzone": ["62"],
"cqzone": ["32"],
@@ -43667,7 +43668,7 @@
"dxcc": "516",
"cc": "FR",
"ccc": "FRA",
- "name": "St Barthélemy",
+ "name": "圣巴泰勒米岛",
"continent": "NA",
"ituzone": ["0"],
"cqzone": ["0"],
@@ -43707,7 +43708,7 @@
"dxcc": "517",
"cc": "AN",
"ccc": "ANT",
- "name": "Curacao",
+ "name": "库拉索岛",
"continent": "SA",
"ituzone": ["11"],
"cqzone": ["9"],
@@ -43732,7 +43733,7 @@
"dxcc": "518",
"cc": "SX",
"ccc": "SXM",
- "name": "St Maarten",
+ "name": "圣马丁岛",
"continent": "SA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -43757,7 +43758,7 @@
"dxcc": "519",
"cc": "AN",
"ccc": "ANT",
- "name": "Saba & St Eustatius",
+ "name": "萨巴岛及圣尤斯特歇斯岛",
"continent": "NA",
"ituzone": ["11"],
"cqzone": ["8"],
@@ -43782,7 +43783,7 @@
"dxcc": "520",
"cc": "BQ",
"ccc": "BES",
- "name": "Bonaire",
+ "name": "博奈尔岛",
"continent": "SA",
"ituzone": ["11"],
"cqzone": ["9"],
@@ -43807,7 +43808,7 @@
"dxcc": "521",
"cc": "SS",
"ccc": "SSD",
- "name": "South Sudan",
+ "name": "南苏丹",
"continent": "AF",
"ituzone": ["47", "48"],
"cqzone": ["34"],
@@ -43877,7 +43878,7 @@
"dxcc": "522",
"cc": "XK",
"ccc": "XKX",
- "name": "Kosovo",
+ "name": "科索沃",
"continent": "EU",
"ituzone": ["28"],
"cqzone": ["15"],
@@ -43902,7 +43903,7 @@
"dxcc": "289",
"cc": "UN",
"ccc": "UNS",
- "name": "United Nations HQ",
+ "name": "联合国总部",
"continent": "NA",
"ituzone": ["8"],
"cqzone": ["5"],
diff --git a/package.nw/data/state.json b/package.nw/data/state.json
index 4dd3002..03ebc3f 100644
--- a/package.nw/data/state.json
+++ b/package.nw/data/state.json
@@ -1,7 +1,7 @@
{
"CA-NT": {
"postal": "CA-NT",
- "name": "Northwest Territories",
+ "name": "西北地区",
"mh": [
"CP72",
"DP22",
@@ -212,7 +212,7 @@
},
"CA-NU": {
"postal": "CA-NU",
- "name": "Nunavut",
+ "name": "努纳武特地区",
"mh": [
"DP90",
"DP91",
@@ -746,7 +746,7 @@
},
"CA-YT": {
"postal": "CA-YT",
- "name": "Yukon",
+ "name": "育空地区",
"mh": [
"BP98",
"BP99",
@@ -809,7 +809,7 @@
},
"CA-MB": {
"postal": "CA-MB",
- "name": "Manitoba",
+ "name": "曼尼托巴省",
"mh": [
"DN99",
"EN09",
@@ -872,7 +872,7 @@
},
"CA-SK": {
"postal": "CA-SK",
- "name": "Saskatchewan",
+ "name": "萨斯喀彻温省",
"mh": [
"DN69",
"DN79",
@@ -930,7 +930,7 @@
},
"CA-AB": {
"postal": "CA-AB",
- "name": "Alberta",
+ "name": "阿尔伯塔省",
"mh": [
"DN39",
"DN49",
@@ -987,7 +987,7 @@
},
"CA-BC": {
"postal": "CA-BC",
- "name": "British Columbia",
+ "name": "不列颠哥伦比亚省",
"mh": [
"CN78",
"CN88",
@@ -1083,7 +1083,7 @@
},
"CA-ON": {
"postal": "CA-ON",
- "name": "Ontario",
+ "name": "安大略省",
"mh": [
"EN81",
"EN91",
@@ -1187,7 +1187,7 @@
},
"CA-QC": {
"postal": "CA-QC",
- "name": "Québec",
+ "name": "魁北克省",
"mh": [
"FN15",
"FN25",
@@ -1338,7 +1338,7 @@
},
"CA-NB": {
"postal": "CA-NB",
- "name": "New Brunswick",
+ "name": "新不伦瑞克省",
"mh": [
"FN65",
"FN66",
@@ -1355,7 +1355,7 @@
},
"CA-NS": {
"postal": "CA-NS",
- "name": "Nova Scotia",
+ "name": "新斯科舍省",
"mh": [
"FN73",
"FN74",
@@ -1375,7 +1375,7 @@
},
"CA-NL": {
"postal": "CA-NL",
- "name": "Newfoundland and Labrador",
+ "name": "纽芬兰与拉布拉多省",
"mh": [
"GO10",
"GO20",
@@ -1437,19 +1437,19 @@
},
"CA-PE": {
"postal": "CA-PE",
- "name": "Prince Edward Island",
+ "name": "爱德华王子岛省",
"mh": ["FN86", "FN85", "FN96", "FN76", "FN77", "FN87"],
"dxcc": 1
},
"US-MA": {
"postal": "US-MA",
- "name": "Massachusetts",
+ "name": "麻萨诸塞州",
"mh": ["FN51", "FN32", "FN42", "FN41"],
"dxcc": 291
},
"US-MN": {
"postal": "US-MN",
- "name": "Minnesota",
+ "name": "明尼苏达州",
"mh": [
"EN13",
"EN23",
@@ -1482,7 +1482,7 @@
},
"US-MT": {
"postal": "US-MT",
- "name": "Montana",
+ "name": "蒙大拿州",
"mh": [
"DN34",
"DN25",
@@ -1517,7 +1517,7 @@
},
"US-ND": {
"postal": "US-ND",
- "name": "North Dakota",
+ "name": "北达科他州",
"mh": [
"DN75",
"DN85",
@@ -1544,7 +1544,7 @@
},
"US-ID": {
"postal": "US-ID",
- "name": "Idaho",
+ "name": "爱达荷州",
"mh": [
"DN13",
"DN23",
@@ -1571,7 +1571,7 @@
},
"US-WA": {
"postal": "US-WA",
- "name": "Washington",
+ "name": "华盛顿州",
"mh": [
"CN76",
"DN06",
@@ -1596,7 +1596,7 @@
},
"US-AZ": {
"postal": "US-AZ",
- "name": "Arizona",
+ "name": "亚利桑那州",
"mh": [
"DM31",
"DM41",
@@ -1630,7 +1630,7 @@
},
"US-CA": {
"postal": "US-CA",
- "name": "California",
+ "name": "加利福尼亚州",
"mh": [
"CM93",
"DM02",
@@ -1674,7 +1674,7 @@
},
"US-CO": {
"postal": "US-CO",
- "name": "Colorado",
+ "name": "科罗拉多州",
"mh": [
"DM57",
"DM67",
@@ -1697,7 +1697,7 @@
},
"US-NV": {
"postal": "US-NV",
- "name": "Nevada",
+ "name": "内华达州",
"mh": [
"DM25",
"DM16",
@@ -1722,7 +1722,7 @@
},
"US-NM": {
"postal": "US-NM",
- "name": "New Mexico",
+ "name": "新墨西哥州",
"mh": [
"DM51",
"DM52",
@@ -1751,7 +1751,7 @@
},
"US-OR": {
"postal": "US-OR",
- "name": "Oregon",
+ "name": "俄勒冈州",
"mh": [
"CN72",
"CN82",
@@ -1783,7 +1783,7 @@
},
"US-UT": {
"postal": "US-UT",
- "name": "Utah",
+ "name": "犹他州",
"mh": [
"DM27",
"DM37",
@@ -1809,7 +1809,7 @@
},
"US-WY": {
"postal": "US-WY",
- "name": "Wyoming",
+ "name": "怀俄明州",
"mh": [
"DN41",
"DN51",
@@ -1832,7 +1832,7 @@
},
"US-AR": {
"postal": "US-AR",
- "name": "Arkansas",
+ "name": "阿肯色州",
"mh": [
"EM23",
"EM24",
@@ -1852,7 +1852,7 @@
},
"US-IA": {
"postal": "US-IA",
- "name": "Iowa",
+ "name": "艾奥瓦州",
"mh": [
"EN20",
"EN30",
@@ -1874,7 +1874,7 @@
},
"US-KS": {
"postal": "US-KS",
- "name": "Kansas",
+ "name": "堪萨斯州",
"mh": [
"EM08",
"EM18",
@@ -1896,7 +1896,7 @@
},
"US-MO": {
"postal": "US-MO",
- "name": "Missouri",
+ "name": "密苏里州",
"mh": [
"EM26",
"EM36",
@@ -1922,7 +1922,7 @@
},
"US-NE": {
"postal": "US-NE",
- "name": "Nebraska",
+ "name": "内布拉斯加州",
"mh": [
"EN00",
"DN81",
@@ -1944,7 +1944,7 @@
},
"US-OK": {
"postal": "US-OK",
- "name": "Oklahoma",
+ "name": "俄克拉何马州",
"mh": [
"EM03",
"EM13",
@@ -1965,7 +1965,7 @@
},
"US-SD": {
"postal": "US-SD",
- "name": "South Dakota",
+ "name": "南达科他州",
"mh": [
"EN12",
"DN83",
@@ -1989,7 +1989,7 @@
},
"US-LA": {
"postal": "US-LA",
- "name": "Louisiana",
+ "name": "路易斯安那州",
"mh": [
"EL58",
"EL39",
@@ -2009,7 +2009,7 @@
},
"US-TX": {
"postal": "US-TX",
- "name": "Texas",
+ "name": "得克萨斯州",
"mh": [
"EL15",
"EL06",
@@ -2066,37 +2066,37 @@
},
"US-CT": {
"postal": "US-CT",
- "name": "Connecticut",
+ "name": "康涅狄格州",
"mh": ["FN30", "FN31", "FN41", "FN32", "FN42"],
"dxcc": 291
},
"US-NH": {
"postal": "US-NH",
- "name": "New Hampshire",
+ "name": "新罕布什尔州",
"mh": ["FN45", "FN42", "FN32", "FN33", "FN44", "FN34", "FN43"],
"dxcc": 291
},
"US-RI": {
"postal": "US-RI",
- "name": "Rhode Island",
+ "name": "罗得岛州",
"mh": ["FN41", "FN42"],
"dxcc": 291
},
"US-DC": {
"postal": "US-DC",
- "name": "District Of Columbia",
+ "name": "华盛顿哥伦比亚特区",
"mh": ["FM18"],
"dxcc": 291
},
"US-GU": {
"postal": "US-GU",
- "name": "Guam",
+ "name": "关岛",
"mh": ["QK23"],
"dxcc": 103
},
"US-MH": {
"postal": "US-MH",
- "name": "Marshall Islands",
+ "name": "马绍尔群岛",
"mh": [
"RJ29",
"RJ38",
@@ -2122,31 +2122,31 @@
},
"US-PR": {
"postal": "US-PR",
- "name": "Puerto Rico",
+ "name": "波多黎各",
"mh": ["FK67", "FK68", "FK77", "FK78"],
"dxcc": 202
},
"US-VI": {
"postal": "US-VI",
- "name": "Virgin Islands",
+ "name": "美属维京群岛",
"mh": ["FK77", "FK78"],
"dxcc": 285
},
"US-MP": {
"postal": "US-MP",
- "name": "Northern Mariana Islands",
+ "name": "北马里亚纳群岛",
"mh": ["LH89"],
"dxcc": 4
},
"US-VT": {
"postal": "US-VT",
- "name": "Vermont",
+ "name": "佛蒙特州",
"mh": ["FN33", "FN34", "FN35", "FN44", "FN32", "FN45"],
"dxcc": 291
},
"US-AL": {
"postal": "US-AL",
- "name": "Alabama",
+ "name": "阿拉巴马州",
"mh": [
"EM50",
"EM51",
@@ -2167,7 +2167,7 @@
},
"US-FL": {
"postal": "US-FL",
- "name": "Florida",
+ "name": "佛罗里达州",
"mh": [
"EL94",
"EL95",
@@ -2190,7 +2190,7 @@
},
"US-GA": {
"postal": "US-GA",
- "name": "Georgia",
+ "name": "佐治亚州",
"mh": [
"EM70",
"EM80",
@@ -2211,7 +2211,7 @@
},
"US-MS": {
"postal": "US-MS",
- "name": "Mississippi",
+ "name": "密西西比州",
"mh": [
"EM50",
"EM42",
@@ -2227,7 +2227,7 @@
},
"US-SC": {
"postal": "US-SC",
- "name": "South Carolina",
+ "name": "南卡罗来纳州",
"mh": [
"EM91",
"EM92",
@@ -2245,7 +2245,7 @@
},
"US-IL": {
"postal": "US-IL",
- "name": "Illinois",
+ "name": "伊利诺伊州",
"mh": [
"EM47",
"EM48",
@@ -2269,7 +2269,7 @@
},
"US-IN": {
"postal": "US-IN",
- "name": "Indiana",
+ "name": "印第安纳州",
"mh": [
"EM57",
"EM67",
@@ -2287,7 +2287,7 @@
},
"US-KY": {
"postal": "US-KY",
- "name": "Kentucky",
+ "name": "肯塔基州",
"mh": [
"EM56",
"EM66",
@@ -2307,7 +2307,7 @@
},
"US-NC": {
"postal": "US-NC",
- "name": "North Carolina",
+ "name": "北卡罗来纳州",
"mh": [
"FM03",
"FM13",
@@ -2330,7 +2330,7 @@
},
"US-OH": {
"postal": "US-OH",
- "name": "Ohio",
+ "name": "俄亥俄州",
"mh": [
"EM78",
"EM88",
@@ -2350,7 +2350,7 @@
},
"US-TN": {
"postal": "US-TN",
- "name": "Tennessee",
+ "name": "田纳西州",
"mh": [
"EM75",
"EM56",
@@ -2367,7 +2367,7 @@
},
"US-VA": {
"postal": "US-VA",
- "name": "Virginia",
+ "name": "弗吉尼亚州",
"mh": [
"EM86",
"EM96",
@@ -2389,7 +2389,7 @@
},
"US-WI": {
"postal": "US-WI",
- "name": "Wisconsin",
+ "name": "威斯康星州",
"mh": [
"EN42",
"EN52",
@@ -2414,7 +2414,7 @@
},
"US-WV": {
"postal": "US-WV",
- "name": "West Virginia",
+ "name": "西弗吉尼亚州",
"mh": [
"EM87",
"EM97",
@@ -2433,25 +2433,25 @@
},
"US-DE": {
"postal": "US-DE",
- "name": "Delaware",
+ "name": "特拉华州",
"mh": ["FM28", "FM29"],
"dxcc": 291
},
"US-MD": {
"postal": "US-MD",
- "name": "Maryland",
+ "name": "马里兰州",
"mh": ["FM17", "FM27", "FM08", "FM18", "FM28", "FM09", "FM19", "FM29"],
"dxcc": 291
},
"US-NJ": {
"postal": "US-NJ",
- "name": "New Jersey",
+ "name": "新泽西州",
"mh": ["FM29", "FN20", "FN30", "FN21", "FN31", "FM28"],
"dxcc": 291
},
"US-NY": {
"postal": "US-NY",
- "name": "New York",
+ "name": "纽约州",
"mh": [
"FN23",
"FN02",
@@ -2476,7 +2476,7 @@
},
"US-PA": {
"postal": "US-PA",
- "name": "Pennsylvania",
+ "name": "宾夕法尼亚州",
"mh": [
"EM99",
"FM09",
@@ -2497,7 +2497,7 @@
},
"US-ME": {
"postal": "US-ME",
- "name": "Maine",
+ "name": "缅因州",
"mh": [
"FN43",
"FN53",
@@ -2517,7 +2517,7 @@
},
"US-MI": {
"postal": "US-MI",
- "name": "Michigan",
+ "name": "密歇根州",
"mh": [
"EN61",
"EN71",
@@ -2550,19 +2550,19 @@
},
"MX-DIF": {
"postal": "MX-DIF",
- "name": "Distrito Federal",
+ "name": "墨西哥聯邦特區",
"mh": ["EK09"],
"dxcc": 50
},
"MX-AGU": {
"postal": "MX-AGU",
- "name": "Aguascalientes",
+ "name": "阿瓜斯卡连特斯州",
"mh": ["DL81", "DL91", "DL82", "DL92"],
"dxcc": 50
},
"MX-BCN": {
"postal": "MX-BCN",
- "name": "Baja California",
+ "name": "下加利福尼亚州",
"mh": [
"DL38",
"DL28",
@@ -2579,7 +2579,7 @@
},
"MX-BCS": {
"postal": "MX-BCS",
- "name": "Baja California Sur",
+ "name": "南下加利福尼亚州",
"mh": [
"DL37",
"DL27",
@@ -2601,7 +2601,7 @@
},
"MX-CAM": {
"postal": "MX-CAM",
- "name": "Campeche",
+ "name": "坎佩切州",
"mh": [
"EL40",
"EL50",
@@ -2617,13 +2617,13 @@
},
"MX-CHP": {
"postal": "MX-CHP",
- "name": "Chiapas",
+ "name": "恰帕斯州",
"mh": ["EK47", "EK37", "EK36", "EK26", "EK35", "EK34", "EK45", "EK46"],
"dxcc": 50
},
"MX-CHH": {
"postal": "MX-CHH",
- "name": "Chihuahua",
+ "name": "齐瓦瓦州",
"mh": [
"DM51",
"DM61",
@@ -2653,7 +2653,7 @@
},
"MX-COA": {
"postal": "MX-COA",
- "name": "Coahuila",
+ "name": "科阿韦拉州",
"mh": [
"DL89",
"DL99",
@@ -2673,13 +2673,13 @@
},
"MX-COL": {
"postal": "MX-COL",
- "name": "Colima",
+ "name": "科利马州",
"mh": ["DK89", "DK79", "DK88", "DK78"],
"dxcc": 50
},
"MX-DUR": {
"postal": "MX-DUR",
- "name": "Durango",
+ "name": "杜兰戈州",
"mh": [
"DL86",
"DL76",
@@ -2698,25 +2698,25 @@
},
"MX-GUA": {
"postal": "MX-GUA",
- "name": "Guanajuato",
+ "name": "瓜纳华托州",
"mh": ["DL91", "EL01", "DL90", "DL80", "DK99"],
"dxcc": 50
},
"MX-GRO": {
"postal": "MX-GRO",
- "name": "Guerrero",
+ "name": "格雷罗州",
"mh": ["EK08", "DK98", "DK88", "DK87", "DK97", "EK07", "EK06"],
"dxcc": 50
},
"MX-HID": {
"postal": "MX-HID",
- "name": "Hidalgo",
+ "name": "伊达尔哥州",
"mh": ["EL01", "EL00", "EK09"],
"dxcc": 50
},
"MX-JAL": {
"postal": "MX-JAL",
- "name": "Jalisco",
+ "name": "哈利斯科州",
"mh": [
"DL91",
"DL81",
@@ -2732,31 +2732,31 @@
},
"MX-MIC": {
"postal": "MX-MIC",
- "name": "Michoacán",
+ "name": "米却肯州",
"mh": ["DL80", "DL90", "DK99", "DK98", "DK88", "DK87", "DK89"],
"dxcc": 50
},
"MX-MOR": {
"postal": "MX-MOR",
- "name": "Morelos",
+ "name": "莫雷洛斯州",
"mh": ["EK09", "EK08"],
"dxcc": 50
},
"MX-MEX": {
"postal": "MX-MEX",
- "name": "México",
+ "name": "墨西哥州",
"mh": ["EK09", "EL00", "DK99", "DK98", "EK08", "DL90"],
"dxcc": 50
},
"MX-NAY": {
"postal": "MX-NAY",
- "name": "Nayarit",
+ "name": "纳亚里特州",
"mh": ["DL72", "DL71", "DL81", "DL70", "DL61", "DL73"],
"dxcc": 50
},
"MX-NLE": {
"postal": "MX-NLE",
- "name": "Nuevo León",
+ "name": "新萊昂州",
"mh": [
"EL07",
"DL97",
@@ -2773,7 +2773,7 @@
},
"MX-OAX": {
"postal": "MX-OAX",
- "name": "Oaxaca",
+ "name": "瓦哈卡州",
"mh": [
"EK17",
"EK18",
@@ -2792,31 +2792,31 @@
},
"MX-PUE": {
"postal": "MX-PUE",
- "name": "Puebla",
+ "name": "普埃布拉",
"mh": ["EL10", "EL00", "EK19", "EK09", "EK18", "EK17", "EK07", "EK08"],
"dxcc": 50
},
"MX-QUE": {
"postal": "MX-QUE",
- "name": "Querétaro",
+ "name": "克雷塔罗州",
"mh": ["DL90", "EL00", "EL01", "DL91"],
"dxcc": 50
},
"MX-ROO": {
"postal": "MX-ROO",
- "name": "Quintana Roo",
+ "name": "金塔纳罗奥",
"mh": ["EL61", "EL60", "EL50", "EK59", "EK69", "EK58", "EK68", "EK57"],
"dxcc": 50
},
"MX-SLP": {
"postal": "MX-SLP",
- "name": "San Luis Potosí",
+ "name": "圣路易斯波托西",
"mh": ["DL94", "DL93", "DL83", "DL92", "DL82", "EL02", "EL01", "DL91"],
"dxcc": 50
},
"MX-SIN": {
"postal": "MX-SIN",
- "name": "Sinaloa",
+ "name": "西纳罗亚州",
"mh": [
"DL56",
"DL57",
@@ -2835,7 +2835,7 @@
},
"MX-SON": {
"postal": "MX-SON",
- "name": "Sonora",
+ "name": "索诺拉州",
"mh": [
"DM22",
"DM21",
@@ -2860,13 +2860,13 @@
},
"MX-TAB": {
"postal": "MX-TAB",
- "name": "Tabasco",
+ "name": "塔巴斯科州",
"mh": ["EK38", "EK47", "EK48", "EK37", "EK28", "EK27"],
"dxcc": 50
},
"MX-TAM": {
"postal": "MX-TAM",
- "name": "Tamaulipas",
+ "name": "塔毛利帕斯州",
"mh": [
"EL07",
"EL06",
@@ -2886,13 +2886,13 @@
},
"MX-TLA": {
"postal": "MX-TLA",
- "name": "Tlaxcala",
+ "name": "特拉斯卡拉",
"mh": ["EK09", "EK19"],
"dxcc": 50
},
"MX-VER": {
"postal": "MX-VER",
- "name": "Veracruz",
+ "name": "韦拉克鲁斯州",
"mh": [
"EK28",
"EK37",
@@ -2911,13 +2911,13 @@
},
"MX-YUC": {
"postal": "MX-YUC",
- "name": "Yucatán",
+ "name": "尤卡坦州",
"mh": ["EL40", "EL50", "EK59", "EL60", "EL61", "EL51", "EL41"],
"dxcc": 50
},
"MX-ZAC": {
"postal": "MX-ZAC",
- "name": "Zacatecas",
+ "name": "萨卡特卡斯州",
"mh": [
"DL81",
"DL82",
@@ -2935,7 +2935,7 @@
"dxcc": 50
},
"AU-NSW": {
- "name": "New South Wales",
+ "name": "新南威尔士州",
"postal": "AU-NSW",
"mh": [
"QF19",
@@ -2996,7 +2996,7 @@
"dxcc": 150
},
"AU-VIC": {
- "name": "Victoria",
+ "name": "维多利亚州",
"postal": "AU-VIC",
"mh": [
"QF01",
@@ -3025,7 +3025,7 @@
"dxcc": 150
},
"AU-QLD": {
- "name": "Queensland",
+ "name": "昆士兰州",
"postal": "AU-QLD",
"mh": [
"QG11",
@@ -3133,7 +3133,7 @@
"dxcc": 150
},
"AU-TAS": {
- "name": "Tasmania",
+ "name": "塔斯马尼亚岛",
"postal": "AU-TAS",
"mh": [
"QE37",
@@ -3157,7 +3157,7 @@
"dxcc": 150
},
"AU-SA": {
- "name": "South Australia",
+ "name": "南澳大利亚州",
"postal": "AU-SA",
"mh": [
"PG43",
@@ -3229,7 +3229,7 @@
"dxcc": 150
},
"AU-WA": {
- "name": "Western Australia",
+ "name": "西澳大利亚州",
"postal": "AU-WA",
"mh": [
"PH44",
@@ -3388,7 +3388,7 @@
"dxcc": 150
},
"AU-NT": {
- "name": "Northern Territory",
+ "name": "北领地",
"postal": "AU-NT",
"mh": [
"PG54",
@@ -3469,19 +3469,19 @@
"dxcc": 150
},
"AU-ACT": {
- "name": "Australian Capital Territory",
+ "name": "首都领地",
"postal": "AU-ACT",
"mh": ["QF44"],
"dxcc": 150
},
"DE-BW": {
- "name": "Baden-Württemberg",
+ "name": "巴登-符腾堡州",
"dxcc": 230,
"mh": ["JN49", "JN59", "JN58", "JN57", "JN47", "JN37", "JN38", "JN48"],
"postal": "DE-BW"
},
"DE-BY": {
- "name": "Bayern",
+ "name": "巴伐利亚州",
"dxcc": 230,
"mh": [
"JN49",
@@ -3500,85 +3500,85 @@
"postal": "DE-BY"
},
"DE-BE": {
- "name": "Berlin",
+ "name": "柏林",
"dxcc": 230,
"mh": ["JO62"],
"postal": "DE-BE"
},
"DE-BB": {
- "name": "Brandenburg",
+ "name": "勃兰登堡",
"dxcc": 230,
"mh": ["JO61", "JO71", "JO72", "JO62", "JO52", "JO53", "JO63", "JO73"],
"postal": "DE-BB"
},
"DE-HB": {
- "name": "Bremen",
+ "name": "不来梅",
"dxcc": 230,
"mh": ["JO43"],
"postal": "DE-HB"
},
"DE-HH": {
- "name": "Hamburg",
+ "name": "汉堡",
"dxcc": 230,
"mh": ["JO43", "JO53"],
"postal": "DE-HH"
},
"DE-HE": {
- "name": "Hessen",
+ "name": "黑森州",
"dxcc": 230,
"mh": ["JN49", "JO30", "JN39", "JO40", "JO50", "JO41", "JO51"],
"postal": "DE-HE"
},
"DE-MV": {
- "name": "Mecklenburg-Vorpommern",
+ "name": "梅克伦堡-前波美拉尼亚州",
"dxcc": 230,
"mh": ["JO53", "JO63", "JO73", "JO64", "JO74", "JO54"],
"postal": "DE-MV"
},
"DE-NI": {
- "name": "Niedersachsen",
+ "name": "下萨克森州",
"dxcc": 230,
"mh": ["JO32", "JO33", "JO43", "JO53", "JO52", "JO51", "JO41", "JO42"],
"postal": "DE-NI"
},
"DE-NW": {
- "name": "Nordrhein-Westfalen",
+ "name": "北莱茵-威斯特法伦州",
"dxcc": 230,
"mh": ["JO42", "JO32", "JO31", "JO21", "JO20", "JO30", "JO40", "JO41"],
"postal": "DE-NW"
},
"DE-RP": {
- "name": "Rheinland-Pfalz",
+ "name": "莱茵兰-普法尔茨州",
"dxcc": 230,
"mh": ["JN49", "JN48", "JN39", "JO30", "JO40"],
"postal": "DE-RP"
},
"DE-SL": {
- "name": "Saarland",
+ "name": "萨尔州",
"dxcc": 230,
"mh": ["JN39"],
"postal": "DE-SL"
},
"DE-SN": {
- "name": "Sachsen",
+ "name": "萨克森自由州",
"dxcc": 230,
"mh": ["JO70", "JO71", "JO61", "JO60", "JO50"],
"postal": "DE-SN"
},
"DE-ST": {
- "name": "Sachsen-Anhalt",
+ "name": "萨克森-安哈尔特州",
"dxcc": 230,
"mh": ["JO52", "JO62", "JO53", "JO61", "JO60", "JO51"],
"postal": "DE-ST"
},
"DE-SH": {
- "name": "Schleswig-Holstein",
+ "name": "石勒苏益格-荷尔斯泰因州",
"dxcc": 230,
"mh": ["JO43", "JO53", "JO54", "JO44", "JO45"],
"postal": "DE-SH"
},
"DE-TH": {
- "name": "Thüringen",
+ "name": "图林根州",
"dxcc": 230,
"mh": ["JO50", "JO60", "JO61", "JO51", "JO41", "JO40"],
"postal": "DE-TH"
@@ -3587,79 +3587,79 @@
"postal": "FR-A",
"dxcc": 227,
"mh": ["JN38", "JN37", "JN48", "JN49", "JN39"],
- "name": "Alsace"
+ "name": "阿尔萨斯"
},
"FR-B": {
"postal": "FR-B",
"dxcc": 227,
"mh": ["IN93", "IN92", "JN03", "JN04", "JN05", "IN95", "IN94"],
- "name": "Aquitaine"
+ "name": "阿基坦大区"
},
"FR-C": {
"postal": "FR-C",
"dxcc": 227,
"mh": ["JN14", "JN16", "JN26", "JN24", "JN25", "JN15"],
- "name": "Auvergne"
+ "name": "奥弗涅大区"
},
"FR-E": {
"postal": "FR-E",
"dxcc": 227,
"mh": ["IN78", "IN88", "IN98", "IN97", "IN87", "IN77"],
- "name": "Bretagne"
+ "name": "布列塔尼大区"
},
"FR-D": {
"postal": "FR-D",
"dxcc": 227,
"mh": ["JN27", "JN28", "JN18", "JN17", "JN16", "JN26"],
- "name": "Bourgogne"
+ "name": "勃艮第"
},
"FR-F": {
"postal": "FR-F",
"dxcc": 227,
"mh": ["JN18", "JN17", "JN16", "JN06", "JN07", "JN08"],
- "name": "Centre"
+ "name": "中央大区"
},
"FR-G": {
"postal": "FR-G",
"dxcc": 227,
"mh": ["JN29", "JO20", "JN19", "JN18", "JN17", "JN27", "JN28"],
- "name": "Champagne-Ardenne"
+ "name": "香槟-阿登"
},
"FR-H": {
"postal": "FR-H",
"dxcc": 227,
"mh": ["JN43", "JN42", "JN41"],
- "name": "Corse"
+ "name": "科西嘉大区"
},
"FR-I": {
"postal": "FR-I",
"dxcc": 227,
"mh": ["JN26", "JN36", "JN27", "JN37", "JN38"],
- "name": "Franche-Comté"
+ "name": "弗朗什-孔泰大区"
},
"FR-K": {
"postal": "FR-K",
"dxcc": 227,
"mh": ["JN02", "JN12", "JN23", "JN13", "JN03", "JN14", "JN24"],
- "name": "Languedoc-Roussillon"
+ "name": "朗格多克-鲁西永大区"
},
"FR-L": {
"postal": "FR-L",
"dxcc": 227,
"mh": ["JN05", "JN06", "JN16", "JN15", "JN04", "JN14"],
- "name": "Limousin"
+ "name": "利穆赞大区"
},
"FR-M": {
"postal": "FR-M",
"dxcc": 227,
"mh": ["JN39", "JN29", "JN38", "JN28", "JN27", "JN37"],
- "name": "Lorraine"
+ "name": "洛林大区"
},
"FR-P": {
"postal": "FR-P",
"dxcc": 227,
"mh": ["IN99", "JN09", "JN08", "IN98"],
- "name": "Basse-Normandie"
+ "name": "下诺曼底大区"
},
"FR-N": {
"postal": "FR-N",
@@ -3676,37 +3676,37 @@
"IN93",
"IN94"
],
- "name": "Midi-Pyrénées"
+ "name": "南部-比利牛斯大区"
},
"FR-O": {
"postal": "FR-O",
"dxcc": 227,
"mh": ["JO10", "JO11", "JO20", "JN29", "JO00"],
- "name": "Nord-Pas-de-Calais"
+ "name": "北部-加来海峡"
},
"FR-R": {
"postal": "FR-R",
"dxcc": 227,
"mh": ["IN96", "IN86", "IN87", "IN98", "JN08", "JN07", "IN97"],
- "name": "Pays de la Loire"
+ "name": "卢瓦尔河地区大区"
},
"FR-S": {
"postal": "FR-S",
"dxcc": 227,
"mh": ["JO00", "JN09", "JO10", "JN19", "JN29", "JN18", "JM07", "JJ23"],
- "name": "Picardie"
+ "name": "皮卡第大区"
},
"FR-T": {
"postal": "FR-T",
"dxcc": 227,
"mh": ["IN95", "JN05", "IN96", "IN97", "JN06", "JN07"],
- "name": "Poitou-Charentes"
+ "name": "普瓦图-夏朗德大区"
},
"FR-U": {
"postal": "FR-U",
"dxcc": 227,
"mh": ["JN34", "JN35", "JN24", "JN23", "JN33", "JN32"],
- "name": "Provence-Alpes-Côte d'Azur"
+ "name": "普罗旺斯-阿尔卑斯-蓝色海岸大区"
},
"FR-V": {
"postal": "FR-V",
@@ -3722,18 +3722,211 @@
"JN26",
"JN16"
],
- "name": "Rhône-Alpes"
+ "name": "罗讷-阿尔卑斯大区"
},
"FR-Q": {
"postal": "FR-Q",
"dxcc": 227,
"mh": ["JN09", "JN08", "JO00"],
- "name": "Haute-Normandie"
+ "name": "上诺曼底大区"
},
"FR-J": {
"postal": "FR-J",
"dxcc": 227,
"mh": ["JN09", "JN19", "JN18", "JN08", "HK37"],
- "name": "Île-de-France"
+ "name": "法兰西岛大区"
+ },
+ "BY-SZ": {
+ "postal": "BY-SZ",
+ "dxcc": 318,
+ "mh": ["OL62", "OL72"],
+ "name": "深圳"
+ },
+ "BY-HE": {
+ "postal": "BY-HE",
+ "dxcc": 318,
+ "mh": ["OM76", "OM77", "OM78", "OM79", "ON70", "OM71", "OM87", "OM88", "OM89", "ON80", "ON81", "ON82", "OM99", "ON90", "ON91"],
+ "name": "河北"
+ },
+ "BY-TJS": {
+ "postal": "BY-TJS",
+ "dxcc": 318,
+ "mh": ["OM88", "OM89", "OM99", "ON80"],
+ "name": "天津"
+ },
+ "BY-BJ": {
+ "postal": "BY-BJ",
+ "dxcc": 318,
+ "mh": ["OM79", "OM89", "ON70", "ON80"],
+ "name": "北京"
+ },
+ "BY-SH": {
+ "postal": "BY-SH",
+ "dxcc": 318,
+ "mh": ["PM00", "PM01"],
+ "name": "上海"
+ },
+ "BY-SD": {
+ "postal": "BY-SD",
+ "dxcc": 318,
+ "mh": ["OM74", "OM75", "OM76", "OM84", "OM85", "OM86", "OM87", "OM94", "OM95", "OM96", "OM97", "OM98", "PM05", "PM06", "PM07", "PM08", "PM16", "PM17"],
+ "name": "山东"
+ },
+ "BY-HLJ": {
+ "postal": "BY-HLJ",
+ "dxcc": 318,
+ "mh": ["PN16", "PN17", "PN25", "PN26", "PN27", "PN28", "PN29", "PN34", "PN35", "PN36", "PN37", "PN38", "PN39", "PN43", "PN44", "PN45", "PN46", "PN47", "PN48", "PN49", "PN54", "PN55", "PN56", "PN57", "PN65", "PN66", "PN67", "PN77", "PN78", "PO11", "PO12", "PO13", "PO21", "PO22", "PO23", "PO30", "PO31"],
+ "name": "黑龙江"
+ },
+ "BY-JL": {
+ "postal": "BY-JL",
+ "dxcc": 318,
+ "mh": ["PN14", "PN15", "PN21", "PN22", "PN23", "PN24", "PN25", "PN31", "PN32", "PN33", "PN34", "PN35", "PN42", "PN43", "PN52", "PN53"],
+ "name": "吉林"
+ },
+ "BY-LN": {
+ "postal": "BY-LN",
+ "dxcc": 318,
+ "mh": ["ON90", "ON91", "ON92", "PM08", "PM09", "PM19", "PM29", "PN00", "PN01", "PN02", "PN10", "PN11", "PN12", "PN13", "PN20", "PN21", "PN22", "PN23"],
+ "name": "辽宁"
+ },
+ "BY-NMG": {
+ "postal": "BY-NMG",
+ "dxcc": 318,
+ "mh": ["NN81", "NN82", "NN90", "NN91", "NN92", "OM09", "OM19", "OM27", "OM28", "OM29", "OM37", "OM38", "OM39", "OM47", "OM48", "OM49", "OM59", "ON00", "ON01", "ON02", "ON10", "ON11", "ON20", "ON21", "ON30", "ON31", "ON32", "ON40", "ON41", "ON42", "ON50", "ON51", "ON52", "ON53", "ON54", "ON60", "ON61", "ON62", "ON63", "ON64", "ON71", "ON72", "ON73", "ON74", "ON75", "ON82", "ON83", "ON84", "ON85", "ON86", "ON91", "ON92", "ON93", "ON94", "ON95", "ON96", "ON97", "ON98", "ON99", "OO90", "PN02", "PN03", "PN04", "PN05", "PN06", "PN07", "PN08", "PN09", "PN12", "PN13", "PN14", "PN16", "PN17", "PN18", "PN19", "PN28", "PN29", "PO00", "PO01", "PO02", "PO03", "PO10", "PO11", "PO20", "PO21"],
+ "name": "内蒙古"
+ },
+ "BY-SX": {
+ "postal": "BY-SX",
+ "dxcc": 318,
+ "mh": ["OM54", "OM55", "OM56", "OM57", "OM58", "OM59", "OM65", "OM66", "OM67", "OM68", "OM69", "ON60", "ON70", "OM77", "OM79"],
+ "name": "山西"
+ }
+ ,
+ "BY-SXs": {
+ "postal": "BY-SXs",
+ "dxcc": 318,
+ "mh": ["OM22", "OM23", "OM32", "OM33", "OM34", "OM35", "OM36", "OM37", "OM41", "OM42", "OM43", "OM44", "OM45", "OM46", "OM47", "OM48", "OM49", "OM52", "OM53", "OM54", "OM55", "OM56", "OM57", "OM58", "OM59"],
+ "name": "陕西"
+ },
+ "BY-NX": {
+ "postal": "BY-NX",
+ "dxcc": 318,
+ "mh": ["OM34", "OM35", "OM36", "OM37", "OM45", "OM46"],
+ "name": "宁夏"
+ },
+ "BY-GS": {
+ "postal": "BY-GS",
+ "dxcc": 318,
+ "mh": ["OM03", "OM04", "OM07", "OM08", "OM09", "OM13", "OM14", "OM15", "OM16", "OM17", "OM18", "OM19", "OM22", "OM23", "OM24", "OM25", "OM26", "OM27", "OM28", "OM29", "OM33", "OM34", "OM35", "OM36", "OM37", "OM45", "OM46"],
+ "name": "甘肃"
+ },
+ "BY-QH": {
+ "postal": "BY-QH",
+ "dxcc": 318,
+ "mh": ["NM43", "NM44", "NM45", "NM46", "NM52", "NM53", "NM54", "NM55", "NM56", "NM57", "NM58", "NM62", "NM63", "NM64", "NM65", "NM66", "NM67", "NM68", "NM69", "NM71", "NM72", "NM73", "NM74", "NM75", "NM76", "NM77", "NM78", "NM81", "NM82", "NM83", "NM84", "NM85", "NM86", "NM87", "NM88", "NM89", "NM92", "NM93", "NM94", "NM95", "NM96", "NM97", "NM98", "NM99", "OM02", "OM03", "OM04", "OM05", "OM06", "OM07", "OM08", "OM14", "OM15", "OM16", "OM17"],
+ "name": "青海"
+ },
+ "BY-XJ": {
+ "postal": "BY-XJ",
+ "dxcc": 318,
+ "mh": ["MM68", "MM69", "MM76", "MM77", "MM78", "MM79", "MM94", "MM95", "MM96", "MM97", "MM98", "MM99", "MN70", "MN80", "MN81", "MN90", "MN91", "NM05", "NM06", "NM07", "NM08", "NM09", "NM15", "NM16", "NM17", "NM18", "NM19", "NM25", "NM26", "NM27", "NM28", "NM29", "NM35", "NM36", "NM37", "NM38", "NM39", "NM46", "NM47", "NM48", "NM49", "NM56", "NM57", "NM58", "NM59", "NM69", "NN00", "NN01", "NN02", "NN03", "NN04", "NN05", "NN10", "NN11", "NN12", "NN13", "NN14", "NN15", "NN16", "NN17", "NN20", "NN21", "NN22", "NN23", "NN24", "NN25", "NN26", "NN27", "NN28", "NN30", "NN31", "NN32", "NN33", "NN34", "NN35", "NN36", "NN37", "NN38", "NN39", "NN40", "NN41", "NN42", "NN43", "NN44", "NN45", "NN46", "NN47", "NN48", "NN50", "NN51", "NN52", "NN53", "NN54", "NN55", "NN56", "NN57", "NN60", "NN61", "NN62", "NN63", "NN64", "NN65", "NN71", "NN72", "NN73", "NN74", "NN82"],
+ "name": "新疆"
+ },
+ "BY-XZ": {
+ "postal": "BY-XZ",
+ "dxcc": 318,
+ "mh": ["NL19", "NL28", "NL29", "NL37", "NL38", "NL39", "NL47", "NL48", "NL49", "NL57", "NL58", "NL59", "NL67", "NL68", "NL69", "NL78", "NL79", "NL88", "NL89", "NL98", "NL99", "MM90", "MM91", "MM92", "MM93", "MM94", "NM00", "NM01", "NM02", "NM03", "NM04", "NM05", "NM10", "NM11", "NM12", "NM13", "NM14", "NM15", "NM20", "NM21", "NM22", "NM23", "NM24", "NM25", "NM30", "NM31", "NM32", "NM33", "NM34", "NM35", "NM36", "NM40", "NM41", "NM42", "NM43", "NM44", "NM45", "NM46", "NM50", "NM51", "NM52", "NM53", "NM60", "NM61", "NM62", "NM70", "NM71", "NM72", "NM80", "NM81", "NM82", "NM90", "NM91", "NM92"],
+ "name": "西藏"
+ },
+ "BY-SC": {
+ "postal": "BY-SC",
+ "dxcc": 318,
+ "mh": ["NM82", "NM83", "NM84", "NM90", "NM91", "NM92", "NM93", "NM94", "NL98", "NL99", "OL06", "OL07", "OL08", "OL09", "OL16", "OL17", "OL18", "OL19", "OL27", "OL28", "OL29", "OL37", "OL38", "OM00", "OM01", "OM02", "OM03", "OM10", "OM11", "OM12", "OM13", "OM14", "OM20", "OM21", "OM22", "OM23", "OM30", "OM31", "OM32", "OM41", "OM42"],
+ "name": "四川"
+ },
+ "BY-CQ": {
+ "postal": "BY-CQ",
+ "dxcc": 318,
+ "mh": ["OL28", "OL29", "OL38", "OL39", "OL48", "OL49", "OM20", "OM30", "OM31", "OM40", "OM41", "OM42", "OM50", "OM51"],
+ "name": "重庆"
+ },
+ "BY-HNS": {
+ "postal": "BY-HNS",
+ "dxcc": 318,
+ "mh": ["OM52", "OM53", "OM54", "OM55", "OM61", "OM62", "OM63", "OM64", "OM65", "OM66", "OM71", "OM72", "OM73", "OM74", "OM75", "OM76", "OM83", "OM84", "OM85", "OM86"],
+ "name": "河南"
+ },
+ "BY-HB": {
+ "postal": "BY-HB",
+ "dxcc": 318,
+ "mh": ["OL49", "OL59", "OL69", "OL79", "OL89", "OM40", "OM41", "OM42", "OM43", "OM50", "OM51", "OM52", "OM53", "OM60", "OM61", "OM62", "OM70", "OM71"],
+ "name": "湖北"
+ },
+ "BY-AH": {
+ "postal": "BY-AH",
+ "dxcc": 318,
+ "mh": ["OL89", "OL99", "OM70", "OM71", "OM72", "OM73", "OM74", "OM80", "OM81", "OM82", "OM83", "OM84", "OM90", "OM91", "OM92", "OM93"],
+ "name": "安徽"
+ },
+ "BY-JS": {
+ "postal": "BY-JS",
+ "dxcc": 318,
+ "mh": ["OM91", "OM92", "OM93", "OM94", "OM95", "OM83", "OM84", "PM00", "PM01", "PM02", "PM03", "PM04"],
+ "name": "江苏"
+ },
+ "BY-YN": {
+ "postal": "BY-YN",
+ "dxcc": 318,
+ "mh": ["NL83", "NL84", "NL85", "NL91", "NL92", "NL93", "NL94", "NL95", "NL96", "NL97", "NL98", "NL99", "OL01", "OL02", "OL03", "OL04", "OL05", "OL06", "OL07", "OL08", "OL12", "OL13", "OL14", "OL15", "OL16", "OL17", "OL18", "OL22", "OL23", "OL24", "OL25", "OL26", "OL27", "OL28"],
+ "name": "云南"
+ },
+ "BY-GZ": {
+ "postal": "BY-GZ",
+ "dxcc": 318,
+ "mh": ["OL16", "OL17", "OL24", "OL25", "OL26", "OL27", "OL28", "OL43", "OL35", "OL36", "OL37", "OL38", "OL39", "OL45", "OL46", "OL47", "OL48", "OL49"],
+ "name": "贵州"
+ },
+ "BY-HN": {
+ "postal": "BY-HN",
+ "dxcc": 318,
+ "mh": ["OM50", "OL45", "OL46", "OL47", "OL48", "OL49", "OL54", "OL55", "OL56", "OL57", "OL58", "OL59", "OL64", "OL65", "OL66", "OL67", "OL68", "OL69", "OL76", "OL78"],
+ "name": "湖南"
+ },
+ "BY-JX": {
+ "postal": "BY-JX",
+ "dxcc": 318,
+ "mh": ["OM80", "OL65", "OL66", "OL67", "OL68", "OL69", "OL74", "OL75", "OL76", "OL77", "OL78", "OL79", "OL85", "OL86", "OL87", "OL88", "OL89", "OL98", "OL99"],
+ "name": "江西"
+ },
+ "BY-ZJ": {
+ "postal": "BY-ZJ",
+ "dxcc": 318,
+ "mh": ["OM90", "OM91", "OL97", "OL98", "OL99", "PM00", "PM10", "PL07", "PL08", "PL09", "PL17", "PL19"],
+ "name": "浙江"
+ },
+ "BY-GX": {
+ "postal": "BY-GX",
+ "dxcc": 318,
+ "mh": ["OL22", "OL23", "OL24", "OL31", "OL32", "OL33", "OL34", "OL35", "OL41", "OL42", "OL43", "OL44", "OL45", "OL46", "OL51", "OL52", "OL53", "OL54", "OL55", "OL56", "OL64"],
+ "name": "广西"
+ },
+ "BY-GD": {
+ "postal": "BY-GD",
+ "dxcc": 318,
+ "mh": ["OL40", "OL41", "OL50", "OL51", "OL52", "OL53", "OL54", "OL61", "OL62", "OL63", "OL64", "OL65", "OL71", "OL72", "OL73", "OL74", "OL75", "OL82", "OL83", "OL84"],
+ "name": "广东"
+ },
+ "BY-FJ": {
+ "postal": "BY-FJ",
+ "dxcc": 318,
+ "mh": ["OL74", "OL75", "OL83", "OL84", "OL85", "OL86", "OL87", "OL94", "OL95", "OL96", "OL97", "OL98", "PL06", "PL07"],
+ "name": "福建"
+ },
+ "BY-HND": {
+ "postal": "BY-HND",
+ "dxcc": 318,
+ "mh": ["OL50", "OK48", "OK49", "OK58", "OK59"],
+ "name": "海南"
}
}
diff --git a/package.nw/gt_bandactivity.html b/package.nw/gt_bandactivity.html
index 48e6fd8..4febbc8 100644
--- a/package.nw/gt_bandactivity.html
+++ b/package.nw/gt_bandactivity.html
@@ -1,4 +1,4 @@
-<!--
+<!--
This file is part of GridTracker.
GridTracker is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
<html lang="en" xml:lang="en">
<head>
<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" />
<script src="./lib/protos.js" type="text/javascript"></script>
<script src="./lib/screens.js" type="text/javascript"></script>
@@ -70,8 +70,8 @@
"
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>
diff --git a/package.nw/gt_chat.html b/package.nw/gt_chat.html
index 2ca0453..b4a2927 100644
--- a/package.nw/gt_chat.html
+++ b/package.nw/gt_chat.html
@@ -15,10 +15,117 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" style="height: 100%; width: 100%">
<head>
- <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" />
- <link rel="stylesheet" href="./lib/chat.css" />
+ <style type="text/css">
+ 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"></script>
<script src="./lib/screens.js"></script>
@@ -283,7 +390,7 @@
worker += "</table>";
activeCallsignsDiv.innerHTML = worker;
} else {
- activeCallsignsDiv.innerHTML = "<font color='gray'>no message history</font>";
+ activeCallsignsDiv.innerHTML = "<font color='gray'>没有信息历史</font>";
}
}
@@ -456,25 +563,28 @@
</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.
+ <b>注意</b>: GridTracker 聊天服务不是用HTTPS网络加密或会显示混乱代码. 这意味着它作为它以明文形式发送,
+ 容易受到黑客攻击, 海盗假冒是:国家安全局, 你的妻子, 任何觉得你有趣及关注的人.
+ <p>
+ <b>永不</b> 提供密码, 信用卡, 保险箱组合密码或任何你不想让坏人知道的个人资讯因为外面有一些很坏的人.
</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>
+ 但不是我们. 而GridTracker是免费的, 与其他一些免费应用程序不同, 我们不保留, 储存, 销售, 浏览或删除
+ 另一方面你不可以对聊天做任何违背信任的事. 我们不会储存会谈纪录. 我们不储存中继资料. 我们就是不会.
</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>
+ 关闭GridTracker, 将失去会谈内容. 所以写下你想保存的东西.
+ <br />因为当它消失的时候, 就永远消失了.
</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>
+ <br />
</p>
- <div data-i18n="chat.notice.agree" class="button" onclick="userAgrees();">Click here to acknowledge the above and enable messaging</div>
+
+ <p></p>
+ <div class="button" onclick="userAgrees();">单击此处确认上述内容并启用信息传递</div>
</div>
<div id="wrapperDiv" style="display: none">
<div
@@ -511,18 +621,18 @@
"
>
<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>
+ <font color="lightgreen">波段: </font>
+ <font id="viewBand" color="yellow">所有</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>
+ <font color="orange">模式: </font>
+ <font id="viewMode" color="yellow">所有</font>
</div>
</div>
<img
id="clearSearch"
- title="Clear Search"
+ title="清除搜索"
onclick='searchBox.value="";KeepUpper(searchBox);'
src="/img/trash_24x48.png"
style="display: none; top: 30px; right: 114px; position: absolute; width: 30px; cursor: pointer"
@@ -530,7 +640,7 @@
<input
id="searchBox"
type="text"
- title="Call Search"
+ title="呼号搜索"
class="inputTextValue"
style="
top: 26px;
@@ -561,7 +671,7 @@
padding: 0px;
text-overflow: ellipsis;
"
- title="Station Count"
+ title="电台统计数"
>
0
</div>
@@ -598,7 +708,7 @@
max-height: 60px;
"
>
- <font color="gray">no message history</font>
+ <font color="gray">没有信息历史纪录</font>
</div>
</div>
</body>
diff --git a/package.nw/gt_lookup.html b/package.nw/gt_lookup.html
index ed86f3e..e1c2dae 100644
--- a/package.nw/gt_lookup.html
+++ b/package.nw/gt_lookup.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<!--
This file is part of GridTracker.
@@ -17,7 +17,7 @@
<html lang="en" xml:lang="en">
<head>
<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" />
<script src="./lib/protos.js" type="text/javascript"></script>
<script src="./lib/screens.js"></script>
@@ -117,20 +117,25 @@
>
<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);"/>
+ 呼号<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
+ 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>
diff --git a/package.nw/gt_print.html b/package.nw/gt_print.html
index 1c4d773..3b80a98 100644
--- a/package.nw/gt_print.html
+++ b/package.nw/gt_print.html
@@ -1,4 +1,4 @@
-<!--
+<!--
This file is part of GridTracker.
GridTracker is free software: you can redistribute it and/or modify
@@ -15,7 +15,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <title>GridTracker - Print</title>
+ <title>GridTracker - 打印</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
table.darkTable {
@@ -54,121 +54,121 @@
<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>right-click<br />empty grid</td>
+ <td align="left">增加地图中心警报</td>
+ <td>right-click<br/>清除网格</td>
</tr>
<tr>
<td>T</td>
- <td align="left">Add TTS Alert</td>
- <td>right-click<br />empty grid</td>
+ <td align="left">增加TTS警报</td>
+ <td>right-click<br/>清除网格</td>
</tr>
<tr>
<td>V</td>
- <td align="left">Add PopUp Alert</td>
- <td>right-click<br />empty grid</td>
+ <td align="left">增加弹出警报</td>
+ <td>right-click<br/>清除网格</td>
</tr>
<tr>
<td>F1</td>
- <td align="left">Hot Key List</td>
+ <td align="left">热键清单</td>
<td></td>
</tr>
</table>
diff --git a/package.nw/gt_roster.html b/package.nw/gt_roster.html
index d26c903..1d6e61a 100644
--- a/package.nw/gt_roster.html
+++ b/package.nw/gt_roster.html
@@ -15,7 +15,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" style="height: 100%; width: 100%">
<head>
- <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" />
<link id="roster" rel="stylesheet" href="./lib/style_roster.css" />
@@ -37,68 +37,79 @@
<div id="MainCallRoster">
<header id="RosterControls">
<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
+ 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);">Halt Tx</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>
+ <label>日志</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>
+ <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>
+ <label>呼号</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>
+ <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>
+ <label>追寻</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>
+ <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 id="DXCCsSelect" 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>
@@ -107,30 +118,30 @@
<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 selected>Sponsor</option>
+ <option value="" disabled selected>赞助商</option>
</select>
</td>
</tr>
<tr>
<td align="left">
<select id="awardName" onchange="awardNameChanged();">
- <option data-i18n="roster.controls.awardTracker.name" value="" disabled selected>Name</option>
+ <option value="" disabled 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>
@@ -141,40 +152,32 @@
<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>
+ <label><input type="checkbox" id="huntCallsign" onchange="wantedChanged(this);" />呼号</label>
</div>
<div>
- <input type="checkbox" id="huntGrid" onchange="wantedChanged(this);" />
- <label data-i18n="roster.secondary.wanted.grid" for="huntGrid">Grid</label>
+ <label><input type="checkbox" id="huntGrid" onchange="wantedChanged(this);" /> 网格</label>
</div>
<div>
- <input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);" />
- <label data-i18n="roster.secondary.wanted.dxcc" for="huntDXCC">DXCC</label>
+ <label ><input type="checkbox" id="huntDXCC" onchange="wantedChanged(this);" /> 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>
+ <label title="呼叫*你*的电台">
+ <input type="checkbox" id="huntQRZ" onchange="wantedChanged(this);" /> QRZ
+ </label>
</div>
<div>
- <input type="checkbox" id="huntPX" onchange="wantedChanged(this);" />
- <label data-i18n="roster.secondary.wanted.wpx" for="huntPX">WPX</label>
+ <label><input type="checkbox" id="huntPX" onchange="wantedChanged(this);" /> 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>
+ <label title="已经关闭信息服务的用户">
+ <input type="checkbox" id="huntOAMS" onchange="wantedChanged(this);" /> OAMS
+ </label>
</div>
- <div>
- </div>
<div>
<label><input type="checkbox" id="huntCQz" onchange="wantedChanged(this);" /> CQz</label>
</div>
@@ -182,13 +185,10 @@
<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>
+ <label><input type="checkbox" id="huntState" onchange="wantedChanged(this);" /> 州</label>
</div>
<div>
- <label><input type="checkbox" id="huntCounty" onchange="wantedChanged(this);" /> County</label>
+ <label><input type="checkbox" id="huntCounty" onchange="wantedChanged(this);" /> 县</label>
</div>
<div>
<label><input type="checkbox" id="huntCont" onchange="wantedChanged(this);" /> Cont</label>
@@ -197,18 +197,18 @@
</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>
+ <label><input type="checkbox" id="cqOnly" onchange="valuesChanged();" /> 仅限 CQ</label>
</div>
<div>
- <label><input type="checkbox" id="wantGrid" onchange="valuesChanged();" /> Has Grid</label>
+ <label><input type="checkbox" id="wantGrid" onchange="valuesChanged();" /> 有网格</label>
</div>
<div>
- <label><input type="checkbox" id="wantMinDB" onchange="valuesChanged();" /> Min dB</label>
+ <label><input type="checkbox" id="wantMinDB" onchange="valuesChanged();" /> 最小 dB</label>
<input
type="range"
min="-25"
@@ -222,7 +222,7 @@
</div>
<div>
- <label><input type="checkbox" id="wantMaxDT" onchange="valuesChanged();" /> Max DT</label>
+ <label><input type="checkbox" id="wantMaxDT" onchange="valuesChanged();" /> 最大DT</label>
<input
type="range"
min="0.1"
@@ -236,7 +236,7 @@
</div>
<div>
- <label><input type="checkbox" id="wantMinFreq" onchange="valuesChanged();" /> Min freq</label>
+ <label><input type="checkbox" id="wantMinFreq" onchange="valuesChanged();" /> 最小频率</label>
<input
type="range"
min="0"
@@ -250,7 +250,7 @@
</div>
<div>
- <label><input type="checkbox" id="wantMaxFreq" onchange="valuesChanged();" /> Max freq</label>
+ <label><input type="checkbox" id="wantMaxFreq" onchange="valuesChanged();" /> 最大频率</label>
<input
type="range"
min="500"
@@ -265,10 +265,10 @@
</div>
<div id="usesLoTWDiv">
- <label><input type="checkbox" id="usesLoTW" onchange="valuesChanged();" /> Uses LoTW</label>
+ <label><input type="checkbox" id="usesLoTW" onchange="valuesChanged();" /> 在用 LoTW</label>
<input
- title="Max time since their last upload"
+ title="最后上传距今"
type="range"
min="3"
max="27"
@@ -281,39 +281,39 @@
</div>
<div id="onlySpotDiv">
- <label><input type="checkbox" id="onlySpot" onchange="valuesChanged();" /> Spotted Me</label>
+ <label><input type="checkbox" id="onlySpot" onchange="valuesChanged();" /> 发报自己</label>
</div>
<div>
<label>
<input type="checkbox" id="noMyDxcc" onchange="onlyMyDxcc.checked=false; valuesChanged();" />
- Not My DXCC
+ 不是我的 DXCC
</label>
</div>
<div>
<label>
<input type="checkbox" id="onlyMyDxcc" onchange="noMyDxcc.checked=false; valuesChanged();" />
- Only My DXCC
+ 仅限我的 DXCC
</label>
</div>
<div id="useseQSLDiv">
- <label><input type="checkbox" id="useseQSL" onchange="valuesChanged();" /> Uses eQSL</label>
+ <label><input type="checkbox" id="useseQSL" onchange="valuesChanged();" /> 在用 eQSL</label>
</div>
<div id="usesOQRSDiv">
- <label><input type="checkbox" id="usesOQRS" onchange="valuesChanged();" /> Uses OQRS</label>
+ <label><input type="checkbox" id="usesOQRS" onchange="valuesChanged();" /> 在用 OQRS</label>
</div>
<div id="allOnlyNewDiv">
- <label><input type="checkbox" id="allOnlyNew" onchange="valuesChanged();" /> Only New Calls</label>
+ <label><input type="checkbox" id="allOnlyNew" onchange="valuesChanged();" /> 仅限新呼号</label>
</div>
<div>
- <label title="No Decodes Containing...">
+ <label title="不包含解码...">
<input type="checkbox" id="noMsg" onchange="valuesChanged();" />
- No &nbsp;&nbsp;
+ 不包含
</label>
<input
type="text"
@@ -328,9 +328,9 @@
</div>
<div>
- <label title="Only Decodes Containing...">
+ <label title="仅包含解码...">
<input type="checkbox" id="onlyMsg" onchange="valuesChanged();" />
- Only
+ 只包含
</label>
<input
type="text"
@@ -345,10 +345,10 @@
</div>
<div>
- <label title="Callsign Regular Expression">
+ <label title="呼号常规格式">
<input type="checkbox" id="useRegex" onchange="valuesChanged();" />
- <a title="Regular Expressions 101" href="https://regex101.com/?flavor=javascript" target="_blank">
- Regex
+ <a title="常规格式网 101" href="https://regex101.com/?flavor=javascript" target="_blank">
+ 常规格式
</a>
</label>
@@ -367,7 +367,7 @@
</div>
<div id="instancesWrapper" class="secondaryControlGroup" >
- <h3>Instances</h3>
+ <h3>实例</h3>
<div id="instancesDiv"></div>
</div>
@@ -382,10 +382,10 @@
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>
diff --git a/package.nw/gt_stats.html b/package.nw/gt_stats.html
index 503acc8..87a0666 100644
--- a/package.nw/gt_stats.html
+++ b/package.nw/gt_stats.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<!--
This file is part of GridTracker.
@@ -17,7 +17,7 @@
<html lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Statistics</title>
+ <title>统计</title>
<link rel="stylesheet" href="./lib/style.css" />
<script src="./lib/protos.js" type="text/javascript"></script>
<script src="./lib/stats.js"></script>
@@ -50,19 +50,19 @@
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
+ CQ 分区
</button>
<button id="itubox" class="infoTablinks" onclick="openInfoTab(event, 'ituzoneBoxDiv', 'showITUzoneBox')">
- ITU Zones
+ ITU 分区
</button>
<button
id="waswacbox"
@@ -73,9 +73,9 @@
</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>
+ <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>
@@ -104,7 +104,7 @@
</div>
<div id="decodeLastDiv" class="infoTabcontent">
<div id="decodeLastListDiv" style="margin: 2px; padding: 2px; overflow: auto; overflow-x: hidden">
- No decodes yet
+ 还没有解码
</div>
</div>
</div>
diff --git a/package.nw/gt_update.pdf b/package.nw/gt_update.pdf
index c76d0ef..1608458 100644
Binary files a/package.nw/gt_update.pdf and b/package.nw/gt_update.pdf differ
diff --git a/package.nw/i18n/en.json b/package.nw/i18n/en.json
index 1d7d1a8..c546db3 100644
--- a/package.nw/i18n/en.json
+++ b/package.nw/i18n/en.json
@@ -9,7 +9,7 @@
},
"COMMENT_GridTracker.html": "",
"appname-title": "GridTracker",
- "appname-sub-title": "An Amteur Radio Companion",
+ "appname-sub-title": "An Amateur Radio Companion",
"statupStatusDiv": "Initial Startup",
"documents.Div1": "Your Documents folder <div id='searchedDocFolder'></div> could not be located.",
"documents.Div2": "GridTracker can not continue without it.",
diff --git a/package.nw/lib/adif.js b/package.nw/lib/adif.js
index b1fcded..5fa59f5 100644
--- a/package.nw/lib/adif.js
+++ b/package.nw/lib/adif.js
@@ -86,36 +86,6 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
{
let finalMode = "";
- let appLoTW_RXQSO = findAdiField(
- activeAdifArray[x],
- "APP_LoTW_RXQSO"
- );
-
- if (appLoTW_RXQSO != "")
- {
- let dRXQSO = Date.parse(appLoTW_RXQSO);
- let dLastLOTW_QSO = Date.parse(g_adifLogSettings.lastFetch.lotw_qso);
- if ((isNaN(dRXQSO) == false) && (isNaN(dLastLOTW_QSO) == false) && (dRXQSO > dLastLOTW_QSO))
- {
- g_adifLogSettings.lastFetch.lotw_qso = appLoTW_RXQSO;
- }
- }
-
- let appLoTW_RXQSL = findAdiField(
- activeAdifArray[x],
- "APP_LoTW_RXQSL"
- );
-
- if (appLoTW_RXQSL != "")
- {
- let dRXQSL = Date.parse(appLoTW_RXQSL);
- let dLastLOTW_QSL = Date.parse(g_adifLogSettings.lastFetch.lotw_qsl);
- if ((isNaN(dRXQSL) == false) && (isNaN(dLastLOTW_QSL) == false) && (dRXQSL > dLastLOTW_QSL))
- {
- g_adifLogSettings.lastFetch.lotw_qso = appLoTW_RXQSO;
- }
- }
-
if (activeAdifArray[x].length > 3)
{
if (activeAdifLogMode)
@@ -749,27 +719,6 @@ function grabLoTWQSL()
"g_isGettingLOTW",
120000
);
-
- // Fetch QSLs
- var tQSO = setTimeout(function()
- {
- if (test == false) lotwLogLoaded = true;
- getABuffer(
- "https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" +
- lotwLogin.value +
- "&password=" +
- encodeURIComponent(lotwPassword.value) +
- "&qso_query=1&qso_qsl=yes&qso_qsldetail=yes&qso_withown=yes" +
- lastQSLDateString,
- lotwCallback,
- test,
- "https",
- 443,
- lotwLogImg,
- "g_isGettingLOTW",
- 120000
- );
- }, 10000);
}
}
@@ -1998,7 +1947,7 @@ function finishSendingReport(record, localMode)
parseInt(g_N1MMSettings.port),
g_N1MMSettings.ip
);
- addLastTraffic("<font style='color:white'>Logged to N1MM</font>");
+ addLastTraffic("<font style='color:white'>已保存到 N1MM</font>");
}
if (
@@ -2013,7 +1962,7 @@ function finishSendingReport(record, localMode)
parseInt(g_log4OMSettings.port),
g_log4OMSettings.ip
);
- addLastTraffic("<font style='color:white'>Logged to Log4OM</font>");
+ addLastTraffic("<font style='color:white'>已保存到 Log4OM</font>");
}
try
@@ -2032,7 +1981,7 @@ function finishSendingReport(record, localMode)
var fs = require("fs");
fs.appendFileSync(g_qsoLogFile, report + "\r\n");
addLastTraffic(
- "<font style='color:white'>Logged to GridTracker backup</font>"
+ "<font style='color:white'>已保存到 GridTracker 备份</font>"
);
}
}
@@ -2088,7 +2037,7 @@ function finishSendingReport(record, localMode)
try
{
sendACLogMessage(record, g_acLogSettings.port, g_acLogSettings.ip);
- addLastTraffic("<font style='color:white'>Logged to N3FJP</font>");
+ addLastTraffic("<font style='color:white'>已保存到 N3FJP</font>");
}
catch (e)
{
@@ -2109,7 +2058,7 @@ function finishSendingReport(record, localMode)
g_dxkLogSettings.port,
g_dxkLogSettings.ip
);
- addLastTraffic("<font style='color:white'>Logged to DXKeeper</font>");
+ addLastTraffic("<font style='color:white'>已保存到 DXKeeper</font>");
}
catch (e)
{
@@ -2131,7 +2080,7 @@ function finishSendingReport(record, localMode)
g_HRDLogbookLogSettings.ip
);
addLastTraffic(
- "<font style='color:white'>Logged to HRD Logbook</font>"
+ "<font style='color:white'>已保存到 Logbook</font>"
);
}
catch (e)
@@ -2261,11 +2210,11 @@ function eqslCallback(buffer, flag)
}
else if (result.indexOf("Result: 1 out of 1 records added") != -1)
{
- addLastTraffic("<font style='color:white'>Logged to eQSL.cc</font>");
+ addLastTraffic("<font style='color:white'>已保存到 eQSL.cc</font>");
}
else
{
- addLastTraffic("<font style='color:red'>Fail log eQSL.cc (?)</font>");
+ addLastTraffic("<font style='color:red'>保存失败 eQSL.cc (?)</font>");
}
}
}
@@ -2408,11 +2357,11 @@ function sendLotwLogEntry(report)
if (stderr.indexOf("Final Status: Success") < 0)
{
alert(stderr);
- addLastTraffic("<font style='color:red'>Fail log to TQSL</font>");
+ addLastTraffic("<font style='color:red'>保存失败 TQSL</font>");
}
else
{
- addLastTraffic("<font style='color:white'>Logged to TQSL</font>");
+ addLastTraffic("<font style='color:white'>已保存到 TQSL</font>");
}
fs.unlinkSync(g_trustTempPath);
}
@@ -2507,8 +2456,8 @@ function CloudlogSendLogResult(buffer, flag)
else
{
if (buffer && buffer.indexOf("created") > -1)
- { addLastTraffic("<font style='color:white'>Logged to Cloudlog</font>"); }
- else addLastTraffic("<font style='color:red'>Fail log to Cloudlog</font>");
+ { addLastTraffic("<font style='color:white'>已保存到 Cloudlog</font>"); }
+ else addLastTraffic("<font style='color:red'>保存失败 Cloudlog</font>");
}
}
@@ -2536,10 +2485,10 @@ function qrzSendLogResult(buffer, flag)
(arrData.REASON || "Unknown error") +
")"
);
- addLastTraffic("<font style='color:red'>Fail log to QRZ.com</font>");
+ addLastTraffic("<font style='color:red'>保存失败 QRZ.com</font>");
}
else
- { addLastTraffic("<font style='color:white'>Logged to QRZ.com</font>"); }
+ { addLastTraffic("<font style='color:white'>已保存到 QRZ.com</font>"); }
}
}
else alert("Error uploading QSO to QRZ.com (No response)");
@@ -2628,7 +2577,7 @@ function sendQrzLogEntry(report)
function clubLogQsoResult(buffer, flag)
{
- addLastTraffic("<font style='color:white'>Logged to ClubLog.org</font>");
+ addLastTraffic("<font style='color:white'>已保存到 ClubLog.org</font>");
}
function sendClubLogEntry(report)
@@ -2670,7 +2619,7 @@ function sendCloudlogEntry(report)
{
if (typeof nw != "undefined")
{
- var postData = { key: CloudlogAPI.value, station_profile_id: CloudlogStationProfileID.value, type: "adif", string: report };
+ var postData = { key: CloudlogAPI.value, type: "adif", string: report };
getPostJSONBuffer(
CloudlogURL.value,
CloudlogSendLogResult,
@@ -2701,9 +2650,9 @@ function hrdSendLogResult(buffer, flag)
else
{
if (buffer.indexOf("Unknown user") == -1)
- { addLastTraffic("<font style='color:white'>Logged to HRDLOG.net</font>"); }
+ { addLastTraffic("<font style='color:white'>已保存到 HRDLOG.net</font>"); }
else
- { addLastTraffic("<font style='color:red'>Fail log to HRDLOG.net</font>"); }
+ { addLastTraffic("<font style='color:red'>保存失败 HRDLOG.net</font>"); }
}
}
diff --git a/package.nw/lib/alerts.js b/package.nw/lib/alerts.js
index 594b9d6..d2a9050 100644
--- a/package.nw/lib/alerts.js
+++ b/package.nw/lib/alerts.js
@@ -788,7 +788,7 @@ function unflashAlertPopUp()
"<td>" +
(g_alerts[key].shortname.length > 0 ? g_alerts[key].shortname : "-") +
"</td>";
- worker += "<td>" + (g_alerts[key].fired > 0 ? "Yes" : "No") + "</td>";
+ worker += "<td>" + (g_alerts[key].fired > 0 ? "是" : "否") + "</td>";
worker +=
"<td style='color:cyan'>" +
(g_alerts[key].lastMessage.length > 0
diff --git a/package.nw/lib/callsigns.js b/package.nw/lib/callsigns.js
index 4ab078d..3b2c169 100644
--- a/package.nw/lib/callsigns.js
+++ b/package.nw/lib/callsigns.js
@@ -279,7 +279,7 @@ function oqrsDownload(fromSettings)
{
oqrsUpdatedTd.innerHTML = "<b><i>Downloading...</i></b>";
getBuffer(
- "https://storage.googleapis.com/gt_app/callsigns/clublog.json",
+ "http://www.srac.cn/gt-app/clublog.json",
processoqrsCallsigns,
null,
"http",
@@ -536,10 +536,10 @@ function ulsValuesChanged()
function ulsDownload()
{
- ulsUpdatedTd.innerHTML = "<b><i>Downloading...</i></b>";
+ ulsUpdatedTd.innerHTML = "<b><i>下载中...</i></b>";
ulsCountTd.innerHTML = 0;
getChunkedBuffer(
- "https://storage.googleapis.com/gt_app/callsigns/callsigns.txt",
+ "http://www.srac.cn/gt-app/callsigns.txt",
processulsCallsigns,
null,
"http",
diff --git a/package.nw/lib/defaults.js b/package.nw/lib/defaults.js
index 374de4e..e238be1 100644
--- a/package.nw/lib/defaults.js
+++ b/package.nw/lib/defaults.js
@@ -172,7 +172,6 @@ var def_adifLogSettings = {
HRDLOGUploadCode: "",
CloudlogURL: "http://127.0.0.1/index.php/api/qso",
CloudlogAPI: "",
- CloudlogStationProfileID: "1",
eQSLUser: "",
eQSLPassword: "",
eQSLNickname: ""
@@ -186,12 +185,12 @@ var def_adifLogSettings = {
var def_msgSettings = {
msgAlertSelect: 1,
- msgAlertWord: "New chat message",
+ msgAlertWord: "<22>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ",
msgAlertMedia: "none",
msgFrequencySelect: 0,
msgActionSelect: 1,
msgAwaySelect: 0,
- msgAwayText: "I am away from the shack at the moment"
+ msgAwayText: "<22><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"
};
var def_receptionSettings = {
diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js
index 32b96c0..6e90458 100644
--- a/package.nw/lib/gt.js
+++ b/package.nw/lib/gt.js
@@ -6,7 +6,6 @@ var gtVersionStr = pjson.version
var gtVersion = parseInt(gtVersionStr.replace(/\./g, ""));
var gtBeta = pjson.betaVersion;
-// var banana = require("../../node_modules/banana-i18n/dist/banana-i18n.js");
var g_startVersion = 0;
if (typeof localStorage.currentVersion != "undefined") { g_startVersion = localStorage.currentVersion; }
@@ -118,6 +117,7 @@ function loadAllSettings()
def_adifLogSettings
);
g_msgSettings = loadDefaultsAndMerge("msgSettings", def_msgSettings);
+
g_receptionSettings = loadDefaultsAndMerge(
"receptionSettings",
def_receptionSettings
@@ -272,7 +272,7 @@ function saveAndCloseApp()
}
catch (e)
{
- console.error(e);
+ console.log(e);
}
if (g_map)
@@ -294,7 +294,7 @@ function saveAndCloseApp()
}
catch (e)
{
- console.error(e);
+ console.log(e);
}
}
@@ -323,10 +323,7 @@ function saveAndCloseApp()
g_baWindowHandle.window.close(true);
g_callRosterWindowHandle.window.close(true);
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
nw.App.quit();
}
@@ -603,9 +600,9 @@ g_maidenheadModeImageArray[0] = "./img/mh4_32.png";
g_maidenheadModeImageArray[1] = "./img/mh6_32.png";
var g_gridViewArray = Array();
-g_gridViewArray[1] = "Live";
-g_gridViewArray[2] = "Logbook";
-g_gridViewArray[3] = "Logbook &amp; Live";
+g_gridViewArray[1] = "实时信号";
+g_gridViewArray[2] = "日志数据";
+g_gridViewArray[3] = "日志 + 实时";
var g_trophyImageArray = Array();
g_trophyImageArray[0] = "./img/blank_trophy.png";
@@ -618,14 +615,14 @@ g_trophyImageArray[6] = "./img/usc_trophy.png";
g_trophyImageArray[7] = "./img/us48_trophy.png";
var g_viewInfo = {};
-g_viewInfo[0] = ["g_qsoGrids", "Grids", 0, 0, 0];
-g_viewInfo[1] = ["g_cqZones", "CQ Zones", 0, 0, 40];
-g_viewInfo[2] = ["g_ituZones", "ITU Zones", 0, 0, 90];
-g_viewInfo[3] = ["g_wacZones", "Continents", 0, 0, 7];
-g_viewInfo[4] = ["g_wasZones", "US States", 0, 0, 50];
+g_viewInfo[0] = ["g_qsoGrids", "网格", 0, 0, 0];
+g_viewInfo[1] = ["g_cqZones", "CQ区域", 0, 0, 40];
+g_viewInfo[2] = ["g_ituZones", "ITU区域", 0, 0, 90];
+g_viewInfo[3] = ["g_wacZones", "大洲", 0, 0, 7];
+g_viewInfo[4] = ["g_wasZones", "美国州区域", 0, 0, 50];
g_viewInfo[5] = ["g_worldGeoData", "DXCCs", 0, 0, 340];
-g_viewInfo[6] = ["g_countyData", "US Counties", 0, 0, 3220];
-g_viewInfo[7] = ["g_us48Data", "US Continental Grids", 0, 0, 488];
+g_viewInfo[6] = ["g_countyData", "美国县数据", 0, 0, 3220];
+g_viewInfo[7] = ["g_us48Data", "美国大陆网格", 0, 0, 488];
var g_soundCard = g_appSettings.soundCard;
@@ -858,15 +855,15 @@ function ignoreMessagesToggle()
{
txrxdec.style.backgroundColor = "Green";
txrxdec.style.borderColor = "GreenYellow";
- txrxdec.innerHTML = "RECEIVE";
- txrxdec.title = "Click to ignore incoming messages";
+ txrxdec.innerHTML = "接收中";
+ txrxdec.title = "单击以暂停传入信息";
}
else
{
txrxdec.style.backgroundColor = "DimGray";
txrxdec.style.borderColor = "DarkGray";
- txrxdec.innerHTML = "IGNORE";
- txrxdec.title = "Click to resume reading messages";
+ txrxdec.innerHTML = "暂停接收中";
+ txrxdec.title = "单击以恢复传入消息";
}
}
@@ -1068,10 +1065,6 @@ function addDeDx(
finalSatName = ""
)
{
- var currentYear = new Date().getFullYear();
- var qsoDate = new Date(1970, 0, 1); qsoDate.setSeconds(finalTime);
- var isCurrentYear = (qsoDate.getFullYear() == currentYear);
-
var callsign = null;
var rect = null;
var worked = false;
@@ -1269,10 +1262,6 @@ function addDeDx(
g_tracker.worked.cqz[details.cqz + "dg"] = true;
g_tracker.worked.cqz[details.cqz + band + "dg"] = true;
}
- if (isCurrentYear)
- {
- g_tracker.worked.cqz[`${details.cqz}-${currentYear}`] = true;
- }
}
if (details.dxcc > 0)
@@ -1287,10 +1276,6 @@ function addDeDx(
g_tracker.worked.dxcc[sDXCC + "dg"] = true;
g_tracker.worked.dxcc[sDXCC + band + "dg"] = true;
}
- if (isCurrentYear)
- {
- g_tracker.worked.dxcc[`${sDXCC}-${currentYear}`] = true;
- }
}
if (details.px)
@@ -1622,14 +1607,14 @@ function addDeDx(
function timeoutSetUdpPort()
{
g_appSettings.wsjtUdpPort = udpPortInput.value;
- lastMsgTimeDiv.innerHTML = "Waiting for msg...";
+ lastMsgTimeDiv.innerHTML = "正在等待消息...";
g_setNewUdpPortTimeoutHandle = null;
}
function setUdpPort()
{
if (g_setNewUdpPortTimeoutHandle != null) { window.clearTimeout(g_setNewUdpPortTimeoutHandle); }
- lastMsgTimeDiv.innerHTML = "..setting..";
+ lastMsgTimeDiv.innerHTML = "..设置中..";
g_setNewUdpPortTimeoutHandle = window.setTimeout(timeoutSetUdpPort, 1000);
}
@@ -1638,7 +1623,7 @@ function changeGridDecay()
g_appSettings.gridsquareDecayTime = parseInt(gridDecay.value);
decayRateTd.innerHTML =
Number(g_appSettings.gridsquareDecayTime) == 0
- ? "<I>No Decay</I>"
+ ? "<I>没有衰减</I>"
: Number(g_appSettings.gridsquareDecayTime).toDHMS();
}
@@ -1830,14 +1815,14 @@ function createFlagTipTable(toolElement)
"</td></tr>";
worker +=
- "<tr><td>Freq</td><td style='color:lightgreen' >" +
+ "<tr><td>频率</td><td style='color:lightgreen' >" +
Number(g_gtFlagPins[key].freq / 1000).formatMhz(3, 3) +
" <font color='yellow'>(" +
Number(g_gtFlagPins[key].freq / 1000000).formatBand() +
")</font></td></tr>";
worker +=
- "<tr><td>Mode</td><td style='color:orange' >" +
+ "<tr><td>模式</td><td style='color:orange' >" +
g_gtFlagPins[key].mode +
"</td></tr>";
@@ -1852,7 +1837,7 @@ function createFlagTipTable(toolElement)
)
);
worker +=
- "<tr><td>Dist</td><td style='color:cyan'>" +
+ "<tr><td>距离</td><td style='color:cyan'>" +
parseInt(
MyCircle.distance(
g_myLat,
@@ -1985,7 +1970,7 @@ function createSpotTipTable(toolElement)
worker =
"<table id='tooltipTable' class='darkTable' ><tr><th colspan=2 style='color:cyan'>Rx Spot</th></tr>";
worker +=
- "<tr><td>Age</td><td>" +
+ "<tr><td>距今</td><td>" +
Number(now - report.when).toDHMS() +
"</td></tr>";
worker +=
@@ -1993,7 +1978,7 @@ function createSpotTipTable(toolElement)
Number(report.snr).formatSignalReport() +
"</td></tr>";
worker +=
- "<tr><td>Call</td><td style='color:#ff0' >" +
+ "<tr><td>被呼叫</td><td style='color:#ff0' >" +
report.call.formatCallsign() +
"</td></tr>";
@@ -2012,13 +1997,13 @@ function createSpotTipTable(toolElement)
report.grid +
"</td></tr>";
worker +=
- "<tr><td>Freq</td><td style='color:lightgreen' >" +
+ "<tr><td>频率</td><td style='color:lightgreen' >" +
report.freq.formatMhz() +
" <font color='yellow'>(" +
report.band +
")</font></td></tr>";
worker +=
- "<tr><td>Mode</td><td style='color:orange' >" +
+ "<tr><td>模式</td><td style='color:orange' >" +
report.mode +
"</td></tr>";
@@ -2033,7 +2018,7 @@ function createSpotTipTable(toolElement)
)
);
worker +=
- "<tr><td>Dist</td><td style='color:cyan'>" +
+ "<tr><td>距离</td><td style='color:cyan'>" +
parseInt(
MyCircle.distance(
g_myLat,
@@ -2046,12 +2031,12 @@ function createSpotTipTable(toolElement)
distanceUnit.value.toLowerCase() +
"</td></tr>";
worker +=
- "<tr><td>Azim</td><td style='color:yellow'>" +
+ "<tr><td>方位角</td><td style='color:yellow'>" +
report.bearing +
"&deg;</td></tr>";
worker +=
- "<tr><td>Time</td><td>" +
+ "<tr><td>时间</td><td>" +
userTimeString(report.when * 1000) +
"</td></tr>";
@@ -2081,7 +2066,7 @@ function createSpotTipTable(toolElement)
}
catch (err)
{
- console.error("Unexpected error at createSpotTipTable", toolElement, err)
+ console.log("Unexpected error at createSpotTipTable", toolElement, err)
}
}
@@ -2139,7 +2124,7 @@ function createTooltTipTable(toolElement)
if (Object.keys(toolElement.hashes).length > 0)
{
worker +=
- "<tr align='center'><td>Call</td><td>Freq</td><td>Sent</td><td>Rcvd</td><td>Station</td><td>Mode</td><td>Band</td><td>QSL</td><td>Last Msg</td><td>DXCC</td><td>Time</td>";
+ "<tr align='center'><td>被呼叫</td><td>频率</td><td>发射</td><td>接收</td><td>主叫</td><td>模式</td><td>波段</td><td>QSL</td><td>备注信息</td><td>DXCC</td><td>时间</td>";
if (g_callsignLookups.lotwUseEnable == true) worker += "<td>LoTW</td>";
if (g_callsignLookups.eqslUseEnable == true) worker += "<td>eQSL</td>";
@@ -2170,7 +2155,7 @@ function createTooltTipTable(toolElement)
if (toolElement.liveHash != null && Object.keys(toolElement.liveHash).length > 0)
{
worker +=
- "<tr align='center'><td>Call</td><td>Freq</td><td>Sent</td><td>Rcvd</td><td>Station</td><td>Mode</td><td>Band</td><td>Last Msg</td><td>DXCC</td><td>Time</td>";
+ "<tr align='center'><td>被呼叫</td><td>频率</td><td>发射</td><td>接收</td><td>主叫</td><td>模式</td><td>波段</td><td>备注信息</td><td>DXCC</td><td>时间</td>";
if (g_callsignLookups.lotwUseEnable == true) worker += "<td>LoTW</td>";
if (g_callsignLookups.eqslUseEnable == true) worker += "<td>eQSL</td>";
@@ -2293,7 +2278,7 @@ function createTooltTipTableLogbook(toolElement)
"</th></tr>";
worker +=
- "<tr align='center'><td>Call</td><td>Freq</td><td>Sent</td><td>Rcvd</td><td>Station</td><td>Mode</td><td>Band</td><td>DXCC</td><td>Time</td>";
+ "<tr align='center'><td>被呼叫</td><td>频率</td><td>发射</td><td>接收</td><td>主叫</td><td>模式</td><td>波段</td><td>DXCC</td><td>时间</td>";
if (g_callsignLookups.lotwUseEnable == true) worker += "<td>LoTW</td>";
if (g_callsignLookups.eqslUseEnable == true) worker += "<td>eQSL</td>";
@@ -2417,10 +2402,7 @@ function renderTooltipWindow(feature)
g_popupWindowHandle.width = parseInt(positionInfo.width) + 20;
g_popupWindowHandle.height = parseInt(positionInfo.height) + 50;
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -2508,10 +2490,7 @@ function openConditionsWindow()
g_conditionsWindowHandle.hide();
}
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -2602,10 +2581,7 @@ function openCallRosterWindow(show = true)
g_callRosterWindowHandle.hide();
}
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -2617,10 +2593,7 @@ function updateRosterWorked()
{
g_callRosterWindowHandle.window.updateWorked();
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -2632,10 +2605,7 @@ function updateRosterInstances()
{
g_callRosterWindowHandle.window.updateInstances();
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -2692,10 +2662,7 @@ function openStatsWindow(show = true)
g_statsWindowHandle.hide();
}
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -2740,10 +2707,7 @@ function showMessaging(show = true, cid)
g_chatWindowHandle.focus();
if (typeof cid != "undefined") g_chatWindowHandle.window.openId(cid);
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -2797,10 +2761,7 @@ function onRightClickGridSquare(feature)
{
renderTooltipWindow(feature);
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
mouseOutOfDataItem();
}
@@ -3507,13 +3468,13 @@ function moonOver(feature)
if (elevation > 10.0) elColor = "lightgreen";
var worker = "<table class='darkTable'>";
worker +=
- "<tr><th colspan=2 style='font-size:15px;color:cyan;'>Moon</th></tr>";
+ "<tr><th colspan=2 style='font-size:15px;color:cyan;'>月亮</th></tr>";
worker +=
- "<tr><th >Azimuth</th><td style='color:lightgreen'>" +
+ "<tr><th >方位角</th><td style='color:lightgreen'>" +
object.azimuth.toFixed(1) +
"&deg;</td></tr>";
worker +=
- "<tr><th >Elevation</th><td style='color:" +
+ "<tr><th >海拔</th><td style='color:" +
elColor +
"'>" +
elevation +
@@ -3569,7 +3530,7 @@ function trophyOver(feature)
var key = feature.get("prop");
if (key == "cqzone")
{
- trophy = "CQ Zone";
+ trophy = "CQ 区域";
infoObject = g_cqZones[name];
zone = name;
name = g_cqZones[name].name;
@@ -3577,17 +3538,17 @@ function trophyOver(feature)
if (key == "ituzone")
{
- trophy = "ITU Zone";
+ trophy = "ITU 区域";
infoObject = g_ituZones[name];
}
if (key == "wac" && name in g_wacZones)
{
- trophy = "Continent";
+ trophy = "大洲";
infoObject = g_wacZones[name];
}
if (key == "was" && name in g_wasZones)
{
- trophy = "US State";
+ trophy = "美国州";
infoObject = g_wasZones[name];
}
if (key == "dxcc" && name in g_worldGeoData)
@@ -3603,13 +3564,13 @@ function trophyOver(feature)
}
if (key == "usc")
{
- trophy = "US County";
+ trophy = "美国县";
infoObject = g_countyData[name];
name = infoObject.geo.properties.n + ", " + infoObject.geo.properties.st;
}
if (key == "us48")
{
- trophy = "US Continental Grids";
+ trophy = "美国大陆网格";
infoObject = g_us48Data[feature.get("grid")];
name = feature.get("grid");
@@ -3658,8 +3619,8 @@ function trophyOver(feature)
{
wc1Table = "<td align=center><table class='darkTable'>";
wc1Table +=
- "<tr><td colspan=2 ><font color='yellow'>Worked</font></td></tr>";
- wc1Table += "<tr><td align=right><font color='green'>Band</font></td>";
+ "<tr><td colspan=2 ><font color='yellow'>已通联</font></td></tr>";
+ wc1Table += "<tr><td align=right><font color='green'>波段</font></td>";
wc1Table += "<td align=left><table class='subtable'>";
var keys = Object.keys(infoObject.worked_bands).sort();
for (key in keys)
@@ -3675,7 +3636,7 @@ function trophyOver(feature)
wc1Table += "</table></td>";
wc1Table += "</tr>";
wc1Table += "<tr>";
- wc1Table += "<td align=right><font color='orange'>Mode</font></td>";
+ wc1Table += "<td align=right><font color='orange'>模式</font></td>";
wc1Table += "<td align=left><table class='subtable'>";
keys = Object.keys(infoObject.worked_modes).sort();
for (key in keys)
@@ -3698,8 +3659,8 @@ function trophyOver(feature)
{
wcTable = "<td align=center><table class='darkTable'>";
wcTable +=
- "<tr><td colspan=2 ><font color='lightgreen'>Confirmed</font></td></tr>";
- wcTable += "<tr><td align=right><font color='green'>Band</font></td>";
+ "<tr><td colspan=2 ><font color='lightgreen'>已确认</font></td></tr>";
+ wcTable += "<tr><td align=right><font color='green'>波段</font></td>";
wcTable += "<td align=left><table class='subtable'>";
var keys = Object.keys(infoObject.confirmed_bands).sort();
for (key in keys)
@@ -3715,7 +3676,7 @@ function trophyOver(feature)
wcTable += "</table></td>";
wcTable += "</tr>";
wcTable += "<tr>";
- wcTable += "<td align=right><font color='orange'>Mode</font></td>";
+ wcTable += "<td align=right><font color='orange'>模式</font></td>";
wcTable += "<td align=left><table class='subtable'>";
keys = Object.keys(infoObject.confirmed_modes).sort();
for (key in keys)
@@ -3735,7 +3696,7 @@ function trophyOver(feature)
if (!infoObject.worked && !infoObject.confirmed)
{
worker +=
- "<tr><td colspan=2 ><font color='orange'>Needed</font></td></tr>";
+ "<tr><td colspan=2 ><font color='orange'>需要的</font></td></tr>";
}
else
{
@@ -3782,7 +3743,7 @@ function mouseDownGrid(longlat, event)
MyCircle.bearing(g_myLat, g_myLon, longlat[1], longlat[0])
);
worker +=
- "<tr><td>Dist</td><td style='color:lightgreen'>" +
+ "<tr><td>距离</td><td style='color:lightgreen'>" +
parseInt(
MyCircle.distance(
g_myLat,
@@ -3795,13 +3756,13 @@ function mouseDownGrid(longlat, event)
distanceUnit.value.toLowerCase() +
"</td></tr>";
worker +=
- "<tr><td>Azim</td><td style='color:yellow'>" + bearing + "&deg;</td></tr>";
+ "<tr><td>方位角</td><td style='color:yellow'>" + bearing + "&deg;</td></tr>";
worker +=
- "<tr><td>Lat</td><td style='color:orange'>" +
+ "<tr><td>纬度</td><td style='color:orange'>" +
longlat[1].toFixed(3) +
"</td></tr>";
worker +=
- "<tr><td>Long</td><td style='color:lightblue'>" +
+ "<tr><td>经度</td><td style='color:lightblue'>" +
longlat[0].toFixed(3) +
"</td></tr></table>";
if (grid in g_gridToDXCC)
@@ -4039,10 +4000,7 @@ function reloadInfo(bandOrMode)
{
g_statsWindowHandle.window.reloadInfo();
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -4695,7 +4653,6 @@ function setStrikesButton()
{
strikesImg.style.webkitFilter = "grayscale(1)";
}
- g_gtLiveStatusUpdate = true;
}
function toggleStrikesValue()
@@ -4703,7 +4660,7 @@ function toggleStrikesValue()
if (g_mapSettings.strikesNotify == false && g_mapSettings.strikes == false)
{
var confirmed = window.confirm(
- "Lighting Strike Detection is provided by Blitzortung.org\nWe are not responsible for missed strikes that could result in damage.\nBe sure to check your local weather providers for accurate data."
+ "闪电打击检测由 Blitzortung.org 提供\n我们对可能造成损害的误击不承担责任.\n请务必向当地气象服务机构査询准确数据."
);
if (confirmed == false)
{
@@ -4946,12 +4903,12 @@ function updateCountStats()
if (Object.keys(g_QSOhash).length > 0)
{
- clearOrLoadButton.innerHTML = "Clear Log";
+ clearOrLoadButton.innerHTML = "清除日志";
g_loadQSOs = false;
}
else
{
- clearOrLoadButton.innerHTML = "Load Logs";
+ clearOrLoadButton.innerHTML = "载入日志";
g_loadQSOs = true;
}
}
@@ -5166,18 +5123,18 @@ function getCurrentBandModeHTML()
{
var band =
g_appSettings.gtBandFilter == "auto"
- ? myBand + " (Auto)"
+ ? myBand + " (自动模式)"
: g_appSettings.gtBandFilter.length == 0
- ? "Mixed Bands"
+ ? "混合波段"
: g_appSettings.gtBandFilter;
var mode =
g_appSettings.gtModeFilter == "auto"
- ? myMode + " (Auto)"
+ ? myMode + " (自动模式)"
: g_appSettings.gtModeFilter.length == 0
- ? "Mixed Modes"
+ ? "混合模式"
: g_appSettings.gtModeFilter;
return (
- "<div style='vertical-align:top;display:inline-block;margin-bottom:3px;color:lightgreen;font-weight:bold;font-size:larger'>Viewing: <text style='color:yellow'>" +
+ "<div style='vertical-align:top;display:inline-block;margin-bottom:3px;color:lightgreen;font-weight:bold;font-size:larger'>正在显示: <text style='color:yellow'>" +
band +
"</text> / <text style='color:orange'>" +
mode +
@@ -5241,6 +5198,8 @@ function displayTime()
if (g_mapSettings.strikes && g_mapSettings.offlineMode == false)
{
+ if (g_strikeWebSocket == null) loadStrikes();
+
var now = Date.now();
for (var time in g_bolts)
{
@@ -5254,6 +5213,17 @@ function displayTime()
else
{
g_layerSources.strikes.clear();
+ if (g_strikeWebSocket != null)
+ {
+ try
+ {
+ g_strikeWebSocket.close();
+ }
+ catch (e)
+ {
+ g_strikeWebSocket = null;
+ }
+ }
}
if (g_currentNightState != g_nightTime)
@@ -5400,85 +5370,190 @@ g_lightningGlobal[1] = new ol.style.Icon({
});
var g_bolts = {};
+var g_strikeWebSocket = null;
+var g_strikeInterval = null;
var g_strikeRange = 0.4;
function toggleStrikeGlobal()
{
- g_mapSettings.strikesGlobal = g_mapSettings.strikesGlobal == false;
+ g_mapSettings.strikesGlobal =
+ g_mapSettings.strikesGlobal == false;
saveMapSettings();
- let msg = "Local Strikes";
+ var msg = "Local Strikes";
if (g_mapSettings.strikesGlobal == true) msg = "Global Strikes";
- let worker =
+ var worker =
"<font color='yellow'>Strike Distance Changed<br/>" + msg + "</font>";
- if (g_mapSettings.strikes == false) { worker += "<br/><font color='red'>Detection is not enabled!</font>"; }
+ if (g_mapSettings.strikes == false) { worker += "<br/><font color='red'>未启用检测!</font>"; }
addLastTraffic(worker);
g_layerSources.strikes.clear();
}
-function handleStrike(strike)
+function setStrikeDistance()
{
- let index = Date.now();
- while (index in g_bolts) index++;
+ if (
+ g_mapSettings.offlineMode == true &&
+ g_strikeWebSocket != null &&
+ g_strikeWebSocket.readyState != 3
+ )
+ {
+ g_strikeWebSocket.close();
+ return;
+ }
- let inRange = true;
+ if (g_strikeWebSocket != null)
+ {
+ var distance = g_strikeRange;
+ if (g_mapSettings.strikesGlobal == true) distance = 1000;
- if (Math.abs(strike.o - g_myLon) > g_strikeRange) inRange = false;
+ var send = "{\"west\":-180,\"east\":180,\"north\":-90,\"south\":-90}";
- if (Math.abs(strike.a - g_myLat) > g_strikeRange) inRange = false;
+ if (g_strikeInterval == null) { g_strikeInterval = setInterval(setStrikeDistance, 300000); }
- if (
- g_mapSettings.strikesGlobal ||
- (g_mapSettings.strikesGlobal == false && inRange)
- )
+ try
+ {
+ g_strikeWebSocket.send(send);
+ }
+ catch (e)
+ {
+ g_strikeWebSocket = null;
+ }
+ }
+ else
{
- g_bolts[index] = iconFeature(
- ol.proj.fromLonLat([strike.o, strike.a]),
- inRange ? g_lightningBolt : g_lightningGlobal[0],
- 1
- );
+ if (g_strikeInterval != null)
+ {
+ clearInterval(g_strikeInterval);
+ g_strikeInterval = null;
+ }
+ }
+}
- g_layerSources.strikes.addFeature(g_bolts[index]);
+var g_strikeCount = 0;
+function loadStrikes()
+{
+ if (g_strikeWebSocket) return;
+
+ var rnd = parseInt(Math.random() * 4);
+ var ws_server = "";
+ if (rnd < 1)
+ {
+ ws_server = "ws7.blitzortung.org";
+ }
+ else if (rnd < 2)
+ {
+ ws_server = "ws6.blitzortung.org";
+ }
+ else if (rnd < 3)
+ {
+ ws_server = "ws5.blitzortung.org";
+ }
+ else
+ {
+ ws_server = "ws1.blitzortung.org";
}
- if (inRange == true)
+ try
+ {
+ g_strikeWebSocket = new WebSocket("wss:///" + ws_server + ":3000");
+ }
+ catch (e)
{
- playStrikeAlert();
+ g_strikeWebSocket = null;
+ return;
+ }
- let dist =
- parseInt(
- MyCircle.distance(
- g_myLat,
- g_myLon,
- strikes.a,
- strikes.o,
- distanceUnit.value
- ) * MyCircle.validateRadius(distanceUnit.value)
- ).toLocaleString() +
- " " +
- distanceUnit.value.toLowerCase();
- let azim =
- parseInt(
- MyCircle.bearing(g_myLat, g_myLon, strike.a, strike.o)
- ).toLocaleString() + "&deg;";
+ g_strikeWebSocket.onopen = function ()
+ {
+ setStrikeDistance();
+ };
- let worker =
- "<font style='color:yellow;font-weight:bold'>Lighting Strike Detected!</font><br/>";
- worker +=
- "<font style='color:white'>" + userTimeString(null) + "</font><br/>";
- worker +=
- "<font style='color:orange'>Distance: </font><font style='color:lightblue;font-weight:bold'>" +
- dist +
- "</font><br/>";
- worker +=
- "<font style='color:cyan'>Bearing: </font><font style='color:lightgreen;font-weight:bold'>" +
- azim +
- "</font>";
+ g_strikeWebSocket.onmessage = function (evt)
+ {
+ var Strikes = JSON.parse(evt.data);
+ Strikes.sig = null;
- addLastTraffic(worker);
- }
+ if (
+ "delay" in Strikes &&
+ "time" in Strikes &&
+ "lat" in Strikes &&
+ "lon" in Strikes
+ )
+ {
+ var index = Date.now();
+ while (index in g_bolts) index++;
+
+ var inRange = true;
+
+ if (Math.abs(Strikes.lon - g_myLon) > g_strikeRange) inRange = false;
+
+ if (Math.abs(Strikes.lat - g_myLat) > g_strikeRange) inRange = false;
+
+ if (
+ g_mapSettings.strikesGlobal ||
+ (g_mapSettings.strikesGlobal == false && inRange)
+ )
+ {
+ g_bolts[index] = iconFeature(
+ ol.proj.fromLonLat([Strikes.lon, Strikes.lat]),
+ inRange ? g_lightningBolt : g_lightningGlobal[0],
+ 1
+ );
+
+ g_layerSources.strikes.addFeature(g_bolts[index]);
+ }
+
+ if (inRange == true)
+ {
+ playStrikeAlert();
+
+ var dist =
+ parseInt(
+ MyCircle.distance(
+ g_myLat,
+ g_myLon,
+ Strikes.lat,
+ Strikes.lon,
+ distanceUnit.value
+ ) * MyCircle.validateRadius(distanceUnit.value)
+ ).toLocaleString() +
+ " " +
+ distanceUnit.value.toLowerCase();
+ var azim =
+ parseInt(
+ MyCircle.bearing(g_myLat, g_myLon, Strikes.lat, Strikes.lon)
+ ).toLocaleString() + "&deg;";
+
+ var worker =
+ "<font style='color:yellow;font-weight:bold'>检测到雷击!</font><br/>";
+ worker +=
+ "<font style='color:white'>" + userTimeString(null) + "</font><br/>";
+ worker +=
+ "<font style='color:orange'>距离: </font><font style='color:lightblue;font-weight:bold'>" +
+ dist +
+ "</font><br/>";
+ worker +=
+ "<font style='color:cyan'>角度: </font><font style='color:lightgreen;font-weight:bold'>" +
+ azim +
+ "</font>";
+
+ addLastTraffic(worker);
+ }
+ }
+ delete evt.data;
+ };
+
+ g_strikeWebSocket.onerror = function ()
+ {
+ g_strikeWebSocket = null;
+ };
+
+ g_strikeWebSocket.onclose = function ()
+ {
+ g_strikeWebSocket = null;
+ };
}
function toggleMouseTrack()
@@ -6202,7 +6277,7 @@ function setCallAndGrid(callsign, grid, instance = null)
port = g_instances[instance].remote.port;
address = g_instances[instance].remote.address;
}
- else alert("major instance error");
+ else alert("发生严重错误");
}
else
{
@@ -6239,12 +6314,12 @@ function setCallAndGrid(callsign, grid, instance = null)
responseArray = responseArray.slice(0, length);
wsjtUdpMessage(responseArray, responseArray.length, port, address);
- addLastTraffic("<font color='lightgreen'>Generated Msgs</font>");
+ addLastTraffic("<font color='lightgreen'>生成的信息</font>");
}
if (thisInstance && thisInstance.TxEnabled == 1)
{
addLastTraffic(
- "<font color='yellow'>Transmit Enabled!</font><br/><font color='yellow'>Generate Msgs Aborted</font>"
+ "<font color='yellow'>发射已打开!</font><br/><font color='yellow'>生成信息已中止</font>"
);
}
}
@@ -6380,10 +6455,7 @@ function handleWsjtxStatus(newMessage)
{
g_callRosterWindowHandle.window.processStatus(newMessage);
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
if (g_activeInstance == "")
@@ -6576,7 +6648,7 @@ function handleWsjtxStatus(newMessage)
fadePaths();
txrxdec.style.backgroundColor = "Blue";
txrxdec.style.borderColor = "Cyan";
- txrxdec.innerHTML = "DECODE";
+ txrxdec.innerHTML = "解码中";
g_countIndex++;
g_weAreDecoding = true;
}
@@ -6604,11 +6676,11 @@ function handleWsjtxStatus(newMessage)
"<div style='vertical-align:top;display:inline-block;margin-right:8px;'>";
worker += "<table class='darkTable' align=center>";
worker +=
- "<tr><th colspan=7>Last " +
+ "<tr><th colspan=7>最后 " +
g_lastMessages.length +
- " Decoded Messages</th></tr>";
+ " 个 已解码的信息</th></tr>";
worker +=
- "<tr><th>Time</th><th>dB</th><th>DT</th><th>Freq</th><th>Mode</th><th>Message</th><th>DXCC</th></tr>";
+ "<tr><th>时间</th><th>dB</th><th>DT</th><th>频率</th><th>模式</th><th>信息</th><th>DXCC</th></tr>";
worker += g_lastMessages.join("");
@@ -6632,7 +6704,7 @@ function handleWsjtxStatus(newMessage)
txrxdec.style.backgroundColor = "Green";
txrxdec.style.borderColor = "GreenYellow";
- txrxdec.innerHTML = "RECEIVE";
+ txrxdec.innerHTML = "接收中";
}
if (newMessage.TxEnabled)
@@ -6690,7 +6762,7 @@ function handleWsjtxStatus(newMessage)
txrxdec.style.backgroundColor = "Red";
txrxdec.style.borderColor = "Orange";
- txrxdec.innerHTML = "TRANSMIT";
+ txrxdec.innerHTML = "发射中";
g_layerSources.transmit.clear();
g_transmitFlightPath = null;
if (
@@ -6762,7 +6834,7 @@ function handleWsjtxStatus(newMessage)
}
catch (err)
{
- console.error("Unexpected error inside handleWsjtxStatus", err)
+ console.log("Unexpected error inside handleWsjtxStatus", err)
}
}
}
@@ -6873,6 +6945,7 @@ function handleWsjtxDecode(newMessage)
theTimeStamp =
timeNowSec() - (timeNowSec() % 86400) + parseInt(newMessage.TM / 1000);
var messageColor = "white";
+ if (CQ == true) messageColor = "cyan";
// Break up the decoded message
var decodeWords = newMessage.Msg.split(" ").slice(0, 5);
@@ -6918,7 +6991,6 @@ function handleWsjtxDecode(newMessage)
CQ = true;
msgDXcallsign = "CQ";
}
-
if (decodeWords.length == 4 && CQ == true)
{
msgDXcallsign += " " + decodeWords[1];
@@ -6939,12 +7011,6 @@ function handleWsjtxDecode(newMessage)
msgDEcallsign = decodeWords[1];
}
- if (decodeWords[2] == "RR73")
- {
- CQ = true;
- msgDXcallsign = "RR73";
- }
-
var callsign = null;
var hash = msgDEcallsign + newMessage.OB + newMessage.OM;
@@ -7013,7 +7079,6 @@ function handleWsjtxDecode(newMessage)
newCallsign.qso = false;
newCallsign.dxcc = callsignToDxcc(newCallsign.DEcall);
newCallsign.px = null;
- newCallsign.pota = null;
newCallsign.zone = null;
newCallsign.vucc_grids = [];
newCallsign.propMode = "";
@@ -7144,11 +7209,6 @@ function handleWsjtxDecode(newMessage)
}
}
- if (g_potaSpots && g_potaSpots.some(item => item.activator === callsign.DEcall))
- {
- callsign.pota = g_potaSpots.filter(item => item.activator === callsign.DEcall)[0];
- }
-
if (newMessage.NW)
{
didCustomAlert = processAlertMessage(
@@ -7272,7 +7332,7 @@ function handleWsjtxDecode(newMessage)
}
catch (err)
{
- console.error("Unexpected error inside handleWsjtxDecode 1", err)
+ console.log("Unexpected error inside handleWsjtxDecode 1", err)
}
}
}
@@ -7320,7 +7380,7 @@ function handleWsjtxDecode(newMessage)
}
catch (err)
{
- console.error("Unexpected error inside handleWsjtxDecode 2", err)
+ console.log("Unexpected error inside handleWsjtxDecode 2", err)
}
var feature = shapeFeature(
@@ -7420,7 +7480,7 @@ function handleWsjtxDecode(newMessage)
}
catch (err)
{
- console.error("Unexpected error inside handleWsjtxDecode 3", err)
+ console.log("Unexpected error inside handleWsjtxDecode 3", err)
}
}
}
@@ -7548,10 +7608,7 @@ function goProcessRoster(isRealtime = false)
}
g_callRosterWindowHandle.window.processRoster(g_callRoster);
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -7566,7 +7623,7 @@ function handleClosed(newMessage)
txrxdec.style.borderColor = "Purple";
var name = newMessage.Id.toUpperCase().split(" - ");
var txt = name[name.length - 1];
- txrxdec.innerHTML = txt + " Closed";
+ txrxdec.innerHTML = txt + " 已关闭";
}
}
@@ -7741,12 +7798,12 @@ function importSettings()
if (typeof data.appSettings == "undefined")
{
importSettingsFile.innerHTML =
- "<font style='color:red'>Settings File Corrupt!</font>";
+ "<font style='color:red'>设置文件已损坏!</font>";
}
else if (data.currentVersion != localStorage.currentVersion)
{
importSettingsFile.innerHTML =
- "<font style='color:red'>Settings Version Mismatch!</font>";
+ "<font style='color:red'>设置版本不匹配!</font>";
}
}
}
@@ -7755,7 +7812,7 @@ function importSettings()
function showCallsignBox(redraw)
{
var worker =
- "<div style='vertical-align:top;display:inline-block;margin:2px;color:cyan;font-weight:bold'>Callsigns and DXCC Heard</div><br/>";
+ "<div style='vertical-align:top;display:inline-block;margin:2px;color:cyan;font-weight:bold'>呼号 和 DXCC 字头</div><br/>";
g_newCallsignCount = Object.keys(g_liveCallsigns).length;
if (g_newCallsignCount > 0)
@@ -7765,7 +7822,7 @@ function showCallsignBox(redraw)
worker +=
"<div style='display:inline-block;padding-right:8px;overflow:auto;overflow-x:hidden;height:" +
Math.min(g_newCallsignCount * 24 + 26, getStatsWindowHeight()) +
- "px;'><table class='darkTable' align=center><th align=left>Callsign</th><th align=left>Grid</th><th>DXCC</th><th>CQ</th><th>ITU</th><th>Flag</th><th align=left>QSO</th><th>QSL</th><th>When</th>"; // <th>ITUz</th><th>CQz</th><th>ISO</th>";
+ "px;'><table class='darkTable' align=center><th align=left>呼号</th><th align=left>网格</th><th>DXCC</th><th>CQ</th><th>ITU</th><th>旗帜</th><th align=left>通联</th><th>确认</th><th>时间</th>"; // <th>ITUz</th><th>CQz</th><th>ISO</th>";
if (g_callsignLookups.lotwUseEnable == true) worker += "<th>LoTW</th>";
if (g_callsignLookups.eqslUseEnable == true) worker += "<th>eQSL</th>";
if (g_callsignLookups.oqrsUseEnable == true) worker += "<th>OQRS</th>";
@@ -7872,7 +7929,7 @@ function showCallsignBox(redraw)
) +
"px;'><table class='darkTable' align=center><tr><th colspan=4 style='font-weight:bold'>DXCC (" +
heard +
- ")</th><tr><th align=left>Name</th><th>Flag</th><th align=left>Calls</th></tr>";
+ ")</th><tr><th align=left>名称</th><th>Flag</th><th align=left>呼号</th></tr>";
Object.keys(List)
.sort()
.forEach(function (key, i)
@@ -8294,7 +8351,7 @@ function showWorkedBox(sortIndex, nextPage, redraw)
var endIndex = startIndex + g_qsoItemsPerPage;
if (endIndex > ObjectCount) endIndex = ObjectCount;
- var workHead = "<b> Entries (" + ObjectCount + ")</b>";
+ var workHead = "<b> 日志列表 (" + ObjectCount + "条)</b>";
if (g_qsoPages > 1)
{
@@ -8339,23 +8396,23 @@ function showWorkedBox(sortIndex, nextPage, redraw)
worker += "<th colspan=2><div id='dxccFilterDiv'></div></th>";
worker += "</tr> ";
worker +=
- "<tr><th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(0);'>Station</th>";
+ "<tr><th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(0);'>呼号</th>";
worker +=
- "<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(1);'>Grid</th>";
+ "<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(1);'>Grid网格</th>";
worker +=
- "<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(5);'>Band</th>";
+ "<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(5);'>波段</th>";
worker +=
- "<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(2);'>Mode</th>";
+ "<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(2);'>模式</th>";
worker +=
"<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(6);'>QSL</th>";
- worker += "<th align=center>Sent</th>";
- worker += "<th align=center>Rcvd</th>";
+ worker += "<th align=center>发送</th>";
+ worker += "<th align=center>接收</th>";
worker +=
"<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(3);'>DXCC</th>";
worker +=
- "<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(3);'>Flag</th>";
+ "<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(3);'>旗帜</th>";
worker +=
- "<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(4);'>When</th>";
+ "<th style='cursor:pointer;' align=center onclick='window.opener.showWorkedBox(4);'>时间</th>";
if (g_callsignLookups.lotwUseEnable == true) worker += "<th>LoTW</th>";
if (g_callsignLookups.eqslUseEnable == true) worker += "<th>eQSL</th>";
if (g_callsignLookups.oqrsUseEnable == true) worker += "<th>OQRS</th>";
@@ -8435,10 +8492,10 @@ function showWorkedBox(sortIndex, nextPage, redraw)
var newSelect = document.createElement("select");
newSelect.id = "bandFilter";
- newSelect.title = "Band Filter";
+ newSelect.title = "波段过滤";
var option = document.createElement("option");
option.value = "Mixed";
- option.text = "Mixed";
+ option.text = "混合";
newSelect.appendChild(option);
Object.keys(bands)
.sort(function (a, b)
@@ -8462,20 +8519,20 @@ function showWorkedBox(sortIndex, nextPage, redraw)
newSelect = document.createElement("select");
newSelect.id = "modeFilter";
- newSelect.title = "Mode Filter";
+ newSelect.title = "模式过滤";
option = document.createElement("option");
option.value = "Mixed";
- option.text = "Mixed";
+ option.text = "混合";
newSelect.appendChild(option);
option = document.createElement("option");
option.value = "Phone";
- option.text = "Phone";
+ option.text = "语音";
newSelect.appendChild(option);
option = document.createElement("option");
option.value = "Digital";
- option.text = "Digital";
+ option.text = "数据";
newSelect.appendChild(option);
Object.keys(modes)
@@ -8498,10 +8555,10 @@ function showWorkedBox(sortIndex, nextPage, redraw)
newSelect = document.createElement("select");
newSelect.id = "dxccFilter";
- newSelect.title = "DXCC Filter";
+ newSelect.title = "DXCC过滤";
option = document.createElement("option");
option.value = 0;
- option.text = "All";
+ option.text = "所有";
newSelect.appendChild(option);
Object.keys(dxccs)
@@ -8524,20 +8581,20 @@ function showWorkedBox(sortIndex, nextPage, redraw)
newSelect = document.createElement("select");
newSelect.id = "qslFilter";
- newSelect.title = "QSL Filter";
+ newSelect.title = "确认过滤";
option = document.createElement("option");
option.value = "All";
- option.text = "All";
+ option.text = "所有";
newSelect.appendChild(option);
option = document.createElement("option");
option.value = true;
- option.text = "Yes";
+ option.text = "是";
newSelect.appendChild(option);
option = document.createElement("option");
option.value = false;
- option.text = "No";
+ option.text = "否";
newSelect.appendChild(option);
statsAppendChild(
@@ -8558,7 +8615,7 @@ function showWorkedBox(sortIndex, nextPage, redraw)
}
catch (e)
{
- console.error(e);
+ console.log(e);
}
}
@@ -8587,18 +8644,17 @@ function lookupValidateCallByElement(elementString)
{
if (
g_lookupWindowHandle != null &&
- typeof g_lookupWindowHandle.window.validateCallByElement !== "undefined"
+ typeof g_statsWindowHandle.window.validateCallByElement !== "undefined"
)
{
g_lookupWindowHandle.window.validateCallByElement(elementString);
}
}
-
function lookupFocus(selection)
{
if (
g_lookupWindowHandle != null &&
- typeof g_lookupWindowHandle.window.statsFocus !== "undefined"
+ typeof g_statsWindowHandle.window.statsFocus !== "undefined"
)
{
g_lookupWindowHandle.window.statsFocus(selection);
@@ -8675,9 +8731,9 @@ function showDXCCsBox()
worker +=
"<div style='vertical-align:top;display:inline-block;margin-right:2px;overflow:auto;overflow-x:hidden;height:" +
Math.min(Object.keys(List).length * 23 + 45, getStatsWindowHeight()) +
- "px;'><table class='darkTable' align=center><tr><th colspan=5 style='font-weight:bold'>Worked (" +
+ "px;'><table class='darkTable' align=center><tr><th colspan=5 style='font-weight:bold'>已通联 (" +
worked +
- ")</th><tr><th align=left>Name</th><th>Flag</th><th align=left>DXCC</th></tr>";
+ ")</th><tr><th align=left>名称</th><th>旗帜</th><th align=left>DXCC</th></tr>";
Object.keys(List)
.sort()
.forEach(function (key, i)
@@ -8709,9 +8765,9 @@ function showDXCCsBox()
Object.keys(ListConfirmed).length * 23 + 45,
getStatsWindowHeight()
) +
- "px;'><table class='darkTable' align=center><tr><th colspan=5 style='font-weight:bold'>Confirmed (" +
+ "px;'><table class='darkTable' align=center><tr><th colspan=5 style='font-weight:bold'>已确认 (" +
confirmed +
- ")</th><tr><th align=left>Name</th><th>Flag</th><th align=left>DXCC</th></tr>";
+ ")</th><tr><th align=left>名称</th><th>旗帜</th><th align=left>DXCC</th></tr>";
Object.keys(ListConfirmed)
.sort()
.forEach(function (key, i)
@@ -8736,9 +8792,9 @@ function showDXCCsBox()
Object.keys(ListNotWorked).length * 23 + 45,
getStatsWindowHeight()
) +
- "px;'><table class='darkTable' align=center><tr><th colspan=3 style='font-weight:bold'>Needed (" +
+ "px;'><table class='darkTable' align=center><tr><th colspan=3 style='font-weight:bold'>需要的 (" +
needed +
- ")</th><tr><th align=left>Name</th><th>Flag</th><th align=left>DXCC</th></tr>";
+ ")</th><tr><th align=left>名称</th><th>旗帜</th><th align=left>DXCC</th></tr>";
Object.keys(ListNotWorked)
.sort()
.forEach(function (key, i)
@@ -8817,7 +8873,7 @@ function showCQzoneBox()
var worker = getCurrentBandModeHTML();
worker +=
- "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>Worked CQ Zones</b><br/>";
+ "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>曾通联 CQ 分区</b><br/>";
worker += displayItemList(g_cqZones, "#FFFFFF");
worker += "</div>";
@@ -8829,7 +8885,7 @@ function showITUzoneBox()
var worker = getCurrentBandModeHTML();
worker +=
- "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>Worked ITU Zones</b><br/>";
+ "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>曾通联 ITU 分区</b><br/>";
worker += displayItemList(g_ituZones, "#FFFFFF");
worker += "</div>";
@@ -8841,12 +8897,12 @@ function showWASWACzoneBox()
var worker = getCurrentBandModeHTML();
worker +=
- "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>Worked All Continents</b><br/>";
+ "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>曾通联大洲</b><br/>";
worker += displayItemList(g_wacZones, "#90EE90");
worker += "</div>";
worker +=
- "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>Worked All States</b><br/>";
+ "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>曾通联美国的州</b><br/>";
worker += displayItemList(g_wasZones, "#00DDDD");
worker += "</div>";
@@ -8882,12 +8938,12 @@ function displayItemList(table, color)
"px;'>";
worker += "<table class='darkTable' align=center>";
worker +=
- "<tr><th style='font-weight:bold'>Worked (" + worked + ")</th></tr>";
+ "<tr><th style='font-weight:bold'>已通联 (" + worked + ")</th></tr>";
worker +=
- "<tr><th style='font-weight:bold'>Confirmed (" + confirmed + ")</th></tr>";
+ "<tr><th style='font-weight:bold'>已确认 (" + confirmed + ")</th></tr>";
worker +=
- "<tr><th style='font-weight:bold'>Needed (" + needed + ")</th></tr>";
- worker += "<tr><th align=left>Name</th></tr>";
+ "<tr><th style='font-weight:bold'>需要的 (" + needed + ")</th></tr>";
+ worker += "<tr><th align=left>名称</th></tr>";
var inversionAlpha = "DD";
var confirmed = "";
@@ -8973,7 +9029,7 @@ function showWPXBox()
if (worked > 0)
{
worker +=
- "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>Worked Prefixes (<font color='#fff'>" +
+ "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>曾通联前缀 (<font color='#fff'>" +
worked +
"</font>)</b><br/>";
worker +=
@@ -8999,7 +9055,7 @@ function showWPXBox()
if (confirmed > 0)
{
worker +=
- "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>Confirmed Prefixes (<font color='#fff'>" +
+ "<div style='vertical-align:top;display:inline-block;margin-right:8px;overflow:auto;overflow-x:hidden;color:cyan;'><b>已确认前缀 (<font color='#fff'>" +
confirmed +
"</font>)</b><br/>";
worker +=
@@ -9116,10 +9172,7 @@ function openBaWindow(show = true)
g_baWindowHandle.hide();
}
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -9171,10 +9224,7 @@ function openLookupWindow(show = false)
g_lookupWindowHandle.window.saveScreenSettings();
}
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -9342,7 +9392,7 @@ function showStatBox(resize)
{
setStatsDiv(
"statViewDiv",
- "&nbsp;<br/>...Parsing Log Entries...<br/>&nbsp;"
+ "&nbsp;<br/>...分析日志条目...<br/>&nbsp;"
);
setStatsDivHeight("statViewDiv", "auto");
g_statBoxTimer = setTimeout(renderStatsBox, 250);
@@ -9351,7 +9401,7 @@ function showStatBox(resize)
{
setStatsDiv(
"statViewDiv",
- "&nbsp;<br/>No log entries available, load one or more ADIF logs<br/>&nbsp;"
+ "&nbsp;<br/>没有可用的日志条目请加载一个或多个ADIF日志<br/>&nbsp;"
);
setStatsDivHeight("statViewDiv", "auto");
}
@@ -9820,28 +9870,28 @@ function renderStatsBox()
}
var TypeNames = {
- 0: ["MIXED", "Mixed", ""],
- 1: ["DIGITAL", "Digital", ""],
- 2: ["PHONE", "Phone", ""],
+ 0: ["MIXED", "混合", ""],
+ 1: ["DIGITAL", "数据", ""],
+ 2: ["PHONE", "语音", ""],
3: ["CW", "CW", ""],
- 4: ["Other", "Other", ""]
+ 4: ["Other", "其他", ""]
};
var AwardNames = {
- 0: ["WRFA", "Callsigns", "WRFA", "yellow"],
- 1: ["GRID", "Grids", "GSA", "cyan"],
+ 0: ["WRFA", "呼号", "WRFA", "yellow"],
+ 1: ["GRID", "网格", "GSA", "cyan"],
2: ["DXCC", "DXCCs", "DXWA", "orange"],
- 3: ["CQ", "CQ Zones", "WAZ", "lightgreen"],
- 4: ["ITU", "ITU Zones", "ITUz", "#DD44DD"],
- 5: ["WAC", "Continents", "WAC", "cyan"],
- 6: ["WAS", "US States", "WAS", "lightblue"],
- 7: ["USC", "US Counties", "USA-CA", "orange"],
- 8: ["WPX", "Prefixes", "WPX", "yellow"]
+ 3: ["CQ", "CQ分区", "WAZ", "lightgreen"],
+ 4: ["ITU", "ITU分区", "ITUz", "#DD44DD"],
+ 5: ["WAC", "大洲", "WAC", "cyan"],
+ 6: ["WAS", "美国州分", "WAS", "lightblue"],
+ 7: ["USC", "美国县", "USA-CA", "orange"],
+ 8: ["WPX", "前缀", "WPX", "yellow"]
};
worker = "<font color='cyan'>";
- worker += "<h1>Logbook</h1>";
+ worker += "<h1>日志</h1>";
worker +=
"<table style='display:inline-table;margin:5px;' class='darkTable'>";
@@ -9849,26 +9899,26 @@ function renderStatsBox()
var ws = "";
if (Object.keys(details.callsigns).length > 1) ws = "s";
worker +=
- "<tr><td>Callsign" +
+ "<tr><td>呼号" +
ws +
"</td><td style='color:yellow' ><b>" +
Object.keys(details.callsigns).sort().join(", ") +
"</b></td></tr>";
worker +=
- "<tr><td>First Contact</td><td style='color:white' >" +
+ "<tr><td>第一次通联</td><td style='color:white' >" +
userTimeString(details.oldest * 1000) +
"</td></tr>";
worker +=
- "<tr><td>Last Contact</td><td style='color:white' >" +
+ "<tr><td>最后一次通联</td><td style='color:white' >" +
userTimeString(details.newest * 1000) +
"</td></tr>";
worker += "</table>";
worker += "</br>";
- worker += "<h1>Score Card</h1>";
+ worker += "<h1>记分卡</h1>";
worker +=
"<table style='display:inline-table;margin:5px;' class='darkTable'>";
worker +=
- "<tr><th>Top Score</th><th style='color:yellow'>Worked</th><th style='color:lightgreen'>Confirmed</th></tr>";
+ "<tr><th>最高分</th><th style='color:yellow'>已通联</th><th style='color:lightgreen'>已确认</th></tr>";
for (var key in AwardNames)
{
@@ -9902,7 +9952,7 @@ function renderStatsBox()
scoreSection = "Long Distance";
- worker += "<tr><td style='color:white'>Long Distance</td>";
+ worker += "<tr><td style='color:white'>最远距离</td>";
worker +=
"<td style='color:lightgreen'>" +
long_distance.worked_unit +
@@ -9937,7 +9987,7 @@ function renderStatsBox()
scoreSection = "Short Distance";
- worker += "<tr><td style='color:white' >Short Distance</td>";
+ worker += "<tr><td style='color:white' >最短距离</td>";
worker +=
"<td style='color:lightblue'>" +
short_distance.worked_unit +
@@ -9973,9 +10023,9 @@ function renderStatsBox()
worker += "</tr>";
worker += "</table>";
worker += "</br>";
- worker += "<h1>Award Types</h1>";
+ worker += "<h1>奖状类型</h1>";
- scoreSection = "Award Types";
+ scoreSection = "奖状类型";
for (var key in AwardNames)
{
worker += createStatTable(
@@ -9987,9 +10037,9 @@ function renderStatsBox()
worker += "<br/>";
- scoreSection = "Mode Types";
+ scoreSection = "模式类型";
- worker += "<h1>Mode Types</h1>";
+ worker += "<h1>模式类型</h1>";
for (var key in TypeNames)
{
worker += createStatTable(
@@ -10001,16 +10051,16 @@ function renderStatsBox()
worker += "<br/>";
- worker += "<h1>Distances</h1>";
+ worker += "<h1>距离统计</h1>";
scoreSection = "Distances";
- worker += createDistanceTable(long_distance, "Longest Distance");
- worker += createDistanceTable(short_distance, "Shortest Distance");
+ worker += createDistanceTable(long_distance, "最远距离");
+ worker += createDistanceTable(short_distance, "最短距离");
worker += "<br/>";
if (g_appSettings.gtShareEnable == true)
{
- scoreSection = "GT Users";
- worker += "<h1>Worked GridTracker Stations<br/>Online Now</h1>";
+ scoreSection = "GT 用户";
+ worker += "<h1>曾经通联过的站台现在在线</h1>";
worker += "</font>";
worker += "<font color='white'>";
worker += createGtStationsTable(gtData);
@@ -10024,7 +10074,7 @@ function renderStatsBox()
worker +=
"<br/> In Section: " +
scoreSection +
- "<br/>Error Generating Stats<br/>Please take a screenshot and send to team@gridtracker.org";
+ "<br/>生成统计信息时出错<br/>请截图并发送到 gridtracker@gmail.com";
}
setStatsDiv("statViewDiv", worker);
@@ -10043,7 +10093,7 @@ function createGtStationsTable(obj)
var worker =
"<table style='display:inline-table;margin:5px;white-space:nowrap;' class='darkTable'>";
worker +=
- "<tr align='center'><th>Call</th><th>Grid</th><th>Sent</th><th>Rcvd</th><th>Mode</th><th>Band</th><th>QSL</th><th>Comment</th><th>DXCC</th><th>Time</th></th></tr>";
+ "<tr align='center'><th>被呼叫</th><th>Grid</th><th>发送</th><th>接收</th><th>模式</th><th>波段</th><th>QSL</th><th>备注</th><th>DXCC</th><th>时间</th></th></tr>";
var keys = Object.keys(obj).sort(hashNameSort);
for (var key in keys)
@@ -10111,8 +10161,8 @@ function createDistanceTable(obj, name)
name +
"</th></tr>";
worker +=
- "<tr><td></td><td><font color='yellow'>Worked</font></td><td colspan=2 ><font color='lightgreen'>Confirmed</font></td></tr>";
- worker += "<tr><td align=center><font color='lightgreen'>Bands</font></td>";
+ "<tr><td></td><td><font color='yellow'>已通联</font></td><td colspan=2 ><font color='lightgreen'>已确认</font></td></tr>";
+ worker += "<tr><td align=center><font color='lightgreen'>波段</font></td>";
worker += "<td align=left><table class='subtable'>";
var keys = Object.keys(obj.band).sort(numberSort);
for (var key in keys)
@@ -10170,7 +10220,7 @@ function createDistanceTable(obj, name)
worker += "</table></td>";
worker += "</tr>";
- worker += "<tr><td align=center><font color='orange'>Modes</font></td>";
+ worker += "<tr><td align=center><font color='orange'>模式</font></td>";
worker += "<td align=left><table class='subtable'>";
keys = Object.keys(obj.mode).sort();
for (var key in keys)
@@ -10227,7 +10277,7 @@ function createDistanceTable(obj, name)
}
worker += "</table></td>";
worker += "</tr>";
- worker += "<tr><td align=center><font color='#DD44DD'>Types</font></td>";
+ worker += "<tr><td align=center><font color='#DD44DD'>类型</font></td>";
worker += "<td align=left><table class='subtable'>";
keys = Object.keys(obj.type).sort();
for (var key in keys)
@@ -10333,14 +10383,14 @@ function createStatTable(title, infoObject, awardName)
wc1Table +=
"<tr>" +
award +
- "<td><font color='yellow'>Worked</font> <font color='white'>(" +
+ "<td><font color='yellow'>已通联</font> <font color='white'>(" +
infoObject.worked +
- ")</font></td><td colspan=2 ><font color='lightgreen'>Confirmed</font> <font color='white'>(" +
+ ")</font></td><td colspan=2 ><font color='lightgreen'>已确认</font> <font color='white'>(" +
infoObject.confirmed +
")</font></td></tr>";
wc1Table +=
- "<tr><td align=center><font color='lightgreen'>Bands</font></td>";
+ "<tr><td align=center><font color='lightgreen'>波段</font></td>";
wc1Table += "<td align=left><table class='subtable'>";
var keys = Object.keys(infoObject.worked_bands).sort(numberSort);
@@ -10374,7 +10424,7 @@ function createStatTable(title, infoObject, awardName)
wc1Table += "</tr>";
wc1Table += "<tr>";
- wc1Table += "<td align=center><font color='orange'>Modes</font></td>";
+ wc1Table += "<td align=center><font color='orange'>模式</font></td>";
wc1Table += "<td align=left><table class='subtable'>";
keys = Object.keys(infoObject.worked_modes).sort();
for (var key in keys)
@@ -10411,7 +10461,7 @@ function createStatTable(title, infoObject, awardName)
if (infoObject.worked_type_count > 0)
{
wc1Table += "<tr>";
- wc1Table += "<td align=center><font color='#DD44DD'>Types</font></td>";
+ wc1Table += "<td align=center><font color='#DD44DD'>类型</font></td>";
wc1Table += "<td align=left><table class='subtable'>";
var keys = Object.keys(infoObject.worked_types).sort();
for (var key in keys)
@@ -10998,10 +11048,7 @@ function setGtShareButtons()
{
g_chatWindowHandle.hide();
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -11098,7 +11145,7 @@ function checkForNewVersion(showUptoDate)
if (typeof nw != "undefined")
{
getBuffer(
- "https://storage.googleapis.com/gt_app/version.txt",
+ "http://www.srac.cn/gt-app/version.txt",
versionCheck,
showUptoDate,
"http",
@@ -11112,7 +11159,7 @@ function downloadAcknowledgements()
if (g_mapSettings.offlineMode == false)
{
getBuffer(
- "https://storage.googleapis.com/gt_app/acknowledgements.json",
+ "http://www.srac.cn/gt-app/acknowledgements.json",
updateAcks,
null,
"http",
@@ -11240,7 +11287,7 @@ function renderBandActivity()
}
else
{
- buffer = "..no data yet..";
+ buffer = "..还没有数据..";
}
graphDiv.innerHTML = buffer;
if (g_baWindowHandle)
@@ -11515,7 +11562,7 @@ function updateBasedOnIni()
localStorage.N1MMSettings = JSON.stringify(g_N1MMSettings);
alert(
which.appName +
- " N1MM Logger+ is enabled with same settings, disabled GridTracker N1MM logger"
+ " 启用N1MM Logger+使用相同的设置禁用GridTracker N1MM Logger"
);
}
}
@@ -11532,7 +11579,7 @@ function updateBasedOnIni()
{
if (typeof nw != "undefined")
{
- alert("Location not available!\nEither start WSJT-X/JTDX or enter your grid square in the settings ");
+ alert("网格位置不可用!\n或启动 WSJT-X/JTDX 在设定中输入格位置 ");
}
}
}
@@ -12264,13 +12311,13 @@ function loadMaidenHeadData()
g_StateData["US-AK"] = {};
g_StateData["US-AK"].postal = "US-AK";
- g_StateData["US-AK"].name = "Alaska";
+ g_StateData["US-AK"].name = "阿拉斯加";
g_StateData["US-AK"].mh = g_worldGeoData[5].mh;
g_StateData["US-AK"].dxcc = 6;
g_StateData["US-HI"] = {};
g_StateData["US-HI"].postal = "US-HI";
- g_StateData["US-HI"].name = "Hawaii";
+ g_StateData["US-HI"].name = "夏威夷";
g_StateData["US-HI"].mh = g_worldGeoData[100].mh;
g_StateData["US-HI"].dxcc = 110;
@@ -12368,7 +12415,7 @@ function loadMaidenHeadData()
}
}
}
- var name = "Alaska";
+ var name = "阿拉斯加";
var shapeKey = "AK";
g_wasZones[name] = {};
g_wasZones[name].geo = g_shapeData[shapeKey];
@@ -12381,7 +12428,7 @@ function loadMaidenHeadData()
g_wasZones[name].worked_modes = {};
g_wasZones[name].confirmed_modes = {};
- name = "Hawaii";
+ name = "夏威夷";
shapeKey = "HI";
g_wasZones[name] = {};
g_wasZones[name].geo = g_shapeData[shapeKey];
@@ -12612,13 +12659,13 @@ function versionCheck(buffer, flag)
var verString = String(stableVersion);
main.style.display = "none";
newVersionMustDownloadDiv.innerHTML =
- "New Version v" +
+ "新版本 v" +
verString.substr(0, 1) +
"." +
verString.substr(1, 2) +
"." +
verString.substr(3) +
- " available for download.<br />Go there now?<br /><br />";
+ " 可供下载.<br />现在就去下载?(注意:新版本为英文版)<br /><br />";
versionDiv.style.display = "block";
}
else
@@ -12636,7 +12683,7 @@ function versionCheck(buffer, flag)
verString.substr(1, 2) +
"." +
verString.substr(3) +
- " available for download.<br />Go there now?<br /><br />";
+ " 可供下载.<br />现在就去下载?(注意:新版本为英文版)<br /><br />";
versionDiv.style.display = "block";
}
else
@@ -12654,7 +12701,7 @@ function updateAcks(buffer)
{
try
{
- g_acknowledgedCalls = JSON.parse(buffer);
+g_acknowledgedCalls = JSON.parse(buffer);
}
catch (e)
{
@@ -12674,7 +12721,6 @@ function readAcksFromDisk()
catch (e)
{
// file failed to load, probably not downloaded
- console.error(e);
}
}
@@ -12717,8 +12763,7 @@ function getBuffer(file_url, callback, flag, mode, port, cache = null)
host: url.parse(file_url).host, // eslint-disable-line node/no-deprecated-api
port: port,
followAllRedirects: true,
- path: url.parse(file_url).path, // eslint-disable-line node/no-deprecated-api
- headers: { "User-Agent": gtVersionString }
+ path: url.parse(file_url).path // eslint-disable-line node/no-deprecated-api
};
http.get(options, function (res)
@@ -13358,7 +13403,7 @@ function loadViewSettings()
g_receptionSettings.viewHistoryTimeSec / 60
);
spotHistoryTimeTd.innerHTML =
- "Max Age: " + Number(g_receptionSettings.viewHistoryTimeSec).toDHM();
+ "最大时效: " + Number(g_receptionSettings.viewHistoryTimeSec).toDHM();
spotPathsValue.checked = g_receptionSettings.viewPaths;
spotPathColorValue.value = g_receptionSettings.pathColor;
@@ -13542,7 +13587,7 @@ function loadAdifSettings()
if (logLOTWqsoCheckBox.checked == true)
{
alert(
- "Unable to access LoTW TrustedQSL (TQSL) due to OS permissions\nLogging to LoTW disabled for this session\nRun as administrator or allow file access to GridTracker if problem persists"
+ "由于操作系统权限无法访问LoTW TrustedQSLTQSL\n已为此会话禁用登录到LoTW\n如果问题仍然存在请以管理员身份运行或允许对GridTracker进行文件访问"
);
logLOTWqsoCheckBox.checked = false;
}
@@ -13573,16 +13618,6 @@ function startupVersionInit()
}
}
-function loadi18n()
-{
- $.i18n().load(
- {
- en: "i18n/en.json",
- es: "i18n/es.json"
- }
- );
-}
-
function startupButtonsAndInputs()
{
try
@@ -13628,10 +13663,7 @@ function startupButtonsAndInputs()
setGtShareButtons();
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
function startupEventsAndTimers()
@@ -13647,7 +13679,7 @@ function postInit()
redrawSpots();
checkForSettings();
updateForwardListener();
- addLastTraffic("GridTracker</br>" + gtShortVersion);
+ addLastTraffic("简体中文版</br>BD3OOX</br>VR2UPU</br></br>Grid网格跟踪助手</br>GridTracker</br>" + gtShortVersion);
g_nexradEnable = g_mapSettings.usNexrad ? 0 : 1;
toggleNexrad();
@@ -13673,12 +13705,6 @@ function postInit()
openCallRosterWindow(false);
openConditionsWindow(false);
showMessaging(false);
- renderI18n();
-}
-
-function renderI18n()
-{
- $("body").i18n();
}
document.addEventListener("dragover", function (event)
@@ -13693,34 +13719,31 @@ document.addEventListener("drop", function (event)
});
var g_startupTable = [
- [startupVersionInit, "Completed Version Check"],
- [loadi18n, "Loading Locale"],
- [qsoBackupFileInit, "QSO Backup Initialized"],
- [callsignServicesInit, "Callsign Services Initialized"],
- [loadMapSettings, "Map Settings Initialized"],
- [initMap, "Loaded Map"],
- [setPins, "Created Pins"],
- [loadViewSettings, "Loaded View Settings"],
- [loadMsgSettings, "Loaded Messaging Settings"],
- [setFileSelectors, "Set File Selectors"],
- [lockNewWindows, "Locked New Windows"],
- [loadMaidenHeadData, "Loaded Maidenhead Dataset"],
- [drawAllGrids, "Rendered All Maidenhead Grids"],
- [updateRunningProcesses, "Updated Running Processes"],
- [updateBasedOnIni, "Updated from WSJT-X/JTDX"],
- [loadAdifSettings, "Loaded ADIF Settings"],
- [startupButtonsAndInputs, "Buttons and Inputs Initialized"],
- [initSpeech, "Speech Initialized"],
- [initSoundCards, "Sounds Initialized"],
- [loadPortSettings, "Loaded Network Settings"],
- [loadLookupDetails, "Callsign Lookup Details Loaded"],
- [startupEventsAndTimers, "Set Events and Timers"],
- [registerHotKeys, "Registered Hotkeys"],
- [gtChatSystemInit, "Chat System Initialized"],
- [getPotaPlaces, "Loading POTA Database"],
- [getPotaSpots, "Starting POTA Spots Pump"],
- [downloadAcknowledgements, "Contributor Acknowledgements Loaded"],
- [postInit, "Finalizing System"]
+ [startupVersionInit, "已完成版本检查"],
+ [qsoBackupFileInit, "通联备份已初始化"],
+ [callsignServicesInit, "呼号服务已初始化"],
+ [loadMapSettings, "地图设定已初始化"],
+ [initMap, "加载地图"],
+ [setPins, "创造别针"],
+ [loadViewSettings, "加载视图设定"],
+ [loadMsgSettings, "加载消息设定"],
+ [setFileSelectors, "设定档案选择"],
+ [lockNewWindows, "锁定新窗口"],
+ [loadMaidenHeadData, "加载的 Maidehead 数据集"],
+ [drawAllGrids, "渲染所有 Maidenhead 网格"],
+ [updateRunningProcesses, "更新了正在运行的进程"],
+ [updateBasedOnIni, "更新自 WSJT-X/JTDX"],
+ [loadAdifSettings, "加载 ADIF 设定"],
+ [startupButtonsAndInputs, "按钮和输入已初始化"],
+ [initSpeech, "语音已初始化"],
+ [initSoundCards, "声音已初始化"],
+ [loadPortSettings, "加载网络设定"],
+ [loadLookupDetails, "已加载呼号查找详细资讯"],
+ [startupEventsAndTimers, "设定事件和计时器"],
+ [registerHotKeys, "注册热键"],
+ [gtChatSystemInit, "用户系统已初始化"],
+ [downloadAcknowledgements, "已加载参与者确认"],
+ [postInit, "系统已敲定"]
];
function init()
@@ -13738,7 +13761,7 @@ function init()
{
documentsDiv.style.display = "none";
startupDiv.style.display = "block";
- startupStatusDiv.innerHTML = "Starting...";
+ startupStatusDiv.innerHTML = "启动...";
setTimeout(startupEngine, 10);
}
}
@@ -13754,7 +13777,7 @@ function startupEngine()
}
else
{
- startupStatusDiv.innerHTML = "Completed";
+ startupStatusDiv.innerHTML = "已完成";
setTimeout(endStartup, 2000);
startupAdifLoadCheck();
openStatsWindow(false);
@@ -13985,10 +14008,7 @@ function updateWsjtxListener(port)
{
g_wsjtUdpServer.dropMembership(g_appSettings.wsjtIP);
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
g_wsjtUdpServer.close();
g_wsjtUdpServer = null;
@@ -14313,7 +14333,7 @@ function updateWsjtxListener(port)
newMessage.remote = remote;
newMessage.instance = instanceId;
- lastMsgTimeDiv.innerHTML = "Received from " + newMessage.Id;
+ lastMsgTimeDiv.innerHTML = "接收来自 " + newMessage.Id;
g_wsjtHandlers[newMessage.type](newMessage);
g_lastTimeSinceMessageInSeconds = parseInt(Date.now() / 1000);
@@ -14437,7 +14457,7 @@ function continueWithLookup(callsign, gridPass)
{
setLookupDiv(
"lookupInfoDiv",
- "Looking up <font color='cyan'>" + callsign + "</font>, please wait..."
+ "正在查询 <font color='cyan'>" + callsign + "</font>, 请稍等..."
);
if (g_appSettings.lookupCallookPreferred)
@@ -14507,17 +14527,17 @@ function continueWithLookup(callsign, gridPass)
else
{
var worker =
- "<center>C A L L O O K<br/>NO-NONSENSE AMATEUR RADIO U.S.A. CALLSIGN LOOKUPS<br/>are limited to United States and United States Territories Only<br/>";
+ "<center>C A L L O O K<br/>毫无意义的业馀无线电美国呼号査询<br/>仅限于美国和美国领土<br/>";
worker +=
- "<br/>The callsign <font color='orange'>" +
+ "<br/>呼号 <font color='orange'>" +
callsign +
- "</font> requested is from <font color='yellow'>" +
+ "</font> 请求来自 <font color='yellow'>" +
where +
"</font><br/>";
worker +=
- "<br/><br/>You might want to consider using QRZ.com, they have a free membership that provides limited data for most callsigns<br/>";
+ "<br/><br/>您可以考虑使用QRZ.com他们有免费的会员资格为大多数呼号提供有限的数据<br/>";
worker +=
- "and they have full details available for paid members<br/></center>";
+ "他们有付费会员的详细资讯<br/></center>";
setLookupDiv("lookupInfoDiv", worker);
}
@@ -14583,7 +14603,7 @@ var g_sinceLastLookup = 0;
function GetSessionID(resultTd, useCache)
{
if (g_mapSettings.offlineMode == true) return;
- if (resultTd != null) resultTd.innerHTML = "Testing";
+ if (resultTd != null) resultTd.innerHTML = "测试中";
if (g_appSettings.lookupService == "QRZCQ")
{
getBuffer(
@@ -14652,13 +14672,13 @@ function hamQthGetSessionCallback(buffer, resultTd)
}
else
{
- result = "<font color='red'>Invalid Response</font>";
+ result = "<font color='red'>无效响应</font>";
g_qrzLookupSessionId = null;
}
}
else
{
- result = "<font color='red'>Unknown Error</font>";
+ result = "<font color='red'>未知错误</font>";
g_qrzLookupSessionId = null;
}
if (resultTd == null)
@@ -14685,7 +14705,7 @@ function qrzGetSessionCallback(buffer, resultTd, useCache)
{
if (json.Session.hasOwnProperty("Key"))
{
- result = "<font color='green'>Valid</font>";
+ result = "<font color='green'>有效</font>";
g_qrzLookupSessionId = json.Session.Key;
}
else
@@ -14696,13 +14716,13 @@ function qrzGetSessionCallback(buffer, resultTd, useCache)
}
else
{
- result = "<font color='red'>Invalid Response</font>";
+ result = "<font color='red'>无效响应</font>";
g_qrzLookupSessionId = null;
}
}
else
{
- result = "<font color='red'>Unknown Error</font>";
+ result = "<font color='red'>未知错误</font>";
g_qrzLookupSessionId = null;
}
if (resultTd == null)
@@ -14786,7 +14806,7 @@ function qthHamLookupResults(buffer, gridPass, useCache)
{
if (gridPass) json.search.gtGrid = gridPass;
json.search.source =
- "<tr><td>Source</td><td><font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"https://www.hamqth.com/" +
+ "<tr><td>数据来源</td><td><font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"https://www.hamqth.com/" +
json.search.callsign.toUpperCase() +
"\");'>HamQTH</div></b></font></td></tr>";
@@ -14797,7 +14817,7 @@ function qthHamLookupResults(buffer, gridPass, useCache)
g_qrzLookupSessionId = null;
setLookupDiv(
"lookupInfoDiv",
- "<br/><b>No result for callsign</b><br/><br/>"
+ "<br/><b>未找到查询的呼号</b><br/><br/>"
);
}
}
@@ -14828,14 +14848,14 @@ function qrzLookupResults(buffer, gridPass, useCache)
if (g_appSettings.lookupService == "QRZ")
{
json.Callsign.source =
- "<tr><td>Source</td><td><font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"https://www.qrz.com/lookup?callsign=" +
+ "<tr><td>数据来源</td><td><font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"https://www.qrz.com/lookup?callsign=" +
call +
"\");'>QRZ.com</div></b></font></td></tr>";
}
else
{
json.Callsign.source =
- "<tr><td>Source</td><td><font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"https://www.qrzcq.com/call/" +
+ "<tr><td>数据来源</td><td><font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"https://www.qrzcq.com/call/" +
call +
"\");'>QRZCQ.com</div></b></font></td></tr>";
}
@@ -14846,7 +14866,7 @@ function qrzLookupResults(buffer, gridPass, useCache)
{
setLookupDiv(
"lookupInfoDiv",
- "<br/><b>No result for callsign</b><br/><br/>"
+ "<br/><b>未找到查询的呼号</b><br/><br/>"
);
g_qrzLookupSessionId = null;
}
@@ -14870,9 +14890,9 @@ function initialDatabases()
g_Irequest.onerror = function (event)
{
alert(
- "Database error: " +
+ "资料库错误: " +
event.target.errorCode +
- " : GridTracker will have issues"
+ " : GridTracker 会有问题的"
);
};
@@ -14906,7 +14926,7 @@ function addLookupObjectToIndexedDB(lookupObject)
request.onerror = function (event)
{
- addLastTraffic("<font style='color:orange'>Lookup Write Issue</font>");
+ addLastTraffic("<font style='color:orange'>查找写入问题</font>");
};
}
@@ -15166,7 +15186,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
var thisCall = getLookProp(lookup, "call").toUpperCase();
worker +=
- "<table title='Click to copy address to clipboard' onclick='setClipboardFromLookup();' style='cursor:pointer' >";
+ "<table title='单击将地址复制到剪贴板' onclick='setClipboardFromLookup();' style='cursor:pointer' >";
worker += "<tr>";
worker += "<td style='font-size:36pt;color:cyan;font-weight:bold'>";
worker += getLookProp(lookup, "call").toUpperCase().formatCallsign();
@@ -15258,11 +15278,11 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
"</div>";
worker = "";
worker += "<table align='center' class='bioTable' >";
- worker += "<tr><th colspan=2>Details</th></tr>";
+ worker += "<tr><th colspan=2>细节</th></tr>";
if (getLookProp(lookup, "url").length > 0)
{
worker += "<tr>";
- worker += "<td>Website</td>";
+ worker += "<td>网站</td>";
worker += "<td >";
worker +=
"<font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"" +
@@ -15274,12 +15294,12 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
if (Number(getLookProp(lookup, "bio")) > 0)
{
worker += "<tr>";
- worker += "<td>Biography</td>";
+ worker += "<td>简介</td>";
worker += "<td>";
worker +=
"<font color='orange'><b><div style='cursor:pointer' onClick='window.opener.openSite(\"https://www.qrz.com/db/" +
getLookProp(lookup, "call") +
- "\");'>Link</div></b></font>";
+ "\");'>连线</div></b></font>";
worker += "</td>";
worker += "</tr>";
}
@@ -15293,7 +15313,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
);
if (dates.length > 0)
{
- worker += "<tr><td>Effective Dates</td><td>" + dates + "</td></tr>";
+ worker += "<tr><td>生效日期</td><td>" + dates + "</td></tr>";
}
var Aliases = joinCommaIf(
getLookProp(lookup, "aliases"),
@@ -15304,7 +15324,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
worker +=
"<tr title='" +
Aliases +
- "' ><td>Aliases</td><td>" +
+ "' ><td>别名</td><td>" +
Aliases +
"</td></tr>";
}
@@ -15324,7 +15344,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
worker += makeRow("Longitude", lookup, "lon");
if (getLookProp(lookup, "lat").length > 0 && getLookProp(lookup, "lon").length > 0)
{
- worker += "<tr><td>Distance</td><td style='color:cyan'>" +
+ worker += "<tr><td>距离</td><td style='color:cyan'>" +
parseInt(
MyCircle.distance(
g_myLat,
@@ -15334,7 +15354,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
) * MyCircle.validateRadius(distanceUnit.value)
) + distanceUnit.value.toLowerCase() + "</td></tr>";
let bearing = parseInt(MyCircle.bearing(g_myLat, g_myLon, Number(lookup.lat), Number(lookup.lon)));
- worker += "<tr><td>Azimuth</td><td style='color:yellow'>" + bearing + "&deg;</td></tr>";
+ worker += "<tr><td>方位角</td><td style='color:yellow'>" + bearing + "&deg;</td></tr>";
}
worker += makeRow("Grid", lookup, "grid", true);
if (
@@ -15362,12 +15382,12 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
"&#10004; (" +
userDayString(g_lotwCallsigns[thisCall] * 86400 * 1000) +
")";
- worker += makeRow("LoTW Member", lookup, "ulotw");
+ worker += makeRow("LoTW 成员", lookup, "ulotw");
}
if (g_callsignLookups.eqslUseEnable == true && thisCall in g_eqslCallsigns)
{
lookup.ueqsl = "&#10004;";
- worker += makeRow("eQSL Member", lookup, "ueqsl");
+ worker += makeRow("eQSL 成员", lookup, "ueqsl");
}
if (g_callsignLookups.oqrsUseEnable == true && thisCall in g_oqrsCallsigns)
{
@@ -15378,7 +15398,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
if (fromCache)
{
worker +=
- "<tr><td>Cached Record</td><td>" +
+ "<tr><td>缓存记录</td><td>" +
userTimeString(lookup.cached * 1000) +
"</td></tr>";
}
@@ -15394,7 +15414,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
getLookProp(lookup, "call") +
"','" +
getLookProp(lookup, "grid") +
- "');\">Generate Messages</div></td></tr>";
+ "');\">生成消息(JTDX无效)</div></td></tr>";
setLookupDiv(
"lookupInfoDiv",
@@ -15592,7 +15612,7 @@ function searchLogForCallsign(call)
"<div class='mapItemNoSize'><table align='center' class='darkTable'>";
if (Object.keys(work).length > 0)
{
- worker += "<tr><th style='color:yellow'>Worked</th><td>";
+ worker += "<tr><th style='color:yellow'>已通联</th><td>";
var k = Object.keys(work).sort();
for (var key in k)
{
@@ -15602,7 +15622,7 @@ function searchLogForCallsign(call)
}
if (Object.keys(conf).length > 0)
{
- worker += "<tr><th style='color:lightgreen'>Confirmed</th><td>";
+ worker += "<tr><th style='color:lightgreen'>已确认</th><td>";
var k = Object.keys(conf).sort();
for (var key in k)
{
@@ -15612,7 +15632,7 @@ function searchLogForCallsign(call)
}
if (lastRow)
{
- worker += "<tr><th style='color:cyan'>Last QSO</th><td>";
+ worker += "<tr><th style='color:cyan'>最后的QSO</th><td>";
worker +=
"<font color='#" +
g_pskColors[list[lastRow].band] +
@@ -15674,7 +15694,6 @@ function is_dir(path)
catch (e)
{
// lstatSync throws an error if path doesn't exist
- console.error(e);
return false;
}
}
@@ -15697,14 +15716,14 @@ function purgeUserFiles(userDir, systemDir)
console.log(userPath + " -- " + systemPath);
if (fs.statSync(userPath).size == fs.statSync(systemPath).size)
{
- console.log("removing duplicate user media " + filename);
+ console.log("删除重复的用户信息 " + filename);
try
{
fs.unlinkSync(userPath);
}
catch (e)
{
- console.error(e);
+ console.log(e);
}
}
}
@@ -15771,7 +15790,7 @@ function mediaCheck()
catch (e)
{
alert(
- "Unable to create or access " + tryDirectory + " folder.\r\nPermission violation, GT cannot continue"
+ "无法创建或访问 " + tryDirectory + " folder.\r\n权限冲突GT无法继续"
);
nw.App.quit();
}
@@ -15903,10 +15922,7 @@ function saveReceptionReports()
JSON.stringify(g_receptionReports)
);
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
function loadReceptionReports()
@@ -15958,7 +15974,7 @@ function pskSpotCheck(timeSec)
{
g_receptionReports.lastDownloadTimeSec = timeSec;
localStorage.receptionSettings = JSON.stringify(g_receptionSettings);
- spotRefreshDiv.innerHTML = "…refreshing…";
+ spotRefreshDiv.innerHTML = "..刷新中..";
getBuffer(
`https://retrieve.pskreporter.info/query?rronly=1&lastseqno=${g_receptionReports.lastSequenceNumber}` +
`&senderCallsign=${encodeURIComponent(myRawCall)}` +
@@ -15976,12 +15992,12 @@ function pskSpotCheck(timeSec)
(timeSec - g_receptionReports.lastDownloadTimeSec) > PSKREPORTER_INTERVAL_IN_SECONDS
)
{
- spotRefreshDiv.innerHTML = "No recent TX";
+ spotRefreshDiv.innerHTML = "最近没有TX";
}
else
{
spotRefreshDiv.innerHTML =
- "Refresh: " +
+ "剩余刷新: " +
Number(PSKREPORTER_INTERVAL_IN_SECONDS - (timeSec - g_receptionReports.lastDownloadTimeSec)).toDHMS();
}
}
@@ -16213,7 +16229,7 @@ function createSpot(report, key, fromPoint, addToLayer = true)
}
catch (err)
{
- console.error("Unexpected error inside createSpot", report, err)
+ console.log("创建Spot内部出现意外错误", report, err)
}
}
@@ -16282,7 +16298,7 @@ var g_spotNightFlightColor = "#FFFFFFBB";
function changeSpotValues()
{
g_receptionSettings.viewHistoryTimeSec = parseInt(spotHistoryTimeValue.value) * 60;
- spotHistoryTimeTd.innerHTML = "Max Age: " + Number(g_receptionSettings.viewHistoryTimeSec).toDHM();
+ spotHistoryTimeTd.innerHTML = "最大时效: " + Number(g_receptionSettings.viewHistoryTimeSec).toDHM();
g_receptionSettings.viewPaths = spotPathsValue.checked;
if (g_receptionSettings.viewPaths)
@@ -16426,13 +16442,13 @@ function toggleCRScript()
if (g_crScript == 1)
{
addLastTraffic(
- "<font style='color:lightgreen'>Call Roster Script Enabled</font>"
+ "<font style='color:lightgreen'>呼号列表脚本已启用</font>"
);
}
else
{
addLastTraffic(
- "<font style='color:yellow'>Call Roster Script Disabled</font>"
+ "<font style='color:yellow'>呼号列表脚本已关闭</font>"
);
}
goProcessRoster();
@@ -16507,10 +16523,7 @@ function setRosterTop()
{
g_callRosterWindowHandle.setAlwaysOnTop(g_appSettings.rosterAlwaysOnTop);
}
- catch (e)
- {
- console.error(e);
- }
+ catch (e) { }
}
}
@@ -16593,13 +16606,13 @@ function makeScreenshots()
addLastTraffic(
"<font style='color:lightgreen;cursor:pointer;' onclick='showNativeFolder(\"" +
encodeURI(fn).trim() +
- "\");''>Saved Screenshot</font>"
+ "\");''>保存的屏幕截图</font>"
);
}
catch (e)
{
addLastTraffic(
- "<font style='color:red'>Screenshot write failed</font>"
+ "<font style='color:red'>屏幕截图写入失败</font>"
);
}
},
diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js
index c1508ad..a445eb3 100644
--- a/package.nw/lib/roster.js
+++ b/package.nw/lib/roster.js
@@ -26,8 +26,6 @@ var g_callMenu = null;
var g_ageMenu = null;
var g_callingMenu = null;
var g_compactMenu = null;
-var g_menuItemForCurrentColumn = null;
-var g_currentColumnName = null;
var g_targetHash = "";
var g_clearIgnores = null;
var g_clearIgnoresCall = null;
@@ -98,12 +96,10 @@ var g_defaultSettings = {
huntDXCC: true,
huntCQz: false,
huntITUz: false,
- huntMarathon: false,
huntState: false,
huntCounty: false,
huntCont: false,
huntPX: false,
- huntPOTA: false,
huntQRZ: true,
huntOAMS: false
},
@@ -116,7 +112,6 @@ var g_defaultSettings = {
Flag: true,
State: true,
County: true,
- POTA: false,
Cont: true,
dB: true,
Freq: false,
@@ -484,20 +479,20 @@ function processStatus(newMessage)
// Decoding
txrxdec.style.backgroundColor = "Blue";
txrxdec.style.borderColor = "Cyan";
- txrxdec.innerHTML = "DECODE";
+ txrxdec.innerHTML = "解码中";
}
else
{
txrxdec.style.backgroundColor = "Green";
txrxdec.style.borderColor = "GreenYellow";
- txrxdec.innerHTML = "RECEIVE";
+ txrxdec.innerHTML = "接收中";
}
}
else
{
txrxdec.style.backgroundColor = "Red";
txrxdec.style.borderColor = "Orange";
- txrxdec.innerHTML = "TRANSMIT";
+ txrxdec.innerHTML = "发射中";
}
}
@@ -1365,12 +1360,12 @@ function openIgnoreEdit()
if (Object.keys(g_blockedCalls).length > 0)
{
clearString =
- "<th style='cursor:pointer;' onclick='clearAllCallsignIgnores()'>Clear All</th>";
+ "<th style='cursor:pointer;' onclick='clearAllCallsignIgnores()'>清除所有</th>";
}
worker +=
"<div style='margin:10px;padding:0px;vertical-align:top;display:inline-block;margin-right:2px;overflow:auto;overflow-x:hidden;height:" +
(window.innerHeight - 135) +
- "px;'><table class='darkTable' align=center><tr><th align=left>Callsigns</th>" +
+ "px;'><table class='darkTable' align=center><tr><th align=left>呼号</th>" +
clearString +
"</tr>";
Object.keys(g_blockedCalls)
@@ -1390,7 +1385,7 @@ function openIgnoreEdit()
if (Object.keys(g_blockedCQ).length > 0)
{
clearString =
- "<th style='cursor:pointer;' onclick='clearAllCQIgnores()'>Clear All</th>";
+ "<th style='cursor:pointer;' onclick='clearAllCQIgnores()'>清除所有</th>";
}
worker +=
"<div style='margin:10px;padding:0px;vertical-align:top;display:inline-block;margin-right:2px;overflow:auto;overflow-x:hidden;height:" +
@@ -1415,7 +1410,7 @@ function openIgnoreEdit()
if (Object.keys(g_blockedDxcc).length > 0)
{
clearString =
- "<th style='cursor:pointer;' onclick='clearAllDxccIgnores()'>Clear All</th>";
+ "<th style='cursor:pointer;' onclick='clearAllDxccIgnores()'>清除所有</th>";
}
worker +=
"<div style='margin:10px;vertical-align:top;display:inline-block;overflow:auto;overflow-x:hidden;height:" +
@@ -1531,7 +1526,7 @@ function init()
if (window.opener.g_mapSettings.offlineMode == false)
{
getBuffer(
- "https://storage.googleapis.com/gt_app/callsigns/manifest.json",
+ "http://www.srac.cn/gt-app/manifest.json",
manifestResult,
null,
"http",
@@ -1709,19 +1704,6 @@ function init()
item = new nw.MenuItem({ type: "separator" });
g_menu.append(item);
- g_menuItemForCurrentColumn = new nw.MenuItem({
- type: "normal",
- label: "Move Column Left",
- click: function ()
- {
- moveColumnLeft(g_currentColumnName);
- }
- })
- g_menu.append(g_menuItemForCurrentColumn)
-
- item = new nw.MenuItem({ type: "separator" });
- g_menu.append(item);
-
for (let columnIndex in g_rosterSettings.columnOrder)
{
let key = g_rosterSettings.columnOrder[columnIndex];
@@ -2180,9 +2162,7 @@ function handleContextMenu(ev)
}
}
- let name
- if (ev.target.tagName == "TD") name = ev.target.getAttribute("name");
-
+ let name = ev.target.getAttribute("name");
if (name == "Callsign")
{
g_targetHash = ev.target.parentNode.id;
@@ -2220,24 +2200,13 @@ function handleContextMenu(ev)
}
else
{
- if (g_rosterSettings.compact)
+ if (g_rosterSettings.compact == false)
{
- g_compactMenu.popup(mouseX, mouseY);
+ g_menu.popup(mouseX, mouseY);
}
else
{
- if (ev.target.tagName == "TH" && ev.target.getAttribute("name"))
- {
- g_menuItemForCurrentColumn.enabled = true;
- g_currentColumnName = ev.target.getAttribute("name");
- }
- else
- {
- g_menuItemForCurrentColumn.enabled = false;
- g_currentColumnName = null;
- }
-
- g_menu.popup(mouseX, mouseY);
+ g_compactMenu.popup(mouseX, mouseY);
}
}
}
@@ -3460,24 +3429,3 @@ function doubleCompile(award, firstLevel)
return singleCompile(award, firstLevel);
}
-
-function listShortInstances()
-{
- let shortInstances = [];
- if (typeof window.opener.g_instancesIndex != "undefined" && typeof window.opener.g_instances != "undefined")
- {
- if (window.opener.g_instancesIndex.length > 1)
- {
- let instances = window.opener.g_instances;
- let keys = Object.keys(instances).sort();
- for (let key in keys)
- {
- let inst = keys[key];
- let sp = inst.split(" - ");
- let shortInst = sp[sp.length - 1].substring(0, 18);
- shortInstances.push(shortInst);
- }
- }
- }
- return shortInstances;
-}
diff --git a/package.nw/lib/roster/processRosterFiltering.js b/package.nw/lib/roster/processRosterFiltering.js
index b4fcd8d..3595946 100644
--- a/package.nw/lib/roster/processRosterFiltering.js
+++ b/package.nw/lib/roster/processRosterFiltering.js
@@ -45,18 +45,6 @@ function processRosterFiltering(callRoster, rosterSettings)
entry.tx = false;
continue;
}
- if (entry.DXcall == "CQ POTA" && huntPOTA.checked == true)
- {
- entry.tx = true;
- if (callObj.pota == null)
- {
- callObj.pota = {
- reference: "?-????",
- name: "Unknown Park"
- }
- }
- continue;
- }
if (callObj.ituza in g_blockedITUz)
{
entry.tx = false;
@@ -390,12 +378,6 @@ function processRosterFiltering(callRoster, rosterSettings)
}
}
}
-
- if (callObj.shouldAlert == false && rosterSettings.onlyHits == true && callObj.qrz == false)
- {
- tx = false
- }
-
entry.tx = tx;
}
}
diff --git a/package.nw/lib/roster/processRosterHunting.js b/package.nw/lib/roster/processRosterHunting.js
index e901ea5..97c9661 100644
--- a/package.nw/lib/roster/processRosterHunting.js
+++ b/package.nw/lib/roster/processRosterHunting.js
@@ -13,9 +13,6 @@ function processRosterHunting(callRoster, rosterSettings)
let layeredUnconf = "background-clip:padding-box;box-shadow: 0 0 4px 2px inset ";
let layeredUnconfAlpha = "AA";
- const currentYear = new Date().getFullYear();
- const currentYearSuffix = `&rsquo;${currentYear - 2000}`;
-
// TODO: Hunting results might be used to filter, based on the "Callsigns: Only Wanted" option,
// so maybe we can move this loop first, and add a check to the filtering loop?
@@ -65,7 +62,6 @@ function processRosterHunting(callRoster, rosterSettings)
callObj.hunting = {}
callObj.callFlags = {}
- callObj.style = callObj.style || {}
let colorObject = Object();
@@ -80,19 +76,18 @@ function processRosterHunting(callRoster, rosterSettings)
let state = "#90EE90";
let cnty = "#CCDD00";
let cont = "#00DDDD";
- let pota = "#fbb6fc";
let cqz = "#DDDDDD";
let ituz = "#DDDDDD";
let wpx = "#FFFF00";
hasGtPin = false;
let shouldAlert = false;
- let callBg, gridBg, callingBg, dxccBg, stateBg, cntyBg, contBg, potaBg, cqzBg, ituzBg, wpxBg, gtBg;
- let callConf, gridConf, callingConf, dxccConf, stateConf, cntyConf, contConf, potaConf, cqzConf, ituzConf, wpxConf;
+ let callBg, gridBg, callingBg, dxccBg, stateBg, cntyBg, contBg, cqzBg, ituzBg, wpxBg, gtBg;
+ let callConf, gridConf, callingConf, dxccConf, stateConf, cntyConf, contConf, cqzConf, ituzConf, wpxConf;
- callBg = gridBg = callingBg = dxccBg = stateBg = cntyBg = contBg = potaBg = cqzBg = ituzBg = wpxBg = gtBg = row;
+ callBg = gridBg = callingBg = dxccBg = stateBg = cntyBg = contBg = cqzBg = ituzBg = wpxBg = gtBg = row;
- callConf = gridConf = callingConf = dxccConf = stateConf = cntyConf = contConf = potaConf = cqzConf = ituzConf = wpxConf =
+ callConf = gridConf = callingConf = dxccConf = stateConf = cntyConf = contConf = cqzConf = ituzConf = wpxConf =
"";
let hash = callsign + workHashSuffix;
@@ -143,27 +138,6 @@ function processRosterHunting(callRoster, rosterSettings)
continue;
}
- // Special Calls
- if (callObj.DEcall.match("^[A-Z][0-9][A-Z](/w+)?$"))
- {
- callObj.style.call = "class='oneByOne'";
- }
-
- // Entries currently calling or being called by us
- if (callObj.DEcall == window.opener.g_instances[callObj.instance].status.DXcall)
- {
- if (window.opener.g_instances[callObj.instance].status.TxEnabled == 1)
- {
- callObj.hunting.call = "calling";
- callObj.style.call = "class='dxCalling'";
- }
- else
- {
- callObj.hunting.call = "caller";
- callObj.style.call = "class='dxCaller'";
- }
- }
-
// Hunting for callsigns
if (huntCallsign.checked == true)
{
@@ -228,7 +202,6 @@ function processRosterHunting(callRoster, rosterSettings)
if (huntQRZ.checked == true && callObj.qrz == true)
{
callObj.callFlags.calling = true
- callObj.hunting.qrz = "hunted";
shouldAlert = true;
callObj.reason.push("qrz");
}
@@ -339,27 +312,6 @@ function processRosterHunting(callRoster, rosterSettings)
}
}
}
-
- callObj.dxccSuffix = null
- if (huntMarathon.checked && callObj.hunting.dxcc != "hunted" && callObj.hunting.dxcc != "checked")
- {
- callObj.reason.push("dxcc-marathon");
-
- let hash = `${callObj.dxcc}-${currentYear}`;
- if (rosterSettings.huntIndex && !(hash in rosterSettings.huntIndex.dxcc))
- {
- if (!rosterSettings.workedIndex || !(hash in rosterSettings.workedIndex.dxcc))
- {
- callObj.dxccSuffix = currentYearSuffix;
-
- callObj.hunting.dxccMarathon = "hunted";
- if (!callObj.hunting.dxcc)
- {
- dxccConf = `${unconf}${dxcc}${layeredAlpha};`;
- }
- }
- }
- }
}
// Hunting for US States
@@ -475,86 +427,21 @@ function processRosterHunting(callRoster, rosterSettings)
}
}
- // Hunting for POTAs
- if (huntPOTA.checked == true && window.opener.g_mapSettings.offlineMode == false && callObj.pota != null)
- {
- let huntTotal = callObj.pota.length;
- let huntFound = 0, layeredFound = 0, workedFound = 0, layeredWorkedFound = 0;
-
- for (index in callObj.pota)
- {
- let hash = callObj.pota[index] + workHashSuffix;
- let layeredHash = rosterSettings.layeredMode && (callObj.pota[index] + layeredHashSuffix)
-
- // if (rosterSettings.huntIndex && hash in rosterSettings.huntIndex.pota) layeredFound++;
- // if (rosterSettings.layeredMode && layeredHash in rosterSettings.huntIndex.pota) layeredFound++;
- // if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.pota) workedFound++;
- // if (rosterSettings.layeredMode && layeredHash in rosterSettings.workedIndex.pota) layeredWorkedFound++;
- }
- if (huntFound != huntTotal)
- {
- shouldAlert = true;
- callObj.reason.push("pota");
-
- if (rosterSettings.workedIndex && workedFound == huntTotal)
- {
- if (rosterSettings.layeredMode && layeredFound == huntTotal)
- {
- callObj.hunting.pota = "worked-and-mixed";
- potaConf = `${layeredUnconf}${pota}${layeredUnconfAlpha};`;
- potaBg = `${potaBg}${layeredInversionAlpha}`;
- pota = bold;
- }
- else
- {
- callObj.hunting.pota = "worked";
- potaConf = `${unconf}${pota}${inversionAlpha};`;
- }
- }
- else
- {
- if (rosterSettings.layeredMode && layeredFound == huntTotal)
- {
- callObj.hunting.pota = "mixed";
- potaBg = `${pota}${layeredAlpha};`;
- pota = bold;
- }
- else if (rosterSettings.layeredMode && layeredWorkedFound == huntTotal)
- {
- callObj.hunting.pota = "mixed-worked";
- potaConf = `${unconf}${pota}${layeredAlpha};`;
- }
- else
- {
- callObj.hunting.pota = "hunted";
- potaBg = `${pota}${inversionAlpha};`;
- pota = bold;
- }
- }
- }
- }
-
// Hunting for CQ Zones
if (huntCQz.checked == true)
{
let huntTotal = callObj.cqza.length;
- let huntFound = 0, layeredFound = 0, workedFound = 0, layeredWorkedFound = 0, marathonFound = 0;
+ let huntFound = 0, layeredFound = 0, workedFound = 0, layeredWorkedFound = 0;
for (index in callObj.cqza)
{
let hash = callObj.cqza[index] + workHashSuffix;
- let layeredHash = rosterSettings.layeredMode && (callObj.cqza[index] + layeredHashSuffix);
- let marathonHash = huntMarathon.checked && `${callObj.cqza[index]}-${currentYear}`;
+ let layeredHash = rosterSettings.layeredMode && (callObj.cqza[index] + layeredHashSuffix)
if (rosterSettings.huntIndex && hash in rosterSettings.huntIndex.cqz) huntFound++;
if (rosterSettings.layeredMode && layeredHash in rosterSettings.huntIndex.cqz) layeredFound++;
if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.cqz) workedFound++;
if (rosterSettings.layeredMode && layeredHash in rosterSettings.workedIndex.cqz) layeredWorkedFound++;
- if (marathonHash)
- {
- if (rosterSettings.huntIndex && marathonHash in rosterSettings.huntIndex.cqz) marathonFound++;
- else if (rosterSettings.workedIndex && marathonHash in rosterSettings.workedIndex.cqz) marathonFound++;
- }
}
if (huntFound != huntTotal)
{
@@ -597,23 +484,6 @@ function processRosterHunting(callRoster, rosterSettings)
}
}
}
-
- callObj.cqzSuffix = null
- if (huntMarathon.checked && callObj.hunting.cqz != "hunted" && callObj.hunting.cqz != "worked")
- {
- if (marathonFound != huntTotal)
- {
- callObj.reason.push("cqz-marathon");
-
- callObj.cqzSuffix = currentYearSuffix;
-
- callObj.hunting.cqzMarathon = "hunted";
- if (!callObj.hunting.cqz)
- {
- cqzConf = `${unconf}${cqz}${layeredAlpha};`;
- }
- }
- }
}
// Hunting for ITU Zones
@@ -786,13 +656,6 @@ function processRosterHunting(callRoster, rosterSettings)
{
callingBg = calling + inversionAlpha;
calling = bold;
- // If treating RR73/73 as CQ, soften highlighting to help differentiate foreshadow from an actual CQ
- if (callObj.DXcall == "RR73" || callObj.DXcall == "73")
- {
- callingConf = `${unconf}#90EE90${inversionAlpha};`;
- calling = `#90EE90${inversionAlpha};`
- callingBg = "#000000"
- }
}
// Assemble all styles
@@ -803,7 +666,6 @@ function processRosterHunting(callRoster, rosterSettings)
colorObject.dxcc = "style='" + dxccConf + "background-color:" + dxccBg + ";color:" + dxcc + "'";
colorObject.state = "style='" + stateConf + "background-color:" + stateBg + ";color:" + state + "'";
colorObject.cnty = "style='" + cntyConf + "background-color:" + cntyBg + ";color:" + cnty + "'";
- colorObject.pota = "style='" + potaConf + "background-color:" + potaBg + ";color:" + pota + "'";
colorObject.cont = "style='" + contConf + "background-color:" + contBg + ";color:" + cont + "'";
colorObject.cqz = "style='" + cqzConf + "background-color:" + cqzBg + ";color:" + cqz + "'";
colorObject.ituz = "style='" + ituzConf + "background-color:" + ituzBg + ";color:" + ituz + "'";
diff --git a/package.nw/lib/roster/renderRoster.js b/package.nw/lib/roster/renderRoster.js
index 014cc14..1e7ffa7 100644
--- a/package.nw/lib/roster/renderRoster.js
+++ b/package.nw/lib/roster/renderRoster.js
@@ -92,9 +92,14 @@ function renderRoster(callRoster, rosterSettings)
}
window.document.title = `Call Roster: ${countParts.join(" • ")}`;
- if (listShortInstances().length > 0)
+
+ if (g_rosterSettings.compact)
+ {
+ sortCallList(visibleCallList, "Age", false);
+ }
+ else
{
- window.document.title += " | " + listShortInstances().join(" • ");
+ sortCallList(visibleCallList, g_rosterSettings.sortColumn, g_rosterSettings.sortReverse);
}
let showBands = (Object.keys(rosterSettings.bands).length > 1) || g_rosterSettings.columns.Band;
@@ -104,15 +109,6 @@ function renderRoster(callRoster, rosterSettings)
columnOverrides.Mode = showModes
const rosterColumns = rosterColumnList(g_rosterSettings.columns, columnOverrides)
- if (g_rosterSettings.compact)
- {
- sortCallList(visibleCallList, "Age", false, rosterColumns);
- }
- else
- {
- sortCallList(visibleCallList, g_rosterSettings.sortColumn, g_rosterSettings.sortReverse);
- }
-
let worker = g_rosterSettings.compact ? renderCompactRosterHeaders() : renderNormalRosterHeaders(rosterColumns)
// Third loop: render all rows
@@ -124,7 +120,7 @@ function renderRoster(callRoster, rosterSettings)
if (callObj.shouldAlert == false && rosterSettings.onlyHits == true && callObj.qrz == false)
{ continue; }
- if (callObj.DEcall.match("^[KNW][0-9][A-W|Y|Z](/w+)?$"))
+ if (callObj.DEcall.match("^[A-Z][0-9][A-Z](/w+)?$"))
{ callObj.style.call = "class='oneByOne'"; }
if (callObj.DEcall == window.opener.g_instances[callObj.instance].status.DXcall)
{
@@ -142,6 +138,5 @@ function renderRoster(callRoster, rosterSettings)
}
worker += g_rosterSettings.compact ? renderCompactRosterFooter() : renderNormalRosterFooter()
-
RosterTable.innerHTML = worker;
}
diff --git a/package.nw/lib/roster/rosterColumnFunctions.js b/package.nw/lib/roster/rosterColumnFunctions.js
index 93230d2..51d64e0 100644
--- a/package.nw/lib/roster/rosterColumnFunctions.js
+++ b/package.nw/lib/roster/rosterColumnFunctions.js
@@ -12,8 +12,6 @@ function renderHeaderForColumn(column)
let attrs = (columnInfo && columnInfo.tableHeader && columnInfo.tableHeader()) || {}
- attrs.name = column
-
attrs.html = attrs.html || column
if (columnInfo.compare)
@@ -64,20 +62,11 @@ function setRosterSorting(column)
window.opener.goProcessRoster();
}
-function sortCallList(callList, sortColumn, sortReverse, columns)
+function sortCallList(callList, sortColumn, sortReverse)
{
const columnInfo = ROSTER_COLUMNS[sortColumn]
- const comparerList = [
- (columnInfo && columnInfo.compare) || ROSTER_COLUMNS.Age.compare,
- columns && columns.includes("Spot") && ROSTER_COLUMNS.Spot.compare,
- columns && columns.includes("dB") && ROSTER_COLUMNS.dB.compare,
- columns && columns.includes("Age") && ROSTER_COLUMNS.Age.compare,
- columns && columns.includes("Life") && ROSTER_COLUMNS.Life.compare,
- columns && columns.includes("Callsign") && ROSTER_COLUMNS.Callsign.compare
- ]
-
- callList.sort(multiColumnComparer(comparerList))
+ callList.sort((columnInfo && columnInfo.compare) || ROSTER_COLUMNS.Age.compare)
if (sortReverse)
{
@@ -85,36 +74,16 @@ function sortCallList(callList, sortColumn, sortReverse, columns)
}
}
-const multiColumnComparer = (comparers) => (a, b) =>
-{
- let result = 0;
- for (let i in comparers)
- {
- result = comparers[i] && comparers[i](a, b);
- if (result) return result;
- }
- return 0;
-}
-
function validateRosterColumnOrder(columns)
{
let correctedColumnOrder = (columns || DEFAULT_COLUMN_ORDER || []).slice();
- // Aappend columns not included in the suggested list.
DEFAULT_COLUMN_ORDER.forEach(column =>
{
if (!correctedColumnOrder.includes(column)) correctedColumnOrder.push(column);
})
-
- // Exclude any unexpected values
correctedColumnOrder = correctedColumnOrder.filter(column => !!ROSTER_COLUMNS[column])
- // Ensure the first three columns are always the same
- correctedColumnOrder = correctedColumnOrder.filter(column => column != "Callsign" && column != "Band" && column != "Mode");
- correctedColumnOrder.unshift("Mode");
- correctedColumnOrder.unshift("Band");
- correctedColumnOrder.unshift("Callsign");
-
return correctedColumnOrder;
}
@@ -124,15 +93,3 @@ function changeRosterColumnOrder(columns)
writeRosterSettings();
window.opener.goProcessRoster();
}
-
-function moveColumnLeft(column)
-{
- const columns = rosterColumnList(g_rosterSettings.columns, { Callsign: true, Grid: true });
- const pos = columns.indexOf(column);
- if (pos > 1)
- {
- columns[pos] = columns[pos - 1];
- columns[pos - 1] = column;
- }
- changeRosterColumnOrder(columns);
-}
diff --git a/package.nw/lib/roster/rosterColumns.js b/package.nw/lib/roster/rosterColumns.js
index 55a3590..81ae91a 100644
--- a/package.nw/lib/roster/rosterColumns.js
+++ b/package.nw/lib/roster/rosterColumns.js
@@ -1,6 +1,6 @@
const DEFAULT_COLUMN_ORDER = [
- "Callsign", "Band", "Mode", "Calling", "Wanted", "Grid", "Msg",
- "POTA", "DXCC", "Flag", "State", "County", "Cont",
+ "Callsign", "Band", "Mode", "Grid", "Calling", "Msg",
+ "DXCC", "Flag", "State", "County", "Cont",
"dB", "Freq", "DT", "Dist", "Azim",
"CQz", "ITUz", "PX",
"LoTW", "eQSL", "OQRS",
@@ -30,7 +30,6 @@ const getterSimpleComparer = (getter) => (a, b) =>
{
const aVal = getter(a);
const bVal = getter(b);
-
if (aVal == null) return 1;
if (bVal == null) return -1;
if (aVal > bVal) return 1;
@@ -63,7 +62,7 @@ const ROSTER_COLUMNS = {
html: html = callObj.DEcall.formatCallsign()
}
- let acks = window.opener.g_acknowledgedCalls || {};
+ let acks = window.opener.g_acknowledgedCalls;
if (acks[callObj.DEcall])
{
attrs.html = `${attrs.html} <span class='acknowledged'><img class='ackBadge' src='${acks[callObj.DEcall].badge}'></span>`
@@ -117,9 +116,9 @@ const ROSTER_COLUMNS = {
compare: (a, b) => window.opener.myDxccCompare(a.callObj, b.callObj),
tableData: (callObj) => ({
title: window.opener.g_worldGeoData[window.opener.g_dxccToGeoData[callObj.dxcc]].pp,
- name: `${callObj.dxcc}`,
+ name: `DXCC (${callObj.dxcc})`,
rawAttrs: callObj.style.dxcc,
- html: [window.opener.g_dxccToAltName[callObj.dxcc], callObj.dxccSuffix].join("&nbsp;")
+ html: window.opener.g_dxccToAltName[callObj.dxcc]
})
},
@@ -216,7 +215,7 @@ const ROSTER_COLUMNS = {
tableData: (callObj) => ({
name: "CQz",
rawAttrs: callObj.style.cqz,
- html: [callObj.cqza.join(","), callObj.cqzSuffix].join("&nbsp;")
+ html: callObj.cqza.join(",")
})
},
@@ -375,104 +374,5 @@ const ROSTER_COLUMNS = {
id: `sp${callObj.hash}`,
html: getSpotString(callObj)
})
- },
-
- POTA: {
- compare: false,
- tableData: (callObj) => ({
- name: "POTA",
- rawAttrs: callObj.style.pota,
- title: callObj.pota ? callObj.pota.name : "",
- html: callObj.pota ? callObj.pota.reference : ""
- })
- },
-
- Wanted: {
- compare: (a, b) => wantedColumnComparer(a.callObj, b.callObj),
- tableData: (callObj) => ({
- class: "wantedCol",
- title: wantedColumnParts(callObj).map(entry => `• ${entry}`).join("\n"),
- html: wantedColumnParts(callObj).join(" - ", { html: true })
- })
}
}
-
-WANTED_ORDER = ["call", "qrz", "cont", "dxcc", "cqz", "ituz", "dxccMarathon", "cqzMarathon", "state", "pota", "grid", "cnty", "wpx", "oams"];
-WANTED_LABELS = {
- cont: "Continent",
- cqz: "CQ Zone",
- ituz: "ITU Zone",
- dxcc: "DXCC",
- dxccMarathon: "Marathon DXCC",
- cqzMarathon: "Marathon CQ Zone",
- state: "State",
- grid: "Grid",
- cnty: "County",
- wpx: "WPX",
- call: "Call",
- oams: "OAMS",
- pota: "POTA"
-}
-
-function wantedColumnParts(callObj, options)
-{
- options = options || {};
-
- if (!callObj.hunting) return [];
-
- let parts = [];
-
- WANTED_ORDER.forEach(field =>
- {
- let wanted = callObj.hunting[field];
-
- if (wanted == "calling") { parts.push("Calling"); }
- // else if (wanted == "caller") { parts.push("Called"); }
- else if (wanted == "hunted" && field == "qrz") { parts.push("Caller"); }
- else if (wanted == "hunted" && field == "oams") { parts.push("OAMS User"); }
- else if (wanted == "hunted") { parts.push(`${options.html ? "<b>" : ""}New ${WANTED_LABELS[field]}${options.html ? "<b>" : ""}`); }
- else if (wanted == "worked") { parts.push(`Worked ${WANTED_LABELS[field]}`); }
- else if (wanted == "mixed") { parts.push(`${callObj.band} ${WANTED_LABELS[field]}`); }
- else if (wanted == "mixed-worked") { parts.push(`${callObj.band} ${WANTED_LABELS[field]}`); parts.push(`Worked ${WANTED_LABELS[field]}`); }
- else if (wanted == "worked-and-mixed") { parts.push(`Worked ${callObj.band} ${WANTED_LABELS[field]}`); }
- })
-
- if (parts[0] == "Calling" && parts[1] == "Caller")
- {
- parts.shift(); parts.shift();
- parts.unshift(`${options.html ? "<b>" : ""}Working${options.html ? "<b>" : ""}`);
- }
-
- return parts;
-}
-
-function wantedColumnWeighter(callObj, field)
-{
- let wanted = callObj.hunting[field];
-
- // We use negative numbers so that sorting is "reversed" by default, placing most interesting items up top.
- if (wanted == "calling" || wanted == "caller") return -10;
- else if (wanted == "hunted") return -5;
- else if (wanted == "worked") return -4;
- else if (wanted == "mixed") return -3;
- else if (wanted == "mixed-worked") return -2;
- else if (wanted == "worked-and-mixed") return -1;
- else return 0;
-}
-
-function wantedColumnComparer(a, b)
-{
- if (!a.hunting) return 1;
- if (!b.hunting) return -1;
-
- for (const index in WANTED_ORDER)
- {
- const field = WANTED_ORDER[index];
- const aWeight = wantedColumnWeighter(a, field);
- const bWeight = wantedColumnWeighter(b, field);
-
- if (aWeight < bWeight) return 1;
- if (aWeight > bWeight) return -1;
- }
- return 0;
-}
diff --git a/package.nw/lib/roster/sendAlerts.js b/package.nw/lib/roster/sendAlerts.js
index f799c68..c041dfb 100644
--- a/package.nw/lib/roster/sendAlerts.js
+++ b/package.nw/lib/roster/sendAlerts.js
@@ -76,8 +76,8 @@ function sendAlerts(callRoster, rosterSettings)
scriptIcon.innerHTML =
"<div class='buttonScript' onclick='window.opener.toggleCRScript();'>" +
(window.opener.g_crScript == 1
- ? "<font color='lightgreen'>Script Enabled</font>"
- : "<font color='yellow'>Script Disabled</font>") +
+ ? "<font color='lightgreen'><3E><><EFBFBD>ýű<C3BD></font>"
+ : "<font color='yellow'><3E><><EFBFBD>رսű<D5BD></font>") +
"</div>";
scriptIcon.style.display = "block";
}