"sent 1153 bytes to 127.0.0.1:2250" and nothing in Logger32. Both true: the
line the operator screenshotted is titled "Setup additional WSJT/JTDX UDP
sockets", and those receivers take UDP LOGGING PACKETS — the WSJT-X v2
protocol. A bare ADIF record posted to them is dropped without a word.
So there is a new outbound service rather than a change to the existing one:
"WSJT-X logged QSO (Logger32)" sends the same ADIF wrapped in a Logged ADIF
datagram (magic 0xadbccbda, schema 2, type 12), defaulting to port 2250. The
plain-text row stays for JTAlert/GridTracker-style receivers, because the two
really are different wire formats and one row cannot be both.
The id string is "OpsLog", not "WSJT-X": a receiver uses it to tell instances
apart, and impersonating the real thing would make a second WSJT-X
indistinguishable from us.
Tested both ways — the header byte for byte, and a round trip back through our
own ParseWSJT, since that is the same decoding every receiver applies.
Sahara moves to the parchment an operator asked for: page #e6ded0, panels
#f3eee2, toolbars #ded5c4, terracotta #c4501e on the buttons and the focus
ring. Lighter and less saturated than the deep sand it was.
"UDP: an ADIF listener sharing a port with a WSJT source logged a line per decode — hundreds of them. It now says what the traffic really is, once, and how to fix it.",
"UDP: an ADIF listener sharing a port with a WSJT source logged a line per decode — hundreds of them. It now says what the traffic really is, once, and how to fix it.",
"QSL Manager, paper QSL: the route is set per direction — bureau, direct or electronic, beside the sent status and beside the received one — and applies to the whole selection at once.",
"QSL Manager, paper QSL: the route is set per direction — bureau, direct or electronic, beside the sent status and beside the received one — and applies to the whole selection at once.",
"Motorized antenna: when the controller settles somewhere other than where it was told, the log says so — that reads as “the antenna stopped responding” otherwise.",
"Motorized antenna: when the controller settles somewhere other than where it was told, the log says so — that reads as “the antenna stopped responding” otherwise.",
"UDP: an outbound message now logs that it was sent, and a logged QSO with no outbound ADIF row configured says so once."
"UDP: an outbound message now logs that it was sent, and a logged QSO with no outbound ADIF row configured says so once.",
"UDP: new outbound “WSJT-X logged QSO” for Logger32 — its extra UDP sockets speak the WSJT-X protocol and silently ignore plain-text ADIF.",
"Appearance: the Sahara theme is lighter, parchment rather than deep sand, with a terracotta accent."
],
],
"fr":[
"fr":[
"Envoi de spot : le commentaire porte désormais les références de diplôme après le mode — celles que vous avez attribuées (POTA, SOTA, IOTA…), pas le DXCC, la zone et le préfixe que chacun déduit de l’indicatif. Un auto-spot porte VOS références d’activation.",
"Envoi de spot : le commentaire porte désormais les références de diplôme après le mode — celles que vous avez attribuées (POTA, SOTA, IOTA…), pas le DXCC, la zone et le préfixe que chacun déduit de l’indicatif. Un auto-spot porte VOS références d’activation.",
@@ -22,7 +24,9 @@
"UDP : un écouteur ADIF partageant un port avec une source WSJT écrivait une ligne par décodage — des centaines. Il dit maintenant ce qu’est vraiment ce trafic, une fois, et comment le corriger.",
"UDP : un écouteur ADIF partageant un port avec une source WSJT écrivait une ligne par décodage — des centaines. Il dit maintenant ce qu’est vraiment ce trafic, une fois, et comment le corriger.",
"Gestionnaire QSL, QSL papier : la voie se règle par sens — bureau, direct ou électronique, à côté du statut envoyé et à côté du statut reçu — et s’applique à toute la sélection d’un coup.",
"Gestionnaire QSL, QSL papier : la voie se règle par sens — bureau, direct ou électronique, à côté du statut envoyé et à côté du statut reçu — et s’applique à toute la sélection d’un coup.",
"Antenne motorisée : quand le contrôleur se fixe ailleurs que là où on l’a envoyé, le journal le dit — sans quoi cela ressemble à une antenne qui ne répond plus.",
"Antenne motorisée : quand le contrôleur se fixe ailleurs que là où on l’a envoyé, le journal le dit — sans quoi cela ressemble à une antenne qui ne répond plus.",
"UDP : un message sortant inscrit désormais son envoi dans le journal, et un QSO enregistré sans ligne ADIF sortante le signale une fois."
"UDP : un message sortant inscrit désormais son envoi dans le journal, et un QSO enregistré sans ligne ADIF sortante le signale une fois.",
"UDP : nouvelle sortie « QSO enregistré WSJT-X » pour Logger32 — ses sockets UDP supplémentaires parlent le protocole WSJT-X et ignorent l’ADIF en texte brut.",
"Apparence : le thème Sahara s’éclaircit, parchemin plutôt que sable profond, avec un accent terre cuite."
'altm.filterPh':'Filter…','altm.noMatch':'no match','altm.noneAll':'none selected = ALL','altm.nSelected':'{n} selected','altm.giveName':'Give the rule a name','altm.deleteConfirm':'Delete alert "{name}"?','altm.title':'Alert management','altm.desc':'Alert when a spot matches a rule. Empty filters = ANY; the filters you set are ANDed (e.g. France + 20m = French stations on 20m).','altm.rules':'Rules','altm.noRules':'No rules yet — click +','altm.emailTo':'Alert e-mail to','altm.selectOrCreate':'Select or create a rule.','altm.tabDef':'Definition','altm.tabCall':'Call / DXCC','altm.tabBandMode':'Band / Mode','altm.tabOrigin':'Origin','altm.ruleName':'Rule name','altm.alertEnabled':'Alert enabled','altm.againAfter':'Alert again after (min)','altm.againHint':'0 = once/session · -1 = always','altm.actions':'Actions','altm.visual':'Visual','altm.sound':'Sound','altm.email':'E-mail','altm.skipWorked':'Skip calls already worked (same band + mode)','altm.callsigns':'Callsigns (one per line, wildcards: IW3*, */P)','altm.countries':'Countries (DXCC)','altm.continents':'Continents','altm.bands':'Bands','altm.modes':'Modes','altm.spotterCall':'Spotter callsign (wildcard)','altm.spotterCallPh':'e.g. F* or DL1ABC','altm.spotterContinents':'Spotter continents','altm.spotterCountries':'Spotter countries','altm.delete':'Delete','altm.saveRule':'Save rule','altm.close':'Close',
'altm.filterPh':'Filter…','altm.noMatch':'no match','altm.noneAll':'none selected = ALL','altm.nSelected':'{n} selected','altm.giveName':'Give the rule a name','altm.deleteConfirm':'Delete alert "{name}"?','altm.title':'Alert management','altm.desc':'Alert when a spot matches a rule. Empty filters = ANY; the filters you set are ANDed (e.g. France + 20m = French stations on 20m).','altm.rules':'Rules','altm.noRules':'No rules yet — click +','altm.emailTo':'Alert e-mail to','altm.selectOrCreate':'Select or create a rule.','altm.tabDef':'Definition','altm.tabCall':'Call / DXCC','altm.tabBandMode':'Band / Mode','altm.tabOrigin':'Origin','altm.ruleName':'Rule name','altm.alertEnabled':'Alert enabled','altm.againAfter':'Alert again after (min)','altm.againHint':'0 = once/session · -1 = always','altm.actions':'Actions','altm.visual':'Visual','altm.sound':'Sound','altm.email':'E-mail','altm.skipWorked':'Skip calls already worked (same band + mode)','altm.callsigns':'Callsigns (one per line, wildcards: IW3*, */P)','altm.countries':'Countries (DXCC)','altm.continents':'Continents','altm.bands':'Bands','altm.modes':'Modes','altm.spotterCall':'Spotter callsign (wildcard)','altm.spotterCallPh':'e.g. F* or DL1ABC','altm.spotterContinents':'Spotter continents','altm.spotterCountries':'Spotter countries','altm.delete':'Delete','altm.saveRule':'Save rule','altm.close':'Close',
'ncp.newNetPrompt':'New NET name:','ncp.renamePrompt':'Rename NET:','ncp.deleteConfirm':'Delete NET "{name}" and its roster? This cannot be undone.','ncp.closeConfirm':"{n} station(s) still on the air will be dropped WITHOUT logging. Close anyway?",'ncp.removeConfirm':"Remove {n} station(s) from this NET's roster?",'ncp.colCallsign':'Callsign','ncp.colName':'Name','ncp.colTimeOn':'Time on','ncp.colBand':'Band','ncp.colMode':'Mode','ncp.colComment':'Comment','ncp.colCountry':'Country','ncp.colDate':'Date','ncp.workedBefore':'Worked before','ncp.wbHint':'Click a station (on air or roster) to see prior QSOs','ncp.wbNone':'No prior QSO with','ncp.wbFirst':'first','ncp.wbLast':'last','ncp.wbResize':'Drag to resize','ncp.newNet':'New NET','ncp.closeToSwitch':'Close the NET to switch','ncp.selectNetTitle':'Select a NET','ncp.selectNetOption':'— select a NET —','ncp.closeNet':'Close NET','ncp.openNet':'Open NET','ncp.rename':'Rename','ncp.delete':'Delete','ncp.netOpenBadge':'NET OPEN','ncp.onAir':'On air:','ncp.roster':'Roster:','ncp.onAirActive':'On air — active QSOs','ncp.activeHint':'mic-pass order · ⬆⬇ to reorder · double-click → edit · "Log & end" to save','ncp.moveUp':'Move up the mic-pass order','ncp.moveDown':'Move down the mic-pass order','ncp.logEndSelected':'Log & end selected','ncp.logAll':'Log everyone ({n})','ncp.logAllConfirm':'Log all {n} on-air station(s) to the logbook?','ncp.netUsersRoster':'NET users — roster','ncp.rosterHint':'double-click → put on air','ncp.addContact':'Add contact','ncp.remove':'Remove','ncp.putOnAir':'Put selected on air','ncp.addContactTitle':'Add contact to NET','ncp.addContactDesc':"Saved in this NET's roster (reused next time you open it).",'ncp.callsign':'Callsign','ncp.search':'Search','ncp.name':'Name','ncp.country':'Country','ncp.cancel':'Cancel','ncp.saveInNet':'Save in NET',
'ncp.newNetPrompt':'New NET name:','ncp.renamePrompt':'Rename NET:','ncp.deleteConfirm':'Delete NET "{name}" and its roster? This cannot be undone.','ncp.closeConfirm':"{n} station(s) still on the air will be dropped WITHOUT logging. Close anyway?",'ncp.removeConfirm':"Remove {n} station(s) from this NET's roster?",'ncp.colCallsign':'Callsign','ncp.colName':'Name','ncp.colTimeOn':'Time on','ncp.colBand':'Band','ncp.colMode':'Mode','ncp.colComment':'Comment','ncp.colCountry':'Country','ncp.colDate':'Date','ncp.workedBefore':'Worked before','ncp.wbHint':'Click a station (on air or roster) to see prior QSOs','ncp.wbNone':'No prior QSO with','ncp.wbFirst':'first','ncp.wbLast':'last','ncp.wbResize':'Drag to resize','ncp.newNet':'New NET','ncp.closeToSwitch':'Close the NET to switch','ncp.selectNetTitle':'Select a NET','ncp.selectNetOption':'— select a NET —','ncp.closeNet':'Close NET','ncp.openNet':'Open NET','ncp.rename':'Rename','ncp.delete':'Delete','ncp.netOpenBadge':'NET OPEN','ncp.onAir':'On air:','ncp.roster':'Roster:','ncp.onAirActive':'On air — active QSOs','ncp.activeHint':'mic-pass order · ⬆⬇ to reorder · double-click → edit · "Log & end" to save','ncp.moveUp':'Move up the mic-pass order','ncp.moveDown':'Move down the mic-pass order','ncp.logEndSelected':'Log & end selected','ncp.logAll':'Log everyone ({n})','ncp.logAllConfirm':'Log all {n} on-air station(s) to the logbook?','ncp.netUsersRoster':'NET users — roster','ncp.rosterHint':'double-click → put on air','ncp.addContact':'Add contact','ncp.remove':'Remove','ncp.putOnAir':'Put selected on air','ncp.addContactTitle':'Add contact to NET','ncp.addContactDesc':"Saved in this NET's roster (reused next time you open it).",'ncp.callsign':'Callsign','ncp.search':'Search','ncp.name':'Name','ncp.country':'Country','ncp.cancel':'Cancel','ncp.saveInNet':'Save in NET',
'udpp.svcWsjtLabel':'WSJT-X / JTDX / MSHV','udpp.svcWsjtHint':'Auto-logs FT8/FT4/etc. QSOs and fills the entry callsign live.','udpp.svcAdifLabel':'ADIF message (JTAlert, GridTracker)','udpp.svcAdifHint':'Receives a single ADIF record per packet and logs it.','udpp.svcN1mmLabel':'N1MM Logger+ (contest XML)','udpp.svcN1mmHint':'Receives contest QSOs as XML messages.','udpp.svcRemoteLabel':'Remote callsign (DXHunter, custom)','udpp.svcRemoteHint':'A short text packet containing just a callsign — fills the entry field.','udpp.svcDbLabel':'ADIF Message','udpp.svcDbHint':'Sends the ADIF of every QSO you log to a remote listener (Cloudlog UDP, N1MM, …).','udpp.svcPstLabel':'PstRotator frequency','udpp.svcPstHint':'Sends the rig frequency as <PST><FREQUENCY> whenever it changes — set PstRotatorAz tracker to DXLog.net (default port 12040).','udpp.svcN1mmRadioLabel':'N1MM RadioInfo (freq + mode)','udpp.svcN1mmRadioHint':'Broadcasts the rig frequency/mode as N1MM Logger+ RadioInfo XML on every change — consumed by PstRotator (N1MM tracker) and many other tools.','udpp.deleteConfirm':'Delete this UDP connection?','udpp.loading':'Loading…','udpp.intro':'UDP connections let OpsLog talk to other ham radio software. Inbound connections receive QSOs or callsigns and update the logbook live; outbound connections notify other apps when you log a QSO locally. Enable multicast to share a port with another listener without conflict — required for the typical WSJT-X 2237 setup.','udpp.inboundTitle':'Inbound — OpsLog listens','udpp.outboundTitle':'Outbound — OpsLog sends','udpp.reloadAll':'Reload all','udpp.reloadHint':'Restarts every enabled listener after a manual change.','udpp.add':'Add','udpp.noConnection':'No connection.','udpp.unnamed':'(unnamed)','udpp.dialogTitle':'{action} {direction} connection','udpp.new':'New','udpp.edit':'Edit','udpp.directionInbound':'inbound','udpp.directionOutbound':'outbound','udpp.name':'Name','udpp.namePhInbound':'WSJT-X log','udpp.namePhOutbound':'Cloudlog notify','udpp.serviceType':'Service type','udpp.port':'Port','udpp.multicast':'Multicast','udpp.multicastGroup':'Multicast group','udpp.multicastHint':'Use the same group address as the sending app. WSJT-X default is 224.0.0.1.','udpp.destinationIp':'Destination IP','udpp.enabled':'Enabled','udpp.cancel':'Cancel','udpp.save':'Save',
'udpp.svcWsjtLabel':'WSJT-X / JTDX / MSHV','udpp.svcWsjtHint':'Auto-logs FT8/FT4/etc. QSOs and fills the entry callsign live.','udpp.svcAdifLabel':'ADIF message (JTAlert, GridTracker)','udpp.svcAdifHint':'Receives a single ADIF record per packet and logs it.','udpp.svcN1mmLabel':'N1MM Logger+ (contest XML)','udpp.svcN1mmHint':'Receives contest QSOs as XML messages.','udpp.svcRemoteLabel':'Remote callsign (DXHunter, custom)','udpp.svcRemoteHint':'A short text packet containing just a callsign — fills the entry field.','udpp.svcWsjtLogLabel':'WSJT-X logged QSO (Logger32)','udpp.svcWsjtLogHint':'The same ADIF, wrapped in the WSJT-X protocol. Use this for Logger32’s additional UDP sockets (2250/2251/2252), which ignore plain-text ADIF.','udpp.svcDbLabel':'ADIF Message','udpp.svcDbHint':'Sends the ADIF of every QSO you log to a remote listener (Cloudlog UDP, N1MM, …).','udpp.svcPstLabel':'PstRotator frequency','udpp.svcPstHint':'Sends the rig frequency as <PST><FREQUENCY> whenever it changes — set PstRotatorAz tracker to DXLog.net (default port 12040).','udpp.svcN1mmRadioLabel':'N1MM RadioInfo (freq + mode)','udpp.svcN1mmRadioHint':'Broadcasts the rig frequency/mode as N1MM Logger+ RadioInfo XML on every change — consumed by PstRotator (N1MM tracker) and many other tools.','udpp.deleteConfirm':'Delete this UDP connection?','udpp.loading':'Loading…','udpp.intro':'UDP connections let OpsLog talk to other ham radio software. Inbound connections receive QSOs or callsigns and update the logbook live; outbound connections notify other apps when you log a QSO locally. Enable multicast to share a port with another listener without conflict — required for the typical WSJT-X 2237 setup.','udpp.inboundTitle':'Inbound — OpsLog listens','udpp.outboundTitle':'Outbound — OpsLog sends','udpp.reloadAll':'Reload all','udpp.reloadHint':'Restarts every enabled listener after a manual change.','udpp.add':'Add','udpp.noConnection':'No connection.','udpp.unnamed':'(unnamed)','udpp.dialogTitle':'{action} {direction} connection','udpp.new':'New','udpp.edit':'Edit','udpp.directionInbound':'inbound','udpp.directionOutbound':'outbound','udpp.name':'Name','udpp.namePhInbound':'WSJT-X log','udpp.namePhOutbound':'Cloudlog notify','udpp.serviceType':'Service type','udpp.port':'Port','udpp.multicast':'Multicast','udpp.multicastGroup':'Multicast group','udpp.multicastHint':'Use the same group address as the sending app. WSJT-X default is 224.0.0.1.','udpp.destinationIp':'Destination IP','udpp.enabled':'Enabled','udpp.cancel':'Cancel','udpp.save':'Save',
'fltb.fCallsign':'Callsign','fltb.fDate':'Date / time (UTC)','fltb.fEndDate':'End date / time','fltb.fBand':'Band','fltb.fRxBand':'RX band','fltb.fMode':'Mode','fltb.fSubmode':'Submode','fltb.fFreq':'Frequency (Hz)','fltb.fRxFreq':'RX frequency (Hz)','fltb.fRstSent':'RST sent','fltb.fRstRcvd':'RST rcvd','fltb.fName':'Name','fltb.fQth':'QTH','fltb.fAddress':'Address','fltb.fEmail':'E-mail','fltb.fGrid':'Grid','fltb.fCountry':'Country','fltb.fState':'State','fltb.fCounty':'County','fltb.fDxcc':'DXCC #','fltb.fContinent':'Continent','fltb.fCqz':'CQ zone','fltb.fItuz':'ITU zone','fltb.fIota':'IOTA','fltb.fSota':'SOTA ref','fltb.fPota':'POTA ref','fltb.fWwff':'WWFF ref','fltb.fRig':'Rig','fltb.fAntenna':'Antenna','fltb.fQslSent':'Paper QSL sent status','fltb.fQslSentDate':'Paper QSL sent date','fltb.fQslRcvd':'Paper QSL received status','fltb.fQslRcvdDate':'Paper QSL received date','fltb.fQslSentVia':'QSL sent via','fltb.fQslRcvdVia':'QSL rcvd via','fltb.fQslVia':'QSL via','fltb.fLotwSent':'LoTW sent status','fltb.fLotwSentDate':'LoTW sent date','fltb.fLotwRcvd':'LoTW received status','fltb.fLotwRcvdDate':'LoTW received date','fltb.fEqslSent':'eQSL sent status','fltb.fEqslSentDate':'eQSL sent date','fltb.fEqslRcvd':'eQSL received status','fltb.fEqslRcvdDate':'eQSL received date','fltb.fQrzSent':'QRZ.com sent status','fltb.fQrzSentDate':'QRZ.com sent date','fltb.fQrzRcvd':'QRZ.com received status','fltb.fQrzRcvdDate':'QRZ.com received date','fltb.fClublogSent':'Club Log sent status','fltb.fClublogSentDate':'Club Log sent date','fltb.fHrdlogSent':'HRDLog sent status','fltb.fHrdlogSentDate':'HRDLog sent date','fltb.fContestId':'Contest ID','fltb.fSerialRcvd':'Serial rcvd','fltb.fSerialSent':'Serial sent','fltb.fPropMode':'Propagation mode','fltb.fSatellite':'Satellite','fltb.fMyCallsign':'Station callsign (my call)','fltb.fOperator':'Operator','fltb.fOwnerCallsign':'Owner callsign','fltb.fMyGrid':'My grid','fltb.fMyCountry':'My country','fltb.fMyState':'My state','fltb.fMyCounty':'My county','fltb.fMyIota':'My IOTA','fltb.fMySota':'My SOTA ref','fltb.fMyPota':'My POTA ref','fltb.fMyWwff':'My WWFF ref','fltb.fMyStreet':'My street','fltb.fMyCity':'My city','fltb.fMyPostal':'My postal code','fltb.fMyRig':'My rig','fltb.fMyAntenna':'My antenna','fltb.fTxPower':'TX power (W)','fltb.fComment':'Comment','fltb.fNotes':'Notes','fltb.opEq':'equals (=)','fltb.opNe':'not equal (≠)','fltb.opContains':'contains','fltb.opStartsWith':'starts with','fltb.opEndsWith':'ends with','fltb.opGt':'greater than (>)','fltb.opLt':'less than (<)','fltb.opGe':'greater or equal (≥)','fltb.opLe':'less or equal (≤)','fltb.opEmpty':'is empty','fltb.opIn':'is one of','fltb.opNotIn':'is none of','fltb.listPh':'2m, 70cm — comma separated','fltb.opNotEmpty':'is not empty','fltb.title':'QSO filter','fltb.match':'Match','fltb.all':'ALL (AND)','fltb.any':'ANY (OR)','fltb.loadPreset':'Load preset…','fltb.noConditions':'No conditions — the list shows all QSOs. Add one below.','fltb.where':'WHERE','fltb.valuePh':'value','fltb.remove':'Remove','fltb.addCondition':'Add condition','fltb.presetNamePh':'Preset name…','fltb.savePreset':'Save preset','fltb.clear':'Clear','fltb.cancel':'Cancel','fltb.applyClose':'Apply & close',
'fltb.fCallsign':'Callsign','fltb.fDate':'Date / time (UTC)','fltb.fEndDate':'End date / time','fltb.fBand':'Band','fltb.fRxBand':'RX band','fltb.fMode':'Mode','fltb.fSubmode':'Submode','fltb.fFreq':'Frequency (Hz)','fltb.fRxFreq':'RX frequency (Hz)','fltb.fRstSent':'RST sent','fltb.fRstRcvd':'RST rcvd','fltb.fName':'Name','fltb.fQth':'QTH','fltb.fAddress':'Address','fltb.fEmail':'E-mail','fltb.fGrid':'Grid','fltb.fCountry':'Country','fltb.fState':'State','fltb.fCounty':'County','fltb.fDxcc':'DXCC #','fltb.fContinent':'Continent','fltb.fCqz':'CQ zone','fltb.fItuz':'ITU zone','fltb.fIota':'IOTA','fltb.fSota':'SOTA ref','fltb.fPota':'POTA ref','fltb.fWwff':'WWFF ref','fltb.fRig':'Rig','fltb.fAntenna':'Antenna','fltb.fQslSent':'Paper QSL sent status','fltb.fQslSentDate':'Paper QSL sent date','fltb.fQslRcvd':'Paper QSL received status','fltb.fQslRcvdDate':'Paper QSL received date','fltb.fQslSentVia':'QSL sent via','fltb.fQslRcvdVia':'QSL rcvd via','fltb.fQslVia':'QSL via','fltb.fLotwSent':'LoTW sent status','fltb.fLotwSentDate':'LoTW sent date','fltb.fLotwRcvd':'LoTW received status','fltb.fLotwRcvdDate':'LoTW received date','fltb.fEqslSent':'eQSL sent status','fltb.fEqslSentDate':'eQSL sent date','fltb.fEqslRcvd':'eQSL received status','fltb.fEqslRcvdDate':'eQSL received date','fltb.fQrzSent':'QRZ.com sent status','fltb.fQrzSentDate':'QRZ.com sent date','fltb.fQrzRcvd':'QRZ.com received status','fltb.fQrzRcvdDate':'QRZ.com received date','fltb.fClublogSent':'Club Log sent status','fltb.fClublogSentDate':'Club Log sent date','fltb.fHrdlogSent':'HRDLog sent status','fltb.fHrdlogSentDate':'HRDLog sent date','fltb.fContestId':'Contest ID','fltb.fSerialRcvd':'Serial rcvd','fltb.fSerialSent':'Serial sent','fltb.fPropMode':'Propagation mode','fltb.fSatellite':'Satellite','fltb.fMyCallsign':'Station callsign (my call)','fltb.fOperator':'Operator','fltb.fOwnerCallsign':'Owner callsign','fltb.fMyGrid':'My grid','fltb.fMyCountry':'My country','fltb.fMyState':'My state','fltb.fMyCounty':'My county','fltb.fMyIota':'My IOTA','fltb.fMySota':'My SOTA ref','fltb.fMyPota':'My POTA ref','fltb.fMyWwff':'My WWFF ref','fltb.fMyStreet':'My street','fltb.fMyCity':'My city','fltb.fMyPostal':'My postal code','fltb.fMyRig':'My rig','fltb.fMyAntenna':'My antenna','fltb.fTxPower':'TX power (W)','fltb.fComment':'Comment','fltb.fNotes':'Notes','fltb.opEq':'equals (=)','fltb.opNe':'not equal (≠)','fltb.opContains':'contains','fltb.opStartsWith':'starts with','fltb.opEndsWith':'ends with','fltb.opGt':'greater than (>)','fltb.opLt':'less than (<)','fltb.opGe':'greater or equal (≥)','fltb.opLe':'less or equal (≤)','fltb.opEmpty':'is empty','fltb.opIn':'is one of','fltb.opNotIn':'is none of','fltb.listPh':'2m, 70cm — comma separated','fltb.opNotEmpty':'is not empty','fltb.title':'QSO filter','fltb.match':'Match','fltb.all':'ALL (AND)','fltb.any':'ANY (OR)','fltb.loadPreset':'Load preset…','fltb.noConditions':'No conditions — the list shows all QSOs. Add one below.','fltb.where':'WHERE','fltb.valuePh':'value','fltb.remove':'Remove','fltb.addCondition':'Add condition','fltb.presetNamePh':'Preset name…','fltb.savePreset':'Save preset','fltb.clear':'Clear','fltb.cancel':'Cancel','fltb.applyClose':'Apply & close',
'detp.propAS':'Aircraft Scatter','detp.propAUR':'Aurora','detp.propAUE':'Aurora-E','detp.propBS':'Back Scatter','detp.propEME':'Earth-Moon-Earth','detp.propES':'Sporadic E','detp.propFAI':'Field Aligned Irregularities','detp.propF2':'F2 Reflection','detp.propGWAVE':'Ground Wave','detp.propINTERNET':'Internet-assisted','detp.propION':'Ionoscatter','detp.propLOS':'Line of Sight','detp.propMS':'Meteor Scatter','detp.propRPT':'Terrestrial / atmospheric repeater','detp.propRS':'Rain Scatter','detp.propSAT':'Satellite','detp.propTEP':'Trans-Equatorial','detp.propTR':'Tropospheric Ducting','detp.pathShort':'Short Path','detp.pathLong':'Long Path','detp.pathGrayline':'Grayline','detp.pathOther':'Other','detp.tabStats':'Stats','detp.tabInfo':'Info','detp.tabAwards':'Awards','detp.tabMy':'My','detp.tabExtended':'Extended','detp.statePref':'State / pref','detp.county':'County','detp.newCounty':'NEW','detp.newCountyTip':'County never worked before','detp.prefix':'Prefix','detp.cqZone':'CQ','detp.ituZone':'ITU','detp.dxcc':'DXCC #','detp.azimuthLp':'Azimuth LP','detp.distanceSp':'Distance SP','detp.distanceLp':'Distance LP','detp.address':'Address','detp.qslMessage':'QSL message','detp.qslVia':'QSL via (manager)','detp.detected':'Detected — this contact will count for:','detp.ambiguous':'Ambiguous — pick one:','detp.azimuth':'Azimuth (°)','detp.elevation':'Elevation (°)','detp.txPower':'TX power (W)','detp.satelliteMode':'Satellite mode','detp.antPath':'Ant. path','detp.propagation':'Propagation','detp.rig':'Rig','detp.antenna':'Antenna','detp.satName':'Satellite name','detp.contestId':'Contest ID','detp.rcvdExchangePh':'rcvd exchange','detp.sentExchangePh':'sent exchange','detp.contactedEmail':'Contacted email','detp.contactedWeb':'Website',
'detp.propAS':'Aircraft Scatter','detp.propAUR':'Aurora','detp.propAUE':'Aurora-E','detp.propBS':'Back Scatter','detp.propEME':'Earth-Moon-Earth','detp.propES':'Sporadic E','detp.propFAI':'Field Aligned Irregularities','detp.propF2':'F2 Reflection','detp.propGWAVE':'Ground Wave','detp.propINTERNET':'Internet-assisted','detp.propION':'Ionoscatter','detp.propLOS':'Line of Sight','detp.propMS':'Meteor Scatter','detp.propRPT':'Terrestrial / atmospheric repeater','detp.propRS':'Rain Scatter','detp.propSAT':'Satellite','detp.propTEP':'Trans-Equatorial','detp.propTR':'Tropospheric Ducting','detp.pathShort':'Short Path','detp.pathLong':'Long Path','detp.pathGrayline':'Grayline','detp.pathOther':'Other','detp.tabStats':'Stats','detp.tabInfo':'Info','detp.tabAwards':'Awards','detp.tabMy':'My','detp.tabExtended':'Extended','detp.statePref':'State / pref','detp.county':'County','detp.newCounty':'NEW','detp.newCountyTip':'County never worked before','detp.prefix':'Prefix','detp.cqZone':'CQ','detp.ituZone':'ITU','detp.dxcc':'DXCC #','detp.azimuthLp':'Azimuth LP','detp.distanceSp':'Distance SP','detp.distanceLp':'Distance LP','detp.address':'Address','detp.qslMessage':'QSL message','detp.qslVia':'QSL via (manager)','detp.detected':'Detected — this contact will count for:','detp.ambiguous':'Ambiguous — pick one:','detp.azimuth':'Azimuth (°)','detp.elevation':'Elevation (°)','detp.txPower':'TX power (W)','detp.satelliteMode':'Satellite mode','detp.antPath':'Ant. path','detp.propagation':'Propagation','detp.rig':'Rig','detp.antenna':'Antenna','detp.satName':'Satellite name','detp.contestId':'Contest ID','detp.rcvdExchangePh':'rcvd exchange','detp.sentExchangePh':'sent exchange','detp.contactedEmail':'Contacted email','detp.contactedWeb':'Website',
'altm.filterPh':'Filtrer…','altm.noMatch':'aucun résultat','altm.noneAll':'aucune sélection = TOUT','altm.nSelected':'{n} sélectionné(s)','altm.giveName':'Donne un nom à la règle','altm.deleteConfirm':"Supprimer l'alerte « {name} » ?",'altm.title':'Gestion des alertes','altm.desc':'Alerte quand un spot correspond à une règle. Filtres vides = TOUT ; les filtres définis sont combinés par ET (ex. France + 20m = stations françaises sur 20m).','altm.rules':'Règles','altm.noRules':'Aucune règle — clique sur +','altm.emailTo':"E-mail d'alerte à",'altm.selectOrCreate':'Sélectionne ou crée une règle.','altm.tabDef':'Définition','altm.tabCall':'Indicatif / DXCC','altm.tabBandMode':'Bande / Mode','altm.tabOrigin':'Origine','altm.ruleName':'Nom de la règle','altm.alertEnabled':'Alerte activée','altm.againAfter':'Réalerter après (min)','altm.againHint':'0 = une fois/session · -1 = toujours','altm.actions':'Actions','altm.visual':'Visuel','altm.sound':'Son','altm.email':'E-mail','altm.skipWorked':'Ignorer les indicatifs déjà contactés (même bande + mode)','altm.callsigns':'Indicatifs (un par ligne, jokers : IW3*, */P)','altm.countries':'Pays (DXCC)','altm.continents':'Continents','altm.bands':'Bandes','altm.modes':'Modes','altm.spotterCall':'Indicatif du spotteur (joker)','altm.spotterCallPh':'ex. F* ou DL1ABC','altm.spotterContinents':'Continents du spotteur','altm.spotterCountries':'Pays du spotteur','altm.delete':'Supprimer','altm.saveRule':'Enregistrer la règle','altm.close':'Fermer',
'altm.filterPh':'Filtrer…','altm.noMatch':'aucun résultat','altm.noneAll':'aucune sélection = TOUT','altm.nSelected':'{n} sélectionné(s)','altm.giveName':'Donne un nom à la règle','altm.deleteConfirm':"Supprimer l'alerte « {name} » ?",'altm.title':'Gestion des alertes','altm.desc':'Alerte quand un spot correspond à une règle. Filtres vides = TOUT ; les filtres définis sont combinés par ET (ex. France + 20m = stations françaises sur 20m).','altm.rules':'Règles','altm.noRules':'Aucune règle — clique sur +','altm.emailTo':"E-mail d'alerte à",'altm.selectOrCreate':'Sélectionne ou crée une règle.','altm.tabDef':'Définition','altm.tabCall':'Indicatif / DXCC','altm.tabBandMode':'Bande / Mode','altm.tabOrigin':'Origine','altm.ruleName':'Nom de la règle','altm.alertEnabled':'Alerte activée','altm.againAfter':'Réalerter après (min)','altm.againHint':'0 = une fois/session · -1 = toujours','altm.actions':'Actions','altm.visual':'Visuel','altm.sound':'Son','altm.email':'E-mail','altm.skipWorked':'Ignorer les indicatifs déjà contactés (même bande + mode)','altm.callsigns':'Indicatifs (un par ligne, jokers : IW3*, */P)','altm.countries':'Pays (DXCC)','altm.continents':'Continents','altm.bands':'Bandes','altm.modes':'Modes','altm.spotterCall':'Indicatif du spotteur (joker)','altm.spotterCallPh':'ex. F* ou DL1ABC','altm.spotterContinents':'Continents du spotteur','altm.spotterCountries':'Pays du spotteur','altm.delete':'Supprimer','altm.saveRule':'Enregistrer la règle','altm.close':'Fermer',
'spm.callRequired':'Indicatif requis','spm.freqRequired':'Fréquence (kHz) requise','spm.title':'Envoyer un spot DX','spm.callsign':'Indicatif','spm.callPh':'Indicatif DX','spm.frequency':'Fréquence (kHz)','spm.message':'Message','spm.messagePh':'ex. CW · TNX QSO','spm.latestQsos':'Derniers QSO','spm.spotSent':'Spot envoyé ✓','spm.masterCluster':'Cluster maître','spm.cancel':'Annuler','spm.sending':'Envoi…','spm.sendSpot':'Envoyer le spot',
'spm.callRequired':'Indicatif requis','spm.freqRequired':'Fréquence (kHz) requise','spm.title':'Envoyer un spot DX','spm.callsign':'Indicatif','spm.callPh':'Indicatif DX','spm.frequency':'Fréquence (kHz)','spm.message':'Message','spm.messagePh':'ex. CW · TNX QSO','spm.latestQsos':'Derniers QSO','spm.spotSent':'Spot envoyé ✓','spm.masterCluster':'Cluster maître','spm.cancel':'Annuler','spm.sending':'Envoi…','spm.sendSpot':'Envoyer le spot',
'ncp.newNetPrompt':'Nom du nouveau NET :','ncp.renamePrompt':'Renommer le NET :','ncp.deleteConfirm':'Supprimer le NET « {name} » et son répertoire ? Cette action est irréversible.','ncp.closeConfirm':"{n} station(s) encore en l'air seront retirées SANS être enregistrées. Fermer quand même ?",'ncp.removeConfirm':'Retirer {n} station(s) du répertoire de ce NET ?','ncp.colCallsign':'Indicatif','ncp.colName':'Nom','ncp.colTimeOn':'Heure début','ncp.colBand':'Bande','ncp.colMode':'Mode','ncp.colComment':'Commentaire','ncp.colCountry':'Pays','ncp.colDate':'Date','ncp.workedBefore':'Déjà contacté','ncp.wbHint':'Cliquer une station (on air ou roster) pour voir les QSO précédents','ncp.wbNone':'Aucun QSO précédent avec','ncp.wbFirst':'premier','ncp.wbLast':'dernier','ncp.wbResize':'Glisser pour redimensionner','ncp.newNet':'Nouveau NET','ncp.closeToSwitch':'Ferme le NET pour changer','ncp.selectNetTitle':'Sélectionne un NET','ncp.selectNetOption':'— sélectionner un NET —','ncp.closeNet':'Fermer le NET','ncp.openNet':'Ouvrir le NET','ncp.rename':'Renommer','ncp.delete':'Supprimer','ncp.netOpenBadge':'NET OUVERT','ncp.onAir':"En l'air :",'ncp.roster':'Répertoire :','ncp.onAirActive':"En l'air — QSO actifs",'ncp.activeHint':'ordre de passage du micro · ⬆⬇ pour réordonner · double-clic → éditer · « Logger & terminer »','ncp.moveUp':"Monter dans l'ordre de passage",'ncp.moveDown':"Descendre dans l'ordre de passage",'ncp.logEndSelected':'Logger & terminer la sélection','ncp.logAll':'Logger tout le monde ({n})','ncp.logAllConfirm':'Logger les {n} station(s) on air dans le logbook ?','ncp.netUsersRoster':'Membres du NET — répertoire','ncp.rosterHint':"double-clic → mettre en l'air",'ncp.addContact':'Ajouter un contact','ncp.remove':'Retirer','ncp.putOnAir':"Mettre la sélection en l'air",'ncp.addContactTitle':'Ajouter un contact au NET','ncp.addContactDesc':'Enregistré dans le répertoire de ce NET (réutilisé à la prochaine ouverture).','ncp.callsign':'Indicatif','ncp.search':'Rechercher','ncp.name':'Nom','ncp.country':'Pays','ncp.cancel':'Annuler','ncp.saveInNet':'Enregistrer dans le NET',
'ncp.newNetPrompt':'Nom du nouveau NET :','ncp.renamePrompt':'Renommer le NET :','ncp.deleteConfirm':'Supprimer le NET « {name} » et son répertoire ? Cette action est irréversible.','ncp.closeConfirm':"{n} station(s) encore en l'air seront retirées SANS être enregistrées. Fermer quand même ?",'ncp.removeConfirm':'Retirer {n} station(s) du répertoire de ce NET ?','ncp.colCallsign':'Indicatif','ncp.colName':'Nom','ncp.colTimeOn':'Heure début','ncp.colBand':'Bande','ncp.colMode':'Mode','ncp.colComment':'Commentaire','ncp.colCountry':'Pays','ncp.colDate':'Date','ncp.workedBefore':'Déjà contacté','ncp.wbHint':'Cliquer une station (on air ou roster) pour voir les QSO précédents','ncp.wbNone':'Aucun QSO précédent avec','ncp.wbFirst':'premier','ncp.wbLast':'dernier','ncp.wbResize':'Glisser pour redimensionner','ncp.newNet':'Nouveau NET','ncp.closeToSwitch':'Ferme le NET pour changer','ncp.selectNetTitle':'Sélectionne un NET','ncp.selectNetOption':'— sélectionner un NET —','ncp.closeNet':'Fermer le NET','ncp.openNet':'Ouvrir le NET','ncp.rename':'Renommer','ncp.delete':'Supprimer','ncp.netOpenBadge':'NET OUVERT','ncp.onAir':"En l'air :",'ncp.roster':'Répertoire :','ncp.onAirActive':"En l'air — QSO actifs",'ncp.activeHint':'ordre de passage du micro · ⬆⬇ pour réordonner · double-clic → éditer · « Logger & terminer »','ncp.moveUp':"Monter dans l'ordre de passage",'ncp.moveDown':"Descendre dans l'ordre de passage",'ncp.logEndSelected':'Logger & terminer la sélection','ncp.logAll':'Logger tout le monde ({n})','ncp.logAllConfirm':'Logger les {n} station(s) on air dans le logbook ?','ncp.netUsersRoster':'Membres du NET — répertoire','ncp.rosterHint':"double-clic → mettre en l'air",'ncp.addContact':'Ajouter un contact','ncp.remove':'Retirer','ncp.putOnAir':"Mettre la sélection en l'air",'ncp.addContactTitle':'Ajouter un contact au NET','ncp.addContactDesc':'Enregistré dans le répertoire de ce NET (réutilisé à la prochaine ouverture).','ncp.callsign':'Indicatif','ncp.search':'Rechercher','ncp.name':'Nom','ncp.country':'Pays','ncp.cancel':'Annuler','ncp.saveInNet':'Enregistrer dans le NET',
'udpp.svcWsjtLabel':'WSJT-X / JTDX / MSHV','udpp.svcWsjtHint':"Logue automatiquement les QSO FT8/FT4/etc. et remplit l'indicatif de saisie en direct.",'udpp.svcAdifLabel':'Message ADIF (JTAlert, GridTracker)','udpp.svcAdifHint':'Reçoit un seul enregistrement ADIF par paquet et le logue.','udpp.svcN1mmLabel':'N1MM Logger+ (XML contest)','udpp.svcN1mmHint':'Reçoit les QSO de contest sous forme de messages XML.','udpp.svcRemoteLabel':'Indicatif distant (DXHunter, personnalisé)','udpp.svcRemoteHint':'Un court paquet texte contenant juste un indicatif — remplit le champ de saisie.','udpp.svcDbLabel':"ADIF Message",'udpp.svcDbHint':"Envoie l'ADIF de chaque QSO enregistré vers un écouteur distant (Cloudlog UDP, N1MM…).",'udpp.svcPstLabel':'Fréquence PstRotator','udpp.svcPstHint':"Envoie la fréquence du poste en <PST><FREQUENCY> à chaque changement — règle le tracker de PstRotatorAz sur DXLog.net (port 12040 par défaut).",'udpp.svcN1mmRadioLabel':'N1MM RadioInfo (fréq + mode)','udpp.svcN1mmRadioHint':"Diffuse la fréquence/mode du poste en XML RadioInfo N1MM Logger+ à chaque changement — lu par PstRotator (tracker N1MM) et beaucoup d'autres outils.",'udpp.deleteConfirm':'Supprimer cette connexion UDP ?','udpp.loading':'Chargement…','udpp.intro':"Les connexions UDP permettent à OpsLog de dialoguer avec d'autres logiciels radioamateurs. Les connexions entrantes reçoivent des QSO ou des indicatifs et mettent le journal à jour en direct ; les connexions sortantes notifient d'autres apps quand tu enregistres un QSO localement. Active le multicast pour partager un port avec un autre écouteur sans conflit — nécessaire pour la config WSJT-X 2237 classique.",'udpp.inboundTitle':'Entrant — OpsLog écoute','udpp.outboundTitle':'Sortant — OpsLog envoie','udpp.reloadAll':'Tout recharger','udpp.reloadHint':'Redémarre chaque écouteur activé après une modification manuelle.','udpp.add':'Ajouter','udpp.noConnection':'Aucune connexion.','udpp.unnamed':'(sans nom)','udpp.dialogTitle':'{action} connexion {direction}','udpp.new':'Nouvelle','udpp.edit':'Modifier','udpp.directionInbound':'entrante','udpp.directionOutbound':'sortante','udpp.name':'Nom','udpp.namePhInbound':'Log WSJT-X','udpp.namePhOutbound':'Notification Cloudlog','udpp.serviceType':'Type de service','udpp.port':'Port','udpp.multicast':'Multicast','udpp.multicastGroup':'Groupe multicast','udpp.multicastHint':"Utilise la même adresse de groupe que l'app émettrice. Le défaut WSJT-X est 224.0.0.1.",'udpp.destinationIp':'IP de destination','udpp.enabled':'Activé','udpp.cancel':'Annuler','udpp.save':'Enregistrer',
'udpp.svcWsjtLabel':'WSJT-X / JTDX / MSHV','udpp.svcWsjtHint':"Logue automatiquement les QSO FT8/FT4/etc. et remplit l'indicatif de saisie en direct.",'udpp.svcAdifLabel':'Message ADIF (JTAlert, GridTracker)','udpp.svcAdifHint':'Reçoit un seul enregistrement ADIF par paquet et le logue.','udpp.svcN1mmLabel':'N1MM Logger+ (XML contest)','udpp.svcN1mmHint':'Reçoit les QSO de contest sous forme de messages XML.','udpp.svcRemoteLabel':'Indicatif distant (DXHunter, personnalisé)','udpp.svcRemoteHint':'Un court paquet texte contenant juste un indicatif — remplit le champ de saisie.','udpp.svcWsjtLogLabel':'QSO enregistré WSJT-X (Logger32)','udpp.svcWsjtLogHint':'Le même ADIF, encapsulé dans le protocole WSJT-X. À utiliser pour les sockets UDP supplémentaires de Logger32 (2250/2251/2252), qui ignorent l’ADIF en texte brut.','udpp.svcDbLabel':"ADIF Message",'udpp.svcDbHint':"Envoie l'ADIF de chaque QSO enregistré vers un écouteur distant (Cloudlog UDP, N1MM…).",'udpp.svcPstLabel':'Fréquence PstRotator','udpp.svcPstHint':"Envoie la fréquence du poste en <PST><FREQUENCY> à chaque changement — règle le tracker de PstRotatorAz sur DXLog.net (port 12040 par défaut).",'udpp.svcN1mmRadioLabel':'N1MM RadioInfo (fréq + mode)','udpp.svcN1mmRadioHint':"Diffuse la fréquence/mode du poste en XML RadioInfo N1MM Logger+ à chaque changement — lu par PstRotator (tracker N1MM) et beaucoup d'autres outils.",'udpp.deleteConfirm':'Supprimer cette connexion UDP ?','udpp.loading':'Chargement…','udpp.intro':"Les connexions UDP permettent à OpsLog de dialoguer avec d'autres logiciels radioamateurs. Les connexions entrantes reçoivent des QSO ou des indicatifs et mettent le journal à jour en direct ; les connexions sortantes notifient d'autres apps quand tu enregistres un QSO localement. Active le multicast pour partager un port avec un autre écouteur sans conflit — nécessaire pour la config WSJT-X 2237 classique.",'udpp.inboundTitle':'Entrant — OpsLog écoute','udpp.outboundTitle':'Sortant — OpsLog envoie','udpp.reloadAll':'Tout recharger','udpp.reloadHint':'Redémarre chaque écouteur activé après une modification manuelle.','udpp.add':'Ajouter','udpp.noConnection':'Aucune connexion.','udpp.unnamed':'(sans nom)','udpp.dialogTitle':'{action} connexion {direction}','udpp.new':'Nouvelle','udpp.edit':'Modifier','udpp.directionInbound':'entrante','udpp.directionOutbound':'sortante','udpp.name':'Nom','udpp.namePhInbound':'Log WSJT-X','udpp.namePhOutbound':'Notification Cloudlog','udpp.serviceType':'Type de service','udpp.port':'Port','udpp.multicast':'Multicast','udpp.multicastGroup':'Groupe multicast','udpp.multicastHint':"Utilise la même adresse de groupe que l'app émettrice. Le défaut WSJT-X est 224.0.0.1.",'udpp.destinationIp':'IP de destination','udpp.enabled':'Activé','udpp.cancel':'Annuler','udpp.save':'Enregistrer',
'fltb.fCallsign':'Callsign','fltb.fDate':'Date / time (UTC)','fltb.fEndDate':'End date / time','fltb.fBand':'Band','fltb.fRxBand':'RX band','fltb.fMode':'Mode','fltb.fSubmode':'Submode','fltb.fFreq':'Frequency (Hz)','fltb.fRxFreq':'RX frequency (Hz)','fltb.fRstSent':'RST sent','fltb.fRstRcvd':'RST rcvd','fltb.fName':'Name','fltb.fQth':'QTH','fltb.fAddress':'Address','fltb.fEmail':'E-mail','fltb.fGrid':'Grid','fltb.fCountry':'Country','fltb.fState':'State','fltb.fCounty':'County','fltb.fDxcc':'DXCC #','fltb.fContinent':'Continent','fltb.fCqz':'CQ zone','fltb.fItuz':'ITU zone','fltb.fIota':'IOTA','fltb.fSota':'SOTA ref','fltb.fPota':'POTA ref','fltb.fWwff':'WWFF ref','fltb.fRig':'Rig','fltb.fAntenna':'Antenna','fltb.fQslSent':'Paper QSL sent status','fltb.fQslSentDate':'Paper QSL sent date','fltb.fQslRcvd':'Paper QSL received status','fltb.fQslRcvdDate':'Paper QSL received date','fltb.fQslSentVia':'QSL envoyée via','fltb.fQslRcvdVia':'QSL reçue via','fltb.fQslVia':'QSL via','fltb.fLotwSent':'LoTW sent status','fltb.fLotwSentDate':'LoTW sent date','fltb.fLotwRcvd':'LoTW received status','fltb.fLotwRcvdDate':'LoTW received date','fltb.fEqslSent':'eQSL sent status','fltb.fEqslSentDate':'eQSL sent date','fltb.fEqslRcvd':'eQSL received status','fltb.fEqslRcvdDate':'eQSL received date','fltb.fQrzSent':'QRZ.com sent status','fltb.fQrzSentDate':'QRZ.com sent date','fltb.fQrzRcvd':'QRZ.com received status','fltb.fQrzRcvdDate':'QRZ.com received date','fltb.fClublogSent':'Club Log sent status','fltb.fClublogSentDate':'Club Log sent date','fltb.fHrdlogSent':'HRDLog sent status','fltb.fHrdlogSentDate':'HRDLog sent date','fltb.fContestId':'Contest ID','fltb.fSerialRcvd':'Serial rcvd','fltb.fSerialSent':'Serial sent','fltb.fPropMode':'Propagation mode','fltb.fSatellite':'Satellite','fltb.fMyCallsign':'Station callsign (my call)','fltb.fOperator':'Operator','fltb.fOwnerCallsign':'Owner callsign','fltb.fMyGrid':'My grid','fltb.fMyCountry':'My country','fltb.fMyState':'My state','fltb.fMyCounty':'My county','fltb.fMyIota':'My IOTA','fltb.fMySota':'My SOTA ref','fltb.fMyPota':'My POTA ref','fltb.fMyWwff':'My WWFF ref','fltb.fMyStreet':'My street','fltb.fMyCity':'My city','fltb.fMyPostal':'My postal code','fltb.fMyRig':'My rig','fltb.fMyAntenna':'My antenna','fltb.fTxPower':'TX power (W)','fltb.fComment':'Comment','fltb.fNotes':'Notes','fltb.opEq':'égal (=)','fltb.opNe':'différent (≠)','fltb.opContains':'contient','fltb.opStartsWith':'commence par','fltb.opEndsWith':'finit par','fltb.opGt':'supérieur à (>)','fltb.opLt':'inférieur à (<)','fltb.opGe':'supérieur ou égal (≥)','fltb.opLe':'inférieur ou égal (≤)','fltb.opEmpty':'est vide','fltb.opIn':'est parmi','fltb.opNotIn':'n est pas parmi','fltb.listPh':'2m, 70cm — séparés par des virgules','fltb.opNotEmpty':"n'est pas vide",'fltb.title':'Filtre QSO','fltb.match':'Correspondance','fltb.all':'TOUS (ET)','fltb.any':'AU MOINS UN (OU)','fltb.loadPreset':'Charger un préréglage…','fltb.noConditions':'Aucune condition — la liste affiche tous les QSO. Ajoutes-en une ci-dessous.','fltb.where':'OÙ','fltb.valuePh':'valeur','fltb.remove':'Retirer','fltb.addCondition':'Ajouter une condition','fltb.presetNamePh':'Nom du préréglage…','fltb.savePreset':'Enregistrer le préréglage','fltb.clear':'Effacer','fltb.cancel':'Annuler','fltb.applyClose':'Appliquer & fermer',
'fltb.fCallsign':'Callsign','fltb.fDate':'Date / time (UTC)','fltb.fEndDate':'End date / time','fltb.fBand':'Band','fltb.fRxBand':'RX band','fltb.fMode':'Mode','fltb.fSubmode':'Submode','fltb.fFreq':'Frequency (Hz)','fltb.fRxFreq':'RX frequency (Hz)','fltb.fRstSent':'RST sent','fltb.fRstRcvd':'RST rcvd','fltb.fName':'Name','fltb.fQth':'QTH','fltb.fAddress':'Address','fltb.fEmail':'E-mail','fltb.fGrid':'Grid','fltb.fCountry':'Country','fltb.fState':'State','fltb.fCounty':'County','fltb.fDxcc':'DXCC #','fltb.fContinent':'Continent','fltb.fCqz':'CQ zone','fltb.fItuz':'ITU zone','fltb.fIota':'IOTA','fltb.fSota':'SOTA ref','fltb.fPota':'POTA ref','fltb.fWwff':'WWFF ref','fltb.fRig':'Rig','fltb.fAntenna':'Antenna','fltb.fQslSent':'Paper QSL sent status','fltb.fQslSentDate':'Paper QSL sent date','fltb.fQslRcvd':'Paper QSL received status','fltb.fQslRcvdDate':'Paper QSL received date','fltb.fQslSentVia':'QSL envoyée via','fltb.fQslRcvdVia':'QSL reçue via','fltb.fQslVia':'QSL via','fltb.fLotwSent':'LoTW sent status','fltb.fLotwSentDate':'LoTW sent date','fltb.fLotwRcvd':'LoTW received status','fltb.fLotwRcvdDate':'LoTW received date','fltb.fEqslSent':'eQSL sent status','fltb.fEqslSentDate':'eQSL sent date','fltb.fEqslRcvd':'eQSL received status','fltb.fEqslRcvdDate':'eQSL received date','fltb.fQrzSent':'QRZ.com sent status','fltb.fQrzSentDate':'QRZ.com sent date','fltb.fQrzRcvd':'QRZ.com received status','fltb.fQrzRcvdDate':'QRZ.com received date','fltb.fClublogSent':'Club Log sent status','fltb.fClublogSentDate':'Club Log sent date','fltb.fHrdlogSent':'HRDLog sent status','fltb.fHrdlogSentDate':'HRDLog sent date','fltb.fContestId':'Contest ID','fltb.fSerialRcvd':'Serial rcvd','fltb.fSerialSent':'Serial sent','fltb.fPropMode':'Propagation mode','fltb.fSatellite':'Satellite','fltb.fMyCallsign':'Station callsign (my call)','fltb.fOperator':'Operator','fltb.fOwnerCallsign':'Owner callsign','fltb.fMyGrid':'My grid','fltb.fMyCountry':'My country','fltb.fMyState':'My state','fltb.fMyCounty':'My county','fltb.fMyIota':'My IOTA','fltb.fMySota':'My SOTA ref','fltb.fMyPota':'My POTA ref','fltb.fMyWwff':'My WWFF ref','fltb.fMyStreet':'My street','fltb.fMyCity':'My city','fltb.fMyPostal':'My postal code','fltb.fMyRig':'My rig','fltb.fMyAntenna':'My antenna','fltb.fTxPower':'TX power (W)','fltb.fComment':'Comment','fltb.fNotes':'Notes','fltb.opEq':'égal (=)','fltb.opNe':'différent (≠)','fltb.opContains':'contient','fltb.opStartsWith':'commence par','fltb.opEndsWith':'finit par','fltb.opGt':'supérieur à (>)','fltb.opLt':'inférieur à (<)','fltb.opGe':'supérieur ou égal (≥)','fltb.opLe':'inférieur ou égal (≤)','fltb.opEmpty':'est vide','fltb.opIn':'est parmi','fltb.opNotIn':'n est pas parmi','fltb.listPh':'2m, 70cm — séparés par des virgules','fltb.opNotEmpty':"n'est pas vide",'fltb.title':'Filtre QSO','fltb.match':'Correspondance','fltb.all':'TOUS (ET)','fltb.any':'AU MOINS UN (OU)','fltb.loadPreset':'Charger un préréglage…','fltb.noConditions':'Aucune condition — la liste affiche tous les QSO. Ajoutes-en une ci-dessous.','fltb.where':'OÙ','fltb.valuePh':'valeur','fltb.remove':'Retirer','fltb.addCondition':'Ajouter une condition','fltb.presetNamePh':'Nom du préréglage…','fltb.savePreset':'Enregistrer le préréglage','fltb.clear':'Effacer','fltb.cancel':'Annuler','fltb.applyClose':'Appliquer & fermer',
'detp.propAS':'Diffusion par avion','detp.propAUR':'Aurore','detp.propAUE':'Aurore-E','detp.propBS':'Rétrodiffusion','detp.propEME':'Terre-Lune-Terre','detp.propES':'Sporadique E','detp.propFAI':'Irrégularités alignées au champ','detp.propF2':'Réflexion F2','detp.propGWAVE':'Onde de sol','detp.propINTERNET':'Assisté par Internet','detp.propION':'Diffusion ionosphérique','detp.propLOS':'Vue directe','detp.propMS':'Diffusion météoritique','detp.propRPT':'Répéteur terrestre / atmosphérique','detp.propRS':'Diffusion par la pluie','detp.propSAT':'Satellite','detp.propTEP':'Trans-équatorial','detp.propTR':'Conduit troposphérique','detp.pathShort':'Chemin court','detp.pathLong':'Chemin long','detp.pathGrayline':'Ligne grise','detp.pathOther':'Autre','detp.tabStats':'Stats','detp.tabInfo':'Info','detp.tabAwards':'Diplômes','detp.tabMy':'Moi','detp.tabExtended':'Étendu','detp.statePref':'État / préf','detp.county':'Comté','detp.newCounty':'NOUV','detp.newCountyTip':'Comté jamais contacté','detp.prefix':'Préfixe','detp.cqZone':'CQ','detp.ituZone':'ITU','detp.dxcc':'DXCC #','detp.azimuthLp':'Azimut LP','detp.distanceSp':'Distance SP','detp.distanceLp':'Distance LP','detp.address':'Adresse','detp.qslMessage':'Message QSL','detp.qslVia':'QSL via (manager)','detp.detected':'Détecté — ce contact comptera pour :','detp.ambiguous':'Ambigu — choisissez :','detp.azimuth':'Azimut (°)','detp.elevation':'Élévation (°)','detp.txPower':'Puissance TX (W)','detp.satelliteMode':'Mode satellite','detp.antPath':'Chemin ant.','detp.propagation':'Propagation','detp.rig':'Station','detp.antenna':'Antenne','detp.satName':'Nom du satellite','detp.contestId':'ID contest','detp.rcvdExchangePh':'échange reçu','detp.sentExchangePh':'échange envoyé','detp.contactedEmail':'E-mail du contact','detp.contactedWeb':'Site web',
'detp.propAS':'Diffusion par avion','detp.propAUR':'Aurore','detp.propAUE':'Aurore-E','detp.propBS':'Rétrodiffusion','detp.propEME':'Terre-Lune-Terre','detp.propES':'Sporadique E','detp.propFAI':'Irrégularités alignées au champ','detp.propF2':'Réflexion F2','detp.propGWAVE':'Onde de sol','detp.propINTERNET':'Assisté par Internet','detp.propION':'Diffusion ionosphérique','detp.propLOS':'Vue directe','detp.propMS':'Diffusion météoritique','detp.propRPT':'Répéteur terrestre / atmosphérique','detp.propRS':'Diffusion par la pluie','detp.propSAT':'Satellite','detp.propTEP':'Trans-équatorial','detp.propTR':'Conduit troposphérique','detp.pathShort':'Chemin court','detp.pathLong':'Chemin long','detp.pathGrayline':'Ligne grise','detp.pathOther':'Autre','detp.tabStats':'Stats','detp.tabInfo':'Info','detp.tabAwards':'Diplômes','detp.tabMy':'Moi','detp.tabExtended':'Étendu','detp.statePref':'État / préf','detp.county':'Comté','detp.newCounty':'NOUV','detp.newCountyTip':'Comté jamais contacté','detp.prefix':'Préfixe','detp.cqZone':'CQ','detp.ituZone':'ITU','detp.dxcc':'DXCC #','detp.azimuthLp':'Azimut LP','detp.distanceSp':'Distance SP','detp.distanceLp':'Distance LP','detp.address':'Adresse','detp.qslMessage':'Message QSL','detp.qslVia':'QSL via (manager)','detp.detected':'Détecté — ce contact comptera pour :','detp.ambiguous':'Ambigu — choisissez :','detp.azimuth':'Azimut (°)','detp.elevation':'Élévation (°)','detp.txPower':'Puissance TX (W)','detp.satelliteMode':'Mode satellite','detp.antPath':'Chemin ant.','detp.propagation':'Propagation','detp.rig':'Station','detp.antenna':'Antenne','detp.satName':'Nom du satellite','detp.contestId':'ID contest','detp.rcvdExchangePh':'échange reçu','detp.sentExchangePh':'échange envoyé','detp.contactedEmail':'E-mail du contact','detp.contactedWeb':'Site web',
'awrp.remove':'Retirer','awrp.searchLabel':'Rechercher {label}…','awrp.searching':'Recherche…','awrp.noMatch':'Aucune correspondance.','awrp.noMatchDxcc':'Aucune correspondance pour ce DXCC.',
'awrp.remove':'Retirer','awrp.searchLabel':'Rechercher {label}…','awrp.searching':'Recherche…','awrp.noMatch':'Aucune correspondance.','awrp.noMatchDxcc':'Aucune correspondance pour ce DXCC.',
t.Fatal("our own parser did not recognise the datagram we build")
}
ifev.LoggedADIF!=rec{
t.Errorf("ADIF = %q, want %q",ev.LoggedADIF,rec)
}
ifev.ProgramID!="OpsLog"{
t.Errorf("id = %q, want OpsLog — a receiver uses it to tell instances apart",ev.ProgramID)
}
}
// The header is fixed and other programs match on it byte for byte.
funcTestWSJTLoggedADIFHeader(t*testing.T){
pkt:=BuildWSJTLoggedADIF("OpsLog","<EOR>")
want:=[]byte{
0xad,0xbc,0xcb,0xda,// magic
0x00,0x00,0x00,0x02,// schema 2
0x00,0x00,0x00,0x0c,// type 12 — Logged ADIF
0x00,0x00,0x00,0x06,// len("OpsLog")
'O','p','s','L','o','g',
0x00,0x00,0x00,0x05,// len("<EOR>")
'<','E','O','R','>',
}
if!bytes.Equal(pkt,want){
t.Errorf("packet = % X\nwant % X",pkt,want)
}
}
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.