1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-22 15:55:33 +03:00

i18n OSD Elements

This commit is contained in:
Miguel Angel Mulero Martinez 2019-06-12 09:44:42 +02:00
parent db6651e560
commit 6a341ac6e4
3 changed files with 399 additions and 45 deletions

View file

@ -3766,186 +3766,454 @@
"message": "Reset Settings" "message": "Reset Settings"
}, },
"osdTextElementMainBattVoltage": {
"message": "Main battery voltage",
"description": "One of the elements of the OSD"
},
"osdDescElementMainBattVoltage": { "osdDescElementMainBattVoltage": {
"message": "Instantaneous main battery voltage (flashes when below alarm threshold)" "message": "Instantaneous main battery voltage (flashes when below alarm threshold)"
}, },
"osdTextElementRssiValue": {
"message": "RSSI value",
"description": "One of the elements of the OSD"
},
"osdDescElementRssiValue": { "osdDescElementRssiValue": {
"message": "Instantaneous RSSI value (flashes when below alarm threshold)" "message": "Instantaneous RSSI value (flashes when below alarm threshold)"
}, },
"osdTextElementTimer": {
"message": "Timer",
"description": "One of the elements of the OSD"
},
"osdDescElementTimer": {
"message": "A flight timer"
},
"osdTextElementThrottlePosition": {
"message": "Throttle position",
"description": "One of the elements of the OSD"
},
"osdDescElementThrottlePosition": { "osdDescElementThrottlePosition": {
"message": "Current throttle channel value" "message": "Current throttle channel value"
}, },
"osdTextElementCpuLoad": {
"message": "CPU load",
"description": "One of the elements of the OSD"
},
"osdDescElementCpuLoad": {
"message": "Current CPU load"
},
"osdTextElementVtxChannel": {
"message": "VTX channel",
"description": "One of the elements of the OSD"
},
"osdDescElementVtxChannel": {
"message": "Current VTX channel and power"
},
"osdTextElementVoltageWarning": {
"message": "Voltage warning",
"description": "One of the elements of the OSD"
},
"osdDescElementVoltageWarning": {
"message": "Shows a warning when the voltage is under the alarm value"
},
"osdTextElementArmed": {
"message": "Armed",
"description": "One of the elements of the OSD"
},
"osdDescElementArmed": { "osdDescElementArmed": {
"message": "Textual armed message" "message": "Textual armed message"
}, },
"osdTextElementDisarmed": {
"message": "Disarmed",
"description": "One of the elements of the OSD"
},
"osdDescElementDisarmed": { "osdDescElementDisarmed": {
"message": "Textual disarmed message" "message": "Textual disarmed message"
}, },
"osdTextElementCrosshairs": {
"message": "Crosshairs",
"description": "One of the elements of the OSD"
},
"osdDescElementCrosshairs": { "osdDescElementCrosshairs": {
"message": "Center of screen crosshair" "message": "Center of screen crosshair"
}, },
"osdTextElementArtificialHorizon": {
"message": "Artificial horizon",
"description": "One of the elements of the OSD"
},
"osdDescElementArtificialHorizon": { "osdDescElementArtificialHorizon": {
"message": "Graphical artificial horizon indicator" "message": "Graphical artificial horizon indicator"
}, },
"osdTextElementHorizonSidebars": {
"message": "Horizon sidebars",
"description": "One of the elements of the OSD"
},
"osdDescElementHorizonSidebars": { "osdDescElementHorizonSidebars": {
"message": "Sidebars around artificial horizon indicator" "message": "Sidebars around artificial horizon indicator"
}, },
"osdTextElementCurrentDraw": {
"message": "Current draw",
"description": "One of the elements of the OSD"
},
"osdDescElementCurrentDraw": { "osdDescElementCurrentDraw": {
"message": "Instantaneous battery current draw" "message": "Instantaneous battery current draw"
}, },
"osdTextElementMahDrawn": {
"message": "MAh drawn",
"description": "One of the elements of the OSD"
},
"osdDescElementMahDrawn": { "osdDescElementMahDrawn": {
"message": "Total battery capacity used" "message": "Total battery capacity used"
}, },
"osdTextElementCraftName": {
"message": "Craft name",
"description": "One of the elements of the OSD"
},
"osdDescElementCraftName": { "osdDescElementCraftName": {
"message": "Craft name as set in Configuration tab" "message": "Craft name as set in Configuration tab"
}, },
"osdDescElementDisplayName": { "osdTextElementAltitude": {
"message": "Display name as set by the \"display_name\" cli command" "message": "Altitude",
"description": "One of the elements of the OSD"
}, },
"osdDescElementAltitude": { "osdDescElementAltitude": {
"message": "Current altitude (flashes when above alarm threshold)" "message": "Current altitude (flashes when above alarm threshold)"
}, },
"osdTextElementOnTime": {
"message": "On time",
"description": "One of the elements of the OSD"
},
"osdDescElementOnTime": { "osdDescElementOnTime": {
"message": "Total time the craft has been powered on" "message": "Total time the craft has been powered on"
}, },
"osdTextElementFlyTime": {
"message": "Fly time",
"description": "One of the elements of the OSD"
},
"osdDescElementFlyTime": { "osdDescElementFlyTime": {
"message": "Total time the craft has been armed in the current power cycle (flashes when above alarm threshold)" "message": "Total time the craft has been armed in the current power cycle (flashes when above alarm threshold)"
}, },
"osdTextElementFlyMode": {
"message": "Fly mode",
"description": "One of the elements of the OSD"
},
"osdDescElementFlyMode": { "osdDescElementFlyMode": {
"message": "Current flight mode" "message": "Current flight mode"
}, },
"osdTextElementGPSSpeed": {
"message": "GPS speed",
"description": "One of the elements of the OSD"
},
"osdDescElementGPSSpeed": { "osdDescElementGPSSpeed": {
"message": "GPS provided speed" "message": "GPS provided speed"
}, },
"osdTextElementGPSSats": {
"message": "GPS sats",
"description": "One of the elements of the OSD"
},
"osdDescElementGPSSats": { "osdDescElementGPSSats": {
"message": "Number of satellites providing GPS fix" "message": "Number of satellites providing GPS fix"
}, },
"osdTextElementGPSLon": {
"message": "GPS longitude",
"description": "One of the elements of the OSD"
},
"osdDescElementGPSLon": { "osdDescElementGPSLon": {
"message": "GPS longitude" "message": "GPS longitude coordinate"
},
"osdTextElementGPSLat": {
"message": "GPS latitude",
"description": "One of the elements of the OSD"
}, },
"osdDescElementGPSLat": { "osdDescElementGPSLat": {
"message": "GPS latitude" "message": "GPS latitude coordinate"
},
"osdTextElementDebug": {
"message": "Debug",
"description": "One of the elements of the OSD"
}, },
"osdDescElementDebug": { "osdDescElementDebug": {
"message": "Debug variables" "message": "Debug variables"
}, },
"osdTextElementPIDRoll": {
"message": "PID roll",
"description": "One of the elements of the OSD"
},
"osdDescElementPIDRoll": { "osdDescElementPIDRoll": {
"message": "Roll axis PID gains" "message": "Roll axis PID gains"
}, },
"osdTextElementPIDPitch": {
"message": "PID pitch",
"description": "One of the elements of the OSD"
},
"osdDescElementPIDPitch": { "osdDescElementPIDPitch": {
"message": "Pitch axis PID gains" "message": "Pitch axis PID gains"
}, },
"osdTextElementPIDYaw": {
"message": "PID yaw",
"description": "One of the elements of the OSD"
},
"osdDescElementPIDYaw": { "osdDescElementPIDYaw": {
"message": "Yaw axis PID gains" "message": "Yaw axis PID gains"
}, },
"osdTextElementPower": {
"message": "Power",
"description": "One of the elements of the OSD"
},
"osdDescElementPower": { "osdDescElementPower": {
"message": "Instantaneous electrical power consumption" "message": "Instantaneous electrical power consumption"
}, },
"osdTextElementPIDRateProfile": {
"message": "PID and rate profile",
"description": "One of the elements of the OSD"
},
"osdDescElementPIDRateProfile": { "osdDescElementPIDRateProfile": {
"message": "Numerical display of the active PID and rate profiles" "message": "Numerical display of the active PID and rate profiles"
}, },
"osdTextElementBatteryWarning": {
"message": "Battery warning",
"description": "One of the elements of the OSD"
},
"osdDescElementBatteryWarning": { "osdDescElementBatteryWarning": {
"message": "Warning text that appears when the battery voltage falls below warning threshold" "message": "Warning text that appears when the battery voltage falls below warning threshold"
}, },
"osdTextElementAvgCellVoltage": {
"message": "Average cell voltage",
"description": "One of the elements of the OSD"
},
"osdDescElementAvgCellVoltage": { "osdDescElementAvgCellVoltage": {
"message": "Average cell voltage (main battery voltage / cell count)" "message": "Average cell voltage (main battery voltage / cell count)"
}, },
"osdTextElementPitchAngle": {
"message": "Pitch angle",
"description": "One of the elements of the OSD"
},
"osdDescElementPitchAngle": { "osdDescElementPitchAngle": {
"message": "Numerical pitch angle in degrees" "message": "Numerical pitch angle in degrees"
}, },
"osdTextElementRollAngle": {
"message": "Roll angle",
"description": "One of the elements of the OSD"
},
"osdDescElementRollAngle": { "osdDescElementRollAngle": {
"message": "Numerical roll angle in degrees" "message": "Numerical roll angle in degrees"
}, },
"osdTextElementMainBattUsage": {
"message": "Main battery usage",
"description": "One of the elements of the OSD"
},
"osdDescElementMainBattUsage": { "osdDescElementMainBattUsage": {
"message": "Graphical representation of battery capacity usage" "message": "Graphical representation of battery capacity usage"
}, },
"osdTextElementArmedTime": {
"message": "Armed time",
"description": "One of the elements of the OSD"
},
"osdDescElementArmedTime": { "osdDescElementArmedTime": {
"message": "Time since the craft was last armed" "message": "Time since the craft was last armed"
}, },
"osdDescElementWarnings": { "osdTextElementHomeDirection": {
"message": "Alerts (e.g. low battery), warnings (e.g. reasons for not arming, critically low battery) and visual beeper (4 flashing asterisks)." "message": "Home direction",
}, "description": "One of the elements of the OSD"
"osdDescElementEscTemperature": {
"message": "Temperature reported by ESC telemetry"
},
"osdDescElementEscRpm": {
"message": "RPM reported by ESC telemetry"
},
"osdDescElementEscRpmFreq": {
"message": "RPM frequency reported by ESC telemetry"
},
"osdDescElementRateProfileName": {
"message": "Shows the current rate profile name"
},
"osdDescElementPidProfileName": {
"message": "Shows the current PID profile name"
},
"osdDescElementRtcDateTime": {
"message": "Real time clock date / time"
},
"osdDescElementAdjustmentRange": {
"message": "Currently active adjustment range setting and value"
}, },
"osdDescElementHomeDirection": { "osdDescElementHomeDirection": {
"message": "Arrow showing direction to home position" "message": "Arrow showing direction to home position"
}, },
"osdTextElementHomeDistance": {
"message": "Home distance",
"description": "One of the elements of the OSD"
},
"osdDescElementHomeDistance": { "osdDescElementHomeDistance": {
"message": "Distance to home position (in either feet or metre based on unit system setting)" "message": "Distance to home position (in either feet or metre based on unit system setting)"
}, },
"osdTextElementNumericalHeading": {
"message": "Numerical heading",
"description": "One of the elements of the OSD"
},
"osdDescElementNumericalHeading": { "osdDescElementNumericalHeading": {
"message": "Numerical readout of current heading in degrees" "message": "Numerical readout of current heading in degrees"
}, },
"osdTextElementNumericalVario": {
"message": "Numerical vario",
"description": "One of the elements of the OSD"
},
"osdDescElementNumericalVario": { "osdDescElementNumericalVario": {
"message": "Numerical readout of vertical speed (in either feet or metre based on unit system setting)" "message": "Numerical readout of vertical speed (in either feet or metre based on unit system setting)"
}, },
"osdTextElementCompassBar": {
"message": "Compass bar",
"description": "One of the elements of the OSD"
},
"osdDescElementCompassBar": { "osdDescElementCompassBar": {
"message": "Graphical compass bar showing current heading" "message": "Graphical compass bar showing current heading"
}, },
"osdDescElementFlipArrow": { "osdTextElementWarnings": {
"message": "Arrow showing which side motors are up in turtle mode" "message": "Warnings",
"description": "One of the elements of the OSD"
}, },
"osdDescElementLinkQuality": { "osdDescElementWarnings": {
"message": "Alternative indicator for 'link quality' based on frame loss - use with caution" "message": "Alerts (e.g. low battery), warnings (e.g. reasons for not arming, critically low battery) and visual beeper (4 flashing asterisks)."
}, },
"osdDescElementFlightDist": { "osdTextElementEscTemperature": {
"message": "Distance flown during this flight." "message": "ESC temperature",
"description": "One of the elements of the OSD"
}, },
"osdDescElementStickOverlayLeft": { "osdDescElementEscTemperature": {
"message": "Overlay for the left transmitter stick position." "message": "Temperature reported by ESC telemetry"
}, },
"osdDescElementStickOverlayRight": { "osdTextElementEscRpm": {
"message": "Overlay for the right transmitter stick position." "message": "ESC RPM",
"description": "One of the elements of the OSD"
}, },
"osdDescElementTimer1" : { "osdDescElementEscRpm": {
"message": "Shows the value of timer 1" "message": "RPM reported by ESC telemetry"
}, },
"osdDescElementTimer2" : { "osdTextElementRemaningTimeEstimate": {
"message": "Shows the value of timer 2" "message": "Remaining time estimate",
"description": "One of the elements of the OSD"
}, },
"osdDescElementRemaningTimeEstimate" : { "osdDescElementRemaningTimeEstimate" : {
"message": "Estimate of flight time remaning" "message": "Estimate of flight time remaning"
}, },
"osdDescElementUnknown" : { "osdTextElementRtcDateTime": {
"message": "Unknown element (details to be added in a future release)" "message": "RTC date and time",
"description": "One of the elements of the OSD"
},
"osdDescElementRtcDateTime": {
"message": "Real time clock date / time"
},
"osdTextElementAdjustmentRange": {
"message": "Adjustment range",
"description": "One of the elements of the OSD"
},
"osdDescElementAdjustmentRange": {
"message": "Currently active adjustment range setting and value"
},
"osdTextElementTimer1": {
"message": "Timer 1",
"description": "One of the elements of the OSD"
},
"osdDescElementTimer1" : {
"message": "Shows the value of timer 1"
},
"osdTextElementTimer2": {
"message": "Timer 2",
"description": "One of the elements of the OSD"
},
"osdDescElementTimer2" : {
"message": "Shows the value of timer 2"
},
"osdTextElementCoreTemperature": {
"message": "Core temperature",
"description": "One of the elements of the OSD"
}, },
"osdDescElementCoreTemperature": { "osdDescElementCoreTemperature": {
"message": "Temperature of the STM32 MCU core" "message": "Temperature of the STM32 MCU core"
}, },
"osdTextAntiGravity": {
"message": "Anti gravity",
"description": "One of the elements of the OSD"
},
"osdDescAntiGravity": { "osdDescAntiGravity": {
"message": "Enables an indicator when the anti gravity is active" "message": "Enables an indicator when the anti gravity is active"
}, },
"osdTextGForce": {
"message": "G force",
"description": "One of the elements of the OSD"
},
"osdDescGForce": { "osdDescGForce": {
"message": "Shows how much G-Force the craft is experiencing" "message": "Shows how much G-Force the craft is experiencing"
}, },
"osdTextElementMotorDiag": {
"message": "Motor diagnostics",
"description": "One of the elements of the OSD"
},
"osdDescElementMotorDiag": { "osdDescElementMotorDiag": {
"message": "Shows a graph of the output of each motor" "message": "Shows a graph of the output of each motor"
}, },
"osdTextElementLogStatus": {
"message": "Blackbox log status",
"description": "One of the elements of the OSD"
},
"osdDescElementLogStatus": { "osdDescElementLogStatus": {
"message": "Blackbox number and warnings" "message": "Blackbox number and warnings"
}, },
"osdTextElementFlipArrow": {
"message": "Flip after crash arrow",
"description": "One of the elements of the OSD"
},
"osdDescElementFlipArrow": {
"message": "Arrow showing which side motors are up in turtle mode"
},
"osdTextElementLinkQuality": {
"message": "Link quality",
"description": "One of the elements of the OSD"
},
"osdDescElementLinkQuality": {
"message": "Alternative indicator for 'link quality' based on frame loss - use with caution"
},
"osdTextElementFlightDist": {
"message": "Flight distance",
"description": "One of the elements of the OSD"
},
"osdDescElementFlightDist": {
"message": "Distance flown during this flight."
},
"osdTextElementStickOverlayLeft": {
"message": "Stick overlay left",
"description": "One of the elements of the OSD"
},
"osdDescElementStickOverlayLeft": {
"message": "Overlay for the left transmitter stick position."
},
"osdTextElementStickOverlayRight": {
"message": "Stick overlay right",
"description": "One of the elements of the OSD"
},
"osdDescElementStickOverlayRight": {
"message": "Overlay for the right transmitter stick position."
},
"osdTextElementDisplayName": {
"message": "Display name",
"description": "One of the elements of the OSD"
},
"osdDescElementDisplayName": {
"message": "Display name as set by the \"display_name\" cli command"
},
"osdTextElementEscRpmFreq": {
"message": "ESC RPM frequency",
"description": "One of the elements of the OSD"
},
"osdDescElementEscRpmFreq": {
"message": "RPM frequency reported by ESC telemetry"
},
"osdTextElementRateProfileName": {
"message": "Rate profile name",
"description": "One of the elements of the OSD"
},
"osdDescElementRateProfileName": {
"message": "Shows the current rate profile name"
},
"osdTextElementPidProfileName": {
"message": "PID profile name",
"description": "One of the elements of the OSD"
},
"osdDescElementPidProfileName": {
"message": "Shows the current PID profile name"
},
"osdTextElementOsdProfileName": {
"message": "OSD profile name",
"description": "One of the elements of the OSD"
},
"osdDescElementOsdProfileName": { "osdDescElementOsdProfileName": {
"message": "OSD profile name as set in the \"osd_profile_1_name\", \"osd_profile_2_name\" and \"osd_profile_3_name\" CLI variables" "message": "OSD profile name as set in the \"osd_profile_1_name\", \"osd_profile_2_name\" and \"osd_profile_3_name\" CLI variables"
}, },
"osdTextElementUnknown": {
"message": "Unknown $1",
"description": "One of the elements of the OSD"
},
"osdDescElementUnknown" : {
"message": "Unknown element (details to be added in a future release)"
},
"osdDescStatMaxSpeed": { "osdDescStatMaxSpeed": {
"message": "Maximum recorded speed" "message": "Maximum recorded speed"

View file

@ -67,6 +67,14 @@ i18n.getLanguagesAvailables = function() {
return languagesAvailables; return languagesAvailables;
} }
i18n.getCurrentLocale = function() {
return i18next.language;
}
i18n.existsMessage = function(key) {
return i18next.exists(key);
}
/** /**
* Helper functions, don't depend of the i18n framework * Helper functions, don't depend of the i18n framework
*/ */

View file

@ -407,6 +407,7 @@ OSD.constants = {
ALL_DISPLAY_FIELDS: { ALL_DISPLAY_FIELDS: {
MAIN_BATT_VOLTAGE: { MAIN_BATT_VOLTAGE: {
name: 'MAIN_BATT_VOLTAGE', name: 'MAIN_BATT_VOLTAGE',
text: 'osdTextElementMainBattVoltage',
desc: 'osdDescElementMainBattVoltage', desc: 'osdDescElementMainBattVoltage',
default_position: -29, default_position: -29,
draw_order: 20, draw_order: 20,
@ -415,6 +416,7 @@ OSD.constants = {
}, },
RSSI_VALUE: { RSSI_VALUE: {
name: 'RSSI_VALUE', name: 'RSSI_VALUE',
text: 'osdTextElementRssiValue',
desc: 'osdDescElementRssiValue', desc: 'osdDescElementRssiValue',
default_position: -59, default_position: -59,
draw_order: 30, draw_order: 30,
@ -423,12 +425,15 @@ OSD.constants = {
}, },
TIMER: { TIMER: {
name: 'TIMER', name: 'TIMER',
text: 'osdTextElementTimer',
desc: 'osdDescElementTimer',
default_position: -39, default_position: -39,
positionable: true, positionable: true,
preview: FONT.symbol(SYM.ON_M) + ' 11:11' preview: FONT.symbol(SYM.ON_M) + ' 11:11'
}, },
THROTTLE_POSITION: { THROTTLE_POSITION: {
name: 'THROTTLE_POSITION', name: 'THROTTLE_POSITION',
text: 'osdTextElementThrottlePosition',
desc: 'osdDescElementThrottlePosition', desc: 'osdDescElementThrottlePosition',
default_position: -9, default_position: -9,
draw_order: 110, draw_order: 110,
@ -437,12 +442,16 @@ OSD.constants = {
}, },
CPU_LOAD: { CPU_LOAD: {
name: 'CPU_LOAD', name: 'CPU_LOAD',
text: 'osdTextElementCpuLoad',
desc: 'osdDescElementCpuLoad',
default_position: 26, default_position: 26,
positionable: true, positionable: true,
preview: '15' preview: '15'
}, },
VTX_CHANNEL: { VTX_CHANNEL: {
name: 'VTX_CHANNEL', name: 'VTX_CHANNEL',
text: 'osdTextElementVtxChannel',
desc: 'osdDescElementVtxChannel',
default_position: 1, default_position: 1,
draw_order: 120, draw_order: 120,
positionable: true, positionable: true,
@ -450,12 +459,15 @@ OSD.constants = {
}, },
VOLTAGE_WARNING: { VOLTAGE_WARNING: {
name: 'VOLTAGE_WARNING', name: 'VOLTAGE_WARNING',
text: 'osdTextElementVoltageWarning',
desc: 'osdDescElementVoltageWarning',
default_position: -80, default_position: -80,
positionable: true, positionable: true,
preview: 'LOW VOLTAGE' preview: 'LOW VOLTAGE'
}, },
ARMED: { ARMED: {
name: 'ARMED', name: 'ARMED',
text: 'osdTextElementArmed',
desc: 'osdDescElementArmed', desc: 'osdDescElementArmed',
default_position: -107, default_position: -107,
positionable: true, positionable: true,
@ -463,6 +475,7 @@ OSD.constants = {
}, },
DISARMED: { DISARMED: {
name: 'DISARMED', name: 'DISARMED',
text: 'osdTextElementDisarmed',
desc: 'osdDescElementDisarmed', desc: 'osdDescElementDisarmed',
default_position: -109, default_position: -109,
draw_order: 280, draw_order: 280,
@ -471,6 +484,7 @@ OSD.constants = {
}, },
CROSSHAIRS: { CROSSHAIRS: {
name: 'CROSSHAIRS', name: 'CROSSHAIRS',
text: 'osdTextElementCrosshairs',
desc: 'osdDescElementCrosshairs', desc: 'osdDescElementCrosshairs',
default_position: function () { default_position: function () {
var position = 193; var position = 193;
@ -489,6 +503,7 @@ OSD.constants = {
}, },
ARTIFICIAL_HORIZON: { ARTIFICIAL_HORIZON: {
name: 'ARTIFICIAL_HORIZON', name: 'ARTIFICIAL_HORIZON',
text: 'osdTextElementArtificialHorizon',
desc: 'osdDescElementArtificialHorizon', desc: 'osdDescElementArtificialHorizon',
default_position: function () { default_position: function () {
var position = 74; var position = 74;
@ -525,6 +540,7 @@ OSD.constants = {
}, },
HORIZON_SIDEBARS: { HORIZON_SIDEBARS: {
name: 'HORIZON_SIDEBARS', name: 'HORIZON_SIDEBARS',
text: 'osdTextElementHorizonSidebars',
desc: 'osdDescElementHorizonSidebars', desc: 'osdDescElementHorizonSidebars',
default_position: function () { default_position: function () {
var position = 194; var position = 194;
@ -563,6 +579,7 @@ OSD.constants = {
}, },
CURRENT_DRAW: { CURRENT_DRAW: {
name: 'CURRENT_DRAW', name: 'CURRENT_DRAW',
text: 'osdTextElementCurrentDraw',
desc: 'osdDescElementCurrentDraw', desc: 'osdDescElementCurrentDraw',
default_position: -23, default_position: -23,
draw_order: 130, draw_order: 130,
@ -573,6 +590,7 @@ OSD.constants = {
}, },
MAH_DRAWN: { MAH_DRAWN: {
name: 'MAH_DRAWN', name: 'MAH_DRAWN',
text: 'osdTextElementMahDrawn',
desc: 'osdDescElementMahDrawn', desc: 'osdDescElementMahDrawn',
default_position: -18, default_position: -18,
draw_order: 140, draw_order: 140,
@ -583,6 +601,7 @@ OSD.constants = {
}, },
CRAFT_NAME: { CRAFT_NAME: {
name: 'CRAFT_NAME', name: 'CRAFT_NAME',
text: 'osdTextElementCraftName',
desc: 'osdDescElementCraftName', desc: 'osdDescElementCraftName',
default_position: -77, default_position: -77,
draw_order: 150, draw_order: 150,
@ -591,6 +610,7 @@ OSD.constants = {
}, },
ALTITUDE: { ALTITUDE: {
name: 'ALTITUDE', name: 'ALTITUDE',
text: 'osdTextElementAltitude',
desc: 'osdDescElementAltitude', desc: 'osdDescElementAltitude',
default_position: 62, default_position: 62,
draw_order: 160, draw_order: 160,
@ -601,6 +621,7 @@ OSD.constants = {
}, },
ONTIME: { ONTIME: {
name: 'ONTIME', name: 'ONTIME',
text: 'osdTextElementOnTime',
desc: 'osdDescElementOnTime', desc: 'osdDescElementOnTime',
default_position: -1, default_position: -1,
positionable: true, positionable: true,
@ -608,6 +629,7 @@ OSD.constants = {
}, },
FLYTIME: { FLYTIME: {
name: 'FLYTIME', name: 'FLYTIME',
text: 'osdTextElementFlyTime',
desc: 'osdDescElementFlyTime', desc: 'osdDescElementFlyTime',
default_position: -1, default_position: -1,
positionable: true, positionable: true,
@ -615,6 +637,7 @@ OSD.constants = {
}, },
FLYMODE: { FLYMODE: {
name: 'FLYMODE', name: 'FLYMODE',
text: 'osdTextElementFlyMode',
desc: 'osdDescElementFlyMode', desc: 'osdDescElementFlyMode',
default_position: -1, default_position: -1,
draw_order: 90, draw_order: 90,
@ -623,6 +646,7 @@ OSD.constants = {
}, },
GPS_SPEED: { GPS_SPEED: {
name: 'GPS_SPEED', name: 'GPS_SPEED',
text: 'osdTextElementGPSSpeed',
desc: 'osdDescElementGPSSpeed', desc: 'osdDescElementGPSSpeed',
default_position: -1, default_position: -1,
draw_order: 810, draw_order: 810,
@ -633,6 +657,7 @@ OSD.constants = {
}, },
GPS_SATS: { GPS_SATS: {
name: 'GPS_SATS', name: 'GPS_SATS',
text: 'osdTextElementGPSSats',
desc: 'osdDescElementGPSSats', desc: 'osdDescElementGPSSats',
default_position: -1, default_position: -1,
draw_order: 800, draw_order: 800,
@ -641,6 +666,7 @@ OSD.constants = {
}, },
GPS_LON: { GPS_LON: {
name: 'GPS_LON', name: 'GPS_LON',
text: 'osdTextElementGPSLon',
desc: 'osdDescElementGPSLon', desc: 'osdDescElementGPSLon',
default_position: -1, default_position: -1,
draw_order: 830, draw_order: 830,
@ -649,6 +675,7 @@ OSD.constants = {
}, },
GPS_LAT: { GPS_LAT: {
name: 'GPS_LAT', name: 'GPS_LAT',
text: 'osdTextElementGPSLat',
desc: 'osdDescElementGPSLat', desc: 'osdDescElementGPSLat',
default_position: -1, default_position: -1,
draw_order: 820, draw_order: 820,
@ -657,6 +684,7 @@ OSD.constants = {
}, },
DEBUG: { DEBUG: {
name: 'DEBUG', name: 'DEBUG',
text: 'osdTextElementDebug',
desc: 'osdDescElementDebug', desc: 'osdDescElementDebug',
default_position: -1, default_position: -1,
draw_order: 240, draw_order: 240,
@ -665,6 +693,7 @@ OSD.constants = {
}, },
PID_ROLL: { PID_ROLL: {
name: 'PID_ROLL', name: 'PID_ROLL',
text: 'osdTextElementPIDRoll',
desc: 'osdDescElementPIDRoll', desc: 'osdDescElementPIDRoll',
default_position: 0x800 | (10 << 5) | 2, // 0x0800 | (y << 5) | x default_position: 0x800 | (10 << 5) | 2, // 0x0800 | (y << 5) | x
draw_order: 170, draw_order: 170,
@ -673,6 +702,7 @@ OSD.constants = {
}, },
PID_PITCH: { PID_PITCH: {
name: 'PID_PITCH', name: 'PID_PITCH',
text: 'osdTextElementPIDPitch',
desc: 'osdDescElementPIDPitch', desc: 'osdDescElementPIDPitch',
default_position: 0x800 | (11 << 5) | 2, // 0x0800 | (y << 5) | x default_position: 0x800 | (11 << 5) | 2, // 0x0800 | (y << 5) | x
draw_order: 180, draw_order: 180,
@ -681,6 +711,7 @@ OSD.constants = {
}, },
PID_YAW: { PID_YAW: {
name: 'PID_YAW', name: 'PID_YAW',
text: 'osdTextElementPIDYaw',
desc: 'osdDescElementPIDYaw', desc: 'osdDescElementPIDYaw',
default_position: 0x800 | (12 << 5) | 2, // 0x0800 | (y << 5) | x default_position: 0x800 | (12 << 5) | 2, // 0x0800 | (y << 5) | x
draw_order: 190, draw_order: 190,
@ -689,6 +720,7 @@ OSD.constants = {
}, },
POWER: { POWER: {
name: 'POWER', name: 'POWER',
text: 'osdTextElementPower',
desc: 'osdDescElementPower', desc: 'osdDescElementPower',
default_position: (15 << 5) | 2, default_position: (15 << 5) | 2,
draw_order: 200, draw_order: 200,
@ -699,6 +731,7 @@ OSD.constants = {
}, },
PID_RATE_PROFILE: { PID_RATE_PROFILE: {
name: 'PID_RATE_PROFILE', name: 'PID_RATE_PROFILE',
text: 'osdTextElementPIDRateProfile',
desc: 'osdDescElementPIDRateProfile', desc: 'osdDescElementPIDRateProfile',
default_position: 0x800 | (13 << 5) | 2, // 0x0800 | (y << 5) | x default_position: 0x800 | (13 << 5) | 2, // 0x0800 | (y << 5) | x
draw_order: 210, draw_order: 210,
@ -707,6 +740,7 @@ OSD.constants = {
}, },
BATTERY_WARNING: { BATTERY_WARNING: {
name: 'BATTERY_WARNING', name: 'BATTERY_WARNING',
text: 'osdTextElementBatteryWarning',
desc: 'osdDescElementBatteryWarning', desc: 'osdDescElementBatteryWarning',
default_position: -1, default_position: -1,
positionable: true, positionable: true,
@ -714,6 +748,7 @@ OSD.constants = {
}, },
AVG_CELL_VOLTAGE: { AVG_CELL_VOLTAGE: {
name: 'AVG_CELL_VOLTAGE', name: 'AVG_CELL_VOLTAGE',
text: 'osdTextElementAvgCellVoltage',
desc: 'osdDescElementAvgCellVoltage', desc: 'osdDescElementAvgCellVoltage',
default_position: 12 << 5, default_position: 12 << 5,
draw_order: 230, draw_order: 230,
@ -722,6 +757,7 @@ OSD.constants = {
}, },
PITCH_ANGLE: { PITCH_ANGLE: {
name: 'PITCH_ANGLE', name: 'PITCH_ANGLE',
text: 'osdTextElementPitchAngle',
desc: 'osdDescElementPitchAngle', desc: 'osdDescElementPitchAngle',
default_position: -1, default_position: -1,
draw_order: 250, draw_order: 250,
@ -730,6 +766,7 @@ OSD.constants = {
}, },
ROLL_ANGLE: { ROLL_ANGLE: {
name: 'ROLL_ANGLE', name: 'ROLL_ANGLE',
text: 'osdTextElementRollAngle',
desc: 'osdDescElementRollAngle', desc: 'osdDescElementRollAngle',
default_position: -1, default_position: -1,
draw_order: 260, draw_order: 260,
@ -738,6 +775,7 @@ OSD.constants = {
}, },
MAIN_BATT_USAGE: { MAIN_BATT_USAGE: {
name: 'MAIN_BATT_USAGE', name: 'MAIN_BATT_USAGE',
text: 'osdTextElementMainBattUsage',
desc: 'osdDescElementMainBattUsage', desc: 'osdDescElementMainBattUsage',
default_position: -17, default_position: -17,
draw_order: 270, draw_order: 270,
@ -746,6 +784,7 @@ OSD.constants = {
}, },
ARMED_TIME: { ARMED_TIME: {
name: 'ARMED_TIME', name: 'ARMED_TIME',
text: 'osdTextElementArmedTime',
desc: 'osdDescElementArmedTime', desc: 'osdDescElementArmedTime',
default_position: -1, default_position: -1,
positionable: true, positionable: true,
@ -753,6 +792,7 @@ OSD.constants = {
}, },
HOME_DIR: { HOME_DIR: {
name: 'HOME_DIRECTION', name: 'HOME_DIRECTION',
text: 'osdTextElementHomeDirection',
desc: 'osdDescElementHomeDirection', desc: 'osdDescElementHomeDirection',
default_position: -1, default_position: -1,
draw_order: 850, draw_order: 850,
@ -761,6 +801,7 @@ OSD.constants = {
}, },
HOME_DIST: { HOME_DIST: {
name: 'HOME_DISTANCE', name: 'HOME_DISTANCE',
text: 'osdTextElementHomeDistance',
desc: 'osdDescElementHomeDistance', desc: 'osdDescElementHomeDistance',
default_position: -1, default_position: -1,
draw_order: 840, draw_order: 840,
@ -771,6 +812,7 @@ OSD.constants = {
}, },
NUMERICAL_HEADING: { NUMERICAL_HEADING: {
name: 'NUMERICAL_HEADING', name: 'NUMERICAL_HEADING',
text: 'osdTextElementNumericalHeading',
desc: 'osdDescElementNumericalHeading', desc: 'osdDescElementNumericalHeading',
default_position: -1, default_position: -1,
draw_order: 290, draw_order: 290,
@ -779,6 +821,7 @@ OSD.constants = {
}, },
NUMERICAL_VARIO: { NUMERICAL_VARIO: {
name: 'NUMERICAL_VARIO', name: 'NUMERICAL_VARIO',
text: 'osdTextElementNumericalVario',
desc: 'osdDescElementNumericalVario', desc: 'osdDescElementNumericalVario',
default_position: -1, default_position: -1,
draw_order: 300, draw_order: 300,
@ -787,6 +830,7 @@ OSD.constants = {
}, },
COMPASS_BAR: { COMPASS_BAR: {
name: 'COMPASS_BAR', name: 'COMPASS_BAR',
text: 'osdTextElementCompassBar',
desc: 'osdDescElementCompassBar', desc: 'osdDescElementCompassBar',
default_position: -1, default_position: -1,
draw_order: 310, draw_order: 310,
@ -799,6 +843,7 @@ OSD.constants = {
}, },
WARNINGS: { WARNINGS: {
name: 'WARNINGS', name: 'WARNINGS',
text: 'osdTextElementWarnings',
desc: 'osdDescElementWarnings', desc: 'osdDescElementWarnings',
default_position: -1, default_position: -1,
draw_order: 220, draw_order: 220,
@ -807,6 +852,7 @@ OSD.constants = {
}, },
ESC_TEMPERATURE: { ESC_TEMPERATURE: {
name: 'ESC_TEMPERATURE', name: 'ESC_TEMPERATURE',
text: 'osdTextElementEscTemperature',
desc: 'osdDescElementEscTemperature', desc: 'osdDescElementEscTemperature',
default_position: -1, default_position: -1,
draw_order: 900, draw_order: 900,
@ -817,6 +863,7 @@ OSD.constants = {
}, },
ESC_RPM: { ESC_RPM: {
name: 'ESC_RPM', name: 'ESC_RPM',
text: 'osdTextElementEscRpm',
desc: 'osdDescElementEscRpm', desc: 'osdDescElementEscRpm',
default_position: -1, default_position: -1,
draw_order: 1000, draw_order: 1000,
@ -825,6 +872,7 @@ OSD.constants = {
}, },
REMAINING_TIME_ESTIMATE: { REMAINING_TIME_ESTIMATE: {
name: 'REMAINING_TIME_ESTIMATE', name: 'REMAINING_TIME_ESTIMATE',
text: 'osdTextElementRemaningTimeEstimate',
desc: 'osdDescElementRemaningTimeEstimate', desc: 'osdDescElementRemaningTimeEstimate',
default_position: -1, default_position: -1,
draw_order: 80, draw_order: 80,
@ -833,6 +881,7 @@ OSD.constants = {
}, },
RTC_DATE_TIME: { RTC_DATE_TIME: {
name: 'RTC_DATE_TIME', name: 'RTC_DATE_TIME',
text: 'osdTextElementRtcDateTime',
desc: 'osdDescElementRtcDateTime', desc: 'osdDescElementRtcDateTime',
default_position: -1, default_position: -1,
draw_order: 360, draw_order: 360,
@ -841,6 +890,7 @@ OSD.constants = {
}, },
ADJUSTMENT_RANGE: { ADJUSTMENT_RANGE: {
name: 'ADJUSTMENT_RANGE', name: 'ADJUSTMENT_RANGE',
text: 'osdTextElementAdjustmentRange',
desc: 'osdDescElementAdjustmentRange', desc: 'osdDescElementAdjustmentRange',
default_position: -1, default_position: -1,
draw_order: 370, draw_order: 370,
@ -849,6 +899,7 @@ OSD.constants = {
}, },
TIMER_1: { TIMER_1: {
name: 'TIMER_1', name: 'TIMER_1',
text: 'osdTextElementTimer1',
desc: 'osdDescElementTimer1', desc: 'osdDescElementTimer1',
default_position: -1, default_position: -1,
draw_order: 60, draw_order: 60,
@ -859,6 +910,7 @@ OSD.constants = {
}, },
TIMER_2: { TIMER_2: {
name: 'TIMER_2', name: 'TIMER_2',
text: 'osdTextElementTimer2',
desc: 'osdDescElementTimer2', desc: 'osdDescElementTimer2',
default_position: -1, default_position: -1,
draw_order: 70, draw_order: 70,
@ -869,6 +921,7 @@ OSD.constants = {
}, },
CORE_TEMPERATURE: { CORE_TEMPERATURE: {
name: 'CORE_TEMPERATURE', name: 'CORE_TEMPERATURE',
text: 'osdTextElementCoreTemperature',
desc: 'osdDescElementCoreTemperature', desc: 'osdDescElementCoreTemperature',
default_position: -1, default_position: -1,
draw_order: 380, draw_order: 380,
@ -879,6 +932,7 @@ OSD.constants = {
}, },
ANTI_GRAVITY: { ANTI_GRAVITY: {
name: 'ANTI_GRAVITY', name: 'ANTI_GRAVITY',
text: 'osdTextAntiGravity',
desc: 'osdDescAntiGravity', desc: 'osdDescAntiGravity',
default_position: -1, default_position: -1,
draw_order: 320, draw_order: 320,
@ -887,6 +941,7 @@ OSD.constants = {
}, },
G_FORCE: { G_FORCE: {
name: 'G_FORCE', name: 'G_FORCE',
text: 'osdTextGForce',
desc: 'osdDescGForce', desc: 'osdDescGForce',
default_position: -1, default_position: -1,
draw_order: 15, draw_order: 15,
@ -895,6 +950,7 @@ OSD.constants = {
}, },
MOTOR_DIAG: { MOTOR_DIAG: {
name: 'MOTOR_DIAGNOSTICS', name: 'MOTOR_DIAGNOSTICS',
text: 'osdTextElementMotorDiag',
desc: 'osdDescElementMotorDiag', desc: 'osdDescElementMotorDiag',
default_position: -1, default_position: -1,
draw_order: 335, draw_order: 335,
@ -906,6 +962,7 @@ OSD.constants = {
}, },
LOG_STATUS: { LOG_STATUS: {
name: 'LOG_STATUS', name: 'LOG_STATUS',
text: 'osdTextElementLogStatus',
desc: 'osdDescElementLogStatus', desc: 'osdDescElementLogStatus',
default_position: -1, default_position: -1,
draw_order: 330, draw_order: 330,
@ -914,6 +971,7 @@ OSD.constants = {
}, },
FLIP_ARROW: { FLIP_ARROW: {
name: 'FLIP_ARROW', name: 'FLIP_ARROW',
text: 'osdTextElementFlipArrow',
desc: 'osdDescElementFlipArrow', desc: 'osdDescElementFlipArrow',
default_position: -1, default_position: -1,
draw_order: 340, draw_order: 340,
@ -922,6 +980,7 @@ OSD.constants = {
}, },
LINK_QUALITY: { LINK_QUALITY: {
name: 'LINK_QUALITY', name: 'LINK_QUALITY',
text: 'osdTextElementLinkQuality',
desc: 'osdDescElementLinkQuality', desc: 'osdDescElementLinkQuality',
default_position: -1, default_position: -1,
draw_order: 390, draw_order: 390,
@ -930,6 +989,7 @@ OSD.constants = {
}, },
FLIGHT_DIST: { FLIGHT_DIST: {
name: 'FLIGHT_DISTANCE', name: 'FLIGHT_DISTANCE',
text: 'osdTextElementFlightDist',
desc: 'osdDescElementFlightDist', desc: 'osdDescElementFlightDist',
default_position: -1, default_position: -1,
draw_order: 860, draw_order: 860,
@ -940,6 +1000,7 @@ OSD.constants = {
}, },
STICK_OVERLAY_LEFT: { STICK_OVERLAY_LEFT: {
name: 'STICK_OVERLAY_LEFT', name: 'STICK_OVERLAY_LEFT',
text: 'osdTextElementStickOverlayLeft',
desc: 'osdDescElementStickOverlayLeft', desc: 'osdDescElementStickOverlayLeft',
default_position: -1, default_position: -1,
draw_order: 400, draw_order: 400,
@ -948,6 +1009,7 @@ OSD.constants = {
}, },
STICK_OVERLAY_RIGHT: { STICK_OVERLAY_RIGHT: {
name: 'STICK_OVERLAY_RIGHT', name: 'STICK_OVERLAY_RIGHT',
text: 'osdTextElementStickOverlayRight',
desc: 'osdDescElementStickOverlayRight', desc: 'osdDescElementStickOverlayRight',
default_position: -1, default_position: -1,
draw_order: 410, draw_order: 410,
@ -956,6 +1018,7 @@ OSD.constants = {
}, },
DISPLAY_NAME: { DISPLAY_NAME: {
name: 'DISPLAY_NAME', name: 'DISPLAY_NAME',
text: 'osdTextElementDisplayName',
desc: 'osdDescElementDisplayName', desc: 'osdDescElementDisplayName',
default_position: -77, default_position: -77,
draw_order: 350, draw_order: 350,
@ -966,6 +1029,7 @@ OSD.constants = {
}, },
ESC_RPM_FREQ: { ESC_RPM_FREQ: {
name: 'ESC_RPM_FREQ', name: 'ESC_RPM_FREQ',
text: 'osdTextElementEscRpmFreq',
desc: 'osdDescElementEscRpmFreq', desc: 'osdDescElementEscRpmFreq',
default_position: -1, default_position: -1,
draw_order: 1010, draw_order: 1010,
@ -974,6 +1038,7 @@ OSD.constants = {
}, },
RATE_PROFILE_NAME: { RATE_PROFILE_NAME: {
name: 'RATE_PROFILE_NAME', name: 'RATE_PROFILE_NAME',
text: 'osdTextElementRateProfileName',
desc: 'osdDescElementRateProfileName', desc: 'osdDescElementRateProfileName',
default_position: -1, default_position: -1,
draw_order: 420, draw_order: 420,
@ -982,6 +1047,7 @@ OSD.constants = {
}, },
PID_PROFILE_NAME: { PID_PROFILE_NAME: {
name: 'PID_PROFILE_NAME', name: 'PID_PROFILE_NAME',
text: 'osdTextElementPidProfileName',
desc: 'osdDescElementPidProfileName', desc: 'osdDescElementPidProfileName',
default_position: -1, default_position: -1,
draw_order: 430, draw_order: 430,
@ -990,6 +1056,7 @@ OSD.constants = {
}, },
OSD_PROFILE_NAME: { OSD_PROFILE_NAME: {
name: 'OSD_PROFILE_NAME', name: 'OSD_PROFILE_NAME',
text: 'osdTextElementOsdProfileName',
desc: 'osdDescElementOsdProfileName', desc: 'osdDescElementOsdProfileName',
default_position: -1, default_position: -1,
draw_order: 440, draw_order: 440,
@ -999,6 +1066,7 @@ OSD.constants = {
}, },
UNKNOWN_DISPLAY_FIELD: { UNKNOWN_DISPLAY_FIELD: {
name: 'UNKNOWN_', name: 'UNKNOWN_',
text: 'osdTextElementUnknown',
desc: 'osdDescElementUnknown', desc: 'osdDescElementUnknown',
default_position: -1, default_position: -1,
positionable: true, positionable: true,
@ -1670,6 +1738,7 @@ OSD.msp = {
var c = OSD.constants.STATISTIC_FIELDS[j]; var c = OSD.constants.STATISTIC_FIELDS[j];
d.stat_items.push({ d.stat_items.push({
name: c.name, name: c.name,
text: c.text,
desc: c.desc, desc: c.desc,
index: j, index: j,
enabled: v === 1 enabled: v === 1
@ -1745,6 +1814,7 @@ OSD.msp = {
} }
d.display_items.push($.extend({ d.display_items.push($.extend({
name: suffix ? c.name + suffix : c.name, name: suffix ? c.name + suffix : c.name,
text: suffix ? [c.text, suffix] : c.text,
desc: c.desc, desc: c.desc,
index: j, index: j,
draw_order: c.draw_order, draw_order: c.draw_order,
@ -2258,7 +2328,15 @@ TABS.osd.initialize = function (callback) {
}) })
); );
} }
$field.append('<label for="' + field.name + '" class="char-label">' + inflection.titleize(field.name) + '</label>'); let finalFieldName = inflection.titleize(field.name);
if (field.text) {
if (Array.isArray(field.text) && i18n.existsMessage(field.text[0])) {
finalFieldName = i18n.getMessage(field.text[0], field.text.slice(1));
} else if (i18n.existsMessage(field.text)) {
finalFieldName = i18n.getMessage(field.text);
}
}
$field.append('<label for="' + field.name + '" class="char-label">' + finalFieldName + '</label>');
if (field.positionable && field.isVisible[OSD.getCurrentPreviewProfile()]) { if (field.positionable && field.isVisible[OSD.getCurrentPreviewProfile()]) {
$field.append( $field.append(
$('<input type="number" class="' + field.index + ' position"></input>') $('<input type="number" class="' + field.index + ' position"></input>')
@ -2279,7 +2357,7 @@ TABS.osd.initialize = function (callback) {
// Insert in alphabetical order // Insert in alphabetical order
let added = false; let added = false;
$displayFields.children().each(function() { $displayFields.children().each(function() {
if ($(this).text() > $field.text()) { if ($(this).text().localeCompare($field.text(), i18n.getCurrentLocale(), { sensitivity: 'base' }) > 0) {
$(this).before($field); $(this).before($field);
added = true; added = true;
return false; return false;