1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-24 16:55:22 +03:00

Merge pull request #1783 from YI-BOYANG/master

Add the text from the HTML and the string from the GUI console to i18n
This commit is contained in:
Paweł Spychalski 2023-05-23 09:32:04 +02:00 committed by GitHub
commit 0064edfb9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 522 additions and 187 deletions

View file

@ -2076,10 +2076,19 @@
"blackboxButtonSave": {
"message": "Save and reboot"
},
"serialLogging": {
"message": "Outboard serial logging device"
},
"serialLoggingSupportedNote": {
"message": "You can log to an external logging device (such as an OpenLog or compatible clone) by using a serial port. Configure the port on the Ports tab."
},
"onboardLoggingFlashLogger": {
"message": "Onboard dataflash chip"
},
"OnboardSDCard": {
"message": "Onboard SD card"
},
"sdcardNote": {
"message": "Flight logs can be recorded to your flight controller's onboard SD card slot."
},
@ -2105,6 +2114,9 @@
"dataflashConfirmEraseNote": {
"message": "This will erase any Blackbox logs or other data contained in the dataflash which will take about 20 seconds, are you sure?"
},
"dataflashEraseing": {
"message": "Erase in progress, please wait..."
},
"dataflashSavingTitle": {
"message": "Saving dataflash to file"
},
@ -2315,6 +2327,9 @@
"controlAxisThrottle": {
"message": "Throttle [T]"
},
"controlAxisMotor": {
"message": "Motor"
},
"radioChannelShort": {
"message": "CH "
},
@ -3967,9 +3982,24 @@
"uploadedCharacters": {
"message": "Uploaded $1 characters"
},
"portsIdentifier": {
"message": "Identifier"
},
"portsConfiguration": {
"message": "Data"
},
"portsTelemetryOut": {
"message": "Telemetry"
},
"portsSerialRx": {
"message": "RX"
},
"portColumnSensors": {
"message": "Sensors"
},
"portsPeripherals": {
"message": "Peripherals"
},
"appUpdateNotificationHeader": {
"message": "New Configurator version available."
},
@ -4024,6 +4054,108 @@
"missionTotalInformationHead": {
"message": "Total information"
},
"missionTotalInfoFilenameLoaded": {
"message": "Filename loaded:"
},
"missionTotalInfoDistance": {
"message": "Distance (m):"
},
"missionTotalInfoAvailablePoints": {
"message": "Available Points"
},
"missionTotalInfoMissionValid": {
"message": "Mission valid"
},
"missionDefaultPointAlt": {
"message": "Alt (cm): "
},
"missionDefaultPointSpeed": {
"message": "Speed (cm/s): "
},
"missionDefaultSafeRangeSH": {
"message": "Radius (m): "
},
"missionMultiMissionsInfo": {
"message": "Missions Info:"
},
"missionMultiActiveMission": {
"message": "Active Mission:"
},
"missionMultiMissionNo": {
"message": "Mission No."
},
"missionMultiUpdateAll": {
"message": "Update All"
},
"missionMultiAddNewMission": {
"message": "Add New Mission"
},
"missionLevelEarthDEMModel": {
"message": "Use Sea Level Earth DEM Model: "
},
"SafehomeLegend": {
"message": "Legend : "
},
"SafehomeMaxDistance": {
"message": "Max distance (m):"
},
"SafehomeSafeRadius": {
"message": "Safe Radius (m):"
},
"missionTitleHide": {
"message": "Hide"
},
"missionTitleCancel": {
"message": "Cancel"
},
"missionTitleSave": {
"message": "Save"
},
"missionTitlRemove": {
"message": "Remove"
},
"missionTitleLoadMissionFile": {
"message": "Load Mission File"
},
"missionTitleSaveMissionFile": {
"message": "Save Mission File"
},
"missionTitleLoadMissionFromFC": {
"message": "Load mission from FC"
},
"missionTitleSaveMissionToFC": {
"message": "Save mission to FC"
},
"missionTitleLoadEepromMission": {
"message": "Load Eeprom mission"
},
"missionTitleSaveEepromMission": {
"message": "Save Eeprom mission"
},
"missionTitleRemoveAll": {
"message": "Remove all"
},
"missionTitleSetActive": {
"message": "Set Active"
},
"missionTitleUpdateAll": {
"message": "Update All"
},
"missionTitleAdd": {
"message": "Add"
},
"missionTitleMoveToCenterView": {
"message": "move to center view"
},
"missionTitleSaveEepromSafehome": {
"message": "Save Eeprom Safehome"
},
"missionTitleLoadEepromSafehome": {
"message": "Load Eeprom Safehome"
},
"missionTitlEditMission": {
"message": "Edit Mission"
},
"missionRTHsettingsTitle": {
"message": "RTH settings"
},
@ -4954,7 +5086,212 @@
"mainShowLog": {
"message": "Show Log"
},
"mainHideLog": {
"message": "Hide Log"
},
"waitingForData": {
"message": "Waiting for data ..."
},
"outputStatsTableAcc": {
"message": "Acc. noise RMS"
},
"outputStatsTableCurrent": {
"message": "Current [A]"
},
"outputStatsTableVoltage": {
"message": "Voltage [V]"
},
"LogicConditions": {
"message": "Logic Conditions"
},
"PIDControllers": {
"message": "PID Controllers"
},
"sensorsGyroSelect": {
"message": "Gyroscope"
},
"sensorsAccelSelect": {
"message": "Accelerometer"
},
"sensorsMagSelect": {
"message": "Magnetometer"
},
"sensorsAltitudeSelect": {
"message": "Barometer"
},
"sensorsSonarSelect": {
"message": "Sonar"
},
"sensorsAirSpeedSelect": {
"message": "Air speed"
},
"sensorsTemperaturesSelect": {
"message": "Temperatures"
},
"sensorsDebugSelect": {
"message": "Debug"
},
"sensorsDebugTrace": {
"message": "Open Debug Trace"
},
"sensorsGyroscope": {
"message": "Gyroscope - deg/s"
},
"sensorsAccelerometer": {
"message": "Accelerometer - g"
},
"sensorsMagnetometer": {
"message": "Magnetometer - Ga"
},
"sensorsBarometer": {
"message": "Barometer - meters"
},
"sensorsSonar": {
"message": "Sonar - cm"
},
"sensorsAirspeed": {
"message": "Air speed - cm/s"
},
"sensorsTemperature0": {
"message": "Temperature 0 - °C"
},
"sensorsTemperature1": {
"message": "Temperature 1 - °C"
},
"sensorsTemperature2": {
"message": "Temperature 2 - °C"
},
"sensorsTemperature3": {
"message": "Temperature 3 - °C"
},
"sensorsTemperature4": {
"message": "Temperature 4 - °C"
},
"sensorsTemperature5": {
"message": "Temperature 5 - °C"
},
"sensorsTemperature6": {
"message": "Temperature 6 - °C"
},
"sensorsTemperature7": {
"message": "Temperature 7 - °C"
},
"sensorsTemperatureValue": {
"message": "value:"
},
"getRunningOS": {
"message": "Running - OS: <strong>"
},
"getConfiguratorVersion": {
"message": "Configurator: <strong>"
},
"loadedReleaseInfo": {
"message": "Loaded release information from GitHub."
},
"newVersionAvailable": {
"message": "New version available!"
},
"ReceiveTime": {
"message": "Receive time: "
},
"SendTime": {
"message": "Send time: "
},
"ErrorWritingFile": {
"message": "<span style=\"color: red\">Error writing file</span>"
},
"FileSaved": {
"message": "File saved"
},
"selectedTarget": {
"message": "selected target = "
},
"toggledRCs": {
"message": "toggled RCs"
},
"noFirmwareSelectedToLoad": {
"message": "<b>No firmware selected to load</b>"
},
"selectValidSerialPort": {
"message": "<span style=\"color: red\">Please select valid serial port</span>'"
},
"writePermissionsForFile": {
"message": "You don\\'t have <span style=\"color: red\">write permissions</span> for this file"
},
"automaticTargetSelect": {
"message": "Attempting automatic target selection"
},
"notAWAYPOINT": {
"message": "Previous selection was not a WAYPOINT!"
},
"startGettingSafehomePoints": {
"message": "Start of getting Safehome points"
},
"endGettingSafehomePoints": {
"message": "End of getting Safehome points"
},
"startSendingSafehomePoints": {
"message": "Start of sending Safehome points"
},
"endSendingSafehomePoints": {
"message": "End of sending Safehome points"
},
"startGetPoint": {
"message": "Start get point"
},
"startSendPoint": {
"message": "Start send point"
},
"errorReadingFileXml2jsNotFound": {
"message": "<span style=\"color: red\">Error reading file (xml2js not found)</span>'"
},
"errorReadingFile": {
"message": "<span style=\"color: red\">Error reading file</span>"
},
"errorParsingFile": {
"message": "<span style=\"color: red\">Error parsing file</span>"
},
"loadedSuccessfully": {
"message": " has been loaded successfully !"
},
"errorWritingFileXml2jsNotFound": {
"message": "<span style=\"color: red\">Error writing file (xml2js not found)</span>"
},
"savedSuccessfully": {
"message": " has been saved successfully !"
},
"endGetPoint": {
"message": "End get point"
},
"endSendPoint": {
"message": "End send point"
},
"osdSettingsSaved": {
"message": "OSD settings saved"
},
"failedToOpenSerialPort": {
"message": "<span style=\"color: red\">Failed</span> to open serial port"
},
"failedToFlash": {
"message": "<span style=\"color: red\">Failed</span> to flash"
},
"targetPrefetchsuccessful": {
"message": "Target prefetch successful: "
},
"targetPrefetchFail": {
"message": "Cannot prefetch target: "
},
"targetPrefetchFailDFU": {
"message": "Cannot prefetch target: Flight Controller in DFU"
},
"targetPrefetchFailOld": {
"message": "Cannot prefetch target: INAV Firmware too old"
},
"targetPrefetchFailNonINAV": {
"message": "Cannot prefetch target: Non-INAV Firmware"
},
"targetPrefetchFailNoPort": {
"message": "Cannot prefetch target: No port"
}
}

View file

@ -5,7 +5,7 @@ var appUpdater = appUpdater || {};
appUpdater.checkRelease = function (currVersion) {
var modalStart;
$.get('https://api.github.com/repos/iNavFlight/inav-configurator/releases', function (releaseData) {
GUI.log('Loaded release information from GitHub.');
GUI.log(chrome.i18n.getMessage('loadedReleaseInfo'));
//Git return sorted list, 0 - last release
let newVersion = releaseData[0].tag_name;
@ -15,7 +15,7 @@ appUpdater.checkRelease = function (currVersion) {
GUI.log(newVersion, chrome.runtime.getManifest().version);
GUI.log(currVersion);
GUI.log('New version available!');
GUI.log(chrome.i18n.getMessage('newVersionAvailable'));
modalStart = new jBox('Modal', {
width: 400,
height: 200,

View file

@ -3003,7 +3003,7 @@ var mspHelper = (function (gui) {
if (waypointId < MISSION_PLANNER.getCountBusyPoints()) {
MSP.send_message(MSPCodes.MSP_WP, [waypointId], false, loadWaypoint);
} else {
GUI.log('Receive time: ' + (new Date().getTime() - startTime) + 'ms');
GUI.log(chrome.i18n.getMessage('ReceiveTime') + (new Date().getTime() - startTime) + 'ms');
MSP.send_message(MSPCodes.MSP_WP, [waypointId], false, callback);
}
};
@ -3025,7 +3025,7 @@ var mspHelper = (function (gui) {
};
function endMission() {
GUI.log('Send time: ' + (new Date().getTime() - startTime) + 'ms');
GUI.log(chrome.i18n.getMessage('SendTime') + (new Date().getTime() - startTime) + 'ms');
MSP.send_message(MSPCodes.MSP_WP_GETINFO, false, false, callback);
}
};

View file

@ -81,7 +81,7 @@ STM32_protocol.prototype.connect = function (port, baud, hex, options, callback)
self.initialize();
} else {
GUI.log('<span style="color: red">Failed</span> to open serial port');
GUI.log(chrome.i18n.getMessage('failedToOpenSerialPort'));
}
});
} else {
@ -108,7 +108,7 @@ STM32_protocol.prototype.connect = function (port, baud, hex, options, callback)
retries++;
if (retries > maxRetries) {
clearInterval(interval);
GUI.log('<span style="color: red">Failed</span> to flash ' + port);
GUI.log(chrome.i18n.getMessage('failedToFlash') + port);
}
}
// Check for DFU devices
@ -145,7 +145,7 @@ STM32_protocol.prototype.connect = function (port, baud, hex, options, callback)
});
});
} else {
GUI.log('<span style="color: red">Failed</span> to open serial port');
GUI.log(chrome.i18n.getMessage('failedToOpenSerialPort'));
}
});
}

View file

@ -85,9 +85,9 @@ $(document).ready(function () {
}
// alternative - window.navigator.appVersion.match(/Chrome\/([0-9.]*)/)[1];
GUI.log('Running - OS: <strong>' + GUI.operating_system + '</strong>, ' +
GUI.log(chrome.i18n.getMessage('getRunningOS') + GUI.operating_system + '</strong>, ' +
'Chrome: <strong>' + window.navigator.appVersion.replace(/.*Chrome\/([0-9.]*).*/, "$1") + '</strong>, ' +
'Configurator: <strong>' + chrome.runtime.getManifest().version + '</strong>');
chrome.i18n.getMessage('getConfiguratorVersion') + chrome.runtime.getManifest().version + '</strong>');
$('#status-bar .version').text(chrome.runtime.getManifest().version);
$('#logo .version').text(chrome.runtime.getManifest().version);
@ -534,7 +534,7 @@ $(document).ready(function () {
state = true;
}
$(this).text(state ? 'Hide Log' : 'Show Log');
$(this).html(state ? chrome.i18n.getMessage("mainHideLog") : chrome.i18n.getMessage("mainShowLog"));
$(this).data('state', state);
});

View file

@ -172,10 +172,10 @@ TABS.cli.initialize = function (callback) {
fs.writeFile(result, self.outputHistory, (err) => {
if (err) {
GUI.log('<span style="color: red">Error writing file</span>');
GUI.log(chrome.i18n.getMessage('ErrorWritingFile'));
return console.error(err);
}
GUI.log('File saved');
GUI.log(chrome.i18n.getMessage('FileSaved'));
});
});
@ -250,7 +250,7 @@ TABS.cli.initialize = function (callback) {
fs.readFile(result, (err, data) => {
if (err) {
GUI.log('<span style="color: red">Error reading file</span>');
GUI.log(chrome.i18n.getMessage('ErrorReadingFile'));
return console.error(err);
}

View file

@ -52,9 +52,9 @@ TABS.firmware_flasher.initialize = function (callback) {
$('input.show_development_releases').click(function() {
let selectedTarget = String($('select[name="board"]').val());
GUI.log("selected target = " + selectedTarget);
GUI.log(chrome.i18n.getMessage('selectedTarget') + selectedTarget);
buildBoardOptions();
GUI.log("toggled RCs");
GUI.log(chrome.i18n.getMessage('toggledRCs'));
if (selectedTarget === "0") {
TABS.firmware_flasher.getTarget();
} else {
@ -274,7 +274,7 @@ TABS.firmware_flasher.initialize = function (callback) {
$('a.load_remote_file').click(function (evt) {
if ($('select[name="firmware_version"]').val() == "0") {
GUI.log("<b>No firmware selected to load</b>");
GUI.log(chrome.i18n.getMessage('noFirmwareSelectedToLoad'));
return;
}
@ -402,7 +402,7 @@ TABS.firmware_flasher.initialize = function (callback) {
STM32.connect(port, baud, parsed_hex, options);
} else {
console.log('Please select valid serial port');
GUI.log('<span style="color: red">Please select valid serial port</span>');
GUI.log(chrome.i18n.getMessage('selectValidSerialPort'));
}
} else {
STM32DFU.connect(usbDevices.STM32DFU, parsed_hex, options);
@ -452,7 +452,7 @@ TABS.firmware_flasher.initialize = function (callback) {
});
} else {
console.log('You don\'t have write permissions for this file, sorry.');
GUI.log('You don\'t have <span style="color: red">write permissions</span> for this file');
GUI.log(chrome.i18n.getMessage('writePermissionsForFile'));
}
});
});
@ -635,14 +635,14 @@ TABS.firmware_flasher.cleanup = function (callback) {
};
TABS.firmware_flasher.getTarget = function() {
GUI.log("Attempting automatic target selection");
GUI.log(chrome.i18n.getMessage('automaticTargetSelect'));
var selected_baud = parseInt($('#baud').val());
var selected_port = $('#port').find('option:selected').data().isManual ? $('#port-override').val() : String($('#port').val());
if (selected_port !== 'DFU') {
if (selected_port == '0') {
GUI.log("Cannot prefetch target: No port");
GUI.log(chrome.i18n.getMessage('targetPrefetchFailNoPort'));
} else {
console.log('Connecting to: ' + selected_port);
GUI.connecting_to = selected_port;
@ -654,7 +654,7 @@ TABS.firmware_flasher.getTarget = function() {
}
}
} else {
GUI.log("Cannot prefetch target: Flight Controller in DFU");
GUI.log(chrome.i18n.getMessage('targetPrefetchFailDFU'));
}
};
@ -686,7 +686,7 @@ TABS.firmware_flasher.onOpen = function(openInfo) {
// disconnect after 10 seconds with error if we don't get IDENT data
helper.timeout.add('connecting', function () {
if (!CONFIGURATOR.connectionValid) {
GUI.log("Cannot prefetch target: " + chrome.i18n.getMessage('noConfigurationReceived'));
GUI.log(chrome.i18n.getMessage('targetPrefetchFail') + chrome.i18n.getMessage('noConfigurationReceived'));
TABS.firmware_flasher.closeTempConnection();
}
@ -709,7 +709,7 @@ TABS.firmware_flasher.onOpen = function(openInfo) {
if (CONFIG.flightControllerIdentifier == 'INAV') {
MSP.send_message(MSPCodes.MSP_FC_VERSION, false, false, function () {
if (semver.lt(CONFIG.flightControllerVersion, "5.0.0")) {
GUI.log("Cannot prefetch target: INAV Firmware too old");
GUI.log(chrome.i18n.getMessage('targetPrefetchFailOld'));
TABS.firmware_flasher.closeTempConnection();
} else {
mspHelper.getCraftName(function(name) {
@ -721,13 +721,13 @@ TABS.firmware_flasher.onOpen = function(openInfo) {
}
});
} else {
GUI.log("Cannot prefetch target: Non-INAV Firmware");
GUI.log(chrome.i18n.getMessage('targetPrefetchFailNonINAV'));
TABS.firmware_flasher.closeTempConnection();
}
});
});
} else {
GUI.log("Cannot prefetch target: " + chrome.i18n.getMessage('serialPortOpenFail'));
GUI.log(chrome.i18n.getMessage('targetPrefetchFail') + chrome.i18n.getMessage('serialPortOpenFail'));
return;
}
};
@ -736,7 +736,7 @@ TABS.firmware_flasher.onValidFirmware = function() {
MSP.send_message(MSPCodes.MSP_BUILD_INFO, false, false, function () {
MSP.send_message(MSPCodes.MSP_BOARD_INFO, false, false, function () {
$('select[name="board"] option[value=' + CONFIG.target + ']').attr("selected", "selected");
GUI.log("Target prefetch successful: " + CONFIG.target);
GUI.log(chrome.i18n.getMessage('targetPrefetchsuccessful') + CONFIG.target);
TABS.firmware_flasher.closeTempConnection();
$('select[name="board"]').change();

View file

@ -1,28 +1,28 @@
<div class="tab-mission-control">
<div style="padding-top: 20px;padding-left: 20px; padding-right: 20px;position: relative;">
<div class="tab_title" data-i18n="tabMissionControl">Mission planner</div>
<div class="tab_title" data-i18n="tabMissionControl"></div>
</div>
<div class="content_wrapper">
<div class="cf_column fourth" id="missionControls">
<div class="spacer_right">
<div id="missionPlannerAction" class="gui_box grey">
<div class="gui_box_titlebar">
<div class="spacer_box_title i18n-replaced" data-i18n="missionActionMenuHead">Action Menu</div>
<div class="spacer_box_title" data-i18n="missionActionMenuHead"></div>
<div class="btnMenu btnMenuIcon show_btn" id="showHideActionButton">
<a class="ic_hide" href="#" title="Hide"></a>
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
</div>
</div>
<div class="spacer" id="ActionContent">
<div class="btn save_btn">
<a id="loadFileMissionButton" class="btnicon ic_loadFromFile" href="#" title="Load Mission File"></a>
<a id="saveFileMissionButton" class="btnicon ic_save2File" href="#" title="Save Mission File"></a>
<a id="loadFileMissionButton" class="btnicon ic_loadFromFile" href="#" i18n_title="missionTitleLoadMissionFile"></a>
<a id="saveFileMissionButton" class="btnicon ic_save2File" href="#" i18n_title="missionTitleSaveMissionFile"></a>
</div>
<div class="btn save_btn">
<a id="loadMissionButton" class="btnicon ic_loadFromFC" href="#" title="Load mission from FC"</a>
<a id="saveMissionButton" class="btnicon ic_save2FC" href="#" title="Save mission to FC"</a>
<a id="loadEepromMissionButton" class="btnicon ic_loadFromEprom" href="#" title="Load Eeprom mission"></a>
<a id="saveEepromMissionButton" class="btnicon ic_save2Eprom" href="#" title="Save Eeprom mission"></a>
<a id="loadMissionButton" class="btnicon ic_loadFromFC" href="#" i18n_title="missionTitleLoadMissionFromFC" </a>
<a id="saveMissionButton" class="btnicon ic_save2FC" href="#" i18n_title="missionTitleSaveMissionToFC" </a>
<a id="loadEepromMissionButton" class="btnicon ic_loadFromEprom" href="#" i18n_title="missionTitleLoadEepromMission"></a>
<a id="saveEepromMissionButton" class="btnicon ic_save2Eprom" href="#" i18n_title="missionTitleSaveEepromMission"></a>
</div>
<hr>
<!-- <div class="btn">
@ -33,33 +33,33 @@
</div>
<hr> -->
<div id="removeAllPoints" class="btn btn-danger" style="padding-top: 1px; display: inline-block">
<a class="btnicon ic_removeAll" href="#" title="Remove all"></a>
<a class="btnicon ic_removeAll" href="#" i18n_title="missionTitleRemoveAll"></a>
</div>
</div>
</div>
<div id="missionPlannerTotalInfo" class="gui_box grey">
<div class="gui_box_titlebar">
<div class="spacer_box_title i18n-replaced" data-i18n="missionTotalInformationHead">Total information</div>
<div class="spacer_box_title" data-i18n="missionTotalInformationHead"></div>
<div class="btnMenu btnMenuIcon show_btn" id="showHideInfoButton">
<a class="ic_hide" href="#" title="Hide"></a>
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
</div>
</div>
<div class="spacer" id="InfoContent">
<div id="infoMissionFilename" style="padding-bottom: 2px;">
<span>Filename loaded:</span>
<span data-i18n="missionTotalInfoFilenameLoaded"></span>
<span id="missionFilename" style="color: #3394b5"></span>
</div>
<div id="infoMissionDistance" style="padding-bottom: 2px;">
<span>Distance (m):</span>
<span data-i18n="missionTotalInfoDistance"></span>
<span id="missionDistance"></span>
</div>
<div id="infoAvailablePoints" style="padding-bottom: 2px;">
<span>Available Points</span>
<span data-i18n="missionTotalInfoAvailablePoints"></span>
<span id="availablePoints">0/0</span>
</div>
<div id="infoMissionValid" style="padding-bottom: 2px;">
<span>Mission valid</span>
<span data-i18n="missionTotalInfoMissionValid"></span>
<div id="missionValid" style="display: inline-block"></div>
</div>
</div>
@ -67,23 +67,23 @@
<div id="missionPlannerSettings" class="gui_box grey" style="display: none">
<div class="gui_box_titlebar">
<div class="spacer_box_title i18n-replaced" data-i18n="missionDefaultSettingsHead">Default settings</div>
<div class="spacer_box_title" data-i18n="missionDefaultSettingsHead"></div>
<div class="btnMenu btnMenuIcon save_btn">
<a id="cancelSettings" class="ic_cancel" href="#" title="Cancel"></a>
<a id="saveSettings" class="ic_save" href="#" title="Save"></a>
<a id="cancelSettings" class="ic_cancel" href="#" i18n_title="missionTitleCancel"></a>
<a id="saveSettings" class="ic_save" href="#" i18n_title="missionTitleSave"></a>
</div>
</div>
<div class="spacer">
<div class="point">
<label class="point-label" for="MPdefaultPointAlt">Alt (cm): </label>
<label class="point-label" for="MPdefaultPointAlt" data-i18n="missionDefaultPointAlt"></label>
<input id="MPdefaultPointAlt" type="text" value="0" required>
</div>
<div class="point">
<label class="point-label" for="MPdefaultPointSpeed">Speed (cm/s): </label>
<label class="point-label" for="MPdefaultPointSpeed" data-i18n="missionDefaultPointSpeed"></label>
<input id="MPdefaultPointSpeed" type="text" value="0" required>
</div>
<div class="point">
<label class="point-label" for="MPdefaultSafeRangeSH">Radius (m): </label>
<label class="point-label" for="MPdefaultSafeRangeSH" data-i18n="missionDefaultSafeRangeSH"></label>
<input id="MPdefaultSafeRangeSH" type="text" value="0" required>
</div>
</div>
@ -91,38 +91,38 @@
<div id="missionPlannerMultiMission" class="gui_box grey" style="display: none">
<div class="gui_box_titlebar">
<div class="spacer_box_title i18n-replaced" data-i18n="missionMultiMissionHead">Multi Missions</div>
<div class="spacer_box_title" data-i18n="missionMultiMissionHead"></div>
<div class="btnMenu btnMenuIcon save_btn">
<div id="showHideMultimissionButton">
<a class="ic_hide" href="#" title="Hide"></a>
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
</div>
<a id="cancelMultimission" class="ic_cancel" href="#" title="Cancel"></a>
<a id="cancelMultimission" class="ic_cancel" href="#" i18n_title="missionTitleCancel"></a>
</div>
</div>
<div class="spacer" id="multimissionContent">
<div class="btn btnTable btnTableIcon save_btn">
<div>
<span>Missions Info:</span>
<span data-i18n="missionMultiMissionsInfo"></span>
<span id="multimissionInfo">None</span>
</div>
<div style="margin-top: 5px">
<span>Active Mission:</span>
<span data-i18n="missionMultiActiveMission"></span>
<span id="activeNissionIndex">1</span>
<a class="ic_save disabled" id="setActiveMissionButton" href="#" title="Set Active"></a>
<a class="ic_save disabled" id="setActiveMissionButton" href="#" i18n_title="missionTitleSetActive"></a>
</div>
<hr>
<div style="display: inline-block">
<label for="multimissionOptionList">Mission No.</label>
<label for="multimissionOptionList" data-i18n="missionMultiMissionNo."></label>
<select name="Number" id="multimissionOptionList" style="width: 50px">
<option value="0">ALL</option>
</select>
<div style="float: right">
<span>Update All</span>
<a class="ic_save disabled" id="updateMultimissionButton" href="#" title="Update All"></a>
<span data-i18n="missionMultiUpdateAll"></span>
<a class="ic_save disabled" id="updateMultimissionButton" href="#" i18n_title="missionTitleUpdateAll"></a>
</div>
<div style="margin-bottom: 5px; margin-top: 5px">
<label for="addMultimissionButton">Add New Mission</label>
<a class="ic_add disabled" id="addMultimissionButton" href="#" title="Add"></a>
<label for="addMultimissionButton" data-i18n="missionMultiAddNewMission"></label>
<a class="ic_add disabled" id="addMultimissionButton" href="#" i18n_title="missionTitleAdd"></a>
</div>
</div>
</div>
@ -131,12 +131,12 @@
<div id="missionPlannerHome" class="gui_box grey" style="display: none">
<div class="gui_box_titlebar">
<div class="spacer_box_title i18n-replaced" data-i18n="missionHomeHead">Take Off home</div>
<div class="spacer_box_title" data-i18n="missionHomeHead"></div>
<div class="btnMenu btnMenuIcon save_btn">
<div id="showHideHomeButton">
<a class="ic_hide" href="#" title="Hide"></a>
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
</div>
<a id="cancelHome" class="ic_cancel" href="#" title="Cancel"></a>
<a id="cancelHome" class="ic_cancel" href="#" i18n_title="missionTitleCancel"></a>
</div>
</div>
<div class="spacer" id="HomeContent">
@ -152,8 +152,9 @@
</thead>
<tbody id="homeTableBody">
<tr>
<td><div id="viewHomePoint" class="btnTable btnTableIcon">
<a class="ic_center" data-role="home-center" href="#" title="move to center view"></a>
<td>
<div id="viewHomePoint" class="btnTable btnTableIcon">
<a class="ic_center" data-role="home-center" href="#" i18n_title="missionTitleMoveToCenterView"></a>
</div>
</td>
<td><input type="number" class="home-lat" /></td>
@ -165,21 +166,21 @@
</div>
</div>
<div class="point" id="elevationEarthModelclass" style="display: none">
<label class="spacer_box_title i18n-replaced" for="elevationEarthModel">Use Sea Level Earth DEM Model: </label>
<label class="spacer_box_title" for="elevationEarthModel" data-i18n="missionLevelEarthDEMModel"></label>
<input id="elevationEarthModel" type="checkbox" value="0" class="togglemedium" required>
</div>
</div>
<div id="missionPlannerSafehome" class="gui_box grey" style="display: none">
<div class="gui_box_titlebar">
<div class="spacer_box_title i18n-replaced" data-i18n="missionSafehomeHead">Safe Home manager</div>
<div class="spacer_box_title" data-i18n="missionSafehomeHead"></div>
<div class="btnMenu btnMenuIcon save_btn">
<div id="showHideSafehomeButton">
<a class="ic_hide" href="#" title="Hide"></a>
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
</div>
<a id="cancelSafehome" class="ic_cancel" href="#" title="Cancel"></a>
<a id="saveEepromSafehomeButton" class="ic_save2Eprom" href="#" title="Save Eeprom Safehome"></a>
<a id="loadEepromSafehomeButton" class="ic_loadFromEprom" href="#" title="Load Eeprom Safehome"></a>
<a id="cancelSafehome" class="ic_cancel" href="#" i18n_title="missionTitleCancel"></a>
<a id="saveEepromSafehomeButton" class="ic_save2Eprom" href="#" i18n_title="missionTitleSaveEepromSafehome"></a>
<a id="loadEepromSafehomeButton" class="ic_loadFromEprom" href="#" i18n_title="missionTitleLoadEepromSafehome"></a>
</div>
</div>
<div class="spacer" id="SafehomeContent">
@ -199,15 +200,15 @@
</table>
<hr>
<div class="spacer" id="safehomeLegend">
<span><b>Legend : </b></span>
<span><b data-i18n="SafehomeLegend"></b></span>
<div class="legendItem">
<span class="fill" style="border-bottom-color:#900C3F"></span>
<span class="textLegend">Max distance (m):</span>
<span class="textLegend" data-i18n="SafehomeMaxDistance"></span>
<span id="safeHomeMaxDistance" class="valueLegend"></span>
</div>
<div class="legendItem">
<span class="fill"></span>
<span class="textLegend">Safe Radius (m):</span>
<span class="textLegend" data-i18n="SafehomeSafeRadius"></span>
<span id="SafeHomeSafeDistance" class="valueLegend"></span>
</div>
</div>
@ -217,16 +218,16 @@
<div class="gui_box grey" id="MPeditPoint" style="display: none">
<div class="gui_box_titlebar">
<div class="spacer_box_title i18n-replaced" data-i18n="editPointHead" id="EditPointNumber">Edit point</div>
<div class="spacer_box_title" data-i18n="editPointHead" id="EditPointNumber"></div>
<div class="btnMenu btnMenuIcon">
<div id="showHideWPeditButton" class="save_btn">
<a class="ic_hide" href="#" title="Hide"></a>
<a class="ic_hide" href="#" i18n_title="missionTitleHide"></a>
</div>
<div id="removePoint" class="btn btnMenu-danger">
<a id="removePointButton" class="ic_removeAll" href="#" title="Remove"></a>
<a id="removePointButton" class="ic_removeAll" href="#" i18n_title="missionTitlRemove"></a>
</div>
<div id="editMission" class="save_btn" style="display: none">
<a id="editMissionButton" class="ic_setup" href="#" title="Edit Mission"></a>
<a id="editMissionButton" class="ic_setup" href="#" i18n_title="missionTitlEditMission"></a>
</div>
</div>
</div>
@ -274,7 +275,7 @@
<label class="point-label" for="pointP1">Parameter 1: </label>
<input id="pointP1" type="text" value="0" required>
</div>
<div class="point" id="pointP2class" style="display: none">
<div class="point" id="pointP2class" style="display: none">
<label class="point-label" for="pointP2">Parameter 2: </label>
<input id="pointP2" type="text" value="0" required>
</div>
@ -286,26 +287,26 @@
<div class="userActionContainer">4 <input id="pointP3UserAction4" type="checkbox" value="0" class="togglemedium" checked required></div>
</div>
<div>
<table class="waypointOptionsTable">
<thead>
<tr>
<th style="width: 30px">
<div id="addOptionsPoint" class="btn btnTable btnTableIcon btnTable-success">
<a id="addOptionsPointButton" class="ic_add" data-role="waypointOptions-add" href="#" style="float: center" title="Add"></a>
</div>
</th>
<th style="width: 50px" data-i18n="WaypointOptionId"></th>
<th style="width: 80px" data-i18n="WaypointOptionAction"></th>
<th style="width: 120px" data-i18n="WaypointOptionP1"></th>
<th style="width: 120px" data-i18n="WaypointOptionP2"></th>
</tr>
</thead>
<tbody id="waypointOptionsTableBody">
</tbody>
</table>
<table class="waypointOptionsTable">
<thead>
<tr>
<th style="width: 30px">
<div id="addOptionsPoint" class="btn btnTable btnTableIcon btnTable-success">
<a id="addOptionsPointButton" class="ic_add" data-role="waypointOptions-add" href="#" style="float: center" title="Add"></a>
</div>
</th>
<th style="width: 50px" data-i18n="WaypointOptionId"></th>
<th style="width: 80px" data-i18n="WaypointOptionAction"></th>
<th style="width: 120px" data-i18n="WaypointOptionP1"></th>
<th style="width: 120px" data-i18n="WaypointOptionP2"></th>
</tr>
</thead>
<tbody id="waypointOptionsTableBody">
</tbody>
</table>
</div>
<!-- <div class="point-radio" id="pointOptionclass" style="display: none">
<!-- <div class="point-radio" id="pointOptionclass" style="display: none">
<div class="radio-line">
<input type="radio" id="Options_None" name="Options" value="None" checked>
<label class="radio-options" for="Options_None">None</label><br>
@ -339,17 +340,17 @@
<div class="cf_column threefourth_left" style="height: 100%;">
<div id="missionMap"></div>
<div id="missionPlannerElevation" class="gui_box grey" style="display: none">
<div class="gui_box_titlebar">
<div class="spacer_box_title i18n-replaced" data-i18n="missionDefaultElevationHead">Elevation Profile</div>
<div class="btnMenu btnMenuIcon save_btn">
<a id="cancelPlot" class="ic_cancel" href="#" title="Cancel"></a>
</div>
</div>
<div class="spacer">
<div id="elevationDiv">
</div>
<div class="gui_box_titlebar">
<div class="spacer_box_title" data-i18n="missionDefaultElevationHead"></div>
<div class="btnMenu btnMenuIcon save_btn">
<a id="cancelPlot" class="ic_cancel" href="#" i18n_title="missionTitleCancel"></a>
</div>
</div>
<div class="spacer">
<div id="elevationDiv">
</div>
</div>
</div>
<div id="notLoadMap" data-i18n="useOnlyStandalone" style="display: none;"></div>
</div>
</div>

View file

@ -1797,7 +1797,7 @@ TABS.mission_control.initialize = function (callback) {
clearEditForm();
} catch (e) {
console.log(e);
GUI.log("Previous selection was not a WAYPOINT!");
GUI.log(chrome.i18n.getMessage('notAWAYPOINT'));
}
}
selectedFeature = map.forEachFeatureAtPixel(evt.pixel,
@ -2259,25 +2259,25 @@ TABS.mission_control.initialize = function (callback) {
$('#loadEepromSafehomeButton').on('click', function () {
$(this).addClass('disabled');
GUI.log('Start of getting Safehome points');
GUI.log(chrome.i18n.getMessage('startGettingSafehomePoints'));
mspHelper.loadSafehomes();
setTimeout(function(){
renderSafehomesTable();
cleanSafehomeLayers();
renderSafehomesOnMap();
GUI.log('End of getting Safehome points');
GUI.log(chrome.i18n.getMessage('endGettingSafehomePoints'));
$('#loadEepromSafehomeButton').removeClass('disabled');
}, 500);
});
$('#saveEepromSafehomeButton').on('click', function () {
$('#saveEepromSafehomeButton').on('click', function() {
$(this).addClass('disabled');
GUI.log('Start of sending Safehome points');
GUI.log(chrome.i18n.getMessage('startSendingSafehomePoints'));
mspHelper.saveSafehomes();
setTimeout(function(){
mspHelper.saveToEeprom();
GUI.log('End of sending Safehome points');
GUI.log(chrome.i18n.getMessage('endSendingSafehomePoints'));
$('#saveEepromSafehomeButton').removeClass('disabled');
}, 500);
});
@ -2431,7 +2431,7 @@ TABS.mission_control.initialize = function (callback) {
if ((markers.length || multimissionCount) && !confirm(chrome.i18n.getMessage(message))) return;
removeAllWaypoints();
$(this).addClass('disabled');
GUI.log('Start get point');
GUI.log(chrome.i18n.getMessage('startGetPoint'));
getWaypointsFromFC(false);
});
@ -2441,7 +2441,7 @@ TABS.mission_control.initialize = function (callback) {
return;
}
$(this).addClass('disabled');
GUI.log('Start send point');
GUI.log(chrome.i18n.getMessage('startSendPoint'));
sendWaypointsToFC(false);
});
@ -2450,7 +2450,7 @@ TABS.mission_control.initialize = function (callback) {
if ((markers.length || multimissionCount) && !confirm(chrome.i18n.getMessage(message))) return;
removeAllWaypoints();
$(this).addClass('disabled');
GUI.log('Start get point');
GUI.log(chrome.i18n.getMessage('startGetPoint'));
getWaypointsFromFC(true);
});
@ -2460,7 +2460,7 @@ TABS.mission_control.initialize = function (callback) {
return;
}
$(this).addClass('disabled');
GUI.log('Start send point');
GUI.log(chrome.i18n.getMessage('startSendPoint'));
sendWaypointsToFC(true);
});
@ -2494,17 +2494,17 @@ TABS.mission_control.initialize = function (callback) {
/////////////////////////////////////////////
function loadMissionFile(filename) {
const fs = require('fs');
if (!window.xml2js) return GUI.log('<span style="color: red">Error reading file (xml2js not found)</span>');
if (!window.xml2js) return GUI.log(chrome.i18n.getMessage('errorReadingFileXml2jsNotFound'));
fs.readFile(filename, (err, data) => {
if (err) {
GUI.log('<span style="color: red">Error reading file</span>');
GUI.log(chrome.i18n.getMessage('errorReadingFile'));
return console.error(err);
}
window.xml2js.Parser({ 'explicitChildren': true, 'preserveChildrenOrder': true }).parseString(data, (err, result) => {
if (err) {
GUI.log('<span style="color: red">Error parsing file</span>');
GUI.log(chrome.i18n.getMessage('errorParsingFile'));
return console.error(err);
}
@ -2636,7 +2636,7 @@ TABS.mission_control.initialize = function (callback) {
}
updateTotalInfo();
let sFilename = String(filename.split('\\').pop().split('/').pop());
GUI.log(sFilename+' has been loaded successfully !');
GUI.log(sFilename + chrome.i18n.getMessage('loadedSuccessfully'));
updateFilename(sFilename);
});
});
@ -2644,7 +2644,7 @@ TABS.mission_control.initialize = function (callback) {
function saveMissionFile(filename) {
const fs = require('fs');
if (!window.xml2js) return GUI.log('<span style="color: red">Error writing file (xml2js not found)</span>');
if (!window.xml2js) return GUI.log(chrome.i18n.getMessage('errorWritingFileXml2jsNotFound'));
var center = ol.proj.toLonLat(map.getView().getCenter());
var zoom = map.getView().getZoom();
@ -2693,11 +2693,11 @@ TABS.mission_control.initialize = function (callback) {
xml = xml.replace(/missionitem mission/g, 'meta mission');
fs.writeFile(filename, xml, (err) => {
if (err) {
GUI.log('<span style="color: red">Error writing file</span>');
GUI.log(chrome.i18n.getMessage('ErrorWritingFile'));
return console.error(err);
}
let sFilename = String(filename.split('\\').pop().split('/').pop());
GUI.log(sFilename+' has been saved successfully !');
GUI.log(sFilename + chrome.i18n.getMessage('savedSuccessfully'));
updateFilename(sFilename);
});
}
@ -2715,7 +2715,7 @@ TABS.mission_control.initialize = function (callback) {
function getWaypointData() {
mspHelper.loadWaypoints(function() {
GUI.log('End get point');
GUI.log(chrome.i18n.getMessage('endGetPoint'));
if (loadEeprom) {
GUI.log(chrome.i18n.getMessage('eeprom_load_ok'));
$('#loadEepromMissionButton').removeClass('disabled');
@ -2757,7 +2757,7 @@ TABS.mission_control.initialize = function (callback) {
MISSION_PLANNER.copy(mission);
MISSION_PLANNER.update(false, true, true);
mspHelper.saveWaypoints(function() {
GUI.log('End send point');
GUI.log(chrome.i18n.getMessage('endSendPoint'));
if (saveEeprom) {
$('#saveEepromMissionButton').removeClass('disabled');
GUI.log(chrome.i18n.getMessage('eeprom_saved_ok'));

View file

@ -42,7 +42,7 @@
<div class="half" style="width: calc(50% - 10px); margin-left: 10px;">
<select id="mixer-preset"></select>
</div>
<div class="mixer-load-button">
<div id="needToUpdateMixerMessage" class="is-hidden" data-i18n="mixerNotLoaded"></div>
<div class="btn default_btn narrow green is-hidden">
@ -90,7 +90,7 @@
<table id="motor-mix-table" class="mixer-table">
<thead>
<tr>
<th style="width: 75px">Motor</th>
<th style="width: 75px" data-i18n="controlAxisMotor"></th>
<th data-i18n="controlAxisThrottle"></th>
<th data-i18n="controlAxisRoll"></th>
<th data-i18n="controlAxisPitch"></th>

View file

@ -62,8 +62,7 @@
<div class="gui_box grey">
<div class="gui_box_titlebar" align="left">
<div class="spacer_box_title">
Outboard serial logging device
<div class="spacer_box_title" data-i18n="serialLogging">
</div>
</div>
<div class="spacer_box">
@ -73,8 +72,7 @@
<div class="gui_box grey require-dataflash-supported">
<div class="gui_box_titlebar" align="left">
<div class="spacer_box_title">
Onboard dataflash chip
<div class="spacer_box_title" data-i18n="onboardLoggingFlashLogger">
</div>
</div>
<div class="spacer_box">
@ -86,7 +84,7 @@
<div class="dataflash-confirm-erase-note" data-i18n="dataflashConfirmEraseNote"></div>
<div class="dataflash-erase-progress">
<div class="data-loading">
<p>Erase in progress, please wait...</p>
<p data-i18n="dataflashEraseing"></p>
</div>
</div>
<div class="buttons">
@ -134,8 +132,7 @@
<div class="require-sdcard-supported">
<div class="gui_box grey">
<div class="gui_box_titlebar" align="left">
<div class="spacer_box_title">
Onboard SD card
<div class="spacer_box_title" data-i18n="OnboardSDCard">
</div>
</div>
<div class="spacer_box">

View file

@ -3076,7 +3076,7 @@ TABS.osd.initialize = function (callback) {
Settings.saveInputs().then(function () {
var self = this;
MSP.promise(MSPCodes.MSP_EEPROM_WRITE);
GUI.log('OSD settings saved');
GUI.log(chrome.i18n.getMessage('osdSettingsSaved'));
var oldText = $(this).text();
$(this).html("Saved");
setTimeout(function () {
@ -3264,7 +3264,7 @@ TABS.osd.initialize = function (callback) {
});
} else {
console.log('You don\'t have write permissions for this file, sorry.');
GUI.log('You don\'t have <span style="color: red">write permissions</span> for this file');
GUI.log(chrome.i18n.getMessage('writePermissionsForFile'));
}
});
});

View file

@ -52,7 +52,7 @@
<span data-i18n="throttleIdle"></span>
</label>
</div>
<div class="number">
<input id="throttle_scale" data-setting="throttle_scale" type="number" data-step="0.01" />
<label for="throttle_scale">
@ -94,7 +94,7 @@
</label>
</div>
</div>
</div>
</div>
<div class="gui_box grey">
@ -108,10 +108,10 @@
<div class="bar-wrapper"></div>
<div class="clear-both"></div>
<div class="motor_testing">
<div class="sliders motor-sliders"></div>
<div class="values">
<ul class="motor-values"></ul>
</div>
<div class="sliders motor-sliders"></div>
<div class="values">
<ul class="motor-values"></ul>
</div>
</div>
</div>
<div class="motors right">
@ -123,15 +123,15 @@
<div class="half">
<table class="output-stats-table">
<tr>
<th>Acc. noise RMS</th>
<th i18n="outputStatsTableAcc"></th>
<td class="acc-rms"></td>
</tr>
<tr>
<th>Current [A]</th>
<th i18n="outputStatsTableCurrent"></th>
<td class="current-current"></td>
</tr>
<tr>
<th>Voltage [V]</th>
<th i18n="outputStatsTableVoltage"></th>
<td class="current-voltage"></td>
</tr>
</table>
@ -193,9 +193,9 @@
</div>
</div>
<div class="content_toolbar">
<div class="btn save_btn">
<a class="update" href="#" data-i18n="servosButtonSave"></a>
<a class="save" href="#" data-i18n="configurationButtonSave"></a>
</div>
<div class="btn save_btn">
<a class="update" href="#" data-i18n="servosButtonSave"></a>
<a class="save" href="#" data-i18n="configurationButtonSave"></a>
</div>
</div>
</div>

View file

@ -12,12 +12,12 @@
<table class="ports spacebottom">
<thead>
<tr>
<td>Identifier</td>
<td>Data</td>
<td>Telemetry</td>
<td>RX</td>
<td i18n="portsIdentifier"></td>
<td i18n="portsConfiguration"></td>
<td i18n="portsTelemetryOut"></td>
<td i18n="portsSerialRx"></td>
<td data-i18n="portColumnSensors"></td>
<td class='peripherls-column'>Peripherals</td>
<td class='peripherls-column' i18n="portsPeripherals"></td>
</tr>
</thead>
<tbody>

View file

@ -1,12 +1,12 @@
<div class="tab-configuration tab-programming toolbar_fixed_bottom">
<div class="content_wrapper" id="programming-main-content">
<div class="tab_title subtab__header">
<span class="subtab__header_label subtab__header_label--current" for="subtab-lc">Logic Conditions</span>
<span class="subtab__header_label" for="subtab-pid">PID Controllers</span>
<span class="subtab__header_label subtab__header_label--current" for="subtab-lc" data-i18n="LogicConditions"></span>
<span class="subtab__header_label" for="subtab-pid" data-i18n="PIDControllers"></span>
</div>
<div class="gvar__container">
<div class="gvar__wrapper">
<div class="gvar__cell">

View file

@ -11,20 +11,20 @@
<div class="gui_box">
<div class="info">
<div class="checkboxes">
<label><input type="checkbox" name="gyro_on" class="first" />Gyroscope</label> <label><input
type="checkbox" name="accel_on" />Accelerometer</label> <label><input type="checkbox"
name="mag_on" />Magnetometer</label> <label><input type="checkbox" name="baro_on" />Barometer</label> <label><input
type="checkbox" name="sonar_on" />Sonar</label> <label><input type="checkbox" name="airspeed_on" />Air speed</label> <label><input
type="checkbox" name="temperature_on" />Temperatures</label><label><input type="checkbox" name="debug_on" />Debug</label>
<label><input type="checkbox" name="gyro_on" class="first" /><span i18n="sensorsGyroSelect"></label> <label><input
type="checkbox" name="accel_on" /><span i18n="sensorsAccelSelect"></span></label> <label><input type="checkbox"
name="mag_on" /><span i18n="sensorsMagSelect"></span></label> <label><input type="checkbox" name="baro_on" /><span i18n="sensorsAltitudeSelect"></span></label> <label><input
type="checkbox" name="sonar_on" /><span i18n="sensorsSonarSelect"></span></label> <label><input type="checkbox" name="airspeed_on" /><span i18n="sensorsAirSpeedSelect"></span></label> <label><input
type="checkbox" name="temperature_on" /><span i18n="sensorsTemperaturesSelect"></span></label><label><input type="checkbox" name="debug_on" /><span i18n="sensorsDebugSelect"></span></label>
<a class="debug-trace" href="javascript:void(0);">Open Debug Trace</a>
<a class="debug-trace" href="javascript:void(0);"><span i18n="sensorsDebugTrace"></span></a>
</div>
</div>
</div>
<div class="wrapper gyro">
<div class="gui_box grey">
<div class="plot_control">
<div class="title">Gyroscope - deg/s</div>
<div class="title" i18n="sensorsGyroscope"></div>
<dl>
<dt i18n="sensorsRefresh"></dt>
<dd class="rate">
@ -70,7 +70,7 @@
<div class="wrapper accel">
<div class="gui_box grey">
<div class="plot_control">
<div class="title">Accelerometer - g</div>
<div class="title" i18n="sensorsAccelerometer"></div>
<dl>
<dt i18n="sensorsRefresh"></dt>
<dd class="rate">
@ -116,7 +116,7 @@
<div class="wrapper mag">
<div class="gui_box grey">
<div class="plot_control">
<div class="title">Magnetometer - Ga</div>
<div class="title" i18n="sensorsMagnetometer"></div>
<dl>
<dt i18n="sensorsRefresh"></dt>
<dd class="rate">
@ -160,7 +160,7 @@
<div class="wrapper altitude">
<div class="gui_box grey">
<div class="plot_control">
<div class="title">Barometer - meters</div>
<div class="title" i18n="sensorsBarometer"></div>
<dl>
<dt i18n="sensorsRefresh"></dt>
<dd class="rate">
@ -196,7 +196,7 @@
<div class="wrapper sonar">
<div class="gui_box grey">
<div class="plot_control">
<div class="title">Sonar - cm</div>
<div class="title" i18n="sensorsSonar"></div>
<dl>
<dt i18n="sensorsRefresh"></dt>
<dd class="rate">
@ -229,7 +229,7 @@
<div class="wrapper airspeed">
<div class="gui_box grey">
<div class="plot_control">
<div class="title">Air speed - cm/s</div>
<div class="title" i18n="sensorsAirspeed"></div>
<dl>
<dt i18n="sensorsRefresh"></dt>
<dd class="rate">
@ -263,9 +263,9 @@
<div class="wrapper temperature">
<div class="gui_box grey">
<div class="plot_control">
<div class="title">Temperature 0 - °C</div>
<div class="title" i18n="sensorsTemperature0"></div>
<dl>
<dt>value:</dt>
<dt i18n="sensorsTemperatureValue"></dt>
<dd class="x">0</dd>
</dl>
</div>
@ -278,9 +278,9 @@
</svg>
<div class="clear-both"></div>
<div class="plot_control">
<div class="title">Temperature 1 - °C</div>
<div class="title" i18n="sensorsTemperature1"></div>
<dl>
<dt>value:</dt>
<dt i18n="sensorsTemperatureValue"></dt>
<dd class="x">0</dd>
</dl>
</div>
@ -293,9 +293,9 @@
</svg>
<div class="clear-both"></div>
<div class="plot_control">
<div class="title">Temperature 2 - °C</div>
<div class="title" i18n="sensorsTemperature2"></div>
<dl>
<dt>value:</dt>
<dt i18n="sensorsTemperatureValue"></dt>
<dd class="x">0</dd>
</dl>
</div>
@ -308,9 +308,9 @@
</svg>
<div class="clear-both"></div>
<div class="plot_control">
<div class="title">Temperature 3 - °C</div>
<div class="title" i18n="sensorsTemperature3"></div>
<dl>
<dt>value:</dt>
<dt i18n="sensorsTemperatureValue"></dt>
<dd class="x">0</dd>
</dl>
</div>
@ -323,9 +323,9 @@
</svg>
<div class="clear-both"></div>
<div class="plot_control">
<div class="title">Temperature 4 - °C</div>
<div class="title" i18n="sensorsTemperature4"></div>
<dl>
<dt>value:</dt>
<dt i18n="sensorsTemperatureValue"></dt>
<dd class="x">0</dd>
</dl>
</div>
@ -338,9 +338,9 @@
</svg>
<div class="clear-both"></div>
<div class="plot_control">
<div class="title">Temperature 5 - °C</div>
<div class="title" i18n="sensorsTemperature5"></div>
<dl>
<dt>value:</dt>
<dt i18n="sensorsTemperatureValue"></dt>
<dd class="x">0</dd>
</dl>
</div>
@ -353,9 +353,9 @@
</svg>
<div class="clear-both"></div>
<div class="plot_control">
<div class="title">Temperature 6 - °C</div>
<div class="title" i18n="sensorsTemperature6"></div>
<dl>
<dt>value:</dt>
<dt i18n="sensorsTemperatureValue"></dt>
<dd class="x">0</dd>
</dl>
</div>
@ -368,9 +368,9 @@
</svg>
<div class="clear-both"></div>
<div class="plot_control">
<div class="title">Temperature 7 - °C</div>
<div class="title" i18n="sensorsTemperature7"></div>
<dl>
<dt>value:</dt>
<dt i18n="sensorsTemperatureValue"></dt>
<dd class="x">0</dd>
</dl>
</div>