WME Speed Display

Displays road speed directly in the center of the segment (taking curves into account) in Waze Map Editor

当前为 2025-03-26 提交的版本,查看 最新版本

// ==UserScript==
// @name        WME Speed Display
// @namespace   https://gf.qytechs.cn/scripts/526702-wme-speed-display/
// @version     2.0.0
// @description Displays road speed directly in the center of the segment (taking curves into account) in Waze Map Editor
// @author      Luan Tavares
// @icon        data:image/png;base64,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vLDwG/eE8/s3BCkeAAAACXBIWXMAAC4jAAAuIwF4pT92AAADbGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT5MdWFuIFRhdmFyZXM8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+PGV4aWY6RGF0ZVRpbWVPcmlnaW5hbD4yMDI1LTAzLTA1VDEzOjEyOjQ0LjUxMDwvZXhpZjpEYXRlVGltZU9yaWdpbmFsPjwvcmRmOkRlc2NyaXB0aW9uPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj48eG1wOkNyZWF0ZURhdGU+MjAyNS0wMy0wNVQxMzoxMjo0NC41MTA8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCjw/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
// @license     GPLv3
// @include     https://www.waze.com/editor*
// @include     https://www.waze.com/*/editor*
// @include     https://beta.waze.com/*
// @exclude     https://www.waze.com/user/editor*
// @grant       none
// ==/UserScript==

/* 
 * @todo:
 * Check a way to get all road types and groups automatically
 * Script layer switch is not loading based on the saved setting, it is always false in the new SDK
 * When I change the layer switch it does not toggle the layer on and off in the new SDK
 * Change "Hide in segments smaller than" so that it applies transparency instead of ignoring the icon
 */

/* global I18n */
/* global getWmeSdk */

// TODO: Remove this when SDK migration is complete
/* global W */

class WmeSpeedDisplay {
    constructor() {
        this.version           = '2.0.0';
        this.debugMode         = false;
        this.needResetSettings = true;
        this.settings          = {};
        this.zIndex            = {
            min: 2065,
            max: 6500,
            warn: 3000,
            warnDisplayed: false
        };

        this.segmentsCategories = {
            highways: [
                {
                    id: 3,
                    name: 'freeway'
                },
                {
                    id: 4,
                    name: 'ramp'
                },
                {
                    id: 6,
                    name: 'major_highway'
                },
                {
                    id: 7,
                    name: 'minor_highway'
                }
            ],
            non_drivable: [
                {
                    id: 18,
                    name: 'railroad'
                },
                {
                    id: 19,
                    name: 'runway_taxiway'
                }
            ],
            other_drivable: [
                {
                    id: 8,
                    name: 'off_road_not_maintained'
                },
                {
                    id: 20,
                    name: 'parking_lot_road'
                },
                {
                    id: 17,
                    name: 'private_road'
                },
                {
                    id: 15,
                    name: 'ferry'
                }
            ],
            streets: [
                {
                    id: 2,
                    name: 'primary_street'
                },
                {
                    id: 1,
                    name: 'street'
                },
                {
                    id: 22,
                    name: 'narrow_street'
                }
            ]
        };

        this.theme = [
            'default',
            'altViennaConv',
            'japan',
            'uk',
            'sacu',
        ];

        this.wmeTranslations = I18n.translations[I18n.locale];
        this.spdTranslations = this.wmeTranslations.wmeSpd = {};

        this.debounce = {
            updateMapDisplay: this.debounce(this.updateMapDisplay.bind(this), 800),
            saveSettings: this.debounce(this.saveSettings.bind(this)),
            onZindexFieldChanged: this.debounce(this.onZindexFieldChanged.bind(this), 1000),
            onSpeedFilterChanged: this.debounce(this.onSpeedFilterChanged.bind(this), 500),
            onSettingsChange: this.debounce(this.onSettingsChange.bind(this), 500)
        };

        
        this.channel = new BroadcastChannel('wmeSpeedDisplay');
        
        this.layerName = 'wme-speed-display-layer';
        
        // TODO: Remove this when SDK migration is complete
        this.layerCheckbox = {
            roadGroup: null,
            speedDisplay: null
        };
        
        this.snackbarWrapper;
        this.displaySpeedsSwitch;
        this.wmeSdk;
        this.layer;
        // TODO: SDK migration
        // this.layerSwitcherElement;

        this.prepareAndInitialize();
    }

    /**
     * Checks if WME is ready to initializes the plugin.
     */
    prepareAndInitialize() {
        this.defineSettings();
        this.defineTranslations();

        this.wmeSdk = getWmeSdk({
            scriptId: 'wme-speed-display',
            scriptName: this.getTranslation('name')
        });

        this.wmeSdk.Events.once({
            eventName: 'wme-ready'
        }).then(this.initializePlugin.bind(this));
     }

    /**
     * Initializes the plugin.
     */
    async initializePlugin() {
        this.logDebug('WME loaded and ready. Starting script...', true);

        // TODO: Remove this when SDK migration is complete
        this.layer = new OpenLayers.Layer.Vector(this.layerName, {
            displayInLayerSwitcher: false,
            rendererOptions: {zIndexing: true}
        });

        // TODO: SDK migration
        // this.layer = this.wmeSdk.Map.addLayer({
        //     layerName: this.layerName,
        //     displayName: this.getTranslation('name'),
        //     shouldDisplayInLayerSwitcher: true,
        //     // styleRules: [
        //     //     {
        //     //         predicate: featureProperties => featureProperties.isHighlighted,
        //     //         style: {
        //     //             strokeColor: 'yellow',
        //     //             strokeWidth: 10,
        //     //         },
        //     //     },
        //     //     {
        //     //         style: { // Default style
        //     //             strokeColor: 'lightgray',
        //     //             strokeWidth: 5,
        //     //         },
        //     //     }
        //     // ]
        // });
        
        // this.wmeSdk.LayerSwitcher.addLayerCheckbox({name: this.getTranslation('name')});

        // this.getLayerSwitcher();
        // TODO: SDK migration - end

        this.setZIndex();
        
        // TODO: Remove this when SDK migration is complete
        W.map.addLayer(this.layer);
        this.addLayerCheckbox();
        // TODO: Remove this when SDK migration is complete - end

        this.createSnackbarWrapper();
        this.observeAllOriginalSnackbars();
        await this.addSettingsTab();
        this.updateSettingsElementsStates();
        this.addShortcut();
        this.addStyle();
        this.checkVersionAndShowChangelog();
        this.listen();

        this.logDebug('Waiting about 1 second for everything to load...');

        await this.sleep(1000);
        
        this.preUpdateMapDisplay();
    }

    /**
     * Method that listens to this script events.
     */
    listen() {
        this.channel.addEventListener('message', this.onChannelMessage.bind(this));
        
        this.wmeSdk.Events.on({
            eventName: 'wme-map-move-end',
            eventHandler: this.preUpdateMapDisplay.bind(this),
        });
        
        this.wmeSdk.Events.on({
            eventName: 'wme-map-zoom-changed',
            eventHandler: this.preUpdateMapDisplay.bind(this),
        });
        
        // TODO: Remove this when SDK migration is complete
        W.model.segments.on('objectschanged', this.preUpdateMapDisplay.bind(this));

        // TODO: SDK migration
        // this.wmeSdk.Events.trackDataModelEvents({dataModelName: 'segments'});
        
        // this.wmeSdk.Events.on({
        //     eventName: 'wme-data-model-objects-changed',
        //     eventHandler: this.preUpdateMapDisplay.bind(this),
        // });
        // TODO: SDK migration - end

        this.wmeSdk.Events.on({
            eventName: 'wme-user-settings-changed',
            eventHandler: this.onUserSettingsChanged.bind(this),
        });

        this.wmeSdk.Events.on({
            eventName: 'wme-map-data-loaded',
            eventHandler: this.preUpdateMapDisplay.bind(this),
        });

        // TODO: SDK migration
        // this.wmeSdk.Events.on({
        //     eventName: 'wme-layer-checkbox-toggled',
        //     eventHandler: this.onLayerSwitcherToggled.bind(this),
        // });
    }

    /**
     * Saves the settings and updates the map display.
     */
    async onSettingsChange() {
        await this.debounce.saveSettings();
        this.preUpdateMapDisplay();
    }

    /**
     * Updates the max zoom value display and triggers map update if the zoom level reaches the max.
     * @param {Event} event
     */
    async onSettingZoomChanged(event) {
        let zoomLevel   = this.wmeSdk.Map.getZoomLevel();
        let newMaxZoom  = parseInt(event.target.value, 10);
        let prevMaxZoom = this.settings.general.spdMaxZoom;

        document.getElementById('spd-max-zoom-value').innerText = newMaxZoom;

        await this.debounce.saveSettings();
    
        let wasVisible      = prevMaxZoom > zoomLevel;
        let shouldBeVisible = newMaxZoom > zoomLevel;
    
        if (wasVisible != shouldBeVisible)
            this.preUpdateMapDisplay();
    }

    /**
     * Updates the filter opacity value and triggers map update when opacity changes.
     * @param {Event} event
     */
    async onSettingOpacityChanged(event) {
        document.getElementById('spd-filter-opacity-value').innerText = parseFloat(event.target.value);

        await this.debounce.saveSettings();
        this.preUpdateMapDisplay();
    }

    /**
     * Handles user settings change.
     */
    onUserSettingsChanged() {
        let speedUnitTexts = document.querySelectorAll('.spd-filter-speed-unit');
        let isImperial     = this.wmeSdk.Settings.getUserSettings().isImperial;

        document.querySelector('.spd-filter-distance-unit').innerHTML = isImperial ? this.wmeTranslations.units_short.feet : this.wmeTranslations.units_short.meters;

        speedUnitTexts.forEach(text => {
            text.innerText = isImperial ? I18n.translate('measurements.speed.mi', {speed: ''}) : I18n.translate('measurements.speed.km', {speed: ''});
        });

        this.preUpdateMapDisplay();
    }

    /**
     * Changes layer's z-index.
     * @param {Event} event 
     */
    increaseOrDecreaseZindex(event) {
        let zIndexInput = document.getElementById('spd-layer-zindex');
        let decrease    = event.target.id == 'spd-btn-zindex-decrease';
    
        let min = this.zIndex.min;
        let max = this.zIndex.max;
    
        let currentZindex = parseInt(zIndexInput.value);
    
        if ((decrease && currentZindex > min) || (!decrease && currentZindex < max)) {
            zIndexInput.value = decrease ? currentZindex - 100 : currentZindex + 100;

            if (!this.zIndex.warnDisplayed)
                this.displayZIndexWarning();

            this.debounce.saveSettings();
            this.setZIndex();
        }
    }

    /**
     * Updates z-index input value within allowed range and saves settings with debounce.
     */
    onZindexFieldChanged() {
        let zIndexInput = document.getElementById('spd-layer-zindex');
        let min         = this.zIndex.min;
        let max         = this.zIndex.max;
        let value       = parseInt(zIndexInput.value, 10) || max;
        value           = Math.min(Math.max(value, min), max);

        zIndexInput.value = value;

        this.settings.general.spdLayerZindex = value;

        if (!this.zIndex.warnDisplayed)
            this.displayZIndexWarning();

        this.debounce.saveSettings();
        this.setZIndex();
    }

    /**
     * Displays a warning alert if the z-index value exceeds the allowed threshold. 
     */
    displayZIndexWarning() {
        if (parseInt(document.getElementById('spd-layer-zindex')?.value, 10) >= this.zIndex.warn && !this.settings.alertDismissed.infoZindex) {
            this.addAlert('info-zindex', this.getTranslation('alertMessage.zIndex'), 'warning');

            this.zIndex.warnDisplayed = true;
        }
    }

    /**
     * Sets the z-index of the layer.
     */
    setZIndex() {
        // TODO: Remove this when SDK migration is complete
        this.layer.setZIndex(this.settings.general.spdLayerZindex);
        
        // TODO: SDK migration
        // this.wmeSdk.Map.setLayerZIndex({
        //     layerName: this.layerName, 
        //     zIndex: this.settings.general.spdLayerZindex
        // });
    }

    /**
     * Resets the z-index of the layer.
     */
    resetZindex() {
        let zIndexInput = document.getElementById('spd-layer-zindex');
        
        this.settings.general.spdLayerZindex = this.zIndex.min;

        zIndexInput.value = this.settings.general.spdLayerZindex;

        this.onZindexFieldChanged();
    }

    /**
     * Save alert dismissed.
     * @param {Event} event
     */
    async onDismissAlert(event) {
        let currentDismissedAlertId = this.convertStringCaseStyle('kebab', 'camel', event.target.parentNode.id);

        this.settings.alertDismissed[currentDismissedAlertId] = true;
        
        await this.debounce.saveSettings();

        let warningGroup       = document.getElementById('spd-alert-group');
        let allAlertsDismissed = warningGroup.querySelectorAll('wz-alert:not([dismissed]), wz-alert[dismissed="false"]');

        if (allAlertsDismissed.length <= 1)
            warningGroup.classList.add('d-none');
    }

    /**
     * Validates the speed filter input's and save settings.
     * @param {Event} event
     */
    onSpeedFilterChanged(event) {
        let minSpeed = parseInt(document.getElementById('spd-min-speed').value) || 0;
        let maxSpeed = parseInt(document.getElementById('spd-max-speed').value) || 0;

        if (maxSpeed > 0 && minSpeed > maxSpeed) {
            this.logDebug('Min speed filter can\'t be bigger than the max speed filter.', false, 'error');

            this.removeAllSnackbars();
            this.addSnackbar('spd-snackbar-error-filtering', `<i class="w-icon w-icon-alert-danger-outline"></i><span><strong>${this.getTranslation('name')}:</strong><br>${this.getTranslation('snackbar.errorFiltering')}</span>`, `<wz-button color="text">${this.wmeTranslations.zoom_in_message.ok}</wz-button>`);

            event.target.value = '';

            return;
        }

        this.onSettingsChange();
    }

    // TODO: SDK migration
    /**
     * Updates the plugin's enabled state in settings when the corresponding checkbox is toggled and changes the plugin's layer visibility.
     * @param {Object} checkboxToggled - The object representing the toggled checkbox.
     * @param {boolean} checkboxToggled.checked - Whether the checkbox is checked or not.
     * @param {String} checkboxToggled.name - The name of the checkbox (used to identify the plugin's settings).
     */
    // async onLayerSwitcherToggled(checkboxToggled) {
    //     if (checkboxToggled.name == this.getTranslation('name')) {
    //         await this.debounce.saveSettings();
    //         this.preUpdateMapDisplay();
    //         this.toggleLayerVisibility();
    //     }
    // }

    /**
     * Select the speed display theme.
     * @param {Event} event 
     */
    async onThemeCardClicked(event) {
        this.selectThemeCard(event.target);
        await this.debounce.saveSettings();
        this.preUpdateMapDisplay();
    }

    /**
     * Simulate a click on the speed display layer switcher.
     */
    simulateLayerSwitchClick() {
        // TODO: Remove this when SDK migration is complete
        this.layerCheckbox.speedDisplay.click();

        // TODO: SDK migration
        // this.layerSwitcherElement.click();
    }

    /**
     * Handles channel messages and sincronizing settings on the others open WME tabs.
     * @param {Event} event 
     */
    onChannelMessage(event) {
        switch (event.data) {
            case 'saved':
                this.defineSettings();
                this.updateSettingsElementsStates();
                this.preUpdateMapDisplay();

                break;
        }

        // TODO: Remove this when SDK migration is complete (just the function param)
        this.toggleLayerVisibility(this.layerCheckbox.roadGroup.checked && this.settings.spdEnabled);
    }

    // TODO: Remove this when SDK migration is complete
    /**
     * Saves and updates the map display when WME SPD checkbox change.
     * @param {Event} event
     */
    onSpeedDisplayCheckboxChange(event) {
        this.debounce.saveSettings();
        this.preUpdateMapDisplay();

        this.toggleLayerVisibility(event.target.checked);
        
        this.displaySpeedsSwitch.checked = event.target.checked;
    }
    
    /**
     * Updates the layer visibility based on the layer switcher road group state.
     */
    onLayerSwithcerGroupRoadChange() {
        let roadGroupActived = this.layerCheckbox.roadGroup.checked;

        this.toggleLayerVisibility(roadGroupActived && this.settings.spdEnabled);

        this.layerCheckbox.speedDisplay.disabled = !roadGroupActived;
        this.displaySpeedsSwitch.disabled        = !roadGroupActived;
    }
    // TODO: Remove this when SDK migration is complete - end

    /**
     * Observes all 'wz-snackbar' elements for changes in children, attributes, or subtree.
     */
    observeAllOriginalSnackbars() {
        let snackbars = document.querySelectorAll('wz-snackbar');
    
        if (snackbars.length === 0) {
            this.logDebug('No "wz-snackbar" found.', false, 'warn');

            return;
        }
    
        snackbars.forEach(snackbar => {
            let observer = new MutationObserver(this.handleMutations.bind(this));
    
            observer.observe(snackbar, {
                childList: true,
                attributes: true,
                subtree: true
            });
    
            this.logDebug(`Observing changes in 'wz-snackbar' with class: ${snackbar.classList.value || 'without class'}`);
        });
    }

    /**
     * Handles mutations by adjusting 'translate' on 'snackbarWrapper' based on shadowRoot content.
     * @param {MutationRecord[]} mutationsList List of observed mutations.
     */
    handleMutations(mutationsList) {
        mutationsList.forEach((mutation) => {
            if (mutation.target.shadowRoot.children.length < 1) {
                this.snackbarWrapper.style.translate = '0px -95px';
                    
            } else {
                this.snackbarWrapper.style.removeProperty('translate');
            }
        });
    }

    /**
     * Attaches event listeners to the settings elements to track user interactions and changes.
     */
    attachSettingsListeners() {
        this.displaySpeedsSwitch.addEventListener('change', this.simulateLayerSwitchClick.bind(this));

        // Change event -> onSettingsChange
        ['spd-show-no-speed', 'spd-show-roundabout', 'spd-show-unpaved', 'spd-hide-segment-smaller-than'].forEach(id => {
            document.getElementById(id).addEventListener('change', this.onSettingsChange.bind(this));
        });

        document.getElementById('spd-max-zoom').addEventListener('input', this.onSettingZoomChanged.bind(this));
        document.getElementById('spd-filter-opacity').addEventListener('input', this.onSettingOpacityChanged.bind(this));

        ['spd-btn-zindex-decrease', 'spd-btn-zindex-increase'].forEach(id => {
            document.getElementById(id).addEventListener('click', this.increaseOrDecreaseZindex.bind(this));
        });

        document.getElementById('spd-btn-reset-z-index').addEventListener('click', this.resetZindex.bind(this));
        document.getElementById('spd-layer-zindex').addEventListener('input', this.debounce.onZindexFieldChanged.bind(this));
        document.getElementById('spd-hide-segment-smaller-than').addEventListener('input', this.onSettingsChange.bind(this));
        document.getElementById('spd-min-speed').addEventListener('input', this.debounce.onSpeedFilterChanged.bind(this));
        document.getElementById('spd-max-speed').addEventListener('input', this.debounce.onSpeedFilterChanged.bind(this));

        document.querySelectorAll('[id^="spd-show-speed-in-"]').forEach(input => {
            input.addEventListener('change', this.onSettingsChange.bind(this));
        });

        document.querySelectorAll('[id^="spd-theme-"]').forEach(card => {
            card.addEventListener('click', this.onThemeCardClicked.bind(this));
        });

        document.getElementById('spd-reset-default-settings').addEventListener('click', this.resetSettings.bind(this));

        if (this.debugMode) {
            document.getElementById('btn-spd-update-settings-tab').addEventListener('click', this.updateSettingsTab.bind(this));
            document.getElementById('btn-spd-test').addEventListener('click', this.addSnackbar.bind(this));
        }

        document.getElementById('btn-spd-open-changelog-dialog').addEventListener('click', this.openChangelogDialog.bind(this));
    }

    /**
     * Detaches event listeners from the settings elements to stop tracking user interactions.
     */
    detachSettingsListeners() {
        this.displaySpeedsSwitch.removeEventListener('change', this.simulateLayerSwitchClick.bind(this));

        // Change event -> onSettingsChange
        ['spd-show-no-speed', 'spd-show-roundabout', 'spd-show-unpaved', 'spd-hide-segment-smaller-than'].forEach(id => {
            document.getElementById(id).removeEventListener('change', this.onSettingsChange.bind(this));
        });

        document.getElementById('spd-max-zoom').removeEventListener('input', this.onSettingZoomChanged.bind(this));
        document.getElementById('spd-filter-opacity').removeEventListener('input', this.onSettingOpacityChanged.bind(this));

        ['spd-btn-zindex-decrease', 'spd-btn-zindex-increase'].forEach(id => {
            document.getElementById(id).removeEventListener('click', this.increaseOrDecreaseZindex.bind(this));
        });

        document.getElementById('spd-btn-reset-z-index').removeEventListener('click', this.resetZindex.bind(this));
        document.getElementById('spd-layer-zindex').removeEventListener('input', this.debounce.onZindexFieldChanged.bind(this));
        document.getElementById('spd-hide-segment-smaller-than').removeEventListener('input', this.onSettingsChange.bind(this));
        document.getElementById('spd-min-speed').removeEventListener('input', this.debounce.onSpeedFilterChanged.bind(this));
        document.getElementById('spd-max-speed').removeEventListener('input', this.debounce.onSpeedFilterChanged.bind(this));

        document.querySelectorAll('[id^="spd-show-speed-in-"]').forEach(input => {
            input.removeEventListener('change', this.onSettingsChange.bind(this));
        });

        document.querySelectorAll('[id^="spd-theme-"]').forEach(card => {
            card.removeEventListener('click', this.onThemeCardClicked.bind(this));
        });

        document.getElementById('spd-reset-default-settings').removeEventListener('click', this.resetSettings.bind(this));

        if (this.debugMode) {
            document.getElementById('btn-spd-update-settings-tab').removeEventListener('click', this.updateSettingsTab.bind(this));
            document.getElementById('btn-spd-test').removeEventListener('click', this.showSpeedDisplayDialog.bind(this));
        }

        document.getElementById('btn-spd-open-changelog-dialog').removeEventListener('click', this.openChangelogDialog.bind(this));
    }

    /**
     * Attaches listeners to close the dialog.
     */
    attachDialogListeners() {
        document.addEventListener('keydown', this.simulateBtnHideDialogClick.bind(this));
        document.querySelector('#spd-dialog-container .dark-overlay').addEventListener('click', this.simulateBtnHideDialogClick.bind(this), {once: true});
        document.getElementById('btn-spd-hide-dialog').addEventListener('click', this.hideSpeedDisplayDialog.bind(this), {once: true});
    }

    /**
     * Updates the map display if the road group checkbox is checked and speed display is enabled, showing a snackbar during the process.
     */
    async preUpdateMapDisplay() {
        if (!this.layerCheckbox.roadGroup.checked || !this.settings.spdEnabled) {
            this.logDebug('Can\'t update the map display.', false, 'warn');

            return;
        }

        let snackbarId = 'spd-snackbar-updating-map';
        
        if (W.map.getZoom() >= this.settings.general.spdMaxZoom)
            this.addSnackbar(snackbarId, `<i class="w-icon w-icon-clock"></i><span><strong>${this.getTranslation('name')}:</strong><br>${this.getTranslation('snackbar.updatingMapDisplay')}</span>`);

        await this.debounce.updateMapDisplay();
        this.removeSnackbar(document.getElementById(snackbarId));
    }

    /**
     * Updates the map display by removing old features and adding new speed icons based on the settings.
     */
    // TODO: Remove this when SDK migration is complete
    updateMapDisplay() {
        return new Promise((resolve, reject) => {
            try {
                this.logDebug('Updating map display...');
        
                this.layer.removeAllFeatures();
        
                if (W.map.getZoom() < this.settings.general.spdMaxZoom) {
                    this.logDebug('Maximum zoom exceeded. No speeds will be displayed.', false, 'warn');

                    resolve();
        
                    return;
                }
        
                let segments    = W.model.segments.objects || {};
                let segmentKeys = Object.keys(segments);
        
                if (segmentKeys.length == 0) {
                    this.logDebug('No segments found.', false, 'error');

                    reject();
        
                    return;
                }
        
                this.logDebug(`Total segments loaded: ${segmentKeys.length}`);
        
                segmentKeys.forEach(segmentId => {
                    let segment = segments[segmentId];
        
                    if (!segment || !segment.attributes) {
                        this.logDebug(`Could not find attributes or they are missing on the segment ${segmentId}.`, false, 'error');

                        return;
                    }
        
                    let attributes    = segment.attributes;
                    let roadSettingId = this.convertStringCaseStyle('snake', 'camel', `spd_show_speed_in_${this.getRoadSettingNameById(attributes.roadType)}`);
                    
                    let isLeftHandTraffic = this.wmeSdk.DataModel.Countries.getTopCountry().isLeftHandTraffic;
                    let isFwd             = attributes.fwdDirection;
                    let isRev             = attributes.revDirection;
                    let speedFwd          = this.getSpeed(isFwd ? (isLeftHandTraffic ? attributes.revMaxSpeed : attributes.fwdMaxSpeed) : null);
                    let speedRev          = this.getSpeed(isRev ? (isLeftHandTraffic ? attributes.fwdMaxSpeed : attributes.revMaxSpeed) : null);
        
                    let hideNoSpeed        = !this.settings.general.spdShowNoSpeed && ((speedFwd == 'N/A' && speedRev == 'N/A') || (isFwd && !isRev && speedFwd == 'N/A') || (!isFwd && isRev && speedRev == 'N/A') || (!isFwd && !isRev));
                    let ignoreOnRoundabout = attributes.junctionID && !this.settings.general.spdShowRoundabout;
                    let ignoreOnUnpaved    = attributes.flags == 16 && !this.settings.general.spdShowUnpaved;
        
                    if (hideNoSpeed || !this.settings.roads[roadSettingId] || ignoreOnRoundabout || ignoreOnUnpaved) {
                        this.logDebug('This type of segment should not be loaded.', false, 'warn');
        
                        return;
                    }
        
                    let geometry = segment.getOLGeometry();
        
                    if (!geometry || geometry.components.length < 2) {
                        this.logDebug(`Invalid geometry on segment: ${segmentId}.`, false, 'error');
        
                        return;
                    }
                    
                    let minLength     = this.settings.filter.spdHideSegmentSmallerThan;
                    let segmentLength = attributes.length;
        
                    if (minLength != null && segmentLength < minLength) {
                        this.logDebug('Segment length is smaller than filter. Ignoring...');
        
                        return;
                    }
        
                    let midpoint                = this.calculateMidpoint(geometry);
                    let angle                   = this.calculateAngleAtMidpoint(geometry);
                    let {leftPoint, rightPoint} = this.getPerpendicularPoints(midpoint, angle, 5);
        
                    if (isFwd && isRev && speedFwd != speedRev) {
                        let leftFeature  = new OpenLayers.Feature.Vector(leftPoint, {speed: speedRev});
                        let rightFeature = new OpenLayers.Feature.Vector(rightPoint, {speed: speedFwd});

                        leftFeature.style = {
                            graphic: true,
                            externalGraphic: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speedRev)),
                            graphicHeight: 30,
                            graphicWidth: 30,
                            graphicYOffset: -15,
                            graphicXOffset: -15,
                            graphicOpacity: this.calculateOpacity(speedRev)
                        };

                        rightFeature.style = {
                            graphic: true,
                            externalGraphic: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speedFwd)),
                            graphicHeight: 30,
                            graphicWidth: 30,
                            graphicYOffset: -15,
                            graphicXOffset: -15,
                            graphicOpacity: this.calculateOpacity(speedFwd)
                        };
        
                        this.layer.addFeatures([leftFeature, rightFeature]);
        
                    } else {
                        let speed           = isFwd ? speedFwd : speedRev;
                        let centerFeature   = new OpenLayers.Feature.Vector(midpoint, {speed});
                        
                        centerFeature.style = {
                            graphic: true,
                            externalGraphic: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speed, isFwd && isRev)),
                            graphicHeight: 30,
                            graphicWidth: 30,
                            graphicYOffset: -15,
                            graphicXOffset: -15,
                            graphicOpacity: this.calculateOpacity(speed)
                        };
        
                        this.layer.addFeatures([centerFeature]);
                    }
                });
        
                this.logDebug('Update finished.');

                resolve();

            } catch (error) {
                this.logDebug(error, false, 'error');
                
                reject(error);
            }
        });
    }
    // TODO: SDK migration
    // updateMapDisplay() {
    //     return new Promise(async (resolve, reject) => {
    //         try {
    //             this.logDebug('Updating map display...');
        
    //             this.wmeSdk.Map.removeAllFeaturesFromLayer({layerName: this.layerName});
        
    //             if (this.wmeSdk.Map.getZoomLevel() < this.settings.general.spdMaxZoom) {
    //                 this.logDebug('Maximum zoom exceeded. No speeds will be displayed.', false, 'warn');

    //                 resolve();
        
    //                 return;
    //             }
        
    //             let segments = await this.wmeSdk.DataModel.Segments.getAll();
        
    //             if (segments.length == 0) {
    //                 this.logDebug('No segments found.', false, 'error');

    //                 reject();
        
    //                 return;
    //             }
        
    //             this.logDebug('Total segments loaded: ' + segments.length);
        
    //             segments.forEach(segment => {
    //                 let roadSettingId = this.convertStringCaseStyle('snake', 'camel', `spd_show_speed_in_${this.getRoadSettingNameById(segment.roadType)}`);
        
    //                 let isLeftHandTraffic = this.wmeSdk.DataModel.Countries.getTopCountry().isLeftHandTraffic;
    //                 let isFwd             = segment.isAtoB;
    //                 let isRev             = segment.isBtoA;
    //                 let isTwoWay          = segment.isTwoWay;
    //                 let speedFwd          = this.getSpeed(isFwd ? (isLeftHandTraffic ? segment.revSpeedLimit : segment.fwdSpeedLimit) : null);
    //                 let speedRev          = this.getSpeed(isRev ? (isLeftHandTraffic ? segment.fwdSpeedLimit : segment.revSpeedLimit) : null);
        
    //                 let hideNoSpeed        = !this.settings.general.spdShowNoSpeed && ((speedFwd == 'N/A' && speedRev == 'N/A') || (isFwd && !isRev && speedFwd == 'N/A') || (!isFwd && isRev && speedRev == 'N/A') || (!isFwd && !isRev && !isTwoWay));
    //                 let ignoreOnRoundabout = segment.junctionId && !this.settings.general.spdShowRoundabout;
    //                 let ignoreOnUnpaved    = segment.flagAttributes.unpaved && !this.settings.general.spdShowUnpaved;
        
    //                 if (hideNoSpeed || !this.settings.roads[roadSettingId] || ignoreOnRoundabout || ignoreOnUnpaved) {
    //                     this.logDebug('This type of segment should not be loaded.', false, 'warn');
        
    //                     return;
    //                 }
        
    //                 let geometry = segment.geometry;
                    
    //                 if (!geometry || geometry.coordinates.length < 2) {
    //                     this.logDebug(`${this.getTranslation('log.invalidGeometry')} ${segment.id}.`, false, 'error');
        
    //                     return;
    //                 }
        
    //                 let minLength     = this.settings.filter.spdHideSegmentSmallerThan;
    //                 let segmentLength = this.getLength(geometry.coordinates);
        
    //                 if (minLength != null && segmentLength < minLength) {
    //                     this.logDebug('Segment length is smaller than filter. Ignoring...');
        
    //                     return;
    //                 }
        
    //                 let midpoint                = this.calculateMidpoint(geometry.coordinates, segmentLength);
    //                 let angle                   = this.calculateAngleAtMidpoint(geometry.coordinates);
    //                 let {leftPoint, rightPoint} = this.getPerpendicularPoints(midpoint, angle, 5);
        
    //                 if (isFwd && isRev && speedFwd != speedRev) {
    //                     this.wmeSdk.Map.addFeaturesToLayer({
    //                         layerName: this.layerName,
    //                         features: [
    //                             {
    //                                 type: 'Feature',
    //                                 id: `speed-${segment.id}-rev`,
    //                                 geometry: {
    //                                     type: 'Point',
    //                                     coordinates: [leftPoint[0], leftPoint[1]]
    //                                 },
    //                                 properties: {
    //                                     speed: speedRev
    //                                 },
    //                                 style: {
    //                                     icon: {
    //                                         type: 'image',
    //                                         url: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speedRev)),
    //                                         size: {
    //                                             width: 30,
    //                                             height: 30
    //                                         },
    //                                         anchor: {
    //                                             x: 15,
    //                                             y: 15
    //                                         },
    //                                         opacity: this.calculateOpacity(speedRev)
    //                                     }
    //                                 }
    //                             },
    //                             {
    //                                 type: 'Feature',
    //                                 id: `speed-${segment.id}-fwd`,
    //                                 geometry: {
    //                                     type: 'Point',
    //                                     coordinates: [rightPoint[0], rightPoint[1]]
    //                                 },
    //                                 properties: {
    //                                     speed: speedFwd
    //                                 },
    //                                 style: {
    //                                     icon: {
    //                                         type: 'image',
    //                                         url: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speedFwd)),
    //                                         size: {
    //                                             width: 30,
    //                                             height: 30
    //                                         },
    //                                         anchor: {
    //                                             x: 15,
    //                                             y: 15
    //                                         },
    //                                         opacity: this.calculateOpacity(speedFwd)
    //                                     }
    //                                 }
    //                             }
    //                         ]
    //                     });
        
    //                     // let leftFeature   = new OpenLayers.Feature.Vector(leftPoint, {speed: speedRev});
    //                     // leftFeature.style = {
    //                     //     graphic: true,
    //                     //     externalGraphic: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speedRev)),
    //                     //     graphicHeight: 30,
    //                     //     graphicWidth: 30,
    //                     //     graphicYOffset: -15,
    //                     //     graphicXOffset: -15,
    //                     //     graphicOpacity: this.calculateOpacity(speedRev)
    //                     // };
        
    //                     // let rightFeature   = new OpenLayers.Feature.Vector(rightPoint, {speed: speedFwd});
    //                     // rightFeature.style = {
    //                     //     graphic: true,
    //                     //     externalGraphic: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speedFwd)),
    //                     //     graphicHeight: 30,
    //                     //     graphicWidth: 30,
    //                     //     graphicYOffset: -15,
    //                     //     graphicXOffset: -15,
    //                     //     graphicOpacity: this.calculateOpacity(speedFwd)
    //                     // };
        
    //                     // this.layer.addFeatures([leftFeature, rightFeature]);
    //                     // this.layer.addFeatures([leftFeature, rightFeature]);
        
    //                 } else {
    //                     let speed;
        
    //                     if (isFwd && speedFwd != null) {
    //                         speed = speedFwd;
        
    //                     } else if (isRev && speedRev != null) {
    //                         speed = speedRev;
    //                     }
        
    //                     speed = isFwd ? speedFwd : speedRev;
        
    //                     this.wmeSdk.Map.addFeatureToLayer({
    //                         layerName: this.layerName,
    //                         feature: {
    //                             type: 'Feature',
    //                             id: `speed-${segment.id}`,
    //                             geometry: {
    //                                 type: 'Point',
    //                                 coordinates: [midpoint[0], midpoint[1]]
    //                             },
    //                             properties: {
    //                                 speed,
    //                             },
    //                             style: {
    //                                 icon: {
    //                                     type: 'image',
    //                                     url: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speed, isTwoWay)),
    //                                     size: {
    //                                         width: 30,
    //                                         height: 30
    //                                     },
    //                                     anchor: {
    //                                         x: 15,
    //                                         y: 15
    //                                     },
    //                                     opacity: this.calculateOpacity(speed)
    //                                 }
    //                             }
    //                         }
    //                     });
        
    //                     // let centerFeature   = new OpenLayers.Feature.Vector(midpoint, {speed});
    //                     // centerFeature.style = {
    //                     //     graphic: true,
    //                     //     externalGraphic: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speed)),
    //                     //     graphicHeight: 30,
    //                     //     graphicWidth: 30,
    //                     //     graphicYOffset: -15,
    //                     //     graphicXOffset: -15,
    //                     //     graphicOpacity: this.calculateOpacity(speed)
    //                     // };
        
    //                     // this.layer.addFeatures([centerFeature]);
    //                 }
    //             });
        
    //             this.logDebug('Update finished.');

    //             resolve();

    //         } catch (error) {
    //             this.logDebug(error, false, 'error');
                
    //             reject(error);
    //         }
    //     });
    // }

    // TODO: Remove this when SDK migration is complete
    /**
     * Toggle visibility of the display of the speed layer.
     * @param {Boolean} enabled
     */
    toggleLayerVisibility(enabled) {
        if (this.layer) {
            this.layer.setVisibility(enabled);
            
            this.logDebug(`Speed layer ${enabled ? 'enabled' : 'disabled'}.`);
        }
    }
    // TODO: SDK migration
    /**
     * Toggle visibility of the display of the speed layer.
     */
    // toggleLayerVisibility() {
    //     if (this.layer) {
    //         let enabled = this.settings.spdEnabled;

    //         this.wmeSdk.Map.setLayerVisibility({layerName: this.layerName, visibility: this.settings.spdEnabled});
            
    //         this.logDebug(`Speed layer ${enabled ? 'enabled' : 'disabled'}.`);
    //     }
    // }

    /**
     * Saves the current settings to localStorage.
     */
    saveSettings() {
        return new Promise((resolve, reject) => {
            try {
                let selectedTheme = this.getSelectedTheme();
                
                // TODO: Remove this when SDK migration is complete
                this.settings.spdEnabled = this.layerCheckbox.speedDisplay.checked;

                // TODO: SDK migration
                // this.settings.spdEnabled = this.layerSwitcherElement.checked;

                ['general', 'filter', 'roads'].forEach(group => this.updateSettingsGroup(group));

                this.settings.theme = selectedTheme?.id ? this.convertStringCaseStyle('kebab', 'camel', selectedTheme.id.replace('spd-theme-', '')) : 'default';
        
                localStorage.setItem('wmeSpeedDisplaySettings', JSON.stringify(this.settings));

                resolve();
                
                this.channel.postMessage('saved');

            } catch (error) {
                this.logDebug(error, false, 'error');
                
                reject(error);
            }
        });
    }

    /**
     * Loads the settings from localStorage or uses the provided settings to initialize the configuration.
     * @param {Object} [savedSettings] - The saved settings object to load; if not provided, it will load from localStorage.
     */
    loadSettings(savedSettings) {
        savedSettings = savedSettings ?? JSON.parse(localStorage.getItem('wmeSpeedDisplaySettings'));

        if (!savedSettings)
            return;

        // To ensure that if it enters a new settings, it doesn't discard them when loading the old settings
        Object.entries(savedSettings).forEach(([setting, value]) => {
            if (typeof value == 'object' && value != null) {
                if (!this.settings[setting])
                    this.settings[setting] = {};
                
                Object.entries(value).forEach(([subSetting, subValue]) => {
                    this.settings[setting][subSetting] = subValue ?? true;
                });
            } else {
                // If the saved theme no longer exists, select the default
                if (setting == 'theme' && !this.theme.includes(value))
                    value = 'default';
                
                this.settings[setting] = value ?? true;
            }
        });
    }

    /**
     * Resets the speed display settings to default.
     */
    async resetSettings() {
        localStorage.removeItem('wmeSpeedDisplaySettings');

        this.zIndex.warnDisplayed = false;

        this.defineSettings();
        this.updateSettingsElementsStates();
        this.resetZindex();
        this.displayZIndexWarning();
        await this.debounce.saveSettings();
        this.preUpdateMapDisplay();
    }

    /**
     * Updates the specified settings group by retrieving values from the corresponding HTML elements.
     * @param {string} group - The settings group to update (e.g., 'general', 'filter', 'roads').
     */
    updateSettingsGroup(group) {
        Object.entries(this.settings[group]).forEach(([setting, _]) => {
            let id      = this.convertStringCaseStyle('camel', 'kebab', setting);
            let element = document.getElementById(id);

            if (!element) {
                this.logDebug(`Setting field not found: ${id}`, false, 'warn');

                return;
            }

            let value;
            
            if (['range', 'number'].includes(element.type)) {
                value = element.value != null ? parseFloat(element.value) : element.value;
                
            } else {
                value = element.checked != undefined ? element.checked : element.value;
            }

            this.settings[group][setting] = value;
        });
    }

    /**
     * Adds a settings tab to the user interface with options to configure the speed display settings.
     */
    addSettingsTab() {
        return new Promise(async (resolve, reject) => {
            try {
                let {tabLabel, tabPane} = await this.wmeSdk.Sidebar.registerScriptTab();
                let speedUnit           = this.wmeSdk.Settings.getUserSettings().isImperial ? I18n.translate('measurements.speed.mi', {speed: ''}) : I18n.translate('measurements.speed.km', {speed: ''});

                tabLabel.innerHTML = this.getTranslation('name');

                let tabPaneHtml = `
                    <div class="segment sidebar-column" style="margin: -15px;">
                        <wz-section-header headline="${this.getTranslation('name')}" size="section-header2" back-button="false">
                            <svg slot="icon" xmlns="http://www.w3.org/2000/svg" width="22px" height="22px" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 1.08 1.08" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
                                <path fill="var(--leading_icon, #90959c)" d="M0.54 0c0.3,0 0.54,0.24 0.54,0.54 0,0.3 -0.24,0.54 -0.54,0.54 -0.3,0 -0.54,-0.24 -0.54,-0.54 0,-0.3 0.24,-0.54 0.54,-0.54zm-0.18 0.74c0.09,0 0.13,-0.05 0.13,-0.14 0,-0.08 -0.04,-0.13 -0.12,-0.13 -0.01,0 -0.03,0 -0.05,0.01l0.01 -0.06 0.14 0 0 -0.07 -0.2 0 -0.02 0.19 0.07 0.03c0.01,-0.02 0.02,-0.03 0.05,-0.03 0.03,0 0.06,0.02 0.06,0.06 0,0.05 -0.03,0.07 -0.07,0.07 -0.02,0 -0.05,-0.01 -0.08,-0.03l-0.03 0.07c0.03,0.02 0.07,0.03 0.11,0.03zm0.33 -0.33c0.06,0 0.08,0.04 0.08,0.13 0,0.09 -0.03,0.13 -0.08,0.13 -0.05,0 -0.07,-0.04 -0.07,-0.13 0,-0.09 0.02,-0.13 0.07,-0.13zm0 0.33c0.1,0 0.14,-0.07 0.14,-0.2 0,-0.13 -0.04,-0.2 -0.14,-0.2 -0.09,0 -0.14,0.07 -0.14,0.2 0,0.13 0.05,0.2 0.14,0.2zm-0.15 -0.64c0.24,0 0.44,0.2 0.44,0.44 0,0.24 -0.2,0.44 -0.44,0.44 -0.24,0 -0.44,-0.2 -0.44,-0.44 0,-0.24 0.2,-0.44 0.44,-0.44z"/>
                            </svg>
                        </wz-section-header>

                        <div class="segment-edit-section">                  
                            <wz-alerts-group multiline="true" id="spd-alert-group" class="alertsGroup--cx2Lh ${Object.values(this.settings.alertDismissed).every(value => value == true) ? 'd-none' : ''}" style="padding: 0; margin: 15px 15px 15px 15px;"></wz-alerts-group>

                            <wz-tabs>
                                <wz-tab is-active="true" label="${this.getTranslation('title.general')}" tooltip="${this.getTranslation('title.general')}">
                                    <div style="display: flex; flex-direction: column; gap: 15px;">
                                        <div>
                                            <wz-label html-for="">${this.getTranslation('label.displaySpeeds')}</wz-label>

                                            <wz-toggle-switch name="spd-display-speeds" checked="${this.settings.spdEnabled}" id="spd-display-speeds" tabindex="0" value="true" disabled="${!this.layerCheckbox.roadGroup.checked}">
                                                <input type="checkbox" name="spd-display-speeds" value="true" style="display: none; visibility: hidden;">
                                            </wz-toggle-switch>
                                        </div>
                                        
                                        <div>
                                            <wz-checkbox checked="${this.settings.general.spdShowNoSpeed}" indeterminate="false" disabled="false" id="spd-show-no-speed" value="true">${this.getTranslation('label.showNoSpeed')}<input type="checkbox" value="true" style="display: none; visibility: hidden;"></wz-checkbox>
                                            <wz-checkbox checked="${this.settings.general.spdShowRoundabout}" indeterminate="false" disabled="false" id="spd-show-roundabout" value="true">${this.getTranslation('label.showOnRoundabout')}<input type="checkbox" value="true" style="display: none; visibility: hidden;"></wz-checkbox>
                                            <wz-checkbox checked="${this.settings.general.spdShowUnpaved}" indeterminate="false" disabled="false" id="spd-show-unpaved" value="true">${this.getTranslation('label.showOnUnpaved')}<input type="checkbox" value="true" style="display: none; visibility: hidden;"></wz-checkbox>
                                        </div>

                                        <div>
                                            <wz-label html-for="">
                                                ${this.getTranslation('label.maxZoom')} <span id="spd-max-zoom-value">${this.settings.general.spdMaxZoom}</span>
                                            </wz-label>

                                            <input type="range" id="spd-max-zoom" min="12" max="22" step="1" value="${this.settings.general.spdMaxZoom}">

                                            <div class="spd-info-message" style="display: flex; justify-content: space-between; width: 100%;">
                                                <span>${this.getTranslation('zoomOut')}</span><span>${this.getTranslation('zoomIn')}</span>
                                            </div>
                                        </div>

                                        <div>
                                            <wz-label html-for="">
                                                ${this.getTranslation('label.opacity')} <span id="spd-filter-opacity-value">${this.settings.general.spdFilterOpacity}</span>
                                            </wz-label>

                                            <input type="range" id="spd-filter-opacity" min="0" max="1" step="0.1" value="${this.settings.general.spdFilterOpacity}">

                                            <div class="spd-info-message" style="display: flex; justify-content: space-between; width: 100%;">
                                                <span>${this.getTranslation('label.min')} 0</span><span>${this.getTranslation('label.max')} 1</span>
                                            </div>
                                        </div>
                                        
                                        <div class="segment-level-select">
                                            <div class="label-container">
                                                <wz-label html-for="">${this.getTranslation('label.zIndex')}</wz-label>
                                                <wz-button color="text" size="sm" disabled="false" id="spd-btn-reset-z-index">${this.getTranslation('reset')}</wz-button>
                                            </div>

                                            <div class="select-container">
                                                <wz-button color="clear-icon" disabled="false" id="spd-btn-zindex-decrease">
                                                    <i class="w-icon w-icon-minus"></i>
                                                </wz-button>
                                                
                                                <wz-text-input size="sm" type="number" id="spd-layer-zindex" min="${this.zIndex.min}" max="${this.zIndex.max}" value="${this.settings.general.spdLayerZindex}" disabled="false" style="width: 100%;">
                                                    <input style="display: none; visibility: hidden;">
                                                </wz-text-input>
                                                
                                                <wz-button color="clear-icon" disabled="false" id="spd-btn-zindex-increase">
                                                    <i class="w-icon w-icon-plus"></i>
                                                </wz-button>
                                            </div>
                                        </div>
                                    </div>
                                </wz-tab>

                                <wz-tab is-active="false" label="${this.getTranslation('title.roadTypes')}" tooltip="${this.getTranslation('title.roadTypes')}">
                                    <div>
                                        <wz-label html-for="" style="margin:0">${this.getTranslation('title.showOnRoadType')}</wz-label>`;

                Object.entries(this.segmentsCategories).forEach(segmentCategory => {
                    tabPaneHtml += `<wz-menu-title style="padding:0;">${this.wmeTranslations.segment.categories[segmentCategory[0]]}</wz-menu-title>`;

                    Object.values(segmentCategory[1]).forEach(roadType => {
                        let id        = this.convertStringCaseStyle('snake', 'kebab', `spd_show_speed_in_${roadType.name}`);
                        let settingId = this.convertStringCaseStyle('kebab', 'camel', id);
                        let checked   = this.settings.roads[settingId];

                        tabPaneHtml += `<wz-checkbox checked="${checked}" indeterminate="false" disabled="false" id="${id}" value="true">${this.wmeTranslations.segment.road_types[roadType.id]}<input type="checkbox" value="true" style="display: none; visibility: hidden;"></wz-checkbox>`;
                    });
                });

                tabPaneHtml += `
                                    </div>
                                </wz-tab>

                                <wz-tab is-active="false" label="${this.getTranslation('title.filter')}" tooltip="${this.getTranslation('title.filter')}">
                                    <div style="display: flex; flex-direction: column; gap: 15px;">
                                        <div>
                                            <wz-label html-for="">${this.getTranslation('label.hideShorterSegments')}</wz-label>

                                            <div class="speedLimit--ZIWbK" style="margin-bottom: 0">
                                                <wz-text-input size="sm" type="number" id="spd-hide-segment-smaller-than"  min="0" max="9999" value="${this.settings.filter.spdHideSegmentSmallerThan}" disabled="false" class="speedLimitInput--aWKs1">
                                                    <input style="display: none; visibility: hidden;">
                                                </wz-text-input>

                                                <span class="spd-filter-distance-unit">${this.wmeSdk.Settings.getUserSettings().isImperial ? this.wmeTranslations.units_short.feet : this.wmeTranslations.units_short.meters}</span>
                                            </div>
                                        </div>
                                        
                                        <div>
                                            <wz-label html-for="">${this.getTranslation('label.speedFilter')}</wz-label>
                                            <div class="speedLimit--ZIWbK">
                                                <div class="directionLabel--U8iep">${this.getTranslation('label.min')}</div>

                                                <wz-text-input size="sm" type="number" id="spd-min-speed" min="0" max="999" value="${this.settings.filter.spdMinSpeed}" disabled="false" class="speedLimitInput--aWKs1">
                                                    <input style="display: none; visibility: hidden;">
                                                </wz-text-input>

                                                <span class="spd-filter-speed-unit">${speedUnit}</span>
                                            </div>

                                            <div class="speedLimit--ZIWbK"  style="margin-bottom: 0">
                                                <div class="directionLabel--U8iep">${this.getTranslation('label.max')}</div>

                                                <wz-text-input size="sm" type="number" id="spd-max-speed" min="0" max="999" value="${this.settings.filter.spdMaxSpeed}" disabled="false" class="speedLimitInput--aWKs1">
                                                    <input style="display: none; visibility: hidden;">
                                                </wz-text-input>

                                                <span class="spd-filter-speed-unit">${speedUnit}</span>
                                            </div>
                                        </div>
                                    </div>
                                </wz-tab>

                                <wz-tab is-active="false" label="${this.getTranslation('title.appearence')}" tooltip="${this.getTranslation('title.appearence')}">
                                    <div style="display: flex; flex-direction: column; gap: 15px;">
                                        <div class="drives-container">
                                            <div class="drive-list">`;
                
                this.theme.forEach(theme => {
                    tabPaneHtml += `
                                                <wz-card id="spd-theme-${this.convertStringCaseStyle('camel', 'kebab', theme)}" selected="${this.settings.theme == theme}" elevation-on-hover="4" class="list-item-card drive-list-item">
                                                    <div class="list-item-card-layout">
                                                        ${this.getSpeedIcon(60, theme == 'uk', theme)}

                                                        <div class="list-item-card-info">
                                                            <div class="list-item-card-title">${this.getTranslation('theme.' + theme)}</div>
                                                        </div>
                                                    </div>
                                                </wz-card>`;
                });
                
                tabPaneHtml += `
                                            </div>
                                        </div>
                                    </div>
                                </wz-tab>
                            </wz-tabs>
                            
                            <div class="form-group">
                                <div style="display: flex; flex-direction: column; gap: 15px; padding: 0 15px;">
                                    <wz-button color="secondary" id="spd-reset-default-settings">${this.getTranslation('btn.resetSettings')}</wz-button>`;

                if (this.debugMode) {
                    tabPaneHtml += `
                                    <wz-button color="primary" id="btn-spd-update-settings-tab">${this.getTranslation('btn.updateSettingsTab')}</wz-button>
                                    <wz-button color="secondary" id="btn-spd-test">Test something</wz-button>`;
                }

                tabPaneHtml += `
                                    <wz-button color="text" size="sm" id="btn-spd-open-changelog-dialog" title="${this.getTranslation('viewChangelog')}"><b>${this.getTranslation('name')}</b> v${this.version}</wz-button>

                                    <a href="https://www.waze.com/discuss/t/script-wme-speed-display/373172" target="_blank" style="width: 100%">
                                        <wz-button color="text" size="sm" title="${this.getTranslation('title.seeOnDiscuss')}" style="width: 100%">${this.getTranslation('btn.seeOnDiscuss')}</wz-button>
                                    </a>

                                    <a href="https://discord.gg/T6cDTGZj" target="_blank" style="width: 100%">
                                        <wz-button color="text" size="sm" title="${this.getTranslation('title.seeOnDiscord')}" style="width: 100%">${this.getTranslation('btn.seeOnDiscord')}</wz-button>
                                    </a>

                                    <a href="https://www.waze.com/pt-BR/user/editor/luan_tavares_127" target="_blank" style="width: 100%">
                                        <wz-button color="text" size="sm" title="${this.getTranslation('title.scriptDevBy')}" style="width: 100%">${this.getTranslation('btn.scriptDevBy')}</wz-button>
                                    </a>
                                </div>
                            </div>
                        </div>
                    </div>`;

                tabPane.innerHTML = tabPaneHtml;

                if (!this.settings.alertDismissed.infoToggleVisibility)
                    this.addAlert('info-toggle-visibility', this.getTranslation('alertMessage.toggleVisibility'));
                
                if (!this.zIndex.warnDisplayed)
                    this.displayZIndexWarning();

                this.displaySpeedsSwitch = document.getElementById('spd-display-speeds');
                
                this.attachSettingsListeners();

                this.logDebug('Settings tab added.');

                resolve();

            } catch (error) {
                this.logDebug(error, false, 'error');
                
                reject(error);
            }
        });
    }

    /**
     * Updates the settings tab by removing the old one and adding a new one with updated settings.
     */
    async updateSettingsTab() {
        this.logDebug('Updating settings tab...');

        this.detachSettingsListeners();
        this.defineTranslations();

        this.wmeSdk.Sidebar.removeScriptTab();

        await this.addSettingsTab();
        this.updateSettingsElementsStates();
        
        if (!this.zIndex.warnDisplayed)
            this.displayZIndexWarning();
    }

    /**
     * Updates the state of the settings elements (checkboxes, inputs) based on the current settings.
     */
    updateSettingsElementsStates() {
        // TODO: Remove this when SDK migration is complete
        this.layerCheckbox.speedDisplay.checked = this.settings.spdEnabled;
        
        // TODO: SDK migration
        // this.layerSwitcherElement.checked = this.settings.spdEnabled;

        if (this.displaySpeedsSwitch) {
            this.displaySpeedsSwitch.checked  = this.settings.spdEnabled;
            this.displaySpeedsSwitch.disabled = !this.layerCheckbox.roadGroup.checked;
        }
        
        Object.entries(this.settings.general).forEach(([setting, value]) => {
            let id      = this.convertStringCaseStyle('camel', 'kebab', setting);
            let element = document.getElementById(id);

            if (!element)
                return;

            switch (element.type) {
                case 'number':
                    element.value = (value == null || value == 0) ? '' : value;

                    break;
                    
                case 'range':
                    element.value                                    = value;
                    document.getElementById(`${id}-value`).innerText = value;

                    break;

                default:
                    element.checked = value;
            }
        });

        document.querySelectorAll('[id^="spd-show-speed-in-"]').forEach(input => {
            let settingId = this.convertStringCaseStyle('kebab', 'camel', input.id);

            input.checked = this.settings.roads[settingId];
        });

        Object.entries(this.settings.filter).forEach(([setting, value]) => {
            let id      = this.convertStringCaseStyle('camel', 'kebab', setting);
            let element = document.getElementById(id);

            if (!element)
                return;

            element.value = (value == null || value == 0) ? '' : value;
        });

        this.selectThemeCard(document.querySelector(`wz-card#spd-theme-${this.convertStringCaseStyle('camel', 'kebab', this.settings.theme)}`));
    }

    /**
     * Adds a global keyboard shortcut listener and add the script shortcut on shortcuts dialog.
     */
    addShortcut() {
        this.wmeSdk.Shortcuts.createShortcut({
            callback: this.shortcutCallback.bind(this),
            description: this.getTranslation('label.toggleLayerShortcut'),
            shortcutId: 'ks-wme-speed-display',
            shortcutKeys: 'AS+s',
        });
    }

    /**
     * Toggles the layer switcher speed display when shortcut is pressed.
     */
    shortcutCallback() {
        // TODO: Remove this when SDK migration is complete
        this.layerCheckbox.speedDisplay.click();
        
        this.displaySpeedsSwitch.checked = this.layerCheckbox.speedDisplay.checked;
        // TODO: Remove this when SDK migration is complete - end
        
        // TODO: SDK migration
        // this.layerSwitcherElement.click();

        // this.displaySpeedsSwitch.checked = this.layerSwitcherElement.checked;
        // TODO: SDK migration - end
    }

    // TODO: Remove this when SDK migration is complete
    /**
     * Calculates the real midpoint of a segment, considering curves.
     * @param {OpenLayers.Geometry.LineString} geometry Segment geometry.
     * 
     * @returns {OpenLayers.Geometry.Point} Real midpoint.
     */
    calculateMidpoint(geometry) {
        let length           = geometry.getLength();
        let cumulativeLength = 0;

        for (let i = 0; i < geometry.components.length - 1; i++) {
            let start         = geometry.components[i];
            let end           = geometry.components[i + 1];
            let segmentLength = start.distanceTo(end);

            if (cumulativeLength + segmentLength >= length / 2) {
                let ratio = (length / 2 - cumulativeLength) / segmentLength;

                return new OpenLayers.Geometry.Point(
                    start.x + ratio * (end.x - start.x),
                    start.y + ratio * (end.y - start.y)
                );
            }

            cumulativeLength += segmentLength;
        }

        return geometry.getCentroid();
    }
    // TODO: SDK migration
    /**
     * Calculates the real midpoint of a segment, considering curves.
     * @param {Array} coordinates - Array of [longitude, latitude] pairs representing the segment geometry.
     *
     * @returns {Array} The midpoint as an array [longitude, latitude].
     */
    // calculateMidpoint(coordinates) {
    //     let totalLength      = this.getLength(coordinates);
    //     let cumulativeLength = 0;
    
    //     for (let i = 0; i < coordinates.length - 1; i++) {
    //         let start         = coordinates[i];
    //         let end           = coordinates[i + 1];
    //         let segmentLength = this.getDistance(start, end);
    
    //         if (cumulativeLength + segmentLength >= totalLength / 2) {
    //             let ratio = (totalLength / 2 - cumulativeLength) / segmentLength;
    
    //             return [
    //                 start[0] + ratio * (end[0] - start[0]),
    //                 start[1] + ratio * (end[1] - start[1])
    //             ];
    //         }
    
    //         cumulativeLength += segmentLength;
    //     }
    
    //     // If something goes wrong, return a simple midpoint as a fallback
    //     let firstPoint = coordinates[0];
    //     let lastPoint  = coordinates[coordinates.length - 1];
    
    //     return [
    //         (firstPoint[0] + lastPoint[0]) / 2,
    //         (firstPoint[1] + lastPoint[1]) / 2
    //     ];
    // }

    /**
     * Generates an SVG icon with the speeds.
     * @param {String} speed The speed.
     * @param {Boolean} [sameSpeedBothWays] It is the segment two ways with same speed? (default: false)
     * @param {String} [theme] Force a theme. (default: this.settings.theme)
     *
     * @returns {String} SVG in string format.
     */
    getSpeedIcon(speed, sameSpeedBothWays = false, theme) {
        let icon;

        theme = theme ?? this.settings.theme;

        switch (theme) {
            case 'altViennaConv':
                icon = `<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50">
                        <circle cx="25" cy="25" r="21" fill="#FBE353" stroke="#FF5251" stroke-width="5"/>
                        <text x="25" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="#1F2125" text-anchor="middle">${speed}</text>
                    </svg>`;
                
                break;
                
            case 'japan':
                icon = `<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50">
                        <circle cx="25" cy="25" r="21" fill="white" stroke="#FF5251" stroke-width="5"/>
                        <text x="25" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="#0074E3" text-anchor="middle">${speed}</text>
                    </svg>`;
                
                break;
                
            case 'sacu':
                icon = `<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50">
                        <circle cx="25" cy="25" r="21" fill="#235AA9" stroke="#FF5251" stroke-width="5"/>
                        <text x="25" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="white" text-anchor="middle">${speed}</text>
                    </svg>`;
                
                break;

            case 'uk':
                if (sameSpeedBothWays && [60, 70].includes(speed)) {
                    icon = `<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50">
                            <circle cx="25" cy="25" r="21" fill="white" stroke="#1F2125" stroke-width="2"/>
                            <line x1="10" y1="40" x2="40" y2="10" stroke="#1F2125" stroke-width="9"/>
                        </svg>`;

                } else {
                    icon = `<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50">
                            <circle cx="25" cy="25" r="21" fill="white" stroke="#FF5251" stroke-width="5"/>
                            <text x="25" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="#1F2125" text-anchor="middle">${speed}</text>
                        </svg>`;
                }
                
                break;

            default:
                icon = `<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 50 50">
                        <circle cx="25" cy="25" r="21" fill="white" stroke="#FF5251" stroke-width="5"/>
                        <text x="25" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="#1F2125" text-anchor="middle">${speed}</text>
                    </svg>`;
        }
        
        return icon;
    }

    /**
     * Calculates the opacity of a speed icon based on speed filter settings.
     * @param {number} speed - The speed value to evaluate.
     * 
     * @returns {number} Opacity value (1 for visible, this.settings.general.spdFilterOpcaity for dimmed) depending on whether the speed falls within the defined min and max speed range.
     */
    calculateOpacity(speed) {
        let minSpeed = parseInt(this.settings.filter.spdMinSpeed, 10);
        let maxSpeed = parseInt(this.settings.filter.spdMaxSpeed, 10);
        let validMin = isNaN(minSpeed) || minSpeed <= 0 || speed >= minSpeed;
        let validMax = isNaN(maxSpeed) || maxSpeed <= 0 || speed <= maxSpeed;
        let opacity  = this.settings.general.spdFilterOpacity < 0.1 ? 0.01 : this.settings.general.spdFilterOpacity;
    
        return validMin && validMax ? 1 : opacity;
    }

    // TODO: Remove this when SDK migration is complete
    /**
     * Calculates the angle at the midpoint of a geometry based on its components.
     * @param {Object} geometry - The geometry with points.
     * 
     * @returns {number} The angle in radians at the midpoint.
     */
    calculateAngleAtMidpoint(geometry) {
        let totalLength      = geometry.getLength();
        let cumulativeLength = 0;

        for (let i = 0; i < geometry.components.length - 1; i++) {
            let start = geometry.components[i];
            let end   = geometry.components[i + 1];

            if (!start || !end) continue;

            let segmentLength = start.distanceTo(end);

            if (cumulativeLength + segmentLength >= totalLength / 2)
                return Math.atan2(end.y - start.y, end.x - start.x);

            cumulativeLength += segmentLength;
        }

        if (geometry.components.length >= 2) {
            let firstPoint = geometry.components[0];
            let lastPoint  = geometry.components[geometry.components.length - 1];

            return Math.atan2(lastPoint.y - firstPoint.y, lastPoint.x - firstPoint.x);
        }

        this.logDebug(this.spdTranslations.log.insufficientGeometryAngleCalc, false, 'error');

        return 0;
    }
    // TODO: SDK migration
    /**
     * Calculates the angle at the midpoint of a geometry based on its components.
     * @param {Array} coordinates - The geometry coordinates.
     * 
     * @returns {Number} The angle in radians at the midpoint.
     */
    // calculateAngleAtMidpoint(coordinates) {
    //     let totalLength      = this.getLength(coordinates);
    //     let cumulativeLength = 0;

    //     for (let i = 0; i < coordinates.length - 1; i++) {
    //         let start = coordinates[i];
    //         let end   = coordinates[i + 1];

    //         if (!start || !end) continue;

    //         let segmentLength = this.getDistance(start, end);

    //         if (cumulativeLength + segmentLength >= totalLength / 2)
    //             return Math.atan2(end.y - start.y, end.x - start.x);

    //         cumulativeLength += segmentLength;
    //     }

    //     if (coordinates.length >= 2) {
    //         let firstPoint = coordinates[0];
    //         let lastPoint  = coordinates[coordinates.length - 1];

    //         return Math.atan2(lastPoint.y - firstPoint.y, lastPoint.x - firstPoint.x);
    //     }

    //     this.logDebug('Insufficient geometry for angle calculation.', false, 'error');

    //     return 0;
    // }

    /**
     * Calculates the distance in meters between two geographic coordinates using the Haversine formula.
     * @param {Array} startPoint - The starting point [longitude, latitude].
     * @param {Array} endPoint - The ending point [longitude, latitude].
     *
     * @returns {Number} The distance in meters between the two points.
     */
    getDistance(startPoint, endPoint) {
        let earthRadius      = 6371000;
        let latitude1        = this.toRadians(startPoint[1]);
        let latitude2        = this.toRadians(endPoint[1]);
        let deltaLatitude    = this.toRadians(endPoint[1] - startPoint[1]);
        let deltaLongitude   = this.toRadians(endPoint[0] - startPoint[0]);
        let haversineFormula = Math.sin(deltaLatitude / 2) * Math.sin(deltaLatitude / 2) + Math.cos(latitude1) * Math.cos(latitude2) * Math.sin(deltaLongitude / 2) * Math.sin(deltaLongitude / 2);
        let centralAngle     = 2 * Math.atan2(Math.sqrt(haversineFormula), Math.sqrt(1 - haversineFormula));
    
        return earthRadius * centralAngle;
    }

    /**
     * Converts an angle from degrees to radians.
     * @param {Number} angle - The angle in degrees.
     *
     * @returns {Number} The angle in radians.
     */
    toRadians(angle) {
        return angle * (Math.PI / 180);
    }

    /**
     * Returns two perpendicular points (left and right) from a midpoint at a given angle and distance, adjusted by map zoom.
     * @param {Object} midpoint - Central point with `x` and `y` coordinates.
     * @param {Number} angle - Angle in radians from the reference direction.
     * @param {Number} baseDistance - Base distance from the midpoint before zoom adjustment.
     * 
     * @returns {Object} {leftPoint, rightPoint} - Perpendicular points to the left and right.
     */
    getPerpendicularPoints(midpoint, angle, baseDistance) {
        let currentZoom      = this.wmeSdk.Map.getZoomLevel();
        let referenceZoom    = 19;
        let scaleFactor      = Math.pow(2, referenceZoom - currentZoom);
        let adjustedDistance = baseDistance * scaleFactor;

        let angleLeft  = angle + Math.PI / 2;
        let angleRight = angle - Math.PI / 2;

        // TODO: Remove this when SDK migration is complete
        let leftPoint = new OpenLayers.Geometry.Point(
            midpoint.x + adjustedDistance * Math.cos(angleLeft),
            midpoint.y + adjustedDistance * Math.sin(angleLeft)
        );

        let rightPoint = new OpenLayers.Geometry.Point(
            midpoint.x + adjustedDistance * Math.cos(angleRight),
            midpoint.y + adjustedDistance * Math.sin(angleRight)
        );
        // TODO: Remove this when SDK migration is complete - end

        // TODO: SDK migration
        // let leftPoint = [
        //     midpoint.x + adjustedDistance * Math.cos(angleLeft),
        //     midpoint.y + adjustedDistance * Math.sin(angleLeft)
        // ];

        // let rightPoint = [
        //     midpoint.x + adjustedDistance * Math.cos(angleRight),
        //     midpoint.y + adjustedDistance * Math.sin(angleRight)
        // ];
        // TODO: SDK migration -end

        return {
            leftPoint,
            rightPoint
        };
    }

    /**
     * Returns speed in mph/kmh or 'N/A'.
     * @param {Number} speed The speed value in kilometers per hour (km/h) to be formatted.
     * 
     * @returns {(Number|String)} The speed.
     */
    getSpeed(speed) {
        if (!speed)
            return 'N/A';

        return this.wmeSdk.Settings.getUserSettings().isImperial ? Math.round(speed * 0.621371) : speed;
    }

    /** 
     * Returns length in feet (rounded) if imperial units are preferred; otherwise, returns meters. 
     * @param {Array} coordinates - The length value in meters to be converted.
     * @param {Boolean} [forceMeters] - If needs to force results in meters.
     *
     * @returns {Number} The converted length in feet or the original length in meters.
     */
    getLength(coordinates, forceMeters = false) {
        let totalDistance = 0;
    
        // Iterate over the coordinates and add the distance between consecutive points
        for (let i = 0; i < coordinates.length - 1; i++) {
            let pointA = {
                lat: coordinates[i][1],
                lng: coordinates[i][0]
            };

            let pointB = {
                lat: coordinates[i + 1][1],
                lng: coordinates[i + 1][0]
            };
    
            totalDistance += this.calculateDistance(pointA, pointB);
        }
    
        return this.wmeSdk.Settings.getUserSettings().isImperial && !forceMeters ? Math.round(totalDistance * 3.28084) : totalDistance;
    }

    /**
     * Calculates the distance between two points using the Haversine formula.
     * @param {Array} pointA The first point, containing latitude (lat) and longitude (lng).
     * @param {Array} pointB The second point, containing latitude (lat) and longitude (lng).
     * @returns 
     */
    calculateDistance(pointA, pointB) {
        let earthRadius = 6371e3;
        let latitudeA   = pointA.lat * Math.PI / 180;
        let latitudeB   = pointB.lat * Math.PI / 180;
    
        // Calculate the differences in coordinates
        let deltaLatitude  = (pointB.lat - pointA.lat) * Math.PI / 180;
        let deltaLongitude = (pointB.lng - pointA.lng) * Math.PI / 180;
    
        // Haversine formula
        let haversineComponent = Math.sin(deltaLatitude / 2) * Math.sin(deltaLatitude / 2) + Math.cos(latitudeA) * Math.cos(latitudeB) * Math.sin(deltaLongitude / 2) * Math.sin(deltaLongitude / 2);
        let angularDistance    = 2 * Math.atan2(Math.sqrt(haversineComponent), Math.sqrt(1 - haversineComponent));
    
        // Calculate the distance in meters
        let distance = earthRadius * angularDistance;

        return distance;
    }

    /**
     * Makes a "dramatic" pause in the code.
     * @param {Number} ms Pause time in milliseconds.
     */
    async sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }

    /**
     * Returns a function with delay.
     * @param {Object} func Function that will be called with delay.
     * @param {Number} [timeout] Delay time in milliseconds. (default: 300)
     *
     * @returns {Function} Function
     */
    debounce(func, timeout = 300) {
        let promise = null;
        let timer;
    
        return (...args) => {
            clearTimeout(timer);
    
            return new Promise((resolve, reject) => {
                timer = setTimeout(async () => {
                    try {
                        promise    = func.apply(this, args);
                        let result = await promise;

                        resolve(result);
                        
                    } catch (error) {
                        reject(error);
                    }
                }, timeout);
            });
        };
    }

    /**
     * Converts a string from one case style to another (camel, snake, kebab).
     * @param {String} fromType - The original string case ('camel', 'snake', or 'kebab').
     * @param {String} toType - The target string case ('camel', 'snake', or 'kebab').
     * @param {String} string - The string to be converted.
     * 
     * @returns {String} The converted string.
     */
    convertStringCaseStyle(fromType, toType, string) {
        if (fromType == toType)
            return string;

        let conversionMap = {
            camel: {
                kebab: str => str.match(/[A-Z]?[a-z]+|[0-9]+/g).join('-').toLowerCase(),
                snake: str => str.match(/[A-Z]?[a-z]+|[0-9]+/g).join('_').toLowerCase()
            },
            snake: {
                kebab: str => str.replace(/_/g, '-'),
                camel: str => str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase())
            },
            kebab: {
                camel: str => str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase()),
                snake: str => str.replace(/-/g, '_')
            }
        };

        return conversionMap[fromType]?.[toType]?.(string) || string;
    }

    /**
     * Retrieves the road setting name by its ID from the segments categories.
     * @param {String} id - The ID of the road setting.
     * 
     * @returns {(String|null)} The name of the road setting if found, otherwise null.
     */
    getRoadSettingNameById(id) {
        for (let category of Object.values(this.segmentsCategories)) {
            let segment = category.find(item => item.id == id);

            if (segment)
                return segment.name;
        }

        // Returns null if ID is not found
        return null;
    }

    /**
     * Logs a debug message to the console if debug mode is enabled or forceMessage is true.
    * @param {String} message - The message to log.
    * @param {boolean} [forceMessage] - Whether to log the message regardless of the debug mode setting.
    * @param {String} [type] - The type of message ('warn', or 'error'). Default is 'log'.
     */
    logDebug(message, forceMessage = false, type) {
        if (this.debugMode || forceMessage)
            (console[type] || console.log)(`[WME Speed Display v${this.version}]: ${message}`);
    }

    // TODO: Remove this when SDK migration is complete
    /**
     * Adds a checkbox to the layer switcher to toggle the speed display layer visibility.
     */
    addLayerCheckbox() {
        let houseNumbersCheckbox     = document.getElementById('layer-switcher-item_house_numbers');
        this.layerCheckbox.roadGroup = document.getElementById('layer-switcher-group_road');

        if (!houseNumbersCheckbox) {
            this.logDebug('The "House Numbers" checkbox was not found. Trying again...', false, 'warn');

            setTimeout(() => this.addLayerCheckbox(), 1000);

            return;
        }

        let layerItem       = document.createElement('li');
        layerItem.innerHTML = `
            <div class="layer-selector">
                <wz-checkbox id="layer-switcher-item_speed_display" checked="${this.settings.spdEnabled}" disabled="${!this.layerCheckbox.roadGroup.checked}">
                    <div class="layer-selector-container" title="WME ${this.getTranslation('name')}">${this.getTranslation('label.displaySpeeds')}</div>
                </wz-checkbox>
            </div>`;

        houseNumbersCheckbox.closest('li').insertAdjacentElement('afterend', layerItem);

        this.layerCheckbox.speedDisplay = document.getElementById('layer-switcher-item_speed_display');

        if (!this.layerCheckbox.speedDisplay)
            return;

        this.layerCheckbox.speedDisplay.addEventListener('change', this.onSpeedDisplayCheckboxChange.bind(this));
        this.layerCheckbox.roadGroup.addEventListener('change', this.onLayerSwithcerGroupRoadChange.bind(this));

        this.toggleLayerVisibility(this.layerCheckbox.roadGroup.checked && this.settings.spdEnabled);
    }

    /**
     * Initializes settings from localStorage or sets default values.
     */
    defineSettings() {
        let localSettings = localStorage.getItem('wmeSpeedDisplaySettings');
        localSettings     = localSettings ? JSON.parse(localSettings) : null;

        this.settings = {
            spdEnabled: true,
            alertDismissed: {
                infoToggleVisibility: false,
                infoZindex: false
            },
            theme: 'default',
            general: {
                spdShowNoSpeed: true,
                spdShowRoundabout: true,
                spdShowUnpaved: true,
                spdMaxZoom: 18,
                spdLayerZindex: this.zIndex.min,
                spdFilterOpacity: 0.2
            },
            roads: {},
            filter: {
                spdHideSegmentSmallerThan: 0,
                spdMinSpeed: 0,
                spdMaxSpeed: 0
            }
        };

        Object.values(this.segmentsCategories).forEach(category => {
            Object.values(category).forEach(roadType => {
                let settingId = this.convertStringCaseStyle('snake', 'camel', `spd_show_speed_in_${roadType.name}`);
                
                this.settings.roads[settingId] = true;
            });
        });

        if (localSettings)
            this.loadSettings(localSettings);
    }

    /**
     * Checks if the plugin version changed and displays the changelog if necessary.
     */
    checkVersionAndShowChangelog() {
        this.logDebug('Checking plugin version.');
        
        let localSpdVersion = JSON.parse(localStorage.getItem('wmeSpeedDisplayVersion'));

        if (localSpdVersion == null || localSpdVersion != this.version) {
            if (this.needResetSettings && !this.debugMode)
                this.resetSettings();
        
            this.hideSpeedDisplayDialog();
            this.openChangelogDialog();

            localStorage.setItem('wmeSpeedDisplayVersion', JSON.stringify(this.version));
        }
    }
    
    /**
     * Opens changelog dialog.
     */
    openChangelogDialog() {
        this.showSpeedDisplayDialog(`${this.getTranslation('changelog')} ${this.getTranslation('name')} v${this.version}`, this.getTranslation('changelogMessage'), null, `<a href="https://gf.qytechs.cn/scripts/526702-wme-speed-display" target="_blank"><wz-button color="primary">${this.getTranslation('viewScript')}</wz-button></a>`);
    }

    /**
     * Displays a modal dialog with customizable title, body content, and button text.
     * @param {String} title - The title of the modal (default: 'Without title').
     * @param {String} body - The HTML content or string inside the modal (default: '<span>Without body message</span>').
     * @param {String} [closeButtonText] - The text for the close button (default: 'Close').
     * @param {String} [customHtmlButtons] - Custom HTML button(s).
     */
    showSpeedDisplayDialog(title, body = '<span>Without body message</span>', closeButtonText, customHtmlButtons) {
        title                 = title && typeof title == 'string' ? title : 'Without title';
        closeButtonText       = closeButtonText ?? this.getTranslation('close');
        let wzDialogContainer = document.getElementById('wz-dialog-container');
        let divDialog         = document.createElement('div');
        divDialog.id          = 'spd-dialog-container';

        Object.assign(divDialog.style, {
            display: 'flex',
            alignItems: 'center',
            justifyContent: 'center',
            position: 'absolute',
            width: '100vw',
            height: '100vh',
            top: 0,
            left: 0
        });

        let divDialogHtml = `
            <div class="dark-overlay" style="background-color: var(--background_modal, rgba(32, 33, 36, 0.6)); width: 100vw; height: 100vh; position: absolute; top: 0px; left: 0px; z-index: 9999;"></div>

            <div style="display: flex; flex-direction: column; background-color: var(--background_default, #ffffff); border-radius: var(--wz-dialog-border-radius, 10px); box-shadow: rgba(0, 0, 0, 0.26) 0px 4px 8px 3px; width: var(--wz-dialog-width, 720px); height: var(--wz-dialog-height); padding: var(--wz-dialog-padding, var(--space-l, 24px)); position: fixed; z-index: 99999;">
                <h3 style="margin-bottom: 10px;">${title}</h3>
                
                <div style="max-height: 70vh; overflow: auto;">
                    ${body}
                </div>

                <div style="display: flex; justify-content: end; gap: 10px; margin-top: 10px;">
                    <wz-button color="secondary" id="btn-spd-hide-dialog">${closeButtonText}</wz-button>`;

        if (customHtmlButtons)
            divDialogHtml += `${customHtmlButtons}`;
        
        divDialogHtml += `
                </div>
            </div>`;

        divDialog.innerHTML = divDialogHtml;

        wzDialogContainer.appendChild(divDialog);
        
        this.attachDialogListeners();
    }

    /**
     * Closes the dialog and removes associated event listeners.
     */
    hideSpeedDisplayDialog() {
        let spdDialog = document.getElementById('spd-dialog-container');

        document.removeEventListener('keydown', this.simulateBtnHideDialogClick.bind(this));

        spdDialog?.remove();
    }

    /**
     * Simulates a click on the close dialog button.
     * @param {Event} event
     */
    simulateBtnHideDialogClick(event) {
        if (event.key && !['Escape', 'Enter'].includes(event.key))
            return;

        document.getElementById('btn-spd-hide-dialog')?.click();
    }

    /**
     * Adds an alert to the warning group.
     * 
     * @param {String} id - The unique identifier for the alert.
     * @param {(String|Element)} body - The content of the alert, either as a string or an HTML element.
     * @param {String} [variant] - The alert variant ('info', 'warning', 'danger' and 'success'). (default: 'info')
     * @param {Boolean} [truncable] - Whether the alert content should be truncated. (default: true)
     */
    addAlert(id, body, variant = 'info', truncable = true) {
        let warningGroup = document.getElementById('spd-alert-group');
        let alertHtml    = `
            <wz-alert id="${id}" role="alert" level="page" variant="${variant}" multiline="true" class="sidebar-alert inconsistent-direction-alert">
                <div class="alertContent--O8sZl">`;

        if (truncable) {
            alertHtml +=`
                    <wz-truncate is-expanded="false" limit="50">
                        <wz-body2>${body}</wz-body2>
                        <span slot="ellipsis">${this.wmeTranslations.common.show_more}</span>
                    </wz-truncate>`;
        } else {
            alertHtml +=`<wz-body2>${body}</wz-body2>`;
        }

        alertHtml += `
                </div>

                <wz-button size="sm" color="text" slot="dismiss" class="spd-btn-dismiss-alert">${this.wmeTranslations.zoom_in_message.ok}</wz-button>
            </wz-alert>`;

        warningGroup.classList.remove('d-none');
            
        warningGroup.insertAdjacentHTML('beforeend', alertHtml);

        document.querySelector(`#${id} .spd-btn-dismiss-alert`).addEventListener('click', this.onDismissAlert.bind(this), {once: true});
    }

    /**
     * Adds an snackbar on message container.
     * @param {String} id 
     * @param {(String|Element)} body 
     * @param {String} [btnMsg] 
     */
    addSnackbar(id, body, btnMsg) {
        if (id instanceof Event) {
            id     = 'snackbar-id-' + Math.floor(Math.random() * 100000);
            btnMsg = `<wz-button color="text">${this.wmeTranslations.zoom_in_message.ok}</wz-button>`;
        }

        if (document.getElementById(id))
            return;

        let snackbarHtml = `
            <div class="spd-snackbar" id="${id}">
                <span class="text-wrapper">
                    ${body}
                </span>`;

        if (btnMsg) {
            snackbarHtml += btnMsg;
        }

        snackbarHtml += `
            </div>`;

        this.snackbarWrapper.insertAdjacentHTML('beforeend', snackbarHtml);

        if (btnMsg)
            document.querySelector(`.spd-snackbar#${id} wz-button`).addEventListener('click', this.removeSnackbar.bind(this), {once: true});
    }

    /**
     * Remove current snackbar.
     * @param {(Element|Event)} element - The element or event triggering the removal.
     */
    removeSnackbar(element) {
        if (element instanceof Event)
            element = element.currentTarget;

        element?.closest('.spd-snackbar')?.remove();
    }

    /**
     * Remove all snackbars.
     */
    removeAllSnackbars() {
        let allSnackbars = document.querySelectorAll('.spd-snackbar');

        allSnackbars.forEach(snackbar => snackbar.remove());
    }

    /**
     * Create a custom manual snackbar.
     */
    createSnackbarWrapper() {
        let msgContainer     = document.getElementById('map-message-container');
        this.snackbarWrapper = document.querySelector('.spd-snackbar-wrapper');

        if (!this.snackbarWrapper) {
            this.snackbarWrapper = document.createElement('div');
            this.snackbarWrapper.classList.add('spd-snackbar-wrapper');

            msgContainer.appendChild(this.snackbarWrapper);
        }
    }

    /**
     * Adds script custom stylesheet.
     */
    addStyle() {
        let style = document.createElement('style');

        style.innerHTML = `
            /* General */
            .d-none {
                display: none;
            }

            .spd-info-message {
                color: #777;
                font-size: 11px;
                line-height: 15px;
            }
            
            wz-card[id^="spd-theme-"] * {
                pointer-events: none;
            }
                
            /* Snackbar */
            #map-message-container {
                display: flex;
                flex-direction: column-reverse;
                gap: 15px;
            }
            
            .spd-snackbar-wrapper {
                display: flex;
                flex-direction: column-reverse;
                gap: 15px;
                align-items: flex-start;
                justify-content: flex-start;
                position: absolute;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                translate: 0 -15px;
                z-index: 10001;
                pointer-events: none;
            }

            .spd-snackbar {
                display: flex;
                align-items: center;
                gap: 15px;
                position: relative;
                padding: var(--space-m, 16px) var(--space-always-m, 16px);
                bottom: var(--wz-snackbar-bottom, initial);
                left: 50%;
                translate: -50%;
                min-width: var(--wz-snackbar-min-width, 195px);
                background-color: rgba(0, 0, 0, 0.8);
                border: none;
                border-radius: 6px;
                box-shadow: 0 1px 2px 0 rgba(60, 64, 67, 0.3), 0 2px 6px 2px rgba(60, 64, 67, 0.15);
                box-sizing: border-box;
                color: var(--wz-snackbar-color, var(--always_white, #ffffff));
                font-family: "Rubik", sans-serif;
                font-size: 14px;
                font-weight: 400;
                justify-content: space-between;
                pointer-events: all;
                letter-spacing: 0.2px;
                white-space: normal;
            }
            
            .spd-snackbar-wrapper .text-wrapper {
                display: flex;
                align-items: center;
                gap: 15px;
            }

            .spd-snackbar-wrapper i.w-icon {
                font-size: 20px;
            }
                
            .spd-snackbar-wrapper wz-button {
                pointer-events: all;
            }`;

        document.head.appendChild(style);
    }

    /**
     * Get the layer switcher element.
     */
    getLayerSwitcher() {
        let userScriptLayerSwitchers = document.querySelectorAll('.layer-selector-sdk-checkbox');

        if (userScriptLayerSwitchers.length < 1) {
            this.logDebug('Userscripts layer switches not found. Trying again...', false, 'warn');

            setTimeout(() => this.getLayerSwitcher(), 1000);
            
            return;
        }
        
        this.layerSwitcherElement = [...userScriptLayerSwitchers].find(checkbox => {
            return checkbox.querySelector('.layer-selector-container').textContent.trim() == this.getTranslation('name');
        });

        this.layerSwitcherElement.checked = this.settings.spdEnabled;
    }

    /**
     * Select a card theme.
     * @param {Element} card 
     */
    selectThemeCard(card) {
        let selectedTheme = this.getSelectedTheme();

        selectedTheme?.removeAttribute('selected');

        card.setAttribute('selected', 'true');
    }

    /**
     * Get card element of the selected theme.
     * @returns {Element} Returns the element of the selected theme.
     */
    getSelectedTheme() {
        return document.querySelector('wz-card[id^="spd-theme-"][selected=true]');
    }

    /**
     * Gets the translation of the word or displays the key if no translation is found (to make it easier to find missing translations).
     * @param {String} key Key in string format, separating subcategories by periods ".".
     * @param {Object} [replaceStrings={}] An object containing placeholder values for dynamic translations.
     *
     * @returns {String} Translated string.
     */
    getTranslation(key, replaceStrings = {}) {
        return I18n.translate(`wmeSpd.${key}`, replaceStrings);
    }

    /**
     * Sets translations for the current locale.
     */
    defineTranslations() {
        let translations;

        switch (I18n.locale) {
            case 'af':
                // Afrikaans
                translations = {
                    name: 'Spoedweergawes',
                    zoomOut: 'Verder',
                    zoomIn: 'Naby',
                    changelog: 'Veranderingsregister',
                    changelogMessage: `<h6>Nuus:</h6><ul style="margin-bottom: 10px"><li>Nuut voorkoms! Die script se instellingsblad is herontwerp;</li><li>Wil jy hê dat die spoedikone nader aan dié van jou land lyk? Nou kan jy temas kies;</li><li>Werk jy met meer as een oop WME-oortjie? Geen probleem nie. Alle instellings word nou gelyktydig tussen alle oop oortjies gesinkroniseer;</li><li>Wil jy gefiltreerde ikone deursigtiger maak? Jou probleme is verby. Jy kan nou self die deursigtigheidsvlak kies;</li><li>Nou wys die script 'n boodskap terwyl dit nuwe ikone laai. Daar is 'n opsetlike vertraging;</li><li>As jy 'n minimum spoed invoer wat groter is as die maksimum, sal die script die laaste veld uitvee en 'n waarskuwing toon;</li><li>'n Kortpadskakelaar is bygevoeg in die script se instellings om ikone te aktiveer/deaktiveer. Dit kan steeds gedoen word via "Kaartlae" of 'n kortpad;</li><li>Dankie aan die migrasie na die WME SDK, kan jy nou die script se kortpad in die "Sleutelbordkortpaaie" modal aanpas;</li><li>Bygevoeg nuwe knoppies onderaan die script-oortjie om toegang te verkry tot die Discord-kanaal, die Discuss-onderwerp en my WME-profiel;</li><li>Die script-kode is gedeeltelik gemigreer na die WME SDK (nie 100% as gevolg van ontbrekende SDK-funksies nie).</li></ul><h6>Regstellings:</h6><ul><li>Vanweë sommige kode-struktuur veranderinge, sal jou gestoor instellings outomaties herstel word;</li><li>Die script wys nou die spoed aan die regte kant vir lande met linkerkantse bestuur;</li><li>Verskeie klein regstellings en kodeverbeterings.</li></ul>`,
                    close: 'Sluit',
                    viewScript: 'Besoek Skrip',
                    viewChangelog: 'Besoek veranderingsregister',
                    reset: 'Herstel',
                    snackbar: {
                        updatingMapDisplay: 'Werk kaart ikone op. (Met opsetlike vertraging)',
                        errorFiltering: 'Fout met toepassing van filter. Minimum spoed kan nie groter as maksimum wees nie.',
                    },
                    title: {
                        general: 'Algemeen',
                        roadTypes: 'Padsoorte',
                        filter: 'Filtreer',
                        appearence: 'Vorm',
                        showOnRoadType: 'Wys op die volgende padsoorte:',
                        seeOnDiscuss: 'Kyk na die skrip se draad op die Discuss',
                        seeOnDiscord: 'Kyk na die skrip se kanaal op die Waze Script se Discord-bediener',
                        scriptDevBy: 'Bekyk my redakteur gebruikersprofiel',
                    },
                    label: {
                        displaySpeeds: 'Toon spoed',
                        showNoSpeed: 'Toon op segmente sonder spoed',
                        showOnRoundabout: 'Toon op rotondes',
                        showOnUnpaved: 'Toon op nie-geplaveide paaie',
                        maxZoom: 'Render tot die zoom:',
                        toggleLayerShortcut: 'Wissel laag sigbaarheid',
                        zIndex: 'Laagdiepte',
                        hideShorterSegments: 'Versteek segmente kleiner as',
                        speedFilter: 'Filter volgens snelheid',
                        min: 'Min:',
                        max: 'Max:',
                        opacity: 'Filter deursigtigheidsvlak:',
                    },
                    alertMessage: {
                        zIndex: `As jy \'n laagdiepte groter as <b>${this.zIndex.warn}</b> gebruik, sal die spoedlaag ander lae oorskadu en jy sal nie enige element op die skerm kan kies totdat jy die laagdiepte weer laer as <b>${this.zIndex.warn}</b> maak.`,
                        toggleVisibility: `Om die laag sigbaarheid van spoed aan/af te skakel, gaan eenvoudig na <b>Kaartlae > Paaie > Wys spoed</b> of gebruik die kortpad <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Standaard',
                        altViennaConv: 'Alternatiewe Wene Konvensie',
                        japan: 'Japan',
                        uk: 'Verenigde Koninkryk',
                        sacu: 'Suidelike Afrikaanse Douane-unie',
                    },
                    btn: {
                        updateSettingsTab: 'Werk menu op',
                        resetSettings: 'Herstel instellings',
                        seeOnDiscuss: 'Sien op die Bespreking',
                        seeOnDiscord: 'Sien op die Discord',
                        scriptDevBy: 'Skrip ontwikkel deur Luan Tavares',
                    }
                };

                break;

            case 'ar':
                // Arabic
                translations = {
                    name: 'عرض السرعة',
                    zoomOut: 'أبعد',
                    zoomIn: 'أقرب',
                    changelog: 'سجل التغييرات',
                    changelogMessage: '<h6>التحديثات:</h6><ul style="margin-bottom: 10px"><li>مظهر جديد! تم إعادة تصميم علامة تبويب إعدادات السكريبت;</li><li>هل تريد أن تبدو أيقونات السرعة مشابهة لتلك الموجودة في بلدك؟ الآن يمكنك اختيار السمات;</li><li>تعمل مع أكثر من علامة تبويب WME مفتوحة؟ لا توجد مشكلة. تتم الآن مزامنة جميع الإعدادات تلقائيًا بين جميع علامات التبويب المفتوحة;</li><li>هل تحتاج إلى جعل الأيقونات المصفاة أكثر شفافية؟ انتهت مشاكلك. يمكنك الآن اختيار مستوى الشفافية بنفسك;</li><li>الآن يعرض السكريبت رسالة أثناء تحميل الأيقونات الجديدة. يوجد تأخير مقصود في التحميل;</li><li>إذا قمت بتحديد سرعة دنيا أكبر من الحد الأقصى، فسيقوم السكريبت بمسح الحقل الأخير وعرض رسالة تحذير;</li><li>تمت إضافة مفتاح اختصار في علامة تبويب إعدادات السكريبت لتمكين وتعطيل الأيقونات. لا يزال من الممكن تشغيل/إيقاف التشغيل عبر علامة تبويب "طبقات الخريطة" أو عبر اختصار لوحة المفاتيح;</li><li>بفضل الانتقال إلى SDK الخاص بـ WME، يمكنك الآن تخصيص مفتاح الاختصار للسكريبت من خلال نافذة "اختصارات لوحة المفاتيح";</li><li>تمت إضافة أزرار جديدة في نهاية علامة تبويب السكريبت للوصول إلى قناة Discord، وموضوع Discuss، وملفي الشخصي في WME;</li><li>تمت ترحيل كود السكريبت جزئيًا إلى SDK الخاص بـ WME (لم يتم الترحيل بالكامل بسبب بعض الميزات المفقودة في SDK).</li></ul><h6>الإصلاحات:</h6><ul><li>بسبب بعض التغييرات في هيكل الكود، سيتم استعادة الإعدادات المحفوظة تلقائيًا;</li><li>يعرض السكريبت الآن السرعة على الجانب الصحيح عندما تكون الدولة تعتمد القيادة على الجهة اليسرى;</li><li>تم تنفيذ العديد من الإصلاحات الطفيفة وتحسينات الكود.</li></ul>',
                    close: 'إغلاق',
                    viewScript: 'عرض السكربت',
                    viewChangelog: 'عرض سجل التغييرات',
                    reset: 'إعادة تعيين',
                    snackbar: {
                        updatingMapDisplay: 'تحديث رموز الخريطة. (بتأخير مقصود)',
                        errorFiltering: 'خطأ في تطبيق الفلتر. لا يمكن أن تكون السرعة الدنيا أكبر من القصوى.',
                    },
                    title: {
                        general: 'عام',
                        roadTypes: 'أنواع الطرق',
                        filter: 'تصفية',
                        appearence: 'المظهر',
                        showOnRoadType: 'عرض على أنواع الطرق التالية:',
                        seeOnDiscuss: 'شاهد موضوع السكربت على Discuss',
                        seeOnDiscord: 'شاهد قناة السكربت على خادم Discord الخاص بـ Waze Script',
                        scriptDevBy: 'عرض ملف تعريف مستخدم المحرر الخاص بي',
                    },
                    label: {
                        displaySpeeds: 'عرض السرعات',
                        showNoSpeed: 'عرض على القطاعات التي لا تحتوي على سرعة',
                        showOnRoundabout: 'عرض على الدوار',
                        showOnUnpaved: 'عرض على الطريق غير المعبدة',
                        maxZoom: 'عرض حتى التكبير:',
                        toggleLayerShortcut: 'تبديل طبقة عرض السرعة',
                        zIndex: 'عمق الطبقة',
                        hideShorterSegments: 'إخفاء في القطاعات الأصغر من',
                        speedFilter: 'تصفية حسب السرعة',
                        min: 'أدنى:',
                        max: 'أقصى:',
                        opacity: 'مستوى تعتيم الفلتر:',
                    },
                    alertMessage: {
                        zIndex: `عند استخدام عمق طبقة أكبر من <b>${this.zIndex.warn}</b>، ستتداخل طبقة السرعة مع الطبقات الأخرى ولن يمكنك تحديد أي عنصر على الشاشة حتى تعيد عمق الطبقة إلى أقل من <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `لتفعيل/إلغاء تفعيل طبقة عرض السرعات، يمكنك الذهاب إلى <b>الطبقات > الطرق > عرض السرعات</b> أو استخدام الاختصار <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'افتراضي',
                        altViennaConv: 'اتفاقية فيينا البديلة',
                        japan: 'اليابان',
                        uk: 'المملكة المتحدة',
                        sacu: 'اتحاد الجمارك في جنوب أفريقيا',
                    },
                    btn: {
                        updateSettingsTab: 'تحديث القائمة',
                        resetSettings: 'إعادة تعيين الإعدادات',
                        seeOnDiscuss: 'انظر في المناقشة',
                        seeOnDiscord: 'انظر في الديسكورد',
                        scriptDevBy: 'البرنامج النصي تم تطويره بواسطة لوان تافاريس',
                    }
                };
            
                break;
            
            case 'bg':
                // Bulgarian
                translations = {
                    name: 'Показване на скоростта',
                    zoomOut: 'Отдалечи',
                    zoomIn: 'Приближи',
                    changelog: 'Журнал с промени',
                    changelogMessage: '<h6>Нововъведения:</h6><ul style="margin-bottom: 10px"><li>Нов облик! Разделът с настройките на скрипта е преработен;</li><li>Искате ли иконите за скорост да изглеждат по-близки до тези във вашата страна? Вече можете да изберете теми;</li><li>Работите с повече от един отворен раздел на WME? Няма проблем. Всички настройки сега се синхронизират едновременно между всички отворени раздели;</li><li>Трябва ли да направите филтрираните икони по-прозрачни? Вашите проблеми са решени. Можете сами да изберете нивото на прозрачност;</li><li>Скриптът вече показва съобщение, докато зарежда нови икони. Има умишлено забавяне при зареждането;</li><li>Ако въведете минимална скорост, по-голяма от максималната, скриптът ще изчисти последното поле и ще покаже предупреждение;</li><li>Добавен е бутон за бързо включване и изключване на иконите в настройките на скрипта. Все още можете да активирате/деактивирате чрез раздела "Слоеве на картата" или с клавишна комбинация;</li><li>Благодарение на миграцията към WME SDK, вече можете да персонализирате клавишната комбинация за скрипта в раздела "Клавишни комбинации";</li><li>Добавени са нови бутони в края на раздела със скрипта за достъп до канала в Discord, темата в Discuss и профила ми в WME;</li><li>Кодът на скрипта е частично мигриран към WME SDK (не напълно поради липсващи функции в SDK).</li></ul><h6>Поправки:</h6><ul><li>Поради някои промени в структурата на кода, записаните настройки ще бъдат възстановени автоматично;</li><li>Скриптът вече показва скоростта от правилната страна за държави с ляво движение;</li><li>Различни малки поправки и подобрения в кода.</li></ul>',
                    close: 'Затвори',
                    viewScript: 'Преглед на скрипта',
                    viewChangelog: 'Преглед на журнала с промени',
                    reset: 'Нулиране',
                    snackbar: {
                        updatingMapDisplay: 'Актуализиране на иконите на картата. (С умишлено забавяне)',
                        errorFiltering: 'Грешка при прилагане на филтъра. Минималната скорост не може да бъде по-голяма от максималната.',
                    },
                    title: {
                        general: 'Общо',
                        roadTypes: 'Типове пътища',
                        filter: 'Филтър',
                        appearence: 'Изглед',
                        showOnRoadType: 'Покажи на следните типове пътища:',
                        seeOnDiscuss: 'Вижте нишката на скрипта в Discuss',
                        seeOnDiscord: 'Вижте канала на скрипта в Discord сървъра на Waze Script',
                        scriptDevBy: 'Вижте потребителския профил на моя редактор',
                    },
                    label: {
                        displaySpeeds: 'Показване на скорости',
                        showNoSpeed: 'Показване на сегменти без скорост',
                        showOnRoundabout: 'Показване на кръгови кръстовища',
                        showOnUnpaved: 'Показване на непавирани пътища',
                        maxZoom: 'Изобразяване до ниво на мащаб:',
                        toggleLayerShortcut: 'Превключване на слоя за показване на скоростта',
                        zIndex: 'Дълбочина на слоя',
                        hideShorterSegments: 'Скриване на сегменти по-малки от',
                        speedFilter: 'Филтриране по скорост',
                        min: 'Мин.:',
                        max: 'Макс.:',
                        opacity: 'Ниво на непрозрачност на филтъра:',
                    },
                    alertMessage: {
                        zIndex: `Ако използвате дълбочина на слоя, по-голяма от <b>${this.zIndex.warn}</b>, слойът за скорост ще се припокрие с други и няма да можете да изберете елемент на екрана, докато не го намалите под <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `За да активирате/деактивирате слоя за показване на скорости, можете да отидете в <b>Картови слоеве > Пътища > Показване на скорости</b> или да използвате клавишната комбинация <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'По подразбиране',
                        altViennaConv: 'Алтернативна Виенска конвенция',
                        japan: 'Япония',
                        uk: 'Обединено кралство',
                        sacu: 'Южноафрикански съюз за митници',
                    },
                    btn: {
                        updateSettingsTab: 'Актуализиране на менюто',
                        resetSettings: 'Нулиране на настройките',
                        seeOnDiscuss: 'Вижте в обсъждането',
                        seeOnDiscord: 'Вижте в Discord',
                        scriptDevBy: 'Скриптът е разработен от Луaн Таварес',
                    }
                };
            
                break;
            
            case 'ca':
                // Catalan
                translations = {
                    name: 'Visualització de la Velocitat',
                    zoomOut: 'Més allunyat',
                    zoomIn: 'Més a prop',
                    changelog: 'Registre de canvis',
                    changelogMessage: '<h6>Novetats:</h6><ul style="margin-bottom: 10px"><li>Nou disseny! La pestanya de configuració del script ha estat redissenyada;</li><li>Vols que les icones de velocitat s’assemblin més a les del teu país? Ara pots triar temes;</li><li>Treballes amb més d’una pestanya del WME oberta? Cap problema. Ara totes les configuracions es sincronitzen simultàniament entre totes les pestanyes obertes;</li><li>Necessites fer les icones filtrades més translúcides? Els teus problemes s’han acabat. Ara pots triar el nivell de transparència que desitges;</li><li>Ara el script mostra un missatge mentre carrega noves icones. Hi ha un retard intencionat en la càrrega;</li><li>Si introdueixes una velocitat mínima superior a la màxima, el script esborrarà l’últim camp i mostrarà un missatge d’advertència;</li><li>S’ha afegit un commutador ràpid a la pestanya de configuració del script per activar i desactivar les icones. Encara es pot fer des de la pestanya de "Capes del mapa" o amb una drecera de teclat;</li><li>Gràcies a la migració a l’SDK del WME, ara pots personalitzar la tecla drecera del script des del modal de "Dreceres del teclat";</li><li>S’han afegit nous botons al final de la pestanya del script per accedir al canal de Discord, al fil de Discuss i al meu perfil al WME;</li><li>El codi del script ha estat parcialment migrat a l’SDK del WME (no completament per la manca d’algunes funcionalitats en l’SDK).</li></ul><h6>Correccions:</h6><ul><li>A causa d’alguns canvis en l’estructura del codi, les configuracions desades es restauraran automàticament;</li><li>Ara el script mostra la velocitat al costat correcte en països amb conducció per l’esquerra;</li><li>Petites correccions i millores en el codi.</li></ul>',
                    close: 'Tancar',
                    viewScript: 'Veure el script',
                    viewChangelog: 'Veure el registre de canvis',
                    reset: 'Restablir',
                    snackbar: {
                        updatingMapDisplay: 'Actualitzant les icones del mapa. (Amb retard intencionat)',
                        errorFiltering: 'Error en aplicar el filtre. La velocitat mínima no pot ser superior a la màxima.',
                    },
                    title: {
                        general: 'General',
                        roadTypes: 'Tipus de carreteres',
                        filter: 'Filtre',
                        appearence: 'Aparença',
                        showOnRoadType: 'Mostrar en els següents tipus de carreteres:',
                        seeOnDiscuss: 'Veure el fil del script a Discuss',
                        seeOnDiscord: 'Veure el canal del script al servidor de Discord de Waze Script',
                        scriptDevBy: 'Veure el meu perfil d\'usuari de l\'editor',
                    },
                    label: {
                        displaySpeeds: 'Mostrar velocitats',
                        showNoSpeed: 'Mostrar en segments sense velocitat',
                        showOnRoundabout: 'Mostrar en rotondes',
                        showOnUnpaved: 'Mostrar en vies no pavimentades',
                        maxZoom: 'Renderitzar fins al zoom:',
                        toggleLayerShortcut: 'Alternar la capa de visualització de la velocitat',
                        zIndex: 'Profunditat de la capa',
                        hideShorterSegments: 'Amagar en segments més petits que',
                        speedFilter: 'Filtrar per velocitat',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Nivell d’opacitat del filtre:',
                    },
                    alertMessage: {
                        zIndex: `Si utilitzeu una profunditat de capa superior a <b>${this.zIndex.warn}</b>, la capa de velocitat es superposarà a altres i no podreu seleccionar cap element a la pantalla fins que la rebaixeu per sota de <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Per activar/desactivar la capa de visualització de velocitats, podeu anar a <b>Capes del mapa > Vies > Mostrar velocitats</b> o utilitzar la drecera <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Per defecte',
                        altViennaConv: 'Convenció alternativa de Viena',
                        japan: 'Japó',
                        uk: 'Regne Unit',
                        sacu: 'Unió duanera de l\'Àfrica Austral',
                    },
                    btn: {
                        updateSettingsTab: 'Actualitzar el menú',
                        resetSettings: 'Restablir la configuració',
                        seeOnDiscuss: 'Veure a la discussió',
                        seeOnDiscord: 'Veure a Discord',
                        scriptDevBy: 'Script desenvolupat per Luan Tavares',
                    }
                };
            
                break;

            case 'cs':
                // Czech
                translations = {
                    name: 'Zobrazení Rychlosti',
                    zoomOut: 'Více vzdálené',
                    zoomIn: 'Více přiblížené',
                    changelog: 'Seznam změn',
                    changelogMessage: '<h6>Novinky:</h6><ul style="margin-bottom: 10px"><li>Nový vzhled! Karta nastavení skriptu byla přepracována;</li><li>Chcete, aby ikony rychlosti vypadaly více jako ty ve vaší zemi? Nyní si můžete vybrat témata;</li><li>Pracujete s více otevřenými kartami WME? Žádný problém. Všechna nastavení se nyní synchronizují současně mezi všemi otevřenými kartami;</li><li>Potřebujete, aby byly filtrované ikony průhlednější? Vaše problémy jsou vyřešeny. Nyní si můžete sami zvolit úroveň průhlednosti;</li><li>Skript nyní zobrazuje zprávu při načítání nových ikon. Existuje záměrné zpoždění při načítání;</li><li>Pokud zadáte minimální rychlost vyšší než maximální, skript vymaže poslední pole a zobrazí varovnou zprávu;</li><li>Do karty nastavení skriptu byl přidán přepínač pro rychlé zapnutí a vypnutí ikon. Stále je možné aktivovat/deaktivovat je přes kartu "Vrstvy mapy" nebo klávesovou zkratkou;</li><li>Díky migraci na WME SDK si nyní můžete přizpůsobit klávesovou zkratku skriptu v nabídce "Klávesové zkratky";</li><li>Na konec karty skriptu byly přidány nové tlačítka pro přístup ke kanálu Discord, vláknu Discuss a mému profilu na WME;</li><li>Kód skriptu byl částečně migrován na WME SDK (ne úplně kvůli chybějícím funkcím v SDK).</li></ul><h6>Opravy:</h6><ul><li>V důsledku některých změn ve struktuře kódu budou uložená nastavení automaticky obnovena;</li><li>Skript nyní zobrazuje rychlost na správné straně v zemích s levostranným řízením;</li><li>Různé drobné opravy a vylepšení kódu.</li></ul>',
                    close: 'Zavřít',
                    viewScript: 'Zobrazit skript',
                    viewChangelog: 'Zobrazit seznam změn',
                    reset: 'Obnovit',
                    snackbar: {
                        updatingMapDisplay: 'Aktualizace ikon mapy. (S úmyslným zpožděním)',
                        errorFiltering: 'Chyba při aplikaci filtru. Minimální rychlost nemůže být větší než maximální.',
                    },
                    title: {
                        general: 'Obecné',
                        roadTypes: 'Typy silnic',
                        filter: 'Filtr',
                        appearence: 'Vzhled',
                        showOnRoadType: 'Zobrazit na následujících typech silnic:',
                        seeOnDiscuss: 'Podívejte se na vlákno skriptu na Discuss',
                        seeOnDiscord: 'Podívejte se na kanál skriptu na Discord serveru Waze Script',
                        scriptDevBy: 'Zobrazit můj uživatelský profil editoru',
                    },
                    label: {
                        displaySpeeds: 'Zobrazit rychlosti',
                        showNoSpeed: 'Zobrazit na segmentu bez rychlosti',
                        showOnRoundabout: 'Zobrazit na kruhovém objezdu',
                        showOnUnpaved: 'Zobrazit na nezpevněné cestě',
                        maxZoom: 'Renderovat až na zoom:',
                        toggleLayerShortcut: 'Přepnout vrstvu zobrazení rychlosti',
                        zIndex: 'Hloubka vrstvy',
                        hideShorterSegments: 'Skrýt na segmentech menších než',
                        speedFilter: 'Filtrovat podle rychlosti',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Úroveň neprůhlednosti filtru:',
                    },
                    alertMessage: {
                        zIndex: `Pokud použijete hloubku vrstvy vyšší než <b>${this.zIndex.warn}</b>, vrstva rychlosti se překryje s ostatními a nebude možné vybrat žádný prvek na obrazovce, dokud ji opět nezmenšíte pod <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Pro aktivaci/deaktivaci vrstvy zobrazení rychlostí stačí přejít do <b>Mapové vrstvy > Cesty > Zobrazit rychlosti</b> nebo použít klávesovou zkratku <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Výchozí',
                        altViennaConv: 'Alternativní Vídeňská úmluva',
                        japan: 'Japonsko',
                        uk: 'Spojené království',
                        sacu: 'Jižní africká celní unie',
                    },
                    btn: {
                        updateSettingsTab: 'Aktualizovat nabídku',
                        resetSettings: 'Obnovit nastavení',
                        seeOnDiscuss: 'Zobrazit v diskusi',
                        seeOnDiscord: 'Zobrazit na Discordu',
                        scriptDevBy: 'Skript vyvinutý Luanem Tavaresem',
                    }
                };                

                break;

            case 'da':
                // Danish
                translations = {
                    name: 'Hastighedsvisning',
                    zoomOut: 'Mere afstand',
                    zoomIn: 'Mere tæt på',
                    changelog: 'Ændringslog',
                    changelogMessage: '<h6>Nyheder:</h6><ul style="margin-bottom: 10px"><li>Nyt design! Scriptets indstillingsfane er blevet redesignet;</li><li>Vil du have, at hastighedsikonerne ligner dem i dit land? Nu kan du vælge temaer;</li><li>Arbejder du med flere åbne WME-faner? Ingen problemer. Alle indstillinger synkroniseres nu samtidig mellem alle åbne faner;</li><li>Har du brug for at gøre filtrerede ikoner mere gennemsigtige? Dine problemer er løst. Du kan nu selv vælge gennemsigtighedsniveauet;</li><li>Nu viser scriptet en besked, mens det indlæser nye ikoner. Der er en bevidst forsinkelse;</li><li>Hvis du angiver en minimumshastighed, der er højere end maksimum, vil scriptet rydde det sidste felt og vise en advarselsmeddelelse;</li><li>En genvejsknap er blevet tilføjet i scriptets indstillinger for at aktivere/deaktivere ikoner. Det kan stadig gøres via "Kortlag" eller en tastaturgenvej;</li><li>Takket være migreringen til WME SDK kan du nu tilpasse scriptets genvejstast i "Tastaturgenveje";</li><li>Nye knapper er tilføjet i bunden af scriptets fane for at få adgang til Discord-kanalen, Discuss-tråden og min WME-profil;</li><li>Scriptets kode er delvist migreret til WME SDK (ikke fuldt ud på grund af manglende funktioner i SDK).</li></ul>',
                    close: 'Luk',
                    viewScript: 'Se script',
                    viewChangelog: 'Se ændringslog',
                    reset: 'Nulstil',
                    snackbar: {
                        updatingMapDisplay: 'Opdaterer kortikoner. (Med forsætlig forsinkelse)',
                        errorFiltering: 'Fejl ved anvendelse af filter. Minimumshastighed kan ikke være større end maksimum.',
                    },
                    title: {
                        general: 'Generelt',
                        roadTypes: 'Straßentypen',
                        filter: 'Filter',
                        appearence: 'Erscheinungsbild',
                        showOnRoadType: 'An den folgenden Straßentypen anzeigen:',
                        seeOnDiscuss: 'Siehe den Thread des Skripts auf Discuss',
                        seeOnDiscord: 'Siehe den Kanal des Skripts auf dem Waze Script Discord-Server',
                        scriptDevBy: 'Se min redaktørbrugerprofil',
                    },
                    label: {
                        displaySpeeds: 'Vis hastigheder',
                        showNoSpeed: 'Vis på segmenter uden hastighed',
                        showOnRoundabout: 'Vis på rundkørsler',
                        showOnUnpaved: 'Vis på ubelagte veje',
                        maxZoom: 'Render op til zoom:',
                        toggleLayerShortcut: 'Skift synlighed af hastighedslaget',
                        zIndex: 'Lagdybde',
                        hideShorterSegments: 'Skjul på segmenter mindre end',
                        speedFilter: 'Filtrer efter hastighed',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Filterets opacitetsniveau:',
                    },
                    alertMessage: {
                        zIndex: `Når du bruger en lagdybde større end <b>${this.zIndex.warn}</b>, vil hastighedslaget dække de andre, og det vil ikke være muligt at vælge et element på skærmen, før du sænker dybden igen under <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `For at aktivere/deaktivere hastighedslaget, skal du gå til <b>Kortlag > Veje > Vis hastigheder</b> eller bruge genvejstasten <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Standard',
                        altViennaConv: 'Alternativ Wienerkonvention',
                        japan: 'Japan',
                        uk: 'Storbritannien',
                        sacu: 'Southern African Customs Union',
                    },
                    btn: {
                        updateSettingsTab: 'Opdater menu',
                        resetSettings: 'Nulstil indstillinger',
                        seeOnDiscuss: 'Se i diskussionen',
                        seeOnDiscord: 'Se på Discord',
                        scriptDevBy: 'Script udviklet af Luan Tavares',
                    }
                };
            
                break;
            
            case 'de':
                // German
                translations = {
                    name: 'Geschwindigkeitsanzeige',
                    zoomOut: 'Weiter entfernt',
                    zoomIn: 'Mehr heran',
                    changelog: 'Änderungsprotokoll',
                    changelogMessage: '<h6>Neuerungen:</h6><ul style="margin-bottom: 10px"><li>Neues Design! Die Einstellungsseite des Skripts wurde überarbeitet;</li><li>Möchtest du, dass die Geschwindigkeits-Icons mehr wie die in deinem Land aussehen? Jetzt kannst du Themen auswählen;</li><li>Arbeitest du mit mehreren offenen WME-Tabs? Kein Problem. Alle Einstellungen werden nun automatisch zwischen allen offenen Tabs synchronisiert;</li><li>Möchtest du die gefilterten Symbole durchsichtiger machen? Kein Problem! Du kannst nun die gewünschte Transparenzstufe selbst auswählen;</li><li>Das Skript zeigt jetzt eine Nachricht an, während neue Symbole geladen werden. Es gibt eine absichtliche Verzögerung beim Laden;</li><li>Wenn du eine Mindestgeschwindigkeit angibst, die größer als die Höchstgeschwindigkeit ist, löscht das Skript das letzte Feld und zeigt eine Warnmeldung an;</li><li>Ein neuer Schalter wurde zur Einstellungsseite des Skripts hinzugefügt, um die Icons schnell ein- und auszuschalten. Du kannst sie weiterhin über den Tab "Kartenebenen" oder mit einer Tastenkombination aktivieren/deaktivieren;</li><li>Dank der Migration zum WME SDK kannst du nun die Skript-Tastenkombination im Menü "Tastenkombinationen" individuell anpassen;</li><li>Neue Schaltflächen wurden am Ende des Skript-Tabs hinzugefügt, um auf den Discord-Kanal, das Discuss-Forum und mein WME-Profil zuzugreifen;</li><li>Der Skript-Code wurde teilweise auf das WME SDK migriert (nicht vollständig aufgrund fehlender Funktionen im SDK).</li></ul><h6>Fehlerbehebungen:</h6><ul><li>Aufgrund einiger Änderungen an der Code-Struktur werden gespeicherte Einstellungen automatisch wiederhergestellt;</li><li>Das Skript zeigt nun die Geschwindigkeit auf der richtigen Seite an, wenn das Land Linksverkehr hat;</li><li>Verschiedene kleine Korrekturen und Code-Verbesserungen.</li></ul>',
                    close: 'Schließen',
                    viewScript: 'Skript anzeigen',
                    viewChangelog: 'Änderungsprotokoll anzeigen',
                    reset: 'Zurücksetzen',
                    snackbar: {
                        updatingMapDisplay: 'Aktualisierung der Kartensymbole. (Mit absichtlicher Verzögerung)',
                        errorFiltering: 'Fehler beim Anwenden des Filters. Die Mindestgeschwindigkeit darf nicht größer als die Höchstgeschwindigkeit sein.',
                    },
                    title: {
                        general: 'Allgemein',
                        roadTypes: 'Straßentypen',
                        filter: 'Filter',
                        appearence: 'Erscheinungsbild',
                        showOnRoadType: 'Auf den folgenden Straßentypen anzeigen:',
                        seeOnDiscuss: 'Siehe den Thread des Skripts auf Discuss',
                        seeOnDiscord: 'Siehe den Kanal des Skripts auf dem Waze Script Discord-Server',
                        scriptDevBy: 'Mein Editor-Benutzerprofil anzeigen',
                    },
                    label: {
                        displaySpeeds: 'Geschwindigkeiten anzeigen',
                        showNoSpeed: 'Auf Segmenten ohne Geschwindigkeit anzeigen',
                        showOnRoundabout: 'Auf Kreisverkehr anzeigen',
                        showOnUnpaved: 'Auf unbefestigten Straßen anzeigen',
                        maxZoom: 'Rendern bis Zoom:',
                        toggleLayerShortcut: 'Schicht für Geschwindigkeitsanzeige umschalten',
                        zIndex: 'Schichttiefe',
                        hideShorterSegments: 'Verstecken bei Segmenten kürzer als',
                        speedFilter: 'Nach Geschwindigkeit filtern',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Filterdeckkraftstufe:',
                    },
                    alertMessage: {
                        zIndex: `Wenn Sie eine Schichttiefe von mehr als <b>${this.zIndex.warn}</b> verwenden, wird die Geschwindigkeits-Schicht andere überlagern, und es wird nicht möglich sein, ein Element auf dem Bildschirm auszuwählen, bis Sie die Schichttiefe wieder unter <b>${this.zIndex.warn}</b> verringern.`,
                        toggleVisibility: `Um die Sichtbarkeit der Geschwindigkeits-Schicht zu aktivieren/deaktivieren, gehen Sie zu <b>Kartenebenen > Straßen > Geschwindigkeiten anzeigen</b> oder verwenden Sie die Verknüpfung <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Standard',
                        altViennaConv: 'Alternative Wien-Konvention',
                        japan: 'Japan',
                        uk: 'Vereinigtes Königreich',
                        sacu: 'Südafrikanische Zollunion',
                    },
                    btn: {
                        updateSettingsTab: 'Menü aktualisieren',
                        resetSettings: 'Einstellungen zurücksetzen',
                        seeOnDiscuss: 'Im Diskussionsthread ansehen',
                        seeOnDiscord: 'Auf Discord ansehen',
                        scriptDevBy: 'Skript entwickelt von Luan Tavares',
                    }
                };
            
                break;
            
            case 'el':
                // Greek
                translations = {
                    name: 'Εμφάνιση Ταχύτητας',
                    zoomOut: 'Περισσότερη απόσταση',
                    zoomIn: 'Πιο κοντά',
                    changelog: 'Αρχείο αλλαγών',
                    changelogMessage: '<h6>Νέα χαρακτηριστικά:</h6><ul style="margin-bottom: 10px"><li>Νέα εμφάνιση! Η καρτέλα ρυθμίσεων του script επανασχεδιάστηκε;</li><li>Θέλετε τα εικονίδια ταχύτητας να μοιάζουν περισσότερο με αυτά της χώρας σας; Τώρα μπορείτε να επιλέξετε θέματα;</li><li>Χρησιμοποιείτε πολλαπλές καρτέλες WME; Δεν υπάρχει πρόβλημα. Όλες οι ρυθμίσεις συγχρονίζονται πλέον αυτόματα μεταξύ όλων των ανοιχτών καρτελών;</li><li>Θέλετε τα φιλτραρισμένα εικονίδια να είναι πιο διαφανή; Κανένα πρόβλημα! Μπορείτε να επιλέξετε το επίπεδο διαφάνειας που επιθυμείτε;</li><li>Το script εμφανίζει τώρα ένα μήνυμα κατά τη φόρτωση νέων εικονιδίων. Υπάρχει σκόπιμη καθυστέρηση στη φόρτωση;</li><li>Αν εισαγάγετε μια ελάχιστη ταχύτητα μεγαλύτερη από τη μέγιστη, το script θα διαγράψει το τελευταίο πεδίο και θα εμφανίσει ένα προειδοποιητικό μήνυμα;</li><li>Προστέθηκε διακόπτης στην καρτέλα ρυθμίσεων του script για ενεργοποίηση και απενεργοποίηση των εικονιδίων. Μπορείτε ακόμα να το κάνετε από την καρτέλα "Επίπεδα χάρτη" ή με συντόμευση;</li><li>Χάρη στη μετάβαση στο WME SDK, μπορείτε πλέον να προσαρμόσετε τη συντόμευση του script στο μενού "Συντομεύσεις πληκτρολογίου";</li><li>Προστέθηκαν νέα κουμπιά στο κάτω μέρος της καρτέλας του script για πρόσβαση στο κανάλι Discord, στη συζήτηση και στο προφίλ μου στο WME;</li><li>Ο κώδικας του script έχει μεταφερθεί μερικώς στο WME SDK (δεν έχει μεταφερθεί πλήρως λόγω έλλειψης λειτουργιών στο SDK).</li></ul><h6>Διορθώσεις:</h6><ul><li>Λόγω αλλαγών στη δομή του κώδικα, οι αποθηκευμένες ρυθμίσεις θα επαναφέρονται αυτόματα;</li><li>Το script εμφανίζει τώρα τη σωστή πλευρά της ταχύτητας σε χώρες με αριστερή οδήγηση;</li><li>Διάφορες μικρές διορθώσεις και βελτιώσεις κώδικα.</li></ul>',
                    close: 'Κλείσιμο',
                    viewScript: 'Δείτε το script',
                    viewChangelog: 'Δείτε το αρχείο αλλαγών',
                    reset: 'Επαναφορά',
                    snackbar: {
                        updatingMapDisplay: 'Ενημέρωση εικονιδίων χάρτη. (Με σκόπιμη καθυστέρηση)',
                        errorFiltering: 'Σφάλμα στην εφαρμογή του φίλτρου. Η ελάχιστη ταχύτητα δεν μπορεί να είναι μεγαλύτερη από τη μέγιστη.',
                    },
                    title: {
                        general: 'Γενικά',
                        roadTypes: 'Τύποι Δρόμων',
                        filter: 'Φίλτρο',
                        appearence: 'Εμφάνιση',
                        showOnRoadType: 'Εμφάνιση στους εξής τύπους δρόμων:',
                        seeOnDiscuss: 'Δείτε το νήμα του script στο Discuss',
                        seeOnDiscord: 'Δείτε το κανάλι του script στον server Discord του Waze Script',
                        scriptDevBy: 'Δείτε το προφίλ χρήστη του επεξεργαστή μου',
                    },
                    label: {
                        displaySpeeds: 'Εμφάνιση ταχυτήτων',
                        showNoSpeed: 'Εμφάνιση σε τμήματα χωρίς ταχύτητα',
                        showOnRoundabout: 'Εμφάνιση σε κυκλικούς κόμβους',
                        showOnUnpaved: 'Εμφάνιση σε α paved δρόμους',
                        maxZoom: 'Απεικόνιση μέχρι το ζουμ:',
                        toggleLayerShortcut: 'Αλλαγή ορατότητας του επιπέδου ταχύτητας',
                        zIndex: 'Βάθος επιπέδου',
                        hideShorterSegments: 'Απόκρυψη σε τμήματα μικρότερα από',
                        speedFilter: 'Φίλτρο κατά ταχύτητα',
                        min: 'Ελάχιστο:',
                        max: 'Μέγιστο:',
                        opacity: 'Επίπεδο αδιαφάνειας φίλτρου:',
                    },
                    alertMessage: {
                        zIndex: `Όταν χρησιμοποιείτε βάθος επιπέδου μεγαλύτερο από <b>${this.zIndex.warn}</b>, το επίπεδο ταχύτητας θα επικαλύψει τα άλλα και δεν θα μπορείτε να επιλέξετε κανένα στοιχείο στην οθόνη μέχρι να το χαμηλώσετε ξανά κάτω από <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Για να ενεργοποιήσετε/απενεργοποιήσετε το επίπεδο ταχύτητας, πηγαίνετε στο <b>Επίπεδα Χάρτη > Οδοί > Εμφάνιση ταχυτήτων</b> ή χρησιμοποιήστε την συντόμευση <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Προεπιλογή',
                        altViennaConv: 'Εναλλακτική Σύμβαση της Βιέννης',
                        japan: 'Ιαπωνία',
                        uk: 'Ηνωμένο Βασίλειο',
                        sacu: 'Νότια Αφρικανική Τελωνειακή Ένωση',
                    },
                    btn: {
                        updateSettingsTab: 'Ενημέρωση μενού',
                        resetSettings: 'Επαναφορά ρυθμίσεων',
                        seeOnDiscuss: 'Δείτε στη Συζήτηση',
                        seeOnDiscord: 'Δείτε στο Discord',
                        scriptDevBy: 'Το σενάριο αναπτύχθηκε από τον Luan Tavares',
                    }
                };
            
                break;
            
            case 'en-AU':
                // English (Australia)
                translations = {
                    name: 'Speed Display',
                    zoomOut: 'Zoom Out',
                    zoomIn: 'Zoom In',
                    changelog: 'Changelog',
                    changelogMessage: `<h6>What’s New:</h6><ul style="margin-bottom: 10px"><li>New look! The script settings tab has been redesigned;</li><li>Want to see speed icons that look more like the ones in your country? Now you can select themes;</li><li>Working with multiple WME tabs open? No problem. All settings are now synchronized simultaneously across all open tabs;</li><li>Need the filtered icons to be more translucent? No worries! You can now choose the transparency level you prefer;</li><li>The script now displays a message while loading new icons. There is an intentional delay in the loading process;</li><li>If you enter a minimum speed greater than the maximum, the script will clear the last field and display a warning message;</li><li>A toggle switch has been added to the script settings tab to enable and disable icons. You can still do this from the "Map Layers" tab or via a shortcut;</li><li>Thanks to the migration to the WME SDK, you can now customize the script's shortcut key in the "Keyboard Shortcuts" menu;</li><li>New buttons have been added at the bottom of the script tab to access the Discord channel, Discuss forum, and my WME profile;</li><li>The script code has been partially migrated to the WME SDK (not fully migrated due to missing features in the SDK).</li></ul><h6>Fixes:</h6><ul><li>Due to some code structure changes, saved settings will be automatically restored;</li><li>The script now displays the speed on the correct side when the country has left-hand traffic;</li><li>Various small fixes and code improvements.</li></ul>`,
                    close: 'Close',
                    viewScript: 'View Script',
                    viewChangelog: 'View Changelog',
                    reset: 'Reset',
                    snackbar: {
                        updatingMapDisplay: 'Updating map icons. (With intentional delay)',
                        errorFiltering: 'Error applying filter. Minimum speed cannot be greater than maximum.',
                    },
                    title: {
                        general: 'General',
                        roadTypes: 'Road Types',
                        filter: 'Filter',
                        appearence: 'Appearance',
                        showOnRoadType: 'Show on the following road types:',
                        seeOnDiscuss: 'See the script\'s thread on Discuss',
                        seeOnDiscord: 'See the script\'s channel on the Waze Script Discord server',
                        scriptDevBy: 'View my editor user profile',
                    },
                    label: {
                        displaySpeeds: 'Display Speeds',
                        showNoSpeed: 'Show on segments without speed',
                        showOnRoundabout: 'Show on roundabouts',
                        showOnUnpaved: 'Show on unpaved roads',
                        maxZoom: 'Render up to zoom level:',
                        toggleLayerShortcut: 'Toggle speed display layer',
                        zIndex: 'Layer Depth',
                        hideShorterSegments: 'Hide segments shorter than',
                        speedFilter: 'Filter by speed',
                        min: 'Min:',
                        max: 'Max:',
                        opacity: 'Filter opacity level:',
                    },
                    alertMessage: {
                        zIndex: `When using a layer depth greater than <b>${this.zIndex.warn}</b>, the speed layer will overlap other layers, and no element can be selected until you lower it back below <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `To toggle the speed display layer, go to <b>Map Layers > Roads > Display Speeds</b> or use the shortcut <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Default',
                        altViennaConv: 'Alternative Vienna Convention',
                        japan: 'Japan',
                        uk: 'United Kingdom',
                        sacu: 'Southern African Customs Union',
                    },                    
                    btn: {
                        updateSettingsTab: 'Update Menu',
                        resetSettings: 'Reset Settings',
                        seeOnDiscuss: 'See on the Discuss',
                        seeOnDiscord: 'See on Discord',
                        scriptDevBy: 'Script developed by Luan Tavares',
                    }
                };
            
                break;
            
            case 'en-GB':
                // English (UK)
                translations = {
                    name: 'Speed Display',
                    zoomOut: 'Zoom Out',
                    zoomIn: 'Zoom In',
                    changelog: 'Changelog',
                    changelogMessage: `<h6>What’s New:</h6><ul style="margin-bottom: 10px"><li>New look! The script settings tab has been redesigned;</li><li>Want to see speed icons that look more like the ones in your country? Now you can select themes;</li><li>Working with multiple WME tabs open? No problem. All settings are now synchronized simultaneously across all open tabs;</li><li>Need the filtered icons to be more translucent? No worries! You can now choose the transparency level you prefer;</li><li>The script now displays a message while loading new icons. There is an intentional delay in the loading process;</li><li>If you enter a minimum speed greater than the maximum, the script will clear the last field and display a warning message;</li><li>A toggle switch has been added to the script settings tab to enable and disable icons. You can still do this from the "Map Layers" tab or via a shortcut;</li><li>Thanks to the migration to the WME SDK, you can now customize the script's shortcut key in the "Keyboard Shortcuts" menu;</li><li>New buttons have been added at the bottom of the script tab to access the Discord channel, Discuss forum, and my WME profile;</li><li>The script code has been partially migrated to the WME SDK (not fully migrated due to missing features in the SDK).</li></ul><h6>Fixes:</h6><ul><li>Due to some code structure changes, saved settings will be automatically restored;</li><li>The script now displays the speed on the correct side when the country has left-hand traffic;</li><li>Various small fixes and code improvements.</li></ul>`,
                    close: 'Close',
                    viewScript: 'View Script',
                    viewChangelog: 'View Changelog',
                    reset: 'Reset',
                    snackbar: {
                        updatingMapDisplay: 'Updating map icons. (With intentional delay)',
                        errorFiltering: 'Error applying filter. Minimum speed cannot be greater than maximum.',
                    },
                    title: {
                        general: 'General',
                        roadTypes: 'Road Types',
                        filter: 'Filter',
                        appearence: 'Appearance',
                        showOnRoadType: 'Show on the following road types:',
                        seeOnDiscuss: 'See the script\'s thread on Discuss',
                        seeOnDiscord: 'See the script\'s channel on the Waze Script Discord server',
                        scriptDevBy: 'View my editor user profile',
                    },
                    label: {
                        displaySpeeds: 'Display Speeds',
                        showNoSpeed: 'Show on segments without speed',
                        showOnRoundabout: 'Show on roundabouts',
                        showOnUnpaved: 'Show on unpaved roads',
                        maxZoom: 'Render up to zoom level:',
                        toggleLayerShortcut: 'Toggle speed display layer',
                        zIndex: 'Layer Depth',
                        hideShorterSegments: 'Hide segments shorter than',
                        speedFilter: 'Filter by speed',
                        min: 'Min:',
                        max: 'Max:',
                        opacity: 'Filter opacity level:',
                    },
                    alertMessage: {
                        zIndex: `When using a layer depth greater than <b>${this.zIndex.warn}</b>, the speed layer will overlap other layers, and no element can be selected until you lower it back below <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `To toggle the speed display layer, go to <b>Map Layers > Roads > Display Speeds</b> or use the shortcut <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Default',
                        altViennaConv: 'Alternative Vienna Convention',
                        japan: 'Japan',
                        uk: 'United Kingdom',
                        sacu: 'Southern African Customs Union',
                    },
                    btn: {
                        updateSettingsTab: 'Update Menu',
                        resetSettings: 'Reset Settings',
                        seeOnDiscuss: 'See on the Discuss',
                        seeOnDiscord: 'See on Discord',
                        scriptDevBy: 'Script developed by Luan Tavares',
                    }
                };
            
                break;
            
            case 'en-US':
                // US English
                translations = {
                    name: 'Speed Display',
                    zoomOut: 'Zoom Out',
                    zoomIn: 'Zoom In',
                    changelog: 'Changelog',
                    changelogMessage: `<h6>What’s New:</h6><ul style="margin-bottom: 10px"><li>New look! The script settings tab has been redesigned;</li><li>Want to see speed icons that look more like the ones in your country? Now you can select themes;</li><li>Working with multiple WME tabs open? No problem. All settings are now synchronized simultaneously across all open tabs;</li><li>Need the filtered icons to be more translucent? No worries! You can now choose the transparency level you prefer;</li><li>The script now displays a message while loading new icons. There is an intentional delay in the loading process;</li><li>If you enter a minimum speed greater than the maximum, the script will clear the last field and display a warning message;</li><li>A toggle switch has been added to the script settings tab to enable and disable icons. You can still do this from the "Map Layers" tab or via a shortcut;</li><li>Thanks to the migration to the WME SDK, you can now customize the script's shortcut key in the "Keyboard Shortcuts" menu;</li><li>New buttons have been added at the bottom of the script tab to access the Discord channel, Discuss forum, and my WME profile;</li><li>The script code has been partially migrated to the WME SDK (not fully migrated due to missing features in the SDK).</li></ul><h6>Fixes:</h6><ul><li>Due to some code structure changes, saved settings will be automatically restored;</li><li>The script now displays the speed on the correct side when the country has left-hand traffic;</li><li>Various small fixes and code improvements.</li></ul>`,
                    close: 'Close',
                    viewScript: 'View Script',
                    viewChangelog: 'View Changelog',
                    reset: 'Reset',
                    snackbar: {
                        updatingMapDisplay: 'Updating map icons. (With intentional delay)',
                        errorFiltering: 'Error applying filter. Minimum speed cannot be greater than maximum.',
                    },
                    title: {
                        general: 'General',
                        roadTypes: 'Road Types',
                        filter: 'Filter',
                        appearence: 'Appearance',
                        showOnRoadType: 'Show on the following road types:',
                        seeOnDiscuss: 'See the script\'s thread on Discuss',
                        seeOnDiscord: 'See the script\'s channel on the Waze Script Discord server',
                        scriptDevBy: 'View my editor user profile',
                    },
                    label: {
                        displaySpeeds: 'Display Speeds',
                        showNoSpeed: 'Show on segments without speed',
                        showOnRoundabout: 'Show on roundabouts',
                        showOnUnpaved: 'Show on unpaved roads',
                        maxZoom: 'Render up to zoom level:',
                        toggleLayerShortcut: 'Toggle speed display layer',
                        zIndex: 'Layer Depth',
                        hideShorterSegments: 'Hide segments shorter than',
                        speedFilter: 'Filter by speed',
                        min: 'Min:',
                        max: 'Max:',
                        opacity: 'Filter opacity level:',
                    },
                    alertMessage: {
                        zIndex: `When using a layer depth greater than <b>${this.zIndex.warn}</b>, the speed layer will overlap other layers, and no element can be selected until you lower it back below <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `To toggle the speed display layer, go to <b>Map Layers > Roads > Display Speeds</b> or use the shortcut <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Default',
                        altViennaConv: 'Alternative Vienna Convention',
                        japan: 'Japan',
                        uk: 'United Kingdom',
                        sacu: 'Southern African Customs Union',
                    },
                    btn: {
                        updateSettingsTab: 'Update Menu',
                        resetSettings: 'Reset Settings',
                        seeOnDiscuss: 'See on the Discuss',
                        seeOnDiscord: 'See on Discord',
                        scriptDevBy: 'Script developed by Luan Tavares',
                    }
                };
            
                break;

            case 'es':
                // Spanish
                translations = {
                    name: 'Exhibición de Velocidad',
                    zoomOut: 'Alejar',
                    zoomIn: 'Acercar',
                    changelog: 'Registro de cambios',
                    changelogMessage: '<h6>Novedades:</h6><ul style="margin-bottom: 10px"><li>¡Nuevo diseño! La pestaña de configuración del script ha sido rediseñada;</li><li>¿Quieres ver iconos de velocidad que se parezcan más a los de tu país? Ahora puedes seleccionar temas;</li><li>¿Trabajas con varias pestañas de WME abiertas? No hay problema. Ahora todas las configuraciones se sincronizan simultáneamente entre todas las pestañas abiertas;</li><li>¿Necesitas que los iconos filtrados sean más translúcidos? ¡No hay problema! Ahora puedes elegir el nivel de transparencia que prefieras;</li><li>El script ahora muestra un mensaje mientras se cargan nuevos iconos. Hay un retraso intencionado en la carga;</li><li>Si introduces una velocidad mínima mayor que la máxima, el script borrará el último campo y mostrará un mensaje de advertencia;</li><li>Se ha añadido un interruptor en la pestaña de configuración del script para activar y desactivar los iconos. Todavía puedes hacerlo desde la pestaña "Capas del mapa" o con un atajo de teclado;</li><li>Gracias a la migración al SDK de WME, ahora puedes personalizar la tecla de acceso directo del script en el menú "Atajos de teclado";</li><li>Se han añadido nuevos botones al final de la pestaña del script para acceder al canal de Discord, al foro de Discuss y a mi perfil en WME;</li><li>El código del script ha sido parcialmente migrado al SDK de WME (no completamente debido a la falta de algunas funciones en el SDK).</li></ul><h6>Correcciones:</h6><ul><li>Debido a algunos cambios en la estructura del código, las configuraciones guardadas se restaurarán automáticamente;</li><li>El script ahora muestra la velocidad en el lado correcto cuando el país tiene conducción por la izquierda;</li><li>Varias correcciones menores y mejoras en el código.</li></ul>',
                    close: 'Cerrar',
                    viewScript: 'Ver script',
                    viewChangelog: 'Ver registro de cambios',
                    reset: 'Restablecer',
                    snackbar: {
                        updatingMapDisplay: 'Actualizando iconos del mapa. (Con retraso intencionado)',
                        errorFiltering: 'Error al aplicar el filtro. La velocidad mínima no puede ser mayor que la máxima.',
                    },
                    title: {
                        general: 'General',
                        roadTypes: 'Tipos de carretera',
                        filter: 'Filtro',
                        appearence: 'Apariencia',
                        showOnRoadType: 'Mostrar en los siguientes tipos de carretera:',
                        seeOnDiscuss: 'Ver el hilo del script en Discuss',
                        seeOnDiscord: 'Ver el canal del script en el servidor de Discord de Waze Script',
                        scriptDevBy: 'Ver mi perfil de usuario del editor',
                    },
                    label: {
                        displaySpeeds: 'Mostrar velocidades',
                        showNoSpeed: 'Mostrar en segmentos sin velocidad',
                        showOnRoundabout: 'Mostrar en rotondas',
                        showOnUnpaved: 'Mostrar en caminos no pavimentados',
                        maxZoom: 'Renderizar hasta el nivel de zoom:',
                        toggleLayerShortcut: 'Alternar capa de exhibición de velocidad',
                        zIndex: 'Profundidad de la capa',
                        hideShorterSegments: 'Ocultar segmentos más pequeños que',
                        speedFilter: 'Filtrar por velocidad',
                        min: 'Mín.:',
                        max: 'Máx.:',
                        opacity: 'Nivel de opacidad del filtro:',
                    },
                    alertMessage: {
                        zIndex: `Al utilizar una profundidad de capa mayor a <b>${this.zIndex.warn}</b>, la capa de velocidad se superpondrá a las demás y no se podrá seleccionar ningún elemento hasta que la bajes de nuevo por debajo de <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Para activar/desactivar la capa de exhibición de velocidades, dirígete a <b>Capas del Mapa > Vías > Mostrar velocidades</b> o usa el acceso directo <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Predeterminado',
                        altViennaConv: 'Convención de Viena Alternativa',
                        japan: 'Japón',
                        uk: 'Reino Unido',
                        sacu: 'Unión Aduanera de África Austral',
                    },
                    btn: {
                        updateSettingsTab: 'Actualizar menú',
                        resetSettings: 'Restablecer configuración',
                        seeOnDiscuss: 'Ver en la Discusión',
                        seeOnDiscord: 'Ver en Discord',
                        scriptDevBy: 'Script desarrollado por Luan Tavares',
                    }
                };
            
                break;

            case 'es-419':
                // Latin-american spanish
                translations = {
                    name: 'Exhibición de Velocidad',
                    zoomOut: 'Alejar',
                    zoomIn: 'Acercar',
                    changelog: 'Registro de cambios',
                    changelogMessage: '<h6>Novedades:</h6><ul style="margin-bottom: 10px"><li>¡Nuevo diseño! La pestaña de configuración del script ha sido rediseñada;</li><li>¿Quieres ver iconos de velocidad que se parezcan más a los de tu país? Ahora puedes seleccionar temas;</li><li>¿Trabajas con varias pestañas de WME abiertas? No hay problema. Ahora todas las configuraciones se sincronizan simultáneamente entre todas las pestañas abiertas;</li><li>¿Necesitas que los iconos filtrados sean más translúcidos? ¡No hay problema! Ahora puedes elegir el nivel de transparencia que prefieras;</li><li>El script ahora muestra un mensaje mientras se cargan nuevos iconos. Hay un retraso intencionado en la carga;</li><li>Si introduces una velocidad mínima mayor que la máxima, el script borrará el último campo y mostrará un mensaje de advertencia;</li><li>Se ha añadido un interruptor en la pestaña de configuración del script para activar y desactivar los iconos. Todavía puedes hacerlo desde la pestaña "Capas del mapa" o con un atajo de teclado;</li><li>Gracias a la migración al SDK de WME, ahora puedes personalizar la tecla de acceso directo del script en el menú "Atajos de teclado";</li><li>Se han añadido nuevos botones al final de la pestaña del script para acceder al canal de Discord, al foro de Discuss y a mi perfil en WME;</li><li>El código del script ha sido parcialmente migrado al SDK de WME (no completamente debido a la falta de algunas funciones en el SDK).</li></ul><h6>Correcciones:</h6><ul><li>Debido a algunos cambios en la estructura del código, las configuraciones guardadas se restaurarán automáticamente;</li><li>El script ahora muestra la velocidad en el lado correcto cuando el país tiene conducción por la izquierda;</li><li>Varias correcciones menores y mejoras en el código.</li></ul>',
                    close: 'Cerrar',
                    viewScript: 'Ver script',
                    viewChangelog: 'Ver registro de cambios',
                    reset: 'Restablecer',
                    snackbar: {
                        updatingMapDisplay: 'Actualizando íconos del mapa. (Con retraso intencionado)',
                        errorFiltering: 'Error al aplicar el filtro. La velocidad mínima no puede ser mayor que la máxima.',
                    },
                    title: {
                        general: 'General',
                        roadTypes: 'Tipos de carretera',
                        filter: 'Filtro',
                        appearence: 'Apariencia',
                        showOnRoadType: 'Mostrar en los siguientes tipos de carretera:',
                        seeOnDiscuss: 'Ver el hilo del script en Discuss',
                        seeOnDiscord: 'Ver el canal del script en el servidor de Discord de Waze Script',
                        scriptDevBy: 'Ver mi perfil de usuario del editor',
                    },
                    label: {
                        displaySpeeds: 'Mostrar velocidades',
                        showNoSpeed: 'Mostrar en segmentos sin velocidad',
                        showOnRoundabout: 'Mostrar en rotondas',
                        showOnUnpaved: 'Mostrar en caminos no pavimentados',
                        maxZoom: 'Renderizar hasta el nivel de zoom:',
                        toggleLayerShortcut: 'Alternar capa de exhibición de velocidad',
                        zIndex: 'Profundidad de la capa',
                        hideShorterSegments: 'Ocultar segmentos más pequeños que',
                        speedFilter: 'Filtrar por velocidad',
                        min: 'Mín.:',
                        max: 'Máx.:',
                        opacity: 'Nivel de opacidad del filtro:',
                    },
                    alertMessage: {
                        zIndex: `Al utilizar una profundidad de capa mayor a <b>${this.zIndex.warn}</b>, la capa de velocidad se superpondrá a las demás y no se podrá seleccionar ningún elemento hasta que la bajes de nuevo por debajo de <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Para activar/desactivar la capa de exhibición de velocidades, dirígete a <b>Capas del Mapa > Vías > Mostrar velocidades</b> o usa el acceso directo <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Predeterminado',
                        altViennaConv: 'Convención de Viena Alternativa',
                        japan: 'Japón',
                        uk: 'Reino Unido',
                        sacu: 'Unión Aduanera de África Austral',
                    },
                    btn: {
                        updateSettingsTab: 'Actualizar menú',
                        resetSettings: 'Restablecer configuración',
                        seeOnDiscuss: 'Ver en el Debate',
                        seeOnDiscord: 'Ver en Discord',
                        scriptDevBy: 'Script desarrollado por Luan Tavares',
                    }
                };                
                
                break;

            case 'et':
                // Estonian
                translations = {
                    name: 'Kiiruskuva',
                    zoomOut: 'Kaugemal',
                    zoomIn: 'Lähemal',
                    changelog: 'Muudatuste ajalugu',
                    changelogMessage: '<h6>Uued funktsioonid:</h6><ul style="margin-bottom: 10px"><li>Uus välimus! Skripti seadete vahekaart on ümber kujundatud;</li><li>Soovid, et kiirusikoonid näeksid välja nagu sinu riigis? Nüüd saad valida teemasid;</li><li>Kasutad mitut WME vahekaarti korraga? Pole probleemi. Kõik seadistused sünkroonitakse nüüd automaatselt kõigi avatud vahekaartide vahel;</li><li>Kas soovid, et filtreeritud ikoonid oleksid läbipaistvamad? Pole muret! Nüüd saad valida soovitud läbipaistvuse taseme;</li><li>Skript kuvab nüüd sõnumi uute ikoonide laadimise ajal. Laadimisel on tahtlik viivitus;</li><li>Kui sisestad minimaalse kiiruse, mis on suurem kui maksimaalne, puhastab skript viimase välja ja kuvab hoiatuse;</li><li>Skripti seadete vahekaardile on lisatud lüliti, et ikoonid sisse või välja lülitada. Seda saab endiselt teha ka "Kaardikihid" vahekaardil või kiirklahvi abil;</li><li>Tänu üleminekule WME SDK-le saad nüüd skripti kiirklahvi kohandada menüüs "Klaviatuuri otseteed";</li><li>Skripti vahekaardi allossa on lisatud uued nupud, et pääseda Discordi kanalile, Discussi foorumile ja minu WME profiilile;</li><li>Skripti kood on osaliselt WME SDK-le üle viidud (mitte täielikult, kuna SDK-l puuduvad mõned vajalikud funktsioonid).</li></ul><h6>Parandused:</h6><ul><li>Koodistruktuuri muudatuste tõttu taastatakse salvestatud seaded automaatselt;</li><li>Skript kuvab nüüd kiiruse õigel küljel riikides, kus on vasakpoolne liiklus;</li><li>Mitmed väikesed parandused ja koodi täiustused.</li></ul>',
                    close: 'Sulge',
                    viewScript: 'Vaata skripti',
                    viewChangelog: 'Vaata muudatuste ajalugu',
                    reset: 'Lähtesta',
                    snackbar: {
                        updatingMapDisplay: 'Kaardi ikoonide värskendamine. (Tahtliku viivitusega)',
                        errorFiltering: 'Viga filtri rakendamisel. Minimaalne kiirus ei saa olla suurem kui maksimaalne.',
                    },
                    title: {
                        general: 'Üldine',
                        roadTypes: 'Teetüübid',
                        filter: 'Filtrid',
                        appearence: 'Välimus',
                        showOnRoadType: 'Kuva järgmistes teetüüpides:',
                        seeOnDiscuss: 'Vaata skripti teemat Discussis',
                        seeOnDiscord: 'Vaata skripti kanalit Waze Scripti Discord serveris',
                        scriptDevBy: 'Vaadake minu redaktori kasutajaprofiili',
                    },
                    label: {
                        displaySpeeds: 'Kuva kiirus',
                        showNoSpeed: 'Kuva ilma kiiruseta segmentidel',
                        showOnRoundabout: 'Kuva ringteel',
                        showOnUnpaved: 'Kuva kõvaketšimata teedel',
                        maxZoom: 'Kuva kuni suumi tasemeni:',
                        toggleLayerShortcut: 'Kiiruskuva kihi vahetamise otsetee',
                        zIndex: 'Kihi sügavus',
                        hideShorterSegments: 'Peida lühemad segmendid',
                        speedFilter: 'Filtreeri kiiruse järgi',
                        min: 'Miinimum:',
                        max: 'Maksimum:',
                        opacity: 'Filtri opakuse tasand:',
                    },
                    alertMessage: {
                        zIndex: `Kui kasutad kihi sügavust üle <b>${this.zIndex.warn}</b>, kattub kiiruskiht teiste kihtidega ja te ei saa valida ühtegi elementi ekraanil enne, kui vähendate kihi sügavust alla <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Kiiruskihtide nähtavuse vahetamiseks mine <b>Kaardi kihid > Teed > Kuvada kiirus</b> või kasuta kiirklahvi <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Vaikimisi',
                        altViennaConv: 'Alternatiivne Viini konventsioon',
                        japan: 'Jaapan',
                        uk: 'Ühendkuningriik',
                        sacu: 'Lõuna-Aafrika Tolliliit',
                    },
                    btn: {
                        updateSettingsTab: 'Uuenda menüü',
                        resetSettings: 'Lähtesta seaded',
                        seeOnDiscuss: 'Vaata arutelus',
                        seeOnDiscord: 'Vaata Discordis',
                        scriptDevBy: 'Skripti arendas Luan Tavares',
                    }
                };
            
                break;
            
            
            case 'eu':
                // Basque
                translations = {
                    name: 'Abiadura Erakustea',
                    zoomOut: 'Hurbilago',
                    zoomIn: 'Aldez aurretik',
                    changelog: 'Aldaketa erregistroa',
                    changelogMessage: '<h6>Berrikuntzak:</h6><ul style="margin-bottom: 10px"><li>Itxura berria! Script-aren ezarpenen fitxa berritu da;</li><li>Zure herrialdeko abiadura ikonoak bezalakoak nahi dituzu? Orain gaiak hautatu ditzakezu;</li><li>WMEko fitxa anitzekin lan egiten duzu? Ez dago arazorik. Orain ezarpen guztiak automatikoki sinkronizatuko dira fitxa guztien artean;</li><li>Iragazitako ikonoak gardenago nahi dituzu? Ez dago arazorik! Orain nahi duzun gardentasun maila hauta dezakezu;</li><li>Script-ak mezu bat erakutsiko du ikono berriak kargatzen ari den bitartean. Kargatzean nahita egindako atzerapena dago;</li><li>Gutxieneko abiadura maximoa baino handiagoa bada, script-ak azken eremua garbituko du eta abisu bat erakutsiko du;</li><li>Script-aren ezarpenen fitxan etengailu bat gehitu da ikonoak aktibatzeko eta desaktibatzeko. Oraindik "Mapa-geruzak" fitxatik edo lasterbide baten bidez egin daiteke;</li><li>WME SDK-ra migratzeari esker, orain script-aren lasterbide tekla pertsonaliza dezakezu "Teklatu-lasterbideak" menutik;</li><li>Script-aren fitxaren behealdean botoi berriak gehitu dira Discord kanala, Discuss foroa eta nire WME profila atzitzeko;</li><li>Script-aren kodea WME SDK-ra partzialki migratu da (ez guztiz, SDK-k funtzio batzuk falta dituelako).</li></ul><h6>Konponketak:</h6><ul><li>Kode-egituraren aldaketen ondorioz, gordetako ezarpenak automatikoki berreskuratuko dira;</li><li>Script-ak orain abiadura alde egokian erakusten du herrialdeek ezkerreko gidaritza dutenean;</li><li>Hainbat zuzenketa txiki eta kode hobekuntza.</li></ul>',
                    close: 'Itxi',
                    viewScript: 'Ikusi script-a',
                    viewChangelog: 'Ikusi aldaketak',
                    reset: 'Berrezarri',
                    snackbar: {
                        updatingMapDisplay: 'Mapa-ikonoak eguneratzen. (Atzerapen intzentzionalarekin)',
                        errorFiltering: 'Errorea iragazkia aplikatzean. Gutxieneko abiadura ezin da handiagoa izan gehienekoa baino.',
                    },
                    title: {
                        general: 'Orokorra',
                        roadTypes: 'Errepide motak',
                        filter: 'Filtratu',
                        appearence: 'Itxura',
                        showOnRoadType: 'Erakutsi hurrengo errepide motetan:',
                        seeOnDiscuss: 'Ikusi skriptaren haria Discuss-en',
                        seeOnDiscord: 'Ikusi skriptaren kanala Waze Script-en Discord zerbitzuan',
                        scriptDevBy: 'Ikusi nire editorearen erabiltzaile-profila',
                    },
                    label: {
                        displaySpeeds: 'Erakutsi abiadurak',
                        showNoSpeed: 'Erakutsi abiadurarik gabeko segmentuetan',
                        showOnRoundabout: 'Erakutsi biribilguneetan',
                        showOnUnpaved: 'Erakutsi asfaltatu gabeko bideetan',
                        maxZoom: 'Erakutsi zoom maila honetara arte:',
                        toggleLayerShortcut: 'Abiadura geruza aldatu laburdura',
                        zIndex: 'Geruzaren sakonera',
                        hideShorterSegments: 'Ezkutatu segmentu txikiagoak',
                        speedFilter: 'Iragazi abiaduraren arabera',
                        min: 'Gutxiengoa:',
                        max: 'Maximoa:',
                        opacity: 'Filtroko opazitatea maila:',
                    },
                    alertMessage: {
                        zIndex: `Geruza sakonera <b>${this.zIndex.warn}</b> baino handiagoa bada, abiadura geruzak beste geruzak estaliko ditu eta ezin izango duzu elementurik aukeratu pantailan, <b>${this.zIndex.warn}</b> baino baxuagoa den geruzarekin berriro jaitsi arte.`,
                        toggleVisibility: `Abiadura geruza bistaratzea aktibatu/itzaltzeko, joan <b>Mapa geruzak > Bideak > Abiadura erakutsi</b> eta erabili laburdura <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Definitibo',
                        altViennaConv: 'Alternatibo Vienna Konbentzioa',
                        japan: 'Japonia',
                        uk: 'Erresuma Batua',
                        sacu: 'Hegoaldeko Afrikako Aduana Batasuna',
                    },
                    btn: {
                        updateSettingsTab: 'Eguneratu menu',
                        resetSettings: 'Berrezarri ezarpenak',
                        seeOnDiscuss: 'Ikusi eztabaidan',
                        seeOnDiscord: 'Ikusi Discord-en',
                        scriptDevBy: 'Script-a Luan Tavares-ek garatu du',
                    }
                };
            
                break;
            
            case 'fa-IR':
                // Persian (Iran)
                translations = {
                    name: 'نمایش سرعت',
                    zoomOut: 'بیشتر دور',
                    zoomIn: 'بیشتر نزدیک',
                    changelog: 'تغییرات ثبت شده',
                    changelogMessage: '<h6>ویژگی‌های جدید:</h6><ul style="margin-bottom: 10px"><li>ظاهر جدید! تب تنظیمات اسکریپت دوباره طراحی شده است؛</li><li>آیا می‌خواهید آیکون‌های سرعت را مطابق با کشور خود ببینید؟ اکنون می‌توانید تم‌ها را انتخاب کنید؛</li><li>با چندین تب WME کار می‌کنید؟ مشکلی نیست. اکنون تمامی تنظیمات به‌طور هم‌زمان در تمامی تب‌های باز همگام‌سازی می‌شوند؛</li><li>آیا می‌خواهید آیکون‌های فیلتر شده شفاف‌تر باشند؟ مشکلی نیست! اکنون می‌توانید سطح شفافیت مورد نظر خود را انتخاب کنید؛</li><li>اکنون اسکریپت هنگام بارگذاری آیکون‌های جدید پیامی نمایش می‌دهد. در بارگذاری تأخیری عمدی وجود دارد؛</li><li>اگر حداقل سرعتی بیشتر از حداکثر سرعت وارد کنید، اسکریپت مقدار فیلد آخر را پاک کرده و یک پیام هشدار نمایش می‌دهد؛</li><li>یک سوئیچ در تب تنظیمات اسکریپت اضافه شده است تا بتوانید آیکون‌ها را فعال یا غیرفعال کنید. همچنان می‌توانید این کار را از تب "لایه‌های نقشه" یا با یک میانبر انجام دهید؛</li><li>با مهاجرت به SDK جدید WME، اکنون می‌توانید کلید میانبر اسکریپت را در منوی "میانبرهای صفحه کلید" شخصی‌سازی کنید؛</li><li>دکمه‌های جدیدی در پایین تب اسکریپت اضافه شده است که به کانال دیسکورد، فروم Discuss و پروفایل WME من دسترسی پیدا کنید؛</li><li>کد اسکریپت به‌طور جزئی به SDK جدید WME منتقل شده است (انتقال کامل انجام نشده است، زیرا برخی از قابلیت‌ها در SDK موجود نیستند).</li></ul><h6>اصلاحات:</h6><ul><li>به دلیل تغییرات در ساختار کد، تنظیمات ذخیره‌شده به‌طور خودکار بازیابی می‌شوند؛</li><li>اکنون اسکریپت سرعت را در سمت درست برای کشورهایی که رانندگی در سمت چپ دارند نمایش می‌دهد؛</li><li>اصلاحات جزئی و بهبودهای مختلف در کد.</li></ul>',
                    close: 'بستن',
                    viewScript: 'مشاهده اسکریپت',
                    viewChangelog: 'مشاهده تغییرات ثبت شده',
                    reset: 'بازنشانی',
                    snackbar: {
                        updatingMapDisplay: 'به‌روزرسانی نمادهای نقشه. (با تأخیر عمدی)',
                        errorFiltering: 'خطا در اعمال فیلتر. حداقل سرعت نمی‌تواند بیشتر از حداکثر باشد.',
                    },
                    title: {
                        general: 'عمومی',
                        roadTypes: 'انواع جاده‌ها',
                        filter: 'فیلتر',
                        appearence: 'ظاهر',
                        showOnRoadType: 'نمایش در انواع جاده‌های زیر:',
                        seeOnDiscuss: 'مطالعه موضوع اسکریپت در Discuss',
                        seeOnDiscord: 'مشاهده کانال اسکریپت در سرور Discord اسکریپت‌های Waze',
                        scriptDevBy: 'مشاهده نمایه کاربری ویرایشگر من',
                    },
                    label: {
                        displaySpeeds: 'نمایش سرعت ها',
                        showNoSpeed: 'نمایش در بخش هایی بدون سرعت',
                        showOnRoundabout: 'نمایش در چرخشگاه ها',
                        showOnUnpaved: 'نمایش در جاده های خاکی',
                        maxZoom: 'نمایش تا زوم:',
                        toggleLayerShortcut: 'تغییر لایه نمایش سرعت',
                        zIndex: 'عمق لایه',
                        hideShorterSegments: 'مخفی کردن بخش های کوتاه تر از',
                        speedFilter: 'فیلتر بر اساس سرعت',
                        min: 'حداقل:',
                        max: 'حداکثر:',
                        opacity: 'سطح شفافیت فیلتر:',
                    },
                    alertMessage: {
                        zIndex: `اگر از عمق لایه بیشتر از <b>${this.zIndex.warn}</b> استفاده کنید، لایه سرعت بر روی لایه های دیگر قرار می گیرد و شما نمی توانید هیچ عنصری را در صفحه انتخاب کنید تا زمانی که عمق لایه را به کمتر از <b>${this.zIndex.warn}</b> کاهش دهید.`,
                        toggleVisibility: `برای فعال/غیرفعال کردن لایه نمایش سرعت، به <b>لایه های نقشه > جاده ها > نمایش سرعت</b> بروید یا از میانبر <b>ALT</b> + <b>SHIFT</b> + <b>S</b> استفاده کنید`
                    },
                    theme: {
                        default: 'پیش‌فرض',
                        altViennaConv: 'کنوانسیون وین جایگزین',
                        japan: 'ژاپن',
                        uk: 'پادشاهی متحد',
                        sacu: 'اتحادیه گمرکی جنوب آفریقا',
                    },
                    btn: {
                        updateSettingsTab: 'به روز رسانی منو',
                        resetSettings: 'بازنشانی تنظیمات',
                        seeOnDiscuss: 'مشاهده در بحث',
                        seeOnDiscord: 'مشاهده در دیسکورد',
                        scriptDevBy: 'اسکریپت توسط لوان تاوارس توسعه داده شده است',
                    }
                };
            
                break;

            case 'fi':
                // Finnish
                translations = {
                    name: 'Nopeusnäyttö',
                    zoomOut: 'Laajenna',
                    zoomIn: 'Lähennä',
                    changelog: 'Muutokset',
                    changelogMessage: '<h6>Uutta:</h6><ul style="margin-bottom: 10px"><li>Uusi ulkoasu! Skriptin asetusvälilehti on uudistettu;</li><li>Haluatko nopeusikonit näyttämään enemmän kotimaasi mukaisilta? Nyt voit valita teemoja;</li><li>Käytätkö useita WME-välilehtiä samanaikaisesti? Ei ongelmaa. Kaikki asetukset synkronoidaan nyt automaattisesti avoimien välilehtien välillä;</li><li>Haluatko suodatettujen kuvakkeiden olevan läpikuultavampia? Ei hätää! Voit nyt valita haluamasi läpinäkyvyystason;</li><li>Skripti näyttää nyt viestin ladatessaan uusia kuvakkeita. Latauksessa on tarkoituksellinen viive;</li><li>Jos syötät pienimmän nopeuden, joka on suurempi kuin suurin, skripti tyhjentää viimeisen kentän ja näyttää varoitusviestin;</li><li>Asetusvälilehdelle on lisätty kytkin kuvakkeiden ottamiseksi käyttöön tai poistamiseksi käytöstä. Voit edelleen tehdä tämän myös "Karttatasot"-välilehdellä tai pikanäppäimellä;</li><li>Siirtymällä WME SDK:hon voit nyt mukauttaa skriptin pikanäppäimen "Näppäimistön pikanäppäimet" -valikossa;</li><li>Lisätty uusia painikkeita skriptin välilehden alaosaan Discord-kanavalle, Discuss-foorumiin ja WME-profiiliini siirtymiseen;</li><li>Skriptin koodi on osittain siirretty WME SDK:hon (ei täysin, koska SDK:sta puuttuu joitain ominaisuuksia).</li></ul>',
                    close: 'Sulje',
                    viewScript: 'Näytä skripti',
                    viewChangelog: 'Näytä muutokset',
                    reset: 'Palauta',
                    snackbar: {
                        updatingMapDisplay: 'Päivitetään karttakuvakkeita. (Tarkoituksellisella viiveellä)',
                        errorFiltering: 'Virhe suodatinta sovellettaessa. Vähimmäisnopeus ei voi olla suurempi kuin enimmäisnopeus.',
                    },
                    title: {
                        general: 'Yleiset',
                        roadTypes: 'Tiestötyypit',
                        filter: 'Suodatin',
                        appearence: 'Ulkoasu',
                        showOnRoadType: 'Näytä seuraavilla tietyyppien alueilla:',
                        seeOnDiscuss: 'Katso skriptin ketju Discussissa',
                        seeOnDiscord: 'Katso skriptin kanava Waze Scriptin Discord-palvelimella',
                        scriptDevBy: 'Näytä editorini käyttäjäprofiili',
                    },
                    label: {
                        displaySpeeds: 'Näytä nopeudet',
                        showNoSpeed: 'Näytä segmentissä, jossa ei ole nopeutta',
                        showOnRoundabout: 'Näytä liikenneympyrässä',
                        showOnUnpaved: 'Näytä päällystämättömällä tiellä',
                        maxZoom: 'Renderöi zoom-tasoon asti:',
                        toggleLayerShortcut: 'Vaihda nopeuskerroksen näkyvyyttä',
                        zIndex: 'Kerrosjärjestys',
                        hideShorterSegments: 'Piilota lyhyemmät segmentit kuin',
                        speedFilter: 'Suodata nopeuden mukaan',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Suodattimen läpinäkyvyysaste:',
                    },
                    alertMessage: {
                        zIndex: `Kun käytät suurempaa kerrosjärjestystä kuin <b>${this.zIndex.warn}</b>, nopeuskerros peittää muut ja et voi valita mitään elementtiä näytöltä, ennen kuin lasket sen takaisin alle <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Voit aktivoida/poistaa käytöstä nopeuskerroksen menemällä kohtaan <b>Karttatasot > Tiet > Näytä nopeudet</b> tai käyttämällä pikanäppäintä <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Oletus',
                        altViennaConv: 'Vaihtoehtoinen Wienin sopimus',
                        japan: 'Japani',
                        uk: 'Yhdistynyt kuningaskunta',
                        sacu: 'Etelä-Afrikan tulliliitto',
                    },
                    btn: {
                        updateSettingsTab: 'Päivitä valikko',
                        resetSettings: 'Palauta asetukset',
                        seeOnDiscuss: 'Katso keskustelussa',
                        seeOnDiscord: 'Katso Discordissa',
                        scriptDevBy: 'Skriptin on kehittänyt Luan Tavares',
                    }
                };

                break;

            case 'fr':
                // French
                translations = {
                    name: 'Affichage de la vitesse',
                    zoomOut: 'Zoom arrière',
                    zoomIn: 'Zoom avant',
                    changelog: 'Journal des modifications',
                    changelogMessage: '<h6>Nouveautés :</h6><ul style="margin-bottom: 10px"><li>Nouveau design ! L’onglet des paramètres du script a été repensé ;</li><li>Vous souhaitez voir les icônes de vitesse ressembler davantage à celles de votre pays ? Vous pouvez désormais choisir des thèmes ;</li><li>Vous travaillez avec plusieurs onglets WME ouverts ? Aucun problème. Toutes les configurations sont maintenant synchronisées simultanément entre tous les onglets ouverts ;</li><li>Besoin de rendre les icônes filtrées plus transparentes ? Pas de souci ! Vous pouvez désormais choisir le niveau de transparence souhaité ;</li><li>Le script affiche désormais un message lors du chargement des nouvelles icônes. Un délai intentionnel a été ajouté au chargement ;</li><li>Si vous saisissez une vitesse minimale supérieure à la vitesse maximale, le script effacera le dernier champ et affichera un message d’avertissement ;</li><li>Ajout d’un interrupteur dans l’onglet des paramètres du script pour activer ou désactiver les icônes. Il est toujours possible de le faire via l’onglet "Couches de la carte" ou via un raccourci clavier ;</li><li>Grâce à la migration vers le SDK WME, vous pouvez maintenant personnaliser le raccourci clavier du script dans le menu "Raccourcis clavier" ;</li><li>Ajout de nouveaux boutons en bas de l’onglet du script pour accéder au canal Discord, au forum Discuss et à mon profil WME ;</li><li>Code du script partiellement migré vers le SDK WME (non totalement en raison de certaines fonctionnalités manquantes dans le SDK).</li></ul><h6>Corrections :</h6><ul><li>En raison de certaines modifications de la structure du code, les paramètres déjà enregistrés seront restaurés automatiquement ;</li><li>Le script affiche désormais la vitesse du bon côté dans les pays où la conduite se fait à gauche ;</li><li>Diverses petites corrections et améliorations du code.</li></ul>',
                    close: 'Fermer',
                    viewScript: 'Voir le script',
                    viewChangelog: 'Voir le journal des modifications',
                    reset: 'Réinitialiser',
                    snackbar: {
                        updatingMapDisplay: 'Mise à jour des icônes de la carte. (Avec un délai intentionnel)',
                        errorFiltering: 'Erreur lors de l’application du filtre. La vitesse minimale ne peut pas être supérieure à la maximale.',
                    },
                    title: {
                        general: 'Général',
                        roadTypes: 'Types de route',
                        filter: 'Filtrer',
                        appearence: 'Apparence',
                        showOnRoadType: 'Afficher sur les types de route suivants :',
                        seeOnDiscuss: 'Voir le fil du script sur Discuss',
                        seeOnDiscord: 'Voir le canal du script sur le serveur Discord de Waze Script',
                        scriptDevBy: 'Voir mon profil utilisateur de l’éditeur',
                    },
                    label: {
                        displaySpeeds: 'Afficher les vitesses',
                        showNoSpeed: 'Afficher sur les segments sans vitesse',
                        showOnRoundabout: 'Afficher sur le rond-point',
                        showOnUnpaved: 'Afficher sur la voie non pavée',
                        maxZoom: 'Rendre jusqu\'au zoom :',
                        toggleLayerShortcut: 'Alterner la visibilité de la couche de vitesse',
                        zIndex: 'Profondeur de la couche',
                        hideShorterSegments: 'Masquer sur les segments plus petits que',
                        speedFilter: 'Filtrer par vitesse',
                        min: 'Min. :',
                        max: 'Max. :',
                        opacity: 'Niveau de transparence du filtre:',
                    },
                    alertMessage: {
                        zIndex: `Lorsque vous utilisez une profondeur de couche supérieure à <b>${this.zIndex.warn}</b>, la couche de vitesse va se superposer aux autres et vous ne pourrez sélectionner aucun élément sur l\'écran jusqu\'à ce que vous la fassiez descendre sous <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Pour activer/désactiver la couche de vitesse, allez dans <b>Couches de la carte > Routes > Afficher les vitesses</b> ou utilisez le raccourci <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Par défaut',
                        altViennaConv: 'Convention de Vienne alternative',
                        japan: 'Japon',
                        uk: 'Royaume-Uni',
                        sacu: 'Union douanière d\'Afrique australe',
                    },
                    btn: {
                        updateSettingsTab: 'Mettre à jour le menu',
                        resetSettings: 'Réinitialiser les paramètres',
                        seeOnDiscuss: 'Voir sur la discussion',
                        seeOnDiscord: 'Voir sur Discord',
                        scriptDevBy: 'Script développé par Luan Tavares',
                    }
                };
                
                break;

            case 'gl':
                // Galician
                translations = {
                    name: 'Exhibición de velocidade',
                    zoomOut: 'Máis afastado',
                    zoomIn: 'Máis achegado',
                    changelog: 'Rexistro de cambios',
                    changelogMessage: '<h6>Novedades:</h6><ul style="margin-bottom: 10px"><li>Nova aparencia! A lapela de configuracións do script foi redeseñada;</li><li>Queres que as iconas de velocidade se parezan ás do teu país? Agora podes escoller entre diferentes temas;</li><li>Traballas con varias lapelas de WME abertas? Non hai problema. Agora todas as configuracións están sincronizadas automaticamente entre todas as lapelas abertas;</li><li>Necesitas que as iconas filtradas sexan máis translúcidas? Xa non hai problema! Agora podes escoller o nivel de transparencia que prefiras;</li><li>Agora o script mostra unha mensaxe mentres carga novas iconas. Hai un atraso intencional no proceso de carga;</li><li>Se introduces unha velocidade mínima maior que a máxima, o script limpará o último campo e mostrará unha mensaxe de aviso;</li><li>Engadiuse un interruptor na lapela de configuracións do script para activar ou desactivar as iconas. Aínda é posible facelo a través da lapela de "Capas do mapa" ou cun atallo de teclado;</li><li>Grazas á migración ao SDK do WME, agora podes personalizar a tecla de atallo do script no menú de "Atallos do teclado";</li><li>Engadíronse novos botóns na parte inferior da lapela do script para acceder ao canal de Discord, ao foro de Discuss e ao meu perfil en WME;</li><li>O código do script foi migrado parcialmente ao SDK do WME (non totalmente debido á falta dalgúns recursos no SDK).</li></ul><h6>Correccións:</h6><ul><li>Debido a cambios na estrutura do código, as configuracións gardadas restableceranse automaticamente;</li><li>Agora o script mostra a velocidade no lado correcto nos países con condución pola esquerda;</li><li>Diversas correccións menores e melloras no código.</li></ul>',
                    close: 'Pechar',
                    viewScript: 'Ver script',
                    viewChangelog: 'Ver rexistro de cambios',
                    reset: 'Restablecer',
                    snackbar: {
                        updatingMapDisplay: 'Actualizando iconas do mapa. (Con atraso intencionado)',
                        errorFiltering: 'Erro ao aplicar o filtro. A velocidade mínima non pode ser maior que a máxima.',
                    },
                    title: {
                        general: 'Xeral',
                        roadTypes: 'Tipos de estrada',
                        filter: 'Filtro',
                        appearence: 'Aparencia',
                        showOnRoadType: 'Amosar nos seguintes tipos de estrada:',
                        seeOnDiscuss: 'Ver o fío do script en Discuss',
                        seeOnDiscord: 'Ver o canal do script no servidor Discord de Waze Script',
                        scriptDevBy: 'Ver o meu perfil de usuario do editor',
                    },
                    label: {
                        displaySpeeds: 'Exhibir velocidades',
                        showNoSpeed: 'Exhibir en segmentos sen velocidade',
                        showOnRoundabout: 'Exhibir en rotondas',
                        showOnUnpaved: 'Exhibir en vías non pavimentadas',
                        maxZoom: 'Renderizar ata o zoom:',
                        toggleLayerShortcut: 'Alternar capa de exhibición de velocidade',
                        zIndex: 'Profundidade da capa',
                        hideShorterSegments: 'Ocultar en segmentos máis pequenos que',
                        speedFilter: 'Filtrar por velocidade',
                        min: 'Mín.:',
                        max: 'Máx.:',
                        opacity: 'Nivel de opacidade do filtro:',
                    },
                    alertMessage: {
                        zIndex: `Ao usar unha profundidade de capa maior que <b>${this.zIndex.warn}</b>, a capa de velocidade cubrirá outras capas e non poderá seleccionar ningún elemento na pantalla ata que a baixe por debaixo de <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Para activar/desactivar a capa de exhibición de velocidades, vai a <b>Capas do mapa > Vías > Exhibir velocidades</b> ou utiliza o atallo <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Por defecto',
                        altViennaConv: 'Convención de Viena alternativa',
                        japan: 'Japón',
                        uk: 'Reino Unido',
                        sacu: 'Unión Aduanera de África Austral',
                    },
                    btn: {
                        updateSettingsTab: 'Actualizar menú',
                        resetSettings: 'Restablecer configuracións',
                        seeOnDiscuss: 'Ver na discusión',
                        seeOnDiscord: 'Ver en Discord',
                        scriptDevBy: 'Script desenvolvido por Luan Tavares',
                    }
                };
            
                break;
            
            case 'he':
                // Hebrew
                translations = {
                    name: 'הצגת מהירות',
                    zoomOut: 'מרחוק יותר',
                    zoomIn: 'מקרוב יותר',
                    changelog: 'יומן שינויים',
                    changelogMessage: '<h6>חידושים:</h6><ul style="margin-bottom: 10px"><li>מראה חדש! לשונית ההגדרות של הסקריפט עוצבה מחדש;</li><li>רוצה שהאייקונים של המהירות ייראו כמו במדינה שלך? עכשיו ניתן לבחור נושאים;</li><li>עובד עם מספר כרטיסיות WME פתוחות? אין בעיה. כל ההגדרות מסונכרנות כעת בו-זמנית בין כל הכרטיסיות הפתוחות;</li><li>צריך להפוך את האייקונים המסוננים לשקופים יותר? עכשיו ניתן לבחור את רמת השקיפות הרצויה;</li><li>הסקריפט כעת מציג הודעה בזמן טעינת אייקונים חדשים. קיים עיכוב מכוון בתהליך הטעינה;</li><li>אם תזין מהירות מינימלית גבוהה מהמהירות המקסימלית, הסקריפט ינקה את השדה האחרון ויציג הודעת אזהרה;</li><li>נוסף מתג בהגדרות הסקריפט להפעלת וכיבוי האייקונים. ניתן להפעיל/לכבות גם דרך לשונית "שכבות מפה" או באמצעות קיצור מקשים;</li><li>בזכות המעבר ל-SDK של WME, ניתן להתאים אישית את קיצור הדרך של הסקריפט בתפריט "קיצורי מקלדת";</li><li>נוספו כפתורים חדשים בתחתית לשונית הסקריפט כדי לגשת לערוץ הדיסקורד, לפורום Discuss ולפרופיל שלי ב-WME;</li><li>קוד הסקריפט הועבר באופן חלקי ל-SDK של WME (לא במלואו עקב היעדר תכונות מסוימות ב-SDK).</li></ul><h6>תיקונים:</h6><ul><li>עקב שינויים במבנה הקוד, ההגדרות שנשמרו ישוחזרו אוטומטית;</li><li>הסקריפט כעת מציג את המהירות בצד הנכון במדינות עם נהיגה בצד שמאל;</li><li>תיקונים ושיפורים קלים נוספים בקוד.</li></ul>',
                    close: 'סגור',
                    viewScript: 'צפה בסקריפט',
                    viewChangelog: 'צפה ביומן השינויים',
                    reset: 'אפס',
                    snackbar: {
                        updatingMapDisplay: 'מעדכן סמלי מפה. (בעיכוב מכוון)',
                        errorFiltering: 'שגיאה ביישום המסנן. המהירות המינימלית לא יכולה להיות גבוהה מהמהירות המרבית.',
                    },
                    title: {
                        general: 'כללי',
                        roadTypes: 'סוגי דרכים',
                        filter: 'סנן',
                        appearence: 'מראה',
                        showOnRoadType: 'הצג על סוגי הדרכים הבאים:',
                        seeOnDiscuss: 'ראה את השרשור של הסקריפט ב-Discuss',
                        seeOnDiscord: 'ראה את הערוץ של הסקריפט בשרת Discord של Waze Script',
                        scriptDevBy: 'הצג את פרופיל המשתמש של העורך שלי',
                    },
                    label: {
                        displaySpeeds: 'הצג מהירויות',
                        showNoSpeed: 'הצג בקטעים ללא מהירות',
                        showOnRoundabout: 'הצג בכיכרות',
                        showOnUnpaved: 'הצג בדרכים לא סלוליות',
                        maxZoom: 'הצג עד לזום:',
                        toggleLayerShortcut: 'החלף שכבת הצגת מהירות',
                        zIndex: 'עומק השכבה',
                        hideShorterSegments: 'הסתר בקטעים קצרים מ-',
                        speedFilter: 'סנן לפי מהירות',
                        min: 'מינימום:',
                        max: 'מקסימום:',
                        opacity: 'רמת שקיפות המסנן:',
                    },
                    alertMessage: {
                        zIndex: `כאשר משתמשים בעומק שכבה גבוה יותר מ- <b>${this.zIndex.warn}</b>, שכבת המהירות תכסה שכבות אחרות ולא ניתן יהיה לבחור אף פריט על המסך עד שתרד את עומק השכבה מתחת ל- <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `כדי להפעיל/לכבות את שכבת הצגת המהירויות, פשוט לכו ל- <b>שכבות המפה > דרכים > הצג מהירויות</b> או השתמשו בקיצור הדרך <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'ברירת מחדל',
                        altViennaConv: 'אמנת וינה חלופין',
                        japan: 'יפן',
                        uk: 'הממלכה המאוחדת',
                        sacu: 'איחוד המכס של דרום אפריקה',
                    },
                    btn: {
                        updateSettingsTab: 'עדכן תפריט',
                        resetSettings: 'אפס הגדרות',
                        seeOnDiscuss: 'ראה בדיון',
                        seeOnDiscord: 'ראה ב-Discord',
                        scriptDevBy: 'הסקריפט פותח על ידי לואן טאווארס',
                    }
                };
            
                break;
            
            case 'hi':
                // Hindi
                translations = {
                    name: 'स्पीड डिस्प्ले',
                    zoomOut: 'और दूर',
                    zoomIn: 'और पास',
                    changelog: 'चेंजलॉग',
                    changelogMessage: '<h6>नई विशेषताएँ:</h6><ul style="margin-bottom: 10px"><li>नया रूप! स्क्रिप्ट की सेटिंग्स टैब को फिर से डिज़ाइन किया गया है;</li><li>क्या आप चाहते हैं कि गति चिह्न आपके देश के अनुसार दिखें? अब आप थीम चुन सकते हैं;</li><li>क्या आप कई WME टैब के साथ काम कर रहे हैं? कोई समस्या नहीं। अब सभी सेटिंग्स सभी खुले टैब में एक साथ सिंक्रनाइज़ हो जाती हैं;</li><li>क्या आपको फ़िल्टर किए गए आइकन को अधिक पारदर्शी बनाना है? अब आप अपनी पसंद के अनुसार पारदर्शिता स्तर चुन सकते हैं;</li><li>अब स्क्रिप्ट नए आइकनों को लोड करते समय एक संदेश प्रदर्शित करती है। लोडिंग में जानबूझकर देरी जोड़ी गई है;</li><li>यदि आप न्यूनतम गति को अधिकतम गति से अधिक दर्ज करते हैं, तो स्क्रिप्ट अंतिम फ़ील्ड को साफ़ कर देगी और एक चेतावनी संदेश दिखाएगी;</li><li>स्क्रिप्ट सेटिंग्स टैब में एक टॉगल स्विच जोड़ा गया है ताकि आइकन चालू या बंद किए जा सकें। आप इसे "मानचित्र परतें" टैब या कीबोर्ड शॉर्टकट से भी नियंत्रित कर सकते हैं;</li><li>WME SDK में माइग्रेशन के कारण, अब आप कीबोर्ड शॉर्टकट सेटिंग्स में स्क्रिप्ट के शॉर्टकट कुंजी को कस्टमाइज़ कर सकते हैं;</li><li>स्क्रिप्ट टैब के नीचे नए बटन जोड़े गए हैं, जिससे आप डिस्कॉर्ड चैनल, डिस्कस फोरम और मेरे WME प्रोफाइल तक पहुँच सकते हैं;</li><li>स्क्रिप्ट को جز़्वी रूप से WME SDK में माइग्रेट किया गया है (कुछ आवश्यक विशेषताओं की अनुपलब्धता के कारण पूरी तरह से नहीं)।</li></ul><h6>सुधार:</h6><ul><li>कोड संरचना में परिवर्तन के कारण, पहले से सहेजी गई सेटिंग्स स्वचालित रूप से पुनर्स्थापित हो जाएंगी;</li><li>अब स्क्रिप्ट उन देशों में सही दिशा में गति दिखाती है जहाँ बाईं ओर ड्राइविंग होती है;</li><li>विभिन्न छोटे सुधार और बग फिक्स।</li></ul>',
                    close: 'बंद करें',
                    viewScript: 'स्क्रिप्ट देखें',
                    viewChangelog: 'चेंजलॉग देखें',
                    reset: 'रीसेट',
                    snackbar: {
                        updatingMapDisplay: 'मानचित्र चिह्न अपडेट किए जा रहे हैं। (जानबूझकर देरी के साथ)',
                        errorFiltering: 'फ़िल्टर लागू करने में त्रुटि। न्यूनतम गति अधिकतम से अधिक नहीं हो सकती।',
                    },
                    title: {
                        general: 'सामान्य',
                        roadTypes: 'सड़क प्रकार',
                        filter: 'फ़िल्टर',
                        appearence: 'रूप',
                        showOnRoadType: 'निम्नलिखित सड़क प्रकारों पर दिखाएं:',
                        seeOnDiscuss: 'Discuss पर स्क्रिप्ट का थ्रेड देखें',
                        seeOnDiscord: 'Waze Script के Discord सर्वर पर स्क्रिप्ट चैनल देखें',
                        scriptDevBy: 'मेरा संपादक उपयोगकर्ता प्रोफ़ाइल देखें',
                    },
                    label: {
                        displaySpeeds: 'गति दिखाएं',
                        showNoSpeed: 'गति के बिना सेगमेंट में दिखाएं',
                        showOnRoundabout: 'राउंडअबाउट में दिखाएं',
                        showOnUnpaved: 'अस्फल्टेड सड़कों पर दिखाएं',
                        maxZoom: 'जूम स्तर तक रेंडर करें:',
                        toggleLayerShortcut: 'स्पीड डिस्प्ले लेयर बदलें',
                        zIndex: 'लेयर की गहराई',
                        hideShorterSegments: 'छोटे सेगमेंट को छुपाएं',
                        speedFilter: 'गति के अनुसार फ़िल्टर करें',
                        min: 'न्यूनतम:',
                        max: 'अधिकतम:',
                        opacity: 'फ़िल्टर अपारदर्शिता स्तर:',
                    },
                    alertMessage: {
                        zIndex: `यदि आप <b>${this.zIndex.warn}</b> से बड़ी लेयर गहराई का उपयोग करते हैं, तो स्पीड डिस्प्ले अन्य लेयर्स के ऊपर आ जाएगा और स्क्रीन पर कोई भी तत्व चयनित नहीं किया जा सकेगा, जब तक कि आप इसे <b>${this.zIndex.warn}</b> से नीचे नहीं कर देते।`,
                        toggleVisibility: `स्पीड डिस्प्ले लेयर को सक्रिय/निष्क्रिय करने के लिए, बस <b>मैप लेयर्स > सड़कें > स्पीड डिस्प्ले</b> पर जाएं या शॉर्टकट का उपयोग करें <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'डिफ़ॉल्ट',
                        altViennaConv: 'वैकल्पिक वियना सम्मेलन',
                        japan: 'जापान',
                        uk: 'संयुक्त राज्य',
                        sacu: 'दक्षिण अफ़्रीकी सीमा शुल्क संघ',
                    },
                    btn: {
                        updateSettingsTab: 'मेन्‍यू अपडेट करें',
                        resetSettings: 'सेटिंग्स रीसेट करें',
                        seeOnDiscuss: 'चर्चा में देखें',
                        seeOnDiscord: 'Discord पर देखें',
                        scriptDevBy: 'स्क्रिप्ट लुआन तावरेस द्वारा विकसित की गई है',
                    }
                };
            
                break;
            
            case 'hr':
                // Croatian
                translations = {
                    name: 'Prikaz brzine',
                    zoomOut: 'Više udaljeno',
                    zoomIn: 'Više približeno',
                    changelog: 'Povijest izmjena',
                    changelogMessage: '<h6>Novosti:</h6><ul style="margin-bottom: 10px"><li>Novi izgled! Kartica s postavkama skripte je redizajnirana;</li><li>Želite li da ikone brzine izgledaju kao one u vašoj zemlji? Sada možete birati između tema;</li><li>Radite s više otvorenih WME kartica? Nema problema. Sve postavke sada su sinkronizirane između svih otvorenih kartica;</li><li>Želite li da filtrirane ikone budu prozirnije? Sada možete sami odabrati razinu prozirnosti;</li><li>Skripta sada prikazuje poruku dok učitava nove ikone. Namjerno je dodano malo kašnjenje prilikom učitavanja;</li><li>Ako unesete minimalnu brzinu veću od maksimalne, skripta će izbrisati posljednje polje i prikazati upozorenje;</li><li>Dodana je sklopka u kartici postavki skripte za uključivanje i isključivanje ikona. Još uvijek ih možete uključiti/isključiti putem kartice "Slojevi karte" ili prečaca na tipkovnici;</li><li>Zahvaljujući migraciji na WME SDK, sada možete prilagoditi prečac skripte u izborniku "Tipkovnički prečaci";</li><li>Dodani su novi gumbi na dnu kartice skripte za pristup Discord kanalu, Discuss forumu i mom WME profilu;</li><li>Kod skripte je djelomično migriran na WME SDK (nije u potpunosti zbog nedostatka određenih funkcionalnosti u SDK-u).</li></ul><h6>Ispravci:</h6><ul><li>Zbog promjena u strukturi koda, prethodno spremljene postavke bit će automatski vraćene;</li><li>Skripta sada prikazuje brzinu na ispravnoj strani u zemljama s lijevom stranom vožnje;</li><li>Razni manji ispravci i poboljšanja koda.</li></ul>',
                    close: 'Zatvori',
                    viewScript: 'Pogledaj skriptu',
                    viewChangelog: 'Pogledaj povijest izmjena',
                    reset: 'Poništi',
                    snackbar: {
                        updatingMapDisplay: 'Ažuriranje ikona na karti. (S namjernim kašnjenjem)',
                        errorFiltering: 'Pogreška pri primjeni filtra. Minimalna brzina ne može biti veća od maksimalne.',
                    },
                    title: {
                        general: 'Općenito',
                        roadTypes: 'Vrste cesta',
                        filter: 'Filtriraj',
                        appearence: 'Izgled',
                        showOnRoadType: 'Prikaži na sljedećim vrstama cesta:',
                        seeOnDiscuss: 'Pogledajte temu skripte na Discussu',
                        seeOnDiscord: 'Pogledajte kanal skripte na Waze Script Discord poslužitelju',
                        scriptDevBy: 'Pogledajte moj korisnički profil uređivača',
                    },
                    label: {
                        displaySpeeds: 'Prikazuj brzine',
                        showNoSpeed: 'Prikazuj na segmentima bez brzine',
                        showOnRoundabout: 'Prikazuj na kružnim tokovima',
                        showOnUnpaved: 'Prikazuj na neasfaltiranim cestama',
                        maxZoom: 'Prikazuj do razine zooma:',
                        toggleLayerShortcut: 'Prekidač sloja za prikaz brzine',
                        zIndex: 'Dubina sloja',
                        hideShorterSegments: 'Sakrij segmente kraće od',
                        speedFilter: 'Filtriraj prema brzini',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Razina neprozirnosti filtra:',
                    },
                    alertMessage: {
                        zIndex: `Ako koristite dubinu sloja veću od <b>${this.zIndex.warn}</b>, sloj brzine će se preklapati s drugim slojevima i neće biti moguće odabrati bilo koji element na ekranu dok ga ne spustite ispod <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Za aktiviranje/deaktiviranje sloja prikaza brzine, jednostavno idite na <b>Slabe mape > Ceste > Prikaz brzina</b> ili koristite prečac <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Zadano',
                        altViennaConv: 'Alternativna Bečka konvencija',
                        japan: 'Japan',
                        uk: 'Ujedinjeno Kraljevstvo',
                        sacu: 'Južnoafrička unija carina',
                    },
                    btn: {
                        updateSettingsTab: 'Ažuriraj izbornik',
                        resetSettings: 'Vrati postavke na zadane',
                        seeOnDiscuss: 'Pogledajte u raspravi',
                        seeOnDiscord: 'Pogledajte na Discordu',
                        scriptDevBy: 'Skript je razvio Luan Tavares',
                    }
                };
            
                break;
            
            case 'hu':
                // Hungarian
                translations = {
                    name: 'Sebesség megjelenítése',
                    zoomOut: 'Távolabb',
                    zoomIn: 'Közelebb',
                    changelog: 'Változási napló',
                    changelogMessage: '<h6>Újdonságok:</h6><ul style="margin-bottom: 10px"><li>Új megjelenés! A szkript beállítási lapja újratervezésre került;</li><li>Szeretné, ha a sebesség ikonok jobban hasonlítanának az Ön országában lévőkhöz? Most már választhat témákat;</li><li>Több WME lapot használ? Nincs gond. Az összes beállítás most már egyszerre van szinkronizálva az összes nyitott lapon;</li><li>Szüksége van arra, hogy a szűrt ikonok áttetszőbbek legyenek? Mostantól Ön választhatja ki a kívánt átlátszósági szintet;</li><li>A szkript most üzenetet jelenít meg, miközben új ikonokat tölt be. A betöltés szándékosan késlekedtetve történik;</li><li>Ha a sebességszűrőben a minimális sebességet nagyobbnak adja meg, mint a maximális, a szkript törli az utolsó mezőt, és figyelmeztető üzenetet jelenít meg;</li><li>Beállítások lapján hozzáadott egy kapcsolót, amellyel engedélyezheti és letilthatja az ikonokat. Az ikonokat továbbra is be- és kikapcsolhatja a "Térképlapok" lapról, vagy billentyűparanccsal;</li><li>Az WME SDK-ra való migrációnak köszönhetően most már testreszabhatja a szkript billentyűparancsát a "Billentyűparancsok" modál ablakában;</li><li>Új gombok kerültek a szkript lap aljára a Discord csatornára, a Discuss fórumra és az WME profilomra való hozzáféréshez;</li><li>A szkript kódját részben migrálták WME SDK-ra (nem teljes mértékben, mivel bizonyos funkciók hiányoznak az SDK-ból).</li></ul><h6>Javítások:</h6><ul><li>A kódszerkezet néhány módosítása miatt az elmentett beállításokat automatikusan visszaállítja;</li><li>A szkript mostantól a megfelelő oldalon jeleníti meg a sebességet, ha az országban bal oldali közlekedés van;</li><li>Számos kisebb javítás és kódfejlesztés.</li></ul>',
                    close: 'Bezárás',
                    viewScript: 'Szkript megtekintése',
                    viewChangelog: 'Változási napló megtekintése',
                    reset: 'Visszaállítás',
                    snackbar: {
                        updatingMapDisplay: 'Térképi ikonok frissítése. (Szándékos késleltetéssel)',
                        errorFiltering: 'Hiba a szűrő alkalmazásakor. A minimális sebesség nem lehet nagyobb, mint a maximális.',
                    },
                    title: {
                        general: 'Általános',
                        roadTypes: 'Úttípusok',
                        filter: 'Szűrő',
                        appearence: 'Megjelenés',
                        showOnRoadType: 'Megjelenítés a következő úttípusokon:',
                        seeOnDiscuss: 'Nézd meg a script témáját a Discuss-on',
                        seeOnDiscord: 'Nézd meg a script csatornát a Waze Script Discord szerverén',
                        scriptDevBy: 'Tekintse meg a szerkesztői felhasználói profilomat',
                    },
                    label: {
                        displaySpeeds: 'Sebességek megjelenítése',
                        showNoSpeed: 'Megjelenítés sebesség nélküli szegmenseken',
                        showOnRoundabout: 'Megjelenítés körforgalomban',
                        showOnUnpaved: 'Megjelenítés burkolatlan úton',
                        maxZoom: 'Renderelés legnagyobb zoom szinten:',
                        toggleLayerShortcut: 'Sebesség réteg átváltása',
                        zIndex: 'Réteg mélysége',
                        hideShorterSegments: 'Rejtsd el a rövidebb szegmenseket, mint',
                        speedFilter: 'Szűrés sebesség szerint',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Szűrő átlátszóság szintje:',
                    },
                    alertMessage: {
                        zIndex: `Ha a réteg mélysége nagyobb, mint <b>${this.zIndex.warn}</b>, a sebesség réteg átfedheti a többi réteget, és nem lesz lehetőség semmilyen elem kiválasztására a képernyőn, amíg le nem csökkenti <b>${this.zIndex.warn}</b> alá.`,
                        toggleVisibility: `A sebesség réteg láthatóságának aktiválásához/deaktiválásához egyszerűen menjen ide: <b>Térképrétegek > Út > Sebesség megjelenítése</b>, vagy használja a gyorsbillentyűt <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Alapértelmezett',
                        altViennaConv: 'Alternatív Bécsi Egyezmény',
                        japan: 'Japán',
                        uk: 'Egyesült Királyság',
                        sacu: 'Dél-afrikai Vámunió',
                    },
                    btn: {
                        updateSettingsTab: 'Menü frissítése',
                        resetSettings: 'Beállítások visszaállítása',
                        seeOnDiscuss: 'Nézd meg a vitában',
                        seeOnDiscord: 'Nézd meg Discordon',
                        scriptDevBy: 'A scriptet Luan Tavares fejlesztette',
                    }
                };
            
                break;
            
            case 'id':
                // Indonesian
                translations = {
                    name: 'Tampilan Kecepatan',
                    zoomOut: 'Lebih jauh',
                    zoomIn: 'Lebih dekat',
                    changelog: 'Catatan perubahan',
                    changelogMessage: '<h6>Fitur Baru:</h6><ul style="margin-bottom: 10px"><li>Desain baru! Tab pengaturan skrip telah didesain ulang;</li><li>Ingin melihat ikon kecepatan yang lebih mirip dengan yang ada di negara Anda? Sekarang Anda dapat memilih tema;</li><li>Apakah Anda bekerja dengan beberapa tab WME terbuka? Tidak masalah. Semua pengaturan kini disinkronkan secara bersamaan di semua tab yang terbuka;</li><li>Perlu membuat ikon yang difilter lebih transparan? Sekarang Anda dapat memilih tingkat transparansi yang Anda inginkan;</li><li>Skrip sekarang menampilkan pesan saat memuat ikon baru. Ada penundaan sengaja pada proses pemuatan;</li><li>Jika Anda memasukkan kecepatan minimum lebih besar dari kecepatan maksimum, skrip akan menghapus kolom terakhir dan menampilkan pesan peringatan;</li><li>Ditambahkan saklar di tab pengaturan skrip untuk mengaktifkan dan menonaktifkan ikon. Anda masih bisa mengaktifkan/mematikan melalui tab "Lapisan Peta" dan juga dengan pintasan keyboard;</li><li>Berikutnya, berkat migrasi ke WME SDK, Anda dapat menyesuaikan pintasan skrip di modal "Pintasan Keyboard";</li><li>Tombol baru telah ditambahkan ke bagian bawah tab skrip untuk mengakses saluran Discord, forum Discuss, dan profil saya di WME;</li><li>Kode skrip telah dipindahkan sebagian ke WME SDK (belum sepenuhnya karena kekurangan beberapa fitur di SDK).</li></ul><h6>Perbaikan:</h6><ul><li>Karena perubahan pada struktur kode, pengaturan yang disimpan akan dipulihkan secara otomatis;</li><li>Skrip sekarang menampilkan kecepatan di sisi yang benar saat negara menggunakan sistem berkendara kiri;</li><li>Perbaikan kecil dan peningkatan kode lainnya.</li></ul>',
                    close: 'Tutup',
                    viewScript: 'Lihat skrip',
                    viewChangelog: 'Lihat catatan perubahan',
                    reset: 'Atur ulang',
                    snackbar: {
                        updatingMapDisplay: 'Memperbarui ikon peta. (Dengan penundaan yang disengaja)',
                        errorFiltering: 'Kesalahan dalam menerapkan filter. Kecepatan minimum tidak boleh lebih besar dari maksimum.',
                    },
                    title: {
                        general: 'Umum',
                        roadTypes: 'Tipe Jalan',
                        filter: 'Filter',
                        appearence: 'Tampilan',
                        showOnRoadType: 'Tampilkan pada tipe jalan berikut:',
                        seeOnDiscuss: 'Lihat thread skrip di Discuss',
                        seeOnDiscord: 'Lihat saluran skrip di server Discord Waze Script',
                        scriptDevBy: 'Lihat profil pengguna editor saya',
                    },
                    label: {
                        displaySpeeds: 'Tampilkan kecepatan',
                        showNoSpeed: 'Tampilkan pada segmen tanpa kecepatan',
                        showOnRoundabout: 'Tampilkan di bundaran',
                        showOnUnpaved: 'Tampilkan di jalan tidak beraspal',
                        maxZoom: 'Render hingga zoom:',
                        toggleLayerShortcut: 'Toggling lapisan tampilan kecepatan',
                        zIndex: 'Kedalaman lapisan',
                        hideShorterSegments: 'Sembunyikan pada segmen yang lebih pendek dari',
                        speedFilter: 'Filter berdasarkan kecepatan',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Tingkat opasitas filter:',
                    },
                    alertMessage: {
                        zIndex: `Jika kedalaman lapisan lebih besar dari <b>${this.zIndex.warn}</b>, lapisan kecepatan akan menutupi lapisan lain dan Anda tidak akan dapat memilih elemen di layar sampai Anda menurunkan kedalaman lapisan kembali di bawah <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Untuk mengaktifkan/mematikan lapisan tampilan kecepatan, cukup pergi ke <b>Lapisan Peta > Jalan > Tampilkan kecepatan</b> atau gunakan pintasan <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Default',
                        altViennaConv: 'Konvensi Wina Alternatif',
                        japan: 'Jepang',
                        uk: 'Inggris Raya',
                        sacu: 'Uni Bea Cukai Afrika Selatan',
                    },
                    btn: {
                        updateSettingsTab: 'Perbarui menu',
                        resetSettings: 'Atur ulang pengaturan',
                        seeOnDiscuss: 'Lihat di diskusi',
                        seeOnDiscord: 'Lihat di Discord',
                        scriptDevBy: 'Script dikembangkan oleh Luan Tavares',
                    }
                };
            
                break;
            
            case 'it':
                // Italian
                translations = {
                    name: 'Visualizzazione Velocità',
                    zoomOut: 'Zoom indietro',
                    zoomIn: 'Zoom avanti',
                    changelog: 'Registro modifiche',
                    changelogMessage: `<h6>Novità:</h6><ul style="margin-bottom: 10px"><li>Nuovo design! La scheda delle impostazioni dello script è stata riprogettata;</li><li>Vuoi che le icone della velocità assomiglino di più a quelle nel tuo paese? Ora puoi scegliere i temi;</li><li>Stai lavorando con più schede WME aperte? Nessun problema. Tutte le impostazioni sono ora sincronizzate simultaneamente tra tutte le schede aperte;</li><li>Hai bisogno di rendere le icone filtrate più trasparenti? Ora puoi scegliere il livello di trasparenza che desideri;</li><li>Lo script ora mostra un messaggio mentre carica nuove icone. C'è un ritardo intenzionale nel caricamento;</li><li>Se inserisci una velocità minima maggiore della massima, lo script cancellerà l'ultimo campo e mostrerà un messaggio di avviso;</li><li>È stato aggiunto un interruttore nella scheda delle impostazioni dello script per attivare e disattivare le icone. È ancora possibile attivare/disattivare anche tramite la scheda "Livelli della mappa" e tramite scorciatoia da tastiera;</li><li>Grazie alla migrazione al SDK di WME, puoi personalizzare la scorciatoia da tastiera dello script nella finestra di dialogo "Scorciatoie da tastiera";</li><li>Sono stati aggiunti nuovi pulsanti alla parte inferiore della scheda dello script per accedere al canale Discord, al forum Discuss e al mio profilo WME;</li><li>Il codice dello script è stato parzialmente migrato al SDK di WME (non completamente a causa della mancanza di alcune funzionalità nel SDK).</li></ul><h6>Correzioni:</h6><ul><li>A causa di alcune modifiche nella struttura del codice, le impostazioni salvate saranno ripristinate automaticamente;</li><li>Lo script ora mostra la velocità sul lato corretto quando il paese ha la guida a sinistra;</li><li>Diverse piccole correzioni e miglioramenti del codice.</li></ul>`,
                    close: 'Chiudi',
                    viewScript: 'Vedi script',
                    viewChangelog: 'Visualizza registro modifiche',
                    reset: 'Ripristina',
                    snackbar: {
                        updatingMapDisplay: 'Aggiornamento delle icone della mappa. (Con ritardo intenzionale)',
                        errorFiltering: 'Errore nell’applicazione del filtro. La velocità minima non può essere maggiore della massima.',
                    },
                    title: {
                        general: 'Generale',
                        roadTypes: 'Tipi di strada',
                        filter: 'Filtro',
                        appearence: 'Aspetto',
                        showOnRoadType: 'Mostra sui seguenti tipi di strada:',
                        seeOnDiscuss: 'Vedi il thread dello script su Discuss',
                        seeOnDiscord: 'Vedi il canale dello script sul server Discord di Waze Script',
                        scriptDevBy: 'Visualizza il profilo utente del mio editor',
                    },
                    label: {
                        displaySpeeds: 'Visualizza velocità',
                        showNoSpeed: 'Visualizza su segmento senza velocità',
                        showOnRoundabout: 'Visualizza su rotatoria',
                        showOnUnpaved: 'Visualizza su strada non asfaltata',
                        maxZoom: 'Renderizza fino allo zoom:',
                        toggleLayerShortcut: 'Alterna il layer di visualizzazione velocità',
                        zIndex: 'Profondità del layer',
                        hideShorterSegments: 'Nascondi nei segmenti più corti di',
                        speedFilter: 'Filtra per velocità',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Livello opacità filtro:',
                    },
                    alertMessage: {
                        zIndex: `Se utilizzi una profondità del layer maggiore di <b>${this.zIndex.warn}</b>, il layer della velocità coprirà gli altri e non sarà possibile selezionare alcun elemento sulla mappa finché non riduci nuovamente la profondità sotto <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Per attivare/disattivare il layer di visualizzazione delle velocità, vai su <b>Layer Mappa > Strade > Visualizza velocità</b> o usa la scorciatoia <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Predefinito',
                        altViennaConv: 'Convenzione di Vienna Alternativa',
                        japan: 'Giappone',
                        uk: 'Regno Unito',
                        sacu: 'Unione Doganale dell’Africa Australe',
                    },
                    btn: {
                        updateSettingsTab: 'Aggiorna menu',
                        resetSettings: 'Ripristina impostazioni',
                        seeOnDiscuss: 'Vedi nella discussione',
                        seeOnDiscord: 'Vedi su Discord',
                        scriptDevBy: 'Script sviluppato da Luan Tavares',
                    }
                };
            
                break;

            case 'ja':
                // Japanese
                translations = {
                    name: '速度表示',
                    zoomOut: 'ズームアウト',
                    zoomIn: 'ズームイン',
                    changelog: '変更履歴',
                    changelogMessage: '<h6>新機能:</h6><ul style="margin-bottom: 10px"><li>新しいデザイン!スクリプトの設定タブが再設計されました。</li><li>あなたの国の速度アイコンにより似たものを見たいですか?テーマを選択できるようになりました。</li><li>複数のWMEタブを開いて作業していますか?問題ありません。すべての設定は、開いているすべてのタブで同時に同期されます。</li><li>フィルタリングされたアイコンをもっと透明にしたいですか?透明度レベルを選択できるようになりました。</li><li>スクリプトは新しいアイコンを読み込む際にメッセージを表示します。読み込みには意図的な遅延があります。</li><li>最小速度が最大速度よりも大きい場合、スクリプトは最後のフィールドをクリアし、警告メッセージを表示します。</li><li>スクリプト設定タブにアイコンのオン/オフを切り替えるスイッチが追加されました。まだ「マップレイヤー」タブやショートカットキーでもオン/オフを切り替えることができます。</li><li>WME SDKへの移行により、スクリプトのショートカットキーを「キーボードショートカット」モーダルでカスタマイズできるようになりました。</li><li>スクリプトタブの下部にDiscordチャンネル、Discussフォーラム、WMEのプロフィールへのリンクが追加されました。</li><li>スクリプトコードはWME SDKに部分的に移行されました(SDKにいくつかの機能が不足しているため完全には移行されていません)。</li></ul><h6>修正:</h6><ul><li>コード構造の変更により、保存された設定は自動的に復元されます。</li><li>スクリプトは左側通行の国で正しく速度を表示するようになりました。</li><li>その他、いくつかの小さな修正とコードの改善が行われました。</li></ul>',
                    close: '閉じる',
                    viewScript: 'スクリプトを見る',
                    viewChangelog: '変更履歴を見る',
                    reset: 'リセット',
                    snackbar: {
                        updatingMapDisplay: 'マップアイコンを更新しています。(意図的な遅延あり)',
                        errorFiltering: 'フィルター適用エラー。最小速度が最大速度を超えることはできません。',
                    },
                    title: {
                        general: '一般',
                        roadTypes: '道路タイプ',
                        filter: 'フィルター',
                        appearence: '外観',
                        showOnRoadType: '次の道路タイプに表示:',
                        seeOnDiscuss: 'Discussでスクリプトのスレッドを見る',
                        seeOnDiscord: 'Waze ScriptのDiscordサーバーでスクリプトのチャンネルを見る',
                        scriptDevBy: 'エディターのユーザープロフィールを表示',
                    },
                    label: {
                        displaySpeeds: '速度を表示',
                        showNoSpeed: '速度なしのセグメントに表示',
                        showOnRoundabout: 'ラウンドアバウトに表示',
                        showOnUnpaved: '未舗装道路に表示',
                        maxZoom: 'ズーム最大:',
                        toggleLayerShortcut: '速度表示レイヤーを切り替える',
                        zIndex: 'レイヤーの深度',
                        hideShorterSegments: '次の長さ未満のセグメントを非表示:',
                        speedFilter: '速度でフィルタリング',
                        min: '最小:',
                        max: '最大:',
                        opacity: 'フィルターの不透明度レベル:',
                    },
                    alertMessage: {
                        zIndex: `レイヤーの深度を <b>${this.zIndex.warn}</b> より大きく設定すると、速度レイヤーが他のレイヤーを覆い、再び <b>${this.zIndex.warn}</b> 以下に戻すまでマップ上の要素を選択できなくなります。`,
                        toggleVisibility: `速度表示レイヤーをオン/オフにするには、<b>マップレイヤー > 道路 > 速度表示</b>に移動するか、ショートカット <b>ALT</b> + <b>SHIFT</b> + <b>S</b> を使用してください。`
                    },
                    theme: {
                        default: 'デフォルト',
                        altViennaConv: '代替ウィーン条約',
                        japan: '日本',
                        uk: 'イギリス',
                        sacu: '南部アフリカ関税同盟',
                    },
                    btn: {
                        updateSettingsTab: 'メニューを更新',
                        resetSettings: '設定をリセット',
                        seeOnDiscuss: 'ディスカッションで見る',
                        seeOnDiscord: 'Discordで見る',
                        scriptDevBy: 'スクリプトはLuan Tavaresによって開発されました',
                    }
                };
            
                break;
            
            case 'ka':
                // Georgian
                translations = {
                    name: 'სისწრაფის ჩვენება',
                    zoomOut: 'გამორთვა',
                    zoomIn: 'ზუმი',
                    changelog: 'შეცდომების ჩანაწერი',
                    changelogMessage: '<h6>ახალი ფუნქციები:</h6><ul style="margin-bottom: 10px"><li>ახალი დიზაინი! სკრიპტის პარამეტრების ტაბი კვლავ განახლდა;</li><li>გსურთ ხედოთ სიჩქარის ასოები, რომლებიც უფრო ჰგავს თქვენს ქვეყანაში არსებულებს? ახლა შეგიძლიათ აირჩიოთ თემები;</li><li>მუშაობთ WME-ის რამდენიმე ტაბით? არ არის პრობლემა. ყველა პარამეტრი ახლა ერთდროულად სინქრონიზდება ყველა გახსნილ ტაბში;</li><li>დჭირდებათ ფილტრირებული ასოები უფრო გამჭვირვალე იყოს? ახლა თქვენ შეგიძლიათ აირჩიოთ თქვენი სასურველი გამჭვირვალობის დონე;</li><li>ახლა სკრიპტი აჩვენებს შეტყობინებას, როცა ახალ ასოებს იტვირთავს. დატვირთვას აქვს განსაზღვრული დაგვიანება;</li><li>თუ სიჩქარის ფილტრში მინიმალური სიჩქარე უფრო მაღალია, ვიდრე მაქსიმალური, სკრიპტი წაიშლის ბოლო ველს და გამოჩნდება გაფრთხილება;</li><li>დაიმატა ჩართვა/გამორთვის გადამრთველი სკრიპტის პარამეტრების ტაბში, რათა გაააქტიუროთ და გამორთოთ ასოები. ასევე შეგიძლიათ გაააქტიუროთ/გამორთოთ "კარტოგრაფიული ფენების" ტაბიდან და შორტკატებით;</li><li>WME SDK-ზე გადმოწევის შემდეგ, შეგიძლიათ მოარგოთ სკრიპტის შორტკატი "სკრიპტის სლოტში" მოდალიდან;</li><li>დაიმატა ახალი ღილაკები სკრიპტის ტაბის ბოლოში, რათა მივაღწიოთ Discord არხს, Discuss თემას და ჩემს WME პროფილს;</li><li>კოდის ნაწილი გადაიტანილი იქნა WME SDK-ზე (რადგან SDK-ს არ აქვს საჭირო ფუნქციები, გადატანა არ არის 100%-იანი).</li></ul><h6>დახმარება:</h6><ul><li>კოდის სტრუქტურის ცვლილების გამო, სარეზერვო პარამეტრები ავტომატურად აღდგება;</li><li>ახლა სკრიპტი სწორად აჩვენებს სიჩქარეს, როდესაც ქვეყანაში მარცხენა მხარეა;</li><li>პარტიკულარული პატარა გაუმჯობესებები და შეცდომების გამოსწორება მოხდა.</li></ul>',
                    close: 'დახურვა',
                    viewScript: 'იხილეთ სქრიპტი',
                    viewChangelog: 'შეცდომების ჩანაწერის ნახვა',
                    reset: 'გადატვირთვა',
                    snackbar: {
                        updatingMapDisplay: 'რუკის ხატულების განახლება. (განზრახ შეფერხებით)',
                        errorFiltering: 'შეცდომა ფილტრის გამოყენებისას. მინიმალური სიჩქარე არ შეიძლება იყოს მაქსიმალურ სიჩქარეზე მეტი.',
                    },
                    title: {
                        general: 'ზოგადი',
                        roadTypes: 'გზების ტიპები',
                        filter: 'ფილტრი',
                        appearence: 'გამოცხადება',
                        showOnRoadType: 'აჩვენე შემდეგი გზის ტიპებზე:',
                        seeOnDiscuss: 'იხილეთ სკრიპტის თემა Discuss-ზე',
                        seeOnDiscord: 'იხილეთ სკრიპტის არხი Waze Script-ის Discord სერვერზე',
                        scriptDevBy: 'ნახეთ ჩემი რედაქტორის მომხმარებლის პროფილი',
                    },
                    label: {
                        displaySpeeds: 'სისწრაფის ჩვენება',
                        showNoSpeed: 'სიჩქარის გარეშე სეგმენტებზე ჩვენება',
                        showOnRoundabout: 'საკვანძო გზებზე ჩვენება',
                        showOnUnpaved: 'აუცილებელი გზების გამოფენა',
                        maxZoom: 'ზუმის მაქსიმალური დონე:',
                        toggleLayerShortcut: 'სისწრაფის ფენის გადართვის ცხელი კლავიშები',
                        zIndex: 'ფენის სიღრმე',
                        hideShorterSegments: 'დამალვა, თუ სეგმენტი არის ამცირებელი:',
                        speedFilter: 'ფილტრი სიჩქარის მიხედვით',
                        min: 'მინიმუმ:',
                        max: 'მაქსიმუმ:',
                        opacity: 'ფილტრის გამჭვირვალობის დონე:',
                    },
                    alertMessage: {
                        zIndex: `თუ გამოიყენეთ ფენის სიღრმე <b>${this.zIndex.warn}</b> მეტი, სისწრაფის ფენა დახურავს ყველა სხვა ფენებს და ვერ შეარჩიეთ ელემენტები ეკრანზე სანამ არ დააბრუნებთ სიღრმე <b>${this.zIndex.warn}</b> ქვემოთ.`,
                        toggleVisibility: `სიჩქარის ფენის ჩართვის/გამორთვისთვის, გთხოვთ გადადით <b>მოგზაურობა > გზები > სიჩქარის ნახვა</b> ან გამოიყენეთ ცხელი კლავიშები <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'ნაგულისხმები',
                        altViennaConv: 'ძველი ვენის კონვენცია',
                        japan: 'იაპონია',
                        uk: 'დიდი ბრიტანეთი',
                        sacu: 'სამხრეთ აფრიკის საბაჟო კავშირი',
                    },
                    btn: {
                        updateSettingsTab: 'მენიუს განახლება',
                        resetSettings: 'პარამეტრების გადატვირთვა',
                        seeOnDiscuss: 'იხილეთ განხილვაში',
                        seeOnDiscord: 'იხილეთ Discord-ზე',
                        scriptDevBy: 'სკრიპტი გამოიმუშავა ლუან ტავარესმა',
                    }
                };
            
                break;

            case 'ko':
                // Korean
                translations = {
                    name: '속도 표시',
                    zoomOut: '줌 아웃',
                    zoomIn: '줌 인',
                    changelog: '변경 기록',
                    changelogMessage: '<h6>새로운 기능:</h6><ul style="margin-bottom: 10px"><li>새로운 디자인! 스크립트 설정 탭이 재설계되었습니다.</li><li>국가에서 사용하는 속도 아이콘을 더 닮은 아이콘을 보고 싶으신가요? 이제 테마를 선택할 수 있습니다.</li><li>여러 WME 탭을 열고 작업하시나요? 문제 없습니다. 모든 설정이 이제 열린 모든 탭에서 동시에 동기화됩니다.</li><li>필터링된 아이콘을 더 투명하게 만들고 싶으신가요? 이제 원하는 투명도 수준을 선택할 수 있습니다.</li><li>스크립트는 새 아이콘을 로딩할 때 메시지를 표시합니다. 로딩에는 의도적인 지연이 있습니다.</li><li>속도 필터에 최소 속도가 최대 속도보다 크면, 스크립트는 마지막 필드를 지우고 경고 메시지를 표시합니다.</li><li>스크립트 설정 탭에 아이콘을 활성화하거나 비활성화할 수 있는 스위치가 추가되었습니다. 이제 "지도 레이어" 탭을 통해서도 아이콘을 활성화/비활성화할 수 있습니다.</li><li>WME SDK로 마이그레이션 덕분에 "키보드 단축키" 모달에서 스크립트 단축키를 사용자 지정할 수 있습니다.</li><li>스크립트 탭 하단에 Discord 채널, Discuss 포럼 및 WME 프로필에 접근할 수 있는 버튼이 추가되었습니다.</li><li>스크립트 코드가 부분적으로 WME SDK로 마이그레이션되었습니다(일부 기능 부족으로 인해 100% 마이그레이션은 되지 않았습니다).</li></ul><h6>수정 사항:</h6><ul><li>코드 구조 변경으로 인해 저장된 설정이 자동으로 복원됩니다.</li><li>국가가 좌측 통행인 경우, 스크립트는 이제 올바른 방향에서 속도를 표시합니다.</li><li>그 외에도 여러 가지 작은 수정과 코드 개선이 이루어졌습니다.</li></ul>',
                    close: '닫기',
                    viewScript: '스크립트 보기',
                    viewChangelog: '변경 기록 보기',
                    reset: '초기화',
                    snackbar: {
                        updatingMapDisplay: '지도 아이콘을 업데이트하는 중입니다. (일부러 지연됨)',
                        errorFiltering: '필터 적용 오류. 최소 속도가 최대 속도보다 클 수 없습니다.',
                    },
                    title: {
                        general: '일반',
                        roadTypes: '도로 유형',
                        filter: '필터',
                        appearence: '모양',
                        showOnRoadType: '다음 도로 유형에서 표시:',
                        seeOnDiscuss: 'Discuss에서 스크립트 스레드 보기',
                        seeOnDiscord: 'Waze Script Discord 서버에서 스크립트 채널 보기',
                        scriptDevBy: '내 편집기 사용자 프로필 보기',
                    },
                    label: {
                        displaySpeeds: '속도 표시',
                        showNoSpeed: '속도 없는 세그먼트에 표시',
                        showOnRoundabout: '로터리에서 표시',
                        showOnUnpaved: '비포장 도로에서 표시',
                        maxZoom: '최대 줌:',
                        toggleLayerShortcut: '속도 레이어 전환 단축키',
                        zIndex: '레이어 깊이',
                        hideShorterSegments: '이보다 짧은 세그먼트 숨기기',
                        speedFilter: '속도 필터',
                        min: '최소:',
                        max: '최대:',
                        opacity: '필터 불투명도 수준:',
                    },
                    alertMessage: {
                        zIndex: `레이어 깊이가 <b>${this.zIndex.warn}</b>를 초과하면 속도 레이어가 다른 레이어 위에 표시되어 화면에서 다른 요소를 선택할 수 없게 됩니다. 다시 <b>${this.zIndex.warn}</b> 이하로 낮추기 전까지 선택할 수 없습니다.`,
                        toggleVisibility: `속도 레이어의 가시성을 활성화/비활성화하려면 <b>맵 레이어 > 도로 > 속도 표시</b>로 이동하거나 단축키 <b>ALT</b> + <b>SHIFT</b> + <b>S</b>를 사용하세요.`
                    },
                    theme: {
                        default: '기본',
                        altViennaConv: '대체 비엔나 협약',
                        japan: '일본',
                        uk: '영국',
                        sacu: '남부 아프리카 세관 동맹',
                    },
                    btn: {
                        updateSettingsTab: '메뉴 업데이트',
                        resetSettings: '설정 초기화',
                        seeOnDiscuss: '토론에서 보기',
                        seeOnDiscord: 'Discord에서 보기',
                        scriptDevBy: '스크립트는 Luan Tavares에 의해 개발되었습니다',
                    }
                };
            
                break;

            case 'lt':
                // Lithuanian
                translations = {
                    name: 'Greitis Rodymas',
                    zoomOut: 'Toliau',
                    zoomIn: 'Arčiau',
                    changelog: 'Pakeitimų Žurnalas',
                    changelogMessage: '<h6>Įdiegti nauji funkcionalumai:</h6><ul style="margin-bottom: 10px"><li>Naujas dizainas! Skripto nustatymų skirtukas buvo perprojektuotas;</li><li>Norite matyti greičio piktogramas, labiau atitinkančias jūsų šalies naudojamas? Dabar galite pasirinkti temas;</li><li>Dirbate su daugiau nei viena WME skirtuku? Nėra problemų. Visi nustatymai dabar sinchronizuojami tarp visų atidarytų skirtukų;</li><li>Norite, kad filtruoti piktogramos būtų permatomos? Dabar galite pasirinkti norimą skaidrumo lygį;</li><li>Dabar skriptas rodo pranešimą, kai įkeliami nauji piktogramų simboliai. Yra numatytas delsimas įkėlimo metu;</li><li>Jei nustatytas minimalus greitis yra didesnis nei maksimalus, skriptas išvalys paskutinį lauką ir parodys įspėjimo pranešimą;</li><li>Pridėtas jungiklis skripto nustatymų skirtuke, kad būtų galima įjungti ir išjungti piktogramas. Taip pat galite įjungti / išjungti per "Žemėlapio sluoksnių" skirtuką arba naudojant sparčiuosius klavišus;</li><li>Dėl migracijos į WME SDK dabar galite pritaikyti skripto sparčiuosius klavišus „Klaviatūros sparčiųjų klavišų“ lange;</li><li>Pridėti nauji mygtukai skripto skirtuko apačioje, kad būtų galima pasiekti Discord kanalą, temą Discuss ir mano WME profilį;</li><li>Skripto kodas buvo iš dalies perkeliamas į WME SDK (nepilnai perkelta dėl trūkstamų funkcijų SDK);</li></ul><h6>Klaidų taisymas:</h6><ul><li>Dėl kai kurių kodo struktūros pakeitimų išsaugoti nustatymai bus atkuriami automatiškai;</li><li>Skriptas dabar rodo teisingą greitį šalyse, kuriose naudojama kairioji eismo juosta;</li><li>Daugiau mažų klaidų pataisymų ir kodo patobulinimų.</li></ul>',
                    close: 'Uždaryti',
                    viewScript: 'Peržiūrėti scenarijų',
                    viewChangelog: 'Peržiūrėti pakeitimų žurnalą',
                    reset: 'Atstatyti',
                    snackbar: {
                        updatingMapDisplay: 'Atnaujinamos žemėlapio piktogramos. (Su tyčiniu vėlavimu)',
                        errorFiltering: 'Klaida taikant filtrą. Mažiausias greitis negali būti didesnis nei didžiausias.',
                    },
                    title: {
                        general: 'Bendrieji',
                        roadTypes: 'Kelio tipai',
                        filter: 'Filtras',
                        appearence: 'Išvaizda',
                        showOnRoadType: 'Rodyti šiuose kelio tipuose:',
                        seeOnDiscuss: 'Žiūrėkite scenarijaus temą Discuss',
                        seeOnDiscord: 'Žiūrėkite scenarijaus kanalą Waze Script Discord serveryje',
                        scriptDevBy: 'Peržiūrėkite mano redaktoriaus naudotojo profilį',
                    },
                    label: {
                        displaySpeeds: 'Rodyti greičius',
                        showNoSpeed: 'Rodyti segmentuose be greičio',
                        showOnRoundabout: 'Rodyti žiedinėse sankryžose',
                        showOnUnpaved: 'Rodyti neasfaltuotose keliose',
                        maxZoom: 'Rodyti iki židinio lygio:',
                        toggleLayerShortcut: 'Perjungti greičio sluoksnį',
                        zIndex: 'Sluoksnio gylis',
                        hideShorterSegments: 'Slėpti trumpesnius nei',
                        speedFilter: 'Filtruoti pagal greitį',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Filtravimo nepralaidumo lygis:',
                    },
                    alertMessage: {
                        zIndex: `Naudojant sluoksnio gylį, kuris yra didesnis nei <b>${this.zIndex.warn}</b>, greičio sluoksnis uždengs kitus sluoksnius ir negalėsite pasirinkti jokio elemento ekrane, kol vėl nepasieksite gylio žemiau <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Norėdami įjungti/išjungti greičio sluoksnio matomumą, eikite į <b>Žemėlapių sluoksniai > Keliai > Rodyti greičius</b> arba naudokite klaviatūros kombinaciją <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Numatytas',
                        altViennaConv: 'Alternatyvi Vienos konvencija',
                        japan: 'Japonija',
                        uk: 'Jungtinė Karalystė',
                        sacu: 'Pietų Afrikos muitų sąjunga',
                    },
                    btn: {
                        updateSettingsTab: 'Atnaujinti meniu',
                        resetSettings: 'Atstatyti nustatymus',
                        seeOnDiscuss: 'Žiūrėti diskusijoje',
                        seeOnDiscord: 'Žiūrėti Discorde',
                        scriptDevBy: 'Skriptą sukūrė Luan Tavares',
                    }
                };
            
                break;
                
            case 'lv':
                // Latvian
                translations = {
                    name: 'Ātruma Rādīšana',
                    zoomOut: 'Tālāk',
                    zoomIn: 'Tuvāk',
                    changelog: 'Izmaiņu Žurnāls',
                    changelogMessage: '<h6>Jauni funkcionalitātes:</h6><ul style="margin-bottom: 10px"><li>Jauns dizains! Skripta iestatījumu cilne tika pārprojektēta;</li><li>Vai vēlaties redzēt ātruma ikonas, kas vairāk atbilst jūsu valstī izmantotajām? Tagad varat izvēlēties tēmas;</li><li>Strādājat ar vairākiem WME cilnēm? Nav problēmu. Visi iestatījumi tagad tiek sinhronizēti starp visām atvērtajām cilnēm;</li><li>Vai jums ir nepieciešams, lai filtrētās ikonas būtu vairāk caurspīdīgas? Tagad varat izvēlēties vēlamo caurspīdīguma līmeni;</li><li>Tagad skripts parāda ziņojumu, kamēr tiek ielādētas jaunas ikonas. Ielādes laikā ir nodrošināta aizkavēšanās;</li><li>Ja minimālais ātrums ir lielāks par maksimālo ātrumu, skripts izdzēsīs pēdējo lauku un parādīs brīdinājuma ziņojumu;</li><li>Pievienots pārslēdzējs skripta iestatījumu cilnē, lai iespējotu un atspējotu ikonas. Joprojām varat iespējot/atspējot caur "Kartes slāņus" un arī ar īsinājumtaustiņiem;</li><li>Ņemot vērā migrāciju uz WME SDK, tagad varat pielāgot skripta īsinājumtaustiņus "Īsinājumtaustiņu" modalitātē;</li><li>Pievienoti jauni pogas skripta cilnes apakšā, lai piekļūtu Discord kanālam, Discuss tēmām un manam WME profilam;</li><li>Skripta kods tika daļēji pārcelts uz WME SDK (nav pilnībā pārcelts, jo trūkst funkciju SDK);</li></ul><h6>Kļūdu labojumi:</h6><ul><li>Pateicoties dažu koda struktūras izmaiņām, saglabātie iestatījumi tiks automātiski atjaunoti;</li><li>Skripts tagad pareizi parāda ātrumu, ja valstī tiek izmantota kreisā satiksmes josla;</li><li>Dažas nelielas kļūdu labojumi un koda uzlabojumi.</li></ul>',
                    close: 'Aizvērt',
                    viewScript: 'Skatīt Skriptu',
                    viewChangelog: 'Skatīt Izmaiņu Žurnālu',
                    reset: 'Atiestatīt',
                    snackbar: {
                        updatingMapDisplay: 'Atjaunina kartes ikonas. (Ar apzinātu kavēšanos)',
                        errorFiltering: 'Kļūda, lietojot filtru. Minimālais ātrums nevar būt lielāks par maksimālo.',
                    },
                    title: {
                        general: 'Vispārējie',
                        roadTypes: 'Ceļa tipi',
                        filter: 'Filtrs',
                        appearence: 'Izskats',
                        showOnRoadType: 'Rādīt šādos ceļa tipos:',
                        seeOnDiscuss: 'Skatīt skripta pavedienu Discuss',
                        seeOnDiscord: 'Skatīt skripta kanālu Waze Script Discord serverī',
                        scriptDevBy: 'Skatīt manu redaktora lietotāja profilu',
                    },
                    label: {
                        displaySpeeds: 'Rādīt ātrumus',
                        showNoSpeed: 'Rādīt segmentos bez ātruma',
                        showOnRoundabout: 'Rādīt aplī',
                        showOnUnpaved: 'Rādīt neasfaltētajos ceļos',
                        maxZoom: 'Rādīt līdz palielināšanas līmenim:',
                        toggleLayerShortcut: 'Pārslēgt ātruma slāni',
                        zIndex: 'Slāņa dziļums',
                        hideShorterSegments: 'Paslēpt īsākus nekā',
                        speedFilter: 'Filtrēt pēc ātruma',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Filtra līmeņa caurspīdīgums:',
                    },
                    alertMessage: {
                        zIndex: `Izmantojot slāņa dziļumu, kas pārsniedz <b>${this.zIndex.warn}</b>, ātruma slānis pārklās citus slāņus, un nebūs iespējams izvēlēties nevienu elementu ekrānā līdz tā atkārtotai pazemināšanai zem <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Lai aktivizētu/deaktivizētu ātruma slāņa redzamību, vienkārši dodieties uz <b>Kartes Slāņi > Ceļi > Rādīt ātrumus</b> vai izmantojiet īsinājumtaustiņu <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Noklus',
                        altViennaConv: 'Alternatīvā Vīnes konvencija',
                        japan: 'Japāna',
                        uk: 'Apvienotā Karaliste',
                        sacu: 'Dienvidu Āfrikas muitas savienība',
                    },
                    btn: {
                        updateSettingsTab: 'Atjaunināt Meni',
                        resetSettings: 'Atiestatīt Iestatījumus',
                        seeOnDiscuss: 'Skatīt diskusijā',
                        seeOnDiscord: 'Skatīt Discordā',
                        scriptDevBy: 'Skriptu izstrādājis Luan Tavares',
                    }
                };
            
                break;
            
            case 'ms':
                // Malay
                translations = {
                    name: 'Papar Kelajuan',
                    zoomOut: 'Jauhkan',
                    zoomIn: 'Dekatkan',
                    changelog: 'Log Perubahan',
                    changelogMessage: '<h6>Ciri Baru:</h6><ul style="margin-bottom: 10px"><li>Reka bentuk baru! Tab tetapan skrip telah direka semula;</li><li>Adakah anda ingin melihat ikon kelajuan yang lebih menyerupai yang digunakan di negara anda? Kini anda boleh memilih tema;</li><li>Adakah anda bekerja dengan lebih daripada satu tab WME? Tiada masalah. Semua tetapan kini disegerakkan secara serentak antara semua tab yang dibuka;</li><li>Perlukah anda menjadikan ikon yang ditapis lebih lut sinar? Kini anda boleh memilih tahap ketelusan yang anda kehendaki;</li><li>Kini skrip akan memaparkan mesej semasa memuatkan ikon baharu. Terdapat kelewatan sengaja semasa pemuatan;</li><li>Jika anda menetapkan kelajuan minimum yang lebih tinggi daripada maksimum, skrip akan membersihkan medan terakhir dan memaparkan mesej amaran;</li><li>Ditambah suis pintasan pada tab tetapan skrip untuk menghidupkan dan mematikan ikon. Anda juga boleh menghidupkan/mematikan melalui tab "Lapisan Peta" dan juga menggunakan pintasan;</li><li>Terima kasih kepada pemindahan ke SDK WME, anda kini boleh menyesuaikan pintasan skrip dalam modal "Pintasan Papan Kekunci";</li><li>Butang baharu ditambah di hujung tab skrip untuk mengakses saluran Discord, topik Discuss dan profil WME saya;</li><li>Kod skrip dipindahkan sebahagiannya ke SDK WME (tidak dipindahkan 100% disebabkan kekurangan beberapa ciri dalam SDK).</li></ul><h6>Pembaikan:</h6><ul><li>Disebabkan beberapa perubahan dalam struktur kod, tetapan yang disimpan akan dipulihkan secara automatik;</li><li>Skrip kini memaparkan kelajuan pada bahagian yang betul apabila negara tersebut mempunyai laluan kiri;</li><li>Pembaikan kecil dan penambahbaikan kod dilakukan.</li></ul>',
                    close: 'Tutup',
                    viewScript: 'Lihat Skrip',
                    viewChangelog: 'Lihat Log Perubahan',
                    reset: 'Tetapkan Semula',
                    snackbar: {
                        updatingMapDisplay: 'Mengemas kini ikon peta. (Dengan kelewatan yang disengajakan)',
                        errorFiltering: 'Ralat semasa menggunakan penapis. Kelajuan minimum tidak boleh melebihi maksimum.',
                    },
                    title: {
                        general: 'Umum',
                        roadTypes: 'Jenis Jalan',
                        filter: 'Penapis',
                        appearence: 'Penampilan',
                        showOnRoadType: 'Tunjukkan pada jenis jalan berikut:',
                        seeOnDiscuss: 'Lihat thread skrip di Discuss',
                        seeOnDiscord: 'Lihat saluran skrip di pelayan Discord Waze Script',
                        scriptDevBy: 'Lihat profil pengguna editor saya',
                    },
                    label: {
                        displaySpeeds: 'Papar kelajuan',
                        showNoSpeed: 'Papar pada segmen tiada kelajuan',
                        showOnRoundabout: 'Papar pada bulatan',
                        showOnUnpaved: 'Papar pada jalan tidak berturap',
                        maxZoom: 'Paparkan sehingga tahap zum:',
                        toggleLayerShortcut: 'Tukar lapisan paparan kelajuan',
                        zIndex: 'Kedalaman lapisan',
                        hideShorterSegments: 'Sembunyikan pada segmen lebih pendek daripada',
                        speedFilter: 'Tapis mengikut kelajuan',
                        min: 'Min.:',
                        max: 'Maks.:',
                        opacity: 'Tahap kelegapan penapis:',
                    },
                    alertMessage: {
                        zIndex: `Apabila menggunakan kedalaman lapisan lebih besar daripada <b>${this.zIndex.warn}</b>, lapisan kelajuan akan menutupi lapisan lain dan tiada elemen boleh dipilih pada skrin sehingga ia diturunkan di bawah <b>${this.zIndex.warn}</b> semula.`,
                        toggleVisibility: `Untuk menghidupkan/mematikan kebolehtampilan lapisan kelajuan, pergi ke <b>Lapisan Peta > Jalan > Papar kelajuan</b> atau gunakan pintasan <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Lalai',
                        altViennaConv: 'Konvensi Vienna Alternatif',
                        japan: 'Jepun',
                        uk: 'United Kingdom',
                        sacu: 'Kesatuan Kastam Afrika Selatan',
                    },
                    btn: {
                        updateSettingsTab: 'Kemas kini Menu',
                        resetSettings: 'Tetapkan Semula Tetapan',
                        seeOnDiscuss: 'Lihat dalam perbincangan',
                        seeOnDiscord: 'Lihat di Discord',
                        scriptDevBy: 'Skrip dibangunkan oleh Luan Tavares',
                    }
                };
            
                break;
            
            case 'nl':
                // Dutch
                translations = {
                    name: 'Snelheidsweergave',
                    zoomOut: 'Uitzoomen',
                    zoomIn: 'Inzoomen',
                    changelog: 'Wijzigingslog',
                    changelogMessage: '<h6>Nieuwe functies:</h6><ul style="margin-bottom: 10px"><li>Nieuw ontwerp! Het scriptinstellingen-tabblad is opnieuw ontworpen;</li><li>Wil je snelheidsiconen zien die meer lijken op die in jouw land? Je kunt nu thema\'s selecteren;</li><li>Werk je met meerdere WME-tabbladen open? Geen probleem. Alle instellingen worden nu gelijktijdig gesynchroniseerd tussen alle geopende tabbladen;</li><li>Wil je dat gefilterde iconen meer doorzichtig zijn? Je kunt nu het gewenste doorzichtigheidsniveau kiezen;</li><li>Het script toont nu een bericht tijdens het laden van nieuwe iconen. Er is opzettelijke vertraging tijdens het laden;</li><li>Als je in het snelheidsfilter een minimale snelheid instelt die groter is dan de maximale snelheid, zal het script het laatste veld wissen en een waarschuwingsbericht weergeven;</li><li>Er is een schakelaar toegevoegd op het scriptinstellingen-tabblad om de iconen in of uit te schakelen. Je kunt ze ook inschakelen/uitschakelen via het "Kaartlagen"-tabblad en met sneltoetsen;</li><li>Dankzij de migratie naar de WME SDK kun je nu de sneltoetsen van het script aanpassen in het "Toetsenbord sneltoetsen" dialoogvenster;</li><li>Nieuwe knoppen zijn toegevoegd onderaan het script-tabblad om toegang te krijgen tot het Discord-kanaal, de Discuss-topic en mijn WME-profiel;</li><li>De scriptcode is gedeeltelijk gemigreerd naar de WME SDK (niet volledig gemigreerd vanwege ontbrekende functies in de SDK);</li></ul><h6>Foutcorrecties:</h6><ul><li>Door enkele wijzigingen in de code-structuur worden opgeslagen instellingen nu automatisch hersteld;</li><li>Het script toont nu de juiste snelheid als het land een Engelse rijrichting heeft;</li><li>Diverse kleine foutcorrecties en codeverbeteringen.</li></ul>',
                    close: 'Sluiten',
                    viewScript: 'Bekijk script',
                    viewChangelog: 'Bekijk wijzigingslog',
                    reset: 'Reset',
                    snackbar: {
                        updatingMapDisplay: 'Kaartpictogrammen bijwerken. (Met opzettelijke vertraging)',
                        errorFiltering: 'Fout bij het toepassen van het filter. De minimale snelheid kan niet groter zijn dan de maximale.',
                    },
                    title: {
                        general: 'Algemeen',
                        roadTypes: 'Wegtypen',
                        filter: 'Filter',
                        appearence: 'Uiterlijk',
                        showOnRoadType: 'Weergeven op de volgende wegtypen:',
                        seeOnDiscuss: 'Bekijk de thread van het script op Discuss',
                        seeOnDiscord: 'Bekijk het kanaal van het script op de Waze Script Discord-server',
                        scriptDevBy: 'Bekijk mijn editor gebruikersprofiel',
                    },
                    label: {
                        displaySpeeds: 'Toon snelheden',
                        showNoSpeed: 'Weergeven op segmenten zonder snelheid',
                        showOnRoundabout: 'Weergeven op rotonde',
                        showOnUnpaved: 'Weergeven op onverharde wegen',
                        maxZoom: 'Weergeven tot zoomniveau:',
                        toggleLayerShortcut: 'Wissel snel de snelheidsweergavelayer',
                        zIndex: 'Laagdiepte',
                        hideShorterSegments: 'Verberg segmenten korter dan',
                        speedFilter: 'Filter op snelheid',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Filterdekking niveau:',
                    },
                    alertMessage: {
                        zIndex: `Wanneer je een laagdiepte groter dan <b>${this.zIndex.warn}</b> gebruikt, zal de snelheidslaag de andere lagen bedekken en kun je geen elementen meer selecteren op het scherm totdat je de laagdiepte weer onder <b>${this.zIndex.warn}</b> brengt.`,
                        toggleVisibility: `Om de snelheidsweergavelayer in of uit te schakelen, ga naar <b>Kaartlagen > Wegen > Weergave van snelheden</b> of gebruik de sneltoets <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Standaard',
                        altViennaConv: 'Alternatieve Wenen Conventie',
                        japan: 'Japan',
                        uk: 'Verenigd Koninkrijk',
                        sacu: 'Zuidelijke Afrikaanse Douane Unie',
                    },
                    btn: {
                        updateSettingsTab: 'Werk menu bij',
                        resetSettings: 'Herstel instellingen',
                        seeOnDiscuss: 'Zie op Discussie',
                        seeOnDiscord: 'Zie op Discord',
                        scriptDevBy: 'Script ontwikkeld door Luan Tavares',
                    }
                };
            
                break;

            case 'no':
                // Norwegian
                translations = {
                    name: 'Hastighetsvisning',
                    zoomOut: 'Zoom ut',
                    zoomIn: 'Zoom inn',
                    changelog: 'Endringslogg',
                    changelogMessage: '<h6>Nyheter:</h6><ul style="margin-bottom: 10px"><li>Ny design! Skriptinnstillingsfanen er redesignet;</li><li>Vil du se hastighetsikoner som ligner mer på de som finnes i ditt land? Nå kan du velge temaer;</li><li>Jobber du med flere åpne WME-faner? Ikke noe problem. Alle innstillinger synkroniseres nå samtidig mellom alle åpne faner;</li><li>Vil du at de filtrerte ikonene skal være mer gjennomskinnelige? Nå kan du velge ønsket gjennomsiktighetsnivå;</li><li>Skripet viser nå en melding mens nye ikoner lastes. Det er en bevisst forsinkelse i lasting;</li><li>Hvis du angir en lavere hastighet enn den høyeste i hastighetsfilteret, vil skriptet rydde det siste feltet og vise en advarselmelding;</li><li>Det er lagt til en bryter på skriptinnstillingsfanen for å aktivere og deaktivere ikonene. Du kan fortsatt aktivere/deaktivere dem via "Kartlag"-fanen og med snarveier;</li><li>Takket være overgangen til WME SDK, kan du nå tilpasse hurtigtastene for skriptet i "Tastatur-snarveier"-vinduet;</li><li>Det er lagt til nye knapper nederst på skriptfanen for å få tilgang til Discord-kanalen, diskusjonstråden og min WME-profil;</li><li>Kodeskriptene er delvis migrert til WME SDK (ikke 100% migrert på grunn av manglende funksjoner i SDK);</li></ul><h6>Feilrettelser:</h6><ul><li>På grunn av noen endringer i kodestrukturen, vil lagrede innstillinger nå automatisk bli gjenopprettet;</li><li>Skripet viser nå riktig hastighet når landet har britisk kjøremåte;</li><li>Diverse små feilrettinger og kodeforbedringer.</li></ul>',
                    close: 'Lukk',
                    viewScript: 'Se skript',
                    viewChangelog: 'Vis endringslogg',
                    reset: 'Tilbakestill',
                    snackbar: {
                        updatingMapDisplay: 'Oppdaterer kartikoner. (Med villet forsinkelse)',
                        errorFiltering: 'Feil ved bruk av filter. Minimumshastighet kan ikke være større enn maksimum.',
                    },
                    title: {
                        general: 'Generelt',
                        roadTypes: 'Vei typer',
                        filter: 'Filter',
                        appearence: 'Utseende',
                        showOnRoadType: 'Vis på følgende veit typer:',
                        seeOnDiscuss: 'Se tråden for skriptet på Discuss',
                        seeOnDiscord: 'Se skriptets kanal på Waze Script Discord-serveren',
                        scriptDevBy: 'Se min editor brukerprofil',
                    },
                    label: {
                        displaySpeeds: 'Vis hastigheter',
                        showNoSpeed: 'Vis på segmenter uten hastighet',
                        showOnRoundabout: 'Vis på rundkjøring',
                        showOnUnpaved: 'Vis på uasfalterte veier',
                        maxZoom: 'Vis til zoomnivå:',
                        toggleLayerShortcut: 'Bytt visningslag for hastighet',
                        zIndex: 'Lagdybde',
                        hideShorterSegments: 'Skjul segmenter kortere enn',
                        speedFilter: 'Filtrer etter hastighet',
                        min: 'Min.:',
                        max: 'Maks.:',
                        opacity: 'Filter gjennomsiktighetsnivå:',
                    },
                    alertMessage: {
                        zIndex: `Når du bruker en lagdybde større enn <b>${this.zIndex.warn}</b>, vil hastighetslaget overlappe de andre, og du vil ikke kunne velge noen elementer på skjermen før du senker lagdybden til under <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `For å aktivere/deaktivere visningslaget for hastigheter, kan du gå til <b>Kartlag > Veier > Vis hastigheter</b> eller bruke snarveien <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Standard',
                        altViennaConv: 'Alternativ Wien-konvensjon',
                        japan: 'Japan',
                        uk: 'Storbritannia',
                        sacu: 'Sydlige afrikanske tollunionen',
                    },
                    btn: {
                        updateSettingsTab: 'Oppdater meny',
                        resetSettings: 'Tilbakestill innstillinger',
                        seeOnDiscuss: 'Se på diskusjonen',
                        seeOnDiscord: 'Se på Discord',
                        scriptDevBy: 'Script utviklet av Luan Tavares',
                    }
                };
            
                break;

            case 'pl':
                // Polish
                translations = {
                    name: 'Wyświetlanie prędkości',
                    zoomOut: 'Oddal',
                    zoomIn: 'Przybliż',
                    changelog: 'Dziennik zmian',
                    changelogMessage: '<h6>Nowości:</h6><ul style="margin-bottom: 10px"><li>Nowy wygląd! Zakładka ustawień skryptu została przeprojektowana;</li><li>Chcesz zobaczyć ikony prędkości bardziej przypominające te w Twoim kraju? Teraz możesz wybrać motywy;</li><li>Pracujesz z wieloma kartami WME? Żaden problem. Wszystkie ustawienia są teraz synchronizowane jednocześnie we wszystkich otwartych kartach;</li><li>Potrzebujesz, aby ikony były bardziej przezroczyste? Teraz możesz wybrać poziom przezroczystości, który chcesz;</li><li>Skrypt teraz wyświetla wiadomość podczas ładowania nowych ikon. Ładowanie ma celowe opóźnienie;</li><li>Jeśli w filtrze prędkości ustawisz minimalną prędkość większą niż maksymalną, skrypt wyczyści ostatnie pole i wyświetli komunikat ostrzegawczy;</li><li>Dodano przełącznik skrótu na zakładce ustawień skryptu do włączania i wyłączania ikon. Nadal możesz włączać/wyłączać je na zakładce „Warstwy mapy” i za pomocą skrótów klawiszowych;</li><li>Dzięki migracji do WME SDK, teraz możesz dostosować skróty klawiaturowe skryptu w oknie „Skróty klawiaturowe”;</li><li>Dodano nowe przyciski na końcu zakładki skryptu, aby uzyskać dostęp do kanału na Discordzie, tematu na Discuss i mojego profilu na WME;</li><li>Skrypt został częściowo przeniesiony do WME SDK (nie w pełni przeniesiony z powodu brakujących funkcji w SDK);</li></ul><h6>Poprawki:</h6><ul><li>W wyniku niektórych zmian w strukturze kodu, zapisane ustawienia zostaną teraz automatycznie przywrócone;</li><li>Skrypt teraz wyświetla prędkość po właściwej stronie, gdy kraj ma ruch lewostronny;</li><li>Wykonano różne drobne poprawki i ulepszenia kodu.</li></ul>',
                    close: 'Zamknij',
                    viewScript: 'Zobacz skrypt',
                    viewChangelog: 'Zobacz dziennik zmian',
                    reset: 'Resetuj',
                    snackbar: {
                        updatingMapDisplay: 'Aktualizowanie ikon mapy. (Z celowym opóźnieniem)',
                        errorFiltering: 'Błąd podczas stosowania filtra. Minimalna prędkość nie może być większa niż maksymalna.',
                    },
                    title: {
                        general: 'Ogólne',
                        roadTypes: 'Rodzaje dróg',
                        filter: 'Filtr',
                        appearence: 'Wygląd',
                        showOnRoadType: 'Pokaż na następujących rodzajach dróg:',
                        seeOnDiscuss: 'Zobacz wątek skryptu na Discuss',
                        seeOnDiscord: 'Zobacz kanał skryptu na serwerze Discord Waze Script',
                        scriptDevBy: 'Zobacz mój profil użytkownika edytora',
                    },
                    label: {
                        displaySpeeds: 'Pokaż prędkości',
                        showNoSpeed: 'Pokaż na segmentach bez prędkości',
                        showOnRoundabout: 'Pokaż na rondzie',
                        showOnUnpaved: 'Pokaż na drodze nieutwardzonej',
                        maxZoom: 'Renderuj do zoomu:',
                        toggleLayerShortcut: 'Przełącz warstwę wyświetlania prędkości',
                        zIndex: 'Głębokość warstwy',
                        hideShorterSegments: 'Ukryj na segmentach krótszych niż',
                        speedFilter: 'Filtruj według prędkości',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Poziom przezroczystości filtra:',
                    },
                    alertMessage: {
                        zIndex: `Używając głębokości warstwy większej niż <b>${this.zIndex.warn}</b>, warstwa prędkości będzie nakładać się na inne, uniemożliwiając wybór jakichkolwiek elementów na ekranie, dopóki nie zmniejszysz jej poniżej <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Aby włączyć/wyłączyć warstwę wyświetlania prędkości, przejdź do <b>Warstwy mapy > Drogi > Wyświetl prędkości</b> lub użyj skrótu <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Domyślny',
                        altViennaConv: 'Alternatywna konwencja wiedeńska',
                        japan: 'Japonia',
                        uk: 'Wielka Brytania',
                        sacu: 'Południowoafrykańska Unia Celna',
                    },
                    btn: {
                        updateSettingsTab: 'Aktualizuj menu',
                        resetSettings: 'Resetuj ustawienia',
                        seeOnDiscuss: 'Zobacz na Dyskusji',
                        seeOnDiscord: 'Zobacz na Discordzie',
                        scriptDevBy: 'Skrypt opracowany przez Luana Tavaresa',
                    }
                };
                
                break;

            case 'pt-BR':
                // Portuguese (Brazil)
                translations = {
                    name: 'Exibição de Velocidade',
                    zoomOut: 'Mais afastado',
                    zoomIn: 'Mais aproximado',
                    changelog: 'Registro de alterações',
                    changelogMessage: '<h6>Novidades:</h6><ul style="margin-bottom: 10px"><li>Novo visual! A aba de configurações do script foi redesenhado;</li><li>Deseja ver os ícones de velocidade mais parecido com os que são em seu país? Agora é possível selecionar temas;</li><li>Trabalha com mais de uma aba do WME aberto? Não há problemas. Todas as configurações agora são sincronizadas simultaneamente entre todas as abas abertas;</li><li>Precisa deixar os ícones filtrados mais translúcidos? Seus problemas acabaram. Você mesmo pode escolher qual o nível de transparência que você deseja para os ícones;</li><li>Agora o script exibe uma mensagem enquanto estiver carregando novos ícones. Há um delay intecional no carregamento;</li><li>Caso você informe no filtro de velocidade uma velocidade mínima maior que a maior, o script irá limpar último campo e exibirá uma mensagem de aviso;</li><li>Adicionado um switch de atalho na aba de configurações do script para ativar e desativar os ícones. Ainda é possível ativar/desativar pela aba de "Camadas do mapa" e também por atalho;</li><li>Graças a migração para o SDK do WME, você pode personalizar a tecla de atalho do script no modal de "Atalhos do teclado";</li><li>Adicionado novos botões ao final da aba do script para acessar o canal no Discord, ao tópico no Discuss e ao meu perfil no WME;</li><li>Código do script migrado parcialmente para o SDK do WME (não migrado 100% por conta de recursos em falta no SDK).</li></ul><h6>Correções:</h6><ul><li>Devido a algumas alterações na estrutura do código, as configurações já salvas serão restauradas automaticamente;</li><li>O script agora exibe a velocidade do lado correto quando o país tiver mão inglesa;</li><li>Diversas pequenas correções e melhorias de código.</li></ul>',
                    close: 'Fechar',
                    viewScript: 'Ver script',
                    viewChangelog: 'Visualizar o registro de alterações',
                    reset: 'Redefinir',
                    snackbar: {
                        updatingMapDisplay: 'Atualizando ícones do mapa. (Com atraso intencional)',
                        errorFiltering: 'Erro ao aplicar o filtro. A velocidade mínima não pode ser maior que a máxima.',
                    },
                    title: {
                        general: 'Geral',
                        roadTypes: 'Tipos de via',
                        filter: 'Filtro',
                        appearence: 'Aparência',
                        showOnRoadType: 'Exibir nos seguintes tipos de via:',
                        seeOnDiscuss: 'Veja o tópico do script no Discuss',
                        seeOnDiscord: 'Veja o canal do script no servidor Discord do Waze Script',
                        scriptDevBy: 'Veja o meu perfil de usuário do editor',
                    },
                    label: {
                        displaySpeeds: 'Exibir velocidades',
                        showNoSpeed: 'Exibir em segmento sem velocidade',
                        showOnRoundabout: 'Exibir em rotatória',
                        showOnUnpaved: 'Exibir em via não pavimentada',
                        maxZoom: 'Renderizar até o zoom:',
                        toggleLayerShortcut: 'Alternar a camada de exibição da velocidade',
                        zIndex: 'Profundidade da camada',
                        hideShorterSegments: 'Ocultar em segmentos menores que',
                        speedFilter: 'Filtrar por velocidade',
                        min: 'Mín.:',
                        max: 'Máx.:',
                        opacity: 'Nível de opacidade do filtro:',
                    },
                    alertMessage: {
                        zIndex: `Ao utilizar uma profundidade de camada maior que <b>${this.zIndex.warn}</b>, a camada de velocidade se sobreponhará as outras e não será possível selecionar nenhum elemento na tela até baixa-la novamente abaixo de <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Para ativar/desativar a camada de exibição de velocidades, basta ir até <b>Camadas do Mapa > Vias > Exibir velocidades</b> ou utilizar o atalho <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Padrão',
                        altViennaConv: 'Convenção de Viena Alternativa',
                        japan: 'Japão',
                        uk: 'Reino Unido',
                        sacu: 'União Aduaneira da África Austral',
                    },
                    btn: {
                        updateSettingsTab: 'Atualizar menu',
                        resetSettings: 'Redefinir configurações',
                        seeOnDiscuss: 'Ver no Discuss',
                        seeOnDiscord: 'Ver no Discord',
                        scriptDevBy: 'Script desenvolvido por Luan Tavares',
                    }
                };

                break;

            case 'pt-PT':
                // Portuguese (Portugal)
                translations = {
                    name: 'Exibição de Velocidade',
                    zoomOut: 'Mais afastado',
                    zoomIn: 'Mais aproximado',
                    changelog: 'Registo de alterações',
                    changelogMessage: '<h6>Novidades:</h6><ul style="margin-bottom: 10px"><li>Novo visual! A aba de configurações do script foi redesenhada;</li><li>Deseja ver os ícones de velocidade mais parecido com os que são no seu país? Agora é possível selecionar temas;</li><li>Trabalha com mais de uma aba do WME aberta? Não há problemas. Todas as configurações agora são sincronizadas simultaneamente entre todas as abas abertas;</li><li>Precisa deixar os ícones filtrados mais translúcidos? Agora pode escolher o nível de transparência desejado para os ícones;</li><li>Agora o script exibe uma mensagem enquanto carrega novos ícones. Existe uma pequena demora no carregamento;</li><li>Caso insira uma velocidade mínima superior à máxima no filtro de velocidade, o script limpará o último campo e exibirá uma mensagem de aviso;</li><li>Adicionado um switch de atalho na aba de configurações do script para ativar e desativar os ícones. Ainda é possível ativar/desativar pela aba de "Camadas do mapa" e também por atalho;</li><li>Graças à migração para o SDK do WME, pode personalizar a tecla de atalho do script no modal de "Atalhos do teclado";</li><li>Adicionados novos botões ao final da aba do script para aceder ao canal do Discord, ao tópico no Discuss e ao meu perfil no WME;</li><li>Código do script parcialmente migrado para o SDK do WME (não 100% migrado devido à falta de funcionalidades no SDK).</li></ul><h6>Correções:</h6><ul><li>Devido a algumas alterações na estrutura do código, as configurações já salvas serão restauradas automaticamente;</li><li>O script agora exibe a velocidade do lado correto quando o país tiver mão inglesa;</li><li>Diversas pequenas correções e melhorias de código.</li></ul>',
                    close: 'Fechar',
                    viewScript: 'Ver script',
                    viewChangelog: 'Visualizar o registo de alterações',
                    reset: 'Redefinir',
                    snackbar: {
                        updatingMapDisplay: 'A atualizar ícones do mapa. (Com atraso intencional)',
                        errorFiltering: 'Erro ao aplicar o filtro. A velocidade mínima não pode ser superior à máxima.',
                    },
                    title: {
                        general: 'Geral',
                        roadTypes: 'Tipos de estrada',
                        filter: 'Filtro',
                        appearence: 'Aparência',
                        showOnRoadType: 'Mostrar nos seguintes tipos de estrada:',
                        seeOnDiscuss: 'Veja o tópico do script no Discuss',
                        seeOnDiscord: 'Veja o canal do script no servidor Discord do Waze Script',
                        scriptDevBy: 'Veja o meu perfil de utilizador do editor',
                    },
                    label: {
                        displaySpeeds: 'Exibir velocidades',
                        showNoSpeed: 'Exibir em segmento sem velocidade',
                        showOnRoundabout: 'Exibir em rotunda',
                        showOnUnpaved: 'Exibir em via não pavimentada',
                        maxZoom: 'Renderizar até o zoom:',
                        toggleLayerShortcut: 'Alternar a camada de exibição da velocidade',
                        zIndex: 'Profundidade da camada',
                        hideShorterSegments: 'Ocultar em segmentos menores que',
                        speedFilter: 'Filtrar por velocidade',
                        min: 'Mín.:',
                        max: 'Máx.:',
                        opacity: 'Nível de opacidade do filtro:',
                    },
                    alertMessage: {
                        zIndex: `Ao utilizar uma profundidade de camada maior que <b>${this.zIndex.warn}</b>, a camada de velocidade se sobreporá a outras e não será possível selecionar nenhum elemento na tela até que a profundidade seja reduzida abaixo de <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Para ativar/desativar a camada de exibição de velocidades, basta ir a <b>Camadas do Mapa > Vias > Exibir velocidades</b> ou utilizar o atalho <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Padrão',
                        altViennaConv: 'Convenção de Viena Alternativa',
                        japan: 'Japão',
                        uk: 'Reino Unido',
                        sacu: 'União Aduaneira da África Austral',
                    },
                    btn: {
                        updateSettingsTab: 'Atualizar menu',
                        resetSettings: 'Redefinir configurações',
                        seeOnDiscuss: 'Ver no Discuss',
                        seeOnDiscord: 'Ver no Discord',
                        scriptDevBy: 'Script desenvolvido por Luan Tavares',
                    }
                };
            
                break;

            case 'ro':
                // Romanian
                translations = {
                    name: 'Afișarea vitezei',
                    zoomOut: 'Mai departe',
                    zoomIn: 'Mai aproape',
                    changelog: 'Jurnalul modificărilor',
                    changelogMessage: '<h6>Novități:</h6><ul style="margin-bottom: 10px"><li>Noua interfață! Fereastra de setări a scriptului a fost redesenată;</li><li>Doriți să vedeți icoane de viteză mai asemănătoare cu cele din țara dumneavoastră? Acum este posibil să selectați teme;</li><li>Lucrați cu mai multe file WME deschise? Nicio problemă. Toate setările sunt acum sincronizate simultan între toate filele deschise;</li><li>Trebuie să faceți icoanele filtrate mai translucide? Acum puteți alege nivelul de transparență dorit;</li><li>Acum scriptul va afișa un mesaj în timp ce sunt încărcate noile icoane. Există o întârziere intenționată în încărcare;</li><li>Dacă introduceți o viteză minimă mai mare decât viteza maximă în filtrul de viteză, scriptul va șterge ultimul câmp și va afișa un mesaj de avertizare;</li><li>A fost adăugat un comutator de comandă rapidă în fereastra de setări a scriptului pentru a activa și dezactiva icoanele. De asemenea, le puteți activa/dezactiva din fila „Straturi de hartă” și cu comenzi rapide;</li><li>Datorită migrației la WME SDK, acum puteți personaliza tasta rapidă pentru script în fereastra „Comenzi rapide tastatură”;</li><li>S-au adăugat noi butoane la sfârșitul filei scriptului pentru a accesa canalul Discord, subiectul de pe Discuss și profilul meu WME;</li><li>Codul scriptului a fost parțial migrat la WME SDK (nu a fost migrați 100% din cauza lipsei unor funcționalități în SDK).</li></ul><h6>Corecții:</h6><ul><li>Datorită unor modificări în structura codului, setările deja salvate vor fi restaurate automat;</li><li>Scriptul va afișa acum viteza pe partea corectă atunci când țara are trafic pe partea stângă;</li><li>Diverse corecții minore și îmbunătățiri ale codului.</li></ul>',
                    close: 'Închide',
                    viewScript: 'Vezi scriptul',
                    viewChangelog: 'Vizualizează jurnalul modificărilor',
                    reset: 'Resetează',
                    snackbar: {
                        updatingMapDisplay: 'Actualizare pictograme hartă. (Cu întârziere intenționată)',
                        errorFiltering: 'Eroare la aplicarea filtrului. Viteza minimă nu poate fi mai mare decât viteza maximă.',
                    },
                    title: {
                        general: 'General',
                        roadTypes: 'Tipuri de drumuri',
                        filter: 'Filtru',
                        appearence: 'Aparență',
                        showOnRoadType: 'Afișați pe următoarele tipuri de drumuri:',
                        seeOnDiscuss: 'Vezi firul scriptului pe Discuss',
                        seeOnDiscord: 'Vezi canalul scriptului pe serverul Discord Waze Script',
                        scriptDevBy: 'Vizualizează profilul meu de utilizator editor',
                    },
                    label: {
                        displaySpeeds: 'Afișează vitezele',
                        showNoSpeed: 'Afișează pe segmente fără viteză',
                        showOnRoundabout: 'Afișează pe sens giratoriu',
                        showOnUnpaved: 'Afișează pe drumuri neasfaltate',
                        maxZoom: 'Renderizează până la zoom:',
                        toggleLayerShortcut: 'Comută stratul de afișare a vitezei',
                        zIndex: 'Adâncimea stratului',
                        hideShorterSegments: 'Ascunde segmentele mai mici de',
                        speedFilter: 'Filtrează după viteză',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Nivelul de opacitate al filtrului:',
                    },
                    alertMessage: {
                        zIndex: `Atunci când folosești o adâncime a stratului mai mare de <b>${this.zIndex.warn}</b>, stratul de viteză se va suprapune altor straturi și nu vei putea selecta niciun element pe ecran până când nu scazi adâncimea sub <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Pentru a activa/dezactiva stratul de afișare a vitezelor, mergi la <b>Straturi Mapa > Drumuri > Afișează viteze</b> sau folosește scurtătura <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Implicit',
                        altViennaConv: 'Alternativă Convenția de la Viena',
                        japan: 'Japonia',
                        uk: 'Regatul Unit',
                        sacu: 'Uniunea Vamală a Africii de Sud',
                    },
                    btn: {
                        updateSettingsTab: 'Actualizează meniul',
                        resetSettings: 'Resetare setări',
                        seeOnDiscuss: 'Vezi în discuție',
                        seeOnDiscord: 'Vezi pe Discord',
                        scriptDevBy: 'Script dezvoltat de Luan Tavares',
                    }
                };
            
                break;

            case 'ru':
                // Russian
                translations = {
                    name: 'Отображение скорости',
                    zoomOut: 'Удалить',
                    zoomIn: 'Приблизить',
                    changelog: 'Журнал изменений',
                    changelogMessage: '<h6>Нововведения:</h6><ul style="margin-bottom: 10px"><li>Новый внешний вид! Вкладка настроек скрипта была переработана;</li><li>Хотите видеть иконки скорости, которые больше похожи на те, что в вашей стране? Теперь можно выбрать темы;</li><li>Работаете с несколькими вкладками WME? Нет проблем. Все настройки теперь синхронизируются между всеми открытыми вкладками;</li><li>Нужно сделать фильтрованные иконки более прозрачными? Теперь вы можете выбрать желаемый уровень прозрачности;</li><li>Теперь скрипт отображает сообщение, пока загружаются новые иконки. Загрузка с намеренной задержкой;</li><li>Если вы введете минимальную скорость, большую, чем максимальную, в фильтре скорости, скрипт очистит последнее поле и отобразит предупреждающее сообщение;</li><li>Добавлен переключатель для быстрого доступа на вкладке настроек скрипта для включения и выключения иконок. Иконки можно включать/выключать через вкладку «Слои карты» и с помощью горячих клавиш;</li><li>Благодаря миграции на WME SDK теперь можно настроить горячие клавиши для скрипта в окне «Горячие клавиши»;</li><li>Добавлены новые кнопки внизу вкладки скрипта для доступа к каналу в Discord, обсуждению в Discuss и моему профилю в WME;</li><li>Часть кода скрипта была мигрирована на WME SDK (не полностью из-за отсутствующих функций в SDK);</li></ul><h6>Исправления:</h6><ul><li>Из-за изменений в структуре кода сохраненные настройки будут автоматически восстановлены;</li><li>Теперь скрипт отображает скорость на правильной стороне, если в стране левостороннее движение;</li><li>Множество мелких исправлений и улучшений кода.</li></ul>',
                    close: 'Закрыть',
                    viewScript: 'Посмотреть скрипт',
                    viewChangelog: 'Просмотреть журнал изменений',
                    reset: 'Сбросить',
                    snackbar: {
                        updatingMapDisplay: 'Обновление значков карты. (С намеренной задержкой)',
                        errorFiltering: 'Ошибка применения фильтра. Минимальная скорость не может быть больше максимальной.',
                    },
                    title: {
                        general: 'Общее',
                        roadTypes: 'Типы дорог',
                        filter: 'Фильтр',
                        appearence: 'Внешний вид',
                        showOnRoadType: 'Показать на следующих типах дорог:',
                        seeOnDiscuss: 'Посмотреть тему скрипта на Discuss',
                        seeOnDiscord: 'Посмотреть канал скрипта на сервере Discord Waze Script',
                        scriptDevBy: 'Посмотреть мой профиль пользователя редактора',
                    },
                    label: {
                        displaySpeeds: 'Отображать скорости',
                        showNoSpeed: 'Отображать на сегментах без скорости',
                        showOnRoundabout: 'Отображать на круговых развязках',
                        showOnUnpaved: 'Отображать на неасфальтированных дорогах',
                        maxZoom: 'Отображать до уровня зума:',
                        toggleLayerShortcut: 'Переключить слой отображения скорости',
                        zIndex: 'Глубина слоя',
                        hideShorterSegments: 'Скрывать на сегментах короче чем',
                        speedFilter: 'Фильтровать по скорости',
                        min: 'Мин.:',
                        max: 'Макс.:',
                        opacity: 'Уровень непрозрачности фильтра:',
                    },
                    alertMessage: {
                        zIndex: `При использовании глубины слоя больше <b>${this.zIndex.warn}</b> слой скорости будет перекрывать другие и вы не сможете выбрать элементы на экране, пока не уменьшите глубину слоя ниже <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Для активации/деактивации слоя отображения скорости перейдите в <b>Слои карты > Дороги > Отображать скорости</b> или используйте комбинацию клавиш <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'По умолчанию',
                        altViennaConv: 'Альтернативная Венская конвенция',
                        japan: 'Япония',
                        uk: 'Соединенное Королевство',
                        sacu: 'Южноафриканский таможенный союз',
                    },
                    btn: {
                        updateSettingsTab: 'Обновить меню',
                        resetSettings: 'Сбросить настройки',
                        seeOnDiscuss: 'Смотреть на обсуждении',
                        seeOnDiscord: 'Смотреть в Discord',
                        scriptDevBy: 'Скрипт разработан Луаном Таваресом',
                    }
                };
                
                break;
                
            case 'sk':
                // Slovak
                translations = {
                    name: 'Zobrazenie rýchlosti',
                    zoomOut: 'Ďalej',
                    zoomIn: 'Priblížiť',
                    changelog: 'Záznam zmien',
                    changelogMessage: '<h6>Novinky:</h6><ul style="margin-bottom: 10px"><li>Nový vzhľad! Záložka nastavení skriptu bola prepracovaná;</li><li>Chcete vidieť ikony rýchlosti, ktoré viac pripomínajú tie vo vašej krajine? Teraz si môžete vybrať témy;</li><li>Pracujete s viacerými kartami WME? Žiadny problém. Všetky nastavenia sú teraz synchronizované medzi všetkými otvorenými kartami;</li><li>Potrebujete, aby boli ikony filtrované viac priehľadné? Teraz si môžete zvoliť požadovanú úroveň priesvitnosti;</li><li>Teraz skript zobrazuje správu, kým sa načítajú nové ikony. Načítanie má zámerné oneskorenie;</li><li>Ak zadáte minimálnu rýchlosť vyššiu ako maximálnu v rýchlostnom filtri, skript vymaže posledné pole a zobrazí varovnú správu;</li><li>Na paneli nastavení skriptu bol pridaný prepínač na rýchle zapnutie a vypnutie ikon. Ikony je možné stále zapínať/vypínať cez záložku „Mapové vrstvy“ a tiež pomocou klávesových skratiek;</li><li>Vďaka migrácii na WME SDK teraz môžete prispôsobiť klávesovú skratku skriptu v okne „Klávesové skratky“;</li><li>Na konci panelu skriptu boli pridané nové tlačidlá na prístup k Discord kanálu, diskusnej téme a môjmu profilu na WME;</li><li>Kód skriptu bol čiastočne migrovaný do WME SDK (nebol migrovaný úplne kvôli chýbajúcim funkciám v SDK);</li></ul><h6>Opravy:</h6><ul><li>V dôsledku niektorých zmien v štruktúre kódu budú uložené nastavenia automaticky obnovené;</li><li>Skript teraz zobrazuje rýchlosť na správnej strane, keď krajina má jazdu po ľavej strane;</li><li>Rôzne drobné opravy a vylepšenia kódu.</li></ul>',
                    close: 'Zatvoriť',
                    viewScript: 'Zobraziť skript',
                    viewChangelog: 'Zobraziť záznam zmien',
                    reset: 'Obnoviť',
                    snackbar: {
                        updatingMapDisplay: 'Aktualizácia ikon na mape. (So zámerným oneskorením)',
                        errorFiltering: 'Chyba pri použití filtra. Minimálna rýchlosť nemôže byť väčšia ako maximálna.',
                    },
                    title: {
                        general: 'Všeobecné',
                        roadTypes: 'Typy ciest',
                        filter: 'Filtrovať',
                        appearence: 'Vzhľad',
                        showOnRoadType: 'Zobraziť na nasledujúcich typoch ciest:',
                        seeOnDiscuss: 'Pozrite si vlákno skriptu na Discuss',
                        seeOnDiscord: 'Pozrite si kanál skriptu na Waze Script Discord serveri',
                        scriptDevBy: 'Zobraziť môj profil používateľa editora',
                    },
                    label: {
                        displaySpeeds: 'Zobraziť rýchlosti',
                        showNoSpeed: 'Zobraziť na segmentoch bez rýchlosti',
                        showOnRoundabout: 'Zobraziť na okruhu',
                        showOnUnpaved: 'Zobraziť na nezpevnených cestách',
                        maxZoom: 'Zobraziť do úrovne priblíženia:',
                        toggleLayerShortcut: 'Prepínať vrstvu zobrazenia rýchlosti',
                        zIndex: 'Hĺbka vrstvy',
                        hideShorterSegments: 'Skryť na segmentoch kratších ako',
                        speedFilter: 'Filtrovať podľa rýchlosti',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Úroveň priezračnosti filtra:',
                    },
                    alertMessage: {
                        zIndex: `Pri použití hĺbky vrstvy väčšej ako <b>${this.zIndex.warn}</b> bude vrstva rýchlosti prekryť ostatné a nebude možné vybrať žiadny prvok na obrazovke, kým ju neznížite pod <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Ak chcete zapnúť/vypnúť vrstvu zobrazenia rýchlosti, prejdite na <b>Mapové vrstvy > Cesty > Zobraziť rýchlosti</b> alebo použite skratku <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Predvolený',
                        altViennaConv: 'Alternatívna Viedenská konvencia',
                        japan: 'Japonsko',
                        uk: 'Spojené kráľovstvo',
                        sacu: 'Juhoafrická colná únia',
                    },
                    btn: {
                        updateSettingsTab: 'Aktualizovať menu',
                        resetSettings: 'Obnoviť nastavenia',
                        seeOnDiscuss: 'Pozrieť na diskusii',
                        seeOnDiscord: 'Pozrieť na Discord',
                        scriptDevBy: 'Skript vyvinul Luan Tavares',
                    }
                };
            
                break;

            case 'sl':
                // Slovenian
                translations = {
                    name: 'Prikaz hitrosti',
                    zoomOut: 'Povečaj',
                    zoomIn: 'Pomanjšaj',
                    changelog: 'Zgodovina sprememb',
                    changelogMessage: '<h6>Novosti:</h6><ul style="margin-bottom: 10px"><li>Nov izgled! Zavihek za nastavitve skripte je bil prenovljen;</li><li>Želite videti ikone hitrosti, ki bolj spominjajo na tiste v vaši državi? Zdaj lahko izberete teme;</li><li>Delate z več odprtimi zavihki WME? Nič hudega. Vse nastavitve so zdaj sinhronizirane med vsemi odprtimi zavihki;</li><li>Potrebujete, da so filtrirane ikone bolj prozorne? Zdaj lahko izberete želeno stopnjo prosojnosti;</li><li>Zdaj skript prikazuje sporočilo, medtem ko se nalagajo nove ikone. Nalaganje ima namerno zamudo;</li><li>Če v filtrirniku hitrosti nastavite minimalno hitrost, večjo od največje, bo skript izbrisal zadnje polje in prikazal opozorilno sporočilo;</li><li>Dodana je bližnjica za hitri vklop in izklop ikon na zavihku za nastavitve skripte. Ikone lahko še vedno vklopite/izklopite z zavihkom „Plasti zemljevida“ in s tipkovnimi bližnjicami;</li><li>Z migracijo na WME SDK lahko zdaj prilagodite tipkovno bližnjico za skript v oknu „Tipkovne bližnjice“;</li><li>Dodana so nova gumba na dnu zavihka skripte za dostop do Discord kanala, teme v Discuss in mojega profila na WME;</li><li>Koda skripte je bila delno migrirana v WME SDK (ni bila popolnoma migrirana zaradi pomanjkanja funkcionalnosti v SDK);</li></ul><h6>Popravki:</h6><ul><li>Zaradi nekaterih sprememb v strukturi kode bodo shranjene nastavitve samodejno obnovljene;</li><li>Skript zdaj prikazuje hitrost na pravilni strani, če ima država vožnjo po levi strani;</li><li>Različne manjše popravke in izboljšave kode.</li></ul>',
                    close: 'Zapri',
                    viewScript: 'Poglej skript',
                    viewChangelog: 'Poglej zgodovino sprememb',
                    reset: 'Ponastavi',
                    snackbar: {
                        updatingMapDisplay: 'Posodabljanje ikon zemljevida. (Z namerno zamudo)',
                        errorFiltering: 'Napaka pri uporabi filtra. Najmanjša hitrost ne more biti večja od največje.',
                    },
                    title: {
                        general: 'Splošno',
                        roadTypes: 'Vrste cest',
                        filter: 'Filtriraj',
                        appearence: 'Izgled',
                        showOnRoadType: 'Prikaži na naslednjih vrstah cest:',
                        seeOnDiscuss: 'Oglejte si temo skripte na Discuss',
                        seeOnDiscord: 'Oglejte si kanal skripte na Waze Script Discord strežniku',
                        scriptDevBy: 'Ogled mojega uporabniškega profila urejevalnika',
                    },
                    label: {
                        displaySpeeds: 'Prikaz hitrosti',
                        showNoSpeed: 'Prikaz na segmentih brez hitrosti',
                        showOnRoundabout: 'Prikaz na krožišču',
                        showOnUnpaved: 'Prikaz na nepovoznih cestah',
                        maxZoom: 'Prikaz do stopnje povečave:',
                        toggleLayerShortcut: 'Preklopi plast prikaza hitrosti',
                        zIndex: 'Globina plasti',
                        hideShorterSegments: 'Skrij na segmentih krajši od',
                        speedFilter: 'Filtriraj po hitrosti',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Raven filtriranja prosojnosti:',
                    },
                    alertMessage: {
                        zIndex: `Pri uporabi globine plasti večje od <b>${this.zIndex.warn}</b> se bo plast hitrosti prekrila z drugimi in ne bo mogoče izbrati nobenega elementa na zaslonu, dokler je ne zmanjšate pod <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Za aktiviranje/izklop plasti prikaza hitrosti, pojdite na <b>Plasti zemljevida > Ceste > Prikaz hitrosti</b> ali uporabite bližnjico <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Privzeto',
                        altViennaConv: 'Alternativna Dunajska konvencija',
                        japan: 'Japonska',
                        uk: 'Združeno kraljestvo',
                        sacu: 'Južnoafriška carinska unija',
                    },
                    btn: {
                        updateSettingsTab: 'Posodobi meni',
                        resetSettings: 'Ponastavi nastavitve',
                        seeOnDiscuss: 'Oglej si na razpravi',
                        seeOnDiscord: 'Oglej si na Discordu',
                        scriptDevBy: 'Skript je razvijal Luan Tavares',
                    }
                };
            
                break;
            
            case 'sv':
                // Swedish
                translations = {
                    name: 'Hastighetsvisning',
                    zoomOut: 'Zooma ut',
                    zoomIn: 'Zooma in',
                    changelog: 'Ändringslogg',
                    changelogMessage: '<h6>Nyheter:</h6><ul style="margin-bottom: 10px"><li>Ny design! Skriptets inställningsflik har omdesignats;</li><li>Vill du se hastighetsikoner som mer liknar de som finns i ditt land? Nu kan du välja teman;</li><li>Arbetar du med flera öppna WME-flikar? Inga problem. Alla inställningar synkroniseras nu samtidigt mellan alla öppna flikar;</li><li>Behöver du göra filtrerade ikoner mer genomskinliga? Nu kan du välja önskad genomskinlighetsnivå;</li><li>Skriptet visar nu ett meddelande medan nya ikoner laddas. Det finns en medveten fördröjning vid inläsning;</li><li>Om du anger ett lägre värde än det högsta i hastighetsfiltret kommer skriptet att rensa det sista fältet och visa ett varningsmeddelande;</li><li>En snabbväxlare har lagts till i skriptets inställningsflik för att aktivera och inaktivera ikonerna. Du kan fortfarande aktivera/inaktivera dem via fliken "Kartlager" och genom snabbkommandon;</li><li>Tack vare övergången till WME SDK kan du nu anpassa genvägsknappen för skriptet i fönstret "Tangentbordsgenvägar";</li><li>Nya knappar har lagts till längst ner på skriptfliken för att få åtkomst till Discord-kanalen, diskussionen och min WME-profil;</li><li>En del av skriptets kod har migrerats till WME SDK (inte fullständigt på grund av bristande funktioner i SDK);</li></ul><h6>Bugfixar:</h6><ul><li>På grund av ändringar i kodstrukturen kommer sparade inställningar att återställas automatiskt;</li><li>Skriptet visar nu hastigheten på rätt sida om landet har vänstertrafik;</li><li>Olika små buggfixar och kodförbättringar.</li></ul>',
                    close: 'Stäng',
                    viewScript: 'Visa skript',
                    viewChangelog: 'Visa ändringslogg',
                    reset: 'Återställ',
                    snackbar: {
                        updatingMapDisplay: 'Uppdaterar kartikoner. (Med avsiktlig fördröjning)',
                        errorFiltering: 'Fel vid tillämpning av filtret. Minsta hastighet kan inte vara större än den maximala.',
                    },
                    title: {
                        general: 'Allmänt',
                        roadTypes: 'Väglagstyper',
                        filter: 'Filter',
                        appearence: 'Utseende',
                        showOnRoadType: 'Visa på följande vägtyper:',
                        seeOnDiscuss: 'Se skriptets tråd på Discuss',
                        seeOnDiscord: 'Se skriptets kanal på Waze Script Discord-servern',
                        scriptDevBy: 'Visa min redigerarprofil',
                    },
                    label: {
                        displaySpeeds: 'Visa hastigheter',
                        showNoSpeed: 'Visa på segment utan hastighet',
                        showOnRoundabout: 'Visa på rondell',
                        showOnUnpaved: 'Visa på oasfalterad väg',
                        maxZoom: 'Rendera upp till zoomnivå:',
                        toggleLayerShortcut: 'Växla hastighetslagrets synlighet',
                        zIndex: 'Lagerdjup',
                        hideShorterSegments: 'Dölj på segment som är kortare än',
                        speedFilter: 'Filtrera efter hastighet',
                        min: 'Min.:',
                        max: 'Max.:',
                        opacity: 'Filter opacitetsnivå:',
                    },
                    alertMessage: {
                        zIndex: `När du använder ett lagerdjup större än <b>${this.zIndex.warn}</b> kommer hastighetslagret att täcka andra lager och du kommer inte att kunna välja några objekt på skärmen förrän du sänker det under <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `För att aktivera/inaktivera hastighetsvisningslagret, gå till <b>Map Layers > Roads > Visa hastigheter</b> eller använd genvägen <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Standard',
                        altViennaConv: 'Alternativ Wienkonvention',
                        japan: 'Japan',
                        uk: 'Storbritannien',
                        sacu: 'Sydafrikanska tullunionen',
                    },
                    btn: {
                        updateSettingsTab: 'Uppdatera meny',
                        resetSettings: 'Återställ inställningar',
                        seeOnDiscuss: 'Se på diskussionen',
                        seeOnDiscord: 'Se på Discord',
                        scriptDevBy: 'Script utvecklat av Luan Tavares',
                    }
                };
                
                break;

            case 'th':
                // Thai
                translations = {
                    name: 'การแสดงความเร็ว',
                    zoomOut: 'ซูมออก',
                    zoomIn: 'ซูมเข้า',
                    changelog: 'บันทึกการเปลี่ยนแปลง',
                    changelogMessage: '<h6>สิ่งใหม่ๆ:</h6><ul style="margin-bottom: 10px"><li>ดีไซน์ใหม่! แท็บการตั้งค่าของสคริปต์ได้รับการออกแบบใหม่;</li><li>คุณอยากเห็นไอคอนความเร็วที่เหมือนกับในประเทศของคุณหรือไม่? ตอนนี้คุณสามารถเลือกธีมได้;</li><li>ทำงานกับหลายแท็บ WME? ไม่มีปัญหา การตั้งค่าทั้งหมดตอนนี้จะซิงค์ระหว่างแท็บที่เปิดทั้งหมด;</li><li>ต้องการให้ไอคอนที่กรองมีความโปร่งใสมากขึ้นหรือไม่? ตอนนี้คุณสามารถเลือกระดับความโปร่งใสที่ต้องการได้;</li><li>ตอนนี้สคริปต์จะแสดงข้อความในขณะที่กำลังโหลดไอคอนใหม่ๆ การโหลดมีการหน่วงเวลาเล็กน้อย;</li><li>หากคุณตั้งค่าความเร็วขั้นต่ำที่มากกว่าค่าความเร็วสูงสุดในตัวกรองความเร็ว สคริปต์จะลบฟิลด์สุดท้ายและแสดงข้อความเตือน;</li><li>เพิ่มสวิตช์สำหรับการเปิดและปิดไอคอนอย่างรวดเร็วในแท็บการตั้งค่าของสคริปต์ คุณยังสามารถเปิด/ปิดไอคอนได้ผ่านแท็บ "ชั้นแผนที่" และใช้ทางลัดแป้นพิมพ์;</li><li>เนื่องจากการย้ายไปยัง WME SDK ตอนนี้คุณสามารถปรับแต่งทางลัดแป้นพิมพ์สำหรับสคริปต์ในหน้าต่าง "ทางลัดแป้นพิมพ์";</li><li>เพิ่มปุ่มใหม่ที่ด้านล่างของแท็บสคริปต์สำหรับเข้าถึงช่องทาง Discord, หัวข้อ Discuss และโปรไฟล์ WME ของฉัน;</li><li>บางส่วนของโค้ดสคริปต์ได้ถูกย้ายไปยัง WME SDK (ยังไม่สมบูรณ์เนื่องจากฟังก์ชันที่ขาดใน SDK);</li></ul><h6>การแก้ไขบัค:</h6><ul><li>เนื่องจากการเปลี่ยนแปลงในโครงสร้างของโค้ด การตั้งค่าที่บันทึกไว้จะถูกกู้คืนโดยอัตโนมัติ;</li><li>ตอนนี้สคริปต์จะแสดงความเร็วในฝั่งที่ถูกต้องเมื่อประเทศนั้นมีการขับขี่ทางซ้าย;</li><li>การแก้ไขบัคเล็กน้อยและการปรับปรุงโค้ดอื่นๆ.</li></ul>',
                    close: 'ปิด',
                    viewScript: 'ดูสคริปต์',
                    viewChangelog: 'ดูบันทึกการเปลี่ยนแปลง',
                    reset: 'คืนค่า',
                    snackbar: {
                        updatingMapDisplay: 'กำลังอัปเดตไอคอนแผนที่ (มีความล่าช้าโดยเจตนา)',
                        errorFiltering: 'ข้อผิดพลาดในการใช้ตัวกรอง ความเร็วขั้นต่ำต้องไม่มากกว่าค่าสูงสุด.',
                    },
                    title: {
                        general: 'ทั่วไป',
                        roadTypes: 'ประเภทถนน',
                        filter: 'ตัวกรอง',
                        appearence: 'ลักษณะ',
                        showOnRoadType: 'แสดงในประเภทถนนต่อไปนี้:',
                        seeOnDiscuss: 'ดูเธรดของสคริปต์ใน Discuss',
                        seeOnDiscord: 'ดูช่องของสคริปต์ในเซิร์ฟเวอร์ Discord ของ Waze Script',
                        scriptDevBy: 'ดูโปรไฟล์ผู้ใช้ของฉันในตัวแก้ไข',
                    },
                    label: {
                        displaySpeeds: 'แสดงความเร็ว',
                        showNoSpeed: 'แสดงในเซกเมนต์ที่ไม่มีความเร็ว',
                        showOnRoundabout: 'แสดงในทางแยกรอบ',
                        showOnUnpaved: 'แสดงในถนนที่ไม่ได้ปู',
                        maxZoom: 'แสดงได้จนถึงการซูมระดับ:',
                        toggleLayerShortcut: 'สลับการแสดงผลเลเยอร์ความเร็ว',
                        zIndex: 'ความลึกของเลเยอร์',
                        hideShorterSegments: 'ซ่อนในเซกเมนต์ที่สั้นกว่า',
                        speedFilter: 'กรองตามความเร็ว',
                        min: 'ขั้นต่ำ:',
                        max: 'สูงสุด:',
                        opacity: 'ระดับความทึบของฟิลเตอร์:',
                    },
                    alertMessage: {
                        zIndex: `เมื่อใช้ความลึกของเลเยอร์ที่มากกว่า <b>${this.zIndex.warn}</b> เลเยอร์ความเร็วจะทับซ้อนกับเลเยอร์อื่นและคุณจะไม่สามารถเลือกองค์ประกอบใดๆ บนหน้าจอจนกว่าจะลดความลึกลงต่ำกว่า <b>${this.zIndex.warn}</b> อีกครั้ง.`,
                        toggleVisibility: `เพื่อเปิด/ปิดการแสดงผลของเลเยอร์ความเร็ว ให้ไปที่ <b>แผนที่ > ถนน > แสดงความเร็ว</b> หรือใช้ทางลัด <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'ค่าเริ่มต้น',
                        altViennaConv: 'อนุสัญญาวีนนาทางเลือก',
                        japan: 'ญี่ปุ่น',
                        uk: 'สหราชอาณาจักร',
                        sacu: 'สหภาพศุลกากรแอฟริกาตอนใต้',
                    },
                    btn: {
                        updateSettingsTab: 'อัปเดตเมนู',
                        resetSettings: 'ตั้งค่าคืนค่า',
                        seeOnDiscuss: 'ดูในกระทู้สนทนา',
                        seeOnDiscord: 'ดูใน Discord',
                        scriptDevBy: 'สคริปต์พัฒนาโดย Luan Tavares',
                    }
                };
            
                break;

            case 'tr':
                // Turkish
                translations = {
                    name: 'Hız Gösterimi',
                    zoomOut: 'Daha uzak',
                    zoomIn: 'Daha yakın',
                    changelog: 'Değişiklikler',
                    changelogMessage: `<h6>Yenilikler:</h6><ul style="margin-bottom: 10px"><li>Yeni görünüm! Script ayar sekmesi yeniden tasarlandı;</li><li>Ülkenizdeki hız ikonlarına benzeyen ikonlar görmek ister misiniz? Artık tema seçebilirsiniz;</li><li>Birden fazla WME sekmesiyle çalışıyor musunuz? Sorun değil. Tüm ayarlar artık tüm açık sekmeler arasında senkronize ediliyor;</li><li>Filtrelenmiş ikonları daha saydam yapmak mı istiyorsunuz? Artık istediğiniz saydamlık seviyesini seçebilirsiniz;</li><li>Skript, yeni ikonlar yüklenirken bir mesaj gösteriyor. Yükleme kasıtlı olarak gecikmeli;</li><li>Hız filtresinde minimum hız maksimum hızdan büyükse, script son alanı temizler ve bir uyarı mesajı gösterir;</li><li>Script ayar sekmesinde ikonları hızlıca açıp kapatabilmek için bir anahtar eklendi. İkonlar hala "Harita Katmanları" sekmesinden ve klavye kısayollarıyla açılıp kapatılabilir;</li><li>WME SDK'ya geçiş sayesinde, artık "Klavye Kısayolları" penceresinde script için klavye kısayolunu özelleştirebilirsiniz;</li><li>Script sekmesinin alt kısmına Discord kanalına, Discuss forumuna ve WME profilime erişim sağlayan yeni butonlar eklendi;</li><li>Script kodunun bir kısmı WME SDK'ya taşındı (SDK'da eksik olan işlevsellik nedeniyle tam olarak taşınmadı);</li></ul><h6>Hata Düzeltmeleri:</h6><ul><li>Kod yapısındaki bazı değişiklikler nedeniyle kaydedilen ayarlar otomatik olarak geri yüklenecektir;</li><li>Script, ülke sol şeritli trafikte olduğunda hızı doğru tarafta gösterecektir;</li><li>Çeşitli küçük hata düzeltmeleri ve kod iyileştirmeleri.</li></ul>`,

                    close: 'Kapat',
                    viewScript: 'Scripti Görüntüle',
                    viewChangelog: 'Değişiklikler Kaydını Görüntüle',
                    reset: 'Sıfırla',
                    snackbar: {
                        updatingMapDisplay: 'Harita simgeleri güncelleniyor. (Kasıtlı gecikmeyle)',
                        errorFiltering: 'Filtre uygulanırken hata oluştu. Minimum hız, maksimum hızdan büyük olamaz.',
                    },
                    title: {
                        general: 'Genel',
                        roadTypes: 'Yol Tipleri',
                        filter: 'Filtre',
                        appearence: 'Görünüm',
                        showOnRoadType: 'Aşağıdaki yol tiplerinde göster:',
                        seeOnDiscuss: 'Script\'in thread\'ini Discuss\'ta görün',
                        seeOnDiscord: 'Waze Script Discord sunucusunda script kanalını görün',
                        scriptDevBy: 'Editör kullanıcı profilimi görüntüle',
                    },
                    label: {
                        displaySpeeds: 'Hızları Göster',
                        showNoSpeed: 'Hızsız segmentlerde göster',
                        showOnRoundabout: 'Dönel kavşakta göster',
                        showOnUnpaved: 'Asfaltlanmamış yolda göster',
                        maxZoom: 'Zoom seviyesine kadar render yap:',
                        toggleLayerShortcut: 'Hız katmanını açıp kapatma kısayolu',
                        zIndex: 'Katman derinliği',
                        hideShorterSegments: 'Daha kısa segmentlerde gizle',
                        speedFilter: 'Hız filtresi',
                        min: 'Min:',
                        max: 'Maks:',
                        opacity: 'Filtre opaklık seviyesi:',
                    },
                    alertMessage: {
                        zIndex: `Katman derinliğini <b>${this.zIndex.warn}</b> değerinden daha yüksek kullanırsanız, hız katmanı diğerlerinin üst üste binmesine neden olur ve herhangi bir öğe seçilemez. Bu durumu düzeltmek için katman derinliğini <b>${this.zIndex.warn}</b> değerinin altına indirin.`,
                        toggleVisibility: `Hız katmanını açıp kapatmak için <b>Harita Katmanları > Yollar > Hızları Göster</b> yolunu izleyebilir veya <b>ALT</b> + <b>SHIFT</b> + <b>S</b> kısayolunu kullanabilirsiniz.`
                    },
                    theme: {
                        default: 'Varsayılan',
                        altViennaConv: 'Alternatif Viyana Sözleşmesi',
                        japan: 'Japonya',
                        uk: 'Birleşik Krallık',
                        sacu: 'Güney Afrika Gümrük Birliği',
                    },
                    btn: {
                        updateSettingsTab: 'Menüyü Güncelle',
                        resetSettings: 'Ayarları Sıfırla',
                        seeOnDiscuss: 'Tartışmada gör',
                        seeOnDiscord: 'Discord’da gör',
                        scriptDevBy: 'Script, Luan Tavares tarafından geliştirilmiştir',
                    }
                };
            
                break;

            case 'uk':
                // Ukrainian
                translations = {
                    name: 'Відображення швидкості',
                    zoomOut: 'Далі',
                    zoomIn: 'Ближче',
                    changelog: 'Журнал змін',
                    changelogMessage: '<h6>Новинки:</h6><ul style="margin-bottom: 10px"><li>Новий вигляд! Вкладка налаштувань скрипту була перероблена;</li><li>Хочете бачити іконки швидкості, які більше схожі на ті, що у вашій країні? Тепер можна вибирати теми;</li><li>Працюєте з кількома вкладками WME? Без проблем. Усі налаштування тепер синхронізуються між усіма відкритими вкладками;</li><li>Потрібно зробити фільтровані іконки більш прозорими? Тепер можна вибрати бажаний рівень прозорості;</li><li>Тепер скрипт показує повідомлення, поки завантажуються нові іконки. Завантаження з навмисним затриманням;</li><li>Якщо ви введете мінімальну швидкість, більшу за максимальну в фільтрі швидкості, скрипт очистить останнє поле і покаже попереджувальне повідомлення;</li><li>Додано перемикач для швидкого включення та вимикання іконок на вкладці налаштувань скрипту. Іконки можна все ще вмикати/вимикати через вкладку "Шари карти" та за допомогою гарячих клавіш;</li><li>Завдяки міграції на WME SDK тепер можна налаштувати гарячі клавіші для скрипту у вікні "Гарячі клавіші";</li><li>Додано нові кнопки внизу вкладки скрипту для доступу до каналу Discord, обговорення в Discuss і мого профілю в WME;</li><li>Частину коду скрипту було мігрувано на WME SDK (не повністю через відсутні функції в SDK);</li></ul><h6>Виправлення:</h6><ul><li>Через зміни в структурі коду збережені налаштування будуть автоматично відновлені;</li><li>Тепер скрипт показує швидкість на правильній стороні, якщо в країні лівосторонній рух;</li><li>Різні дрібні виправлення та покращення коду.</li></ul>',
                    close: 'Закрити',
                    viewScript: 'Переглянути сценарій',
                    viewChangelog: 'Переглянути журнал змін',
                    reset: 'Скинути',
                    snackbar: {
                        updatingMapDisplay: 'Оновлення значків карти. (З навмисною затримкою)',
                        errorFiltering: 'Помилка застосування фільтра. Мінімальна швидкість не може бути більшою за максимальну.',
                    },
                    title: {
                        general: 'Загальні',
                        roadTypes: 'Типи доріг',
                        filter: 'Фільтр',
                        appearence: 'Зовнішній вигляд',
                        showOnRoadType: 'Показати на наступних типах доріг:',
                        seeOnDiscuss: 'Переглянути тему скрипта на Discuss',
                        seeOnDiscord: 'Переглянути канал скрипта на сервері Discord Waze Script',
                        scriptDevBy: 'Переглянути мій профіль користувача редактора',
                    },
                    label: {
                        displaySpeeds: 'Показувати швидкості',
                        showNoSpeed: 'Показувати на сегментах без швидкості',
                        showOnRoundabout: 'Показувати на кільцевих перехрестях',
                        showOnUnpaved: 'Показувати на непокритих дорогах',
                        maxZoom: 'Рендерити до рівня zoom:',
                        toggleLayerShortcut: 'Перемикання шару відображення швидкості',
                        zIndex: 'Глибина шару',
                        hideShorterSegments: 'Приховувати на сегментах менше ніж',
                        speedFilter: 'Фільтрувати за швидкістю',
                        min: 'Мін.:',
                        max: 'Макс.:',
                        opacity: 'Рівень прозорості фільтра:',
                    },
                    alertMessage: {
                        zIndex: `Якщо використовувати глибину шару більше за <b>${this.zIndex.warn}</b>, шар швидкості накладатиметься на інші, і ви не зможете вибрати жоден елемент на екрані, поки не зменшите глибину до <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Щоб увімкнути/вимкнути шар швидкості, просто перейдіть до <b>Шари карти > Дороги > Відображати швидкості</b> або використовуйте гарячу клавішу <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'За замовчуванням',
                        altViennaConv: 'Альтернативна Віденська конвенція',
                        japan: 'Японія',
                        uk: 'Сполучене Королівство',
                        sacu: 'Південноафриканський митний союз',
                    },
                    btn: {
                        updateSettingsTab: 'Оновити меню',
                        resetSettings: 'Скинути налаштування',
                        seeOnDiscuss: 'Дивитися в обговоренні',
                        seeOnDiscord: 'Дивитися в Discord',
                        scriptDevBy: 'Сценарій розроблений Луаном Таваресом',
                    }
                };
                
                break;

            case 'vi':
                // Vietnamese
                translations = {
                    name: 'Hiển thị tốc độ',
                    zoomOut: 'Zoom ra',
                    zoomIn: 'Zoom vào',
                    changelog: 'Lịch sử thay đổi',
                    changelogMessage: '<h6>Điều mới:</h6><ul style="margin-bottom: 10px"><li>Giao diện mới! Tab cài đặt của script đã được thiết kế lại;</li><li>Bạn muốn thấy các biểu tượng tốc độ giống như ở quốc gia của bạn không? Bây giờ bạn có thể chọn chủ đề;</li><li>Đang làm việc với nhiều tab WME? Không vấn đề gì. Tất cả các cài đặt hiện tại sẽ đồng bộ hóa giữa tất cả các tab mở;</li><li>Cần làm cho các biểu tượng lọc trở nên trong suốt hơn không? Bây giờ bạn có thể chọn mức độ trong suốt mong muốn;</li><li>Bây giờ script sẽ hiển thị thông báo trong khi các biểu tượng mới đang tải. Việc tải có độ trễ cố ý;</li><li>Nếu bạn nhập tốc độ tối thiểu lớn hơn tốc độ tối đa trong bộ lọc tốc độ, script sẽ xóa trường cuối cùng và hiển thị thông báo cảnh báo;</li><li>Đã thêm một công tắc để bật và tắt nhanh các biểu tượng trên tab cài đặt của script. Bạn vẫn có thể bật/tắt chúng qua tab "Lớp bản đồ" và sử dụng phím tắt;</li><li>Nhờ vào việc chuyển sang WME SDK, bây giờ bạn có thể tùy chỉnh phím tắt của script trong cửa sổ "Phím tắt";</li><li>Đã thêm các nút mới ở cuối tab script để truy cập vào kênh Discord, cuộc thảo luận và hồ sơ WME của tôi;</li><li>Một phần mã của script đã được chuyển sang WME SDK (không hoàn toàn do thiếu chức năng trong SDK);</li></ul><h6>Khắc phục lỗi:</h6><ul><li>Do thay đổi trong cấu trúc mã, các cài đặt đã lưu sẽ được khôi phục tự động;</li><li>Script bây giờ hiển thị tốc độ ở phía chính xác khi quốc gia có giao thông đi bên trái;</li><li>Các sửa lỗi nhỏ khác và cải tiến mã.</li></ul>',
                    close: 'Đóng',
                    viewScript: 'Xem kịch bản',
                    viewChangelog: 'Xem lịch sử thay đổi',
                    reset: 'Đặt lại',
                    snackbar: {
                        updatingMapDisplay: 'Đang cập nhật biểu tượng bản đồ. (Có độ trễ cố ý)',
                        errorFiltering: 'Lỗi áp dụng bộ lọc. Tốc độ tối thiểu không thể lớn hơn tốc độ tối đa.',
                    },
                    title: {
                        general: 'Chung',
                        roadTypes: 'Loại đường',
                        filter: 'Lọc',
                        appearence: 'Ngoại hình',
                        showOnRoadType: 'Hiển thị trên các loại đường sau:',
                        seeOnDiscuss: 'Xem chủ đề của script trên Discuss',
                        seeOnDiscord: 'Xem kênh của script trên máy chủ Discord của Waze Script',
                        scriptDevBy: 'Xem hồ sơ người dùng biên tập viên của tôi',
                    },
                    label: {
                        displaySpeeds: 'Hiển thị tốc độ',
                        showNoSpeed: 'Hiển thị trên đoạn đường không có tốc độ',
                        showOnRoundabout: 'Hiển thị trên vòng xuyến',
                        showOnUnpaved: 'Hiển thị trên đường không trải nhựa',
                        maxZoom: 'Hiển thị đến mức zoom:',
                        toggleLayerShortcut: 'Chuyển đổi lớp hiển thị tốc độ',
                        zIndex: 'Độ sâu lớp',
                        hideShorterSegments: 'Ẩn trên các đoạn đường ngắn hơn',
                        speedFilter: 'Lọc theo tốc độ',
                        min: 'Tối thiểu:',
                        max: 'Tối đa:',
                        opacity: 'Mức độ trong suốt bộ lọc:',
                    },
                    alertMessage: {
                        zIndex: `Khi sử dụng độ sâu lớp lớn hơn <b>${this.zIndex.warn}</b>, lớp tốc độ sẽ chồng lên các lớp khác và bạn sẽ không thể chọn bất kỳ đối tượng nào trên màn hình cho đến khi giảm độ sâu lớp xuống dưới <b>${this.zIndex.warn}</b>.`,
                        toggleVisibility: `Để bật/tắt lớp hiển thị tốc độ, chỉ cần vào <b>Lớp bản đồ > Đoạn đường > Hiển thị tốc độ</b> hoặc sử dụng phím tắt <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Mặc định',
                        altViennaConv: 'Hiệp định Vienna thay thế',
                        japan: 'Nhật Bản',
                        uk: 'Vương quốc Anh',
                        sacu: 'Liên minh Hải quan Nam Phi',
                    },
                    btn: {
                        updateSettingsTab: 'Cập nhật menu',
                        resetSettings: 'Đặt lại cài đặt',
                        seeOnDiscuss: 'Xem trên thảo luận',
                        seeOnDiscord: 'Xem trên Discord',
                        scriptDevBy: 'Script được phát triển bởi Luan Tavares',
                    }
                };
            
                break;

            case 'zh':
                // Chinese
                translations = {
                    name: '速度显示',
                    zoomOut: '缩小',
                    zoomIn: '放大',
                    changelog: '更新日志',
                    changelogMessage: '<h6>新功能:</h6><ul style="margin-bottom: 10px"><li>全新界面!脚本设置选项卡进行了重新设计;</li><li>想要看到更符合你国家的速度图标吗?现在可以选择主题了;</li><li>在多个WME标签页工作?没问题。所有设置现在会在所有打开的标签页之间同步;</li><li>需要使过滤的图标更透明吗?现在可以选择所需的透明度;</li><li>现在脚本在加载新图标时会显示消息。加载过程有意延迟;</li><li>如果在速度筛选器中输入的最小速度大于最大速度,脚本将清除最后一个字段并显示警告消息;</li><li>在脚本设置选项卡中添加了一个快速开关,以打开和关闭图标。您仍然可以通过“地图层”选项卡和快捷键来启用/禁用它们;</li><li>由于迁移到WME SDK,您现在可以在“快捷键”窗口中为脚本自定义快捷键;</li><li>在脚本选项卡的底部添加了新按钮,以访问Discord频道、讨论区和我的WME个人资料;</li><li>脚本的部分代码已迁移到WME SDK(由于SDK中缺少某些功能,因此未完全迁移);</li></ul><h6>修复:</h6><ul><li>由于代码结构的变化,已保存的设置将自动恢复;</li><li>如果该国为左侧行驶,脚本现在会在正确的一侧显示速度;</li><li>其他各种小的修复和代码改进。</li></ul>',
                    close: '关闭',
                    viewScript: '查看脚本',
                    viewChangelog: '查看更新日志',
                    reset: '重置',
                    snackbar: {
                        updatingMapDisplay: '正在更新地图图标。(有意延迟)',
                        errorFiltering: '应用过滤器时出错。最低速度不能大于最高速度。',
                    },
                    title: {
                        general: '常规',
                        roadTypes: '道路类型',
                        filter: '过滤器',
                        appearence: '外观',
                        showOnRoadType: '在以下道路类型上显示:',
                        seeOnDiscuss: '查看脚本的主题讨论',
                        seeOnDiscord: '查看Waze Script Discord服务器上的脚本频道',
                        scriptDevBy: '查看我的编辑器用户档案',
                    },
                    label: {
                        displaySpeeds: '显示速度',
                        showNoSpeed: '显示无速度段落',
                        showOnRoundabout: '显示在环形交叉口',
                        showOnUnpaved: '显示在未铺砌的道路上',
                        maxZoom: '最大缩放:',
                        toggleLayerShortcut: '切换速度显示图层',
                        zIndex: '图层深度',
                        hideShorterSegments: '隐藏小于以下长度的段落',
                        speedFilter: '按速度过滤',
                        min: '最小:',
                        max: '最大:',
                        opacity: '过滤器透明度级别:',
                    },
                    alertMessage: {
                        zIndex: `当使用大于 <b>${this.zIndex.warn}</b> 的图层深度时,速度图层将覆盖其他图层,您将无法选择任何屏幕上的元素,直到将其深度降低到 <b>${this.zIndex.warn}</b> 以下。`,
                        toggleVisibility: `要启用/禁用速度显示图层,只需转到 <b>地图图层 > 道路 > 显示速度</b> 或使用快捷键 <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: '默认',
                        altViennaConv: '替代维也纳公约',
                        japan: '日本',
                        uk: '英国',
                        sacu: '南部非洲关税联盟',
                    },
                    btn: {
                        updateSettingsTab: '更新菜单',
                        resetSettings: '重置设置',
                        seeOnDiscuss: '在讨论中查看',
                        seeOnDiscord: '在 Discord 上查看',
                        scriptDevBy: '脚本由Luan Tavares开发',
                    }
                };
            
                break;

            case 'zh-TW':
                // Traditional Chinese
                translations = {
                    name: '速度顯示',
                    zoomOut: '縮小',
                    zoomIn: '放大',
                    changelog: '更新日誌',
                    changelogMessage: '<h6>新功能:</h6><ul style="margin-bottom: 10px"><li>全新介面!腳本設置選項卡已重新設計;</li><li>想看到更符合您國家的速度圖示嗎?現在可以選擇主題;</li><li>在多個WME分頁上工作?沒問題。所有設置現在會在所有打開的分頁之間同步;</li><li>需要讓篩選的圖示更透明嗎?現在可以選擇所需的透明度;</li><li>現在腳本會在加載新圖示時顯示消息。加載過程故意延遲;</li><li>如果您在速度篩選器中輸入的最小速度大於最大速度,腳本將清除最後一個字段並顯示警告消息;</li><li>在腳本設置選項卡中新增一個快速切換按鈕,以開啟和關閉圖示。您仍然可以通過“地圖層”選項卡和快捷鍵來啟用/禁用它們;</li><li>由於遷移到WME SDK,現在您可以在“快捷鍵”窗口中為腳本自訂快捷鍵;</li><li>在腳本選項卡的底部新增了按鈕,用於訪問Discord頻道、討論區和我的WME個人資料;</li><li>腳本的部分程式碼已遷移至WME SDK(由於SDK缺少某些功能,尚未完全遷移);</li></ul><h6>錯誤修正:</h6><ul><li>由於代碼結構變化,已儲存的設置將自動恢復;</li><li>如果該國家為左側行駛,腳本現在會在正確的一側顯示速度;</li><li>其他各種小的修正和代碼改進。</li></ul>',
                    close: '關閉',
                    viewScript: '查看腳本',
                    viewChangelog: '查看更新日誌',
                    reset: '重設',
                    snackbar: {
                        updatingMapDisplay: '正在更新地圖圖標。(有意延遲)',
                        errorFiltering: '應用篩選器時出錯。最低速度不能大於最高速度。',
                    },
                    title: {
                        general: '常規',
                        roadTypes: '道路類型',
                        filter: '過濾器',
                        appearence: '外觀',
                        showOnRoadType: '在以下道路類型上顯示:',
                        seeOnDiscuss: '查看腳本的主題討論',
                        seeOnDiscord: '查看Waze Script Discord伺服器上的腳本頻道',
                        scriptDevBy: '查看我的編輯器用戶檔案',
                    },
                    label: {
                        displaySpeeds: '顯示速度',
                        showNoSpeed: '顯示無速度段落',
                        showOnRoundabout: '顯示在環形交叉口',
                        showOnUnpaved: '顯示在未鋪設的道路上',
                        maxZoom: '最大縮放:',
                        toggleLayerShortcut: '切換速度顯示圖層',
                        zIndex: '圖層深度',
                        hideShorterSegments: '隱藏小於以下長度的段落',
                        speedFilter: '按速度過濾',
                        min: '最小:',
                        max: '最大:',
                        opacity: '濾鏡透明度級別:',
                    },
                    alertMessage: {
                        zIndex: `當使用大於 <b>${this.zIndex.warn}</b> 的圖層深度時,速度圖層將覆蓋其他圖層,您將無法選擇任何螢幕上的元素,直到將其深度降低到 <b>${this.zIndex.warn}</b> 以下。`,
                        toggleVisibility: `要啟用/禁用速度顯示圖層,只需前往 <b>地圖圖層 > 道路 > 顯示速度</b> 或使用快捷鍵 <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: '預設',
                        altViennaConv: '替代維也納公約',
                        japan: '日本',
                        uk: '英國',
                        sacu: '南部非洲關稅聯盟',
                    },
                    btn: {
                        updateSettingsTab: '更新菜單',
                        resetSettings: '重設設定',
                        seeOnDiscuss: '在討論中查看',
                        seeOnDiscord: '在 Discord 上查看',
                        scriptDevBy: '腳本由Luan Tavares開發',
                    }
                };
            
                break;

            default:
                // Default language (english)
                translations = {
                    name: 'Speed Display',
                    zoomOut: 'Zoom Out',
                    zoomIn: 'Zoom In',
                    changelog: 'Changelog',
                    changelogMessage: `<h6>What’s New:</h6><ul style="margin-bottom: 10px"><li>New look! The script settings tab has been redesigned;</li><li>Want to see speed icons that look more like the ones in your country? Now you can select themes;</li><li>Working with multiple WME tabs open? No problem. All settings are now synchronized simultaneously across all open tabs;</li><li>Need the filtered icons to be more translucent? No worries! You can now choose the transparency level you prefer;</li><li>The script now displays a message while loading new icons. There is an intentional delay in the loading process;</li><li>If you enter a minimum speed greater than the maximum, the script will clear the last field and display a warning message;</li><li>A toggle switch has been added to the script settings tab to enable and disable icons. You can still do this from the "Map Layers" tab or via a shortcut;</li><li>Thanks to the migration to the WME SDK, you can now customize the script's shortcut key in the "Keyboard Shortcuts" menu;</li><li>New buttons have been added at the bottom of the script tab to access the Discord channel, Discuss forum, and my WME profile;</li><li>The script code has been partially migrated to the WME SDK (not fully migrated due to missing features in the SDK).</li></ul><h6>Fixes:</h6><ul><li>Due to some code structure changes, saved settings will be automatically restored;</li><li>The script now displays the speed on the correct side when the country has left-hand traffic;</li><li>Various small fixes and code improvements.</li></ul>`,
                    close: 'Close',
                    viewScript: 'View Script',
                    viewChangelog: 'View Changelog',
                    reset: 'Reset',
                    snackbar: {
                        updatingMapDisplay: 'Updating map icons. (With intentional delay)',
                        errorFiltering: 'Error applying filter. Minimum speed cannot be greater than maximum.',
                    },
                    title: {
                        general: 'General',
                        roadTypes: 'Road Types',
                        filter: 'Filter',
                        appearence: 'Appearence',
                        showOnRoadType: 'Show on the following road types:',
                        seeOnDiscuss: 'See the script\'s thread on the Discuss',
                        seeOnDiscord: 'See the script\'s channel on the Waze Script\'s Discord server',
                        scriptDevBy: 'View my editor user profile',
                    },
                    label: {
                        displaySpeeds: 'Display speeds',
                        showNoSpeed: 'Show on segments with no speed',
                        showOnRoundabout: 'Show on roundabout',
                        showOnUnpaved: 'Show on unpaved road',
                        maxZoom: 'Render until zoom:',
                        toggleLayerShortcut: 'Toggle speed display layer',
                        zIndex: 'Layer depth',
                        hideShorterSegments: 'Hide segments shorter than',
                        speedFilter: 'Filter by speed',
                        min: 'Min:',
                        max: 'Max:',
                        opacity: 'Filter opacity level:',
                    },
                    alertMessage: {
                        zIndex: `When using a layer depth greater than <b>${this.zIndex.warn}</b>, the speed layer will overlap others, and you will not be able to select any element on the screen until you lower the depth below <b>${this.zIndex.warn}</b>.`,
                        // TODO: Adjust translation of the toggleVisibility when finishing SDK migration
                        toggleVisibility: `To toggle the visibility of the speed display layer, just go to <b>Map Layers > Roads > Show speeds</b> or use the shortcut <b>ALT</b> + <b>SHIFT</b> + <b>S</b>`
                    },
                    theme: {
                        default: 'Default',
                        altViennaConv: 'Alternative Vienna Convention',
                        japan: 'Japan',
                        uk: 'United Kingdom',
                        sacu: 'Southern African Customs Union',
                    },
                    btn: {
                        updateSettingsTab: 'Update Menu',
                        resetSettings: 'Reset Settings',
                        seeOnDiscuss: 'See on the Discuss',
                        seeOnDiscord: 'See on the Discord',
                        scriptDevBy: 'Script developed by Luan Tavares',
                    }
                };                

                break;
        };

        Object.assign(this.spdTranslations, translations);

        this.logDebug('Languages defined.');
    }
}

window.SDK_INITIALIZED.then(() => new WmeSpeedDisplay());

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址