- {{ item.type }}
+ {{ $t('Axis') }}
{{ item.id }}
|
@@ -364,7 +384,14 @@
variant="plain"
theme="dark"
return-object
- />
+ >
+
+ {{ translateActionName(selectItem.raw) }}
+
+
+
+
+
- Buttons
+
+ {{ $t('Buttons') }}
+
- Name |
+
+ {{ $t('Name') }}
+ |
- Function
+
+ {{ $t('Function') }}
+
({{ currentModifierKey.id }})
|
- Custom label |
- Actions |
+
+
+ {{ $t('Custom label') }}
+
+ |
+
+ {{ $t('Actions') }}
+ |
@@ -428,14 +467,14 @@
item.type === 'button' && isButtonPressed(item.id as JoystickButton) ? 'bg-[#2c99ce]' : 'bg-transparent'
"
>
- {{ item.type }}
+ {{ $t('Button') }}
{{ item.id }}
|
- {{ currentButtonActions[item.id as JoystickButton]?.action.name }}
+ {{ translateActionName(currentButtonActions[item.id as JoystickButton]?.action) }}
|
@@ -451,14 +490,14 @@
- Axis Calibration
+ {{ $t('Axis Calibration') }}
- Calibrate your joystick to ensure accurate axis inputs.
+ {{ $t('Calibrate your joystick to ensure accurate axis inputs.') }}
- Click the button to open the calibration dialog, then follow the instructions to calibrate your
- joystick axes.
+ {{
+ $t(
+ 'Click the button to open the calibration dialog, then follow the instructions to calibrate your joystick axes.'
+ )
+ }}
@@ -498,7 +540,9 @@
- Input mapping
+
+ {{ $t('Input mapping') }}
+
mdi-close
@@ -518,29 +562,29 @@
class="bg-[#FFFFFF33]"
@click="updateButtonAction(input, shiftFunction as ProtocolAction)"
>
- Assign as Shift
+ {{ $t('Assign as Shift') }}
- Unmap Input
+ {{ $t('Unmap Input') }}

- Cockpit Action
+ {{ $t('Cockpit Action') }}

- MAVLink Manual Control
+ {{ $t('MAVLink Manual Control') }}
- Data Lake Variable
+ {{ $t('Data Lake Variable') }}
@@ -552,7 +596,7 @@
variant="outlined"
theme="dark"
type="text"
- placeholder="Search actions..."
+ :placeholder="$t('Search actions...')"
class="mb-1"
hide-details
/>
@@ -584,7 +628,7 @@
/>
- {{ action.name }}
+ {{ translateActionName(action as ProtocolAction) }}
@@ -592,7 +636,9 @@
- Axis mapping
+
+ {{ $t('Axis mapping') }}
+
@@ -613,7 +659,7 @@
+ >
+
+ {{ translateActionName(item.raw) }}
+
+
+
+
+
- Close
+ {{ $t('Close') }}
@@ -654,6 +707,7 @@
diff --git a/src/views/ConfigurationLogsView.vue b/src/views/ConfigurationLogsView.vue
index e018b1c2fc..fff6418476 100644
--- a/src/views/ConfigurationLogsView.vue
+++ b/src/views/ConfigurationLogsView.vue
@@ -12,7 +12,9 @@
/>
On screen telemetry data
+ {{ $t('On screen telemetry data') }}
+
- Overlay Options
+ {{ $t('Overlay Options') }}
@@ -39,7 +41,7 @@
Font size{{ $t('Font size') }}
Shadow size{{ $t('Shadow size') }}
Font color{{ $t('Font color') }}
Outline color{{ $t('Outline color') }}
Shadow color{{ $t('Shadow color') }}
Bold{{ $t('Bold') }}
Italic{{ $t('Italic') }}
Underline{{ $t('Underline') }}
Strikethrough{{ $t('Strikethrough') }}
@@ -190,7 +192,7 @@
- Vehicle Variables
+ {{ $t('Vehicle Variables') }}
{{ variable }}{{ translateVariable(variable) }}
- Mission Variables
+ {{ $t('Mission Variables') }}
{{ element }}{{ translateVariable(element) }}
- Data Lake Variables
+ {{ $t('Data Lake Variables') }}
@@ -293,7 +295,7 @@
- Custom Messages
+ {{ $t('Custom Messages') }}
- Enter message
+ {{ $t('Enter message') }}
Type {{ to autocomplete data lake variables
@@ -364,9 +366,9 @@
- Settings
+ {{ $t('Settings') }}
- Telemetry frequency - 1 to 100 Hz (default 1 Hz)
+ {{ $t('Telemetry frequency - 1 to 100 Hz (default 1 Hz)') }}
- Reset Positions
+ {{ $t('Reset Positions') }}
mdi-restore
@@ -439,7 +441,7 @@
"
class="cursor-grab elevation-1"
:class="interfaceStore.isOnSmallScreen ? '' : 'my-[2px]'"
- >{{ resolveDisplayName(variable) }}
+ >{{ translateVariable(resolveDisplayName(variable)) }}
mdi-close
@@ -459,6 +461,7 @@
import type * as monacoTypes from 'monaco-editor'
import { computed, nextTick, onBeforeUnmount, onMounted, reactive, ref, watch } from 'vue'
import { VueDraggable } from 'vue-draggable-plus'
+import { useI18n } from 'vue-i18n'
import ExpansiblePanel from '@/components/ExpansiblePanel.vue'
import GlassButton from '@/components/GlassButton.vue'
@@ -474,6 +477,47 @@ import { useAppInterfaceStore } from '@/stores/appInterface'
import BaseConfigurationView from './BaseConfigurationView.vue'
+const { t } = useI18n()
+
+/**
+ * Translates a known telemetry variable display name to the current locale.
+ * Falls back to the original string when no mapping exists.
+ * @param {string} variable - The English display name of the variable
+ * @returns {string} The translated variable name, or the original if no translation is found
+ */
+const translateVariable = (variable: string): string => {
+ const mapping: Record = {
+ 'Roll': t('Roll'),
+ 'Pitch': t('Pitch'),
+ 'Heading': t('Heading'),
+ 'Depth': t('Depth'),
+ 'Mode': t('Mode'),
+ 'Battery voltage': t('Battery voltage'),
+ 'Battery current': t('Battery current'),
+ 'GPS satellites': t('GPS satellites'),
+ 'GPS status': t('GPS status'),
+ 'Latitude': t('Latitude'),
+ 'Longitude': t('Longitude'),
+ 'Mission name': t('Mission name'),
+ 'Time': t('Time'),
+ 'Date': t('Date'),
+ 'Instantaneous power': t('Instantaneous power'),
+ // VeryGenericIndicator variables
+ 'Cam Tilt': t('Cam Tilt'),
+ 'Cam Pan': t('Cam Pan'),
+ 'Pilot Gain': t('Pilot Gain'),
+ 'Lights (1)': t('Lights (1)'),
+ 'Lights (2)': t('Lights (2)'),
+ 'Water Temp': t('Water Temp'),
+ 'Tether Turns': t('Tether Turns'),
+ 'Input Hold': t('Input Hold'),
+ 'Roll Pitch': t('Roll Pitch'),
+ 'Altitude': t('Altitude'),
+ 'Speed (GPS)': t('Speed (GPS)'),
+ }
+ return mapping[variable] || variable
+}
+
const { showDialog } = useInteractionDialog()
const interfaceStore = useAppInterfaceStore()
@@ -630,15 +674,15 @@ type GridConfig = {
}
const gridConfig: GridConfig[] = [
- { key: 'LeftTop', label: 'Left Top' },
- { key: 'CenterTop', label: 'Center Top' },
- { key: 'RightTop', label: 'Right Top' },
- { key: 'LeftMid', label: 'Left Middle' },
- { key: 'CenterMid', label: 'Center Middle' },
- { key: 'RightMid', label: 'Right Middle' },
- { key: 'LeftBottom', label: 'Left Bottom' },
- { key: 'CenterBottom', label: 'Center Bottom' },
- { key: 'RightBottom', label: 'Right Bottom' },
+ { key: 'LeftTop', label: t('Left Top') },
+ { key: 'CenterTop', label: t('Center Top') },
+ { key: 'RightTop', label: t('Right Top') },
+ { key: 'LeftMid', label: t('Left Mid') },
+ { key: 'CenterMid', label: t('Center Mid') },
+ { key: 'RightMid', label: t('Right Mid') },
+ { key: 'LeftBottom', label: t('Left Bottom') },
+ { key: 'CenterBottom', label: t('Center Bottom') },
+ { key: 'RightBottom', label: t('Right Bottom') },
]
const getClassForConfig = computed(() => {
@@ -659,12 +703,13 @@ const getClassForConfig = computed(() => {
const openHelpDialog = (): void => {
showDialog({
- title: 'Video Configuration Help',
+ title: t('Access video configuration to configure recording and streaming options.'),
message: [
- // eslint-disable-next-line vue/max-len
- 'On this screen, you can configure the telemetry data that will be displayed on the subtitle file for recorded videos. You can change the font size, color, and style, as well as the position of each variable on the screen. You can also add custom messages that will be displayed on the video player screen.',
- 'Drag and drop variables from the left panel to the desired position on the Telemetry Data Display.',
- 'For additional Help, refer to documentation or contact us.',
+ t(
+ 'On this screen, you can configure the telemetry data that will be displayed on the subtitle file for recorded videos. You can change the font size, color, and style, as well as the position of each variable on the screen. You can also add custom messages that will be displayed on the video player screen.'
+ ),
+ t('Drag and drop variables from the left panel to the desired position on the Telemetry Data Display.'),
+ t('For additional Help, refer to documentation or contact us.'),
],
variant: 'text-only',
maxWidth: interfaceStore.isOnSmallScreen ? '80vw' : '60vw',
diff --git a/src/views/ConfigurationMAVLinkView.vue b/src/views/ConfigurationMAVLinkView.vue
index a2e3eb7cc6..a085d90288 100644
--- a/src/views/ConfigurationMAVLinkView.vue
+++ b/src/views/ConfigurationMAVLinkView.vue
@@ -1,23 +1,30 @@
-
+
- MAVLink configuration
+ {{ $t('MAVLink configuration') }}
- DataLake variables creation
+ {{ $t('DataLake variables creation') }}
-
- Variables from other systems: Enable creation of DataLake variables from MAVLink
- messages originating from systems/components other than the main vehicle (System ID
- {{ mainVehicleStore.mainVehicle?.systemId }}, Component ID 1). When enabled, variables from all MAVLink
- systems on the network will be available in the DataLake.
+ {{ $t('Variables from other systems') }}:
+ {{
+ $t(
+ 'Enable the creation of DataLake variables from MAVLink messages originating from systems/components other than the main vehicle (System ID {systemId}, Component ID 1). When enabled, variables from all MAVLink systems on the network will be available in the DataLake.',
+ {
+ systemId: mainVehicleStore.mainVehicle?.systemId,
+ }
+ )
+ }}
-
- Legacy variable names: Creates duplicate variables with the old naming format for
- backward compatibility. Enabled by default - users with old devices may want to disable this to improve
- performance. If disabled, you will need to manually replace the usage of legacy variables with the new
- ones in your widgets (e.g.: VGI, Plotter) and scripts (e.g.: DataLake Transforming functions).
+ {{ $t('Legacy variable names') }}:
+ {{
+ $t(
+ 'Create duplicate variables with the old naming format for backwards compatibility. Enabled by default - users with older setups may want to disable this for performance. If disabled, you will need to manually replace usages of the legacy variables with the new ones in mini-widgets (e.g.: VGI, Plotter) and scripts (e.g.: DataLake transformation functions).'
+ )
+ }}
@@ -26,25 +33,27 @@
- Message intervals
+ {{ $t('Message intervals') }}
- Configure the frequency at which each MAVLink message is requested from the vehicle. Higher frequencies
- provide more responsive data but increase the load on the network and in the vehicle's CPU. If the message
- is not already configured, you can add it to the interval configuration with the forms in the bottom.
+ {{
+ $t(
+ "Configure the frequency at which each MAVLink message is requested from the vehicle. Higher frequencies provide more responsive data but increase the load on the network and in the vehicle's CPU. If the message is not already configured, you can add it to the interval configuration with the forms in the bottom."
+ )
+ }}
@@ -53,7 +62,7 @@
- Reset intervals to Cockpit defaults
+ {{ $t('Reset intervals to Cockpit defaults') }}
- Set the interval for a new message
+ {{ $t('Set the interval for a new message') }}
- Add new message
+ {{ $t('Add new message') }}
@@ -228,6 +227,7 @@
|