From 37bf07f46bac56d539bc619c73bbba7603852623 Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sat, 8 Jun 2024 03:02:50 +0300 Subject: [PATCH 01/11] Improve some translations --- ExtLibs/Utilities/Resources/strings_uk.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ExtLibs/Utilities/Resources/strings_uk.txt b/ExtLibs/Utilities/Resources/strings_uk.txt index e54dc25c59..49fc0208cd 100644 --- a/ExtLibs/Utilities/Resources/strings_uk.txt +++ b/ExtLibs/Utilities/Resources/strings_uk.txt @@ -75,8 +75,8 @@ Bat8 Current (Amps)=Струм батареї #8 (Amps) Bat9 Current (Amps)=Струм батареї #9 (Amps) Distance to Home (dist)=Відстань до дом.точки (dist) Distance From Moving Base (dist)=Відстань від рухомої бази (dist) -Elevation to Mav (deg)=Підвищення до безпілотника (deg) -Bearing to Mav (deg)=Пеленг до безпілотника (deg) +Elevation to Mav (deg)=Підвищення до М-БпЛА (deg) +Bearing to Mav (deg)=Пеленг до М-БпЛА (deg) Sonar Range (alt)=Діапазон сонара (alt) Sonar Voltage (Volt)=Напруга сонара (Volt) 3DR Radio rssi=Потужність 3DR-радіосигналу (rssi) From 074d1908e6efad75f02ba91be3b98865696796e1 Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sat, 8 Jun 2024 03:21:02 +0300 Subject: [PATCH 02/11] Implement field translations --- ExtLibs/ArduPilot/CurrentState.cs | 37 ++++++++++++++++++- .../Attributes/DisplayTextAttribute.cs | 25 +++++++++++++ ExtLibs/Utilities/Resources/strings_uk.txt | 12 ++++++ GCSViews/FlightData.cs | 2 +- 4 files changed, 74 insertions(+), 2 deletions(-) diff --git a/ExtLibs/ArduPilot/CurrentState.cs b/ExtLibs/ArduPilot/CurrentState.cs index 2815f62f85..8385b29d89 100644 --- a/ExtLibs/ArduPilot/CurrentState.cs +++ b/ExtLibs/ArduPilot/CurrentState.cs @@ -278,6 +278,7 @@ public float yaw public float SSA { get; set; } [GroupText("Attitude")] + [DisplayFieldName("AOA.Field")] [DisplayText("AOA (deg)")] public float AOA { get; set; } @@ -305,6 +306,7 @@ public float groundcourse public double lng { get; set; } [GroupText("Position")] + [DisplayFieldName("alt.Field")] [DisplayText("Altitude (alt)")] public float alt { @@ -331,6 +333,7 @@ public float alt } [GroupText("Position")] + [DisplayFieldName("altasl.Field")] [DisplayText("Altitude (alt)")] public float altasl { @@ -357,6 +360,7 @@ public float altasl [GroupText("Position")] public double vlen => Math.Sqrt(Math.Pow(vx, 2) + Math.Pow(vy, 2) + Math.Pow(vz, 2)); [GroupText("Position")] + [DisplayFieldName("altoffsethome.Field")] [DisplayText("Alt Home Offset (dist)")] public float altoffsethome { get; set; } @@ -456,6 +460,7 @@ public float altasl [GroupText("Other")] public float altd100 => alt / 100 % 10; // speeds + [DisplayFieldName("airspeed.Field")] [DisplayText("AirSpeed (speed)")] [GroupText("Sensor")] public float airspeed @@ -470,6 +475,7 @@ public float airspeed public bool lowairspeed { get; set; } + [DisplayFieldName("asratio.Field")] [DisplayText("Airspeed Ratio")] [GroupText("Calibration")] public float asratio { get; set; } @@ -503,6 +509,7 @@ public float groundspeed [GroupText("Sensor")] public float az { get; set; } + [DisplayFieldName("accelsq.Field")] [DisplayText("Accel Strength")] [GroupText("Sensor")] public float accelsq => (float)Math.Sqrt(Math.Pow(ax, 2) + Math.Pow(ay, 2) + Math.Pow(az, 2)) / 1000.0f; @@ -558,6 +565,7 @@ public float groundspeed [GroupText("Sensor")] public float az2 { get; set; } + [DisplayFieldName("accelsq2.Field")] [DisplayText("Accel2 Strength")] [GroupText("Sensor")] public float accelsq2 => (float)Math.Sqrt(Math.Pow(ax2, 2) + Math.Pow(ay2, 2) + Math.Pow(az2, 2)) / 1000.0f; @@ -613,6 +621,7 @@ public float groundspeed [GroupText("Sensor")] public float az3 { get; set; } + [DisplayFieldName("accelsq3.Field")] [DisplayText("Accel3 Strength")] [GroupText("Sensor")] public float accelsq3 => (float)Math.Sqrt(Math.Pow(ax3, 2) + Math.Pow(ay3, 2) + Math.Pow(az3, 2)) / 1000.0f; @@ -941,6 +950,7 @@ public float wp_dist } [GroupText("NAV")] + [DisplayFieldName("alt_error.Field")] [DisplayText("Altitude Error (dist)")] public float alt_error { @@ -962,6 +972,7 @@ public float ber_error } [GroupText("NAV")] + [DisplayFieldName("aspd_error.Field")] [DisplayText("Airspeed Error (speed)")] public float aspd_error { @@ -1621,6 +1632,7 @@ public float ELToMAV } } + [DisplayFieldName("AZToMAV.Field")] [DisplayText("Bearing to Mav (deg)")] [GroupText("Position")] public float AZToMAV @@ -3839,6 +3851,29 @@ public List GetItemList(bool alpha = false, bool numbersonly = false) return ans; } + public string GetTranslatedFieldName(string name) + { + if (custom_field_names.ContainsKey(name)) + { + var desc = custom_field_names[name]; + return desc; + } + + var typeofthing = typeof(CurrentState).GetProperty(name); + + if (typeofthing != null) + { + var attrib = typeofthing.GetCustomAttributes(false).OfType().ToArray(); + + if (attrib.Length > 0) + { + return attrib.OfType().First().Text; + } + } + + return name; + } + public string GetNameandUnit(string name) { var desc = name; @@ -4327,4 +4362,4 @@ public static string GetDisplayText(string fieldname) return ""; } } -} \ No newline at end of file +} diff --git a/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs b/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs index 1caced695e..d44b6e8d09 100644 --- a/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs +++ b/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs @@ -50,4 +50,29 @@ public string Text } } + + /// + /// Used to decorate a field with a custom name. + /// + [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = false)] + public sealed class DisplayFieldNameAttribute : Attribute + { + + private readonly string _text; + + public DisplayFieldNameAttribute(string text) + { + if (String.IsNullOrEmpty(text)) + { + throw new ArgumentException("\"text\" is required."); + } + _text = text; + } + + public string Text + { + get { return MissionPlanner.Utilities.L10NU.GetString(_text); } + } + + } } diff --git a/ExtLibs/Utilities/Resources/strings_uk.txt b/ExtLibs/Utilities/Resources/strings_uk.txt index 49fc0208cd..2f0bc885e7 100644 --- a/ExtLibs/Utilities/Resources/strings_uk.txt +++ b/ExtLibs/Utilities/Resources/strings_uk.txt @@ -4,13 +4,17 @@ Yaw (deg)=Рискання (deg) GroundCourse (deg)=Шляховий кут (deg) Latitude (dd)=Широта (dd) Longitude (dd)=Довгота (dd) +alt.Field=alt (висота) Altitude (dist)=Висота (dist) +altoffsethome.Field=altoffsethome (компенс.висоти дом.точки)) Alt Home Offset (dist)=Компенсація висоти дом.точки (dist) Gps Status=Стан GPS Gps HDOP=Горизон. погіршення точності GPS Sat Count=Кількість супутників +airspeed.Field=airspeed (повітр.швидкість) AirSpeed (speed)=Повітряна швидкість (speed) Airspeed Target (speed)=Задана повітряна швидкість (speed) +asratio.Field=asratio (коеф.повітр.швидкості) Airspeed Ratio=Коефіцієнт повітряної швидкості GroundSpeed (speed)=Шляхова швидкість (speed) Accel X=Прискорення X @@ -34,9 +38,12 @@ Mag2 Z=Компас #2 Z Mag Field=Магнітне Поле Mag2 Field=Магнітне Поле #2 Mag3 Field=Магнітне Поле #3 +accelsq.Field=accelsq (сила прискорення) Accel Strength=Сила Прискорення Gyro Strength=Сила Гіроскопа +accelsq2.Field=accelsq2 (сила прискорення 2) Accel2 Strength=Сила Прискорення #2 +accelsq3.Field=accelsq3 (сила прискорення 3) Accel3 Strength=Сила Прискорення #3 Failsafe=Відмовостійкий RX Rssi=Потужність RX (rssi) @@ -47,8 +54,10 @@ Roll Target (deg)=Заданий крен (deg) Pitch Target (deg)=Заданий тангаж (deg) Bearing Target (deg)=Заданий пеленг (deg) Dist to WP (dist)=Відстань до точки маршуту (dist) +alt_error.Field=alt_error (похибка висоти) Altitude Error (dist)=Похибка висоти (dist) Bearing Error (deg)=Похибка пеленгу (deg) +aspd_error.Field=aspd_error (похибка повітр.швидкості) Airspeed Error (speed)=Похибка повітряної швидкості (speed) Xtrack Error (m)=Похибка Xtrack (m) Mode=Режим @@ -76,6 +85,7 @@ Bat9 Current (Amps)=Струм батареї #9 (Amps) Distance to Home (dist)=Відстань до дом.точки (dist) Distance From Moving Base (dist)=Відстань від рухомої бази (dist) Elevation to Mav (deg)=Підвищення до М-БпЛА (deg) +AZToMAV.Field=AZToMAV (пеленг до М-БпЛА) Bearing to Mav (deg)=Пеленг до М-БпЛА (deg) Sonar Range (alt)=Діапазон сонара (alt) Sonar Voltage (Volt)=Напруга сонара (Volt) @@ -90,8 +100,10 @@ HW Voltage=Апаратна напруга Board Voltage=Бортова напруга Servo Rail Voltage=Напруга серво-рейки Voltage Flags=Прапорці напруги +altasl.Field=altasl (висота) Altitude (alt)=Висота (alt) Altitude2 (dist)=Висота #2 (dist) +AOA.Field=AOA (кут атаки) AOA (deg)=Кут атаки (deg) Bat km left EST (km)=Залишок батареї (у km) Bat efficiency (mah/km)=Ефективність батареї (mah/km) diff --git a/GCSViews/FlightData.cs b/GCSViews/FlightData.cs index 2d02b35c50..23e1be7f2d 100644 --- a/GCSViews/FlightData.cs +++ b/GCSViews/FlightData.cs @@ -4464,7 +4464,7 @@ private void quickView_DoubleClick(object sender, EventArgs e) else { max_length = Math.Max(max_length, TextRenderer.MeasureText(field.Name, selectform.Font).Width); - fields.Add((field.Name, field.Name)); + fields.Add((field.Name, MainV2.comPort.MAV.cs.GetTranslatedFieldName(field.Name))); } } From 79c333f713488a9d98a661aa990269e274bbf9b2 Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sat, 8 Jun 2024 16:52:25 +0300 Subject: [PATCH 03/11] Account for the translated text in the cell width calculation --- GCSViews/FlightData.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/GCSViews/FlightData.cs b/GCSViews/FlightData.cs index 23e1be7f2d..955a0c5ef8 100644 --- a/GCSViews/FlightData.cs +++ b/GCSViews/FlightData.cs @@ -4463,8 +4463,9 @@ private void quickView_DoubleClick(object sender, EventArgs e) } else { - max_length = Math.Max(max_length, TextRenderer.MeasureText(field.Name, selectform.Font).Width); - fields.Add((field.Name, MainV2.comPort.MAV.cs.GetTranslatedFieldName(field.Name))); + var translatedFieldName = MainV2.comPort.MAV.cs.GetTranslatedFieldName(field.Name); + max_length = Math.Max(max_length, TextRenderer.MeasureText(translatedFieldName, selectform.Font).Width); + fields.Add((field.Name, translatedFieldName)); } } From 17545095479d5106d14ac20e86145203520d7caf Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sat, 8 Jun 2024 23:57:40 +0300 Subject: [PATCH 04/11] Translate the common fields --- ExtLibs/ArduPilot/CurrentState.cs | 157 ++++++++++++-- ExtLibs/Utilities/Resources/strings_uk.txt | 237 +++++++++++++++++++-- 2 files changed, 354 insertions(+), 40 deletions(-) diff --git a/ExtLibs/ArduPilot/CurrentState.cs b/ExtLibs/ArduPilot/CurrentState.cs index 8385b29d89..b7478aa30c 100644 --- a/ExtLibs/ArduPilot/CurrentState.cs +++ b/ExtLibs/ArduPilot/CurrentState.cs @@ -251,15 +251,18 @@ public CurrentState() public float customfield19 { get; set; } // orientation - rads + [DisplayFieldName("roll")] [DisplayText("Roll (deg)")] [GroupText("Attitude")] public float roll { get; set; } [GroupText("Attitude")] + [DisplayFieldName("pitch")] [DisplayText("Pitch (deg)")] public float pitch { get; set; } [GroupText("Attitude")] + [DisplayFieldName("yaw")] [DisplayText("Yaw (deg)")] public float yaw { @@ -274,15 +277,17 @@ public float yaw } [GroupText("Attitude")] + [DisplayFieldName("SSA")] [DisplayText("SSA (deg)")] public float SSA { get; set; } [GroupText("Attitude")] - [DisplayFieldName("AOA.Field")] + [DisplayFieldName("AOA")] [DisplayText("AOA (deg)")] public float AOA { get; set; } [GroupText("Position")] + [DisplayFieldName("groundcourse")] [DisplayText("GroundCourse (deg)")] public float groundcourse { @@ -297,16 +302,18 @@ public float groundcourse } // position + [DisplayFieldName("lat")] [DisplayText("Latitude (dd)")] [GroupText("Position")] public double lat { get; set; } [GroupText("Position")] + [DisplayFieldName("lng")] [DisplayText("Longitude (dd)")] public double lng { get; set; } [GroupText("Position")] - [DisplayFieldName("alt.Field")] + [DisplayFieldName("alt")] [DisplayText("Altitude (alt)")] public float alt { @@ -333,7 +340,7 @@ public float alt } [GroupText("Position")] - [DisplayFieldName("altasl.Field")] + [DisplayFieldName("altasl")] [DisplayText("Altitude (alt)")] public float altasl { @@ -342,48 +349,58 @@ public float altasl } [GroupText("Position")] + [DisplayFieldName("horizondist")] [DisplayText("Horizon Dist (dist)")] public float horizondist => (float)(3570 * Math.Sqrt(alt)) * multiplierdist; [GroupText("Position")] + [DisplayFieldName("vx")] [DisplayText("Velocity X (ms)")] public double vx { get; set; } [DisplayText("Velocity Y (ms)")] + [DisplayFieldName("vy")] [GroupText("Position")] public double vy { get; set; } [DisplayText("Velocity Z (ms)")] + [DisplayFieldName("vz")] [GroupText("Position")] public double vz { get; set; } [GroupText("Position")] public double vlen => Math.Sqrt(Math.Pow(vx, 2) + Math.Pow(vy, 2) + Math.Pow(vz, 2)); [GroupText("Position")] - [DisplayFieldName("altoffsethome.Field")] + [DisplayFieldName("altoffsethome")] [DisplayText("Alt Home Offset (dist)")] public float altoffsethome { get; set; } [GroupText("Position")] + [DisplayFieldName("gpsstatus")] [DisplayText("Gps Status")] public float gpsstatus { get; set; } + [DisplayFieldName("gpshdop")] [DisplayText("Gps HDOP")] [GroupText("Position")] public float gpshdop { get; set; } + [DisplayFieldName("satcount")] [DisplayText("Sat Count")] [GroupText("Position")] public float satcount { get; set; } + [DisplayFieldName("gpsh_acc")] [DisplayText("H Acc (m)")] [GroupText("Position")] public float gpsh_acc { get; private set; } + [DisplayFieldName("gpsv_acc")] [DisplayText("V Acc (m)")] [GroupText("Position")] public float gpsv_acc { get; private set; } + [DisplayFieldName("gpsvel_acc")] [DisplayText("Velocity Accuracy")] [GroupText("Position")] public float gpsvel_acc { get; private set; } @@ -392,6 +409,7 @@ public float altasl [GroupText("Position")] public float gpshdg_acc { get; private set; } + [DisplayFieldName("gpsyaw")] [DisplayText("GPS Yaw (deg)")] [GroupText("Position")] public float gpsyaw { get; private set; } @@ -460,7 +478,7 @@ public float altasl [GroupText("Other")] public float altd100 => alt / 100 % 10; // speeds - [DisplayFieldName("airspeed.Field")] + [DisplayFieldName("airspeed")] [DisplayText("AirSpeed (speed)")] [GroupText("Sensor")] public float airspeed @@ -469,13 +487,14 @@ public float airspeed set => _airspeed = value; } + [DisplayFieldName("targetairspeed")] [DisplayText("Airspeed Target (speed)")] [GroupText("NAV")] public float targetairspeed { get; private set; } public bool lowairspeed { get; set; } - [DisplayFieldName("asratio.Field")] + [DisplayFieldName("asratio")] [DisplayText("Airspeed Ratio")] [GroupText("Calibration")] public float asratio { get; set; } @@ -489,6 +508,7 @@ public float airspeed public float airspeed2_temp { get; set; } [GroupText("Position")] + [DisplayFieldName("groundspeed")] [DisplayText("GroundSpeed (speed)")] public float groundspeed { @@ -497,57 +517,69 @@ public float groundspeed } // accel + [DisplayFieldName("ax")] [DisplayText("Accel X")] [GroupText("Sensor")] public float ax { get; set; } + [DisplayFieldName("ay")] [DisplayText("Accel Y")] [GroupText("Sensor")] public float ay { get; set; } + [DisplayFieldName("az")] [DisplayText("Accel Z")] [GroupText("Sensor")] public float az { get; set; } - [DisplayFieldName("accelsq.Field")] + [DisplayFieldName("accelsq")] [DisplayText("Accel Strength")] [GroupText("Sensor")] public float accelsq => (float)Math.Sqrt(Math.Pow(ax, 2) + Math.Pow(ay, 2) + Math.Pow(az, 2)) / 1000.0f; // gyro + [DisplayFieldName("gx")] [DisplayText("Gyro X")] [GroupText("Sensor")] public float gx { get; set; } + [DisplayFieldName("gy")] [DisplayText("Gyro Y")] [GroupText("Sensor")] public float gy { get; set; } + [DisplayFieldName("gz")] [DisplayText("Gyro Z")] [GroupText("Sensor")] public float gz { get; set; } + [DisplayFieldName("gyrosq")] [DisplayText("Gyro Strength")] [GroupText("Sensor")] public float gyrosq => (float)Math.Sqrt(Math.Pow(gx, 2) + Math.Pow(gy, 2) + Math.Pow(gz, 2)); // mag + [DisplayFieldName("mx")] [DisplayText("Mag X")] [GroupText("Sensor")] public float mx { get; set; } + [DisplayFieldName("my")] [DisplayText("Mag Y")] [GroupText("Sensor")] public float my { get; set; } + [DisplayFieldName("mz")] [DisplayText("Mag Z")] [GroupText("Sensor")] public float mz { get; set; } + [DisplayFieldName("magfield")] [DisplayText("Mag Field")] [GroupText("Sensor")] public float magfield => (float)Math.Sqrt(Math.Pow(mx, 2) + Math.Pow(my, 2) + Math.Pow(mz, 2)); + [DisplayFieldName("imu1_temp")] [DisplayText("IMU1 Temperature")] [GroupText("Sensor")] public float imu1_temp { get; set; } @@ -565,7 +597,6 @@ public float groundspeed [GroupText("Sensor")] public float az2 { get; set; } - [DisplayFieldName("accelsq2.Field")] [DisplayText("Accel2 Strength")] [GroupText("Sensor")] public float accelsq2 => (float)Math.Sqrt(Math.Pow(ax2, 2) + Math.Pow(ay2, 2) + Math.Pow(az2, 2)) / 1000.0f; @@ -621,7 +652,6 @@ public float groundspeed [GroupText("Sensor")] public float az3 { get; set; } - [DisplayFieldName("accelsq3.Field")] [DisplayText("Accel3 Strength")] [GroupText("Sensor")] public float accelsq3 => (float)Math.Sqrt(Math.Pow(ax3, 2) + Math.Pow(ay3, 2) + Math.Pow(az3, 2)) / 1000.0f; @@ -871,10 +901,18 @@ public float ch3percent set => _ch3percent = value; } - [DisplayText("Failsafe")][GroupText("Software")] public bool failsafe { get; set; } + [DisplayFieldName("failsafe")] + [DisplayText("Failsafe")] + [GroupText("Software")] + public bool failsafe { get; set; } + + [DisplayFieldName("rxrssi")] + [DisplayText("RX Rssi")] + [GroupText("Telem")] + public int rxrssi { get; set; } - [DisplayText("RX Rssi")][GroupText("Telem")] public int rxrssi { get; set; } [GroupText("Attitude")] + [DisplayFieldName("crit_AOA")] [DisplayText("Crit AOA (deg)")] public float crit_AOA { @@ -899,6 +937,7 @@ public float crit_AOA public bool lowgroundspeed { get; set; } + [DisplayFieldName("verticalspeed")] [DisplayText("Vertical Speed (speed)")] [GroupText("Position")] public float verticalspeed @@ -913,6 +952,7 @@ public float verticalspeed [DisplayText("Vertical Speed (fpm)")][GroupText("Position")] public double verticalspeed_fpm => vz * -3.28084 * 60; + [DisplayFieldName("glide_ratio")] [DisplayText("Glide Ratio")] [GroupText("Position")] public double glide_ratio @@ -926,14 +966,17 @@ public double glide_ratio //nav state [GroupText("NAV")] + [DisplayFieldName("nav_roll")] [DisplayText("Roll Target (deg)")] public float nav_roll { get; set; } [GroupText("NAV")] + [DisplayFieldName("nav_pitch")] [DisplayText("Pitch Target (deg)")] public float nav_pitch { get; set; } [GroupText("NAV")] + [DisplayFieldName("nav_bearing")] [DisplayText("Bearing Target (deg)")] public float nav_bearing { get; set; } @@ -942,6 +985,7 @@ public double glide_ratio public float target_bearing { get; set; } [GroupText("NAV")] + [DisplayFieldName("wp_dist")] [DisplayText("Dist to WP (dist)")] public float wp_dist { @@ -950,7 +994,7 @@ public float wp_dist } [GroupText("NAV")] - [DisplayFieldName("alt_error.Field")] + [DisplayFieldName("alt_error")] [DisplayText("Altitude Error (dist)")] public float alt_error { @@ -964,6 +1008,7 @@ public float alt_error } [GroupText("NAV")] + [DisplayFieldName("ber_error")] [DisplayText("Bearing Error (deg)")] public float ber_error { @@ -972,7 +1017,7 @@ public float ber_error } [GroupText("NAV")] - [DisplayFieldName("aspd_error.Field")] + [DisplayFieldName("aspd_error")] [DisplayText("Airspeed Error (speed)")] public float aspd_error { @@ -986,6 +1031,7 @@ public float aspd_error } [GroupText("NAV")] + [DisplayFieldName("xtrack_error")] [DisplayText("Xtrack Error (m)")] public float xtrack_error { get; set; } @@ -994,9 +1040,11 @@ public float aspd_error public float wpno { get; set; } [GroupText("NAV")] + [DisplayFieldName("mode")] [DisplayText("Mode")] public string mode { get; set; } + [DisplayFieldName("climbrate")] [DisplayText("ClimbRate (speed)")] [GroupText("Position")] public float climbrate @@ -1009,6 +1057,7 @@ public float climbrate /// /// time over target in seconds /// + [DisplayFieldName("tot")] [DisplayText("Time over Target (sec)")] [GroupText("NAV")] public int tot @@ -1020,6 +1069,7 @@ public int tot } } + [DisplayFieldName("toh")] [DisplayText("Time over Home (sec)")] [GroupText("NAV")] public int toh @@ -1031,9 +1081,15 @@ public int toh } } - [DisplayText("Dist Traveled (dist)")][GroupText("Position")] public float distTraveled { get; set; } + [DisplayFieldName("distTraveled")] + [DisplayText("Dist Traveled (dist)")] + [GroupText("Position")] + public float distTraveled { get; set; } - [DisplayText("Time in Air (sec)")][GroupText("Position")] public float timeSinceArmInAir { get; set; } + [DisplayFieldName("timeSinceArmInAir")] + [DisplayText("Time in Air (sec)")] + [GroupText("Position")] + public float timeSinceArmInAir { get; set; } [DisplayText("Time in Air (sec)")][GroupText("Position")] public float timeInAir { get; set; } @@ -1043,6 +1099,7 @@ public int toh public float timeInAirMinSec => (int)(timeInAir / 60) + timeInAir % 60 / 100; // calced turn rate + [DisplayFieldName("turnrate")] [DisplayText("Turn Rate (speed)")] [GroupText("Position")] public float turnrate @@ -1058,6 +1115,7 @@ public float turnrate [DisplayText("Turn Gs (load)")][GroupText("Position")] public float turng => (float)(1 / Math.Cos(MathHelper.deg2rad * roll)); // turn radius + [DisplayFieldName("radius")] [DisplayText("Turn Radius (dist)")] [GroupText("Position")] public float radius @@ -1085,9 +1143,15 @@ public float QNH } } - [DisplayText("Wind Direction (Deg)")][GroupText("Position")] public float wind_dir { get; set; } + [DisplayFieldName("wind_dir")] + [DisplayText("Wind Direction (Deg)")] + [GroupText("Position")] + public float wind_dir { get; set; } - [DisplayText("Wind Velocity (speed)")][GroupText("Position")] public float wind_vel { get; set; } + [DisplayFieldName("wind_vel")] + [DisplayText("Wind Velocity (speed)")] + [GroupText("Position")] + public float wind_vel { get; set; } [GroupText("NAV")] public float targetaltd100 => targetalt / 100 % 10; [GroupText("NAV")] @@ -1132,6 +1196,7 @@ public string messageHigh //battery [GroupText("Battery")] + [DisplayFieldName("battery_voltage")] [DisplayText("Bat Voltage (V)")] public double battery_voltage { @@ -1216,6 +1281,7 @@ public int battery_remaining public int battery_remaining9 { get; set; } [GroupText("Battery")] + [DisplayFieldName("current")] [DisplayText("Bat Current (Amps)")] public double current { @@ -1280,19 +1346,23 @@ public double current2 public double current9 { get; set; } [GroupText("Battery")] + [DisplayFieldName("watts")] [DisplayText("Bat Watts")] public double watts => battery_voltage * current; [GroupText("Battery")] + [DisplayFieldName("battery_mahperkm")] [DisplayText("Bat efficiency (mah/km)")] public double battery_mahperkm => battery_usedmah / (distTraveled / 1000.0f); [GroupText("Battery")] + [DisplayFieldName("battery_kmleft")] [DisplayText("Bat km left EST (km)")] public double battery_kmleft => (100.0f / (100.0f - battery_remaining) * battery_usedmah - battery_usedmah) / battery_mahperkm; [GroupText("Battery")] + [DisplayFieldName("battery_usedmah")] [DisplayText("Bat used EST (mah)")] public double battery_usedmah { get; set; } @@ -1572,6 +1642,7 @@ public float GeoFenceDist } [GroupText("Position")] + [DisplayFieldName("DistToHome")] [DisplayText("Dist to Home (dist)")] public float DistToHome { @@ -1593,6 +1664,7 @@ public float DistToHome } [GroupText("Position")] + [DisplayFieldName("DistFromMovingBase")] [DisplayText("Dist to Moving Base (dist)")] public float DistFromMovingBase { @@ -1613,6 +1685,7 @@ public float DistFromMovingBase } } + [DisplayFieldName("ELToMAV")] [DisplayText("Elevation to Mav (deg)")] [GroupText("Position")] public float ELToMAV @@ -1632,7 +1705,7 @@ public float ELToMAV } } - [DisplayFieldName("AZToMAV.Field")] + [DisplayFieldName("AZToMAV")] [DisplayText("Bearing to Mav (deg)")] [GroupText("Position")] public float AZToMAV @@ -1661,6 +1734,7 @@ public float AZToMAV } } + [DisplayFieldName("sonarrange")] [DisplayText("Sonar Range (alt)")] [GroupText("Sensor")] public float sonarrange @@ -1669,7 +1743,10 @@ public float sonarrange set => _sonarrange = value; } - [DisplayText("Sonar Voltage (Volt)")][GroupText("Sensor")] public float sonarvoltage { get; set; } + [DisplayFieldName("sonarvoltage")] + [DisplayText("Sonar Voltage (Volt)")] + [GroupText("Sensor")] + public float sonarvoltage { get; set; } [DisplayText("RangeFinder1 (cm)")][GroupText("Sensor")] public uint rangefinder1 { get; set; } [DisplayText("RangeFinder2 (cm)")][GroupText("Sensor")] public uint rangefinder2 { get; set; } @@ -1701,6 +1778,7 @@ public float sonarrange [GroupText("Telem")] public byte txbuffer { get; set; } [GroupText("Telem")] + [DisplayFieldName("noise")] [DisplayText("Sik Radio noise")] public float noise { get; set; } @@ -1712,6 +1790,7 @@ public float sonarrange [GroupText("Telem")] public ushort fixedp { get; set; } [GroupText("Telem")] + [DisplayFieldName("localsnrdb")] [DisplayText("Sik Radio snr")] public float localsnrdb { @@ -1738,6 +1817,7 @@ public float remotesnrdb } [GroupText("Telem")] + [DisplayFieldName("DistRSSIRemain")] [DisplayText("Sik Radio est dist (m)")] public float DistRSSIRemain { @@ -1775,13 +1855,25 @@ public float DistRSSIRemain [DisplayText("Error Count")][GroupText("Hardware")] public ushort errors_count4 { get; set; } - [DisplayText("HW Voltage")][GroupText("Hardware")] public float hwvoltage { get; set; } + [DisplayFieldName("hwvoltage")] + [DisplayText("HW Voltage")] + [GroupText("Hardware")] + public float hwvoltage { get; set; } - [DisplayText("Board Voltage")][GroupText("Hardware")] public float boardvoltage { get; set; } + [DisplayFieldName("boardvoltage")] + [DisplayText("Board Voltage")] + [GroupText("Hardware")] + public float boardvoltage { get; set; } - [DisplayText("Servo Rail Voltage")][GroupText("Hardware")] public float servovoltage { get; set; } + [DisplayFieldName("servovoltage")] + [DisplayText("Servo Rail Voltage")] + [GroupText("Hardware")] + public float servovoltage { get; set; } - [DisplayText("Voltage Flags")][GroupText("Hardware")] public uint voltageflag { get; set; } + [DisplayFieldName("voltageflag")] + [DisplayText("Voltage Flags")] + [GroupText("Hardware")] + public uint voltageflag { get; set; } [GroupText("Hardware")] public ushort i2cerrors { get; set; } @@ -1949,33 +2041,52 @@ public float ter_alt public int gen_maint_time { get; set; } [GroupText("EFI")] + [DisplayFieldNameAttribute("efi_baro")] [DisplayText("EFI Baro Pressure (kPa)")] public float efi_baro { get; private set; } + [GroupText("EFI")] + [DisplayFieldName("efi_headtemp")] [DisplayText("EFI Head Temp (C)")] public float efi_headtemp { get; private set; } + [GroupText("EFI")] + [DisplayFieldName("efi_load")] [DisplayText("EFI Load (%)")] public float efi_load { get; private set; } + [GroupText("EFI")] + [DisplayFieldName("efi_health")] [DisplayText("EFI Health")] public byte efi_health { get; private set; } + [GroupText("EFI")] + [DisplayFieldNameAttribute("efi_exhasttemp")] [DisplayText("EFI Exhast Temp (C)")] public float efi_exhasttemp { get; private set; } + [GroupText("EFI")] + [DisplayFieldName("efi_intaketemp")] [DisplayText("EFI Intake Temp (C)")] public float efi_intaketemp { get; private set; } + [GroupText("EFI")] + [DisplayFieldName("efi_rpm")] [DisplayText("EFI rpm")] public float efi_rpm { get; private set; } + [GroupText("EFI")] + [DisplayFieldName("efi_fuelflow")] [DisplayText("EFI Fuel Flow (g/min)")] public float efi_fuelflow { get; private set; } + [GroupText("EFI")] + [DisplayFieldName("efi_fuelconsumed")] [DisplayText("EFI Fuel Consumed (g)")] public float efi_fuelconsumed { get; private set; } + [GroupText("EFI")] + [DisplayFieldName("efi_fuelpressure")] [DisplayText("EFI Fuel Pressure (kPa)")] public float efi_fuelpressure { get; private set; } diff --git a/ExtLibs/Utilities/Resources/strings_uk.txt b/ExtLibs/Utilities/Resources/strings_uk.txt index 2f0bc885e7..004d5e996b 100644 --- a/ExtLibs/Utilities/Resources/strings_uk.txt +++ b/ExtLibs/Utilities/Resources/strings_uk.txt @@ -1,138 +1,341 @@ -Roll (deg)=Крен (deg) +roll=roll (крен) +Roll (deg)=Крен (deg) + +pitch=pitch (тангаж) Pitch (deg)=Тангаж (deg) + +yaw=yaw (рискання) Yaw (deg)=Рискання (deg) + +groundcourse=groundcourse (шлях.кут) GroundCourse (deg)=Шляховий кут (deg) + +lat=lat (широта) Latitude (dd)=Широта (dd) + +lng=lng (довгота) Longitude (dd)=Довгота (dd) -alt.Field=alt (висота) + +alt=alt (висота) Altitude (dist)=Висота (dist) -altoffsethome.Field=altoffsethome (компенс.висоти дом.точки)) + +altoffsethome=altoffsethome (компенс.висоти дом.точки) Alt Home Offset (dist)=Компенсація висоти дом.точки (dist) + +gpsstatus=gpsstatus (стан GPS) Gps Status=Стан GPS + +gpshdop=gpshdop (GPS HDOP) Gps HDOP=Горизон. погіршення точності GPS + +satcount=satcount (кільк.супутників) Sat Count=Кількість супутників -airspeed.Field=airspeed (повітр.швидкість) + +airspeed=airspeed (повітр.швидкість) AirSpeed (speed)=Повітряна швидкість (speed) + +targetairspeed=targetairspeed (задана повітр.швидкість) Airspeed Target (speed)=Задана повітряна швидкість (speed) -asratio.Field=asratio (коеф.повітр.швидкості) + +asratio=asratio (коеф.повітр.швидкості) Airspeed Ratio=Коефіцієнт повітряної швидкості + +groundspeed=groundspeed (шлях.швидкість) GroundSpeed (speed)=Шляхова швидкість (speed) + +ax=ax (прискор.X) Accel X=Прискорення X + +ay=ay (прискор.Y) Accel Y=Прискорення Y + +az=az (прискор.Z) Accel Z=Прискорення Z + +gx=gx (гіро X) Gyro X=Гіроскоп X + +gy=gy (гіро Y) Gyro Y=Гіроскоп Y + +gz=gz (гіро Z) Gyro Z=Гіроскоп Z + +mx=mx (компас X) Mag X=Компас X + +my=my (компас Y) Mag Y=Компас Y + +mz=mz (компас Z) Mag Z=Компас Z + Accel2 X=Прискорення #2 X + Accel2 Y=Прискорення #2 Y + Accel2 Z=Прискорення #2 Z + Gyro2 X=Гіроскоп #2 X + Gyro2 Y=Гіроскоп #2 Y + Gyro2 Z=Гіроскоп #2 Z + Mag2 X=Компас #2 X + Mag2 Y=Компас #2 Y + Mag2 Z=Компас #2 Z + +magfield=magfield (магнітне поле) Mag Field=Магнітне Поле + Mag2 Field=Магнітне Поле #2 + Mag3 Field=Магнітне Поле #3 -accelsq.Field=accelsq (сила прискорення) + +accelsq=accelsq (сила прискорення) Accel Strength=Сила Прискорення + +gyrosq=gyrosq (сила гіроскопа) Gyro Strength=Сила Гіроскопа -accelsq2.Field=accelsq2 (сила прискорення 2) + Accel2 Strength=Сила Прискорення #2 -accelsq3.Field=accelsq3 (сила прискорення 3) + Accel3 Strength=Сила Прискорення #3 + +failsafe=failsafe (відмовостійкий) Failsafe=Відмовостійкий + +rxrssi=rxrssi (потужність RX) RX Rssi=Потужність RX (rssi) + +verticalspeed=verticalspeed (верт.швидкість) Vertical Speed (speed)=Вертикальна швидкість (speed) + +wind_dir=wind_dir (напрямок вітру) Wind Direction (Deg)=Напрямок вітру (Deg) + +wind_vel=wind_vel (швидкість вітру) Wind Velocity (speed)=Швидкість вітру (speed) + +vx=vx (швидкість X) +Velocity X (ms)=Швидкість X (ms) + +vy=vy (швидкість Y) +Velocity Y (ms)=Швидкість Y (ms) + +vz=vz (швидкість Z) +Velocity Z (ms)=Швидкість Z (ms) + +nav_roll=nav_roll (заданий крен) Roll Target (deg)=Заданий крен (deg) + +nav_pitch=nav_pitch (заданий тангаж) Pitch Target (deg)=Заданий тангаж (deg) + +nav_bearing=nav_bearing (заданий пеленг) Bearing Target (deg)=Заданий пеленг (deg) -Dist to WP (dist)=Відстань до точки маршуту (dist) -alt_error.Field=alt_error (похибка висоти) + +wp_dist=wp_dist (відстань до п-ту маршруту) +Dist to WP (dist)=Відстань до пункту маршуту (dist) + +alt_error=alt_error (похибка висоти) Altitude Error (dist)=Похибка висоти (dist) + +ber_error=ber_error (похибка пеленгу) Bearing Error (deg)=Похибка пеленгу (deg) -aspd_error.Field=aspd_error (похибка повітр.швидкості) + +aspd_error=aspd_error (похибка повітр.швидкості) Airspeed Error (speed)=Похибка повітряної швидкості (speed) + +xtrack_error=xtrack_error (похибка Xtrack) Xtrack Error (m)=Похибка Xtrack (m) + +mode=mode (режим) Mode=Режим + +climbrate=climbrate (швидкість підйому) ClimbRate (speed)=Швидкість підйому (speed) + +tot=tot (час над ціллю) Time over Target (sec)=Час над ціллю (sec) + +toh=toh (час над дом.точкою) Time over Home (sec)=Час над дом.точкою (sec) + +distTraveled=distTraveled (пройдена відстань) Dist Traveled (dist)=Пройдена відстань (dist) + +timeSinceArmInAir=timeSinceArmInAir (час у повітрі) Time in Air (sec)=Час у повітрі (sec) + +turnrate=turnrate (швидкість повороту) Turn Rate (speed)=Швидкість повороту (speed) + +radius=radius (радіус повороту) Turn Radius (dist)=Радіус повороту (dist) + +battery_voltage=battery_voltage (напруга бат.) Bat Voltage (V)=Напруга батареї (V) + +battery_remaining.Field = battery_remaining (залишок бат.(%)) Bat Remaining (%)=Залишок батареї (%) + +current=current (струм бат.) Bat Current (Amps)=Струм батареї (Amps) + +watts=watts (потужність бат.) Bat Watts=Потужність батареї (Watts) + +battery_usedmah=battery_usedmah (використ.бат.) Bat used EST (mah)=Використано батареї (прибл.) (mah) + Bat2 Voltage (V)=Напруга батереї #2 (V) + Bat2 Current (Amps)=Струм батареї #2 (Amps) + Bat3 Current (Amps)=Струм батареї #3 (Amps) + Bat4 Current (Amps)=Струм батареї #4 (Amps) + Bat5 Current (Amps)=Струм батареї #5 (Amps) + Bat6 Current (Amps)=Струм батареї #6 (Amps) + Bat7 Current (Amps)=Струм батареї #7 (Amps) + Bat8 Current (Amps)=Струм батареї #8 (Amps) + Bat9 Current (Amps)=Струм батареї #9 (Amps) -Distance to Home (dist)=Відстань до дом.точки (dist) -Distance From Moving Base (dist)=Відстань від рухомої бази (dist) + +ELToMAV=ELToMAV (підвищ.до М-БпЛА) Elevation to Mav (deg)=Підвищення до М-БпЛА (deg) -AZToMAV.Field=AZToMAV (пеленг до М-БпЛА) + +AZToMAV=AZToMAV (пеленг до М-БпЛА) Bearing to Mav (deg)=Пеленг до М-БпЛА (deg) + +sonarrange=sonarrange (діапазон сонара) Sonar Range (alt)=Діапазон сонара (alt) + +sonarvoltage=sonarvoltage (напруга сонара) Sonar Voltage (Volt)=Напруга сонара (Volt) + 3DR Radio rssi=Потужність 3DR-радіосигналу (rssi) + 3DR Radio remote rssi=Потужність 3DR-сигналу дист.керув. + 3DR Radio noise=Шум 3DR-радіо + 3DR Radio remote noise=Шум 3DR-пульта дист.керув. + 3DR Radio snr=Сигнал/Шум 3DR-радіо + 3DR Radio remote snr=Сигнал/Шум 3DR-пульта дист.керув. + 3DR Radio est dist (m)=3DR-радіо прибл. відстань (m) + +hwvoltage=hwvoltage (апаратна напруга) HW Voltage=Апаратна напруга + +boardvoltage=boardvoltage (борт.напруга) Board Voltage=Бортова напруга + +servovoltage=servovoltage (напруга серво-рейки) Servo Rail Voltage=Напруга серво-рейки -Voltage Flags=Прапорці напруги -altasl.Field=altasl (висота) + +voltageflag=voltageflag (стан напруги) +Voltage Flags=Стан напруги + +altasl=altasl (висота) Altitude (alt)=Висота (alt) + Altitude2 (dist)=Висота #2 (dist) -AOA.Field=AOA (кут атаки) + +AOA=AOA (кут атаки) AOA (deg)=Кут атаки (deg) + +battery_kmleft=battery_kmleft (залишок бат.(km)) Bat km left EST (km)=Залишок батареї (у km) + +battery_mahperkm=battery_mahperkm (ефективність бат.) Bat efficiency (mah/km)=Ефективність батареї (mah/km) + +crit_AOA=crit_AOA (крит.кут атаки) Crit AOA (deg)=Критичний Кут атаки (deg) + +DistFromMovingBase=DistFromMovingBase (відстань від рух.бази) Dist to Moving Base (dist)=Відстань від рухомої бази (dist) + +DistToHome=DistToHome (відстань до дом.точки) Dist to Home (dist)=Відстань до дом.точки (dist) + +localsnrdb=localsnrdb (сигнал/шум Sik-радіо) Sik Radio snr=Сигнал/Шум Sik-радіо + +DistRSSIRemain=DistRSSIRemain (Sik-радіо прибл.відстань) Sik Radio est dist (m)=Sik-радіо прибл. відстань (m) + +glide_ratio=glide_ratio (коеф.глісади) Glide Ratio=Коефіцієнт Глісади + +horizondist=horizondist (відст.до гориз.) Horizon Dist (dist)=Відстань до горизонту (dist) + +gpsvel_acc=gpsvel_acc (точн.швидкості) Velocity Accuracy=Точність індикат. швидкості + +gpsyaw=gpsyaw (рискання згідно GPS) GPS Yaw (deg)=Рискання (GPS) (deg) + GroundCourse2 (deg)=Шляховий кут #2 (deg) + +noise=noise (шум Sik-радіо) Sik Radio noise=Шум Sik-радіо + +imu1_temp=imu1_temp (IMU#1 темп.) IMU1 Temperature=IMU-сенсор #1: Температура + IMU2 Temperature=IMU-сенсор #2: Температура + IMU3 Temperature=IMU-сенсор #3: Температура + +efi_baro=efi_baro (інжектор:баром.тиск) EFI Baro Pressure (kPa)=Інжектор: Барометр. тиск (kPa) + +efi_headtemp=efi_headtemp (інжектор:темп.гол.блоку.цил.) EFI Head Temp (C)=Інжектор: Темпер.головки блоку циліндру (C) + +efi_load=efi_load (інжектор:навантаж.двигуна) EFI Load (%)=Інжектор: Навантаження двигуна (%) + +efi_health=efi_health (інжектор:справність) EFI Health=Інжектор: Справність + +efi_exhasttemp=efi_exhasttemp (інжектор:темп.вихлопу) EFI Exhast Temp (C)=Інжектор: Температура вихлопу (C) + +efi_intaketemp=efi_intaketemp (інжектор:впускна темп.) EFI Intake Temp (C)=Інжектор: Впускна температура (C) + +efi_rpm=efi_rpm (інжектор:кільк.обертів) EFI rpm=Інжектор: Кількість обертів + +efi_fuelflow=efi_fuelflow (інжектор:потік палива) EFI Fuel Flow (g/min)=Інжектор: Потік палива (g/min) + +efi_fuelconsumed=efi_fuelconsumed (інжектор:палива спожито) EFI Fuel Consumed (g)=Інжектор: Палива спожито (g) + +efi_fuelpressure=efi_fuelpressure (інжектор:тиск палива) EFI Fuel Pressure (kPa)=Інжектор: Тиск палива (kPa) + Longitude2 (dd)=Довгота #2 (dd) + +SSA=SSA (кут бок.ковз) SSA (deg)=Кут боков.ковзання (deg) + flow_comp_m_x=Оптич.потік з гіро-компенсац. X flow_comp_m_y=Оптич.потік з гіро-компенсац. Y flow_x=Оптичний потік X From 1c96383ad658247b4b74c157d64d0f37ed3c9d46 Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sun, 9 Jun 2024 00:52:53 +0300 Subject: [PATCH 05/11] Avoid collisions between translation keys --- ExtLibs/ArduPilot/CurrentState.cs | 193 +++++++++--------- .../Attributes/DisplayTextAttribute.cs | 15 +- ExtLibs/Utilities/L10NU.cs | 13 +- ExtLibs/Utilities/Resources/strings_uk.txt | 180 ++++++++-------- GCSViews/FlightData.cs | 6 +- 5 files changed, 209 insertions(+), 198 deletions(-) diff --git a/ExtLibs/ArduPilot/CurrentState.cs b/ExtLibs/ArduPilot/CurrentState.cs index b7478aa30c..371e1ae520 100644 --- a/ExtLibs/ArduPilot/CurrentState.cs +++ b/ExtLibs/ArduPilot/CurrentState.cs @@ -251,18 +251,18 @@ public CurrentState() public float customfield19 { get; set; } // orientation - rads - [DisplayFieldName("roll")] + [DisplayFieldName("roll.Field")] [DisplayText("Roll (deg)")] [GroupText("Attitude")] public float roll { get; set; } [GroupText("Attitude")] - [DisplayFieldName("pitch")] + [DisplayFieldName("pitch.Field")] [DisplayText("Pitch (deg)")] public float pitch { get; set; } [GroupText("Attitude")] - [DisplayFieldName("yaw")] + [DisplayFieldName("yaw.Field")] [DisplayText("Yaw (deg)")] public float yaw { @@ -277,17 +277,17 @@ public float yaw } [GroupText("Attitude")] - [DisplayFieldName("SSA")] + [DisplayFieldName("SSA.Field")] [DisplayText("SSA (deg)")] public float SSA { get; set; } [GroupText("Attitude")] - [DisplayFieldName("AOA")] + [DisplayFieldName("AOA.Field")] [DisplayText("AOA (deg)")] public float AOA { get; set; } [GroupText("Position")] - [DisplayFieldName("groundcourse")] + [DisplayFieldName("groundcourse.Field")] [DisplayText("GroundCourse (deg)")] public float groundcourse { @@ -302,18 +302,18 @@ public float groundcourse } // position - [DisplayFieldName("lat")] + [DisplayFieldName("lat.Field")] [DisplayText("Latitude (dd)")] [GroupText("Position")] public double lat { get; set; } [GroupText("Position")] - [DisplayFieldName("lng")] + [DisplayFieldName("lng.Field")] [DisplayText("Longitude (dd)")] public double lng { get; set; } [GroupText("Position")] - [DisplayFieldName("alt")] + [DisplayFieldName("alt.Field")] [DisplayText("Altitude (alt)")] public float alt { @@ -340,7 +340,7 @@ public float alt } [GroupText("Position")] - [DisplayFieldName("altasl")] + [DisplayFieldName("altasl.Field")] [DisplayText("Altitude (alt)")] public float altasl { @@ -349,58 +349,58 @@ public float altasl } [GroupText("Position")] - [DisplayFieldName("horizondist")] + [DisplayFieldName("horizondist.Field")] [DisplayText("Horizon Dist (dist)")] public float horizondist => (float)(3570 * Math.Sqrt(alt)) * multiplierdist; [GroupText("Position")] - [DisplayFieldName("vx")] + [DisplayFieldName("vx.Field")] [DisplayText("Velocity X (ms)")] public double vx { get; set; } [DisplayText("Velocity Y (ms)")] - [DisplayFieldName("vy")] + [DisplayFieldName("vy.Field")] [GroupText("Position")] public double vy { get; set; } [DisplayText("Velocity Z (ms)")] - [DisplayFieldName("vz")] + [DisplayFieldName("vz.Field")] [GroupText("Position")] public double vz { get; set; } [GroupText("Position")] public double vlen => Math.Sqrt(Math.Pow(vx, 2) + Math.Pow(vy, 2) + Math.Pow(vz, 2)); [GroupText("Position")] - [DisplayFieldName("altoffsethome")] + [DisplayFieldName("altoffsethome.Field")] [DisplayText("Alt Home Offset (dist)")] public float altoffsethome { get; set; } [GroupText("Position")] - [DisplayFieldName("gpsstatus")] + [DisplayFieldName("gpsstatus.Field")] [DisplayText("Gps Status")] public float gpsstatus { get; set; } - [DisplayFieldName("gpshdop")] + [DisplayFieldName("gpshdop.Field")] [DisplayText("Gps HDOP")] [GroupText("Position")] public float gpshdop { get; set; } - [DisplayFieldName("satcount")] + [DisplayFieldName("satcount.Field")] [DisplayText("Sat Count")] [GroupText("Position")] public float satcount { get; set; } - [DisplayFieldName("gpsh_acc")] + [DisplayFieldName("gpsh_acc.Field")] [DisplayText("H Acc (m)")] [GroupText("Position")] public float gpsh_acc { get; private set; } - [DisplayFieldName("gpsv_acc")] + [DisplayFieldName("gpsv_acc.Field")] [DisplayText("V Acc (m)")] [GroupText("Position")] public float gpsv_acc { get; private set; } - [DisplayFieldName("gpsvel_acc")] + [DisplayFieldName("gpsvel_acc.Field")] [DisplayText("Velocity Accuracy")] [GroupText("Position")] public float gpsvel_acc { get; private set; } @@ -409,7 +409,7 @@ public float altasl [GroupText("Position")] public float gpshdg_acc { get; private set; } - [DisplayFieldName("gpsyaw")] + [DisplayFieldName("gpsyaw.Field")] [DisplayText("GPS Yaw (deg)")] [GroupText("Position")] public float gpsyaw { get; private set; } @@ -478,7 +478,7 @@ public float altasl [GroupText("Other")] public float altd100 => alt / 100 % 10; // speeds - [DisplayFieldName("airspeed")] + [DisplayFieldName("airspeed.Field")] [DisplayText("AirSpeed (speed)")] [GroupText("Sensor")] public float airspeed @@ -487,14 +487,14 @@ public float airspeed set => _airspeed = value; } - [DisplayFieldName("targetairspeed")] + [DisplayFieldName("targetairspeed.Field")] [DisplayText("Airspeed Target (speed)")] [GroupText("NAV")] public float targetairspeed { get; private set; } public bool lowairspeed { get; set; } - [DisplayFieldName("asratio")] + [DisplayFieldName("asratio.Field")] [DisplayText("Airspeed Ratio")] [GroupText("Calibration")] public float asratio { get; set; } @@ -508,7 +508,7 @@ public float airspeed public float airspeed2_temp { get; set; } [GroupText("Position")] - [DisplayFieldName("groundspeed")] + [DisplayFieldName("groundspeed.Field")] [DisplayText("GroundSpeed (speed)")] public float groundspeed { @@ -517,69 +517,69 @@ public float groundspeed } // accel - [DisplayFieldName("ax")] + [DisplayFieldName("ax.Field")] [DisplayText("Accel X")] [GroupText("Sensor")] public float ax { get; set; } - [DisplayFieldName("ay")] + [DisplayFieldName("ay.Field")] [DisplayText("Accel Y")] [GroupText("Sensor")] public float ay { get; set; } - [DisplayFieldName("az")] + [DisplayFieldName("az.Field")] [DisplayText("Accel Z")] [GroupText("Sensor")] public float az { get; set; } - [DisplayFieldName("accelsq")] + [DisplayFieldName("accelsq.Field")] [DisplayText("Accel Strength")] [GroupText("Sensor")] public float accelsq => (float)Math.Sqrt(Math.Pow(ax, 2) + Math.Pow(ay, 2) + Math.Pow(az, 2)) / 1000.0f; // gyro - [DisplayFieldName("gx")] + [DisplayFieldName("gx.Field")] [DisplayText("Gyro X")] [GroupText("Sensor")] public float gx { get; set; } - [DisplayFieldName("gy")] + [DisplayFieldName("gy.Field")] [DisplayText("Gyro Y")] [GroupText("Sensor")] public float gy { get; set; } - [DisplayFieldName("gz")] + [DisplayFieldName("gz.Field")] [DisplayText("Gyro Z")] [GroupText("Sensor")] public float gz { get; set; } - [DisplayFieldName("gyrosq")] + [DisplayFieldName("gyrosq.Field")] [DisplayText("Gyro Strength")] [GroupText("Sensor")] public float gyrosq => (float)Math.Sqrt(Math.Pow(gx, 2) + Math.Pow(gy, 2) + Math.Pow(gz, 2)); // mag - [DisplayFieldName("mx")] + [DisplayFieldName("mx.Field")] [DisplayText("Mag X")] [GroupText("Sensor")] public float mx { get; set; } - [DisplayFieldName("my")] + [DisplayFieldName("my.Field")] [DisplayText("Mag Y")] [GroupText("Sensor")] public float my { get; set; } - [DisplayFieldName("mz")] + [DisplayFieldName("mz.Field")] [DisplayText("Mag Z")] [GroupText("Sensor")] public float mz { get; set; } - [DisplayFieldName("magfield")] + [DisplayFieldName("magfield.Field")] [DisplayText("Mag Field")] [GroupText("Sensor")] public float magfield => (float)Math.Sqrt(Math.Pow(mx, 2) + Math.Pow(my, 2) + Math.Pow(mz, 2)); - [DisplayFieldName("imu1_temp")] + [DisplayFieldName("imu1_temp.Field")] [DisplayText("IMU1 Temperature")] [GroupText("Sensor")] public float imu1_temp { get; set; } @@ -901,18 +901,18 @@ public float ch3percent set => _ch3percent = value; } - [DisplayFieldName("failsafe")] + [DisplayFieldName("failsafe.Field")] [DisplayText("Failsafe")] [GroupText("Software")] public bool failsafe { get; set; } - [DisplayFieldName("rxrssi")] + [DisplayFieldName("rxrssi.Field")] [DisplayText("RX Rssi")] [GroupText("Telem")] public int rxrssi { get; set; } [GroupText("Attitude")] - [DisplayFieldName("crit_AOA")] + [DisplayFieldName("crit_AOA.Field")] [DisplayText("Crit AOA (deg)")] public float crit_AOA { @@ -937,7 +937,7 @@ public float crit_AOA public bool lowgroundspeed { get; set; } - [DisplayFieldName("verticalspeed")] + [DisplayFieldName("verticalspeed.Field")] [DisplayText("Vertical Speed (speed)")] [GroupText("Position")] public float verticalspeed @@ -952,7 +952,7 @@ public float verticalspeed [DisplayText("Vertical Speed (fpm)")][GroupText("Position")] public double verticalspeed_fpm => vz * -3.28084 * 60; - [DisplayFieldName("glide_ratio")] + [DisplayFieldName("glide_ratio.Field")] [DisplayText("Glide Ratio")] [GroupText("Position")] public double glide_ratio @@ -966,17 +966,17 @@ public double glide_ratio //nav state [GroupText("NAV")] - [DisplayFieldName("nav_roll")] + [DisplayFieldName("nav_roll.Field")] [DisplayText("Roll Target (deg)")] public float nav_roll { get; set; } [GroupText("NAV")] - [DisplayFieldName("nav_pitch")] + [DisplayFieldName("nav_pitch.Field")] [DisplayText("Pitch Target (deg)")] public float nav_pitch { get; set; } [GroupText("NAV")] - [DisplayFieldName("nav_bearing")] + [DisplayFieldName("nav_bearing.Field")] [DisplayText("Bearing Target (deg)")] public float nav_bearing { get; set; } @@ -985,7 +985,7 @@ public double glide_ratio public float target_bearing { get; set; } [GroupText("NAV")] - [DisplayFieldName("wp_dist")] + [DisplayFieldName("wp_dist.Field")] [DisplayText("Dist to WP (dist)")] public float wp_dist { @@ -994,7 +994,7 @@ public float wp_dist } [GroupText("NAV")] - [DisplayFieldName("alt_error")] + [DisplayFieldName("alt_error.Field")] [DisplayText("Altitude Error (dist)")] public float alt_error { @@ -1008,7 +1008,7 @@ public float alt_error } [GroupText("NAV")] - [DisplayFieldName("ber_error")] + [DisplayFieldName("ber_error.Field")] [DisplayText("Bearing Error (deg)")] public float ber_error { @@ -1017,7 +1017,7 @@ public float ber_error } [GroupText("NAV")] - [DisplayFieldName("aspd_error")] + [DisplayFieldName("aspd_error.Field")] [DisplayText("Airspeed Error (speed)")] public float aspd_error { @@ -1031,7 +1031,7 @@ public float aspd_error } [GroupText("NAV")] - [DisplayFieldName("xtrack_error")] + [DisplayFieldName("xtrack_error.Field")] [DisplayText("Xtrack Error (m)")] public float xtrack_error { get; set; } @@ -1040,11 +1040,11 @@ public float aspd_error public float wpno { get; set; } [GroupText("NAV")] - [DisplayFieldName("mode")] + [DisplayFieldName("mode.Field")] [DisplayText("Mode")] public string mode { get; set; } - [DisplayFieldName("climbrate")] + [DisplayFieldName("climbrate.Field")] [DisplayText("ClimbRate (speed)")] [GroupText("Position")] public float climbrate @@ -1057,7 +1057,7 @@ public float climbrate /// /// time over target in seconds /// - [DisplayFieldName("tot")] + [DisplayFieldName("tot.Field")] [DisplayText("Time over Target (sec)")] [GroupText("NAV")] public int tot @@ -1069,7 +1069,7 @@ public int tot } } - [DisplayFieldName("toh")] + [DisplayFieldName("toh.Field")] [DisplayText("Time over Home (sec)")] [GroupText("NAV")] public int toh @@ -1081,12 +1081,12 @@ public int toh } } - [DisplayFieldName("distTraveled")] + [DisplayFieldName("distTraveled.Field")] [DisplayText("Dist Traveled (dist)")] [GroupText("Position")] public float distTraveled { get; set; } - [DisplayFieldName("timeSinceArmInAir")] + [DisplayFieldName("timeSinceArmInAir.Field")] [DisplayText("Time in Air (sec)")] [GroupText("Position")] public float timeSinceArmInAir { get; set; } @@ -1099,7 +1099,7 @@ public int toh public float timeInAirMinSec => (int)(timeInAir / 60) + timeInAir % 60 / 100; // calced turn rate - [DisplayFieldName("turnrate")] + [DisplayFieldName("turnrate.Field")] [DisplayText("Turn Rate (speed)")] [GroupText("Position")] public float turnrate @@ -1115,7 +1115,7 @@ public float turnrate [DisplayText("Turn Gs (load)")][GroupText("Position")] public float turng => (float)(1 / Math.Cos(MathHelper.deg2rad * roll)); // turn radius - [DisplayFieldName("radius")] + [DisplayFieldName("radius.Field")] [DisplayText("Turn Radius (dist)")] [GroupText("Position")] public float radius @@ -1143,12 +1143,12 @@ public float QNH } } - [DisplayFieldName("wind_dir")] + [DisplayFieldName("wind_dir.Field")] [DisplayText("Wind Direction (Deg)")] [GroupText("Position")] public float wind_dir { get; set; } - [DisplayFieldName("wind_vel")] + [DisplayFieldName("wind_vel.Field")] [DisplayText("Wind Velocity (speed)")] [GroupText("Position")] public float wind_vel { get; set; } @@ -1196,7 +1196,7 @@ public string messageHigh //battery [GroupText("Battery")] - [DisplayFieldName("battery_voltage")] + [DisplayFieldName("battery_voltage.Field")] [DisplayText("Bat Voltage (V)")] public double battery_voltage { @@ -1281,7 +1281,7 @@ public int battery_remaining public int battery_remaining9 { get; set; } [GroupText("Battery")] - [DisplayFieldName("current")] + [DisplayFieldName("current.Field")] [DisplayText("Bat Current (Amps)")] public double current { @@ -1346,23 +1346,23 @@ public double current2 public double current9 { get; set; } [GroupText("Battery")] - [DisplayFieldName("watts")] + [DisplayFieldName("watts.Field")] [DisplayText("Bat Watts")] public double watts => battery_voltage * current; [GroupText("Battery")] - [DisplayFieldName("battery_mahperkm")] + [DisplayFieldName("battery_mahperkm.Field")] [DisplayText("Bat efficiency (mah/km)")] public double battery_mahperkm => battery_usedmah / (distTraveled / 1000.0f); [GroupText("Battery")] - [DisplayFieldName("battery_kmleft")] + [DisplayFieldName("battery_kmleft.Field")] [DisplayText("Bat km left EST (km)")] public double battery_kmleft => (100.0f / (100.0f - battery_remaining) * battery_usedmah - battery_usedmah) / battery_mahperkm; [GroupText("Battery")] - [DisplayFieldName("battery_usedmah")] + [DisplayFieldName("battery_usedmah.Field")] [DisplayText("Bat used EST (mah)")] public double battery_usedmah { get; set; } @@ -1642,7 +1642,7 @@ public float GeoFenceDist } [GroupText("Position")] - [DisplayFieldName("DistToHome")] + [DisplayFieldName("DistToHome.Field")] [DisplayText("Dist to Home (dist)")] public float DistToHome { @@ -1664,7 +1664,7 @@ public float DistToHome } [GroupText("Position")] - [DisplayFieldName("DistFromMovingBase")] + [DisplayFieldName("DistFromMovingBase.Field")] [DisplayText("Dist to Moving Base (dist)")] public float DistFromMovingBase { @@ -1685,7 +1685,7 @@ public float DistFromMovingBase } } - [DisplayFieldName("ELToMAV")] + [DisplayFieldName("ELToMAV.Field")] [DisplayText("Elevation to Mav (deg)")] [GroupText("Position")] public float ELToMAV @@ -1705,7 +1705,7 @@ public float ELToMAV } } - [DisplayFieldName("AZToMAV")] + [DisplayFieldName("AZToMAV.Field")] [DisplayText("Bearing to Mav (deg)")] [GroupText("Position")] public float AZToMAV @@ -1734,7 +1734,7 @@ public float AZToMAV } } - [DisplayFieldName("sonarrange")] + [DisplayFieldName("sonarrange.Field")] [DisplayText("Sonar Range (alt)")] [GroupText("Sensor")] public float sonarrange @@ -1743,7 +1743,7 @@ public float sonarrange set => _sonarrange = value; } - [DisplayFieldName("sonarvoltage")] + [DisplayFieldName("sonarvoltage.Field")] [DisplayText("Sonar Voltage (Volt)")] [GroupText("Sensor")] public float sonarvoltage { get; set; } @@ -1778,7 +1778,7 @@ public float sonarrange [GroupText("Telem")] public byte txbuffer { get; set; } [GroupText("Telem")] - [DisplayFieldName("noise")] + [DisplayFieldName("noise.Field")] [DisplayText("Sik Radio noise")] public float noise { get; set; } @@ -1790,7 +1790,7 @@ public float sonarrange [GroupText("Telem")] public ushort fixedp { get; set; } [GroupText("Telem")] - [DisplayFieldName("localsnrdb")] + [DisplayFieldName("localsnrdb.Field")] [DisplayText("Sik Radio snr")] public float localsnrdb { @@ -1817,7 +1817,7 @@ public float remotesnrdb } [GroupText("Telem")] - [DisplayFieldName("DistRSSIRemain")] + [DisplayFieldName("DistRSSIRemain.Field")] [DisplayText("Sik Radio est dist (m)")] public float DistRSSIRemain { @@ -1855,22 +1855,22 @@ public float DistRSSIRemain [DisplayText("Error Count")][GroupText("Hardware")] public ushort errors_count4 { get; set; } - [DisplayFieldName("hwvoltage")] + [DisplayFieldName("hwvoltage.Field")] [DisplayText("HW Voltage")] [GroupText("Hardware")] public float hwvoltage { get; set; } - [DisplayFieldName("boardvoltage")] + [DisplayFieldName("boardvoltage.Field")] [DisplayText("Board Voltage")] [GroupText("Hardware")] public float boardvoltage { get; set; } - [DisplayFieldName("servovoltage")] + [DisplayFieldName("servovoltage.Field")] [DisplayText("Servo Rail Voltage")] [GroupText("Hardware")] public float servovoltage { get; set; } - [DisplayFieldName("voltageflag")] + [DisplayFieldName("voltageflag.Field")] [DisplayText("Voltage Flags")] [GroupText("Hardware")] public uint voltageflag { get; set; } @@ -2041,52 +2041,52 @@ public float ter_alt public int gen_maint_time { get; set; } [GroupText("EFI")] - [DisplayFieldNameAttribute("efi_baro")] + [DisplayFieldNameAttribute("efi_baro.Field")] [DisplayText("EFI Baro Pressure (kPa)")] public float efi_baro { get; private set; } [GroupText("EFI")] - [DisplayFieldName("efi_headtemp")] + [DisplayFieldName("efi_headtemp.Field")] [DisplayText("EFI Head Temp (C)")] public float efi_headtemp { get; private set; } [GroupText("EFI")] - [DisplayFieldName("efi_load")] + [DisplayFieldName("efi_load.Field")] [DisplayText("EFI Load (%)")] public float efi_load { get; private set; } [GroupText("EFI")] - [DisplayFieldName("efi_health")] + [DisplayFieldName("efi_health.Field")] [DisplayText("EFI Health")] public byte efi_health { get; private set; } [GroupText("EFI")] - [DisplayFieldNameAttribute("efi_exhasttemp")] + [DisplayFieldNameAttribute("efi_exhasttemp.Field")] [DisplayText("EFI Exhast Temp (C)")] public float efi_exhasttemp { get; private set; } [GroupText("EFI")] - [DisplayFieldName("efi_intaketemp")] + [DisplayFieldName("efi_intaketemp.Field")] [DisplayText("EFI Intake Temp (C)")] public float efi_intaketemp { get; private set; } [GroupText("EFI")] - [DisplayFieldName("efi_rpm")] + [DisplayFieldName("efi_rpm.Field")] [DisplayText("EFI rpm")] public float efi_rpm { get; private set; } [GroupText("EFI")] - [DisplayFieldName("efi_fuelflow")] + [DisplayFieldName("efi_fuelflow.Field")] [DisplayText("EFI Fuel Flow (g/min)")] public float efi_fuelflow { get; private set; } [GroupText("EFI")] - [DisplayFieldName("efi_fuelconsumed")] + [DisplayFieldName("efi_fuelconsumed.Field")] [DisplayText("EFI Fuel Consumed (g)")] public float efi_fuelconsumed { get; private set; } [GroupText("EFI")] - [DisplayFieldName("efi_fuelpressure")] + [DisplayFieldName("efi_fuelpressure.Field")] [DisplayText("EFI Fuel Pressure (kPa)")] public float efi_fuelpressure { get; private set; } @@ -3962,7 +3962,7 @@ public List GetItemList(bool alpha = false, bool numbersonly = false) return ans; } - public string GetTranslatedFieldName(string name) + public string GetFieldDesc(string name) { if (custom_field_names.ContainsKey(name)) { @@ -3978,7 +3978,14 @@ public string GetTranslatedFieldName(string name) if (attrib.Length > 0) { - return attrib.OfType().First().Text; + var translated = attrib.OfType().First().TryTranslate(defaultTo: null); + + if (translated != null) + { + return translated; + } + + // fall-through } } diff --git a/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs b/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs index d44b6e8d09..73e00833ff 100644 --- a/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs +++ b/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs @@ -57,21 +57,20 @@ public string Text [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = false)] public sealed class DisplayFieldNameAttribute : Attribute { + private readonly string _translationKey; - private readonly string _text; - - public DisplayFieldNameAttribute(string text) + public DisplayFieldNameAttribute(string translationKey) { - if (String.IsNullOrEmpty(text)) + if (String.IsNullOrEmpty(translationKey)) { - throw new ArgumentException("\"text\" is required."); + throw new ArgumentException("\"translationKey\" is required."); } - _text = text; + _translationKey = translationKey; } - public string Text + public string TryTranslate(string defaultTo) { - get { return MissionPlanner.Utilities.L10NU.GetString(_text); } + return MissionPlanner.Utilities.L10NU.GetString(_translationKey, defaultTo: defaultTo); } } diff --git a/ExtLibs/Utilities/L10NU.cs b/ExtLibs/Utilities/L10NU.cs index 6ed1e01c8c..ead7ea89ff 100644 --- a/ExtLibs/Utilities/L10NU.cs +++ b/ExtLibs/Utilities/L10NU.cs @@ -45,16 +45,21 @@ static L10NU() } } - public static string GetString(string key) - { + public static string GetString(string key, string defaultTo) + { if (strings.ContainsKey(key)) { return strings[key]; } else { - return key; - } + return defaultTo; + } + } + + public static string GetString(string key) + { + return GetString(key, defaultTo: key); } } } diff --git a/ExtLibs/Utilities/Resources/strings_uk.txt b/ExtLibs/Utilities/Resources/strings_uk.txt index 004d5e996b..654e8054e5 100644 --- a/ExtLibs/Utilities/Resources/strings_uk.txt +++ b/ExtLibs/Utilities/Resources/strings_uk.txt @@ -1,73 +1,73 @@ -roll=roll (крен) +roll.Field=roll (крен) Roll (deg)=Крен (deg) -pitch=pitch (тангаж) +pitch.Field=pitch (тангаж) Pitch (deg)=Тангаж (deg) -yaw=yaw (рискання) +yaw.Field=yaw (рискання) Yaw (deg)=Рискання (deg) -groundcourse=groundcourse (шлях.кут) +groundcourse.Field=groundcourse (шлях.кут) GroundCourse (deg)=Шляховий кут (deg) -lat=lat (широта) +lat.Field=lat (широта) Latitude (dd)=Широта (dd) -lng=lng (довгота) +lng.Field=lng (довгота) Longitude (dd)=Довгота (dd) -alt=alt (висота) +alt.Field=alt (висота) Altitude (dist)=Висота (dist) -altoffsethome=altoffsethome (компенс.висоти дом.точки) +altoffsethome.Field=altoffsethome (компенс.висоти дом.точки) Alt Home Offset (dist)=Компенсація висоти дом.точки (dist) -gpsstatus=gpsstatus (стан GPS) +gpsstatus.Field=gpsstatus (стан GPS) Gps Status=Стан GPS -gpshdop=gpshdop (GPS HDOP) +gpshdop.Field=gpshdop (GPS HDOP) Gps HDOP=Горизон. погіршення точності GPS -satcount=satcount (кільк.супутників) +satcount.Field=satcount (кільк.супутників) Sat Count=Кількість супутників -airspeed=airspeed (повітр.швидкість) +airspeed.Field=airspeed (повітр.швидкість) AirSpeed (speed)=Повітряна швидкість (speed) -targetairspeed=targetairspeed (задана повітр.швидкість) +targetairspeed.Field=targetairspeed (задана повітр.швидкість) Airspeed Target (speed)=Задана повітряна швидкість (speed) -asratio=asratio (коеф.повітр.швидкості) +asratio.Field=asratio (коеф.повітр.швидкості) Airspeed Ratio=Коефіцієнт повітряної швидкості -groundspeed=groundspeed (шлях.швидкість) +groundspeed.Field=groundspeed (шлях.швидкість) GroundSpeed (speed)=Шляхова швидкість (speed) -ax=ax (прискор.X) +ax.Field=ax (прискор.X) Accel X=Прискорення X -ay=ay (прискор.Y) +ay.Field=ay (прискор.Y) Accel Y=Прискорення Y -az=az (прискор.Z) +az.Field=az (прискор.Z) Accel Z=Прискорення Z -gx=gx (гіро X) +gx.Field=gx (гіро X) Gyro X=Гіроскоп X -gy=gy (гіро Y) +gy.Field=gy (гіро Y) Gyro Y=Гіроскоп Y -gz=gz (гіро Z) +gz.Field=gz (гіро Z) Gyro Z=Гіроскоп Z -mx=mx (компас X) +mx.Field=mx (компас X) Mag X=Компас X -my=my (компас Y) +my.Field=my (компас Y) Mag Y=Компас Y -mz=mz (компас Z) +mz.Field=mz (компас Z) Mag Z=Компас Z Accel2 X=Прискорення #2 X @@ -88,108 +88,108 @@ Mag2 Y=Компас #2 Y Mag2 Z=Компас #2 Z -magfield=magfield (магнітне поле) +magfield.Field=magfield (магнітне поле) Mag Field=Магнітне Поле Mag2 Field=Магнітне Поле #2 Mag3 Field=Магнітне Поле #3 -accelsq=accelsq (сила прискорення) +accelsq.Field=accelsq (сила прискорення) Accel Strength=Сила Прискорення -gyrosq=gyrosq (сила гіроскопа) +gyrosq.Field=gyrosq (сила гіроскопа) Gyro Strength=Сила Гіроскопа Accel2 Strength=Сила Прискорення #2 Accel3 Strength=Сила Прискорення #3 -failsafe=failsafe (відмовостійкий) +failsafe.Field=failsafe (відмовостійкий) Failsafe=Відмовостійкий -rxrssi=rxrssi (потужність RX) +rxrssi.Field=rxrssi (потужність RX) RX Rssi=Потужність RX (rssi) -verticalspeed=verticalspeed (верт.швидкість) +verticalspeed.Field=verticalspeed (верт.швидкість) Vertical Speed (speed)=Вертикальна швидкість (speed) -wind_dir=wind_dir (напрямок вітру) +wind_dir.Field=wind_dir (напрямок вітру) Wind Direction (Deg)=Напрямок вітру (Deg) -wind_vel=wind_vel (швидкість вітру) +wind_vel.Field=wind_vel (швидкість вітру) Wind Velocity (speed)=Швидкість вітру (speed) -vx=vx (швидкість X) +vx.Field=vx (швидкість X) Velocity X (ms)=Швидкість X (ms) -vy=vy (швидкість Y) +vy.Field=vy (швидкість Y) Velocity Y (ms)=Швидкість Y (ms) -vz=vz (швидкість Z) +vz.Field=vz (швидкість Z) Velocity Z (ms)=Швидкість Z (ms) -nav_roll=nav_roll (заданий крен) +nav_roll.Field=nav_roll (заданий крен) Roll Target (deg)=Заданий крен (deg) -nav_pitch=nav_pitch (заданий тангаж) +nav_pitch.Field=nav_pitch (заданий тангаж) Pitch Target (deg)=Заданий тангаж (deg) -nav_bearing=nav_bearing (заданий пеленг) +nav_bearing.Field=nav_bearing (заданий пеленг) Bearing Target (deg)=Заданий пеленг (deg) -wp_dist=wp_dist (відстань до п-ту маршруту) +wp_dist.Field=wp_dist (відстань до п-ту маршруту) Dist to WP (dist)=Відстань до пункту маршуту (dist) -alt_error=alt_error (похибка висоти) +alt_error.Field=alt_error (похибка висоти) Altitude Error (dist)=Похибка висоти (dist) -ber_error=ber_error (похибка пеленгу) +ber_error.Field=ber_error (похибка пеленгу) Bearing Error (deg)=Похибка пеленгу (deg) -aspd_error=aspd_error (похибка повітр.швидкості) +aspd_error.Field=aspd_error (похибка повітр.швидкості) Airspeed Error (speed)=Похибка повітряної швидкості (speed) -xtrack_error=xtrack_error (похибка Xtrack) +xtrack_error.Field=xtrack_error (похибка Xtrack) Xtrack Error (m)=Похибка Xtrack (m) -mode=mode (режим) +mode.Field=mode (режим) Mode=Режим -climbrate=climbrate (швидкість підйому) +climbrate.Field=climbrate (швидкість підйому) ClimbRate (speed)=Швидкість підйому (speed) -tot=tot (час над ціллю) +tot.Field=tot (час над ціллю) Time over Target (sec)=Час над ціллю (sec) -toh=toh (час над дом.точкою) +toh.Field=toh (час над дом.точкою) Time over Home (sec)=Час над дом.точкою (sec) -distTraveled=distTraveled (пройдена відстань) +distTraveled.Field=distTraveled (пройдена відстань) Dist Traveled (dist)=Пройдена відстань (dist) -timeSinceArmInAir=timeSinceArmInAir (час у повітрі) +timeSinceArmInAir.Field=timeSinceArmInAir (час у повітрі) Time in Air (sec)=Час у повітрі (sec) -turnrate=turnrate (швидкість повороту) +turnrate.Field=turnrate (швидкість повороту) Turn Rate (speed)=Швидкість повороту (speed) -radius=radius (радіус повороту) +radius.Field=radius (радіус повороту) Turn Radius (dist)=Радіус повороту (dist) -battery_voltage=battery_voltage (напруга бат.) +battery_voltage.Field=battery_voltage (напруга бат.) Bat Voltage (V)=Напруга батареї (V) -battery_remaining.Field = battery_remaining (залишок бат.(%)) +battery_remaining.Field .Field= battery_remaining (залишок бат.(%)) Bat Remaining (%)=Залишок батареї (%) -current=current (струм бат.) +current.Field=current (струм бат.) Bat Current (Amps)=Струм батареї (Amps) -watts=watts (потужність бат.) +watts.Field=watts (потужність бат.) Bat Watts=Потужність батареї (Watts) -battery_usedmah=battery_usedmah (використ.бат.) +battery_usedmah.Field=battery_usedmah (використ.бат.) Bat used EST (mah)=Використано батареї (прибл.) (mah) Bat2 Voltage (V)=Напруга батереї #2 (V) @@ -210,16 +210,16 @@ Bat8 Current (Amps)=Струм батареї #8 (Amps) Bat9 Current (Amps)=Струм батареї #9 (Amps) -ELToMAV=ELToMAV (підвищ.до М-БпЛА) +ELToMAV.Field=ELToMAV (підвищ.до М-БпЛА) Elevation to Mav (deg)=Підвищення до М-БпЛА (deg) -AZToMAV=AZToMAV (пеленг до М-БпЛА) +AZToMAV.Field=AZToMAV (пеленг до М-БпЛА) Bearing to Mav (deg)=Пеленг до М-БпЛА (deg) -sonarrange=sonarrange (діапазон сонара) +sonarrange.Field=sonarrange (діапазон сонара) Sonar Range (alt)=Діапазон сонара (alt) -sonarvoltage=sonarvoltage (напруга сонара) +sonarvoltage.Field=sonarvoltage (напруга сонара) Sonar Voltage (Volt)=Напруга сонара (Volt) 3DR Radio rssi=Потужність 3DR-радіосигналу (rssi) @@ -236,104 +236,104 @@ Sonar Voltage (Volt)=Напруга сонара (Volt) 3DR Radio est dist (m)=3DR-радіо прибл. відстань (m) -hwvoltage=hwvoltage (апаратна напруга) +hwvoltage.Field=hwvoltage (апаратна напруга) HW Voltage=Апаратна напруга -boardvoltage=boardvoltage (борт.напруга) +boardvoltage.Field=boardvoltage (борт.напруга) Board Voltage=Бортова напруга -servovoltage=servovoltage (напруга серво-рейки) +servovoltage.Field=servovoltage (напруга серво-рейки) Servo Rail Voltage=Напруга серво-рейки -voltageflag=voltageflag (стан напруги) +voltageflag.Field=voltageflag (стан напруги) Voltage Flags=Стан напруги -altasl=altasl (висота) +altasl.Field=altasl (висота) Altitude (alt)=Висота (alt) Altitude2 (dist)=Висота #2 (dist) -AOA=AOA (кут атаки) +AOA.Field=AOA (кут атаки) AOA (deg)=Кут атаки (deg) -battery_kmleft=battery_kmleft (залишок бат.(km)) +battery_kmleft.Field=battery_kmleft (залишок бат.(km)) Bat km left EST (km)=Залишок батареї (у km) -battery_mahperkm=battery_mahperkm (ефективність бат.) +battery_mahperkm.Field=battery_mahperkm (ефективність бат.) Bat efficiency (mah/km)=Ефективність батареї (mah/km) -crit_AOA=crit_AOA (крит.кут атаки) +crit_AOA.Field=crit_AOA (крит.кут атаки) Crit AOA (deg)=Критичний Кут атаки (deg) -DistFromMovingBase=DistFromMovingBase (відстань від рух.бази) +DistFromMovingBase.Field=DistFromMovingBase (відстань від рух.бази) Dist to Moving Base (dist)=Відстань від рухомої бази (dist) -DistToHome=DistToHome (відстань до дом.точки) +DistToHome.Field=DistToHome (відстань до дом.точки) Dist to Home (dist)=Відстань до дом.точки (dist) -localsnrdb=localsnrdb (сигнал/шум Sik-радіо) +localsnrdb.Field=localsnrdb (сигнал/шум Sik-радіо) Sik Radio snr=Сигнал/Шум Sik-радіо -DistRSSIRemain=DistRSSIRemain (Sik-радіо прибл.відстань) +DistRSSIRemain.Field=DistRSSIRemain (Sik-радіо прибл.відстань) Sik Radio est dist (m)=Sik-радіо прибл. відстань (m) -glide_ratio=glide_ratio (коеф.глісади) +glide_ratio.Field=glide_ratio (коеф.глісади) Glide Ratio=Коефіцієнт Глісади -horizondist=horizondist (відст.до гориз.) +horizondist.Field=horizondist (відст.до гориз.) Horizon Dist (dist)=Відстань до горизонту (dist) -gpsvel_acc=gpsvel_acc (точн.швидкості) +gpsvel_acc.Field=gpsvel_acc (точн.швидкості) Velocity Accuracy=Точність індикат. швидкості -gpsyaw=gpsyaw (рискання згідно GPS) +gpsyaw.Field=gpsyaw (рискання згідно GPS) GPS Yaw (deg)=Рискання (GPS) (deg) GroundCourse2 (deg)=Шляховий кут #2 (deg) -noise=noise (шум Sik-радіо) +noise.Field=noise (шум Sik-радіо) Sik Radio noise=Шум Sik-радіо -imu1_temp=imu1_temp (IMU#1 темп.) +imu1_temp.Field=imu1_temp (IMU#1 темп.) IMU1 Temperature=IMU-сенсор #1: Температура IMU2 Temperature=IMU-сенсор #2: Температура IMU3 Temperature=IMU-сенсор #3: Температура -efi_baro=efi_baro (інжектор:баром.тиск) +efi_baro.Field=efi_baro (інжектор:баром.тиск) EFI Baro Pressure (kPa)=Інжектор: Барометр. тиск (kPa) -efi_headtemp=efi_headtemp (інжектор:темп.гол.блоку.цил.) +efi_headtemp.Field=efi_headtemp (інжектор:темп.гол.блоку.цил.) EFI Head Temp (C)=Інжектор: Темпер.головки блоку циліндру (C) -efi_load=efi_load (інжектор:навантаж.двигуна) +efi_load.Field=efi_load (інжектор:навантаж.двигуна) EFI Load (%)=Інжектор: Навантаження двигуна (%) -efi_health=efi_health (інжектор:справність) +efi_health.Field=efi_health (інжектор:справність) EFI Health=Інжектор: Справність -efi_exhasttemp=efi_exhasttemp (інжектор:темп.вихлопу) +efi_exhasttemp.Field=efi_exhasttemp (інжектор:темп.вихлопу) EFI Exhast Temp (C)=Інжектор: Температура вихлопу (C) -efi_intaketemp=efi_intaketemp (інжектор:впускна темп.) +efi_intaketemp.Field=efi_intaketemp (інжектор:впускна темп.) EFI Intake Temp (C)=Інжектор: Впускна температура (C) -efi_rpm=efi_rpm (інжектор:кільк.обертів) +efi_rpm.Field=efi_rpm (інжектор:кільк.обертів) EFI rpm=Інжектор: Кількість обертів -efi_fuelflow=efi_fuelflow (інжектор:потік палива) +efi_fuelflow.Field=efi_fuelflow (інжектор:потік палива) EFI Fuel Flow (g/min)=Інжектор: Потік палива (g/min) -efi_fuelconsumed=efi_fuelconsumed (інжектор:палива спожито) +efi_fuelconsumed.Field=efi_fuelconsumed (інжектор:палива спожито) EFI Fuel Consumed (g)=Інжектор: Палива спожито (g) -efi_fuelpressure=efi_fuelpressure (інжектор:тиск палива) +efi_fuelpressure.Field=efi_fuelpressure (інжектор:тиск палива) EFI Fuel Pressure (kPa)=Інжектор: Тиск палива (kPa) Longitude2 (dd)=Довгота #2 (dd) -SSA=SSA (кут бок.ковз) +SSA.Field=SSA (кут бок.ковз) SSA (deg)=Кут боков.ковзання (deg) flow_comp_m_x=Оптич.потік з гіро-компенсац. X diff --git a/GCSViews/FlightData.cs b/GCSViews/FlightData.cs index 955a0c5ef8..8d41e6e866 100644 --- a/GCSViews/FlightData.cs +++ b/GCSViews/FlightData.cs @@ -4463,9 +4463,9 @@ private void quickView_DoubleClick(object sender, EventArgs e) } else { - var translatedFieldName = MainV2.comPort.MAV.cs.GetTranslatedFieldName(field.Name); - max_length = Math.Max(max_length, TextRenderer.MeasureText(translatedFieldName, selectform.Font).Width); - fields.Add((field.Name, translatedFieldName)); + var fieldDesc = MainV2.comPort.MAV.cs.GetFieldDesc(field.Name); + max_length = Math.Max(max_length, TextRenderer.MeasureText(fieldDesc, selectform.Font).Width); + fields.Add((field.Name, fieldDesc)); } } From f5663183d86a0e30e21c9cefb24648282a9ada55 Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sun, 9 Jun 2024 03:42:03 +0300 Subject: [PATCH 06/11] Improve translations --- ExtLibs/ArduPilot/CurrentState.cs | 7 +++++-- ExtLibs/Utilities/Resources/strings_uk.txt | 8 +++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ExtLibs/ArduPilot/CurrentState.cs b/ExtLibs/ArduPilot/CurrentState.cs index 371e1ae520..967c1f1c2e 100644 --- a/ExtLibs/ArduPilot/CurrentState.cs +++ b/ExtLibs/ArduPilot/CurrentState.cs @@ -981,6 +981,7 @@ public double glide_ratio public float nav_bearing { get; set; } [GroupText("NAV")] + [DisplayFieldName("target_bearing.Field")] [DisplayText("Bearing Target (deg)")] public float target_bearing { get; set; } @@ -1086,12 +1087,14 @@ public int toh [GroupText("Position")] public float distTraveled { get; set; } - [DisplayFieldName("timeSinceArmInAir.Field")] [DisplayText("Time in Air (sec)")] [GroupText("Position")] public float timeSinceArmInAir { get; set; } - [DisplayText("Time in Air (sec)")][GroupText("Position")] public float timeInAir { get; set; } + [DisplayFieldName("timeInAir.Field")] + [DisplayText("Time in Air (sec)")] + [GroupText("Position")] + public float timeInAir { get; set; } //Time in Air converted to min.sec format for easier reading [DisplayText("Time in Air (min.sec)")] diff --git a/ExtLibs/Utilities/Resources/strings_uk.txt b/ExtLibs/Utilities/Resources/strings_uk.txt index 654e8054e5..61492eb707 100644 --- a/ExtLibs/Utilities/Resources/strings_uk.txt +++ b/ExtLibs/Utilities/Resources/strings_uk.txt @@ -136,6 +136,8 @@ nav_pitch.Field=nav_pitch (заданий тангаж) Pitch Target (deg)=Заданий тангаж (deg) nav_bearing.Field=nav_bearing (заданий пеленг) + +target_bearing.Field=target_bearing (заданий пеленг) Bearing Target (deg)=Заданий пеленг (deg) wp_dist.Field=wp_dist (відстань до п-ту маршруту) @@ -168,7 +170,7 @@ Time over Home (sec)=Час над дом.точкою (sec) distTraveled.Field=distTraveled (пройдена відстань) Dist Traveled (dist)=Пройдена відстань (dist) -timeSinceArmInAir.Field=timeSinceArmInAir (час у повітрі) +timeInAir.Field=timeSinceArmInAir (час у повітрі (sec)) Time in Air (sec)=Час у повітрі (sec) turnrate.Field=turnrate (швидкість повороту) @@ -313,10 +315,10 @@ EFI Load (%)=Інжектор: Навантаження двигуна (%) efi_health.Field=efi_health (інжектор:справність) EFI Health=Інжектор: Справність -efi_exhasttemp.Field=efi_exhasttemp (інжектор:темп.вихлопу) +efi_exhasttemp.Field=efi_exhasttemp (інжектор:темпер.вихлопу) EFI Exhast Temp (C)=Інжектор: Температура вихлопу (C) -efi_intaketemp.Field=efi_intaketemp (інжектор:впускна темп.) +efi_intaketemp.Field=efi_intaketemp (інжектор:впускна темпер.) EFI Intake Temp (C)=Інжектор: Впускна температура (C) efi_rpm.Field=efi_rpm (інжектор:кільк.обертів) From f260f21c77298637fc4f3c431623df1593a1f46c Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sun, 9 Jun 2024 03:45:08 +0300 Subject: [PATCH 07/11] Clean up --- ExtLibs/ArduPilot/CurrentState.cs | 303 +++++++++++++----------------- ExtLibs/Utilities/L10NU.cs | 8 +- GCSViews/FlightData.cs | 6 +- 3 files changed, 142 insertions(+), 175 deletions(-) diff --git a/ExtLibs/ArduPilot/CurrentState.cs b/ExtLibs/ArduPilot/CurrentState.cs index 967c1f1c2e..623841b2ca 100644 --- a/ExtLibs/ArduPilot/CurrentState.cs +++ b/ExtLibs/ArduPilot/CurrentState.cs @@ -251,18 +251,18 @@ public CurrentState() public float customfield19 { get; set; } // orientation - rads - [DisplayFieldName("roll.Field")] + [DisplayFieldName("roll.Field")] [DisplayText("Roll (deg)")] [GroupText("Attitude")] public float roll { get; set; } [GroupText("Attitude")] - [DisplayFieldName("pitch.Field")] + [DisplayFieldName("pitch.Field")] [DisplayText("Pitch (deg)")] public float pitch { get; set; } [GroupText("Attitude")] - [DisplayFieldName("yaw.Field")] + [DisplayFieldName("yaw.Field")] [DisplayText("Yaw (deg)")] public float yaw { @@ -277,17 +277,17 @@ public float yaw } [GroupText("Attitude")] - [DisplayFieldName("SSA.Field")] + [DisplayFieldName("SSA.Field")] [DisplayText("SSA (deg)")] public float SSA { get; set; } [GroupText("Attitude")] - [DisplayFieldName("AOA.Field")] + [DisplayFieldName("AOA.Field")] [DisplayText("AOA (deg)")] public float AOA { get; set; } [GroupText("Position")] - [DisplayFieldName("groundcourse.Field")] + [DisplayFieldName("groundcourse.Field")] [DisplayText("GroundCourse (deg)")] public float groundcourse { @@ -302,18 +302,18 @@ public float groundcourse } // position - [DisplayFieldName("lat.Field")] + [DisplayFieldName("lat.Field")] [DisplayText("Latitude (dd)")] [GroupText("Position")] public double lat { get; set; } [GroupText("Position")] - [DisplayFieldName("lng.Field")] + [DisplayFieldName("lng.Field")] [DisplayText("Longitude (dd)")] public double lng { get; set; } [GroupText("Position")] - [DisplayFieldName("alt.Field")] + [DisplayFieldName("alt.Field")] [DisplayText("Altitude (alt)")] public float alt { @@ -340,7 +340,7 @@ public float alt } [GroupText("Position")] - [DisplayFieldName("altasl.Field")] + [DisplayFieldName("altasl.Field")] [DisplayText("Altitude (alt)")] public float altasl { @@ -349,58 +349,58 @@ public float altasl } [GroupText("Position")] - [DisplayFieldName("horizondist.Field")] + [DisplayFieldName("horizondist.Field")] [DisplayText("Horizon Dist (dist)")] public float horizondist => (float)(3570 * Math.Sqrt(alt)) * multiplierdist; [GroupText("Position")] - [DisplayFieldName("vx.Field")] + [DisplayFieldName("vx.Field")] [DisplayText("Velocity X (ms)")] public double vx { get; set; } [DisplayText("Velocity Y (ms)")] - [DisplayFieldName("vy.Field")] + [DisplayFieldName("vy.Field")] [GroupText("Position")] public double vy { get; set; } [DisplayText("Velocity Z (ms)")] - [DisplayFieldName("vz.Field")] + [DisplayFieldName("vz.Field")] [GroupText("Position")] public double vz { get; set; } [GroupText("Position")] public double vlen => Math.Sqrt(Math.Pow(vx, 2) + Math.Pow(vy, 2) + Math.Pow(vz, 2)); [GroupText("Position")] - [DisplayFieldName("altoffsethome.Field")] + [DisplayFieldName("altoffsethome.Field")] [DisplayText("Alt Home Offset (dist)")] public float altoffsethome { get; set; } [GroupText("Position")] - [DisplayFieldName("gpsstatus.Field")] + [DisplayFieldName("gpsstatus.Field")] [DisplayText("Gps Status")] public float gpsstatus { get; set; } - [DisplayFieldName("gpshdop.Field")] + [DisplayFieldName("gpshdop.Field")] [DisplayText("Gps HDOP")] [GroupText("Position")] public float gpshdop { get; set; } - [DisplayFieldName("satcount.Field")] + [DisplayFieldName("satcount.Field")] [DisplayText("Sat Count")] [GroupText("Position")] public float satcount { get; set; } - [DisplayFieldName("gpsh_acc.Field")] + [DisplayFieldName("gpsh_acc.Field")] [DisplayText("H Acc (m)")] [GroupText("Position")] public float gpsh_acc { get; private set; } - [DisplayFieldName("gpsv_acc.Field")] + [DisplayFieldName("gpsv_acc.Field")] [DisplayText("V Acc (m)")] [GroupText("Position")] public float gpsv_acc { get; private set; } - [DisplayFieldName("gpsvel_acc.Field")] + [DisplayFieldName("gpsvel_acc.Field")] [DisplayText("Velocity Accuracy")] [GroupText("Position")] public float gpsvel_acc { get; private set; } @@ -409,7 +409,7 @@ public float altasl [GroupText("Position")] public float gpshdg_acc { get; private set; } - [DisplayFieldName("gpsyaw.Field")] + [DisplayFieldName("gpsyaw.Field")] [DisplayText("GPS Yaw (deg)")] [GroupText("Position")] public float gpsyaw { get; private set; } @@ -478,7 +478,7 @@ public float altasl [GroupText("Other")] public float altd100 => alt / 100 % 10; // speeds - [DisplayFieldName("airspeed.Field")] + [DisplayFieldName("airspeed.Field")] [DisplayText("AirSpeed (speed)")] [GroupText("Sensor")] public float airspeed @@ -487,14 +487,14 @@ public float airspeed set => _airspeed = value; } - [DisplayFieldName("targetairspeed.Field")] + [DisplayFieldName("targetairspeed.Field")] [DisplayText("Airspeed Target (speed)")] [GroupText("NAV")] public float targetairspeed { get; private set; } public bool lowairspeed { get; set; } - [DisplayFieldName("asratio.Field")] + [DisplayFieldName("asratio.Field")] [DisplayText("Airspeed Ratio")] [GroupText("Calibration")] public float asratio { get; set; } @@ -508,7 +508,7 @@ public float airspeed public float airspeed2_temp { get; set; } [GroupText("Position")] - [DisplayFieldName("groundspeed.Field")] + [DisplayFieldName("groundspeed.Field")] [DisplayText("GroundSpeed (speed)")] public float groundspeed { @@ -517,69 +517,69 @@ public float groundspeed } // accel - [DisplayFieldName("ax.Field")] + [DisplayFieldName("ax.Field")] [DisplayText("Accel X")] [GroupText("Sensor")] public float ax { get; set; } - [DisplayFieldName("ay.Field")] + [DisplayFieldName("ay.Field")] [DisplayText("Accel Y")] [GroupText("Sensor")] public float ay { get; set; } - [DisplayFieldName("az.Field")] + [DisplayFieldName("az.Field")] [DisplayText("Accel Z")] [GroupText("Sensor")] public float az { get; set; } - [DisplayFieldName("accelsq.Field")] + [DisplayFieldName("accelsq.Field")] [DisplayText("Accel Strength")] [GroupText("Sensor")] public float accelsq => (float)Math.Sqrt(Math.Pow(ax, 2) + Math.Pow(ay, 2) + Math.Pow(az, 2)) / 1000.0f; // gyro - [DisplayFieldName("gx.Field")] + [DisplayFieldName("gx.Field")] [DisplayText("Gyro X")] [GroupText("Sensor")] public float gx { get; set; } - [DisplayFieldName("gy.Field")] + [DisplayFieldName("gy.Field")] [DisplayText("Gyro Y")] [GroupText("Sensor")] public float gy { get; set; } - [DisplayFieldName("gz.Field")] + [DisplayFieldName("gz.Field")] [DisplayText("Gyro Z")] [GroupText("Sensor")] public float gz { get; set; } - [DisplayFieldName("gyrosq.Field")] + [DisplayFieldName("gyrosq.Field")] [DisplayText("Gyro Strength")] [GroupText("Sensor")] public float gyrosq => (float)Math.Sqrt(Math.Pow(gx, 2) + Math.Pow(gy, 2) + Math.Pow(gz, 2)); // mag - [DisplayFieldName("mx.Field")] + [DisplayFieldName("mx.Field")] [DisplayText("Mag X")] [GroupText("Sensor")] public float mx { get; set; } - [DisplayFieldName("my.Field")] + [DisplayFieldName("my.Field")] [DisplayText("Mag Y")] [GroupText("Sensor")] public float my { get; set; } - [DisplayFieldName("mz.Field")] + [DisplayFieldName("mz.Field")] [DisplayText("Mag Z")] [GroupText("Sensor")] public float mz { get; set; } - [DisplayFieldName("magfield.Field")] + [DisplayFieldName("magfield.Field")] [DisplayText("Mag Field")] [GroupText("Sensor")] public float magfield => (float)Math.Sqrt(Math.Pow(mx, 2) + Math.Pow(my, 2) + Math.Pow(mz, 2)); - [DisplayFieldName("imu1_temp.Field")] + [DisplayFieldName("imu1_temp.Field")] [DisplayText("IMU1 Temperature")] [GroupText("Sensor")] public float imu1_temp { get; set; } @@ -901,18 +901,14 @@ public float ch3percent set => _ch3percent = value; } - [DisplayFieldName("failsafe.Field")] - [DisplayText("Failsafe")] - [GroupText("Software")] - public bool failsafe { get; set; } + [DisplayFieldName("failsafe.Field")] + [DisplayText("Failsafe")][GroupText("Software")] public bool failsafe { get; set; } - [DisplayFieldName("rxrssi.Field")] - [DisplayText("RX Rssi")] - [GroupText("Telem")] - public int rxrssi { get; set; } + [DisplayFieldName("rxrssi.Field")] + [DisplayText("RX Rssi")][GroupText("Telem")] public int rxrssi { get; set; } [GroupText("Attitude")] - [DisplayFieldName("crit_AOA.Field")] + [DisplayFieldName("crit_AOA.Field")] [DisplayText("Crit AOA (deg)")] public float crit_AOA { @@ -937,7 +933,7 @@ public float crit_AOA public bool lowgroundspeed { get; set; } - [DisplayFieldName("verticalspeed.Field")] + [DisplayFieldName("verticalspeed.Field")] [DisplayText("Vertical Speed (speed)")] [GroupText("Position")] public float verticalspeed @@ -952,7 +948,7 @@ public float verticalspeed [DisplayText("Vertical Speed (fpm)")][GroupText("Position")] public double verticalspeed_fpm => vz * -3.28084 * 60; - [DisplayFieldName("glide_ratio.Field")] + [DisplayFieldName("glide_ratio.Field")] [DisplayText("Glide Ratio")] [GroupText("Position")] public double glide_ratio @@ -966,27 +962,27 @@ public double glide_ratio //nav state [GroupText("NAV")] - [DisplayFieldName("nav_roll.Field")] + [DisplayFieldName("nav_roll.Field")] [DisplayText("Roll Target (deg)")] public float nav_roll { get; set; } [GroupText("NAV")] - [DisplayFieldName("nav_pitch.Field")] + [DisplayFieldName("nav_pitch.Field")] [DisplayText("Pitch Target (deg)")] public float nav_pitch { get; set; } [GroupText("NAV")] - [DisplayFieldName("nav_bearing.Field")] + [DisplayFieldName("nav_bearing.Field")] [DisplayText("Bearing Target (deg)")] public float nav_bearing { get; set; } [GroupText("NAV")] - [DisplayFieldName("target_bearing.Field")] + [DisplayFieldName("target_bearing.Field")] [DisplayText("Bearing Target (deg)")] public float target_bearing { get; set; } [GroupText("NAV")] - [DisplayFieldName("wp_dist.Field")] + [DisplayFieldName("wp_dist.Field")] [DisplayText("Dist to WP (dist)")] public float wp_dist { @@ -995,7 +991,7 @@ public float wp_dist } [GroupText("NAV")] - [DisplayFieldName("alt_error.Field")] + [DisplayFieldName("alt_error.Field")] [DisplayText("Altitude Error (dist)")] public float alt_error { @@ -1009,7 +1005,7 @@ public float alt_error } [GroupText("NAV")] - [DisplayFieldName("ber_error.Field")] + [DisplayFieldName("ber_error.Field")] [DisplayText("Bearing Error (deg)")] public float ber_error { @@ -1018,7 +1014,7 @@ public float ber_error } [GroupText("NAV")] - [DisplayFieldName("aspd_error.Field")] + [DisplayFieldName("aspd_error.Field")] [DisplayText("Airspeed Error (speed)")] public float aspd_error { @@ -1032,7 +1028,7 @@ public float aspd_error } [GroupText("NAV")] - [DisplayFieldName("xtrack_error.Field")] + [DisplayFieldName("xtrack_error.Field")] [DisplayText("Xtrack Error (m)")] public float xtrack_error { get; set; } @@ -1041,11 +1037,11 @@ public float aspd_error public float wpno { get; set; } [GroupText("NAV")] - [DisplayFieldName("mode.Field")] + [DisplayFieldName("mode.Field")] [DisplayText("Mode")] public string mode { get; set; } - [DisplayFieldName("climbrate.Field")] + [DisplayFieldName("climbrate.Field")] [DisplayText("ClimbRate (speed)")] [GroupText("Position")] public float climbrate @@ -1058,7 +1054,7 @@ public float climbrate /// /// time over target in seconds /// - [DisplayFieldName("tot.Field")] + [DisplayFieldName("tot.Field")] [DisplayText("Time over Target (sec)")] [GroupText("NAV")] public int tot @@ -1070,7 +1066,7 @@ public int tot } } - [DisplayFieldName("toh.Field")] + [DisplayFieldName("toh.Field")] [DisplayText("Time over Home (sec)")] [GroupText("NAV")] public int toh @@ -1082,19 +1078,13 @@ public int toh } } - [DisplayFieldName("distTraveled.Field")] - [DisplayText("Dist Traveled (dist)")] - [GroupText("Position")] - public float distTraveled { get; set; } + [DisplayFieldName("distTraveled.Field")] + [DisplayText("Dist Traveled (dist)")][GroupText("Position")] public float distTraveled { get; set; } - [DisplayText("Time in Air (sec)")] - [GroupText("Position")] - public float timeSinceArmInAir { get; set; } + [DisplayText("Time in Air (sec)")][GroupText("Position")] public float timeSinceArmInAir { get; set; } - [DisplayFieldName("timeInAir.Field")] - [DisplayText("Time in Air (sec)")] - [GroupText("Position")] - public float timeInAir { get; set; } + [DisplayFieldName("timeInAir.Field")] + [DisplayText("Time in Air (sec)")][GroupText("Position")] public float timeInAir { get; set; } //Time in Air converted to min.sec format for easier reading [DisplayText("Time in Air (min.sec)")] @@ -1102,7 +1092,7 @@ public int toh public float timeInAirMinSec => (int)(timeInAir / 60) + timeInAir % 60 / 100; // calced turn rate - [DisplayFieldName("turnrate.Field")] + [DisplayFieldName("turnrate.Field")] [DisplayText("Turn Rate (speed)")] [GroupText("Position")] public float turnrate @@ -1118,7 +1108,7 @@ public float turnrate [DisplayText("Turn Gs (load)")][GroupText("Position")] public float turng => (float)(1 / Math.Cos(MathHelper.deg2rad * roll)); // turn radius - [DisplayFieldName("radius.Field")] + [DisplayFieldName("radius.Field")] [DisplayText("Turn Radius (dist)")] [GroupText("Position")] public float radius @@ -1146,15 +1136,11 @@ public float QNH } } - [DisplayFieldName("wind_dir.Field")] - [DisplayText("Wind Direction (Deg)")] - [GroupText("Position")] - public float wind_dir { get; set; } + [DisplayFieldName("wind_dir.Field")] + [DisplayText("Wind Direction (Deg)")][GroupText("Position")] public float wind_dir { get; set; } - [DisplayFieldName("wind_vel.Field")] - [DisplayText("Wind Velocity (speed)")] - [GroupText("Position")] - public float wind_vel { get; set; } + [DisplayFieldName("wind_vel.Field")] + [DisplayText("Wind Velocity (speed)")][GroupText("Position")] public float wind_vel { get; set; } [GroupText("NAV")] public float targetaltd100 => targetalt / 100 % 10; [GroupText("NAV")] @@ -1199,7 +1185,7 @@ public string messageHigh //battery [GroupText("Battery")] - [DisplayFieldName("battery_voltage.Field")] + [DisplayFieldName("battery_voltage.Field")] [DisplayText("Bat Voltage (V)")] public double battery_voltage { @@ -1284,7 +1270,7 @@ public int battery_remaining public int battery_remaining9 { get; set; } [GroupText("Battery")] - [DisplayFieldName("current.Field")] + [DisplayFieldName("current.Field")] [DisplayText("Bat Current (Amps)")] public double current { @@ -1349,23 +1335,23 @@ public double current2 public double current9 { get; set; } [GroupText("Battery")] - [DisplayFieldName("watts.Field")] + [DisplayFieldName("watts.Field")] [DisplayText("Bat Watts")] public double watts => battery_voltage * current; [GroupText("Battery")] - [DisplayFieldName("battery_mahperkm.Field")] + [DisplayFieldName("battery_mahperkm.Field")] [DisplayText("Bat efficiency (mah/km)")] public double battery_mahperkm => battery_usedmah / (distTraveled / 1000.0f); [GroupText("Battery")] - [DisplayFieldName("battery_kmleft.Field")] + [DisplayFieldName("battery_kmleft.Field")] [DisplayText("Bat km left EST (km)")] public double battery_kmleft => (100.0f / (100.0f - battery_remaining) * battery_usedmah - battery_usedmah) / battery_mahperkm; [GroupText("Battery")] - [DisplayFieldName("battery_usedmah.Field")] + [DisplayFieldName("battery_usedmah.Field")] [DisplayText("Bat used EST (mah)")] public double battery_usedmah { get; set; } @@ -1645,7 +1631,7 @@ public float GeoFenceDist } [GroupText("Position")] - [DisplayFieldName("DistToHome.Field")] + [DisplayFieldName("DistToHome.Field")] [DisplayText("Dist to Home (dist)")] public float DistToHome { @@ -1667,7 +1653,7 @@ public float DistToHome } [GroupText("Position")] - [DisplayFieldName("DistFromMovingBase.Field")] + [DisplayFieldName("DistFromMovingBase.Field")] [DisplayText("Dist to Moving Base (dist)")] public float DistFromMovingBase { @@ -1688,7 +1674,7 @@ public float DistFromMovingBase } } - [DisplayFieldName("ELToMAV.Field")] + [DisplayFieldName("ELToMAV.Field")] [DisplayText("Elevation to Mav (deg)")] [GroupText("Position")] public float ELToMAV @@ -1708,7 +1694,7 @@ public float ELToMAV } } - [DisplayFieldName("AZToMAV.Field")] + [DisplayFieldName("AZToMAV.Field")] [DisplayText("Bearing to Mav (deg)")] [GroupText("Position")] public float AZToMAV @@ -1737,7 +1723,7 @@ public float AZToMAV } } - [DisplayFieldName("sonarrange.Field")] + [DisplayFieldName("sonarrange.Field")] [DisplayText("Sonar Range (alt)")] [GroupText("Sensor")] public float sonarrange @@ -1746,10 +1732,8 @@ public float sonarrange set => _sonarrange = value; } - [DisplayFieldName("sonarvoltage.Field")] - [DisplayText("Sonar Voltage (Volt)")] - [GroupText("Sensor")] - public float sonarvoltage { get; set; } + [DisplayFieldName("sonarvoltage.Field")] + [DisplayText("Sonar Voltage (Volt)")][GroupText("Sensor")] public float sonarvoltage { get; set; } [DisplayText("RangeFinder1 (cm)")][GroupText("Sensor")] public uint rangefinder1 { get; set; } [DisplayText("RangeFinder2 (cm)")][GroupText("Sensor")] public uint rangefinder2 { get; set; } @@ -1781,7 +1765,7 @@ public float sonarrange [GroupText("Telem")] public byte txbuffer { get; set; } [GroupText("Telem")] - [DisplayFieldName("noise.Field")] + [DisplayFieldName("noise.Field")] [DisplayText("Sik Radio noise")] public float noise { get; set; } @@ -1793,7 +1777,7 @@ public float sonarrange [GroupText("Telem")] public ushort fixedp { get; set; } [GroupText("Telem")] - [DisplayFieldName("localsnrdb.Field")] + [DisplayFieldName("localsnrdb.Field")] [DisplayText("Sik Radio snr")] public float localsnrdb { @@ -1820,7 +1804,7 @@ public float remotesnrdb } [GroupText("Telem")] - [DisplayFieldName("DistRSSIRemain.Field")] + [DisplayFieldName("DistRSSIRemain.Field")] [DisplayText("Sik Radio est dist (m)")] public float DistRSSIRemain { @@ -1858,25 +1842,17 @@ public float DistRSSIRemain [DisplayText("Error Count")][GroupText("Hardware")] public ushort errors_count4 { get; set; } - [DisplayFieldName("hwvoltage.Field")] - [DisplayText("HW Voltage")] - [GroupText("Hardware")] - public float hwvoltage { get; set; } + [DisplayFieldName("hwvoltage.Field")] + [DisplayText("HW Voltage")][GroupText("Hardware")] public float hwvoltage { get; set; } - [DisplayFieldName("boardvoltage.Field")] - [DisplayText("Board Voltage")] - [GroupText("Hardware")] - public float boardvoltage { get; set; } + [DisplayFieldName("boardvoltage.Field")] + [DisplayText("Board Voltage")][GroupText("Hardware")] public float boardvoltage { get; set; } - [DisplayFieldName("servovoltage.Field")] - [DisplayText("Servo Rail Voltage")] - [GroupText("Hardware")] - public float servovoltage { get; set; } + [DisplayFieldName("servovoltage.Field")] + [DisplayText("Servo Rail Voltage")][GroupText("Hardware")] public float servovoltage { get; set; } - [DisplayFieldName("voltageflag.Field")] - [DisplayText("Voltage Flags")] - [GroupText("Hardware")] - public uint voltageflag { get; set; } + [DisplayFieldName("voltageflag.Field")] + [DisplayText("Voltage Flags")][GroupText("Hardware")] public uint voltageflag { get; set; } [GroupText("Hardware")] public ushort i2cerrors { get; set; } @@ -2044,52 +2020,43 @@ public float ter_alt public int gen_maint_time { get; set; } [GroupText("EFI")] - [DisplayFieldNameAttribute("efi_baro.Field")] + [DisplayFieldNameAttribute("efi_baro.Field")] [DisplayText("EFI Baro Pressure (kPa)")] public float efi_baro { get; private set; } - [GroupText("EFI")] - [DisplayFieldName("efi_headtemp.Field")] + [DisplayFieldName("efi_headtemp.Field")] [DisplayText("EFI Head Temp (C)")] public float efi_headtemp { get; private set; } - [GroupText("EFI")] - [DisplayFieldName("efi_load.Field")] + [DisplayFieldName("efi_load.Field")] [DisplayText("EFI Load (%)")] public float efi_load { get; private set; } - [GroupText("EFI")] - [DisplayFieldName("efi_health.Field")] + [DisplayFieldName("efi_health.Field")] [DisplayText("EFI Health")] public byte efi_health { get; private set; } - [GroupText("EFI")] - [DisplayFieldNameAttribute("efi_exhasttemp.Field")] + [DisplayFieldNameAttribute("efi_exhasttemp.Field")] [DisplayText("EFI Exhast Temp (C)")] public float efi_exhasttemp { get; private set; } - [GroupText("EFI")] - [DisplayFieldName("efi_intaketemp.Field")] + [DisplayFieldName("efi_intaketemp.Field")] [DisplayText("EFI Intake Temp (C)")] public float efi_intaketemp { get; private set; } - [GroupText("EFI")] - [DisplayFieldName("efi_rpm.Field")] + [DisplayFieldName("efi_rpm.Field")] [DisplayText("EFI rpm")] public float efi_rpm { get; private set; } - [GroupText("EFI")] - [DisplayFieldName("efi_fuelflow.Field")] + [DisplayFieldName("efi_fuelflow.Field")] [DisplayText("EFI Fuel Flow (g/min)")] public float efi_fuelflow { get; private set; } - [GroupText("EFI")] - [DisplayFieldName("efi_fuelconsumed.Field")] + [DisplayFieldName("efi_fuelconsumed.Field")] [DisplayText("EFI Fuel Consumed (g)")] public float efi_fuelconsumed { get; private set; } - [GroupText("EFI")] - [DisplayFieldName("efi_fuelpressure.Field")] + [DisplayFieldName("efi_fuelpressure.Field")] [DisplayText("EFI Fuel Pressure (kPa)")] public float efi_fuelpressure { get; private set; } @@ -3965,36 +3932,36 @@ public List GetItemList(bool alpha = false, bool numbersonly = false) return ans; } - public string GetFieldDesc(string name) - { - if (custom_field_names.ContainsKey(name)) - { - var desc = custom_field_names[name]; - return desc; - } - - var typeofthing = typeof(CurrentState).GetProperty(name); - - if (typeofthing != null) - { - var attrib = typeofthing.GetCustomAttributes(false).OfType().ToArray(); - - if (attrib.Length > 0) - { - var translated = attrib.OfType().First().TryTranslate(defaultTo: null); - - if (translated != null) - { - return translated; - } - - // fall-through - } - } - - return name; - } - + public string GetFieldDesc(string name) + { + if (custom_field_names.ContainsKey(name)) + { + var desc = custom_field_names[name]; + return desc; + } + + var typeofthing = typeof(CurrentState).GetProperty(name); + + if (typeofthing != null) + { + var attrib = typeofthing.GetCustomAttributes(false).OfType().ToArray(); + + if (attrib.Length > 0) + { + var translated = attrib.OfType().First().TryTranslate(defaultTo: null); + + if (translated != null) + { + return translated; + } + + // fall-through + } + } + + return name; + } + public string GetNameandUnit(string name) { var desc = name; @@ -4483,4 +4450,4 @@ public static string GetDisplayText(string fieldname) return ""; } } -} +} diff --git a/ExtLibs/Utilities/L10NU.cs b/ExtLibs/Utilities/L10NU.cs index ead7ea89ff..03ccee5036 100644 --- a/ExtLibs/Utilities/L10NU.cs +++ b/ExtLibs/Utilities/L10NU.cs @@ -45,8 +45,8 @@ static L10NU() } } - public static string GetString(string key, string defaultTo) - { + public static string GetString(string key, string defaultTo) + { if (strings.ContainsKey(key)) { return strings[key]; @@ -54,11 +54,11 @@ public static string GetString(string key, string defaultTo) else { return defaultTo; - } + } } public static string GetString(string key) - { + { return GetString(key, defaultTo: key); } } diff --git a/GCSViews/FlightData.cs b/GCSViews/FlightData.cs index 8d41e6e866..d23aa25f27 100644 --- a/GCSViews/FlightData.cs +++ b/GCSViews/FlightData.cs @@ -4463,9 +4463,9 @@ private void quickView_DoubleClick(object sender, EventArgs e) } else { - var fieldDesc = MainV2.comPort.MAV.cs.GetFieldDesc(field.Name); - max_length = Math.Max(max_length, TextRenderer.MeasureText(fieldDesc, selectform.Font).Width); - fields.Add((field.Name, fieldDesc)); + var fieldDesc = MainV2.comPort.MAV.cs.GetFieldDesc(field.Name); + max_length = Math.Max(max_length, TextRenderer.MeasureText(fieldDesc, selectform.Font).Width); + fields.Add((field.Name, fieldDesc)); } } From 9b846f1463ce785d49894147ae4a824d8a8bc5af Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sun, 9 Jun 2024 05:09:38 +0300 Subject: [PATCH 08/11] Move the DisplayFieldNameAttribute definition into a separate file --- .../Attributes/DisplayFieldNameAttribute.cs | 28 +++++++++++++++++++ .../Attributes/DisplayTextAttribute.cs | 24 ---------------- 2 files changed, 28 insertions(+), 24 deletions(-) create mode 100644 ExtLibs/Utilities/Attributes/DisplayFieldNameAttribute.cs diff --git a/ExtLibs/Utilities/Attributes/DisplayFieldNameAttribute.cs b/ExtLibs/Utilities/Attributes/DisplayFieldNameAttribute.cs new file mode 100644 index 0000000000..e98b764eed --- /dev/null +++ b/ExtLibs/Utilities/Attributes/DisplayFieldNameAttribute.cs @@ -0,0 +1,28 @@ +using System; +using System.ComponentModel; + +namespace MissionPlanner.Attributes +{ + /// + /// Used to decorate a field with a custom name. + /// + [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = false)] + public sealed class DisplayFieldNameAttribute : Attribute + { + private readonly string _translationKey; + + public DisplayFieldNameAttribute(string translationKey) + { + if (String.IsNullOrEmpty(translationKey)) + { + throw new ArgumentException("\"translationKey\" is required."); + } + _translationKey = translationKey; + } + + public string TryTranslate(string defaultTo) + { + return MissionPlanner.Utilities.L10NU.GetString(_translationKey, defaultTo: defaultTo); + } + } +} diff --git a/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs b/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs index 73e00833ff..1caced695e 100644 --- a/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs +++ b/ExtLibs/Utilities/Attributes/DisplayTextAttribute.cs @@ -50,28 +50,4 @@ public string Text } } - - /// - /// Used to decorate a field with a custom name. - /// - [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = false)] - public sealed class DisplayFieldNameAttribute : Attribute - { - private readonly string _translationKey; - - public DisplayFieldNameAttribute(string translationKey) - { - if (String.IsNullOrEmpty(translationKey)) - { - throw new ArgumentException("\"translationKey\" is required."); - } - _translationKey = translationKey; - } - - public string TryTranslate(string defaultTo) - { - return MissionPlanner.Utilities.L10NU.GetString(_translationKey, defaultTo: defaultTo); - } - - } } From b08460e9ab3ccb2a9e2fc03f934c027c52bfa200 Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sun, 9 Jun 2024 19:48:29 +0300 Subject: [PATCH 09/11] Add translations --- ExtLibs/ArduPilot/CurrentState.cs | 66 +++++++ ExtLibs/Utilities/Resources/strings_uk.txt | 218 +++++++++++++++++---- 2 files changed, 244 insertions(+), 40 deletions(-) diff --git a/ExtLibs/ArduPilot/CurrentState.cs b/ExtLibs/ArduPilot/CurrentState.cs index 623841b2ca..714ea4bd9d 100644 --- a/ExtLibs/ArduPilot/CurrentState.cs +++ b/ExtLibs/ArduPilot/CurrentState.cs @@ -418,6 +418,7 @@ public float altasl [GroupText("Position")] public double lat2 { get; set; } + [DisplayFieldName("lng2.Field")] [DisplayText("Longitude2 (dd)")] [GroupText("Position")] public double lng2 { get; set; } @@ -442,6 +443,7 @@ public float altasl public float groundspeed2 { get; set; } [DisplayText("GroundCourse2 (deg)")] + [DisplayFieldName("groundcourse2.Field")] [GroupText("Position")] public float groundcourse2 { get; set; } @@ -462,6 +464,7 @@ public float altasl [GroupText("Position")] public float gpshdg_acc2 { get; private set; } + [DisplayFieldName("gpsyaw2.Field")] [DisplayText("GPS Yaw (deg)")] [GroupText("Position")] public float gpsyaw2 { get; private set; } @@ -499,10 +502,12 @@ public float airspeed [GroupText("Calibration")] public float asratio { get; set; } + [DisplayFieldName("airspeed1_temp.Field")] [DisplayText("Airspeed1 Temperature")] [GroupText("Sensor")] public float airspeed1_temp { get; set; } + [DisplayFieldName("airspeed2_temp.Field")] [DisplayText("Airspeed2 Temperature")] [GroupText("Sensor")] public float airspeed2_temp { get; set; } @@ -585,112 +590,138 @@ public float groundspeed public float imu1_temp { get; set; } // accel2 + [DisplayFieldName("ax2.Field")] [DisplayText("Accel2 X")] [GroupText("Sensor")] public float ax2 { get; set; } + [DisplayFieldName("ay2.Field")] [DisplayText("Accel2 Y")] [GroupText("Sensor")] public float ay2 { get; set; } + [DisplayFieldName("az2.Field")] [DisplayText("Accel2 Z")] [GroupText("Sensor")] public float az2 { get; set; } + [DisplayFieldName("accelsq2.Field")] [DisplayText("Accel2 Strength")] [GroupText("Sensor")] public float accelsq2 => (float)Math.Sqrt(Math.Pow(ax2, 2) + Math.Pow(ay2, 2) + Math.Pow(az2, 2)) / 1000.0f; // gyro2 + [DisplayFieldName("gx2.Field")] [DisplayText("Gyro2 X")] [GroupText("Sensor")] public float gx2 { get; set; } + [DisplayFieldName("gy2.Field")] [DisplayText("Gyro2 Y")] [GroupText("Sensor")] public float gy2 { get; set; } + [DisplayFieldName("gz2.Field")] [DisplayText("Gyro2 Z")] [GroupText("Sensor")] public float gz2 { get; set; } + [DisplayFieldName("gyrosq2.Field")] [DisplayText("Gyro2 Strength")] [GroupText("Sensor")] public float gyrosq2 => (float)Math.Sqrt(Math.Pow(gx2, 2) + Math.Pow(gy2, 2) + Math.Pow(gz2, 2)); // mag2 + [DisplayFieldName("mx2.Field")] [DisplayText("Mag2 X")] [GroupText("Sensor")] public float mx2 { get; set; } + [DisplayFieldName("my2.Field")] [DisplayText("Mag2 Y")] [GroupText("Sensor")] public float my2 { get; set; } + [DisplayFieldName("mz2.Field")] [DisplayText("Mag2 Z")] [GroupText("Sensor")] public float mz2 { get; set; } + [DisplayFieldName("magfield2.Field")] [DisplayText("Mag2 Field")] [GroupText("Sensor")] public float magfield2 => (float)Math.Sqrt(Math.Pow(mx2, 2) + Math.Pow(my2, 2) + Math.Pow(mz2, 2)); + [DisplayFieldName("imu2_temp.Field")] [DisplayText("IMU2 Temperature")] [GroupText("Sensor")] public float imu2_temp { get; set; } // accel3 + [DisplayFieldName("ax3.Field")] [DisplayText("Accel3 X")] [GroupText("Sensor")] public float ax3 { get; set; } + [DisplayFieldName("ay3.Field")] [DisplayText("Accel3 Y")] [GroupText("Sensor")] public float ay3 { get; set; } + [DisplayFieldName("az3.Field")] [DisplayText("Accel3 Z")] [GroupText("Sensor")] public float az3 { get; set; } + [DisplayFieldName("accelsq3.Field")] [DisplayText("Accel3 Strength")] [GroupText("Sensor")] public float accelsq3 => (float)Math.Sqrt(Math.Pow(ax3, 2) + Math.Pow(ay3, 2) + Math.Pow(az3, 2)) / 1000.0f; // gyro3 + [DisplayFieldName("gx3.Field")] [DisplayText("Gyro3 X")] [GroupText("Sensor")] public float gx3 { get; set; } + [DisplayFieldName("gy3.Field")] [DisplayText("Gyro3 Y")] [GroupText("Sensor")] public float gy3 { get; set; } + [DisplayFieldName("gz3.Field")] [DisplayText("Gyro3 Z")] [GroupText("Sensor")] public float gz3 { get; set; } + [DisplayFieldName("gyrosq3.Field")] [DisplayText("Gyro3 Strength")] [GroupText("Sensor")] public float gyrosq3 => (float)Math.Sqrt(Math.Pow(gx3, 2) + Math.Pow(gy3, 2) + Math.Pow(gz3, 2)); // mag3 + [DisplayFieldName("mx3.Field")] [DisplayText("Mag3 X")] [GroupText("Sensor")] public float mx3 { get; set; } + [DisplayFieldName("my2.Field")] [DisplayText("Mag3 Y")] [GroupText("Sensor")] public float my3 { get; set; } + [DisplayFieldName("mz3.Field")] [DisplayText("Mag3 Z")] [GroupText("Sensor")] public float mz3 { get; set; } + [DisplayFieldName("magfield3.Field")] [DisplayText("Mag3 Field")] [GroupText("Sensor")] public float magfield3 => (float)Math.Sqrt(Math.Pow(mx3, 2) + Math.Pow(my3, 2) + Math.Pow(mz3, 2)); + [DisplayFieldName("imu3_temp.Field")] [DisplayText("IMU3 Temperature")] [GroupText("Sensor")] public float imu3_temp { get; set; } @@ -1033,6 +1064,7 @@ public float aspd_error public float xtrack_error { get; set; } [GroupText("NAV")] + [DisplayFieldName("wpno.Field")] [DisplayText("WP No")] public float wpno { get; set; } @@ -1198,34 +1230,42 @@ public double battery_voltage } [GroupText("Battery")] + [DisplayFieldName("battery_voltage3.Field")] [DisplayText("Bat Voltage (V)")] public double battery_voltage3 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_voltage4.Field")] [DisplayText("Bat Voltage (V)")] public double battery_voltage4 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_voltage5.Field")] [DisplayText("Bat Voltage (V)")] public double battery_voltage5 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_voltage6.Field")] [DisplayText("Bat Voltage (V)")] public double battery_voltage6 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_voltage7.Field")] [DisplayText("Bat Voltage (V)")] public double battery_voltage7 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_voltage8.Field")] [DisplayText("Bat Voltage (V)")] public double battery_voltage8 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_voltage9.Field")] [DisplayText("Bat Voltage (V)")] public double battery_voltage9 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_remaining.Field")] [DisplayText("Bat Remaining (%)")] public int battery_remaining { @@ -1238,34 +1278,42 @@ public int battery_remaining } [GroupText("Battery")] + [DisplayFieldName("battery_remaining2.Field")] [DisplayText("Bat Remaining (%)")] public int battery_remaining2 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_remaining3.Field")] [DisplayText("Bat Remaining (%)")] public int battery_remaining3 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_remaining4.Field")] [DisplayText("Bat Remaining (%)")] public int battery_remaining4 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_remaining5.Field")] [DisplayText("Bat Remaining (%)")] public int battery_remaining5 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_remaining6.Field")] [DisplayText("Bat Remaining (%)")] public int battery_remaining6 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_remaining7.Field")] [DisplayText("Bat Remaining (%)")] public int battery_remaining7 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_remaining8.Field")] [DisplayText("Bat Remaining (%)")] public int battery_remaining8 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_remaining9.Field")] [DisplayText("Bat Remaining (%)")] public int battery_remaining9 { get; set; } @@ -1292,6 +1340,7 @@ public double current } //current may to be below zero - recuperation in arduplane [GroupText("Battery")] + [DisplayFieldName("current2.Field")] [DisplayText("Bat2 Current (Amps)")] public double current2 { @@ -1307,30 +1356,37 @@ public double current2 } [GroupText("Battery")] + [DisplayFieldName("current3.Field")] [DisplayText("Bat3 Current (Amps)")] public double current3 { get; set; } [GroupText("Battery")] + [DisplayFieldName("current4.Field")] [DisplayText("Bat4 Current (Amps)")] public double current4 { get; set; } [GroupText("Battery")] + [DisplayFieldName("current5.Field")] [DisplayText("Bat5 Current (Amps)")] public double current5 { get; set; } [GroupText("Battery")] + [DisplayFieldName("current6.Field")] [DisplayText("Bat6 Current (Amps)")] public double current6 { get; set; } [GroupText("Battery")] + [DisplayFieldName("current7.Field")] [DisplayText("Bat7 Current (Amps)")] public double current7 { get; set; } [GroupText("Battery")] + [DisplayFieldName("current8.Field")] [DisplayText("Bat8 Current (Amps)")] public double current8 { get; set; } [GroupText("Battery")] + [DisplayFieldName("current9.Field")] [DisplayText("Bat9 Current (Amps)")] public double current9 { get; set; } @@ -1423,6 +1479,7 @@ public double current2 public double battery_usedmah9 { get; set; } [GroupText("Battery")] + [DisplayFieldName("battery_voltage2.Field")] [DisplayText("Bat2 Voltage (V)")] public double battery_voltage2 { @@ -1755,10 +1812,12 @@ public float sonarrange // Sik radio [GroupText("Telem")] + [DisplayFieldName("rssi.Field")] [DisplayText("Sik Radio rssi")] public float rssi { get; set; } [GroupText("Telem")] + [DisplayFieldName("remrssi.Field")] [DisplayText("Sik Radio remote rssi")] public float remrssi { get; set; } @@ -1770,6 +1829,7 @@ public float sonarrange public float noise { get; set; } [GroupText("Telem")] + [DisplayFieldName("remnoise.Field")] [DisplayText("Sik Radio remote noise")] public float remnoise { get; set; } @@ -1791,6 +1851,7 @@ public float localsnrdb } [GroupText("Telem")] + [DisplayFieldName("remotesnrdb.Field")] [DisplayText("Sik Radio remote snr")] public float remotesnrdb { @@ -1939,14 +2000,19 @@ public float ter_alt [GroupText("Enviromental")] public int KIndex => KIndexstatic; + [DisplayFieldName("opt_m_x.Field")] [GroupText("Flow")][DisplayText("flow_comp_m_x")] public float opt_m_x { get; set; } + [DisplayFieldName("opt_m_y.Field")] [GroupText("Flow")][DisplayText("flow_comp_m_y")] public float opt_m_y { get; set; } + [DisplayFieldName("opt_x.Field")] [GroupText("Flow")][DisplayText("flow_x")] public short opt_x { get; set; } + [DisplayFieldName("opt_y.Field")] [GroupText("Flow")][DisplayText("flow_y")] public short opt_y { get; set; } + [DisplayFieldName("opt_qua.Field")] [GroupText("Flow")][DisplayText("flow quality")] public byte opt_qua { get; set; } [GroupText("EKF")] public float ekfstatus { get; set; } diff --git a/ExtLibs/Utilities/Resources/strings_uk.txt b/ExtLibs/Utilities/Resources/strings_uk.txt index 61492eb707..ae341b96d4 100644 --- a/ExtLibs/Utilities/Resources/strings_uk.txt +++ b/ExtLibs/Utilities/Resources/strings_uk.txt @@ -7,9 +7,12 @@ Pitch (deg)=Тангаж (deg) yaw.Field=yaw (рискання) Yaw (deg)=Рискання (deg) -groundcourse.Field=groundcourse (шлях.кут) +groundcourse.Field=groundcourse (шляхов.кут) GroundCourse (deg)=Шляховий кут (deg) +groundcourse2.Field=groundcourse (шляхов.кут #2) +GroundCourse2 (deg)=Шляховий кут #2 (deg) + lat.Field=lat (широта) Latitude (dd)=Широта (dd) @@ -26,11 +29,17 @@ gpsstatus.Field=gpsstatus (стан GPS) Gps Status=Стан GPS gpshdop.Field=gpshdop (GPS HDOP) -Gps HDOP=Горизон. погіршення точності GPS +Gps HDOP=Горизон.погіршення точності GPS satcount.Field=satcount (кільк.супутників) Sat Count=Кількість супутників +airspeed1_temp.Field=airspeed1_temp (темпер.повітря #1) +Airspeed1 Temperature=Темпер.повітря#1 + +airspeed2_temp.Field=airspeed2_temp (темпер.повітря #2) +Airspeed2 Temperature=Темпер.повітря#2 + airspeed.Field=airspeed (повітр.швидкість) AirSpeed (speed)=Повітряна швидкість (speed) @@ -40,59 +49,97 @@ Airspeed Target (speed)=Задана повітряна швидкість (spee asratio.Field=asratio (коеф.повітр.швидкості) Airspeed Ratio=Коефіцієнт повітряної швидкості -groundspeed.Field=groundspeed (шлях.швидкість) +groundspeed.Field=groundspeed (шляхов.швидкість) GroundSpeed (speed)=Шляхова швидкість (speed) ax.Field=ax (прискор.X) Accel X=Прискорення X +ax2.Field=ax (прискор.#2 X) +Accel2 X=Прискорення #2 X + +ax3.Field=ax (прискор.#3 X) +Accel3 X=Прискорення #3 X + ay.Field=ay (прискор.Y) Accel Y=Прискорення Y +ay2.Field=ay2 (прискор.#2 Y) +Accel2 Y=Прискорення #2 Y + +ay3.Field=ay3 (прискор.#3 Y) +Accel3 Y=Прискорення #3 Y + az.Field=az (прискор.Z) Accel Z=Прискорення Z +az2.Field=az (прискор.#2 Z) +Accel2 Z=Прискорення #2 Z + +az3.Field=az (прискор.#3 Z) +Accel3 Z=Прискорення #3 Z + gx.Field=gx (гіро X) Gyro X=Гіроскоп X +gx2.Field=gx (гіро #2 X) +Gyro2 X=Гіроскоп #2 X + +gx3.Field=gx (гіро #3 X) +Gyro3 X=Гіроскоп #3 X + gy.Field=gy (гіро Y) Gyro Y=Гіроскоп Y -gz.Field=gz (гіро Z) -Gyro Z=Гіроскоп Z +gy2.Field=gy (гіро #2 Y) +Gyro2 Y=Гіроскоп #2 Y -mx.Field=mx (компас X) -Mag X=Компас X +gy3.Field=gy (гіро #3 Y) +Gyro3 Y=Гіроскоп #3 Y -my.Field=my (компас Y) -Mag Y=Компас Y +gz.Field=gz (гіро Z) +Gyro Z=Гіроскоп Z -mz.Field=mz (компас Z) -Mag Z=Компас Z +gz2.Field=gz (гіро #2 Z) +Gyro2 Z=Гіроскоп #2 Z -Accel2 X=Прискорення #2 X +gz3.Field=gz (гіро #3 Z) +Gyro3 Z=Гіроскоп #3 Z -Accel2 Y=Прискорення #2 Y +mx.Field=mx (компас X) +Mag X=Компас X -Accel2 Z=Прискорення #2 Z +mx2.Field=mx2 (компас #2 X) +Mag2 X=Компас #2 X -Gyro2 X=Гіроскоп #2 X +mx3.Field=mx3 (компас #3 X) +Mag3 X=Компас #3 X -Gyro2 Y=Гіроскоп #2 Y +my.Field=my (компас Y) +Mag Y=Компас Y -Gyro2 Z=Гіроскоп #2 Z +my2.Field=my (компас #2 Y) +Mag2 Y=Компас #2 Y -Mag2 X=Компас #2 X +my3.Field=my (компас #3 Y) +Mag3 Y=Компас #3 Y -Mag2 Y=Компас #2 Y +mz.Field=mz (компас Z) +Mag Z=Компас Z +mz2.Field=mz (компас #2 Z) Mag2 Z=Компас #2 Z +mz3.Field=mz (компас #3 Z) +Mag3 Z=Компас #3 Z + magfield.Field=magfield (магнітне поле) Mag Field=Магнітне Поле +magfield2.Field=magfield2 (магнітне поле #2) Mag2 Field=Магнітне Поле #2 +magfield3.Field=magfield3 (магнітне поле #3) Mag3 Field=Магнітне Поле #3 accelsq.Field=accelsq (сила прискорення) @@ -101,8 +148,16 @@ Accel Strength=Сила Прискорення gyrosq.Field=gyrosq (сила гіроскопа) Gyro Strength=Сила Гіроскопа +gyrosq2.Field=gyrosq2 (сила гіроскопа #2) +Gyro2 Strength=Сила Гіроскопа #2 + +gyrosq3.Field=gyrosq3 (сила гіроскопа #3) +Gyro3 Strength=Сила Гіроскопа #3 + +accelsq2.Field=accelsq (сила прискорення #2) Accel2 Strength=Сила Прискорення #2 +accelsq3.Field=accelsq (сила прискорення #3) Accel3 Strength=Сила Прискорення #3 failsafe.Field=failsafe (відмовостійкий) @@ -170,7 +225,7 @@ Time over Home (sec)=Час над дом.точкою (sec) distTraveled.Field=distTraveled (пройдена відстань) Dist Traveled (dist)=Пройдена відстань (dist) -timeInAir.Field=timeSinceArmInAir (час у повітрі (sec)) +timeInAir.Field=timeInAir (час у повітрі (sec)) Time in Air (sec)=Час у повітрі (sec) turnrate.Field=turnrate (швидкість повороту) @@ -182,12 +237,60 @@ Turn Radius (dist)=Радіус повороту (dist) battery_voltage.Field=battery_voltage (напруга бат.) Bat Voltage (V)=Напруга батареї (V) -battery_remaining.Field .Field= battery_remaining (залишок бат.(%)) +battery_voltage2.Field=battery_voltage (напруга бат.#2) + +battery_voltage3.Field=battery_voltage (напруга бат.#3) + +battery_voltage4.Field=battery_voltage (напруга бат.#4) + +battery_voltage5.Field=battery_voltage (напруга бат.#5) + +battery_voltage6.Field=battery_voltage (напруга бат.#6) + +battery_voltage7.Field=battery_voltage (напруга бат.#7) + +battery_voltage8.Field=battery_voltage (напруга бат.#8) + +battery_voltage9.Field=battery_voltage (напруга бат.#9) + +battery_remaining.Field=battery_remaining (залишок бат.(%)) Bat Remaining (%)=Залишок батареї (%) +battery_remaining2.Field=battery_remaining (залишок бат.#2 (%)) + +battery_remaining3.Field=battery_remaining (залишок бат.#3 (%)) + +battery_remaining4.Field=battery_remaining (залишок бат.#4 (%)) + +battery_remaining5.Field=battery_remaining (залишок бат.#5 (%)) + +battery_remaining6.Field=battery_remaining (залишок бат.#6 (%)) + +battery_remaining7.Field=battery_remaining (залишок бат.#7 (%)) + +battery_remaining8.Field=battery_remaining (залишок бат.#8 (%)) + +battery_remaining9.Field=battery_remaining (залишок бат.#9 (%)) + current.Field=current (струм бат.) Bat Current (Amps)=Струм батареї (Amps) +current2.Field=current (струм бат.#2) + +current3.Field=current (струм бат.#3) + +current4.Field=current (струм бат.#4) + +current5.Field=current (струм бат.#5) + +current6.Field=current (струм бат.#6) + +current7.Field=current (струм бат.#7) + +current8.Field=current (струм бат.#8) + +current9.Field=current (струм бат.#9) + watts.Field=watts (потужність бат.) Bat Watts=Потужність батареї (Watts) @@ -276,6 +379,18 @@ Dist to Home (dist)=Відстань до дом.точки (dist) localsnrdb.Field=localsnrdb (сигнал/шум Sik-радіо) Sik Radio snr=Сигнал/Шум Sik-радіо +rssi.Field=rssi (потужність Sik-радіосигналу) +Sik Radio rssi=Потужність Sik-радіосигналу (rssi) + +remrssi.Field=remrssi (потужність Sik-сигналу дист.керув.) +Sik Radio remote rssi=Потужність Sik-сигналу дист.керув. (rssi) + +remnoise.Field=remnoise (шум Sik-пульта дист.керув.) +Sik Radio remote noise=Шум Sik-пульта дист.керув. + +remotesnrdb.Field=remotesnrdb (сигнал/шум Sik-пульта дист.керув.) +Sik Radio remote snr=Сигнал/Шум Sik-пульта дист.керув. + DistRSSIRemain.Field=DistRSSIRemain (Sik-радіо прибл.відстань) Sik Radio est dist (m)=Sik-радіо прибл. відстань (m) @@ -285,61 +400,84 @@ Glide Ratio=Коефіцієнт Глісади horizondist.Field=horizondist (відст.до гориз.) Horizon Dist (dist)=Відстань до горизонту (dist) -gpsvel_acc.Field=gpsvel_acc (точн.швидкості) -Velocity Accuracy=Точність індикат. швидкості +gpsvel_acc.Field=gpsvel_acc (точн.швидкості за GPS) +Velocity Accuracy=Точність індикат. швидкості (GPS) + +gpsyaw2.Field=gpsyaw (рискання за GPS #2) -gpsyaw.Field=gpsyaw (рискання згідно GPS) -GPS Yaw (deg)=Рискання (GPS) (deg) +gpsyaw.Field=gpsyaw (рискання за GPS) +GPS Yaw (deg)=Рискання (deg) (GPS) GroundCourse2 (deg)=Шляховий кут #2 (deg) noise.Field=noise (шум Sik-радіо) Sik Radio noise=Шум Sik-радіо -imu1_temp.Field=imu1_temp (IMU#1 темп.) -IMU1 Temperature=IMU-сенсор #1: Температура +imu1_temp.Field=imu1_temp (IMU1 темпер.) +IMU1 Temperature=IMU1: Температура -IMU2 Temperature=IMU-сенсор #2: Температура +imu2_temp.Field=imu2_temp (IMU2 темпер.) +IMU2 Temperature=IMU2: Температура -IMU3 Temperature=IMU-сенсор #3: Температура +imu3_temp.Field=imu2_temp (IMU3 темпер.) +IMU3 Temperature=IMU3: Температура -efi_baro.Field=efi_baro (інжектор:баром.тиск) +efi_baro.Field=efi_baro (інжектор: баром.тиск) EFI Baro Pressure (kPa)=Інжектор: Барометр. тиск (kPa) -efi_headtemp.Field=efi_headtemp (інжектор:темп.гол.блоку.цил.) -EFI Head Temp (C)=Інжектор: Темпер.головки блоку циліндру (C) +efi_headtemp.Field=efi_headtemp (інжектор: темпер.ГБЦ) +EFI Head Temp (C)=Інжектор: Темпер.ГБЦ (C) -efi_load.Field=efi_load (інжектор:навантаж.двигуна) +efi_load.Field=efi_load (інжектор: навантаж.двигуна) EFI Load (%)=Інжектор: Навантаження двигуна (%) -efi_health.Field=efi_health (інжектор:справність) +efi_health.Field=efi_health (інжектор: справність) EFI Health=Інжектор: Справність -efi_exhasttemp.Field=efi_exhasttemp (інжектор:темпер.вихлопу) +efi_exhasttemp.Field=efi_exhasttemp (інжектор: темпер.вихлопу) EFI Exhast Temp (C)=Інжектор: Температура вихлопу (C) -efi_intaketemp.Field=efi_intaketemp (інжектор:впускна темпер.) +efi_intaketemp.Field=efi_intaketemp (інжектор: впускна темпер.) EFI Intake Temp (C)=Інжектор: Впускна температура (C) -efi_rpm.Field=efi_rpm (інжектор:кільк.обертів) +efi_rpm.Field=efi_rpm (інжектор: кільк.обертів) EFI rpm=Інжектор: Кількість обертів -efi_fuelflow.Field=efi_fuelflow (інжектор:потік палива) +efi_fuelflow.Field=efi_fuelflow (інжектор: потік палива) EFI Fuel Flow (g/min)=Інжектор: Потік палива (g/min) -efi_fuelconsumed.Field=efi_fuelconsumed (інжектор:палива спожито) +efi_fuelconsumed.Field=efi_fuelconsumed (інжектор: палива спожито) EFI Fuel Consumed (g)=Інжектор: Палива спожито (g) -efi_fuelpressure.Field=efi_fuelpressure (інжектор:тиск палива) +efi_fuelpressure.Field=efi_fuelpressure (інжектор: тиск палива) EFI Fuel Pressure (kPa)=Інжектор: Тиск палива (kPa) +lng2.Field=lng2 (довгота #2) Longitude2 (dd)=Довгота #2 (dd) +gpsh_acc.Field=gpsh_acc (точність гориз.положення за GPS) +H Acc (m)=Точність гориз.положення (m) (GPS) + +gpsv_acc.Field=gpsv_acc (точність вертик.положення за GPS) +V Acc (m)=Точність вертик.положення (m) (GPS) + SSA.Field=SSA (кут бок.ковз) SSA (deg)=Кут боков.ковзання (deg) +opt_m_x.Field=opt_m_x (опт.потік (з гіро) X) flow_comp_m_x=Оптич.потік з гіро-компенсац. X + +opt_m_y.Field=opt_m_y (опт.потік (з гіро) Y) flow_comp_m_y=Оптич.потік з гіро-компенсац. Y + +opt_x.Field=opt_x (опт.потік X) flow_x=Оптичний потік X + +opt_y.Field=opt_y (опт.потік Y) flow_y=Оптичний потік Y + +opt_qua.Field=opt_qua (якість опт.потоку) flow quality=Якість оптичного потоку + +wpno.Field=wpno (поточний пункт маршр.) +WP No=Поточний пункт маршр. From a192632a1f112d77cea8af10ad85d7345785bf15 Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sun, 9 Jun 2024 22:33:30 +0300 Subject: [PATCH 10/11] Mitigate scenarios where a field name is referred to incorrectly in a translation --- ExtLibs/ArduPilot/CurrentState.cs | 3 +- ExtLibs/Utilities/Resources/strings_uk.txt | 316 ++++++++++----------- 2 files changed, 160 insertions(+), 159 deletions(-) diff --git a/ExtLibs/ArduPilot/CurrentState.cs b/ExtLibs/ArduPilot/CurrentState.cs index 714ea4bd9d..6dbae9e00e 100644 --- a/ExtLibs/ArduPilot/CurrentState.cs +++ b/ExtLibs/ArduPilot/CurrentState.cs @@ -4018,7 +4018,8 @@ public string GetFieldDesc(string name) if (translated != null) { - return translated; + var desc = translated.Replace("(fieldName)", name); + return desc; } // fall-through diff --git a/ExtLibs/Utilities/Resources/strings_uk.txt b/ExtLibs/Utilities/Resources/strings_uk.txt index ae341b96d4..f25f19f6eb 100644 --- a/ExtLibs/Utilities/Resources/strings_uk.txt +++ b/ExtLibs/Utilities/Resources/strings_uk.txt @@ -1,300 +1,300 @@ -roll.Field=roll (крен) +roll.Field=(fieldName) (крен) Roll (deg)=Крен (deg) -pitch.Field=pitch (тангаж) +pitch.Field=(fieldName) (тангаж) Pitch (deg)=Тангаж (deg) -yaw.Field=yaw (рискання) +yaw.Field=(fieldName) (рискання) Yaw (deg)=Рискання (deg) -groundcourse.Field=groundcourse (шляхов.кут) +groundcourse.Field=(fieldName) (шляхов.кут) GroundCourse (deg)=Шляховий кут (deg) -groundcourse2.Field=groundcourse (шляхов.кут #2) +groundcourse2.Field=(fieldName) (шляхов.кут #2) GroundCourse2 (deg)=Шляховий кут #2 (deg) -lat.Field=lat (широта) +lat.Field=(fieldName) (широта) Latitude (dd)=Широта (dd) -lng.Field=lng (довгота) +lng.Field=(fieldName) (довгота) Longitude (dd)=Довгота (dd) -alt.Field=alt (висота) +alt.Field=(fieldName) (висота) Altitude (dist)=Висота (dist) -altoffsethome.Field=altoffsethome (компенс.висоти дом.точки) +altoffsethome.Field=(fieldName) (компенс.висоти дом.точки) Alt Home Offset (dist)=Компенсація висоти дом.точки (dist) -gpsstatus.Field=gpsstatus (стан GPS) +gpsstatus.Field=(fieldName) (стан GPS) Gps Status=Стан GPS -gpshdop.Field=gpshdop (GPS HDOP) +gpshdop.Field=(fieldName) (GPS HDOP) Gps HDOP=Горизон.погіршення точності GPS -satcount.Field=satcount (кільк.супутників) +satcount.Field=(fieldName) (кільк.супутників) Sat Count=Кількість супутників -airspeed1_temp.Field=airspeed1_temp (темпер.повітря #1) +airspeed1_temp.Field=(fieldName) (темпер.повітря #1) Airspeed1 Temperature=Темпер.повітря#1 -airspeed2_temp.Field=airspeed2_temp (темпер.повітря #2) +airspeed2_temp.Field=(fieldName) (темпер.повітря #2) Airspeed2 Temperature=Темпер.повітря#2 -airspeed.Field=airspeed (повітр.швидкість) +airspeed.Field=(fieldName) (повітр.швидкість) AirSpeed (speed)=Повітряна швидкість (speed) -targetairspeed.Field=targetairspeed (задана повітр.швидкість) +targetairspeed.Field=(fieldName) (задана повітр.швидкість) Airspeed Target (speed)=Задана повітряна швидкість (speed) -asratio.Field=asratio (коеф.повітр.швидкості) +asratio.Field=(fieldName) (коеф.повітр.швидкості) Airspeed Ratio=Коефіцієнт повітряної швидкості -groundspeed.Field=groundspeed (шляхов.швидкість) +groundspeed.Field=(fieldName) (шляхов.швидкість) GroundSpeed (speed)=Шляхова швидкість (speed) -ax.Field=ax (прискор.X) +ax.Field=(fieldName) (прискор.X) Accel X=Прискорення X -ax2.Field=ax (прискор.#2 X) +ax2.Field=(fieldName) (прискор.#2 X) Accel2 X=Прискорення #2 X -ax3.Field=ax (прискор.#3 X) +ax3.Field=(fieldName) (прискор.#3 X) Accel3 X=Прискорення #3 X -ay.Field=ay (прискор.Y) +ay.Field=(fieldName) (прискор.Y) Accel Y=Прискорення Y -ay2.Field=ay2 (прискор.#2 Y) +ay2.Field=(fieldName) (прискор.#2 Y) Accel2 Y=Прискорення #2 Y -ay3.Field=ay3 (прискор.#3 Y) +ay3.Field=(fieldName) (прискор.#3 Y) Accel3 Y=Прискорення #3 Y -az.Field=az (прискор.Z) +az.Field=(fieldName) (прискор.Z) Accel Z=Прискорення Z -az2.Field=az (прискор.#2 Z) +az2.Field=(fieldName) (прискор.#2 Z) Accel2 Z=Прискорення #2 Z -az3.Field=az (прискор.#3 Z) +az3.Field=(fieldName) (прискор.#3 Z) Accel3 Z=Прискорення #3 Z -gx.Field=gx (гіро X) +gx.Field=(fieldName) (гіро X) Gyro X=Гіроскоп X -gx2.Field=gx (гіро #2 X) +gx2.Field=(fieldName) (гіро #2 X) Gyro2 X=Гіроскоп #2 X -gx3.Field=gx (гіро #3 X) +gx3.Field=(fieldName) (гіро #3 X) Gyro3 X=Гіроскоп #3 X -gy.Field=gy (гіро Y) +gy.Field=(fieldName) (гіро Y) Gyro Y=Гіроскоп Y -gy2.Field=gy (гіро #2 Y) +gy2.Field=(fieldName) (гіро #2 Y) Gyro2 Y=Гіроскоп #2 Y -gy3.Field=gy (гіро #3 Y) +gy3.Field=(fieldName) (гіро #3 Y) Gyro3 Y=Гіроскоп #3 Y -gz.Field=gz (гіро Z) +gz.Field=(fieldName) (гіро Z) Gyro Z=Гіроскоп Z -gz2.Field=gz (гіро #2 Z) +gz2.Field=(fieldName) (гіро #2 Z) Gyro2 Z=Гіроскоп #2 Z -gz3.Field=gz (гіро #3 Z) +gz3.Field=(fieldName) (гіро #3 Z) Gyro3 Z=Гіроскоп #3 Z -mx.Field=mx (компас X) +mx.Field=(fieldName) (компас X) Mag X=Компас X -mx2.Field=mx2 (компас #2 X) +mx2.Field=(fieldName) (компас #2 X) Mag2 X=Компас #2 X -mx3.Field=mx3 (компас #3 X) +mx3.Field=(fieldName) (компас #3 X) Mag3 X=Компас #3 X -my.Field=my (компас Y) +my.Field=(fieldName) (компас Y) Mag Y=Компас Y -my2.Field=my (компас #2 Y) +my2.Field=(fieldName) (компас #2 Y) Mag2 Y=Компас #2 Y -my3.Field=my (компас #3 Y) +my3.Field=(fieldName) (компас #3 Y) Mag3 Y=Компас #3 Y -mz.Field=mz (компас Z) +mz.Field=(fieldName) (компас Z) Mag Z=Компас Z -mz2.Field=mz (компас #2 Z) +mz2.Field=(fieldName) (компас #2 Z) Mag2 Z=Компас #2 Z -mz3.Field=mz (компас #3 Z) +mz3.Field=(fieldName) (компас #3 Z) Mag3 Z=Компас #3 Z -magfield.Field=magfield (магнітне поле) +magfield.Field=(fieldName) (магнітне поле) Mag Field=Магнітне Поле -magfield2.Field=magfield2 (магнітне поле #2) +magfield2.Field=(fieldName) (магнітне поле #2) Mag2 Field=Магнітне Поле #2 -magfield3.Field=magfield3 (магнітне поле #3) +magfield3.Field=(fieldName) (магнітне поле #3) Mag3 Field=Магнітне Поле #3 -accelsq.Field=accelsq (сила прискорення) +accelsq.Field=(fieldName) (сила прискорення) Accel Strength=Сила Прискорення -gyrosq.Field=gyrosq (сила гіроскопа) +gyrosq.Field=(fieldName) (сила гіроскопа) Gyro Strength=Сила Гіроскопа -gyrosq2.Field=gyrosq2 (сила гіроскопа #2) +gyrosq2.Field=(fieldName) (сила гіроскопа #2) Gyro2 Strength=Сила Гіроскопа #2 -gyrosq3.Field=gyrosq3 (сила гіроскопа #3) +gyrosq3.Field=(fieldName) (сила гіроскопа #3) Gyro3 Strength=Сила Гіроскопа #3 -accelsq2.Field=accelsq (сила прискорення #2) +accelsq2.Field=(fieldName) (сила прискорення #2) Accel2 Strength=Сила Прискорення #2 -accelsq3.Field=accelsq (сила прискорення #3) +accelsq3.Field=(fieldName) (сила прискорення #3) Accel3 Strength=Сила Прискорення #3 -failsafe.Field=failsafe (відмовостійкий) +failsafe.Field=(fieldName) (відмовостійкий) Failsafe=Відмовостійкий -rxrssi.Field=rxrssi (потужність RX) +rxrssi.Field=(fieldName) (потужність RX) RX Rssi=Потужність RX (rssi) -verticalspeed.Field=verticalspeed (верт.швидкість) +verticalspeed.Field=(fieldName) (верт.швидкість) Vertical Speed (speed)=Вертикальна швидкість (speed) -wind_dir.Field=wind_dir (напрямок вітру) +wind_dir.Field=(fieldName) (напрямок вітру) Wind Direction (Deg)=Напрямок вітру (Deg) -wind_vel.Field=wind_vel (швидкість вітру) +wind_vel.Field=(fieldName) (швидкість вітру) Wind Velocity (speed)=Швидкість вітру (speed) -vx.Field=vx (швидкість X) +vx.Field=(fieldName) (швидкість X) Velocity X (ms)=Швидкість X (ms) -vy.Field=vy (швидкість Y) +vy.Field=(fieldName) (швидкість Y) Velocity Y (ms)=Швидкість Y (ms) -vz.Field=vz (швидкість Z) +vz.Field=(fieldName) (швидкість Z) Velocity Z (ms)=Швидкість Z (ms) -nav_roll.Field=nav_roll (заданий крен) +nav_roll.Field=(fieldName) (заданий крен) Roll Target (deg)=Заданий крен (deg) -nav_pitch.Field=nav_pitch (заданий тангаж) +nav_pitch.Field=(fieldName) (заданий тангаж) Pitch Target (deg)=Заданий тангаж (deg) -nav_bearing.Field=nav_bearing (заданий пеленг) +nav_bearing.Field=(fieldName) (заданий пеленг) -target_bearing.Field=target_bearing (заданий пеленг) +target_bearing.Field=(fieldName) (заданий пеленг) Bearing Target (deg)=Заданий пеленг (deg) -wp_dist.Field=wp_dist (відстань до п-ту маршруту) +wp_dist.Field=(fieldName) (відстань до п-ту маршруту) Dist to WP (dist)=Відстань до пункту маршуту (dist) -alt_error.Field=alt_error (похибка висоти) +alt_error.Field=(fieldName) (похибка висоти) Altitude Error (dist)=Похибка висоти (dist) -ber_error.Field=ber_error (похибка пеленгу) +ber_error.Field=(fieldName) (похибка пеленгу) Bearing Error (deg)=Похибка пеленгу (deg) -aspd_error.Field=aspd_error (похибка повітр.швидкості) +aspd_error.Field=(fieldName) (похибка повітр.швидкості) Airspeed Error (speed)=Похибка повітряної швидкості (speed) -xtrack_error.Field=xtrack_error (похибка Xtrack) +xtrack_error.Field=(fieldName) (похибка Xtrack) Xtrack Error (m)=Похибка Xtrack (m) -mode.Field=mode (режим) +mode.Field=(fieldName) (режим) Mode=Режим -climbrate.Field=climbrate (швидкість підйому) +climbrate.Field=(fieldName) (швидкість підйому) ClimbRate (speed)=Швидкість підйому (speed) -tot.Field=tot (час над ціллю) +tot.Field=(fieldName) (час над ціллю) Time over Target (sec)=Час над ціллю (sec) -toh.Field=toh (час над дом.точкою) +toh.Field=(fieldName) (час над дом.точкою) Time over Home (sec)=Час над дом.точкою (sec) -distTraveled.Field=distTraveled (пройдена відстань) +distTraveled.Field=(fieldName) (пройдена відстань) Dist Traveled (dist)=Пройдена відстань (dist) -timeInAir.Field=timeInAir (час у повітрі (sec)) +timeInAir.Field=(fieldName) (час у повітрі (sec)) Time in Air (sec)=Час у повітрі (sec) -turnrate.Field=turnrate (швидкість повороту) +turnrate.Field=(fieldName) (швидкість повороту) Turn Rate (speed)=Швидкість повороту (speed) -radius.Field=radius (радіус повороту) +radius.Field=(fieldName) (радіус повороту) Turn Radius (dist)=Радіус повороту (dist) -battery_voltage.Field=battery_voltage (напруга бат.) +battery_voltage.Field=(fieldName) (напруга бат.) Bat Voltage (V)=Напруга батареї (V) -battery_voltage2.Field=battery_voltage (напруга бат.#2) +battery_voltage2.Field=(fieldName) (напруга бат.#2) -battery_voltage3.Field=battery_voltage (напруга бат.#3) +battery_voltage3.Field=(fieldName) (напруга бат.#3) -battery_voltage4.Field=battery_voltage (напруга бат.#4) +battery_voltage4.Field=(fieldName) (напруга бат.#4) -battery_voltage5.Field=battery_voltage (напруга бат.#5) +battery_voltage5.Field=(fieldName) (напруга бат.#5) -battery_voltage6.Field=battery_voltage (напруга бат.#6) +battery_voltage6.Field=(fieldName) (напруга бат.#6) -battery_voltage7.Field=battery_voltage (напруга бат.#7) +battery_voltage7.Field=(fieldName) (напруга бат.#7) -battery_voltage8.Field=battery_voltage (напруга бат.#8) +battery_voltage8.Field=(fieldName) (напруга бат.#8) -battery_voltage9.Field=battery_voltage (напруга бат.#9) +battery_voltage9.Field=(fieldName) (напруга бат.#9) -battery_remaining.Field=battery_remaining (залишок бат.(%)) +battery_remaining.Field=(fieldName) (залишок бат.(%)) Bat Remaining (%)=Залишок батареї (%) -battery_remaining2.Field=battery_remaining (залишок бат.#2 (%)) +battery_remaining2.Field=(fieldName) (залишок бат.#2 (%)) -battery_remaining3.Field=battery_remaining (залишок бат.#3 (%)) +battery_remaining3.Field=(fieldName) (залишок бат.#3 (%)) -battery_remaining4.Field=battery_remaining (залишок бат.#4 (%)) +battery_remaining4.Field=(fieldName) (залишок бат.#4 (%)) -battery_remaining5.Field=battery_remaining (залишок бат.#5 (%)) +battery_remaining5.Field=(fieldName) (залишок бат.#5 (%)) -battery_remaining6.Field=battery_remaining (залишок бат.#6 (%)) +battery_remaining6.Field=(fieldName) (залишок бат.#6 (%)) -battery_remaining7.Field=battery_remaining (залишок бат.#7 (%)) +battery_remaining7.Field=(fieldName) (залишок бат.#7 (%)) -battery_remaining8.Field=battery_remaining (залишок бат.#8 (%)) +battery_remaining8.Field=(fieldName) (залишок бат.#8 (%)) -battery_remaining9.Field=battery_remaining (залишок бат.#9 (%)) +battery_remaining9.Field=(fieldName) (залишок бат.#9 (%)) -current.Field=current (струм бат.) +current.Field=(fieldName) (струм бат.) Bat Current (Amps)=Струм батареї (Amps) -current2.Field=current (струм бат.#2) +current2.Field=(fieldName) (струм бат.#2) -current3.Field=current (струм бат.#3) +current3.Field=(fieldName) (струм бат.#3) -current4.Field=current (струм бат.#4) +current4.Field=(fieldName) (струм бат.#4) -current5.Field=current (струм бат.#5) +current5.Field=(fieldName) (струм бат.#5) -current6.Field=current (струм бат.#6) +current6.Field=(fieldName) (струм бат.#6) -current7.Field=current (струм бат.#7) +current7.Field=(fieldName) (струм бат.#7) -current8.Field=current (струм бат.#8) +current8.Field=(fieldName) (струм бат.#8) -current9.Field=current (струм бат.#9) +current9.Field=(fieldName) (струм бат.#9) -watts.Field=watts (потужність бат.) +watts.Field=(fieldName) (потужність бат.) Bat Watts=Потужність батареї (Watts) -battery_usedmah.Field=battery_usedmah (використ.бат.) +battery_usedmah.Field=(fieldName) (використ.бат.) Bat used EST (mah)=Використано батареї (прибл.) (mah) Bat2 Voltage (V)=Напруга батереї #2 (V) @@ -315,16 +315,16 @@ Bat8 Current (Amps)=Струм батареї #8 (Amps) Bat9 Current (Amps)=Струм батареї #9 (Amps) -ELToMAV.Field=ELToMAV (підвищ.до М-БпЛА) +ELToMAV.Field=(fieldName) (підвищ.до М-БпЛА) Elevation to Mav (deg)=Підвищення до М-БпЛА (deg) -AZToMAV.Field=AZToMAV (пеленг до М-БпЛА) +AZToMAV.Field=(fieldName) (пеленг до М-БпЛА) Bearing to Mav (deg)=Пеленг до М-БпЛА (deg) -sonarrange.Field=sonarrange (діапазон сонара) +sonarrange.Field=(fieldName) (діапазон сонара) Sonar Range (alt)=Діапазон сонара (alt) -sonarvoltage.Field=sonarvoltage (напруга сонара) +sonarvoltage.Field=(fieldName) (напруга сонара) Sonar Voltage (Volt)=Напруга сонара (Volt) 3DR Radio rssi=Потужність 3DR-радіосигналу (rssi) @@ -341,143 +341,143 @@ Sonar Voltage (Volt)=Напруга сонара (Volt) 3DR Radio est dist (m)=3DR-радіо прибл. відстань (m) -hwvoltage.Field=hwvoltage (апаратна напруга) +hwvoltage.Field=(fieldName) (апаратна напруга) HW Voltage=Апаратна напруга -boardvoltage.Field=boardvoltage (борт.напруга) +boardvoltage.Field=(fieldName) (борт.напруга) Board Voltage=Бортова напруга -servovoltage.Field=servovoltage (напруга серво-рейки) +servovoltage.Field=(fieldName) (напруга серво-рейки) Servo Rail Voltage=Напруга серво-рейки -voltageflag.Field=voltageflag (стан напруги) +voltageflag.Field=(fieldName) (стан напруги) Voltage Flags=Стан напруги -altasl.Field=altasl (висота) +altasl.Field=(fieldName) (висота) Altitude (alt)=Висота (alt) Altitude2 (dist)=Висота #2 (dist) -AOA.Field=AOA (кут атаки) +AOA.Field=(fieldName) (кут атаки) AOA (deg)=Кут атаки (deg) -battery_kmleft.Field=battery_kmleft (залишок бат.(km)) +battery_kmleft.Field=(fieldName) (залишок бат.(km)) Bat km left EST (km)=Залишок батареї (у km) -battery_mahperkm.Field=battery_mahperkm (ефективність бат.) +battery_mahperkm.Field=(fieldName) (ефективність бат.) Bat efficiency (mah/km)=Ефективність батареї (mah/km) -crit_AOA.Field=crit_AOA (крит.кут атаки) +crit_AOA.Field=(fieldName) (крит.кут атаки) Crit AOA (deg)=Критичний Кут атаки (deg) -DistFromMovingBase.Field=DistFromMovingBase (відстань від рух.бази) +DistFromMovingBase.Field=(fieldName) (відстань від рух.бази) Dist to Moving Base (dist)=Відстань від рухомої бази (dist) -DistToHome.Field=DistToHome (відстань до дом.точки) +DistToHome.Field=(fieldName) (відстань до дом.точки) Dist to Home (dist)=Відстань до дом.точки (dist) -localsnrdb.Field=localsnrdb (сигнал/шум Sik-радіо) +localsnrdb.Field=(fieldName) (сигнал/шум Sik-радіо) Sik Radio snr=Сигнал/Шум Sik-радіо -rssi.Field=rssi (потужність Sik-радіосигналу) +rssi.Field=(fieldName) (потужність Sik-радіосигналу) Sik Radio rssi=Потужність Sik-радіосигналу (rssi) -remrssi.Field=remrssi (потужність Sik-сигналу дист.керув.) +remrssi.Field=(fieldName) (потужність Sik-сигналу дист.керув.) Sik Radio remote rssi=Потужність Sik-сигналу дист.керув. (rssi) -remnoise.Field=remnoise (шум Sik-пульта дист.керув.) +remnoise.Field=(fieldName) (шум Sik-пульта дист.керув.) Sik Radio remote noise=Шум Sik-пульта дист.керув. -remotesnrdb.Field=remotesnrdb (сигнал/шум Sik-пульта дист.керув.) +remotesnrdb.Field=(fieldName) (сигнал/шум Sik-пульта дист.керув.) Sik Radio remote snr=Сигнал/Шум Sik-пульта дист.керув. -DistRSSIRemain.Field=DistRSSIRemain (Sik-радіо прибл.відстань) +DistRSSIRemain.Field=(fieldName) (Sik-радіо прибл.відстань) Sik Radio est dist (m)=Sik-радіо прибл. відстань (m) -glide_ratio.Field=glide_ratio (коеф.глісади) +glide_ratio.Field=(fieldName) (коеф.глісади) Glide Ratio=Коефіцієнт Глісади -horizondist.Field=horizondist (відст.до гориз.) +horizondist.Field=(fieldName) (відст.до гориз.) Horizon Dist (dist)=Відстань до горизонту (dist) -gpsvel_acc.Field=gpsvel_acc (точн.швидкості за GPS) +gpsvel_acc.Field=(fieldName) (точн.швидкості за GPS) Velocity Accuracy=Точність індикат. швидкості (GPS) -gpsyaw2.Field=gpsyaw (рискання за GPS #2) +gpsyaw2.Field=(fieldName) (рискання за GPS #2) -gpsyaw.Field=gpsyaw (рискання за GPS) +gpsyaw.Field=(fieldName) (рискання за GPS) GPS Yaw (deg)=Рискання (deg) (GPS) GroundCourse2 (deg)=Шляховий кут #2 (deg) -noise.Field=noise (шум Sik-радіо) +noise.Field=(fieldName) (шум Sik-радіо) Sik Radio noise=Шум Sik-радіо -imu1_temp.Field=imu1_temp (IMU1 темпер.) +imu1_temp.Field=(fieldName) (IMU1 темпер.) IMU1 Temperature=IMU1: Температура -imu2_temp.Field=imu2_temp (IMU2 темпер.) +imu2_temp.Field=(fieldName) (IMU2 темпер.) IMU2 Temperature=IMU2: Температура -imu3_temp.Field=imu2_temp (IMU3 темпер.) +imu3_temp.Field=(fieldName) (IMU3 темпер.) IMU3 Temperature=IMU3: Температура -efi_baro.Field=efi_baro (інжектор: баром.тиск) +efi_baro.Field=(fieldName) (інжектор: баром.тиск) EFI Baro Pressure (kPa)=Інжектор: Барометр. тиск (kPa) -efi_headtemp.Field=efi_headtemp (інжектор: темпер.ГБЦ) +efi_headtemp.Field=(fieldName) (інжектор: темпер.ГБЦ) EFI Head Temp (C)=Інжектор: Темпер.ГБЦ (C) -efi_load.Field=efi_load (інжектор: навантаж.двигуна) +efi_load.Field=(fieldName) (інжектор: навантаж.двигуна) EFI Load (%)=Інжектор: Навантаження двигуна (%) -efi_health.Field=efi_health (інжектор: справність) +efi_health.Field=(fieldName) (інжектор: справність) EFI Health=Інжектор: Справність -efi_exhasttemp.Field=efi_exhasttemp (інжектор: темпер.вихлопу) +efi_exhasttemp.Field=(fieldName) (інжектор: темпер.вихлопу) EFI Exhast Temp (C)=Інжектор: Температура вихлопу (C) -efi_intaketemp.Field=efi_intaketemp (інжектор: впускна темпер.) +efi_intaketemp.Field=(fieldName) (інжектор: впускна темпер.) EFI Intake Temp (C)=Інжектор: Впускна температура (C) -efi_rpm.Field=efi_rpm (інжектор: кільк.обертів) +efi_rpm.Field=(fieldName) (інжектор: кільк.обертів) EFI rpm=Інжектор: Кількість обертів -efi_fuelflow.Field=efi_fuelflow (інжектор: потік палива) +efi_fuelflow.Field=(fieldName) (інжектор: потік палива) EFI Fuel Flow (g/min)=Інжектор: Потік палива (g/min) -efi_fuelconsumed.Field=efi_fuelconsumed (інжектор: палива спожито) +efi_fuelconsumed.Field=(fieldName) (інжектор: палива спожито) EFI Fuel Consumed (g)=Інжектор: Палива спожито (g) -efi_fuelpressure.Field=efi_fuelpressure (інжектор: тиск палива) +efi_fuelpressure.Field=(fieldName) (інжектор: тиск палива) EFI Fuel Pressure (kPa)=Інжектор: Тиск палива (kPa) -lng2.Field=lng2 (довгота #2) +lng2.Field=(fieldName) (довгота #2) Longitude2 (dd)=Довгота #2 (dd) -gpsh_acc.Field=gpsh_acc (точність гориз.положення за GPS) +gpsh_acc.Field=(fieldName) (точність гориз.положення за GPS) H Acc (m)=Точність гориз.положення (m) (GPS) -gpsv_acc.Field=gpsv_acc (точність вертик.положення за GPS) +gpsv_acc.Field=(fieldName) (точність вертик.положення за GPS) V Acc (m)=Точність вертик.положення (m) (GPS) -SSA.Field=SSA (кут бок.ковз) +SSA.Field=(fieldName) (кут бок.ковз) SSA (deg)=Кут боков.ковзання (deg) -opt_m_x.Field=opt_m_x (опт.потік (з гіро) X) +opt_m_x.Field=(fieldName) (опт.потік (з гіро) X) flow_comp_m_x=Оптич.потік з гіро-компенсац. X -opt_m_y.Field=opt_m_y (опт.потік (з гіро) Y) +opt_m_y.Field=(fieldName) (опт.потік (з гіро) Y) flow_comp_m_y=Оптич.потік з гіро-компенсац. Y -opt_x.Field=opt_x (опт.потік X) +opt_x.Field=(fieldName) (опт.потік X) flow_x=Оптичний потік X -opt_y.Field=opt_y (опт.потік Y) +opt_y.Field=(fieldName) (опт.потік Y) flow_y=Оптичний потік Y -opt_qua.Field=opt_qua (якість опт.потоку) +opt_qua.Field=(fieldName) (якість опт.потоку) flow quality=Якість оптичного потоку -wpno.Field=wpno (поточний пункт маршр.) +wpno.Field=(fieldName) (поточний пункт маршр.) WP No=Поточний пункт маршр. From 4596d09979f59c1c9cfeda7e4222f3f727701f7f Mon Sep 17 00:00:00 2001 From: FrequentFlyer86 <171158518+FrequentFlyer86@users.noreply.github.com> Date: Sun, 9 Jun 2024 23:41:59 +0300 Subject: [PATCH 11/11] Make the code more resilient to error --- ExtLibs/ArduPilot/CurrentState.cs | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/ExtLibs/ArduPilot/CurrentState.cs b/ExtLibs/ArduPilot/CurrentState.cs index 6dbae9e00e..c39e9e3577 100644 --- a/ExtLibs/ArduPilot/CurrentState.cs +++ b/ExtLibs/ArduPilot/CurrentState.cs @@ -4006,24 +4006,31 @@ public string GetFieldDesc(string name) return desc; } - var typeofthing = typeof(CurrentState).GetProperty(name); - - if (typeofthing != null) + try { - var attrib = typeofthing.GetCustomAttributes(false).OfType().ToArray(); + var typeofthing = typeof(CurrentState).GetProperty(name); - if (attrib.Length > 0) + if (typeofthing != null) { - var translated = attrib.OfType().First().TryTranslate(defaultTo: null); + var attrib = typeofthing.GetCustomAttributes(false).OfType().ToArray(); - if (translated != null) + if (attrib.Length > 0) { - var desc = translated.Replace("(fieldName)", name); - return desc; - } + var translated = attrib.OfType().First().TryTranslate(defaultTo: null); + + if (translated != null) + { + var desc = translated.Replace("(fieldName)", name); + return desc; + } - // fall-through + // fall-through + } } + } catch + { + // NOTE: The exception will get logged automatically, + // therefore we may swallow the exception and move on. } return name;