WME Speed Display

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

Versión del día 19/2/2025. Echa un vistazo a la versión más reciente.

// ==UserScript==
// @name        WME Speed Display
// @namespace   https://greasyfork.org/scripts/526702-wme-speed-display/
// @version     1.3.12
// @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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
// @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:
 * Add a speed filter, where the user says from which speed he wants to see
 * Add an opacity option for icons
 * Add some visual information when updateMap is rendering
 * Check a way to get all road types and groups automatically
 * Update the map when the user selects a search location
 */

/* global W */
/* global I18n */
/* global OpenLayers */

class WmeSpeedDisplay {
    constructor() {
        this.version   = '1.3.12';
        this.layer     = null;
        this.debugMode = false;
        this.settings  = {};

        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'
                },
                {
                    id: 5,
                    name: 'walking_trail'
                },
                {
                    id: 10,
                    name: 'pedestrian_boardwalk'
                },
                {
                    id: 16,
                    name: 'stairway'
                }
            ],
            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.spdTranslations = I18n.translations[I18n.locale].wmeSpd;

        this.debounce = {
            updateMapDisplay: this.debounce(this.updateMapDisplay.bind(this), 1000),
            saveSettings: this.debounce(this.saveSettings.bind(this))
        };

        this.layerCheckbox = {
            roadGroup: null,
            speedDisplay: null
        };

        this.prepareAndInitialize();
    }

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

        if (W?.userscripts?.state?.isReady) {
            this.logDebug(this.spdTranslations.log.wmeReadyStartScript);

            this.initializePlugin();
            
        } else {
            this.logDebug(this.spdTranslations.log.waitingWme);

            document.addEventListener('wme-ready', this.initializePlugin.bind(this), {once: true});
        }
    }

    /**
     * Initializes the plugin.
     */
    async initializePlugin() {
        this.logDebug(this.spdTranslations.log.wmeReadyStartingPlugin, true);

        this.checkVersionAndShowChangelog();

        this.layer = new OpenLayers.Layer.Vector('Speed Display Layer', {
            displayInLayerSwitcher: false
        });

        W.map.addLayer(this.layer);

        this.addLayerCheckbox();
        this.addSettingsTab();
        this.addShortcut();
        this.listen();

        this.logDebug(this.spdTranslations.log.shortSleep);

        await this.sleep(1000);

        this.updateMapDisplay();
    }

    /**
     * Method that listens to this script events.
     */
    listen() {
        document.getElementById('keyboard-dialog-link').addEventListener('click', this.addKeyboardShortCutOnDialog.bind(this));

        W.prefs.on('change:isImperial', this.debounce.updateMapDisplay.bind(this));
        
        W.map.events.register('moveend', null, this.onTriggeringMapEvent.bind(this));
        W.map.events.register('zoomend', null, this.onTriggeringMapEvent.bind(this));

        W.model.segments.on('objectschanged', this.onTriggeringMapEvent.bind(this));
    }

    /**
     * When the map triggers an event, updates the map display.
     */
    onTriggeringMapEvent() {
        if (this.layerCheckbox.roadGroup.checked && this.settings.spdEnabled)
            this.debounce.updateMapDisplay();
    }

    /**
     * Saves and updates the map display when WME SPD checkbox change.
     * @param {Event} event
     */
    onSpeedDisplayCheckboxChange(event) {
        this.debounce.saveSettings();
        this.debounce.updateMapDisplay();

        this.toggleLayerVisibility(event.target.checked);
    }

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

    /**
     * Updates the max zoom value display and triggers map update if the zoom level reaches the max.
     * @param {Event} event
     */
    onSettingZoomChanged(event) {
        let zoomLevel = W.map.getZoom();

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

        this.debounce.saveSettings();

        if (zoomLevel >= this.settings.general.spdMaxZoom)
            this.debounce.updateMapDisplay();
    }
    
    /**
     * Updates the layer visibility based on the layer switcher road group state.
     */
    onLayerSwithcerGroupRoadChange() {
        let roadGroupActived = this.layerCheckbox.roadGroup.checked;

        this.toggleLayerVisibility(roadGroupActived);

        this.layerCheckbox.speedDisplay.disabled = !roadGroupActived;
    }

    /**
     * Attaches event listeners to the settings elements to track user interactions and changes.
     */
    attachSettingsListeners() {
        ['spd-show-no-speed', 'spd-show-roundabout', 'spd-show-unpaved'].forEach(id => {
            document.getElementById(id).addEventListener('change', this.onSettingsChange.bind(this));
        });

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

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

        if (this.debugMode) {
            document.getElementById('btn-spd-update-settings-tab').addEventListener('click', this.updateSettingsTab.bind(this));
            document.getElementById('btn-spd-show-modal').addEventListener('click', this.showSpeedDisplayDialog.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() {
        ['spd-show-no-speed', 'spd-show-roundabout', 'spd-show-unpaved'].forEach(id => {
            document.getElementById(id).removeEventListener('change', this.onSettingsChange.bind(this));
        });

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

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

        if (this.debugMode) {
            document.getElementById('btn-spd-update-settings-tab').removeEventListener('click', this.updateSettingsTab.bind(this));
            document.getElementById('btn-spd-show-modal').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 by removing old features and adding new speed icons based on the settings.
     */
    updateMapDisplay() {
        this.logDebug(this.spdTranslations.log.updateMapDisplay);

        let zoomLevel = W.map.getZoom();

        this.layer.removeAllFeatures();

        if (zoomLevel < this.settings.general.spdMaxZoom) {
            this.logDebug(this.spdTranslations.log.maxZoomExceeded);

            return;
        }

        let segments    = W.model.segments.objects || {};
        let segmentKeys = Object.keys(segments);

        if (segmentKeys.length === 0) {
            this.logDebug(this.spdTranslations.log.noneSegment);

            return;
        }

        this.logDebug(`${this.spdTranslations.log.numSegmentsLoaded} ${segmentKeys.length}`);

        segmentKeys.forEach(segmentId => {
            let segment = segments[segmentId];

            if (!segment || !segment.attributes) {
                this.logDebug(`${this.spdTranslations.log.attributesNotFound} ${segmentId}.`);

                return;
            }

            let attributes    = segment.attributes;
            let roadSettingId = this.convertStringCaseStyle('snake', 'camel', `spd_show_speed_in_${this.getRoadSettingNameById(attributes.roadType)}`);

            let speedFwd = this.getSpeed(attributes.fwdMaxSpeed);
            let speedRev = this.getSpeed(attributes.revMaxSpeed);
            let isFwd    = attributes.fwdDirection;
            let isRev    = attributes.revDirection;

            let hideNoSpeed        = !this.settings.general.spdShowNoSpeed && ((speedFwd == 'N/A' && speedRev == 'N/A') || (isFwd && !isRev && speedFwd == 'N/A') || (!isFwd && isRev && speedRev == 'N/A'));
            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.spdTranslations.log.disallowedSegment);

                return;
            }

            let geometry = segment.getOLGeometry();

            if (!geometry || geometry.components.length < 2) {
                this.logDebug(`${this.spdTranslations.log.invalidGeometry} ${segmentId}.`);

                return;
            }

            let midpoint = this.calculateMidpoint(geometry);

            let feature = new OpenLayers.Feature.Vector(midpoint, {
                segmentId,
                speedFwd,
                speedRev
            });

            let graphicWidth;
            let graphicXOffset;

            if (isFwd && isRev && speedFwd != speedRev) {
                graphicWidth   = 70;
                graphicXOffset = -30;

            } else if (isFwd && speedFwd != 'N/A' || isRev && speedRev != 'N/A') {
                graphicWidth   = 30;
                graphicXOffset = -15;
            }

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

            this.layer.addFeatures([feature]);
        });

        this.logDebug(this.spdTranslations.log.updateMapDisplayFinished);
    }

    /**
     * Toggle visibility of the display of the speed layer.
     * @param {Boolean} enabled
     */
    toggleLayerVisibility(enabled) {
        if (this.layer) {
            this.layer.setVisibility(enabled);
            
            this.logDebug(`${this.spdTranslations.log.speedLayer} ${enabled ? this.spdTranslations.enabled : this.spdTranslations.disabled}.`);
        }
    }

    /**
     * Saves the current settings to localStorage.
     */
    saveSettings() {
        this.settings.spdEnabled = this.layerCheckbox.speedDisplay.checked;
        
        Object.keys(this.settings.general).forEach(setting => {
            let element = document.getElementById(this.convertStringCaseStyle('camel', 'kebab', setting));
            
            this.settings.general[setting] = setting != 'spdMaxZoom' ? element.checked : element.value;
        });
        
        document.querySelectorAll('[id^="spd-show-speed-in-"]').forEach(input => {
            let settingId                  = this.convertStringCaseStyle('kebab', 'camel', input.id);
            this.settings.roads[settingId] = input.checked;
        });

        localStorage.setItem('wmeSpeedDisplaySettings', JSON.stringify(this.settings));
    }

    /**
     * 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 {
                this.settings[setting] = value ?? true;
            }
        });
    }

    /**
     * Adds a settings tab to the user interface with options to configure the speed display settings.
     */
    addSettingsTab() {
        let scriptTabContainer = document.querySelector('#user-info .nav-tabs');
        
        if (!scriptTabContainer) {
            this.logDebug(this.spdTranslations.log.scriptsTabNotFound);

            setTimeout(() => this.addSettingsTab(), 1000);
            
            return;
        }

        if (document.getElementById('wme-spd-tab'))
            return;

        let tabButton       = document.createElement('li');
        tabButton.innerHTML = `<a href="#spd-settings" data-toggle="tab">${this.spdTranslations.name}</a>`;

        scriptTabContainer.appendChild(tabButton);

        let tabContentContainer             = document.querySelector('.tab-content');
        let userScriptsApiDocsLinkContainer = tabContentContainer.querySelector('.userscripts-api-docs-link-container');
        let tabContent                      = document.createElement('div');
        tabContent.id                       = 'spd-settings';

        tabContent.classList.add('tab-pane');

        let tabContentHtml = `
            <div style="padding: 0 10px;">
                <h4>${this.spdTranslations.settingTabName}</h4>
                <hr>

                <wz-label html-for="">${this.spdTranslations.title.general}</wz-label>
                <wz-checkbox checked="${this.settings.general.spdShowNoSpeed}" indeterminate="false" disabled="false" id="spd-show-no-speed" value="true">${this.spdTranslations.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.spdTranslations.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.spdTranslations.label.showOnUnpaved}<input type="checkbox" value="true" style="display: none; visibility: hidden;"></wz-checkbox>
                <br>
                <wz-label html-for="" style="margin-top:10px">${this.spdTranslations.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 style="display: flex; justify-content: space-between; width: 100%; color: #777; font-size: 11px; line-height: 15px;"><span>${this.spdTranslations.zoomOut}</span><span>${this.spdTranslations.zoomIn}</span></div>
                <br>

                <wz-label html-for="" style="margin:0">${this.spdTranslations.title.showOnRoadType}</wz-label>`;

        Object.entries(this.segmentsCategories).forEach(segmentCategory => {
            tabContentHtml += `<wz-menu-title style="padding:0;">${I18n.translations[I18n.locale].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];

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

        if (this.debugMode) {
            tabContentHtml += `<wz-button color="primary" id="btn-spd-update-settings-tab" style="margin-top: 10px; width: 100%;">${this.spdTranslations.btn.updateSettingsTab}</wz-button>`;
            tabContentHtml += `<wz-button color="secondary" id="btn-spd-show-modal" style="margin-top: 10px; width: 100%;">${this.spdTranslations.showDialog}</wz-button>`;
        }

        tabContentHtml += `<wz-button color="text" size="sm" style="margin-top: 10px" id="btn-spd-open-changelog-dialog"><b>${this.spdTranslations.name}</b> v${this.version}</wz-button>
            </div>`;

        tabContent.innerHTML = tabContentHtml;

        tabContentContainer.insertBefore(tabContent, userScriptsApiDocsLinkContainer);

        this.attachSettingsListeners();

        this.logDebug(this.spdTranslations.log.settingsTabAdded);
    }

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

        let linkTab    = document.querySelector('#user-info .nav-tabs li a[href="#spd-settings"]');
        let tabContent = document.getElementById('spd-settings');

        if (!linkTab || !tabContent)
            return;

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

        tabContent.remove();
        linkTab.closest('li').remove();

        this.addSettingsTab();
        this.updateSettingsElementsStates();
    }

    /**
     * Updates the state of the settings elements (checkboxes, inputs) based on the current settings.
     */
    updateSettingsElementsStates() {
        Object.entries(this.settings.general).forEach(([setting, value]) => {
            let id      = this.convertStringCaseStyle('camel', 'kebab', setting);
            let element = document.getElementById(id);

            if (!element)
                return;

            if (setting != 'spdMaxZoom') {
                element.checked = value;
                
            } else {
                element.value                                           = value;
                document.getElementById('spd-max-zoom-value').innerText = value;
            }
        });

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

            if (input.type == 'checkbox')
                input.checked = this.settings.roads[settingId];
        });
    }

    /**
     * Adds a global keyboard shortcut listener and add the script shortcut on shortcuts dialog.
     */
    addShortcut() {
        document.addEventListener('keydown', this.onDocumentKeydown.bind(this));
    }

    /**
     * Adds a custom shortcut section to the shortcuts dialog.
     */
    addKeyboardShortCutOnDialog() {
        let shortcutDialog = document.getElementById('shortcuts-dialog');

        if (!shortcutDialog) {
            this.logDebug(this.spdTranslations.log.shortCutDialogNotFound);

            setTimeout(() => this.addKeyboardShortCutOnDialog(), 1000);
            
            return;
        }

        let lastShortcutActionGroup = shortcutDialog.querySelector('.shortcut-action-group:last-of-type');
        let newActionGroup          = document.createElement('section');

        newActionGroup.classList.add('shortcut-action-group');
        newActionGroup.id = 'keyboard-shortcut-scripts-dialog';
        
        newActionGroup.innerHTML = `
            <h2>${this.spdTranslations.name}</h2>

            <p class="shortcut-action" id="keyboard-shortcut-speed-display">
                <span>
                    <span>
                        <kbd class="altKey">
                            <span>$altKey</span>
                        </kbd> +
                    </span>

                    <span>
                        <kbd class="shiftKey">
                            <span>$shiftKey</span>
                        </kbd> +
                    </span>

                    <kbd>S</kbd>
                </span>

                <span class="shortcut-action-name">${this.spdTranslations.label.toggleLayerShortcut}</span>
            </p>`;

        lastShortcutActionGroup.insertAdjacentElement('afterend', newActionGroup);
    }

    /**
     * Toggles the layer switcher speed display when shortcut is pressed.
     * @param {Event} event 
     */
    onDocumentKeydown(event) {
        if (event.altKey && event.shiftKey && event.key.toLowerCase() == 's')
            this.layerCheckbox.speedDisplay.click();
    }

    /**
     * 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();
    }

    /**
     * Generates an SVG icon with the speeds.
     * @param {String} speedFwd Forward speed.
     * @param {String} speedRev Reverse speed.
     * @param {String} isFwd Direction of the road forward.
     * @param {String} isRev Reverse lane direction.
     *
     * @returns {String} SVG in string format.
     */
    getSpeedIcon(speedFwd, speedRev, isFwd, isRev) {
        if (isFwd && isRev && speedFwd != speedRev) {
            return `
                <svg xmlns="http://www.w3.org/2000/svg" width="120" height="50" viewBox="0 0 120 50">
                  <circle cx="25" cy="25" r="21" fill="white" stroke="red" stroke-width="5"/>
                  <text x="25" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="black" text-anchor="middle">${speedFwd}</text>

                  <circle cx="80" cy="25" r="21" fill="white" stroke="red" stroke-width="5"/>
                  <text x="80" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="black" text-anchor="middle">${speedRev}</text>
                </svg>`;

        } else {
            return `
                <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="red" stroke-width="5"/>
                    <text x="25" y="31" font-size="20" font-family="Arial" font-weight="bold" fill="black" text-anchor="middle">${isFwd ? speedFwd : speedRev}</text>
                </svg>`;
        }
    }

    /**
     * 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 W.prefs.attributes.isImperial ? Math.round(speed * 0.621371) : speed;
    }

    /**
     * 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|null)} timeout Delay time in milliseconds.
     *
     * @returns Function
     */
    debounce(func, timeout = 300) {
        let timer;

        return (...args) => {
            clearTimeout(timer);

            timer = setTimeout(() => {
                func.apply(this, args);
            }, 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, (_, letra) => letra.toUpperCase())
            },
            kebab: {
                camel: str => str.replace(/-([a-z])/g, (_, letra) => letra.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.
     */
    logDebug(message, forceMessage = false) {
        if (this.debugMode || forceMessage)
            console.log(`[WME Speed Display]: ${message}`);
    }

    /**
     * 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(this.spdTranslations.log.houseNumberCheckboxNotFound);

            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.spdTranslations.name}">${this.spdTranslations.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.
     */
    defineInitialSettings() {
        let localSettings = localStorage.getItem('wmeSpeedDisplaySettings');
        localSettings     = localSettings ? JSON.parse(localSettings) : null;

        this.settings = {
            spdEnabled: true,
            general: {
                spdShowNoSpeed: true,
                spdShowRoundabout: true,
                spdShowUnpaved: true,
                spdMaxZoom: 18
            },
            roads: {}
        };

        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);
            this.updateSettingsElementsStates();
        }
    }

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

        if (localSpdVersion == null || localSpdVersion != this.version) {
            this.hideSpeedDisplayDialog();
            this.openChangelogDialog();

            localStorage.setItem('wmeSpeedDisplayVersion', JSON.stringify(this.version));
        }
    }
    
    /**
     * Opens changelog dialog.
     */
    openChangelogDialog() {
        this.showSpeedDisplayDialog(`${this.spdTranslations.changelog} ${this.spdTranslations.name} v${this.version}`, this.spdTranslations.changelogMessage, null, `<a href="https://greasyfork.org/pt-BR/scripts/526702-wme-speed-display" target="_blank"><wz-button color="primary">${this.spdTranslations.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.spdTranslations.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();
    }

    /**
     * Sets translations for the current locale.
     */
    defineTranslations() {
        switch (I18n.locale) {
            case 'af':
                // Afrikaans
                this.spdTranslations = {
                    name: 'Spoedvertoning',
                    settingTabName: 'Spoedvertoning Instellings',
                    enabled: 'geaktiveer',
                    disabled: 'gedeaktiveer',
                    zoomOut: 'Verder uit',
                    zoomIn: 'Nader in',
                    changelog: 'Verandering logboek',
                    changelogMessage: '<h6>Nuus:</h6><ul style="margin-bottom: 10px"><li>Nou wys die skrif die spoed in <strong>mph</strong>. Verander eenvoudig die eenheid in die WME-instellings.</li></ul><h6>Fout regstellings:</h6><ul><li>Verbeter die metode om die spoed uit die segment se eienskappe te kry.</li></ul>',
                    close: 'Maak toe',
                    viewScript: 'Bekyk Skrip',
                    showDialog: 'Wys modaal',
                    title: {
                        general: 'Algemeen',
                        showOnRoadType: 'Vertoon op padsegmente van tipe:'
                    },
                    label: {
                        displaySpeeds: 'Vertoon spoed',
                        showNoSpeed: 'Vertoon op segmente sonder spoed',
                        showOnRoundabout: 'Vertoon op sirkelroetes',
                        showOnUnpaved: 'Vertoon op ongeplaveide pad',
                        maxZoom: 'Vertoon tot zoomvlak:',
                        toggleLayerShortcut: 'Toggle layer switcher speed display'
                    },
                    btn: {
                        updateSettingsTab: 'Opdateer menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME gelaai en gereed. Begin skrip...',
                        waitingWme: 'Wag vir WME om gereed te wees...',
                        wmeReadyStartingPlugin: 'WME is gereed. Stel pasgemaakte laag op...',
                        shortSleep: 'Wag ongeveer 1 sekonde vir alles om te laai...',
                        updateMapDisplay: 'Opdateer kaartvertoning...',
                        maxZoomExceeded: 'Maksimum zoomvlak oorskry. Geen spoed sal vertoon word nie.',
                        noneSegment: 'Geen segmente gevind nie.',
                        numSegmentsLoaded: 'Totale gelaaide segmente:',
                        attributesNotFound: 'Kon nie eienskappe vind of dit is afwesig op die segment nie',
                        disallowedSegment: 'Hierdie tipe segment moet nie gelaai word nie.',
                        invalidGeometry: 'Ongeldige geometrie op segment:',
                        updateMapDisplayFinished: 'Opdatering voltooi.',
                        shortCutDialogNotFound: 'Kon nie die sleutelbordkortpaaie dialoog vind nie. Probeer weer...',
                        houseNumberCheckboxNotFound: 'Die "Huisnommers"-merkblokkie is nie gevind nie. Probeer weer...',
                        scriptsTabNotFound: 'Skrip-paneel nie gevind nie. Probeer weer...',
                        settingsTabAdded: 'Instellings-oortjie bygevoeg.',
                        speedLayer: 'Spoedlaag',
                        opacityUpdated: 'Deursigtigheid van ikone aangepas na',
                        updatingSettingsTab: 'Opdateer instellings-oortjie...',
                        languageDefined: 'Tale gedefinieer.',
                        checkingVersion: 'Kontroleer die weergawe van die inprop.'
                    }
                };

                break;

            case 'ar':
                // Arabic
                this.spdTranslations = {
                    name: 'عرض السرعة',
                    settingTabName: 'إعدادات عرض السرعة',
                    enabled: 'مفعل',
                    disabled: 'معطل',
                    zoomOut: 'تكبير للخارج',
                    zoomIn: 'تكبير للداخل',
                    changelog: 'سجل التغييرات',
                    changelogMessage: '<h6>التحديثات:</h6><ul style="margin-bottom: 10px"><li>الآن يعرض البرنامج النصي السرعة بوحدة <strong>mph</strong>. فقط قم بتغيير الوحدة في إعدادات WME.</li></ul><h6>تصحيحات الأخطاء:</h6><ul><li>تم تحسين طريقة الحصول على السرعة من خصائص المقطع.</li></ul>',
                    close: 'إغلاق',
                    viewScript: 'عرض البرنامج النصي',
                    showDialog: 'عرض النافذة المنبثقة',
                    title: {
                        general: 'عام',
                        showOnRoadType: 'عرض على أنواع الطرق:'
                    },
                    label: {
                        displaySpeeds: 'عرض السرعات',
                        showNoSpeed: 'عرض على الطرق بدون سرعة',
                        showOnRoundabout: 'عرض في الدوارات',
                        showOnUnpaved: 'عرض على طريق غير معبد',
                        maxZoom: 'العرض حتى مستوى التكبير:',
                        toggleLayerShortcut: 'تبديل مبدل الطبقة لعرض السرعة'
                    },
                    btn: {
                        updateSettingsTab: 'تحديث القائمة',
                    },
                    log: {
                        wmeReadyStartScript: 'تم تحميل WME وجاهز. بدء السكريبت...',
                        waitingWme: 'انتظار جاهزية WME...',
                        wmeReadyStartingPlugin: 'WME جاهز. إعداد الطبقة المخصصة...',
                        shortSleep: 'انتظار ثانية واحدة لتحميل كل شيء...',
                        updateMapDisplay: 'تحديث عرض الخريطة...',
                        maxZoomExceeded: 'تم تجاوز الحد الأقصى للتكبير. لن يتم عرض أي سرعات.',
                        noneSegment: 'لم يتم العثور على أي مقاطع.',
                        numSegmentsLoaded: 'إجمالي المقاطع المحملة:',
                        attributesNotFound: 'تعذر العثور على الخصائص أو أنها مفقودة في المقطع',
                        disallowedSegment: 'هذا النوع من المقاطع لا يجب تحميله.',
                        invalidGeometry: 'هندسة غير صالحة في المقطع:',
                        updateMapDisplayFinished: 'اكتمل التحديث.',
                        houseNumberCheckboxNotFound: 'لم يتم العثور على خانة اختيار "أرقام المنازل". المحاولة مرة أخرى...',
                        shortCutDialogNotFound: 'تعذر العثور على مربع حوار اختصارات لوحة المفاتيح. جارٍ المحاولة مرة أخرى...',
                        scriptsTabNotFound: 'لم يتم العثور على لوحة البرامج النصية. المحاولة مرة أخرى...',
                        settingsTabAdded: 'تمت إضافة علامة تبويب الإعدادات.',
                        speedLayer: 'طبقة السرعة',
                        opacityUpdated: 'تم ضبط شفافية الأيقونات إلى',
                        updatingSettingsTab: 'تحديث علامة تبويب الإعدادات...',
                        languageDefined: 'تم تحديد اللغات.',
                        checkingVersion: 'التحقق من إصدار الإضافة.'
                    }
                };
            
                break;
            
            case 'bg':
                // Bulgarian
                this.spdTranslations = {
                    name: 'Показване на скоростта',
                    settingTabName: 'Настройки за показване на скоростта',
                    enabled: 'активиран',
                    disabled: 'деактивиран',
                    zoomOut: 'Отдалечаване',
                    zoomIn: 'Приближаване',
                    changelog: 'Дневник на промените',
                    changelogMessage: '<h6>Новини:</h6><ul style="margin-bottom: 10px"><li>Сега скриптът показва скоростта в <strong>mph</strong>. Просто променете единицата в настройките на WME.</li></ul><h6>Поправки:</h6><ul><li>Подобрена е методологията за извличане на скоростта от атрибутите на сегмента.</li></ul>',
                    close: 'Затвори',
                    viewScript: 'Преглед на скрипта',
                    showDialog: 'Показване на модален прозорец',
                    title: {
                        general: 'Общи',
                        showOnRoadType: 'Показване на пътните сегменти от тип:'
                    },
                    label: {
                        displaySpeeds: 'Показване на скоростите',
                        showNoSpeed: 'Показване на сегменти без скорост',
                        showOnRoundabout: 'Показване на кръгови движения',
                        showOnUnpaved: 'Показване на неасфалтиран път',
                        maxZoom: 'Показване до ниво на увеличение:',
                        toggleLayerShortcut: 'Превключване на превключвателя на слоя за показване на скорост'
                    },
                    btn: {
                        updateSettingsTab: 'Актуализиране на менюто',
                    },
                    log: {
                        wmeReadyStartScript: 'WME е зареден и готов. Стартиране на скрипта...',
                        waitingWme: 'Изчакване WME да бъде готов...',
                        wmeReadyStartingPlugin: 'WME е готов. Настройване на персонализиран слой...',
                        shortSleep: 'Изчакване около 1 секунда за зареждане на всичко...',
                        updateMapDisplay: 'Актуализиране на картата...',
                        maxZoomExceeded: 'Превишено максимално увеличение. Няма да се показват скорости.',
                        noneSegment: 'Не са намерени сегменти.',
                        numSegmentsLoaded: 'Общ брой заредени сегменти:',
                        attributesNotFound: 'Неуспешно намиране на атрибутите или те липсват в сегмента',
                        disallowedSegment: 'Този тип сегмент не трябва да се зарежда.',
                        invalidGeometry: 'Невалидна геометрия в сегмента:',
                        updateMapDisplayFinished: 'Актуализацията е завършена.',
                        shortCutDialogNotFound: 'Не можа да се намери диалоговият прозорец за бързи клавиши. Повторен опит...',
                        houseNumberCheckboxNotFound: 'Не е намерена отметката „Номера на къщи“. Повторен опит...',
                        scriptsTabNotFound: 'Не е намерен панел със скриптове. Повторен опит...',
                        settingsTabAdded: 'Добавен е раздел с настройки.',
                        speedLayer: 'Слой за скорост',
                        opacityUpdated: 'Прозрачността на иконите е настроена на',
                        updatingSettingsTab: 'Актуализиране на раздела с настройки...',
                        languageDefined: 'Определени езици.',
                        checkingVersion: 'Проверка на версията на приставката.'
                    }
                };
            
                break;
            
            case 'ca':
                // Catalan
                this.spdTranslations = {
                    name: 'Visualització de velocitat',
                    settingTabName: 'Configuració de la visualització de velocitat',
                    enabled: 'activat',
                    disabled: 'desactivat',
                    zoomOut: 'Allunyar',
                    zoomIn: 'Apropar',
                    changelog: 'Registre de canvis',
                    changelogMessage: '<h6>Novetats:</h6><ul style="margin-bottom: 10px"><li>Ara el script mostra la velocitat en <strong>mph</strong>. Només cal canviar la unitat a la configuració de WME.</li></ul><h6>Corregits:</h6><ul><li>S’ha millorat la manera d’obtenir la velocitat a partir dels atributs del segment.</li></ul>',
                    close: 'Tancar',
                    viewScript: 'Veure l\'script',
                    showDialog: 'Mostra el modal',
                    title: {
                        general: 'General',
                        showOnRoadType: 'Mostrar en segments de tipus:'
                    },
                    label: {
                        displaySpeeds: 'Mostrar velocitats',
                        showNoSpeed: 'Mostrar en segments sense velocitat',
                        showOnRoundabout: 'Mostrar en rotondes',
                        showOnUnpaved: 'Mostrar en carretera no pavimentada',
                        maxZoom: 'Renderitzar fins al zoom:',
                        toggleLayerShortcut: 'Alterna l\'interruptor de capa per mostrar la velocitat'
                    },
                    btn: {
                        updateSettingsTab: 'Actualitzar menú',
                    },
                    log: {
                        wmeReadyStartScript: 'WME carregat i llest. Iniciant script...',
                        waitingWme: 'Esperant que el WME estigui llest...',
                        wmeReadyStartingPlugin: 'WME llest. Configurant capa personalitzada...',
                        shortSleep: 'Esperant 1 segon perquè tot es carregui...',
                        updateMapDisplay: 'Actualitzant la visualització del mapa...',
                        maxZoomExceeded: 'Zoom màxim excedit. No es mostrarà cap velocitat.',
                        noneSegment: 'No s’han trobat segments.',
                        numSegmentsLoaded: 'Total de segments carregats:',
                        attributesNotFound: 'No s’han pogut trobar els atributs o estan absents en el segment',
                        disallowedSegment: 'Aquest tipus de segment no s’ha de carregar.',
                        invalidGeometry: 'Geometria no vàlida en el segment:',
                        updateMapDisplayFinished: 'Actualització completada.',
                        shortCutDialogNotFound: 'No s’ha pogut trobar el diàleg de dreceres del teclat. Intentant-ho de nou...',
                        houseNumberCheckboxNotFound: 'No s’ha trobat la casella de selecció "Números de casa". Tornant a intentar...',
                        scriptsTabNotFound: 'No s’ha trobat el panell de scripts. Tornant a intentar...',
                        settingsTabAdded: 'S’ha afegit la pestanya de configuració.',
                        speedLayer: 'Capa de velocitat',
                        opacityUpdated: 'Opacitat de les icones ajustada a',
                        updatingSettingsTab: 'Actualitzant la pestanya de configuració...',
                        languageDefined: 'Idiomes definits.',
                        checkingVersion: 'Comprovant la versió del complement.'
                    }
                };
            
                break;

            case 'cs':
                // Czech
                this.spdTranslations = {
                    name: 'Zobrazení rychlosti',
                    settingTabName: 'Nastavení zobrazení rychlosti',
                    enabled: 'povolené',
                    disabled: 'zakázané',
                    zoomOut: 'Oddálit',
                    zoomIn: 'Přiblížit',
                    changelog: 'Seznam změn',
                    changelogMessage: '<h6>Novinky:</h6><ul style="margin-bottom: 10px"><li>Nyní skript zobrazuje rychlost v <strong>mph</strong>. Stačí změnit jednotku v nastavení WME.</li></ul><h6>Opravy:</h6><ul><li>Zlepšena metoda získávání rychlosti z atributů segmentu.</li></ul>',
                    close: 'Zavřít',
                    viewScript: 'Zobrazit skript',
                    showDialog: 'Zobrazit dialog',
                    title: {
                        general: 'Obecné',
                        showOnRoadType: 'Zobrazit na segmentech typu:'
                    },
                    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ž do úrovně zoomu:',
                        toggleLayerShortcut: 'Přepnout přepínač vrstvy pro zobrazení rychlosti'
                    },
                    btn: {
                        updateSettingsTab: 'Aktualizovat menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME načteno a připraveno. Spouštím skript...',
                        waitingWme: 'Čekám, až bude WME připraveno...',
                        wmeReadyStartingPlugin: 'WME je připraveno. Nastavuji vlastní vrstvu...',
                        shortSleep: 'Čekám asi 1 sekundu, než se vše načte...',
                        updateMapDisplay: 'Aktualizuji zobrazení na mapě...',
                        maxZoomExceeded: 'Byl překročen maximální zoom. Rychlost nebude zobrazena.',
                        noneSegment: 'Žádné segmenty nebyly nalezeny.',
                        numSegmentsLoaded: 'Celkový počet načtených segmentů:',
                        attributesNotFound: 'Nelze najít atributy nebo chybí v segmentu',
                        disallowedSegment: 'Tento typ segmentu by neměl být načten.',
                        invalidGeometry: 'Neplatná geometrie v segmentu:',
                        updateMapDisplayFinished: 'Aktualizace dokončena.',
                        shortCutDialogNotFound: 'Nepodařilo se najít dialog klávesových zkratek. Zkouším znovu...',
                        houseNumberCheckboxNotFound: 'Checkbox "Čísla domů" nebyl nalezen. Pokouším se znovu...',
                        scriptsTabNotFound: 'Záložka skriptů nebyla nalezena. Pokouším se znovu...',
                        settingsTabAdded: 'Přidána karta nastavení.',
                        speedLayer: 'Vrstva rychlosti',
                        opacityUpdated: 'Průhlednost ikon byla nastavena na',
                        updatingSettingsTab: 'Aktualizuji záložku nastavení...',
                        languageDefined: 'Jazyky definovány.',
                        checkingVersion: 'Kontroluji verzi pluginu.',
                    }
                };                

                break;

            case 'da':
                // Danish
                this.spdTranslations = {
                    name: 'Hastighedsvisning',
                    settingTabName: 'Indstillinger for hastighedsvisning',
                    enabled: 'aktiveret',
                    disabled: 'deaktiveret',
                    zoomOut: 'Zoom ud',
                    zoomIn: 'Zoom ind',
                    changelog: 'Ændringslog',
                    changelogMessage: '<h6>Nyheder:</h6><ul style="margin-bottom: 10px"><li>Nu viser scriptet hastigheden i <strong>mph</strong>. Du kan blot ændre enheden i WME-indstillingerne.</li></ul><h6>Fejlrettelser:</h6><ul><li>Metoden til at hente hastighed fra segmentets attributter er blevet forbedret.</li></ul>',
                    close: 'Luk',
                    viewScript: 'Vis skript',
                    showDialog: 'Vis dialog',
                    title: {
                        general: 'Generelt',
                        showOnRoadType: 'Vis på vejsegmenter af typen:'
                    },
                    label: {
                        displaySpeeds: 'Vis hastigheder',
                        showNoSpeed: 'Vis på segmenter uden hastighed',
                        showOnRoundabout: 'Vis på rundkørsler',
                        showOnUnpaved: 'Vis på ujævn vej',
                        maxZoom: 'Render til zoom-niveau:',
                        toggleLayerShortcut: 'Skift lagvægtsveksel til hastighedsvisning'
                    },
                    btn: {
                        updateSettingsTab: 'Opdater menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME indlæst og klar. Starter script...',
                        waitingWme: 'Venter på, at WME er klar...',
                        wmeReadyStartingPlugin: 'WME er klar. Konfigurerer tilpasset lag...',
                        shortSleep: 'Venter ca. 1 sekund på, at alt indlæses...',
                        updateMapDisplay: 'Opdaterer kortvisning...',
                        maxZoomExceeded: 'Maksimum zoom overskredet. Ingen hastigheder vil blive vist.',
                        noneSegment: 'Ingen segmenter fundet.',
                        numSegmentsLoaded: 'Samlet antal indlæste segmenter:',
                        attributesNotFound: 'Kunne ikke finde attributterne eller de mangler i segmentet',
                        disallowedSegment: 'Denne type segment bør ikke indlæses.',
                        invalidGeometry: 'Ugyldig geometri i segment:',
                        updateMapDisplayFinished: 'Opdatering fuldført.',
                        shortCutDialogNotFound: 'Kunne ikke finde tastaturgenvejsdialogen. Prøver igen...',
                        houseNumberCheckboxNotFound: 'Checkboxen "Husnumre" blev ikke fundet. Prøver igen...',
                        scriptsTabNotFound: 'Script-panelet blev ikke fundet. Prøver igen...',
                        settingsTabAdded: 'Indstillingsfanen tilføjet.',
                        speedLayer: 'Hastighedslag',
                        opacityUpdated: 'Ikonernes gennemsigtighed justeret til',
                        updatingSettingsTab: 'Opdaterer indstillingsfanen...',
                        languageDefined: 'Sprog defineret.',
                        checkingVersion: 'Kontrollerer plugin-versionen.'
                    }
                };
            
                break;
            
            case 'de':
                // German
                this.spdTranslations = {
                    name: 'Geschwindigkeitsanzeige',
                    settingTabName: 'Einstellungen für Geschwindigkeitsanzeige',
                    enabled: 'aktiviert',
                    disabled: 'deaktiviert',
                    zoomOut: 'Herauszoomen',
                    zoomIn: 'Hineinzoomen',
                    changelog: 'Änderungsprotokoll',
                    changelogMessage: '<h6>Neuigkeiten:</h6><ul style="margin-bottom: 10px"><li>Das Skript zeigt jetzt die Geschwindigkeit in <strong>mph</strong> an. Ändern Sie einfach die Einheit in den WME-Einstellungen.</li></ul><h6>Fehlerbehebungen:</h6><ul><li>Die Methode zum Abrufen der Geschwindigkeit aus den Segmentattributen wurde verbessert.</li></ul>',
                    close: 'Schließen',
                    viewScript: 'Skript anzeigen',
                    showDialog: 'Dialog anzeigen',
                    title: {
                        general: 'Allgemein',
                        showOnRoadType: 'Anzeigen für Straßentypen:'
                    },
                    label: {
                        displaySpeeds: 'Geschwindigkeiten anzeigen',
                        showNoSpeed: 'Bei Segmenten ohne Geschwindigkeit anzeigen',
                        showOnRoundabout: 'Bei Kreisverkehren anzeigen',
                        showOnUnpaved: 'Auf unbefestigter Straße anzeigen',
                        maxZoom: 'Rendern bis Zoomstufe:',
                        toggleLayerShortcut: 'Schalte Layer-Schalter für Geschwindigkeitsanzeige um'
                    },
                    btn: {
                        updateSettingsTab: 'Menü aktualisieren',
                    },
                    log: {
                        wmeReadyStartScript: 'WME geladen und bereit. Starte Skript...',
                        waitingWme: 'Warten auf WME, um bereit zu sein...',
                        wmeReadyStartingPlugin: 'WME ist bereit. Benutzerdefinierte Ebene wird konfiguriert...',
                        shortSleep: 'Warte ca. 1 Sekunde, damit alles geladen wird...',
                        updateMapDisplay: 'Kartenanzeige wird aktualisiert...',
                        maxZoomExceeded: 'Maximale Zoomstufe überschritten. Keine Geschwindigkeiten werden angezeigt.',
                        noneSegment: 'Keine Segmente gefunden.',
                        numSegmentsLoaded: 'Gesamtzahl der geladenen Segmente:',
                        attributesNotFound: 'Attribute konnten nicht gefunden werden oder fehlen im Segment',
                        disallowedSegment: 'Dieser Segmenttyp sollte nicht geladen werden.',
                        invalidGeometry: 'Ungültige Geometrie im Segment:',
                        updateMapDisplayFinished: 'Aktualisierung abgeschlossen.',
                        shortCutDialogNotFound: 'Das Tastenkürzel-Dialogfeld konnte nicht gefunden werden. Erneuter Versuch...',
                        houseNumberCheckboxNotFound: 'Checkbox "Hausnummern" nicht gefunden. Erneuter Versuch...',
                        scriptsTabNotFound: 'Skript-Panel nicht gefunden. Erneuter Versuch...',
                        settingsTabAdded: 'Einstellungs-Tab hinzugefügt.',
                        speedLayer: 'Geschwindigkeits-Ebene',
                        opacityUpdated: 'Symboltransparenz angepasst auf',
                        updatingSettingsTab: 'Einstellungs-Tab wird aktualisiert...',
                        languageDefined: 'Sprachen definiert.',
                        checkingVersion: 'Überprüfe Plugin-Version.'
                    }
                };
            
                break;
            
            case 'el':
                // Greek
                this.spdTranslations = {
                    name: 'Εμφάνιση Ταχύτητας',
                    settingTabName: 'Ρυθμίσεις Εμφάνισης Ταχύτητας',
                    enabled: 'ενεργοποιημένο',
                    disabled: 'απενεργοποιημένο',
                    zoomOut: 'Απομάκρυνση',
                    zoomIn: 'Εστίαση',
                    changelog: 'Αρχείο αλλαγών',
                    changelogMessage: '<h6>Νέα:</h6><ul style="margin-bottom: 10px"><li>Το σενάριο τώρα εμφανίζει την ταχύτητα σε <strong>mph</strong>. Απλώς αλλάξτε τη μονάδα στις ρυθμίσεις του WME.</li></ul><h6>Διορθώσεις:</h6><ul><li>Βελτιώθηκε η μέθοδος απόκτησης ταχύτητας από τα χαρακτηριστικά του τμήματος.</li></ul>',
                    close: 'Κλείσιμο',
                    viewScript: 'Προβολή σεναρίου',
                    showDialog: 'Εμφάνιση διαλόγου',
                    title: {
                        general: 'Γενικά',
                        showOnRoadType: 'Εμφάνιση σε τύπους δρόμων:'
                    },
                    label: {
                        displaySpeeds: 'Εμφάνιση ταχυτήτων',
                        showNoSpeed: 'Εμφάνιση σε τμήματα χωρίς ταχύτητα',
                        showOnRoundabout: 'Εμφάνιση σε κυκλικούς κόμβους',
                        showOnUnpaved: 'Εμφάνιση σε μη ασφαλτοστρωμένο δρόμο',
                        maxZoom: 'Απεικόνιση έως μεγέθυνση:',
                        toggleLayerShortcut: 'Εναλλαγή διακόπτη επιπέδου εμφάνισης ταχύτητας'
                    },
                    btn: {
                        updateSettingsTab: 'Ενημέρωση μενού',
                    },
                    log: {
                        wmeReadyStartScript: 'Το WME φορτώθηκε και είναι έτοιμο. Εκκίνηση σεναρίου...',
                        waitingWme: 'Αναμονή για το WME να είναι έτοιμο...',
                        wmeReadyStartingPlugin: 'Το WME είναι έτοιμο. Διαμόρφωση προσαρμοσμένου επιπέδου...',
                        shortSleep: 'Αναμονή περίπου 1 δευτερόλεπτο για να φορτώσουν όλα...',
                        updateMapDisplay: 'Ενημέρωση εμφάνισης χάρτη...',
                        maxZoomExceeded: 'Υπέρβαση μέγιστης μεγέθυνσης. Δεν θα εμφανίζονται ταχύτητες.',
                        noneSegment: 'Δεν βρέθηκαν τμήματα.',
                        numSegmentsLoaded: 'Σύνολο φορτωμένων τμημάτων:',
                        attributesNotFound: 'Δεν βρέθηκαν ή λείπουν τα χαρακτηριστικά στο τμήμα',
                        disallowedSegment: 'Αυτός ο τύπος τμήματος δεν πρέπει να φορτωθεί.',
                        invalidGeometry: 'Μη έγκυρη γεωμετρία στο τμήμα:',
                        updateMapDisplayFinished: 'Η ενημέρωση ολοκληρώθηκε.',
                        shortCutDialogNotFound: 'Δεν ήταν δυνατή η εύρεση του διαλόγου συντομεύσεων πληκτρολογίου. Προσπάθεια ξανά...',
                        houseNumberCheckboxNotFound: 'Το πλαίσιο επιλογής "Αριθμοί σπιτιών" δεν βρέθηκε. Προσπάθεια ξανά...',
                        scriptsTabNotFound: 'Ο πίνακας σεναρίων δεν βρέθηκε. Προσπάθεια ξανά...',
                        settingsTabAdded: 'Προστέθηκε καρτέλα ρυθμίσεων.',
                        speedLayer: 'Επίπεδο ταχύτητας',
                        opacityUpdated: 'Η αδιαφάνεια των εικονιδίων ρυθμίστηκε σε',
                        updatingSettingsTab: 'Ενημέρωση καρτέλας ρυθμίσεων...',
                        languageDefined: 'Ορισμένες γλώσσες.',
                        checkingVersion: 'Έλεγχος έκδοσης προσθέτου.'
                    }
                };
            
                break;
            
            case 'en-AU':
                // English (Australia)
                this.spdTranslations = {
                    name: 'Speed Display',
                    settingTabName: 'Speed Display Settings',
                    enabled: 'enabled',
                    disabled: 'disabled',
                    zoomOut: 'Zoom out',
                    zoomIn: 'Zoom in',
                    changelog: 'Changelog',
                    changelogMessage: '<h6>What\'s New:</h6><ul style="margin-bottom: 10px"><li>The script now shows speed in <strong>mph</strong>. Simply change the unit in the WME settings.</li></ul><h6>Bug Fixes:</h6><ul><li>Improved the method of getting speed from segment attributes.</li></ul>',
                    close: 'Close',
                    viewScript: 'View script',
                    showDialog: 'Show dialog',
                    title: {
                        general: 'General',
                        showOnRoadType: 'Show on road types:'
                    },
                    label: {
                        displaySpeeds: 'Display speeds',
                        showNoSpeed: 'Show on segments without speed',
                        showOnRoundabout: 'Show on roundabouts',
                        showOnUnpaved: 'Show on unpaved road',
                        maxZoom: 'Render up to zoom level:',
                        toggleLayerShortcut: 'Toggle layer switcher speed display'
                    },
                    btn: {
                        updateSettingsTab: 'Update menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME loaded and ready. Starting script...',
                        waitingWme: 'Waiting for WME to be ready...',
                        wmeReadyStartingPlugin: 'WME is ready. Setting up custom layer...',
                        shortSleep: 'Waiting about 1 second for everything to load...',
                        updateMapDisplay: 'Updating map display...',
                        maxZoomExceeded: 'Maximum zoom exceeded. No speeds will be displayed.',
                        noneSegment: 'No segments found.',
                        numSegmentsLoaded: 'Total segments loaded:',
                        attributesNotFound: 'Could not find attributes or they are missing in the segment',
                        disallowedSegment: 'This segment type should not be loaded.',
                        invalidGeometry: 'Invalid geometry in segment:',
                        updateMapDisplayFinished: 'Update complete.',
                        shortCutDialogNotFound: 'Could not find the keyboard shortcuts dialogue. Trying again...',
                        houseNumberCheckboxNotFound: '"House Numbers" checkbox not found. Retrying...',
                        scriptsTabNotFound: 'Scripts panel not found. Retrying...',
                        settingsTabAdded: 'Settings tab added.',
                        speedLayer: 'Speed layer',
                        opacityUpdated: 'Icon opacity adjusted to',
                        updatingSettingsTab: 'Updating settings tab...',
                        languageDefined: 'Languages defined.',
                        checkingVersion: 'Checking plugin version.'
                    }
                };
            
                break;
            
            case 'en-GB':
                // English (UK)
                this.spdTranslations = {
                    name: 'Speed Display',
                    settingTabName: 'Speed Display Settings',
                    enabled: 'enabled',
                    disabled: 'disabled',
                    zoomOut: 'Zoom out',
                    zoomIn: 'Zoom in',
                    changelog: 'Changelog',
                    changelogMessage: '<h6>What\'s New:</h6><ul style="margin-bottom: 10px"><li>The script now shows speed in <strong>mph</strong>. Simply change the unit in the WME settings.</li></ul><h6>Bug Fixes:</h6><ul><li>Improved the method of getting speed from segment attributes.</li></ul>',
                    close: 'Close',
                    viewScript: 'View script',
                    showDialog: 'Show dialog',
                    title: {
                        general: 'General',
                        showOnRoadType: 'Show on road types:'
                    },
                    label: {
                        displaySpeeds: 'Display speeds',
                        showNoSpeed: 'Show on segments without speed',
                        showOnRoundabout: 'Show on roundabouts',
                        showOnUnpaved: 'Show on unpaved road',
                        maxZoom: 'Render up to zoom level:',
                        toggleLayerShortcut: 'Toggle layer switcher speed display'
                    },
                    btn: {
                        updateSettingsTab: 'Update menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME loaded and ready. Starting script...',
                        waitingWme: 'Waiting for WME to be ready...',
                        wmeReadyStartingPlugin: 'WME is ready. Setting up custom layer...',
                        shortSleep: 'Waiting about 1 second for everything to load...',
                        updateMapDisplay: 'Updating map display...',
                        maxZoomExceeded: 'Maximum zoom exceeded. No speeds will be displayed.',
                        noneSegment: 'No segments found.',
                        numSegmentsLoaded: 'Total segments loaded:',
                        attributesNotFound: 'Could not find attributes or they are missing in the segment',
                        disallowedSegment: 'This segment type should not be loaded.',
                        invalidGeometry: 'Invalid geometry in segment:',
                        updateMapDisplayFinished: 'Update complete.',
                        shortCutDialogNotFound: 'Could not find the keyboard shortcuts dialogue. Trying again...',
                        houseNumberCheckboxNotFound: '"House Numbers" checkbox not found. Retrying...',
                        scriptsTabNotFound: 'Scripts panel not found. Retrying...',
                        settingsTabAdded: 'Settings tab added.',
                        speedLayer: 'Speed layer',
                        opacityUpdated: 'Icon opacity adjusted to',
                        updatingSettingsTab: 'Updating settings tab...',
                        languageDefined: 'Languages defined.',
                        checkingVersion: 'Checking plugin version.'
                    }
                };
            
                break;
            
            case 'en-US':
                // US English
                this.spdTranslations = {
                    name: 'Speed Display',
                    settingTabName: 'Speed Display Settings',
                    enabled: 'enabled',
                    disabled: 'disabled',
                    zoomOut: 'Zoom out',
                    zoomIn: 'Zoom in',
                    changelog: 'Changelog',
                    changelogMessage: '<h6>What\'s New:</h6><ul style="margin-bottom: 10px"><li>The script now shows speed in <strong>mph</strong>. Simply change the unit in the WME settings.</li></ul><h6>Bug Fixes:</h6><ul><li>Improved the method of getting speed from segment attributes.</li></ul>',
                    close: 'Close',
                    viewScript: 'View script',
                    showDialog: 'Show dialog',
                    title: {
                        general: 'General',
                        showOnRoadType: 'Show on road types:'
                    },
                    label: {
                        displaySpeeds: 'Display speeds',
                        showNoSpeed: 'Show on segments without speed',
                        showOnRoundabout: 'Show on roundabouts',
                        showOnUnpaved: 'Show on unpaved road',
                        maxZoom: 'Render up to zoom level:',
                        toggleLayerShortcut: 'Toggle layer switcher speed display'
                    },
                    btn: {
                        updateSettingsTab: 'Update menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME loaded and ready. Starting script...',
                        waitingWme: 'Waiting for WME to be ready...',
                        wmeReadyStartingPlugin: 'WME is ready. Setting up custom layer...',
                        shortSleep: 'Waiting about 1 second for everything to load...',
                        updateMapDisplay: 'Updating map display...',
                        maxZoomExceeded: 'Maximum zoom exceeded. No speeds will be displayed.',
                        noneSegment: 'No segments found.',
                        numSegmentsLoaded: 'Total segments loaded:',
                        attributesNotFound: 'Could not find attributes or they are missing in the segment',
                        disallowedSegment: 'This segment type should not be loaded.',
                        invalidGeometry: 'Invalid geometry in segment:',
                        updateMapDisplayFinished: 'Update complete.',
                        shortCutDialogNotFound: 'Could not find the keyboard shortcuts dialog. Trying again...',
                        houseNumberCheckboxNotFound: '"House Numbers" checkbox not found. Retrying...',
                        scriptsTabNotFound: 'Scripts panel not found. Retrying...',
                        settingsTabAdded: 'Settings tab added.',
                        speedLayer: 'Speed layer',
                        opacityUpdated: 'Icon opacity adjusted to',
                        updatingSettingsTab: 'Updating settings tab...',
                        languageDefined: 'Languages defined.',
                        checkingVersion: 'Checking plugin version.'
                    }
                };
            
                break;

            case 'es':
                // Spanish
                this.spdTranslations = {
                    name: 'Mostrar Velocidad',
                    settingTabName: 'Configuración de Mostrar Velocidad',
                    enabled: 'habilitado',
                    disabled: 'deshabilitado',
                    zoomOut: 'Alejar',
                    zoomIn: 'Acercar',
                    changelog: 'Registro de Cambios',
                    changelogMessage: '<h6>Lo nuevo:</h6><ul style="margin-bottom: 10px"><li>Ahora el script muestra la velocidad en <strong>mph</strong>. Solo cambia la unidad en la configuración de WME.</li></ul><h6>Correcciones:</h6><ul><li>Se mejoró el método para obtener la velocidad de los atributos del segmento.</li></ul>',
                    close: 'Cerrar',
                    viewScript: 'Ver script',
                    showDialog: 'Mostrar diálogo',
                    title: {
                        general: 'General',
                        showOnRoadType: 'Mostrar en los segmentos de tipo:'
                    },
                    label: {
                        displaySpeeds: 'Mostrar velocidades',
                        showNoSpeed: 'Mostrar en segmentos sin velocidad',
                        showOnRoundabout: 'Mostrar en rotonda',
                        showOnUnpaved: 'Mostrar en vía no pavimentada',
                        maxZoom: 'Renderizar hasta el zoom máximo:',
                        toggleLayerShortcut: 'Alternar conmutador de capa para mostrar la velocidad'
                    },
                    btn: {
                        updateSettingsTab: 'Actualizar menú',
                    },
                    log: {
                        wmeReadyStartScript: 'WME cargado y listo. Iniciando script...',
                        waitingWme: 'Esperando a que WME esté listo...',
                        wmeReadyStartingPlugin: 'WME está listo. Configurando capa personalizada...',
                        shortSleep: 'Esperando alrededor de 1 segundo para que todo cargue...',
                        updateMapDisplay: 'Actualizando visualización en el mapa...',
                        maxZoomExceeded: 'Zoom máximo excedido. No se mostrará la velocidad.',
                        noneSegment: 'No se encontraron segmentos.',
                        numSegmentsLoaded: 'Total de segmentos cargados:',
                        attributesNotFound: 'No se encontraron los atributos o están ausentes en el segmento',
                        disallowedSegment: 'Este tipo de segmento no debe cargarse.',
                        invalidGeometry: 'Geometría inválida en el segmento:',
                        updateMapDisplayFinished: 'Actualización completada.',
                        shortCutDialogNotFound: 'No se pudo encontrar el cuadro de diálogo de accesos directos del teclado. Intentando de nuevo...',
                        houseNumberCheckboxNotFound: 'No se encontró el checkbox "Números de Casas". Intentando de nuevo...',
                        scriptsTabNotFound: 'No se encontró la pestaña de scripts. Intentando de nuevo...',
                        settingsTabAdded: 'Pestaña de configuración agregada.',
                        speedLayer: 'Capa de velocidad',
                        opacityUpdated: 'Opacidad de los íconos ajustada a',
                        updatingSettingsTab: 'Actualizando pestaña de configuración...',
                        languageDefined: 'Idiomas definidos.',
                        checkingVersion: 'Verificando la versión del plugin.'
                    }
                };
            
                break;

            case 'es-419':
                // Latin-american spanish
                this.spdTranslations = {
                    name: 'Mostrar Velocidad',
                    settingTabName: 'Configuraciones de Mostrar Velocidad',
                    enabled: 'habilitada',
                    disabled: 'deshabilitada',
                    zoomOut: 'Alejar',
                    zoomIn: 'Acercar',
                    changelog: 'Registro de cambios',
                    changelogMessage: '<h6>Lo nuevo:</h6><ul style="margin-bottom: 10px"><li>Ahora el script muestra la velocidad en <strong>mph</strong>. Solo cambia la unidad en la configuración de WME.</li></ul><h6>Correcciones:</h6><ul><li>Se mejoró el método para obtener la velocidad de los atributos del segmento.</li></ul>',
                    close: 'Cerrar',
                    viewScript: 'Ver script',
                    showDialog: 'Mostrar diálogo',
                    title: {
                        general: 'General',
                        showOnRoadType: 'Mostrar en los segmentos del tipo:'
                    },
                    label: {
                        displaySpeeds: 'Mostrar velocidades',
                        showNoSpeed: 'Mostrar en segmento sin velocidad',
                        showOnRoundabout: 'Mostrar en rotonda',
                        showOnUnpaved: 'Mostrar en vía no pavimentada',
                        maxZoom: 'Renderizar hasta el nivel de zoom:',
                        toggleLayerShortcut: 'Alternar conmutador de capa para mostrar la velocidad'
                    },
                    btn: {
                        updateSettingsTab: 'Actualizar menú',
                    },
                    log: {
                        wmeReadyStartScript: 'WME cargado y listo. Iniciando el script...',
                        waitingWme: 'Esperando que WME esté listo...',
                        wmeReadyStartingPlugin: 'WME está listo. Configurando la capa personalizada...',
                        shortSleep: 'Esperando aproximadamente 1 segundo para que todo se cargue...',
                        updateMapDisplay: 'Actualizando la visualización en el mapa...',
                        maxZoomExceeded: 'Se ha excedido el zoom máximo. No se mostrará velocidad.',
                        noneSegment: 'No se encontraron segmentos.',
                        numSegmentsLoaded: 'Número total de segmentos cargados:',
                        attributesNotFound: 'No se pudieron encontrar los atributos o están ausentes en el segmento',
                        disallowedSegment: 'Este tipo de segmento no debe cargarse.',
                        invalidGeometry: 'Geometría inválida en el segmento:',
                        updateMapDisplayFinished: 'Actualización completada.',
                        shortCutDialogNotFound: 'No se pudo encontrar el cuadro de diálogo de accesos directos del teclado. Intentando nuevamente...',
                        houseNumberCheckboxNotFound: 'No se encontró el checkbox "Números de Casas". Intentando nuevamente...',
                        scriptsTabNotFound: 'No se encontró la pestaña de scripts. Intentando nuevamente...',
                        settingsTabAdded: 'Pestaña de configuraciones añadida.',
                        speedLayer: 'Capa de velocidad',
                        opacityUpdated: 'Opacidad de los íconos ajustada a',
                        updatingSettingsTab: 'Actualizando la pestaña de configuraciones...',
                        languageDefined: 'Idiomas definidos.',
                        checkingVersion: 'Comprobando la versión del plugin.',
                    }
                };                
                
                break;

            case 'et':
                // Estonian
                this.spdTranslations = {
                    name: 'Kiirus näidik',
                    settingTabName: 'Kiirus näidiku seadistused',
                    enabled: 'lubatud',
                    disabled: 'keelatud',
                    zoomOut: 'Kaugemalt',
                    zoomIn: 'Lähemalt',
                    changelog: 'Muudatuste logi',
                    changelogMessage: '<h6>Uudised:</h6><ul style="margin-bottom: 10px"><li>Kui nüüd skript kuvab kiirust <strong>mph</strong>-s, vaheta lihtsalt ühikut WME seadetest.</li></ul><h6>Parandused:</h6><ul><li>Parandatud kiirusandmete hankimise meetod segmentide omadustest.</li></ul>',
                    close: 'Sulge',
                    viewScript: 'Vaata skripti',
                    showDialog: 'Näita dialoogi',
                    title: {
                        general: 'Üldine',
                        showOnRoadType: 'Kuva järgmistes tee tüüpides:'
                    },
                    label: {
                        displaySpeeds: 'Kuva kiirus',
                        showNoSpeed: 'Kuva kiiruseta segmentides',
                        showOnRoundabout: 'Kuva ringristmikul',
                        showOnUnpaved: 'Kuva sillutamata teel',
                        maxZoom: 'Renderda kuni maksimaalse suumimiseni:',
                        toggleLayerShortcut: 'Lülita kihivahetaja kiiruskuva'
                    },
                    btn: {
                        updateSettingsTab: 'Uuenda menüüd',
                    },
                    log: {
                        wmeReadyStartScript: 'WME on laaditud ja valmis. Skripti käivitamine...',
                        waitingWme: 'Oodates, et WME oleks valmis...',
                        wmeReadyStartingPlugin: 'WME on valmis. Kohandatud kihi seadistamine...',
                        shortSleep: 'Oodates umbes 1 sekundit, et kõik laeks...',
                        updateMapDisplay: 'Kaardi kuvamise uuendamine...',
                        maxZoomExceeded: 'Maksimaalne suum ületatud. Kiirus ei kuvata.',
                        noneSegment: 'Ühtegi segmenti ei leitud.',
                        numSegmentsLoaded: 'Laaditud segmentide kogus:',
                        attributesNotFound: 'Segmentidest ei leitud omadusi või need puuduvad',
                        disallowedSegment: 'Seda tüüpi segment ei tohiks laadida.',
                        invalidGeometry: 'Geomeetria on vigane segmentis:',
                        updateMapDisplayFinished: 'Uuendamine lõppenud.',
                        shortCutDialogNotFound: 'Klaviatuuri otseteede dialoogi ei leitud. Proovin uuesti...',
                        houseNumberCheckboxNotFound: 'Maja numbri valikut ei leitud. Üritatakse uuesti...',
                        scriptsTabNotFound: 'Skriptide vahelehte ei leitud. Üritatakse uuesti...',
                        settingsTabAdded: 'Seadistuste vahekaart lisatud.',
                        speedLayer: 'Kiiruskiht',
                        opacityUpdated: 'Ikonide läbipaistvus on seatud: ',
                        updatingSettingsTab: 'Seadistuste vahekaardi uuendamine...',
                        languageDefined: 'Keel määratud.',
                        checkingVersion: 'Kontrollin plugin-a versiooni.'
                    }
                };
            
                break;
            
            
            case 'eu':
                // Basque
                this.spdTranslations = {
                    name: 'Abiadura Bistaratzea',
                    settingTabName: 'Abiadura Bistaratzeko Ezarpenak',
                    enabled: 'gaituta',
                    disabled: 'desgaituta',
                    zoomOut: 'Urrundu',
                    zoomIn: 'Zooma handitu',
                    changelog: 'Aldaketa erregistroa',
                    changelogMessage: '<h6>Albistea:</h6><ul style="margin-bottom: 10px"><li>Orain, script-ak abiadura <strong>mph</strong> moduan erakusten du abiadura. Egin unitatea aldatzea WME konfigurazioetan.</li></ul><h6>Aldaketak:</h6><ul><li>Hobetu egin da segmentuaren atributuetatik abiadura lortzeko metodoa.</li></ul>',
                    close: 'Itxi',
                    viewScript: 'Ikusi script-a',
                    showDialog: 'Irudiak erakutsi',
                    title: {
                        general: 'Orokorra',
                        showOnRoadType: 'Erakutsi errepide mota hauetan:'
                    },
                    label: {
                        displaySpeeds: 'Abiadurak bistaratu',
                        showNoSpeed: 'Abiadurarik gabeko segmentuetan erakutsi',
                        showOnRoundabout: 'Biribilguneetan erakutsi',
                        showOnUnpaved: 'Erakutsi asfaltatu gabeko bidean',
                        maxZoom: 'Errendatu zoom maila honetara arte:',
                        toggleLayerShortcut: 'Aldatu geruzako aldatzailea abiadura erakusteko'
                    },
                    btn: {
                        updateSettingsTab: 'Eguneratu menua',
                    },
                    log: {
                        wmeReadyStartScript: 'WME kargatuta eta prest. Script abiatzen...',
                        waitingWme: 'WME prest egon arte itxaroten...',
                        wmeReadyStartingPlugin: 'WME prest dago. Geruza pertsonalizatua ezartzen...',
                        shortSleep: 'Segundu 1 inguru itxaroten elementu guztiak kargatzeko...',
                        updateMapDisplay: 'Mapa bistaratzeko eguneratzen...',
                        maxZoomExceeded: 'Gehienezko zooma gaindituta. Ez da abiadurarik bistaratuko.',
                        noneSegment: 'Ez da segmenturik aurkitu.',
                        numSegmentsLoaded: 'Guztira kargatutako segmentuak:',
                        attributesNotFound: 'Ez dira atributuak aurkitu edo falta dira segmentuan',
                        disallowedSegment: 'Segmentu mota hau ez da kargatu behar.',
                        invalidGeometry: 'Geometria baliogabea segmentuan:',
                        updateMapDisplayFinished: 'Eguneratzea osatua.',
                        shortCutDialogNotFound: 'Ezin izan da teklatuko lasterbideen elkarrizketa-koadroa aurkitu. Berriro saiatzen...',
                        houseNumberCheckboxNotFound: '"Etxe zenbakiak" kontrol-laukia ez da aurkitu. Berriro saiatzen...',
                        scriptsTabNotFound: 'Script panelean ez da aurkitu. Berriro saiatzen...',
                        settingsTabAdded: 'Ezarpenen fitxa gehituta.',
                        speedLayer: 'Abiadura geruza',
                        opacityUpdated: 'Ikonoen gardentasuna egokituta honela:',
                        updatingSettingsTab: 'Ezarpen fitxa eguneratzen...',
                        languageDefined: 'Hizkuntzak definituta.',
                        checkingVersion: 'Pluginaren bertsioa egiaztatzen.'
                    }
                };
            
                break;
            
            case 'fa-IR':
                // Persian (Iran)
                this.spdTranslations = {
                    name: 'نمایش سرعت',
                    settingTabName: 'تنظیمات نمایش سرعت',
                    enabled: 'فعال',
                    disabled: 'غیرفعال',
                    zoomOut: 'بزرگنمایی کمتر',
                    zoomIn: 'بزرگنمایی بیشتر',
                    changelog: 'لیست تغییرات',
                    changelogMessage: '<h6>جدیدها:</h6><ul style="margin-bottom: 10px"><li>اکنون اسکریپت سرعت را به صورت <strong>mph</strong> نمایش می‌دهد. فقط واحد را در تنظیمات WME تغییر دهید.</li></ul><h6>رفع اشکالات:</h6><ul><li>روش گرفتن سرعت از ویژگی‌های بخش بهبود یافته است.</li></ul>',
                    close: 'بستن',
                    viewScript: 'مشاهده اسکریپت',
                    showDialog: 'نمایش مودال',
                    title: {
                        general: 'عمومی',
                        showOnRoadType: 'نمایش در نوع جاده:'
                    },
                    label: {
                        displaySpeeds: 'نمایش سرعت‌ها',
                        showNoSpeed: 'نمایش در بخش‌های بدون سرعت',
                        showOnRoundabout: 'نمایش در میدان‌ها',
                        showOnUnpaved: 'نمایش در جاده خاکی',
                        maxZoom: 'نمایش تا سطح بزرگنمایی:',
                        toggleLayerShortcut: 'سوئیچ لایه نمایش سرعت'
                    },
                    btn: {
                        updateSettingsTab: 'بروزرسانی منو',
                    },
                    log: {
                        wmeReadyStartScript: 'WME بارگذاری شده و آماده است. شروع اسکریپت...',
                        waitingWme: 'منتظر آماده شدن WME...',
                        wmeReadyStartingPlugin: 'WME آماده است. پیکربندی لایه سفارشی...',
                        shortSleep: 'منتظر حدود 1 ثانیه برای بارگذاری کامل...',
                        updateMapDisplay: 'بروزرسانی نمایش نقشه...',
                        maxZoomExceeded: 'بزرگنمایی حداکثر فراتر رفته است. هیچ سرعتی نمایش داده نمی‌شود.',
                        noneSegment: 'هیچ بخشی یافت نشد.',
                        numSegmentsLoaded: 'تعداد بخش‌های بارگذاری شده:',
                        attributesNotFound: 'ویژگی‌ها یافت نشدند یا در بخش وجود ندارند',
                        disallowedSegment: 'این نوع بخش نباید بارگذاری شود.',
                        invalidGeometry: 'هندسه نامعتبر در بخش:',
                        updateMapDisplayFinished: 'بروزرسانی کامل شد.',
                        shortCutDialogNotFound: 'گفتگوی میانبرهای صفحه کلید یافت نشد. در حال تلاش مجدد...',
                        houseNumberCheckboxNotFound: 'چک‌باکس "شماره خانه" یافت نشد. تلاش مجدد...',
                        scriptsTabNotFound: 'پنل اسکریپت یافت نشد. تلاش مجدد...',
                        settingsTabAdded: 'زبانه تنظیمات اضافه شد.',
                        speedLayer: 'لایه سرعت',
                        opacityUpdated: 'شفافیت آیکون‌ها تنظیم شد به',
                        updatingSettingsTab: 'در حال بروزرسانی زبانه تنظیمات...',
                        languageDefined: 'زبان‌ها تعیین شد.',
                        checkingVersion: 'در حال بررسی نسخه پلاگین.'
                    }
                };
            
                break;

            case 'fi':
                // Finnish
                this.spdTranslations = {
                    name: 'Nopeuden näyttö',
                    settingTabName: 'Nopeuden näyttöasetukset',
                    enabled: 'käytössä',
                    disabled: 'poistettu käytöstä',
                    zoomOut: 'Loitontaa',
                    zoomIn: 'Lähentää',
                    changelog: 'Muutosloki',
                    changelogMessage: '<h6>Uudet asiat:</h6><ul style="margin-bottom: 10px"><li>Skripti näyttää nyt nopeuden <strong>mph</strong> -yksikössä. Muuta vain yksikkö WME-asetuksista.</li></ul><h6>Virheenkorjaukset:</h6><ul><li>Nopeuden hakemismenetelmää segmentin ominaisuuksista on parannettu.</li></ul>',
                    close: 'Sulje',
                    viewScript: 'Avaa skripti',
                    showDialog: 'Avaa ikkuna',
                    title: {
                        general: 'Yleinen',
                        showOnRoadType: 'Näytä tyypin segmenttien kohdalla:'
                    },
                    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 enintään zoom-tasolle:',
                        toggleLayerShortcut: 'Vaihda kerroksen kytkintä nopeusnäytöllä'
                    },
                    btn: {
                        updateSettingsTab: 'Päivitä valikko',
                    },
                    log: {
                        wmeReadyStartScript: 'WME ladattu ja valmis. Käynnistetään skripti...',
                        waitingWme: 'Odotetaan, että WME on valmis...',
                        wmeReadyStartingPlugin: 'WME on valmis. Asetetaan mukautettua kerrosta...',
                        shortSleep: 'Odota noin 1 sekunti ennen kuin kaikki latautuu...',
                        updateMapDisplay: 'Päivitetään näyttö kartalla...',
                        maxZoomExceeded: 'Maksimi zoomaus ylitetty. Nopeutta ei näytetä.',
                        noneSegment: 'Ei löytynyt segmenttejä.',
                        numSegmentsLoaded: 'Yhteensä ladattuja segmenttejä:',
                        attributesNotFound: 'Attribuutteja ei löytynyt tai ne puuttuvat segmentistä',
                        disallowedSegment: 'Tämän tyyppistä segmenttiä ei tule ladata.',
                        invalidGeometry: 'Virheellinen geometria segmentissä:',
                        updateMapDisplayFinished: 'Päivitys valmis.',
                        shortCutDialogNotFound: 'Pikanäppäindialogia ei löytynyt. Yritetään uudelleen...',
                        houseNumberCheckboxNotFound: '"Talojen numerot" -valintaruutua ei löytynyt. Yritetään uudelleen...',
                        scriptsTabNotFound: 'Skripti-välilehteä ei löytynyt. Yritetään uudelleen...',
                        settingsTabAdded: 'Asetusvälilehti lisätty.',
                        speedLayer: 'Nopeuskerros',
                        opacityUpdated: 'Ikonien opasiteetti säädetty arvoon',
                        updatingSettingsTab: 'Päivitetään asetusten välilehteä...',
                        languageDefined: 'Kielet määritetty.',
                        checkingVersion: 'Tarkistetaan liitännäisen versiota.',
                    }
                };

                break;

            case 'fr':
                // French
                this.spdTranslations = {
                    name: 'Affichage de la vitesse',
                    settingTabName: 'Paramètres d\'affichage de la vitesse',
                    enabled: 'activée',
                    disabled: 'désactivée',
                    zoomOut: 'Dézoomer',
                    zoomIn: 'Zoomer',
                    changelog: 'Journal des modifications',
                    changelogMessage: '<h6>Quoi de neuf :</h6><ul style="margin-bottom: 10px"><li>Le script affiche désormais la vitesse en <strong>mph</strong>. Il vous suffit de changer l\'unité dans les paramètres de WME.</li></ul><h6>Corrections de bugs :</h6><ul><li>Amélioration de la méthode de récupération de la vitesse à partir des attributs du segment.</li></ul>',
                    close: 'Fermer',
                    viewScript: 'Voir le script',
                    showDialog: 'Afficher la fenêtre modale',
                    title: {
                        general: 'Général',
                        showOnRoadType: 'Afficher sur les segments de type :'
                    },
                    label: {
                        displaySpeeds: 'Afficher les vitesses',
                        showNoSpeed: 'Afficher sur le segment sans vitesse',
                        showOnRoundabout: 'Afficher sur le rond-point',
                        showOnUnpaved: 'Afficher sur route non pavée',
                        maxZoom: 'Rendre jusqu\'au niveau de zoom :',
                        toggleLayerShortcut: 'Basculer l\'interrupteur de couche pour afficher la vitesse'
                    },
                    btn: {
                        updateSettingsTab: 'Mettre à jour le menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME chargé et prêt. Démarrage du script...',
                        waitingWme: 'En attente que WME soit prêt...',
                        wmeReadyStartingPlugin: 'WME est prêt. Configuration de la couche personnalisée...',
                        shortSleep: 'Attente d\'environ 1 seconde pour que tout se charge...',
                        updateMapDisplay: 'Mise à jour de l\'affichage sur la carte...',
                        maxZoomExceeded: 'Le zoom maximum a été dépassé. Aucune vitesse ne sera affichée.',
                        noneSegment: 'Aucun segment trouvé.',
                        numSegmentsLoaded: 'Nombre total de segments chargés :',
                        attributesNotFound: 'Impossible de trouver les attributs ou ils sont manquants dans le segment',
                        disallowedSegment: 'Ce type de segment ne doit pas être chargé.',
                        invalidGeometry: 'Géométrie invalide dans le segment :',
                        updateMapDisplayFinished: 'Mise à jour terminée.',
                        shortCutDialogNotFound: 'Impossible de trouver la boîte de dialogue des raccourcis clavier. Nouvelle tentative...',
                        houseNumberCheckboxNotFound: 'La case à cocher "Numéros des maisons" n\'a pas été trouvée. Tentative de nouveau...',
                        scriptsTabNotFound: 'L\'onglet des scripts n\'a pas été trouvé. Tentative de nouveau...',
                        settingsTabAdded: 'Onglet des paramètres ajouté.',
                        speedLayer: 'Couche de vitesse',
                        opacityUpdated: 'Opacité des icônes ajustée à',
                        updatingSettingsTab: 'Mise à jour de l\'onglet des paramètres...',
                        languageDefined: 'Langues définies.',
                        checkingVersion: 'Vérification de la version du plugin.',
                    }
                };
                
                break;

            case 'gl':
                // Galician
                this.spdTranslations = {
                    name: 'Visualización da velocidade',
                    settingTabName: 'Configuración da visualización da velocidade',
                    enabled: 'activado',
                    disabled: 'desactivado',
                    zoomOut: 'Afastar',
                    zoomIn: 'Achegar',
                    changelog: 'Rexistro de cambios',
                    changelogMessage: '<h6>Novidades:</h6><ul style="margin-bottom: 10px"><li>Agora o script amosa a velocidade en <strong>mph</strong>. Só tes que cambiar a unidade nas configuracións de WME.</li></ul><h6>Correccións:</h6><ul><li>Mellorouse o método de obter a velocidade dos atributos do segmento.</li></ul>',
                    close: 'Pechar',
                    viewScript: 'Ver o script',
                    showDialog: 'Amosar modal',
                    title: {
                        general: 'Xeral',
                        showOnRoadType: 'Amosar nos segmentos do tipo:'
                    },
                    label: {
                        displaySpeeds: 'Amosar velocidades',
                        showNoSpeed: 'Amosar en segmentos sen velocidade',
                        showOnRoundabout: 'Amosar en rotondas',
                        showOnUnpaved: 'Amosar en vía sen pavimentar',
                        maxZoom: 'Renderizar ata o zoom:',
                        toggleLayerShortcut: 'Alternar o interruptor de capa para mostrar a velocidade'
                    },
                    btn: {
                        updateSettingsTab: 'Actualizar menú',
                    },
                    log: {
                        wmeReadyStartScript: 'WME cargado e listo. Iniciando script...',
                        waitingWme: 'Agardando a que WME estea listo...',
                        wmeReadyStartingPlugin: 'WME está listo. Configurando capa personalizada...',
                        shortSleep: 'Agardando uns 1 segundo para que todo se cargue...',
                        updateMapDisplay: 'Actualizando a visualización no mapa...',
                        maxZoomExceeded: 'Zoom máximo excedido. Ningunha velocidade será mostrada.',
                        noneSegment: 'Non se atoparon segmentos.',
                        numSegmentsLoaded: 'Total de segmentos cargados:',
                        attributesNotFound: 'Non se puideron atopar os atributos ou están ausentes no segmento',
                        disallowedSegment: 'Este tipo de segmento non debe ser cargado.',
                        invalidGeometry: 'Xeometría non válida no segmento:',
                        updateMapDisplayFinished: 'Actualización completada.',
                        shortCutDialogNotFound: 'Non foi posible atopar o cadro de diálogo dos atallos de teclado. Intentando de novo...',
                        houseNumberCheckboxNotFound: 'Non se atopou a caixa de selección "Números das casas". Intentando de novo...',
                        scriptsTabNotFound: 'Non se atopou o panel de scripts. Intentando de novo...',
                        settingsTabAdded: 'Aba de configuración engadida.',
                        speedLayer: 'Capa de velocidade',
                        opacityUpdated: 'Opacidade dos iconas axustada a',
                        updatingSettingsTab: 'Actualizando a aba de configuración...',
                        languageDefined: 'Idiomas definidos.',
                        checkingVersion: 'Comprobando a versión do plugin.'
                    }
                };
            
                break;
            
            case 'he':
                // Hebrew
                this.spdTranslations = {
                    name: 'תצוגת מהירות',
                    settingTabName: 'הגדרות תצוגת מהירות',
                    enabled: 'מופעל',
                    disabled: 'מנוטרל',
                    zoomOut: 'התרחק',
                    zoomIn: 'התקרב',
                    changelog: 'יומן שינויים',
                    changelogMessage: '<h6>מה חדש:</h6><ul style="margin-bottom: 10px"><li>הסקריפט מציג כעת את המהירות ב<strong>mph</strong>. פשוט שנה את היחידה בהגדרות WME.</li></ul><h6>תיקוני באגים:</h6><ul><li>שופר השיטה לקבלת המהירות מפרטי הסגמנט.</li></ul>',
                    close: 'סגור',
                    viewScript: 'צפייה בסקריפט',
                    showDialog: 'הצג מודאלי',
                    title: {
                        general: 'כללי',
                        showOnRoadType: 'הצג בקטעי דרך מהסוג:'
                    },
                    label: {
                        displaySpeeds: 'הצג מהירויות',
                        showNoSpeed: 'הצג בקטעי דרך ללא מהירות',
                        showOnRoundabout: 'הצג בכיכרות',
                        showOnUnpaved: 'הצג בדרך לא סלולה',
                        maxZoom: 'הצג עד רמת התקרבות:',
                        toggleLayerShortcut: 'Alternar o interruptor de capa para mostrar a velocidade'
                    },
                    btn: {
                        updateSettingsTab: 'עדכן תפריט',
                    },
                    log: {
                        wmeReadyStartScript: 'WME נטען ומוכן. מפעיל סקריפט...',
                        waitingWme: 'ממתין ל-WME שיטען...',
                        wmeReadyStartingPlugin: 'WME מוכן. מגדיר שכבה מותאמת אישית...',
                        shortSleep: 'ממתין כשנייה לטעינה מלאה...',
                        updateMapDisplay: 'מעדכן תצוגת מפה...',
                        maxZoomExceeded: 'ההתקרבות חרגה מהמקסימום. מהירות לא תוצג.',
                        noneSegment: 'לא נמצאו קטעים.',
                        numSegmentsLoaded: 'סך כל הקטעים שנטענו:',
                        attributesNotFound: 'לא ניתן למצוא את המאפיינים או שהם חסרים בקטע',
                        disallowedSegment: 'קטע זה אינו אמור להיטען.',
                        invalidGeometry: 'גיאומטריה לא תקינה בקטע:',
                        updateMapDisplayFinished: 'העדכון הושלם.',
                        shortCutDialogNotFound: 'Non foi posible atopar o cadro de diálogo dos atallos de teclado. Intentando de novo...',
                        houseNumberCheckboxNotFound: 'תיבת הסימון "מספרי בתים" לא נמצאה. מנסה שוב...',
                        scriptsTabNotFound: 'לשונית הסקריפטים לא נמצאה. מנסה שוב...',
                        settingsTabAdded: 'לשונית ההגדרות נוספה.',
                        speedLayer: 'שכבת מהירות',
                        opacityUpdated: 'שקיפות האייקונים הותאמה ל',
                        updatingSettingsTab: 'מעדכן את לשונית ההגדרות...',
                        languageDefined: 'השפות הוגדרו.',
                        checkingVersion: 'בודק את גרסת התוסף.'
                    }
                };
            
                break;
            
            case 'hi':
                // Hindi
                this.spdTranslations = {
                    name: 'स्पीड डिस्प्ले',
                    settingTabName: 'स्पीड डिस्प्ले सेटिंग्स',
                    enabled: 'सक्षम',
                    disabled: 'अक्षम',
                    zoomOut: 'जूम आउट',
                    zoomIn: 'जूम इन',
                    changelog: 'चेंजलॉग',
                    changelogMessage: '<h6>क्या नया है:</h6><ul style="margin-bottom: 10px"><li>अब स्क्रिप्ट <strong>mph</strong> में गति दिखाती है। बस WME सेटिंग्स में यूनिट बदलें।</li></ul><h6>बग फिक्स:</h6><ul><li>सेगमेंट के गुणों से गति प्राप्त करने का तरीका सुधारा गया है।</li></ul>',
                    close: 'बंद करें',
                    viewScript: 'स्क्रिप्ट देखें',
                    showDialog: 'मोडल दिखाएँ',
                    title: {
                        general: 'सामान्य',
                        showOnRoadType: 'इस सड़क प्रकार पर दिखाएं:'
                    },
                    label: {
                        displaySpeeds: 'स्पीड दिखाएं',
                        showNoSpeed: 'स्पीड न होने पर दिखाएं',
                        showOnRoundabout: 'राउंडअबाउट पर दिखाएं',
                        showOnUnpaved: 'असंपन्न सड़क पर दिखाएँ',
                        maxZoom: 'मैक्स जूम पर रेंडर करें:',
                        toggleLayerShortcut: 'लेयर स्विचर गति प्रदर्शन टॉगल करें'
                    },
                    btn: {
                        updateSettingsTab: 'मेनू अपडेट करें',
                    },
                    log: {
                        wmeReadyStartScript: 'WME लोड हो गया और तैयार है। स्क्रिप्ट शुरू हो रही है...',
                        waitingWme: 'WME के तैयार होने का इंतजार कर रहे हैं...',
                        wmeReadyStartingPlugin: 'WME तैयार है। कस्टम लेयर सेट कर रहे हैं...',
                        shortSleep: 'सब कुछ लोड होने के लिए लगभग 1 सेकंड रुक रहे हैं...',
                        updateMapDisplay: 'मानचित्र प्रदर्शन अपडेट कर रहे हैं...',
                        maxZoomExceeded: 'अधिकतम जूम स्तर पार हो गया। कोई स्पीड नहीं दिखाई देगी।',
                        noneSegment: 'कोई सेगमेंट नहीं मिला।',
                        numSegmentsLoaded: 'लोड किए गए सेगमेंट की कुल संख्या:',
                        attributesNotFound: 'सेगमेंट में गुण नहीं मिले या गायब हैं',
                        disallowedSegment: 'यह प्रकार का सेगमेंट लोड नहीं किया जाना चाहिए।',
                        invalidGeometry: 'सेगमेंट में अमान्य ज्यामिति:',
                        updateMapDisplayFinished: 'अद्यतन समाप्त हो गया।',
                        shortCutDialogNotFound: 'कीबोर्ड शॉर्टकट संवाद नहीं मिला। पुनः प्रयास कर रहे हैं...',
                        houseNumberCheckboxNotFound: '"हाउस नंबर" चेकबॉक्स नहीं मिला। फिर से प्रयास कर रहे हैं...',
                        scriptsTabNotFound: 'स्क्रिप्ट पैनल नहीं मिला। फिर से प्रयास कर रहे हैं...',
                        settingsTabAdded: 'सेटिंग्स टैब जोड़ा गया।',
                        speedLayer: 'स्पीड लेयर',
                        opacityUpdated: 'आइकन की अपारदर्शिता को समायोजित किया गया',
                        updatingSettingsTab: 'सेटिंग्स टैब को अपडेट कर रहे हैं...',
                        languageDefined: 'भाषाएं परिभाषित की गईं।',
                        checkingVersion: 'प्लगइन संस्करण की जाँच कर रहे हैं।'
                    }
                };
            
                break;
            
            case 'hr':
                // Croatian
                this.spdTranslations = {
                    name: 'Prikaz brzine',
                    settingTabName: 'Postavke prikaza brzine',
                    enabled: 'omogućeno',
                    disabled: 'onemogućeno',
                    zoomOut: 'Udalji',
                    zoomIn: 'Povećaj',
                    changelog: 'Dnevnik promjena',
                    changelogMessage: '<h6>Novosti:</h6><ul style="margin-bottom: 10px"><li>Skripta sada prikazuje brzinu u <strong>mph</strong>. Jednostavno promijenite jedinicu u WME postavkama.</li></ul><h6>Ispravci:</h6><ul><li>Poboljšana metoda za dohvat brzine iz atributa segmenta.</li></ul>',
                    close: 'Zatvori',
                    viewScript: 'Pogledaj skriptu',
                    showDialog: 'Prikaži dijalog',
                    title: {
                        general: 'Općenito',
                        showOnRoadType: 'Prikaz na segmentima vrste:'
                    },
                    label: {
                        displaySpeeds: 'Prikaz brzina',
                        showNoSpeed: 'Prikaz na segmentima bez brzine',
                        showOnRoundabout: 'Prikaz na kružnim tokovima',
                        showOnUnpaved: 'Prikaži na neasfaltiranoj cesti',
                        maxZoom: 'Renderirati do razine uvećanja:',
                        toggleLayerShortcut: 'Prebacite prekidač sloja za prikaz brzine'
                    },
                    btn: {
                        updateSettingsTab: 'Ažuriraj izbornik',
                    },
                    log: {
                        wmeReadyStartScript: 'WME učitano i spremno. Pokrećem skriptu...',
                        waitingWme: 'Čekam da WME bude spreman...',
                        wmeReadyStartingPlugin: 'WME je spreman. Postavljam prilagođeni sloj...',
                        shortSleep: 'Čekam 1 sekundu da se sve učita...',
                        updateMapDisplay: 'Ažuriram prikaz na karti...',
                        maxZoomExceeded: 'Maksimalno uvećanje premašeno. Brzina neće biti prikazana.',
                        noneSegment: 'Nema segmenata.',
                        numSegmentsLoaded: 'Ukupno učitanih segmenata:',
                        attributesNotFound: 'Nisu pronađeni atributi ili nedostaju u segmentu',
                        disallowedSegment: 'Ova vrsta segmenta ne bi trebala biti učitana.',
                        invalidGeometry: 'Nevažeća geometrija na segmentu:',
                        updateMapDisplayFinished: 'Ažuriranje završeno.',
                        shortCutDialogNotFound: 'Nije moguće pronaći dijalog prečaca tipkovnice. Pokušavam ponovno...',
                        houseNumberCheckboxNotFound: '"Brojevi kuća" kutija za potvrdu nije pronađena. Pokušavam ponovno...',
                        scriptsTabNotFound: 'Kartica skripti nije pronađena. Pokušavam ponovno...',
                        settingsTabAdded: 'Kartica postavki dodana.',
                        speedLayer: 'Sloj brzine',
                        opacityUpdated: 'Prozirnost ikona postavljena na',
                        updatingSettingsTab: 'Ažuriram karticu postavki...',
                        languageDefined: 'Jezici definirani.',
                        checkingVersion: 'Provjeravam verziju dodatka.'
                    }
                };
            
                break;
            
            case 'hu':
                // Hungarian
                this.spdTranslations = {
                    name: 'Sebesség kijelzés',
                    settingTabName: 'Sebesség kijelzés beállítások',
                    enabled: 'engedélyezve',
                    disabled: 'letiltva',
                    zoomOut: 'Távolítás',
                    zoomIn: 'Közelítés',
                    changelog: 'Változásnapló',
                    changelogMessage: '<h6>Újdonságok:</h6><ul style="margin-bottom: 10px"><li>A szkript mostantól <strong>mph</strong> sebességet jelenít meg. Egyszerűen változtassa meg az egységet a WME beállításokban.</li></ul><h6>Hibajavítások:</h6><ul><li>A sebesség lekérésének módja javítva lett a szegmensek attribútumaiból.</li></ul>',
                    close: 'Bezárás',
                    viewScript: 'Szkript megtekintése',
                    showDialog: 'Modális ablak megjelenítése',
                    title: {
                        general: 'Általános',
                        showOnRoadType: 'Megjelenítés ezen az úttípuson:'
                    },
                    label: {
                        displaySpeeds: 'Sebességek megjelenítése',
                        showNoSpeed: 'Megjelenítés sebesség nélküli szegmenseken',
                        showOnRoundabout: 'Megjelenítés körforgalomra',
                        showOnUnpaved: 'Megjelenítés burkolatlan úton',
                        maxZoom: 'Renderelés a legnagyobb nagyításig:',
                        toggleLayerShortcut: 'Rétegváltó sebesség kijelző váltás'
                    },
                    btn: {
                        updateSettingsTab: 'Menü frissítése',
                    },
                    log: {
                        wmeReadyStartScript: 'WME betöltve és kész. A szkript indítása...',
                        waitingWme: 'Várakozás a WME betöltődésére...',
                        wmeReadyStartingPlugin: 'A WME kész. Egyéni réteg beállítása...',
                        shortSleep: 'Várakozás körülbelül 1 másodpercig, hogy minden betöltődjön...',
                        updateMapDisplay: 'Térkép megjelenítés frissítése...',
                        maxZoomExceeded: 'Maximális nagyítási szint túllépve. Sebesség nem jeleníthető meg.',
                        noneSegment: 'Nincs szegmens.',
                        numSegmentsLoaded: 'Betöltött szegmensek száma:',
                        attributesNotFound: 'A szegmensen nem találhatók az attribútumok vagy hiányoznak',
                        disallowedSegment: 'Ez a szegmensként nem engedélyezett betöltésre.',
                        invalidGeometry: 'Érvénytelen geometria a szegmensen:',
                        updateMapDisplayFinished: 'Frissítés befejeződött.',
                        shortCutDialogNotFound: 'Nem található a billentyűparancsok párbeszédpanel. Újrapróbálkozás...',
                        houseNumberCheckboxNotFound: '"Házszám" jelölőnégyzet nem található. Újrapróbálkozás...',
                        scriptsTabNotFound: 'Skript fül nem található. Újrapróbálkozás...',
                        settingsTabAdded: 'Beállítások fül hozzáadva.',
                        speedLayer: 'Sebesség réteg',
                        opacityUpdated: 'Ikonok átlátszósága beállítva',
                        updatingSettingsTab: 'Beállítások fül frissítése...',
                        languageDefined: 'Nyelvek definiálva.',
                        checkingVersion: 'A bővítmény verziójának ellenőrzése.'
                    }
                };
            
                break;
            
            case 'id':
                // Indonesian
                this.spdTranslations = {
                    name: 'Tampilan Kecepatan',
                    settingTabName: 'Pengaturan Tampilan Kecepatan',
                    enabled: 'aktif',
                    disabled: 'nonaktif',
                    zoomOut: 'Perkecil',
                    zoomIn: 'Perbesar',
                    changelog: 'Catatan Perubahan',
                    changelogMessage: '<h6>Apa yang Baru:</h6><ul style="margin-bottom: 10px"><li>Skrip sekarang menampilkan kecepatan dalam <strong>mph</strong>. Cukup ubah satuan di pengaturan WME.</li></ul><h6>Perbaikan:</h6><ul><li>Metode untuk mendapatkan kecepatan dari atribut segmen telah ditingkatkan.</li></ul>',
                    close: 'Tutup',
                    viewScript: 'Lihat Skrip',
                    showDialog: 'Tampilkan modal',
                    title: {
                        general: 'Umum',
                        showOnRoadType: 'Tampilkan pada tipe jalan:'
                    },
                    label: {
                        displaySpeeds: 'Tampilkan kecepatan',
                        showNoSpeed: 'Tampilkan di segmen tanpa kecepatan',
                        showOnRoundabout: 'Tampilkan di bundaran',
                        showOnUnpaved: 'Tampilkan di jalan yang tidak teras',
                        maxZoom: 'Render hingga zoom maksimal:',
                        toggleLayerShortcut: 'Alihkan sakelar lapisan untuk menampilkan kecepatan'
                    },
                    btn: {
                        updateSettingsTab: 'Perbarui Menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME dimuat dan siap. Memulai skrip...',
                        waitingWme: 'Menunggu WME untuk siap...',
                        wmeReadyStartingPlugin: 'WME siap. Menyiapkan lapisan khusus...',
                        shortSleep: 'Menunggu sekitar 1 detik agar semuanya dimuat...',
                        updateMapDisplay: 'Memperbarui tampilan peta...',
                        maxZoomExceeded: 'Zoom maksimal terlampaui. Kecepatan tidak akan ditampilkan.',
                        noneSegment: 'Tidak ada segmen yang ditemukan.',
                        numSegmentsLoaded: 'Jumlah segmen yang dimuat:',
                        attributesNotFound: 'Atribut tidak ditemukan atau hilang di segmen',
                        disallowedSegment: 'Segmen jenis ini tidak boleh dimuat.',
                        invalidGeometry: 'Geometri tidak valid di segmen:',
                        updateMapDisplayFinished: 'Pembaruan selesai.',
                        shortCutDialogNotFound: 'Tidak dapat menemukan dialog pintasan keyboard. Mencoba lagi...',
                        houseNumberCheckboxNotFound: 'Checkbox "Nomor Rumah" tidak ditemukan. Mencoba lagi...',
                        scriptsTabNotFound: 'Tab skrip tidak ditemukan. Mencoba lagi...',
                        settingsTabAdded: 'Tab pengaturan ditambahkan.',
                        speedLayer: 'Lapisan Kecepatan',
                        opacityUpdated: 'Opasitas ikon diatur ke',
                        updatingSettingsTab: 'Memperbarui tab pengaturan...',
                        languageDefined: 'Bahasa telah didefinisikan.',
                        checkingVersion: 'Memeriksa versi plugin.'
                    }
                };
            
                break;
            
            case 'it':
                // Italian
                this.spdTranslations = {
                    name: 'Visualizzazione della velocità',
                    settingTabName: 'Impostazioni visualizzazione della velocità',
                    enabled: 'abilitato',
                    disabled: 'disabilitato',
                    zoomOut: 'Zoom indietro',
                    zoomIn: 'Zoom avanti',
                    changelog: 'Registro modifiche',
                    changelogMessage: '<h6>Novità:</h6><ul style="margin-bottom: 10px"><li>Lo script ora mostra la velocità in <strong>mph</strong>. Basta cambiare l\'unità nelle impostazioni di WME.</li></ul><h6>Bug Fixes:</h6><ul><li>È stato migliorato il metodo per ottenere la velocità dagli attributi del segmento.</li></ul>',
                    close: 'Chiudi',
                    viewScript: 'Vedi Script',
                    showDialog: 'Mostra finestra modale',
                    title: {
                        general: 'Generale',
                        showOnRoadType: 'Mostra su tipo di strada:'
                    },
                    label: {
                        displaySpeeds: 'Mostra velocità',
                        showNoSpeed: 'Mostra su segmenti senza velocità',
                        showOnRoundabout: 'Mostra sulle rotonde',
                        showOnUnpaved: 'Mostra sulla strada non pavimentata',
                        maxZoom: 'Renderizza fino allo zoom:',
                        toggleLayerShortcut: 'Attiva/disattiva il selettore del livello per visualizzare la velocità'
                    },
                    btn: {
                        updateSettingsTab: 'Aggiorna menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME caricato e pronto. Avvio lo script...',
                        waitingWme: 'In attesa che WME sia pronto...',
                        wmeReadyStartingPlugin: 'WME pronto. Impostando layer personalizzato...',
                        shortSleep: 'Attendere circa 1 secondo affinché tutto venga caricato...',
                        updateMapDisplay: 'Aggiornando la visualizzazione della mappa...',
                        maxZoomExceeded: 'Zoom massimo superato. La velocità non verrà visualizzata.',
                        noneSegment: 'Nessun segmento trovato.',
                        numSegmentsLoaded: 'Numero totale di segmenti caricati:',
                        attributesNotFound: 'Impossibile trovare gli attributi o mancano nel segmento',
                        disallowedSegment: 'Questo tipo di segmento non deve essere caricato.',
                        invalidGeometry: 'Geometria non valida nel segmento:',
                        updateMapDisplayFinished: 'Aggiornamento completato.',
                        shortCutDialogNotFound: 'Impossibile trovare la finestra di dialogo delle scorciatoie da tastiera. Riprovo...',
                        houseNumberCheckboxNotFound: 'Non trovata la casella di selezione "Numeri civici". Riprovo...',
                        scriptsTabNotFound: 'Non trovata la scheda degli script. Riprovo...',
                        settingsTabAdded: 'Scheda impostazioni aggiunta.',
                        speedLayer: 'Layer velocità',
                        opacityUpdated: 'Opacità delle icone impostata su',
                        updatingSettingsTab: 'Aggiornamento scheda impostazioni...',
                        languageDefined: 'Lingue definite.',
                        checkingVersion: 'Verifica versione del plugin.'
                    }
                };
            
                break;

            case 'ja':
                // Japanese
                this.spdTranslations = {
                    name: '速度表示',
                    settingTabName: '速度表示設定',
                    enabled: '有効',
                    disabled: '無効',
                    zoomOut: 'ズームアウト',
                    zoomIn: 'ズームイン',
                    changelog: '変更履歴',
                    changelogMessage: '<h6>新機能:</h6><ul style="margin-bottom: 10px"><li>スクリプトが現在、速度を<strong>mph</strong>で表示します。WMEの設定で単位を変更してください。</li></ul><h6>バグ修正:</h6><ul><li>セグメントの属性から速度を取得する方法が改善されました。</li></ul>',
                    close: '閉じる',
                    viewScript: 'スクリプトを表示',
                    showDialog: 'モーダルを表示',
                    title: {
                        general: '一般',
                        showOnRoadType: '次のタイプのセグメントに表示:'
                    },
                    label: {
                        displaySpeeds: '速度を表示',
                        showNoSpeed: '速度なしのセグメントに表示',
                        showOnRoundabout: 'ラウンドアバウトに表示',
                        showOnUnpaved: '未舗装道路に表示',
                        maxZoom: '最大ズームレベルまでレンダリング:',
                        toggleLayerShortcut: 'レイヤースイッチャー速度表示を切り替える'
                    },
                    btn: {
                        updateSettingsTab: 'メニューを更新',
                    },
                    log: {
                        wmeReadyStartScript: 'WMEが読み込まれ、準備が整いました。スクリプトを開始します...',
                        waitingWme: 'WMEの準備が整うのを待っています...',
                        wmeReadyStartingPlugin: 'WMEが準備完了。カスタムレイヤーを設定中...',
                        shortSleep: 'すべての読み込みが完了するまで約1秒間待機...',
                        updateMapDisplay: '地図表示を更新しています...',
                        maxZoomExceeded: '最大ズームを超えました。速度は表示されません。',
                        noneSegment: 'セグメントが見つかりませんでした。',
                        numSegmentsLoaded: '読み込まれたセグメントの数:',
                        attributesNotFound: 'セグメントの属性が見つかりませんまたは不足しています',
                        disallowedSegment: 'このタイプのセグメントは読み込むべきではありません。',
                        invalidGeometry: 'セグメントのジオメトリが無効です:',
                        updateMapDisplayFinished: '更新が完了しました。',
                        shortCutDialogNotFound: 'キーボードショートカットのダイアログが見つかりませんでした。再試行中...',
                        houseNumberCheckboxNotFound: '「家番号」のチェックボックスが見つかりませんでした。再試行します...',
                        scriptsTabNotFound: 'スクリプトタブが見つかりませんでした。再試行します...',
                        settingsTabAdded: '設定タブが追加されました。',
                        speedLayer: '速度レイヤー',
                        opacityUpdated: 'アイコンの透明度が次のように更新されました:',
                        updatingSettingsTab: '設定タブを更新しています...',
                        languageDefined: '言語が設定されました。',
                        checkingVersion: 'プラグインのバージョンを確認しています。'
                    }
                };
            
                break;
            
            case 'ka':
                // Georgian
                this.spdTranslations = {
                    name: 'მოჩვენების სიჩქარე',
                    settingTabName: 'მოჩვენების სიჩქარის პარამეტრები',
                    enabled: 'ჩართულია',
                    disabled: 'გამორთულია',
                    zoomOut: 'დისტანცირება',
                    zoomIn: 'დაახლოვება',
                    changelog: 'ცვლილებების ისტორია',
                    changelogMessage: '<h6>ახალობები:</h6><ul style="margin-bottom: 10px"><li>ახლა სკრიპტი აჩვენებს სიჩქარეს <strong>mph</strong>-ში. უბრალოდ შეცვალეთ ერთეული WME-ის პარამეტრებში.</li></ul><h6>ბაგების შესწორება:</h6><ul><li>სიჩქარის მიღების მეთოდი გაუმჯობესდა სეგმენტის ატრიბუტებიდან.</li></ul>',
                    close: 'დახურვა',
                    viewScript: 'სკრიპტის ნახვა',
                    showDialog: 'მოდალური ფანჯრის ჩვენება',
                    title: {
                        general: 'ზოგადი',
                        showOnRoadType: 'მოჩვენება შემდეგი ტიპის მონაკვეთებზე:'
                    },
                    label: {
                        displaySpeeds: 'მოჩვენება სიჩქარე',
                        showNoSpeed: 'მოჩვენება სიჩქარის გარეშე მონაკვეთებზე',
                        showOnRoundabout: 'მოჩვენება როტონდაზე',
                        showOnUnpaved: 'აჩვენე უგრუნტო გზაზე',
                        maxZoom: 'გახსენით მაქსიმალური ზუმი:',
                        toggleLayerShortcut: 'შედეგის სიჩქარის საჩვენებელი ფენის გადამრთველი'
                    },
                    btn: {
                        updateSettingsTab: 'განახლება მენიუ',
                    },
                    log: {
                        wmeReadyStartScript: 'WME დამუხტულია და მზადაა. სკრიპტის დაწყება...',
                        waitingWme: 'WME-ის მოლოდინი...',
                        wmeReadyStartingPlugin: 'WME მზადაა. პერსონალური ფენების კონფიგურაცია...',
                        shortSleep: 'მოლოდინი დაახლოებით 1 წამით, რომ ყველაფერი დატვირთული იყოს...',
                        updateMapDisplay: 'რუკის ჩვენების განახლება...',
                        maxZoomExceeded: 'მაქსიმალური ზუმი გადააჭარბა. სიჩქარე არ გამოიჩენს.',
                        noneSegment: 'არ არის მონაკვეთები.',
                        numSegmentsLoaded: 'დატვირთული მონაკვეთების რაოდენობა:',
                        attributesNotFound: 'მონაკვეთებში ვერ მოიძებნა ატრიბუტები ან ისინი აკლია',
                        disallowedSegment: 'ეს ტიპის მონაკვეთები არ უნდა ჩაიტვირთოს.',
                        invalidGeometry: 'გეომეტრია არასწორია მონაკვეთზე:',
                        updateMapDisplayFinished: 'განახლება დასრულდა.',
                        shortCutDialogNotFound: 'ვერ მოიძებნა კლავიატურის მალსახმობების დიალოგი. ხელახლა ცდა...',
                        houseNumberCheckboxNotFound: '„სახლების ნომრის“ საკონტროლო ჩხიკი არ მოიძებნა. ვცდილობთ თავიდან...',
                        scriptsTabNotFound: 'სკრიპტების ჩანართი ვერ მოიძებნა. ვცდილობთ თავიდან...',
                        settingsTabAdded: 'პარამეტრების ჩანართი დაემატა.',
                        speedLayer: 'სიჩქარის ფენა',
                        opacityUpdated: 'ხატების გამჭვირვალობა განახლდა:',
                        updatingSettingsTab: 'პარამეტრების ჩანართის განახლება...',
                        languageDefined: 'ენის გადამზადება.',
                        checkingVersion: 'ამოწმდება პლაგინის ვერსია.'
                    }
                };
            
                break;

            case 'ko':
                // Korean
                this.spdTranslations = {
                    name: '속도 표시',
                    settingTabName: '속도 표시 설정',
                    enabled: '활성화됨',
                    disabled: '비활성화됨',
                    zoomOut: '축소',
                    zoomIn: '확대',
                    changelog: '변경 로그',
                    changelogMessage: '<h6>새로운 기능:</h6><ul style="margin-bottom: 10px"><li>이제 스크립트가 <strong>mph</strong> 단위로 속도를 표시합니다. WME 설정에서 단위를 변경하세요.</li></ul><h6>버그 수정:</h6><ul><li>세그먼트 속성에서 속도를 가져오는 방법이 개선되었습니다.</li></ul>',
                    close: '닫기',
                    viewScript: '스크립트 보기',
                    showDialog: '모달 표시',
                    title: {
                        general: '일반',
                        showOnRoadType: '다음 도로 유형에 표시:'
                    },
                    label: {
                        displaySpeeds: '속도 표시',
                        showNoSpeed: '속도가 없는 구간에 표시',
                        showOnRoundabout: '회전 교차로에 표시',
                        showOnUnpaved: '포장되지 않은 도로에 표시',
                        maxZoom: '최대 확대 수준까지 렌더링:',
                        toggleLayerShortcut: '레이어 전환기 속도 표시 전환'
                    },
                    btn: {
                        updateSettingsTab: '메뉴 업데이트',
                    },
                    log: {
                        wmeReadyStartScript: 'WME가 로드되고 준비되었습니다. 스크립트를 시작합니다...',
                        waitingWme: 'WME가 준비되기를 기다리고 있습니다...',
                        wmeReadyStartingPlugin: 'WME가 준비되었습니다. 사용자 정의 레이어 설정 중...',
                        shortSleep: '모든 것이 로드될 때까지 약 1초 기다립니다...',
                        updateMapDisplay: '지도 표시 업데이트 중...',
                        maxZoomExceeded: '최대 확대 수준을 초과했습니다. 속도가 표시되지 않습니다.',
                        noneSegment: '세그먼트가 없습니다.',
                        numSegmentsLoaded: '로드된 세그먼트의 총 수:',
                        attributesNotFound: '세그먼트에서 속성을 찾을 수 없거나 누락됨',
                        disallowedSegment: '이 유형의 세그먼트는 로드되어서는 안 됩니다.',
                        invalidGeometry: '세그먼트에 유효하지 않은 기하학이 있습니다:',
                        updateMapDisplayFinished: '업데이트 완료.',
                        shortCutDialogNotFound: '키보드 단축키 대화 상자를 찾을 수 없습니다. 다시 시도 중...',
                        houseNumberCheckboxNotFound: '"집 번호" 체크박스를 찾을 수 없습니다. 다시 시도 중...',
                        scriptsTabNotFound: '스크립트 탭을 찾을 수 없습니다. 다시 시도 중...',
                        settingsTabAdded: '설정 탭이 추가되었습니다.',
                        speedLayer: '속도 레이어',
                        opacityUpdated: '아이콘 불투명도가 설정되었습니다:',
                        updatingSettingsTab: '설정 탭을 업데이트 중...',
                        languageDefined: '언어 정의됨.',
                        checkingVersion: '플러그인 버전 확인 중.'
                    }
                };
            
                break;

            case 'lt':
                // Lithuanian
                this.spdTranslations = {
                    name: 'Greitį rodymas',
                    settingTabName: 'Greitį rodymo nustatymai',
                    enabled: 'Įjungta',
                    disabled: 'Išjungta',
                    zoomOut: 'Toliau',
                    zoomIn: 'Artimiau',
                    changelog: 'Pakeitimų registras',
                    changelogMessage: '<h6>Kas naujo:</h6><ul style="margin-bottom: 10px"><li>Dabar skriptas rodo greitį <strong>mph</strong> vienetais. Tiesiog pakeiskite vienetą WME nustatymuose.</li></ul><h6>Klaidų taisymas:</h6><ul><li>Pagerinta greičio gavimo iš segmento atributų metodika.</li></ul>',
                    close: 'Uždaryti',
                    viewScript: 'Peržiūrėti scenarijų',
                    showDialog: 'Rodyti modalą',
                    title: {
                        general: 'Bendrieji',
                        showOnRoadType: 'Rodyti šiuose kelio segmentuose:'
                    },
                    label: {
                        displaySpeeds: 'Rodyti greičius',
                        showNoSpeed: 'Rodyti segmentuose be greičio',
                        showOnRoundabout: 'Rodyti žiede',
                        showOnUnpaved: 'Rodyti nepaviršiniuose keliuose',
                        maxZoom: 'Rodymas iki priartinimo lygio:',
                        toggleLayerShortcut: 'Perjungti greičio sluoksnį'
                    },
                    btn: {
                        updateSettingsTab: 'Atnaujinti meniu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME įkeltas ir paruoštas. Paleidžiamas scenarijus...',
                        waitingWme: 'Laukiama, kol WME bus paruoštas...',
                        wmeReadyStartingPlugin: 'WME paruoštas. Nustatoma pasirinktinių sluoksnių...',
                        shortSleep: 'Laukiama kelias sekundes, kad viskas užsikrautų...',
                        updateMapDisplay: 'Atnaujinama žemėlapio rodymas...',
                        maxZoomExceeded: 'Peržengtas didžiausias priartinimo lygis. Greitis nerodomas.',
                        noneSegment: 'Nepavyko rasti segmento.',
                        numSegmentsLoaded: 'Iš viso įkeltų segmentų:',
                        attributesNotFound: 'Nepavyko rasti atributų arba jie yra trūkstami šiame segmente',
                        disallowedSegment: 'Šio tipo segmentas neturėtų būti įkeltas.',
                        invalidGeometry: 'Netinkama geometrija segmente:',
                        updateMapDisplayFinished: 'Atnaujinimas baigtas.',
                        shortCutDialogNotFound: 'Nepavyko rasti spartaus klavišo modalą. Bandome dar kartą...',
                        houseNumberCheckboxNotFound: 'Nepavyko rasti "Namų numeriai" žymės. Bandome dar kartą...',
                        scriptsTabNotFound: 'Nepavyko rasti scenarijų skirtuko. Bandome dar kartą...',
                        settingsTabAdded: 'Nustatymų skirtukas pridėtas.',
                        speedLayer: 'Greičio sluoksnis',
                        opacityUpdated: 'Piktogramų skaidrumas nustatytas į',
                        updatingSettingsTab: 'Atnaujinami nustatymų skirtukai...',
                        languageDefined: 'Kalbos nustatytos.',
                        checkingVersion: 'Tikrinama versija.'
                    }
                };
            
                break;
                
            case 'lv':
                // Latvian
                this.spdTranslations = {
                    name: 'Ātruma attēlojums',
                    settingTabName: 'Ātruma attēlojuma iestatījumi',
                    enabled: 'Ieslēgts',
                    disabled: 'Izslēgts',
                    zoomOut: 'Tālāk',
                    zoomIn: 'Tuvāk',
                    changelog: 'Izmaiņu žurnāls',
                    changelogMessage: '<h6>Jaunumi:</h6><ul style="margin-bottom: 10px"><li>Tagad skripts parāda ātrumu <strong>mph</strong> vienībās. Vienkārši mainiet vienību WME iestatījumos.</li></ul><h6>Kļūdu labojumi:</h6><ul><li>Uzlabota ātruma iegūšana no segmenta atribūtiem.</li></ul>',
                    close: 'Aizvērt',
                    viewScript: 'Skatīt skriptu',
                    showDialog: 'Parādīt modāli',
                    title: {
                        general: 'Vispārīgi',
                        showOnRoadType: 'Parādīt šajos ceļa segmentos:'
                    },
                    label: {
                        displaySpeeds: 'Parādīt ātrumus',
                        showNoSpeed: 'Parādīt segmentos bez ātruma',
                        showOnRoundabout: 'Parādīt apļveida krustojumā',
                        showOnUnpaved: 'Parādīt nepavedinātos ceļos',
                        maxZoom: 'Renderēt līdz pieejamajam tālummaiņas līmenim:',
                        toggleLayerShortcut: 'Pārslēgt ātruma slāni'
                    },
                    btn: {
                        updateSettingsTab: 'Atjaunināt izvēlni',
                    },
                    log: {
                        wmeReadyStartScript: 'WME ielādēts un gatavs. Sākam skriptu...',
                        waitingWme: 'Gaida, kamēr WME būs gatavs...',
                        wmeReadyStartingPlugin: 'WME gatavs. Iestatām pielāgotos slāņus...',
                        shortSleep: 'Gaida dažas sekundes, lai viss ielādētos...',
                        updateMapDisplay: 'Atjauninām kartes attēlojumu...',
                        maxZoomExceeded: 'Pārsniegts maksimālais tālummaiņas līmenis. Ātrums netiks attēlots.',
                        noneSegment: 'Nav atrasts segments.',
                        numSegmentsLoaded: 'Kopā ielādēto segmentu:',
                        attributesNotFound: 'Neizdevās atrast atribūtus vai tie nav pieejami segmentā',
                        disallowedSegment: 'Šī veida segments nedrīkst būt ielādēts.',
                        invalidGeometry: 'Nederīga ģeometrija segmentā:',
                        updateMapDisplayFinished: 'Atjauninājums pabeigts.',
                        shortCutDialogNotFound: 'Neizdevās atrast īsinājumtaustiņu modāli. Mēģinām vēlreiz...',
                        houseNumberCheckboxNotFound: 'Neizdevās atrast "Māju numuru" ķeksi. Mēģinām vēlreiz...',
                        scriptsTabNotFound: 'Neizdevās atrast skriptu cilni. Mēģinām vēlreiz...',
                        settingsTabAdded: 'Pievienots iestatījumu cilne.',
                        speedLayer: 'Ātruma slānis',
                        opacityUpdated: 'Ikonu caurspīdīgums ir iestatīts uz',
                        updatingSettingsTab: 'Atjauninām iestatījumu cilnes...',
                        languageDefined: 'Valodas definētas.',
                        checkingVersion: 'Pārbauda spraudņa versiju.'
                    }
                };
            
                break;
            
            case 'ms':
                // Malay
                this.spdTranslations = {
                    name: 'Paparan Kelajuan',
                    settingTabName: 'Tetapan Paparan Kelajuan',
                    enabled: 'didayakan',
                    disabled: 'dinonaktifkan',
                    zoomOut: 'Zum Keluar',
                    zoomIn: 'Zum Masuk',
                    changelog: 'Log Perubahan',
                    changelogMessage: '<h6>Apa yang baru:</h6><ul style="margin-bottom: 10px"><li>Skrip kini memaparkan kelajuan dalam <strong>mph</strong>. Cukup ubah unit dalam tetapan WME.</li></ul><h6>Pembaikan:</h6><ul><li>Kaedah mendapatkan kelajuan daripada atribut segmen telah dipertingkatkan.</li></ul>',
                    close: 'Tutup',
                    viewScript: 'Lihat Skrip',
                    showDialog: 'Tunjukkan modal',
                    title: {
                        general: 'Am',
                        showOnRoadType: 'Tunjukkan pada jenis jalan:'
                    },
                    label: {
                        displaySpeeds: 'Paparkan kelajuan',
                        showNoSpeed: 'Paparkan pada segmen tanpa kelajuan',
                        showOnRoundabout: 'Paparkan pada bulatan jalan',
                        showOnUnpaved: 'Rodyti neasfaltuotame kelyje',
                        maxZoom: 'Render sehingga zum maksima:',
                        toggleLayerShortcut: 'Togol suis lapisan untuk paparan kelajuan'
                    },
                    btn: {
                        updateSettingsTab: 'Kemas kini menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME dimuatkan dan sedia. Memulakan skrip...',
                        waitingWme: 'Menunggu WME untuk bersedia...',
                        wmeReadyStartingPlugin: 'WME telah sedia. Menetapkan lapisan khas...',
                        shortSleep: 'Menunggu lebih kurang 1 saat untuk semua dimuatkan...',
                        updateMapDisplay: 'Mengemas kini paparan peta...',
                        maxZoomExceeded: 'Zum maksimum melebihi had. Kelajuan tidak akan dipaparkan.',
                        noneSegment: 'Tiada segmen dijumpai.',
                        numSegmentsLoaded: 'Jumlah segmen yang dimuatkan:',
                        attributesNotFound: 'Atribut tidak dijumpai atau hilang pada segmen',
                        disallowedSegment: 'Segmen jenis ini tidak dibenarkan dimuatkan.',
                        invalidGeometry: 'Geometri tidak sah pada segmen:',
                        updateMapDisplayFinished: 'Kemaskini selesai.',
                        shortCutDialogNotFound: 'Tidak dapat mencari dialog pintasan papan kekunci. Mencuba semula...',
                        houseNumberCheckboxNotFound: 'Checkbox "Nombor Rumah" tidak dijumpai. Mencuba semula...',
                        scriptsTabNotFound: 'Tab skrip tidak dijumpai. Mencuba semula...',
                        settingsTabAdded: 'Tab tetapan ditambah.',
                        speedLayer: 'Lapisan kelajuan',
                        opacityUpdated: 'Keburaman ikon disetkan ke',
                        updatingSettingsTab: 'Mengemas kini tab tetapan...',
                        languageDefined: 'Bahasa ditentukan.',
                        checkingVersion: 'Memeriksa versi plugin.'
                    }
                };
            
                break;
            
            case 'nl':
                // Dutch
                this.spdTranslations = {
                    name: 'Snelheidsweergave',
                    settingTabName: 'Instellingen voor snelheidsweergave',
                    enabled: 'ingeschakeld',
                    disabled: 'uitgeschakeld',
                    zoomOut: 'Uitzoomen',
                    zoomIn: 'Inzoomen',
                    changelog: 'Wijzigingslog',
                    changelogMessage: '<h6>Wat is nieuw:</h6><ul style="margin-bottom: 10px"><li>Het script toont nu de snelheid in <strong>mph</strong>. Verander eenvoudig de eenheid in de WME-instellingen.</li></ul><h6>Bugfixes:</h6><ul><li>De manier waarop de snelheid uit segmentattributen wordt verkregen, is verbeterd.</li></ul>',
                    close: 'Sluiten',
                    viewScript: 'Script bekijken',
                    showDialog: 'Modaal venster tonen',
                    title: {
                        general: 'Algemeen',
                        showOnRoadType: 'Weergeven op wegtype:'
                    },
                    label: {
                        displaySpeeds: 'Toon snelheden',
                        showNoSpeed: 'Toon op segmenten zonder snelheid',
                        showOnRoundabout: 'Toon op rotondes',
                        showOnUnpaved: 'Toon op onbeschikte wegen',
                        maxZoom: 'Renderen tot zoomniveau:',
                        toggleLayerShortcut: 'Schakel laagwisselaar snelheidsoverzicht in'
                    },
                    btn: {
                        updateSettingsTab: 'Menu bijwerken',
                    },
                    log: {
                        wmeReadyStartScript: 'WME geladen en klaar. Starten van script...',
                        waitingWme: 'Wachten totdat WME klaar is...',
                        wmeReadyStartingPlugin: 'WME is klaar. Aanpassen van aangepaste laag...',
                        shortSleep: 'Wachten ongeveer 1 seconde totdat alles geladen is...',
                        updateMapDisplay: 'Bijwerken van de kaartweergave...',
                        maxZoomExceeded: 'Maximale zoom overschreden. Snelheid wordt niet weergegeven.',
                        noneSegment: 'Geen segmenten gevonden.',
                        numSegmentsLoaded: 'Totaal geladen segmenten:',
                        attributesNotFound: 'Kan attributen niet vinden of ze ontbreken in het segment',
                        disallowedSegment: 'Dit segmenttype mag niet worden geladen.',
                        invalidGeometry: 'Ongeldige geometrie op segment:',
                        updateMapDisplayFinished: 'Bijwerken voltooid.',
                        shortCutDialogNotFound: 'Kan het dialoogvenster voor sneltoetsen niet vinden. Opnieuw proberen...',
                        houseNumberCheckboxNotFound: 'De checkbox "Huisnummers" werd niet gevonden. Probeer opnieuw...',
                        scriptsTabNotFound: 'Het scripts-tabblad werd niet gevonden. Probeer opnieuw...',
                        settingsTabAdded: 'Instellingen tabblad toegevoegd.',
                        speedLayer: 'Snelheidslaag',
                        opacityUpdated: 'Doorzichtigheid van iconen ingesteld op',
                        updatingSettingsTab: 'Instellingen tabblad wordt bijgewerkt...',
                        languageDefined: 'Talen gedefinieerd.',
                        checkingVersion: 'Versie van de plugin controleren.'
                    }
                };
            
                break;

            case 'no':
                // Norwegian
                this.spdTranslations = {
                    name: 'Hastighetsvisning',
                    settingTabName: 'Innstillinger for hastighetsvisning',
                    enabled: 'aktivert',
                    disabled: 'deaktivert',
                    zoomOut: 'Zoom ut',
                    zoomIn: 'Zoom inn',
                    changelog: 'Endringslogg',
                    changelogMessage: '<h6>Hva er nytt:</h6><ul style="margin-bottom: 10px"><li>Scriptet viser nå hastigheten i <strong>mph</strong>. Endre enheten i WME-innstillingene.</li></ul><h6>Feilrettinger:</h6><ul><li>Metoden for å hente hastigheten fra segmentattributter er forbedret.</li></ul>',
                    close: 'Lukk',
                    viewScript: 'Vis skript',
                    showDialog: 'Vis modalvindu',
                    title: {
                        general: 'Generelt',
                        showOnRoadType: 'Vis på segmenter av typen:'
                    },
                    label: {
                        displaySpeeds: 'Vis hastigheter',
                        showNoSpeed: 'Vis på segmenter uten hastighet',
                        showOnRoundabout: 'Vis på rundkjøring',
                        showOnUnpaved: 'Vis på ubelagt vei',
                        maxZoom: 'Render til maks zoom nivå:',
                        toggleLayerShortcut: 'Bytt lagbryter hastighetsvisning'
                    },
                    btn: {
                        updateSettingsTab: 'Oppdater menyen',
                    },
                    log: {
                        wmeReadyStartScript: 'WME lastet og klar. Starter skript...',
                        waitingWme: 'Venter på at WME skal bli klart...',
                        wmeReadyStartingPlugin: 'WME er klart. Setter opp tilpasset lag...',
                        shortSleep: 'Venter i ca. 1 sekund for at alt skal lastes...',
                        updateMapDisplay: 'Oppdaterer kartvisning...',
                        maxZoomExceeded: 'Maks zoomnivå overskredet. Ingen hastighet vil bli vist.',
                        noneSegment: 'Fant ingen segmenter.',
                        numSegmentsLoaded: 'Totalt antall lastede segmenter:',
                        attributesNotFound: 'Fant ikke attributtene eller de mangler på segmentet',
                        disallowedSegment: 'Denne typen segment bør ikke lastes.',
                        invalidGeometry: 'Ugyldig geometri på segmentet:',
                        updateMapDisplayFinished: 'Oppdatering fullført.',
                        shortCutDialogNotFound: 'Kunne ikke finne dialogboksen for tastatursnarveier. Prøver igjen...',
                        houseNumberCheckboxNotFound: 'Finnes ikke avmerkingsboksen "Husnummer". Prøver igjen...',
                        scriptsTabNotFound: 'Fant ikke skriptfanen. Prøver igjen...',
                        settingsTabAdded: 'Innstillingsfanen er lagt til.',
                        speedLayer: 'Hastighetslag',
                        opacityUpdated: 'Ikonens opasitet er oppdatert til',
                        updatingSettingsTab: 'Oppdaterer innstillingsfanen...',
                        languageDefined: 'Språk definert.',
                        checkingVersion: 'Sjekker plugin-versjon.'
                    }
                };
            
                break;

            case 'pl':
                // Polish
                this.spdTranslations = {
                    name: 'Wyświetlanie prędkości',
                    settingTabName: 'Ustawienia wyświetlania prędkości',
                    enabled: 'włączona',
                    disabled: 'wyłączona',
                    zoomOut: 'Oddal',
                    zoomIn: 'Przybliż',
                    changelog: 'Dziennik zmian',
                    changelogMessage: '<h6>Nowości:</h6><ul style="margin-bottom: 10px"><li>Skrypt teraz wyświetla prędkość w <strong>mph</strong>. Wystarczy zmienić jednostkę w ustawieniach WME.</li></ul><h6>Poprawki:</h6><ul><li>Poprawiona metoda uzyskiwania prędkości z atrybutów segmentu.</li></ul>',
                    close: 'Zamknij',
                    viewScript: 'Pokaż skrypt',
                    showDialog: 'Pokaż okno modalne',
                    title: {
                        general: 'Ogólne',
                        showOnRoadType: 'Wyświetl na segmentach typu:'
                    },
                    label: {
                        displaySpeeds: 'Wyświetlaj prędkości',
                        showNoSpeed: 'Pokaż na segmencie bez prędkości',
                        showOnRoundabout: 'Pokaż na rondzie',
                        showOnUnpaved: 'Pokaż na nieodkrytych drogach',
                        maxZoom: 'Renderuj do poziomu zoomu:',
                        toggleLayerShortcut: 'Przełącz przełącznik warstwy wyświetlania prędkości'
                    },
                    btn: {
                        updateSettingsTab: 'Zaktualizuj menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME załadowane i gotowe. Uruchamiam skrypt...',
                        waitingWme: 'Czekam, aż WME będzie gotowe...',
                        wmeReadyStartingPlugin: 'WME jest gotowe. Konfigurowanie warstwy niestandardowej...',
                        shortSleep: 'Czekam około 1 sekundy, aż wszystko się załaduje...',
                        updateMapDisplay: 'Aktualizuję wyświetlanie na mapie...',
                        maxZoomExceeded: 'Przekroczono maksymalny poziom zoomu. Prędkość nie będzie wyświetlana.',
                        noneSegment: 'Nie znaleziono segmentów.',
                        numSegmentsLoaded: 'Łączna liczba załadowanych segmentów:',
                        attributesNotFound: 'Nie można znaleźć atrybutów lub są one brakujące w segmencie',
                        disallowedSegment: 'Tego typu segment nie powinien być ładowany.',
                        invalidGeometry: 'Nieprawidłowa geometria w segmencie:',
                        updateMapDisplayFinished: 'Aktualizacja zakończona.',
                        shortCutDialogNotFound: 'Nie można znaleźć okna dialogowego skrótów klawiaturowych. Ponowna próba...',
                        houseNumberCheckboxNotFound: 'Nie znaleziono pola wyboru „Numery domów”. Próbuję ponownie...',
                        scriptsTabNotFound: 'Nie znaleziono zakładki skryptów. Próbuję ponownie...',
                        settingsTabAdded: 'Dodano kartę ustawień.',
                        speedLayer: 'Warstwa prędkości',
                        opacityUpdated: 'Przezroczystość ikon została ustawiona na',
                        updatingSettingsTab: 'Aktualizowanie zakładki ustawień...',
                        languageDefined: 'Języki zdefiniowane.',
                        checkingVersion: 'Sprawdzanie wersji wtyczki.',
                    }
                };
                
                break;

            case 'pt-BR':
                // Portuguese (Brazil)
                this.spdTranslations = {
                    name: 'Exibição de Velocidade',
                    settingTabName: 'Configurações de Exibição de Velocidade',
                    enabled: 'atiavada',
                    disabled: 'desativada',
                    zoomOut: 'Mais afastado',
                    zoomIn: 'Mais aproximado',
                    changelog: 'Registro de alterações',
                    changelogMessage: '<h6>Novidades:</h6><ul style="margin-bottom: 10px"><li>Agora o script exibe a velocidade em <strong>mph</strong>. Para isso, basta mudar a unidade nas configurações do WME.</li></ul><h6>Correções:</h6><ul><li>Melhorado a forma como obtem a velocidade dos atributos do segmento.</li></ul>',
                    close: 'Fechar',
                    viewScript: 'Ver script',
                    showDialog: 'Exibir modal',
                    title: {
                        general: 'Geral',
                        showOnRoadType: 'Exibir nos seguimentos do tipo:'
                    },
                    label: {
                        displaySpeeds: 'Exibir velocidades',
                        showNoSpeed: 'Exibir em seguimento 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'
                    },
                    btn: {
                        updateSettingsTab: 'Atualizar menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME carregado e pronto. Iniciando script...',
                        waitingWme: 'Aguardando o WME estar pronto...',
                        wmeReadyStartingPlugin: 'WME está pronto. Configurando camada personalizada...',
                        shortSleep: 'Aguardando uns 1 segundo para tudo carregar...',
                        updateMapDisplay: 'Atualizando display no mapa...',
                        maxZoomExceeded: 'Zoom máximo excedido. Nenhuma velocidade será exibida.',
                        noneSegment: 'Nenhum segmento encontrado.',
                        numSegmentsLoaded: 'Total de segmentos carregados:',
                        attributesNotFound: 'Não foi possível encontrar os atributos ou estão ausentes no segmento',
                        disallowedSegment: 'Este tipo de seguimento não deve ser carregado.',
                        invalidGeometry: 'Geometria inválida no seguimento:',
                        updateMapDisplayFinished: 'Atualização concluída.',
                        shortCutDialogNotFound: 'Não foi possível encontrar o modal de atalhos do teclado. Tentando novamente...',
                        houseNumberCheckboxNotFound: 'O checkbox "Números das Casas" não foi encontrado. Tentando novamente...',
                        scriptsTabNotFound: 'Painel de scripts não encontrado. Tentando novamente...',
                        settingsTabAdded: 'Aba de configurações adicionada.',
                        speedLayer: 'Camada de velocidade',
                        opacityUpdated: 'Opacidade dos ícones ajustada para',
                        updatingSettingsTab: 'Atualizando aba de configurações...',
                        languageDefined: 'Idiomas definidos.',
                        checkingVersion: 'Verificando a versão do plugin.'
                    }
                };

                break;

            case 'pt-PT':
                // Portuguese (Portugal)
                this.spdTranslations = {
                    name: 'Exibição de Velocidade',
                    settingTabName: 'Configurações de Exibição de Velocidade',
                    enabled: 'ativado',
                    disabled: 'desativado',
                    zoomOut: 'Mais afastado',
                    zoomIn: 'Mais próximo',
                    changelog: 'Registro de alterações',
                    changelogMessage: '<h6>Novidades:</h6><ul style="margin-bottom: 10px"><li>Agora o script exibe a velocidade em <strong>mph</strong>. Para isso, basta mudar a unidade nas configurações do WME.</li></ul><h6>Correções:</h6><ul><li>Melhorado a forma como obtem a velocidade dos atributos do segmento.</li></ul>',
                    close: 'Fechar',
                    viewScript: 'Ver script',
                    showDialog: 'Exibir modal',
                    title: {
                        general: 'Geral',
                        showOnRoadType: 'Exibir nos segmentos do tipo:'
                    },
                    label: {
                        displaySpeeds: 'Exibir velocidades',
                        showNoSpeed: 'Exibir em segmentos sem velocidade',
                        showOnRoundabout: 'Exibir em rotatórias',
                        showOnUnpaved: 'Exibir em via não pavimentada',
                        maxZoom: 'Renderizar até o nível de zoom máximo:',
                        toggleLayerShortcut: 'Alternar o interruptor de camada para mostrar a velocidade'
                    },
                    btn: {
                        updateSettingsTab: 'Atualizar menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME carregado e pronto. Iniciando script...',
                        waitingWme: 'Aguardando o WME estar pronto...',
                        wmeReadyStartingPlugin: 'WME está pronto. Configurando camada personalizada...',
                        shortSleep: 'Aguardando cerca de 1 segundo para tudo carregar...',
                        updateMapDisplay: 'Atualizando a exibição no mapa...',
                        maxZoomExceeded: 'Zoom máximo excedido. Nenhuma velocidade será exibida.',
                        noneSegment: 'Nenhum segmento encontrado.',
                        numSegmentsLoaded: 'Total de segmentos carregados:',
                        attributesNotFound: 'Não foi possível encontrar os atributos ou estão ausentes no segmento',
                        disallowedSegment: 'Este tipo de segmento não deve ser carregado.',
                        invalidGeometry: 'Geometria inválida no segmento:',
                        updateMapDisplayFinished: 'Atualização concluída.',
                        shortCutDialogNotFound: 'Não foi possível encontrar a janela de atalhos do teclado. A tentar novamente...',
                        houseNumberCheckboxNotFound: 'A caixa de seleção "Números das Casas" não foi encontrada. Tentando novamente...',
                        scriptsTabNotFound: 'Painel de scripts não encontrado. Tentando novamente...',
                        settingsTabAdded: 'Aba de configurações adicionada.',
                        speedLayer: 'Camada de velocidade',
                        opacityUpdated: 'Opacidade dos ícones ajustada para',
                        updatingSettingsTab: 'Atualizando aba de configurações...',
                        languageDefined: 'Idioma definido.',
                        checkingVersion: 'Verificando a versão do plugin.'
                    }
                };
            
                break;

            case 'ro':
                // Romanian
                this.spdTranslations = {
                    name: 'Afisare viteza',
                    settingTabName: 'Setări Afisare Viteza',
                    enabled: 'activat',
                    disabled: 'dezactivat',
                    zoomOut: 'Zoom iesire',
                    zoomIn: 'Zoom intrare',
                    changelog: 'Jurnal modificari',
                    changelogMessage: '<h6>Noutăți:</h6><ul style="margin-bottom: 10px"><li>Scriptul acum afișează viteza în <strong>mph</strong>. Pur și simplu schimbați unitatea în setările WME.</li></ul><h6>Corecturi:</h6><ul><li>Metoda de obținere a vitezei din atributele segmentului a fost îmbunătățită.</li></ul>',
                    close: 'Închide',
                    viewScript: 'Vezi script',
                    showDialog: 'Afișează fereastra modală',
                    title: {
                        general: 'General',
                        showOnRoadType: 'Afișează pe tipuri de drum:'
                    },
                    label: {
                        displaySpeeds: 'Afișează viteze',
                        showNoSpeed: 'Afișează pe segmente fără viteză',
                        showOnRoundabout: 'Afișează pe sensuri giratorii',
                        showOnUnpaved: 'Afișează pe drum nepavat',
                        maxZoom: 'Renderizează până la zoom maxim:',
                        toggleLayerShortcut: 'Comuta comutatorul de strat pentru a afișa viteza'
                    },
                    btn: {
                        updateSettingsTab: 'Actualizează meniul',
                    },
                    log: {
                        wmeReadyStartScript: 'WME încărcat și gata. Pornesc scriptul...',
                        waitingWme: 'Aștept ca WME să fie gata...',
                        wmeReadyStartingPlugin: 'WME este gata. Setez stratul personalizat...',
                        shortSleep: 'Aștept aproximativ 1 secundă pentru ca totul să se încarce...',
                        updateMapDisplay: 'Actualizez afișarea pe hartă...',
                        maxZoomExceeded: 'Zoom maxim depășit. Viteza nu va fi afișată.',
                        noneSegment: 'Nu au fost găsite segmente.',
                        numSegmentsLoaded: 'Număr total de segmente încărcate:',
                        attributesNotFound: 'Atributele nu au fost găsite sau lipsesc în segment',
                        disallowedSegment: 'Acest tip de segment nu ar trebui să fie încărcat.',
                        invalidGeometry: 'Geometrie invalidă pe segment:',
                        updateMapDisplayFinished: 'Actualizarea a fost finalizată.',
                        shortCutDialogNotFound: 'Nu s-a putut găsi caseta de dialog a comenzilor rapide de la tastatură. Încerc din nou...',
                        houseNumberCheckboxNotFound: 'Checkbox-ul "Numerele caselor" nu a fost găsit. Încerc din nou...',
                        scriptsTabNotFound: 'Tab-ul de scripturi nu a fost găsit. Încerc din nou...',
                        settingsTabAdded: 'Tab-ul de setări a fost adăugat.',
                        speedLayer: 'Strat de viteză',
                        opacityUpdated: 'Opacitatea iconițelor a fost setată la',
                        updatingSettingsTab: 'Actualizare tab de setări...',
                        languageDefined: 'Limbi definite.',
                        checkingVersion: 'Verificare versiune plugin.'
                    }
                };
            
                break;

            case 'ru':
                // Russian
                this.spdTranslations = {
                    name: 'Отображение скорости',
                    settingTabName: 'Настройки отображения скорости',
                    enabled: 'включено',
                    disabled: 'выключено',
                    zoomOut: 'Отдалить',
                    zoomIn: 'Приблизить',
                    changelog: 'Журнал изменений',
                    changelogMessage: '<h6>Что нового:</h6><ul style="margin-bottom: 10px"><li>Теперь скрипт отображает скорость в <strong>mph</strong>. Просто измените единицу измерения в настройках WME.</li></ul><h6>Исправления:</h6><ul><li>Улучшен метод получения скорости из атрибутов сегмента.</li></ul>',
                    close: 'Закрыть',
                    viewScript: 'Просмотреть скрипт',
                    showDialog: 'Показать модальное окно',
                    title: {
                        general: 'Общие',
                        showOnRoadType: 'Отображать на сегментах типа:'
                    },
                    label: {
                        displaySpeeds: 'Отображать скорости',
                        showNoSpeed: 'Показывать на сегменте без скорости',
                        showOnRoundabout: 'Показывать на круговом движении',
                        showOnUnpaved: 'Показать на грунтовой дороге',
                        maxZoom: 'Отображать до уровня зума:',
                        toggleLayerShortcut: 'Переключить переключатель слоя для отображения скорости'
                    },
                    btn: {
                        updateSettingsTab: 'Обновить меню',
                    },
                    log: {
                        wmeReadyStartScript: 'WME загружен и готов. Запуск скрипта...',
                        waitingWme: 'Ожидание готовности WME...',
                        wmeReadyStartingPlugin: 'WME готово. Настройка пользовательского слоя...',
                        shortSleep: 'Ожидание около 1 секунды, пока все загрузится...',
                        updateMapDisplay: 'Обновление отображения на карте...',
                        maxZoomExceeded: 'Превышен максимальный уровень зума. Скорость отображаться не будет.',
                        noneSegment: 'Сегменты не найдены.',
                        numSegmentsLoaded: 'Общее количество загруженных сегментов:',
                        attributesNotFound: 'Не удалось найти атрибуты или они отсутствуют в сегменте',
                        disallowedSegment: 'Этот тип сегмента не должен загружаться.',
                        invalidGeometry: 'Неверная геометрия в сегменте:',
                        updateMapDisplayFinished: 'Обновление завершено.',
                        shortCutDialogNotFound: 'Не удалось найти диалоговое окно клавиш быстрого доступа. Повторная попытка...',
                        houseNumberCheckboxNotFound: 'Не найден флажок "Номера домов". Попробую снова...',
                        scriptsTabNotFound: 'Вкладка скриптов не найдена. Попробую снова...',
                        settingsTabAdded: 'Вкладка настроек добавлена.',
                        speedLayer: 'Слой скорости',
                        opacityUpdated: 'Прозрачность значков обновлена до',
                        updatingSettingsTab: 'Обновление вкладки настроек...',
                        languageDefined: 'Языки определены.',
                        checkingVersion: 'Проверка версии плагина.',
                    }
                };
                
                break;
                
            case 'sk':
                // Slovak
                this.spdTranslations = {
                    name: 'Zobrazenie rýchlosti',
                    settingTabName: 'Nastavenia zobrazenia rýchlosti',
                    enabled: 'povolené',
                    disabled: 'zakázané',
                    zoomOut: 'Oddialiť',
                    zoomIn: 'Priblížiť',
                    changelog: 'Záznam zmien',
                    changelogMessage: '<h6>Novinky:</h6><ul style="margin-bottom: 10px"><li>Teraz skript zobrazuje rýchlosť v <strong>mph</strong>. Stačí zmeniť jednotku v nastaveniach WME.</li></ul><h6>Opravy:</h6><ul><li>Vylepšená metóda získavania rýchlosti z atribútov segmentu.</li></ul>',
                    close: 'Zavrieť',
                    viewScript: 'Prezrieť skript',
                    showDialog: 'Zobraziť modálne okno',
                    title: {
                        general: 'Všeobecné',
                        showOnRoadType: 'Zobraziť na type cesty:'
                    },
                    label: {
                        displaySpeeds: 'Zobraziť rýchlosti',
                        showNoSpeed: 'Zobraziť na segmentoch bez rýchlosti',
                        showOnRoundabout: 'Zobraziť na okružnej križovatke',
                        showOnUnpaved: 'Zobraziť na nespevnenej ceste',
                        maxZoom: 'Zobraziť až po maximálne priblíženie:',
                        toggleLayerShortcut: 'Prepínač vrstvy pre zobrazenie rýchlosti'
                    },
                    btn: {
                        updateSettingsTab: 'Aktualizovať menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME načítané a pripravené. Spúšťam skript...',
                        waitingWme: 'Čakám, kým bude WME pripravené...',
                        wmeReadyStartingPlugin: 'WME je pripravené. Nastavujem vlastnú vrstvu...',
                        shortSleep: 'Čakám približne 1 sekundu, kým sa všetko načíta...',
                        updateMapDisplay: 'Aktualizujem zobrazenie mapy...',
                        maxZoomExceeded: 'Maximálne priblíženie bolo prekročené. Rýchlosť sa nebude zobrazovať.',
                        noneSegment: 'Neboli nájdené žiadne segmenty.',
                        numSegmentsLoaded: 'Celkový počet načítaných segmentov:',
                        attributesNotFound: 'Atribúty neboli nájdené alebo chýbajú v segmente',
                        disallowedSegment: 'Tento typ segmentu by nemal byť načítaný.',
                        invalidGeometry: 'Neplatná geometria v segmente:',
                        updateMapDisplayFinished: 'Aktualizácia dokončená.',
                        shortCutDialogNotFound: 'Dialóg klávesových skratiek sa nepodarilo nájsť. Skúšam znova...',
                        houseNumberCheckboxNotFound: 'Zaškrtávacie políčko "Čísla domov" nebolo nájdené. Pokúšam sa znova...',
                        scriptsTabNotFound: 'Záložka skriptov nebola nájdená. Pokúšam sa znova...',
                        settingsTabAdded: 'Pridaná záložka nastavení.',
                        speedLayer: 'Vrstva rýchlosti',
                        opacityUpdated: 'Priehľadnosť ikon nastavená na',
                        updatingSettingsTab: 'Aktualizujem záložku nastavení...',
                        languageDefined: 'Jazyky definované.',
                        checkingVersion: 'Kontrola verzie pluginu.'
                    }
                };
            
                break;

            case 'sl':
                // Slovenian
                this.spdTranslations = {
                    name: 'Prikaz hitrosti',
                    settingTabName: 'Nastavitve prikaza hitrosti',
                    enabled: 'omogočeno',
                    disabled: 'onemogočeno',
                    zoomOut: 'Oddaljiti',
                    zoomIn: 'Povečati',
                    changelog: 'Zapis sprememb',
                    changelogMessage: '<h6>Novosti:</h6><ul style="margin-bottom: 10px"><li>Skript zdaj prikazuje hitrost v <strong>mph</strong>. Enostavno spremenite enoto v nastavitvah WME.</li></ul><h6>Popravki:</h6><ul><li>Izboljšana metoda pridobivanja hitrosti iz atributov segmenta.</li></ul>',
                    close: 'Zapri',
                    viewScript: 'Ogledaj skript',
                    showDialog: 'Prikaži modalno okno',
                    title: {
                        general: 'Splošno',
                        showOnRoadType: 'Prikaz na segmentih tipa:'
                    },
                    label: {
                        displaySpeeds: 'Prikaz hitrosti',
                        showNoSpeed: 'Prikaz na segmentih brez hitrosti',
                        showOnRoundabout: 'Prikaz na krožišču',
                        showOnUnpaved: 'Prikaži na neutrjeni cesti',
                        maxZoom: 'Upodabljanje do največje stopnje povečave:',
                        toggleLayerShortcut: 'Preklopite preklopnik plasti za prikaz hitrosti'
                    },
                    btn: {
                        updateSettingsTab: 'Posodobi meni',
                    },
                    log: {
                        wmeReadyStartScript: 'WME je naložen in pripravljen. Začenjam skripto...',
                        waitingWme: 'Čakam, da se WME pripravi...',
                        wmeReadyStartingPlugin: 'WME je pripravljen. Nastavljam prilagojen sloj...',
                        shortSleep: 'Čakam približno 1 sekundo, da se vse naloži...',
                        updateMapDisplay: 'Posodabljam prikaz na zemljevidu...',
                        maxZoomExceeded: 'Maksimalna stopnja povečave je bila presežena. Hitrost ne bo prikazana.',
                        noneSegment: 'Noben segment ni bil najden.',
                        numSegmentsLoaded: 'Skupno število naloženih segmentov:',
                        attributesNotFound: 'Atributi niso bili najdeni ali manjkajo na segmentu',
                        disallowedSegment: 'Ta vrsta segmenta ne sme biti naložena.',
                        invalidGeometry: 'Neveljavna geometrija na segmentu:',
                        updateMapDisplayFinished: 'Posodobitev zaključena.',
                        shortCutDialogNotFound: 'Ni bilo mogoče najti pogovornega okna bližnjic na tipkovnici. Poskušam znova...',
                        houseNumberCheckboxNotFound: 'Polje za označevanje "Hišne številke" ni bilo najdeno. Poskušam znova...',
                        scriptsTabNotFound: 'Zavihek skriptov ni bil najden. Poskušam znova...',
                        settingsTabAdded: 'Zavihek nastavitev je bil dodan.',
                        speedLayer: 'Sloj hitrosti',
                        opacityUpdated: 'Opacnost ikon je bila posodobljena na',
                        updatingSettingsTab: 'Posodabljam zavihek nastavitev...',
                        languageDefined: 'Jezik je bil določen.',
                        checkingVersion: 'Preverjam različico vtičnika.'
                    }
                };
            
                break;
            
            case 'sv':
                // Swedish
                this.spdTranslations = {
                    name: 'Hastighetsvisning',
                    settingTabName: 'Inställningar för hastighetsvisning',
                    enabled: 'aktiverad',
                    disabled: 'inaktiverad',
                    zoomOut: 'Zooma ut',
                    zoomIn: 'Zooma in',
                    changelog: 'Ändringslogg',
                    changelogMessage: '<h6>Vad är nytt:</h6><ul style="margin-bottom: 10px"><li>Nu visar skriptet hastigheten i <strong>mph</strong>. Ändra helt enkelt enheten i WME-inställningarna.</li></ul><h6>Felfixar:</h6><ul><li>Metoden för att hämta hastigheten från segmentattributen har förbättrats.</li></ul>',
                    close: 'Stäng',
                    viewScript: 'Visa skript',
                    showDialog: 'Visa modal',
                    title: {
                        general: 'Allmänt',
                        showOnRoadType: 'Visa på segment av typen:'
                    },
                    label: {
                        displaySpeeds: 'Visa hastigheter',
                        showNoSpeed: 'Visa på segment utan hastighet',
                        showOnRoundabout: 'Visa på rondell',
                        showOnUnpaved: 'Visa på oändliga väggen',
                        maxZoom: 'Rendera upp till zoom-nivå:',
                        toggleLayerShortcut: 'Växla lageromkopplare för att visa hastighet'
                    },
                    btn: {
                        updateSettingsTab: 'Uppdatera meny',
                    },
                    log: {
                        wmeReadyStartScript: 'WME laddad och redo. Startar skriptet...',
                        waitingWme: 'Väntar på att WME ska bli redo...',
                        wmeReadyStartingPlugin: 'WME är redo. Konfigurerar anpassad lager...',
                        shortSleep: 'Väntar cirka 1 sekund innan allt laddas...',
                        updateMapDisplay: 'Uppdaterar visningen på kartan...',
                        maxZoomExceeded: 'Maximal zoomnivå överskriden. Hastighet visas inte.',
                        noneSegment: 'Inga segment hittades.',
                        numSegmentsLoaded: 'Totalt antal laddade segment:',
                        attributesNotFound: 'Kunde inte hitta attribut eller de saknas i segmentet',
                        disallowedSegment: 'Den här typen av segment ska inte laddas.',
                        invalidGeometry: 'Ogiltig geometri i segmentet:',
                        updateMapDisplayFinished: 'Uppdatering slutförd.',
                        shortCutDialogNotFound: 'Nije moguće pronaći dijalog prečica na tastaturi. Pokušavam ponovo...',
                        houseNumberCheckboxNotFound: 'Checkboxen "Husnummer" hittades inte. Försöker igen...',
                        scriptsTabNotFound: 'Fliken för skript hittades inte. Försöker igen...',
                        settingsTabAdded: 'Inställningsflik tillagd.',
                        speedLayer: 'Hastighetslager',
                        opacityUpdated: 'Opaciteten för ikoner har uppdaterats till',
                        updatingSettingsTab: 'Uppdaterar inställningsfliken...',
                        languageDefined: 'Språk definierade.',
                        checkingVersion: 'Kontrollerar plugin-version.',
                    }
                };
                
                break;

            case 'th':
                // Thai
                this.spdTranslations = {
                    name: 'แสดงความเร็ว',
                    settingTabName: 'การตั้งค่าแสดงความเร็ว',
                    enabled: 'เปิดใช้งาน',
                    disabled: 'ปิดการใช้งาน',
                    zoomOut: 'ย่อออก',
                    zoomIn: 'ขยายเข้า',
                    changelog: 'บันทึกการเปลี่ยนแปลง',
                    changelogMessage: '<h6>สิ่งใหม่:</h6><ul style="margin-bottom: 10px"><li>ตอนนี้สคริปต์จะแสดงความเร็วใน <strong>mph</strong> เพียงแค่เปลี่ยนหน่วยในการตั้งค่า WME.</li></ul><h6>การแก้ไขข้อผิดพลาด:</h6><ul><li>วิธีการดึงความเร็วจากคุณลักษณะของเซกเมนต์ได้รับการปรับปรุง.</li></ul>',
                    close: 'ปิด',
                    viewScript: 'ดูสคริปต์',
                    showDialog: 'แสดงโมดอล',
                    title: {
                        general: 'ทั่วไป',
                        showOnRoadType: 'แสดงบนประเภทถนน:'
                    },
                    label: {
                        displaySpeeds: 'แสดงความเร็ว',
                        showNoSpeed: 'แสดงในช่วงที่ไม่มีความเร็ว',
                        showOnRoundabout: 'แสดงในวงเวียน',
                        showOnUnpaved: 'แสดงบนถนนที่ไม่ได้ลาดยาง',
                        maxZoom: 'แสดงจนถึงระดับซูมสูงสุด:',
                        toggleLayerShortcut: 'สลับตัวเลือกเลเยอร์เพื่อแสดงความเร็ว'
                    },
                    btn: {
                        updateSettingsTab: 'อัปเดตเมนู',
                    },
                    log: {
                        wmeReadyStartScript: 'WME โหลดเสร็จแล้วและพร้อมใช้งาน กำลังเริ่มสคริปต์...',
                        waitingWme: 'รอให้ WME พร้อมใช้งาน...',
                        wmeReadyStartingPlugin: 'WME พร้อมแล้ว กำลังตั้งค่าชั้นข้อมูลที่กำหนดเอง...',
                        shortSleep: 'รอประมาณ 1 วินาทีให้ทุกอย่างโหลด...',
                        updateMapDisplay: 'กำลังอัปเดตการแสดงผลแผนที่...',
                        maxZoomExceeded: 'ระดับการซูมสูงสุดเกินขีดจำกัด ความเร็วจะไม่แสดง',
                        noneSegment: 'ไม่พบช่วงข้อมูลใด ๆ',
                        numSegmentsLoaded: 'จำนวนช่วงข้อมูลที่โหลดทั้งหมด:',
                        attributesNotFound: 'ไม่พบหรือขาดคุณสมบัติในช่วงข้อมูล',
                        disallowedSegment: 'ไม่ควรโหลดประเภทช่วงข้อมูลนี้',
                        invalidGeometry: 'รูปทรงไม่ถูกต้องในช่วงข้อมูล:',
                        updateMapDisplayFinished: 'การอัปเดตเสร็จสิ้น',
                        shortCutDialogNotFound: 'ไม่พบกล่องโต้ตอบทางลัดของแป้นพิมพ์ กำลังลองอีกครั้ง...',
                        houseNumberCheckboxNotFound: 'ไม่พบช่องทำเครื่องหมาย "หมายเลขบ้าน" กำลังพยายามอีกครั้ง...',
                        scriptsTabNotFound: 'ไม่พบแท็บสคริปต์ กำลังพยายามอีกครั้ง...',
                        settingsTabAdded: 'เพิ่มแท็บการตั้งค่าแล้ว',
                        speedLayer: 'ชั้นข้อมูลความเร็ว',
                        opacityUpdated: 'อัปเดตความโปร่งใสของไอคอนแล้ว:',
                        updatingSettingsTab: 'กำลังอัปเดตแท็บการตั้งค่า...',
                        languageDefined: 'กำหนดภาษาแล้ว',
                        checkingVersion: 'กำลังตรวจสอบเวอร์ชันของปลั๊กอิน'
                    }
                };
            
                break;

            case 'tr':
                // Turkish
                this.spdTranslations = {
                    name: 'Hız Görüntüleme',
                    settingTabName: 'Hız Görüntüleme Ayarları',
                    enabled: 'etkin',
                    disabled: 'devre dışı',
                    zoomOut: 'Daha uzak',
                    zoomIn: 'Daha yakın',
                    changelog: 'Değişiklik Kaydı',
                    changelogMessage: '<h6>Yenilikler:</h6><ul style="margin-bottom: 10px"><li>Skrip şimdi hızları <strong>mph</strong> cinsinden gösteriyor. Bunu, WME ayarlarında birimi değiştirerek yapabilirsiniz.</li></ul><h6>Hata Düzeltmeleri:</h6><ul><li>Segment özniteliklerinden hız alma yöntemi geliştirildi.</li></ul>',
                    close: 'Kapat',
                    viewScript: 'Kodu gör',
                    showDialog: 'Modalı Göster',
                    title: {
                        general: 'Genel',
                        showOnRoadType: 'Şu yol türlerinde göster:'
                    },
                    label: {
                        displaySpeeds: 'Hızları göster',
                        showNoSpeed: 'Hızsız segmentlerde göster',
                        showOnRoundabout: 'Dönel kavşaklarda göster',
                        showOnUnpaved: 'Asfaltsız yolda göster',
                        maxZoom: 'Maksimum yakınlaştırma seviyesine kadar renderle:',
                        toggleLayerShortcut: 'Katman anahtarı hız görüntüsünü değiştirme'
                    },
                    btn: {
                        updateSettingsTab: 'Menüyü güncelle',
                    },
                    log: {
                        wmeReadyStartScript: 'WME yüklendi ve hazır. Script başlatılıyor...',
                        waitingWme: 'WME\'nin hazır olmasını bekliyorum...',
                        wmeReadyStartingPlugin: 'WME hazır. Özel katman kuruluyor...',
                        shortSleep: 'Her şeyin yüklenmesi için yaklaşık 1 saniye bekliyorum...',
                        updateMapDisplay: 'Harita görüntüsünü güncelliyorum...',
                        maxZoomExceeded: 'Maksimum yakınlaştırma aşılabilir. Hız gösterilmeyecek.',
                        noneSegment: 'Hiçbir segment bulunamadı.',
                        numSegmentsLoaded: 'Yüklenen segmentlerin toplam sayısı:',
                        attributesNotFound: 'Atributlar bulunamadı veya segmentte eksik',
                        disallowedSegment: 'Bu tür segmentler yüklenmemelidir.',
                        invalidGeometry: 'Segmentte geçersiz geometri:',
                        updateMapDisplayFinished: 'Güncelleme tamamlandı.',
                        shortCutDialogNotFound: 'Klavye kısayolları iletişim kutusu bulunamadı. Tekrar deneniyor...',
                        houseNumberCheckboxNotFound: '"Ev Numaraları" onay kutusu bulunamadı. Yeniden deneniyor...',
                        scriptsTabNotFound: 'Script sekmesi bulunamadı. Yeniden deneniyor...',
                        settingsTabAdded: 'Ayarlar sekmesi eklendi.',
                        speedLayer: 'Hız Katmanı',
                        opacityUpdated: 'Simge opaklığı şu şekilde ayarlandı:',
                        updatingSettingsTab: 'Ayarlar sekmesi güncelleniyor...',
                        languageDefined: 'Diller tanımlandı.',
                        checkingVersion: 'Plugin sürümü kontrol ediliyor.'
                    }
                };
            
                break;

            case 'uk':
                // Ukrainian
                this.spdTranslations = {
                    name: 'Відображення швидкості',
                    settingTabName: 'Налаштування відображення швидкості',
                    enabled: 'увімкнено',
                    disabled: 'вимкнено',
                    zoomOut: 'Віддалити',
                    zoomIn: 'Приблизити',
                    changelog: 'Журнал змін',
                    changelogMessage: '<h6>Що нового:</h6><ul style="margin-bottom: 10px"><li>Тепер скрипт відображає швидкість в <strong>mph</strong>. Просто змініть одиницю в налаштуваннях WME.</li></ul><h6>Виправлення:</h6><ul><li>Поліпшено метод отримання швидкості з атрибутів сегмента.</li></ul>',
                    close: 'Закрити',
                    viewScript: 'Переглянути скрипт',
                    showDialog: 'Показати модальне вікно',
                    title: {
                        general: 'Загальні',
                        showOnRoadType: 'Відображати на сегментах типу:'
                    },
                    label: {
                        displaySpeeds: 'Відображати швидкості',
                        showNoSpeed: 'Показувати на сегменті без швидкості',
                        showOnRoundabout: 'Показувати на круговому русі',
                        showOnUnpaved: 'Показати на ґрунтовій дорозі',
                        maxZoom: 'Рендерити до рівня масштабування:',
                        toggleLayerShortcut: 'Перемикач шару для відображення швидкості'
                    },
                    btn: {
                        updateSettingsTab: 'Оновити меню',
                    },
                    log: {
                        wmeReadyStartScript: 'WME завантажено та готове. Запуск скрипта...',
                        waitingWme: 'Очікуємо, поки WME стане готовим...',
                        wmeReadyStartingPlugin: 'WME готове. Налаштування кастомного шару...',
                        shortSleep: 'Чекаємо близько 1 секунди, поки все завантажиться...',
                        updateMapDisplay: 'Оновлення відображення на карті...',
                        maxZoomExceeded: 'Максимальний рівень масштабування перевищено. Швидкість не буде відображена.',
                        noneSegment: 'Сегменти не знайдено.',
                        numSegmentsLoaded: 'Загальна кількість завантажених сегментів:',
                        attributesNotFound: 'Не вдалося знайти атрибути або вони відсутні в сегменті',
                        disallowedSegment: 'Цей тип сегмента не повинен завантажуватися.',
                        invalidGeometry: 'Невірна геометрія в сегменті:',
                        updateMapDisplayFinished: 'Оновлення завершено.',
                        shortCutDialogNotFound: 'Не вдалося знайти діалогове вікно комбінацій клавіш. Спроба знову...',
                        houseNumberCheckboxNotFound: 'Не знайдено чекбокс "Номери будинків". Спробую ще раз...',
                        scriptsTabNotFound: 'Не знайдена вкладка скриптів. Спробую ще раз...',
                        settingsTabAdded: 'Вкладку налаштувань додано.',
                        speedLayer: 'Шар швидкості',
                        opacityUpdated: 'Прозорість значків оновлено до',
                        updatingSettingsTab: 'Оновлення вкладки налаштувань...',
                        languageDefined: 'Мови визначено.',
                        checkingVersion: 'Перевірка версії плагіна.',
                    }
                };
                
                break;

            case 'vi':
                // Vietnamese
                this.spdTranslations = {
                    name: 'Hiển thị Tốc độ',
                    settingTabName: 'Cài đặt Hiển thị Tốc độ',
                    enabled: 'đã bật',
                    disabled: 'đã tắt',
                    zoomOut: 'Thu nhỏ',
                    zoomIn: 'Phóng to',
                    changelog: 'Lịch sử thay đổi',
                    changelogMessage: '<h6>Các tính năng mới:</h6><ul style="margin-bottom: 10px"><li>Bây giờ script hiển thị tốc độ bằng <strong>mph</strong>. Chỉ cần thay đổi đơn vị trong cài đặt WME.</li></ul><h6>Sửa lỗi:</h6><ul><li>Phương pháp lấy tốc độ từ thuộc tính đoạn đường đã được cải thiện.</li></ul>',
                    close: 'Đóng',
                    viewScript: 'Xem Script',
                    showDialog: 'Hiển thị hộp thoại',
                    title: {
                        general: 'Chung',
                        showOnRoadType: 'Hiển thị trên các đoạn đường loạ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 chưa lát',
                        maxZoom: 'Render tới mức thu phóng tối đa:',
                        toggleLayerShortcut: 'Chuyển đổi công tắc lớp hiển thị tốc độ'
                    },
                    btn: {
                        updateSettingsTab: 'Cập nhật menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME đã tải xong và sẵn sàng. Bắt đầu chạy script...',
                        waitingWme: 'Đang chờ WME sẵn sàng...',
                        wmeReadyStartingPlugin: 'WME đã sẵn sàng. Đang cấu hình lớp tùy chỉnh...',
                        shortSleep: 'Đang chờ khoảng 1 giây để mọi thứ tải xong...',
                        updateMapDisplay: 'Đang cập nhật hiển thị trên bản đồ...',
                        maxZoomExceeded: 'Vượt quá mức thu phóng tối đa. Không có tốc độ nào sẽ được hiển thị.',
                        noneSegment: 'Không tìm thấy đoạn đường nào.',
                        numSegmentsLoaded: 'Tổng số đoạn đường đã tải:',
                        attributesNotFound: 'Không thể tìm thấy các thuộc tính hoặc chúng đang thiếu trên đoạn đường',
                        disallowedSegment: 'Đoạn đường loại này không nên được tải.',
                        invalidGeometry: 'Hình học không hợp lệ trên đoạn đường:',
                        updateMapDisplayFinished: 'Cập nhật hoàn tất.',
                        shortCutDialogNotFound: 'Không tìm thấy hộp thoại phím tắt. Đang thử lại...',
                        houseNumberCheckboxNotFound: 'Không tìm thấy checkbox "Số nhà". Đang thử lại...',
                        scriptsTabNotFound: 'Không tìm thấy tab scripts. Đang thử lại...',
                        settingsTabAdded: 'Đã thêm tab cài đặt.',
                        speedLayer: 'Lớp tốc độ',
                        opacityUpdated: 'Độ mờ của các biểu tượng đã được cập nhật thành',
                        updatingSettingsTab: 'Đang cập nhật tab cài đặt...',
                        languageDefined: 'Ngôn ngữ đã được xác định.',
                        checkingVersion: 'Đang kiểm tra phiên bản plugin.'
                    }
                };
            
                break;

            case 'zh':
                // Chinese
                this.spdTranslations = {
                    name: '速度显示',
                    settingTabName: '速度显示设置',
                    enabled: '启用',
                    disabled: '禁用',
                    zoomOut: '缩小',
                    zoomIn: '放大',
                    changelog: '更新日志',
                    changelogMessage: '<h6>更新内容:</h6><ul style="margin-bottom: 10px"><li>现在脚本以 <strong>mph</strong> 显示速度。只需在 WME 设置中更改单位即可。</li></ul><h6>修复:</h6><ul><li>改进了从段落属性获取速度的方法。</li></ul>',
                    close: '关闭',
                    viewScript: '查看脚本',
                    showDialog: '显示模态框',
                    title: {
                        general: '一般',
                        showOnRoadType: '显示在以下道路类型:'
                    },
                    label: {
                        displaySpeeds: '显示速度',
                        showNoSpeed: '在无速度的段落中显示',
                        showOnRoundabout: '在环形交叉口显示',
                        showOnUnpaved: '在未铺砌道路上显示',
                        maxZoom: '渲染直到最大缩放级别:',
                        toggleLayerShortcut: '切换图层切换器速度显示'
                    },
                    btn: {
                        updateSettingsTab: '更新菜单',
                    },
                    log: {
                        wmeReadyStartScript: 'WME已加载并准备就绪,开始脚本...',
                        waitingWme: '等待WME准备好...',
                        wmeReadyStartingPlugin: 'WME已准备好,开始设置自定义层...',
                        shortSleep: '等待大约1秒钟,等待所有内容加载...',
                        updateMapDisplay: '更新地图显示...',
                        maxZoomExceeded: '已超出最大缩放级别,无法显示速度。',
                        noneSegment: '没有找到任何段落。',
                        numSegmentsLoaded: '已加载的段落总数:',
                        attributesNotFound: '无法找到属性或该段落缺失',
                        disallowedSegment: '不应加载此类型的段落。',
                        invalidGeometry: '段落中有无效的几何形状:',
                        updateMapDisplayFinished: '更新完成。',
                        shortCutDialogNotFound: '无法找到键盘快捷键对话框。正在重试...',
                        houseNumberCheckboxNotFound: '未找到“房屋号码”复选框,正在重试...',
                        scriptsTabNotFound: '未找到脚本标签,正在重试...',
                        settingsTabAdded: '已添加设置标签。',
                        speedLayer: '速度层',
                        opacityUpdated: '图标透明度已设置为',
                        updatingSettingsTab: '正在更新设置标签...',
                        languageDefined: '已定义语言。',
                        checkingVersion: '正在检查插件版本。'
                    }
                };
            
                break;

            case 'zh-TW':
                // Traditional Chinese
                this.spdTranslations = {
                    name: '速度顯示',
                    settingTabName: '速度顯示設定',
                    enabled: '啟用',
                    disabled: '停用',
                    zoomOut: '縮小',
                    zoomIn: '放大',
                    changelog: '更新記錄',
                    changelogMessage: '<h6>更新內容:</h6><ul style="margin-bottom: 10px"><li>現在腳本以 <strong>mph</strong> 顯示速度。只需在 WME 設定中更改單位即可。</li></ul><h6>修正:</h6><ul><li>改進了從段屬性中獲取速度的方法。</li></ul>',
                    close: '關閉',
                    viewScript: '查看腳本',
                    showDialog: '顯示模態窗口',
                    title: {
                        general: '一般',
                        showOnRoadType: '顯示在以下路段類型:'
                    },
                    label: {
                        displaySpeeds: '顯示速度',
                        showNoSpeed: '顯示在無速度的路段',
                        showOnRoundabout: '顯示在環形交叉路口',
                        showOnUnpaved: '在未鋪設道路上顯示',
                        maxZoom: '渲染至最大縮放層級:',
                        toggleLayerShortcut: '切換圖層切換器速度顯示'
                    },
                    btn: {
                        updateSettingsTab: '更新選單',
                    },
                    log: {
                        wmeReadyStartScript: 'WME 已加載並準備好。開始執行腳本...',
                        waitingWme: '等待 WME 準備好...',
                        wmeReadyStartingPlugin: 'WME 已準備好。設定自訂圖層...',
                        shortSleep: '等待約 1 秒讓所有內容加載...',
                        updateMapDisplay: '更新地圖顯示...',
                        maxZoomExceeded: '已超過最大縮放層級。將不顯示速度。',
                        noneSegment: '未找到任何路段。',
                        numSegmentsLoaded: '已加載的路段總數:',
                        attributesNotFound: '未能找到屬性或屬性在該路段中缺失',
                        disallowedSegment: '此類型路段不應加載。',
                        invalidGeometry: '該路段的幾何圖形無效:',
                        updateMapDisplayFinished: '更新完成。',
                        shortCutDialogNotFound: '找不到鍵盤快捷鍵對話框。正在重試...',
                        houseNumberCheckboxNotFound: '未找到「門牌號碼」選項框。正在重新嘗試...',
                        scriptsTabNotFound: '未找到腳本選項卡。正在重新嘗試...',
                        settingsTabAdded: '已添加設定選項卡。',
                        speedLayer: '速度層',
                        opacityUpdated: '圖示不透明度已更新為',
                        updatingSettingsTab: '正在更新設定選項卡...',
                        languageDefined: '語言已設定。',
                        checkingVersion: '正在檢查插件版本。'
                    }
                };
            
                break;

            default:
                // Default language (english)
                this.spdTranslations = {
                    name: 'Speed Display',
                    settingTabName: 'Speed Display Settings',
                    enabled: 'enabled',
                    disabled: 'disabled',
                    zoomOut: 'Zoom out',
                    zoomIn: 'Zoom in',
                    changelog: 'Changelog',
                    changelogMessage: '<h6>What\'s New:</h6><ul style="margin-bottom: 10px"><li>The script now shows speed in <strong>mph</strong>. Simply change the unit in the WME settings.</li></ul><h6>Bug Fixes:</h6><ul><li>Improved the method of getting speed from segment attributes.</li></ul>',
                    close: 'Close',
                    viewScript: 'View script',
                    showDialog: 'Show dialog',
                    title: {
                        general: 'General',
                        showOnRoadType: 'Display on segments of type:'
                    },
                    label: {
                        displaySpeeds: 'Display speeds',
                        showNoSpeed: 'Show on segment with no speed',
                        showOnRoundabout: 'Show on roundabout',
                        showOnUnpaved: 'Show on unpaved road',
                        maxZoom: 'Render up to zoom level:',
                        toggleLayerShortcut: 'Toggle layer switcher speed display'
                    },
                    btn: {
                        updateSettingsTab: 'Update menu',
                    },
                    log: {
                        wmeReadyStartScript: 'WME loaded and ready. Starting script...',
                        waitingWme: 'Waiting for WME to be ready...',
                        wmeReadyStartingPlugin: 'WME is ready. Setting up custom layer...',
                        shortSleep: 'Waiting about 1 second for everything to load...',
                        updateMapDisplay: 'Updating display on the map...',
                        maxZoomExceeded: 'Maximum zoom exceeded. No speed will be displayed.',
                        noneSegment: 'No segments found.',
                        numSegmentsLoaded: 'Total segments loaded:',
                        attributesNotFound: 'Could not find attributes or they are missing in the segment',
                        disallowedSegment: 'This type of segment should not be loaded.',
                        invalidGeometry: 'Invalid geometry in segment:',
                        updateMapDisplayFinished: 'Update completed.',
                        shortCutDialogNotFound: 'Could not find the keyboard shortcuts dialog. Trying again...',
                        houseNumberCheckboxNotFound: 'The "House Numbers" checkbox was not found. Trying again...',
                        settingsTabAdded: 'Settings tab added.',
                        settingsTabAdded: 'Aba de configurações adicionada.',
                        speedLayer: 'Speed layer',
                        opacityUpdated: 'Icon opacity adjusted to',
                        updatingSettingsTab: 'Updating settings tab...',
                        languageDefined: 'Languages defined.',
                        checkingVersion: 'Checking plugin version.',
                    }
                };                

                break;
        };

        this.logDebug(this.spdTranslations.log.languageDefined);
    }
}

new WmeSpeedDisplay();