// ==UserScript==
// @name WME Speed Display
// @namespace https://gf.qytechs.cn/scripts/526702-wme-speed-display/
// @version 1.6.23
// @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 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.6.23';
this.needResetSettings = true;
this.layer = null;
this.debugMode = false;
this.isMac = window.navigator.platform.indexOf('Mac') != -1;
this.settings = {};
this.zIndex = {
min: 2065,
max: 6500,
warn: 3000,
warnDisplayed: false
};
this.segmentsCategories = {
highways: [
{
id: 3,
name: 'freeway'
},
{
id: 4,
name: 'ramp'
},
{
id: 6,
name: 'major_highway'
},
{
id: 7,
name: 'minor_highway'
}
],
non_drivable: [
{
id: 18,
name: 'railroad'
},
{
id: 19,
name: 'runway_taxiway'
}
],
other_drivable: [
{
id: 8,
name: 'off_road_not_maintained'
},
{
id: 20,
name: 'parking_lot_road'
},
{
id: 17,
name: 'private_road'
},
{
id: 15,
name: 'ferry'
}
],
streets: [
{
id: 2,
name: 'primary_street'
},
{
id: 1,
name: 'street'
},
{
id: 22,
name: 'narrow_street'
}
]
};
this.spdTranslations = I18n.translations[I18n.locale].wmeSpd;
this.debounce = {
updateMapDisplay: this.debounce(this.updateMapDisplay.bind(this), 800),
saveSettings: this.debounce(this.saveSettings.bind(this)),
onZindexFieldChanged: this.debounce(this.onZindexFieldChanged.bind(this), 1000),
onSpeedFilterChanged: this.debounce(this.onSpeedFilterChanged.bind(this), 500)
};
this.layerCheckbox = {
roadGroup: null,
speedDisplay: null
};
this.prepareAndInitialize();
}
/**
* Checks if WME is ready to initializes the plugin.
*/
prepareAndInitialize() {
this.setInitialSettings();
this.defineTranslations();
if (W?.userscripts?.state?.isReady) {
this.logDebug(this.spdTranslations.log.wmeReadyStartScript);
this.initializePlugin();
} else {
this.logDebug(this.spdTranslations.log.waitingWme, false, 'warn');
document.addEventListener('wme-ready', this.initializePlugin.bind(this), {once: true});
}
}
/**
* Initializes the plugin.
*/
async initializePlugin() {
this.logDebug(this.spdTranslations.log.wmeReadyStartingPlugin, true);
this.layer = new OpenLayers.Layer.Vector('Speed Display Layer', {
displayInLayerSwitcher: false,
rendererOptions: {zIndexing: true}
});
this.setZIndex();
W.map.addLayer(this.layer);
this.addLayerCheckbox();
this.addSettingsTab();
this.addShortcut();
this.addStyle();
this.checkVersionAndShowChangelog();
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.onSpeedUnitChanged.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
*/
async onSettingZoomChanged(event) {
const zoomLevel = W.map.getZoom();
const newMaxZoom = parseInt(event.target.value, 10);
const prevMaxZoom = this.settings.general.spdMaxZoom;
document.getElementById('spd-max-zoom-value').innerText = newMaxZoom;
await this.debounce.saveSettings();
const wasVisible = prevMaxZoom > zoomLevel;
const shouldBeVisible = newMaxZoom > zoomLevel;
if (wasVisible !== shouldBeVisible)
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;
}
/**
* Toggle between imperial and metric unit and updates the map.
*/
onSpeedUnitChanged() {
let speedUnitTexts = document.querySelectorAll('.spd-filter-speed-unit');
document.querySelector('.spd-filter-distance-unit').innerHTML = W.prefs.attributes.isImperial ? 'ft' : 'm';
speedUnitTexts.forEach(text => {
text.innerText = W.prefs.attributes.isImperial ? 'mph' : 'km/h';
});
this.debounce.updateMapDisplay();
}
/**
* Changes layer's z-index.
* @param {Event} event
*/
increaseOrDecreaseZindex(event) {
let zIndexInput = document.getElementById('spd-layer-zindex');
let decrease = event.target.id == 'spd-btn-zindex-decrease';
let min = this.zIndex.min;
let max = this.zIndex.max;
let currentZindex = parseInt(zIndexInput.value);
if ((decrease && currentZindex > min) || (!decrease && currentZindex < max)) {
zIndexInput.value = decrease ? currentZindex - 100 : currentZindex + 100;
if (!this.zIndex.warnDisplayed)
this.displayZIndexWarning();
this.debounce.saveSettings();
this.setZIndex();
}
}
/**
* Updates z-index input value within allowed range and saves settings with debounce.
*/
onZindexFieldChanged() {
let zIndexInput = document.getElementById('spd-layer-zindex');
let min = this.zIndex.min;
let max = this.zIndex.max;
let value = parseInt(zIndexInput.value, 10) || max;
value = Math.min(Math.max(value, min), max);
zIndexInput.value = value;
this.settings.general.spdLayerZindex = value;
if (!this.zIndex.warnDisplayed)
this.displayZIndexWarning();
this.debounce.saveSettings();
this.setZIndex();
}
/**
* Displays a warning alert if the z-index value exceeds the allowed threshold.
*/
displayZIndexWarning() {
if (parseInt(document.getElementById('spd-layer-zindex')?.value, 10) > this.zIndex.warn && !this.settings.general.alertDismissed.infoZindex) {
let warningGroup = document.getElementById('spd-alert-group');
let alertHtml = `
<wz-alert id="info-zindex" role="alert" level="page" variant="warning" multiline="true" class="sidebar-alert inconsistent-direction-alert">
<div class="alertContent--O8sZl">
<wz-truncate is-expanded="false" limit="50">
<wz-body2>
${this.spdTranslations.alertMessage.zIndex}
</wz-body2>
<span slot="ellipsis">${I18n.translations[I18n.locale].common.show_more}</span>
</wz-truncate>
</div>
<wz-button size="sm" color="text" slot="dismiss" class="spd-btn-dismiss-alert">${I18n.translations[I18n.locale].zoom_in_message.ok}</wz-button>
</wz-alert>`;
if (warningGroup.classList.contains('d-none'))
warningGroup.classList.remove('d-none');
warningGroup.insertAdjacentHTML('beforeend', alertHtml);
document.querySelector('#info-zindex .spd-btn-dismiss-alert').addEventListener('click', this.onDismissAlert.bind(this));
this.zIndex.warnDisplayed = true;
}
}
/**
* Sets the z-index of the layer.
*/
setZIndex() {
this.layer.setZIndex(this.settings.general.spdLayerZindex);
}
/**
* Resets the z-index of the layer.
*/
resetZindex() {
let zIndexInput = document.getElementById('spd-layer-zindex');
this.settings.general.spdLayerZindex = this.zIndex.min;
zIndexInput.value = this.settings.general.spdLayerZindex;
this.onZindexFieldChanged();
}
/**
* Save alert dismissed.
* @param {Event} event
*/
async onDismissAlert(event) {
let currentDismissedAlert = this.convertStringCaseStyle('kebab', 'camel', event.target.parentNode.id);
this.settings.general.alertDismissed[currentDismissedAlert] = true;
await this.debounce.saveSettings();
let allAlertsDismissed = Object.values(this.settings.general.alertDismissed).every(value => value == true);
if (allAlertsDismissed)
document.getElementById('spd-alert-group').classList.add('d-none');
}
/**
* Validates the speed filter input's and save settings.
*/
onSpeedFilterChanged() {
if (parseInt(document.getElementById('spd-filter-min-speed').value) > parseInt(document.getElementById('spd-filter-max-speed').value)) {
// TODO: Show an error message
this.logDebug(this.spdTranslations.log.filterSpeedMinNotBiggerThanMax, false, 'error');
return;
}
this.onSettingsChange();
}
/**
* Attaches event listeners to the settings elements to track user interactions and changes.
*/
attachSettingsListeners() {
document.querySelectorAll('.spd-btn-dismiss-alert').forEach(btn => {
btn?.addEventListener('click', this.onDismissAlert.bind(this));
});
// Change event -> onSettingsChange
['spd-show-no-speed', 'spd-show-roundabout', 'spd-show-unpaved', 'spd-hide-segment-smaller-than', 'spd-filter-min-speed', 'spd-filter-max-speed'].forEach(id => {
document.getElementById(id).addEventListener('change', this.onSettingsChange.bind(this));
});
document.getElementById('spd-max-zoom').addEventListener('input', this.onSettingZoomChanged.bind(this));
['spd-btn-zindex-decrease', 'spd-btn-zindex-increase'].forEach(id => {
document.getElementById(id).addEventListener('click', this.increaseOrDecreaseZindex.bind(this));
});
document.getElementById('spd-btn-reset-z-index').addEventListener('click', this.resetZindex.bind(this));
document.getElementById('spd-layer-zindex').addEventListener('input', this.debounce.onZindexFieldChanged.bind(this));
document.getElementById('spd-hide-segment-smaller-than').addEventListener('input', this.onSettingsChange.bind(this));
document.getElementById('spd-filter-min-speed').addEventListener('input', this.debounce.onSpeedFilterChanged.bind(this));
document.getElementById('spd-filter-max-speed').addEventListener('input', this.debounce.onSpeedFilterChanged.bind(this));
document.querySelectorAll('[id^="spd-show-speed-in-"]').forEach(input => {
input.addEventListener('change', this.onSettingsChange.bind(this));
});
document.getElementById('spd-reset-default-settings').addEventListener('click', this.resetSettings.bind(this));
if (this.debugMode) {
document.getElementById('btn-spd-update-settings-tab').addEventListener('click', this.updateSettingsTab.bind(this));
document.getElementById('btn-spd-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() {
document.querySelectorAll('.spd-btn-dismiss-alert').forEach(btn => {
btn?.removeEventListener('click', this.onDismissAlert.bind(this));
});
// Change event -> onSettingsChange
['spd-show-no-speed', 'spd-show-roundabout', 'spd-show-unpaved', 'spd-hide-segment-smaller-than', 'spd-filter-min-speed', 'spd-filter-max-speed'].forEach(id => {
document.getElementById(id).removeEventListener('change', this.onSettingsChange.bind(this));
});
document.getElementById('spd-max-zoom').removeEventListener('input', this.onSettingZoomChanged.bind(this));
['spd-btn-zindex-decrease', 'spd-btn-zindex-increase'].forEach(id => {
document.getElementById(id).removeEventListener('click', this.increaseOrDecreaseZindex.bind(this));
});
document.getElementById('spd-btn-reset-z-index').removeEventListener('click', this.resetZindex.bind(this));
document.getElementById('spd-layer-zindex').removeEventListener('input', this.debounce.onZindexFieldChanged.bind(this));
document.getElementById('spd-hide-segment-smaller-than').removeEventListener('input', this.onSettingsChange.bind(this));
document.getElementById('spd-filter-min-speed').removeEventListener('input', this.debounce.onSpeedFilterChanged.bind(this));
document.getElementById('spd-filter-max-speed').removeEventListener('input', this.debounce.onSpeedFilterChanged.bind(this));
document.querySelectorAll('[id^="spd-show-speed-in-"]').forEach(input => {
input.removeEventListener('change', this.onSettingsChange.bind(this));
});
document.getElementById('spd-reset-default-settings').removeEventListener('click', this.resetSettings.bind(this));
if (this.debugMode) {
document.getElementById('btn-spd-update-settings-tab').removeEventListener('click', this.updateSettingsTab.bind(this));
document.getElementById('btn-spd-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, false, 'error');
return;
}
let segments = W.model.segments.objects || {};
let segmentKeys = Object.keys(segments);
if (segmentKeys.length == 0) {
this.logDebug(this.spdTranslations.log.noneSegment, false, 'error');
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}.`, false, 'error');
return;
}
let attributes = segment.attributes;
let roadSettingId = this.convertStringCaseStyle('snake', 'camel', `spd_show_speed_in_${this.getRoadSettingNameById(attributes.roadType)}`);
let isFwd = attributes.fwdDirection;
let isRev = attributes.revDirection;
let speedFwd = this.getSpeed(isFwd ? attributes.fwdMaxSpeed : null);
let speedRev = this.getSpeed(isRev ? attributes.revMaxSpeed : null);
let hideNoSpeed = !this.settings.general.spdShowNoSpeed && ((speedFwd == 'N/A' && speedRev == 'N/A') || (isFwd && !isRev && speedFwd == 'N/A') || (!isFwd && isRev && speedRev == 'N/A') || (!isFwd && !isRev));
let ignoreOnRoundabout = attributes.junctionID && !this.settings.general.spdShowRoundabout;
let ignoreOnUnpaved = attributes.flags == 16 && !this.settings.general.spdShowUnpaved;
if (hideNoSpeed || !this.settings.roads[roadSettingId] || ignoreOnRoundabout || ignoreOnUnpaved) {
this.logDebug(this.spdTranslations.log.disallowedSegment, false, 'warn');
return;
}
let geometry = segment.getOLGeometry();
if (!geometry || geometry.components.length < 2) {
this.logDebug(`${this.spdTranslations.log.invalidGeometry} ${segmentId}.`, false, 'error');
return;
}
let minLength = this.settings.general.spdHideSegmentSmallerThan;
let segmentLength = this.getLength(geometry.getLength());
if (minLength != null && segmentLength < minLength) {
this.logDebug(this.spdTranslations.log.segmentSmallerThanFilter);
return;
}
let midpoint = this.calculateMidpoint(geometry);
let angle = this.calculateAngleAtMidpoint(geometry);
let {leftPoint, rightPoint} = this.getPerpendicularPoints(midpoint, angle, 5);
if (isFwd && isRev && speedFwd != speedRev) {
let leftFeature = new OpenLayers.Feature.Vector(leftPoint, {speed: speedRev});
leftFeature.style = {
graphic: true,
externalGraphic: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speedRev)),
graphicHeight: 30,
graphicWidth: 30,
graphicYOffset: -15,
graphicXOffset: -15,
graphicOpacity: this.calculateOpacity(speedRev)
};
let rightFeature = new OpenLayers.Feature.Vector(rightPoint, {speed: speedFwd});
rightFeature.style = {
graphic: true,
externalGraphic: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speedFwd)),
graphicHeight: 30,
graphicWidth: 30,
graphicYOffset: -15,
graphicXOffset: -15,
graphicOpacity: this.calculateOpacity(speedFwd)
};
this.layer.addFeatures([leftFeature, rightFeature]);
} else {
let speed;
if (isFwd && speedFwd != null) {
speed = speedFwd;
} else if (isRev && speedRev != null) {
speed = speedRev;
}
speed = isFwd ? speedFwd : speedRev;
let centerFeature = new OpenLayers.Feature.Vector(midpoint, {speed});
centerFeature.style = {
graphic: true,
externalGraphic: 'data:image/svg+xml;base64,' + btoa(this.getSpeedIcon(speed)),
graphicHeight: 30,
graphicWidth: 30,
graphicYOffset: -15,
graphicXOffset: -15,
graphicOpacity: this.calculateOpacity(speed)
};
this.layer.addFeatures([centerFeature]);
}
});
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() {
return new Promise((resolve, reject) => {
try {
this.settings.spdEnabled = this.layerCheckbox.speedDisplay.checked;
Object.keys(this.settings.general).forEach(setting => {
if (setting == 'alertDismissed')
return;
let element = document.getElementById(this.convertStringCaseStyle('camel', 'kebab', setting));
this.settings.general[setting] = ['range', 'number'].includes(element.type) ? (element.value != null ? parseInt(element.value) : element.value) : element.checked;
});
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));
resolve();
} catch (error) {
this.logDebug(error, false, 'error');
reject(error);
}
});
}
/**
* Loads the settings from localStorage or uses the provided settings to initialize the configuration.
* @param {Object} [savedSettings] - The saved settings object to load; if not provided, it will load from localStorage.
*/
loadSettings(savedSettings) {
savedSettings = savedSettings ?? JSON.parse(localStorage.getItem('wmeSpeedDisplaySettings'));
if (!savedSettings)
return;
// To ensure that if it enters a new settings, it doesn't discard them when loading the old settings
Object.entries(savedSettings).forEach(([setting, value]) => {
if (typeof value == 'object' && value != null) {
if (!this.settings[setting])
this.settings[setting] = {};
Object.entries(value).forEach(([subSetting, subValue]) => {
this.settings[setting][subSetting] = subValue ?? true;
});
} else {
this.settings[setting] = value ?? true;
}
});
}
/**
* Resets the speed display settings to default.
*/
resetSettings() {
localStorage.removeItem('wmeSpeedDisplaySettings');
this.zIndex.warnDisplayed = false;
this.setInitialSettings();
this.resetZindex();
this.displayZIndexWarning();
this.debounce.saveSettings();
this.debounce.updateMapDisplay();
}
/**
* 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, false, 'warn');
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 class="mteListView--kv97l" style="padding-left: 0; padding-top: 0; padding-bottom: 0;">
<div>
<h4>${this.spdTranslations.settingTabName}</h4>
<hr style="margin-bottom: 0">`;
tabContentHtml += `
<wz-alerts-group multiline="true" id="spd-alert-group" class="alertsGroup--cx2Lh ${this.settings.general.alertDismissed.infoToggleVisibility && this.settings.general.alertDismissed.infoZindex ? 'd-none' : ''}" style="padding: 0; margin: 20px 0 0 0;">`
if (!this.settings.general.alertDismissed.infoToggleVisibility)
tabContentHtml += `
<wz-alert id="info-toggle-visibility" role="alert" level="page" variant="warning" multiline="true" class="sidebar-alert inconsistent-direction-alert">
<div class="alertContent--O8sZl">
<wz-truncate is-expanded="false" limit="50">
<wz-body2>
${this.spdTranslations.alertMessage.toggleVisibility}
</wz-body2>
<span slot="ellipsis">${I18n.translations[I18n.locale].common.show_more}</span>
</wz-truncate>
</div>
<wz-button size="sm" color="text" slot="dismiss" class="spd-btn-dismiss-alert">${I18n.translations[I18n.locale].zoom_in_message.ok}</wz-button>
</wz-alert>`;
tabContentHtml += `
</wz-alerts-group>`;
tabContentHtml += `
</div>
<div>
<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>
</div>
<div>
<wz-label html-for="">
${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 class="spd-info-message" style="display: flex; justify-content: space-between; width: 100%;">
<span>${this.spdTranslations.zoomOut}</span><span>${this.spdTranslations.zoomIn}</span>
</div>
</div>
<div class="segment-level-select">
<div class="label-container">
<wz-label html-for="">${this.spdTranslations.label.zIndex}</wz-label>
<wz-button color="text" size="sm" disabled="false" id="spd-btn-reset-z-index">${this.spdTranslations.reset}</wz-button>
</div>
<div class="select-container">
<wz-button color="clear-icon" disabled="false" id="spd-btn-zindex-decrease">
<i class="w-icon w-icon-minus"></i>
</wz-button>
<wz-text-input size="sm" type="number" id="spd-layer-zindex" min="${this.zIndex.min}" max="${this.zIndex.max}" value="${this.settings.general.spdLayerZindex}" disabled="false" style="width: 100%;">
<input style="display: none; visibility: hidden;">
</wz-text-input>
<wz-button color="clear-icon" disabled="false" id="spd-btn-zindex-increase">
<i class="w-icon w-icon-plus"></i>
</wz-button>
</div>
</div>
<div>
<wz-label html-for="">${this.spdTranslations.label.hideShorterSegments}</wz-label>
<div class="speedLimit--ZIWbK" style="margin-bottom: 0">
<wz-text-input size="sm" type="number" id="spd-hide-segment-smaller-than" min="0" max="9999" value="${this.settings.general.spdHideSegmentSmallerThan}" disabled="false" class="speedLimitInput--aWKs1">
<input style="display: none; visibility: hidden;">
</wz-text-input>
<span class="spd-filter-distance-unit">${W.prefs.attributes.isImperial ? 'ft' : 'm'}</span>
</div>
</div>
<div>
<wz-label html-for="">${this.spdTranslations.label.speedFilter}</wz-label>
<div class="speedLimit--ZIWbK">
<div class="directionLabel--U8iep">${this.spdTranslations.label.min}</div>
<wz-text-input size="sm" type="number" id="spd-filter-min-speed" min="0" max="999" value="${this.settings.general.spdFilterMinSpeed}" disabled="false" class="speedLimitInput--aWKs1">
<input style="display: none; visibility: hidden;">
</wz-text-input>
<span class="spd-filter-speed-unit">${W.prefs.attributes.isImperial ? 'mph' : 'km/h'}</span>
</div>
<div class="speedLimit--ZIWbK" style="margin-bottom: 0">
<div class="directionLabel--U8iep">${this.spdTranslations.label.max}</div>
<wz-text-input size="sm" type="number" id="spd-filter-max-speed" min="0" max="999" value="${this.settings.general.spdFilterMaxSpeed}" disabled="false" class="speedLimitInput--aWKs1">
<input style="display: none; visibility: hidden;">
</wz-text-input>
<span class="spd-filter-speed-unit">${W.prefs.attributes.isImperial ? 'mph' : 'km/h'}</span>
</div>
</div>
<div>
<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>`;
});
});
tabContentHtml += `</div>
<div class="form-group" style="display: flex; flex-direction: column; gap: 16px;">
<wz-button color="secondary" id="spd-reset-default-settings">${this.spdTranslations.resetSettings}</wz-button>`;
if (this.debugMode) {
tabContentHtml += `<wz-button color="primary" id="btn-spd-update-settings-tab">${this.spdTranslations.btn.updateSettingsTab}</wz-button>`;
tabContentHtml += `<wz-button color="secondary" id="btn-spd-show-modal">${this.spdTranslations.showDialog}</wz-button>`;
}
tabContentHtml += `
<wz-button color="text" size="sm" id="btn-spd-open-changelog-dialog" title="${this.spdTranslations.viewChangelog}"><b>${this.spdTranslations.name}</b> v${this.version}</wz-button>
</div>
</div>`;
tabContent.innerHTML = tabContentHtml;
tabContentContainer.insertBefore(tabContent, userScriptsApiDocsLinkContainer);
if (!this.zIndex.warnDisplayed)
this.displayZIndexWarning();
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();
if (!this.zIndex.warnDisplayed)
this.displayZIndexWarning();
}
/**
* 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);
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, false, 'warn');
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';
let actionGroupHtml = `
<h2>${this.spdTranslations.name}</h2>
<p class="shortcut-action" id="keyboard-shortcut-speed-display">
<span>
<span>
<kbd class="${this.isMac ? 'optionKey' : 'altKey'}">
<span>${this.isMac ? '$metaKey' : '$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>`;
newActionGroup.innerHTML = actionGroupHtml;
lastShortcutActionGroup.insertAdjacentElement('afterend', newActionGroup);
}
/**
* Toggles the layer switcher speed display when shortcut is pressed.
* @param {Event} event
*/
onDocumentKeydown(event) {
if ((event.altKey || event.metaKey) && 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} speed
*
* @returns {String} SVG in string format.
*/
getSpeedIcon(speed) {
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">${speed}</text>
</svg>`;
}
/**
* Calculates the opacity of a speed icon based on speed filter settings.
* @param {number} speed - The speed value to evaluate.
*
* @returns {number} Opacity value (1 for visible, 0.2 for dimmed) depending on whether the speed falls within the defined min and max speed range.
*/
calculateOpacity(speed) {
const minSpeed = parseInt(this.settings.general.spdFilterMinSpeed, 10);
const maxSpeed = parseInt(this.settings.general.spdFilterMaxSpeed, 10);
const validMin = (isNaN(minSpeed) || minSpeed <= 0) || speed >= minSpeed;
const validMax = (isNaN(maxSpeed) || maxSpeed <= 0) || speed <= maxSpeed;
return (validMin && validMax) ? 1 : 0.2;
}
/**
* Calculates the angle at the midpoint of a geometry based on its components.
* @param {Object} geometry - The geometry with points.
*
* @returns {number} The angle in radians at the midpoint.
*/
calculateAngleAtMidpoint(geometry) {
let totalLength = geometry.getLength();
let cumulativeLength = 0;
for (let i = 0; i < geometry.components.length - 1; i++) {
let start = geometry.components[i];
let end = geometry.components[i + 1];
if (!start || !end) continue;
let segmentLength = start.distanceTo(end);
if (cumulativeLength + segmentLength >= totalLength / 2)
return Math.atan2(end.y - start.y, end.x - start.x);
cumulativeLength += segmentLength;
}
if (geometry.components.length >= 2) {
let firstPoint = geometry.components[0];
let lastPoint = geometry.components[geometry.components.length - 1];
return Math.atan2(lastPoint.y - firstPoint.y, lastPoint.x - firstPoint.x);
}
this.logDebug(this.spdTranslations.log.insufficientGeometryAngleCalc, false, 'error');
return 0;
}
/**
* Returns two perpendicular points (left and right) from a midpoint at a given angle and distance, adjusted by map zoom.
* @param {Object} midpoint - Central point with `x` and `y` coordinates.
* @param {Number} angle - Angle in radians from the reference direction.
* @param {Number} baseDistance - Base distance from the midpoint before zoom adjustment.
*
* @returns {Object} {leftPoint, rightPoint} - Perpendicular points to the left and right.
*/
getPerpendicularPoints(midpoint, angle, baseDistance) {
let currentZoom = W.map.getZoom();
let referenceZoom = 19;
let scaleFactor = Math.pow(2, referenceZoom - currentZoom);
let adjustedDistance = baseDistance * scaleFactor;
let angleLeft = angle + Math.PI / 2;
let angleRight = angle - Math.PI / 2;
let leftPoint = new OpenLayers.Geometry.Point(
midpoint.x + adjustedDistance * Math.cos(angleLeft),
midpoint.y + adjustedDistance * Math.sin(angleLeft)
);
let rightPoint = new OpenLayers.Geometry.Point(
midpoint.x + adjustedDistance * Math.cos(angleRight),
midpoint.y + adjustedDistance * Math.sin(angleRight)
);
return {
leftPoint,
rightPoint
};
}
/**
* Returns speed in mph/kmh or 'N/A'.
* @param {Number} speed The speed value in kilometers per hour (km/h) to be formatted.
*
* @returns {(Number|String)} The speed.
*/
getSpeed(speed) {
if (!speed)
return 'N/A';
return W.prefs.attributes.isImperial ? Math.round(speed * 0.621371) : speed;
}
/**
* Returns length in feet (rounded) if imperial units are preferred; otherwise, returns meters.
* @param {number} length - The length value in meters to be converted.
*
* @returns {number} The converted length in feet or the original length in meters.
*/
getLength(length) {
return W.prefs.attributes.isImperial ? Math.round(length * 3.28084) : length;
}
/**
* 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(async () => {
await 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.
* @param {string} [type] - The type of message ('warn', or 'error'). Default is 'log'.
*/
logDebug(message, forceMessage = false, type) {
if (this.debugMode || forceMessage)
(console[type] || console.log)(`[WME Speed Display]: ${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, false, 'warn');
setTimeout(() => this.addLayerCheckbox(), 1000);
return;
}
let layerItem = document.createElement('li');
layerItem.innerHTML = `
<div class="layer-selector">
<wz-checkbox id="layer-switcher-item_speed_display" checked="${this.settings.spdEnabled}" disabled="${!this.layerCheckbox.roadGroup.checked}">
<div class="layer-selector-container" title="WME ${this.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.
*/
setInitialSettings() {
let localSettings = localStorage.getItem('wmeSpeedDisplaySettings');
localSettings = localSettings ? JSON.parse(localSettings) : null;
this.settings = {
spdEnabled: true,
general: {
alertDismissed: {
infoToggleVisibility: false,
infoZindex: false
},
spdShowNoSpeed: true,
spdShowRoundabout: true,
spdShowUnpaved: true,
spdMaxZoom: 18,
spdLayerZindex: this.zIndex.min,
spdHideSegmentSmallerThan: 0,
spdFilterMinSpeed: 0,
spdFilterMaxSpeed: 0
},
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) {
if (this.needResetSettings)
this.resetSettings();
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://gf.qytechs.cn/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();
}
/**
* Adds script custom stylesheet.
*/
addStyle() {
let style = document.createElement('style');
style.innerHTML = `
.d-none {
display: none;
}
kbd.optionKey::before {
content: 'Option (⌥)';
}
.spd-info-message {
color: #777;
font-size: 11px;
line-height: 15px;
}`;
document.head.appendChild(style);
}
/**
* Sets translations for the current locale.
*/
defineTranslations() {
switch (I18n.locale) {
case 'af':
// Afrikaans
this.spdTranslations = {
name: 'Spoedweergawes',
settingTabName: 'Spoedweergawes Instellings',
enabled: 'ingeskakel',
disabled: 'afgeskakel',
zoomOut: 'Verder',
zoomIn: 'Naby',
changelog: 'Veranderingsregister',
changelogMessage: '<h6>Nuus:</h6><ul style="margin-bottom: 10px"><li>Nou is dit moontlik om \'n waarskuwing te sien oor hoe om die sigbaarheid van die laag van die skrip te verander;</li><li>Kan jy nie die ikoon sien nie? Probeer die laagdiepte verander;</li><li>Het jy te veel ikone wat naby aan mekaar is weens die grootte van die segmente? Geen probleem nie, jy kan die segmentgrootte filter;</li><li>Wil jy segmente met spesifieke snelhede vind? Gebruik eenvoudig die filter;</li><li>Wil jy teruggaan na die standaardinstellings van die skrip? Klik net op die knoppie aan die einde van die instellingslêer.</li></ul><h6>Regstellings:</h6><ul><li>Die kortpad om die sigbaarheid van die laag van die skrip in Mac-rekenaars te verander is reggestel;</li><li>Die filter vir die vertoning van voetgangerssemente, wat geen snelheid gehad het nie, is verwyder;</li><li>Ander regstellings en verbetering van die kode.</li></ul>',
close: 'Sluit',
viewScript: 'Besoek Skrip',
showDialog: 'Wys modaal',
resetSettings: 'Herstel instellings',
viewChangelog: 'Besoek veranderingsregister',
reset: 'Herstel',
title: {
general: 'Algemeen',
showOnRoadType: 'Toon op segmente van tipe:'
},
label: {
displaySpeeds: 'Toon spoed',
showNoSpeed: 'Toon op segmente sonder spoed',
showOnRoundabout: 'Toon op rotondes',
showOnUnpaved: 'Toon op nie-geplaveide paaie',
maxZoom: 'Render tot die zoom:',
toggleLayerShortcut: 'Wissel laag sigbaarheid',
zIndex: 'Laagdiepte',
hideShorterSegments: 'Versteek segmente kleiner as',
speedFilter: 'Filter volgens snelheid',
min: 'Min:',
max: 'Max:',
},
alertMessage: {
zIndex: `As jy \'n laagdiepte groter as <b>${this.zIndex.warn}</b> gebruik, sal die spoedlaag ander lae oorskadu en jy sal nie enige element op die skerm kan kies totdat jy die laagdiepte weer laer as <b>${this.zIndex.warn}</b> maak.`,
toggleVisibility: `Om die laag sigbaarheid van spoed aan/af te skakel, gaan eenvoudig na <b>Kaartlae > Paaie > Wys spoed</b> of gebruik die kortpad ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Werk menu op',
},
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 vir ongeveer 1 sekonde vir alles om te laai...',
updateMapDisplay: 'Werk kaartweergawes op...',
maxZoomExceeded: 'Maksimum zoom oorskry. Geen spoed sal vertoon word nie.',
noneSegment: 'Geen segmente gevind nie.',
numSegmentsLoaded: 'Totale segmente gelaai:',
attributesNotFound: 'Kan nie eienskappe vind nie of dit ontbreek in die segment',
disallowedSegment: 'Hierdie tipe segment mag nie gelaai word nie.',
invalidGeometry: 'Ongeldige geometrie in segment:',
updateMapDisplayFinished: 'Opdatering voltooi.',
shortCutDialogNotFound: 'Kan nie sleutelbord kortpad venster vind nie. Probeer weer...',
houseNumberCheckboxNotFound: 'Die "Huisnommers" kieser was nie gevind nie. Probeer weer...',
scriptsTabNotFound: 'Skrip paneel nie gevind nie. Probeer weer...',
settingsTabAdded: 'Instellings tab bygevoeg.',
speedLayer: 'Spoed laag',
opacityUpdated: 'Ikone opasiteit ingestel op',
updatingSettingsTab: 'Werk instellings tab op...',
languageDefined: 'Taal ingestel.',
checkingVersion: 'Kontroleer plugin weergawe.',
insufficientGeometryAngleCalc: 'Onvoldoende geometrie vir hoekberekening.',
segmentSmallerThanFilter: 'Die segmentafstand is kleiner as die filter. Oorgeslaan...'
}
};
break;
case 'ar':
// Arabic
this.spdTranslations = {
name: 'عرض السرعة',
settingTabName: 'إعدادات عرض السرعة',
enabled: 'مفعل',
disabled: 'معطل',
zoomOut: 'أبعد',
zoomIn: 'أقرب',
changelog: 'سجل التغييرات',
changelogMessage: '<h6>التحديثات:</h6><ul style="margin-bottom: 10px"><li>الآن يمكنك رؤية إشعار حول كيفية تغيير رؤية طبقة السكربت;</li><li>لا تستطيع رؤية الأيقونة؟ جرب تغيير عمق الطبقة;</li><li>هل هناك العديد من الأيقونات بالقرب من بعضها بسبب حجم القطاعات؟ لا داعي للقلق، فقط قم بتصفية حجم القطاع;</li><li>هل تريد العثور على قطاعات بسرعات معينة؟ فقط استخدم الفلتر;</li><li>هل ترغب في العودة إلى الإعدادات الافتراضية للسكربت؟ فقط اضغط على الزر في نهاية تبويب الإعدادات.</li></ul><h6>التصحيحات:</h6><ul><li>تم تصحيح الاختصار لتبديل رؤية طبقة السكربت على أجهزة ماك;</li><li>تم إزالة فلتر العرض للقطاعات الخاصة بالمشاة التي لم يكن لها سرعة;</li><li>تصحيحات وتحسينات أخرى على الكود.</li></ul>',
close: 'إغلاق',
viewScript: 'عرض السكربت',
showDialog: 'عرض المودال',
resetSettings: 'إعادة تعيين الإعدادات',
viewChangelog: 'عرض سجل التغييرات',
reset: 'إعادة تعيين',
title: {
general: 'عام',
showOnRoadType: 'عرض على القطاعات من النوع:'
},
label: {
displaySpeeds: 'عرض السرعات',
showNoSpeed: 'عرض على القطاعات التي لا تحتوي على سرعة',
showOnRoundabout: 'عرض على الدوار',
showOnUnpaved: 'عرض على الطريق غير المعبدة',
maxZoom: 'عرض حتى التكبير:',
toggleLayerShortcut: 'تبديل طبقة عرض السرعة',
zIndex: 'عمق الطبقة',
hideShorterSegments: 'إخفاء في القطاعات الأصغر من',
speedFilter: 'تصفية حسب السرعة',
min: 'أدنى:',
max: 'أقصى:',
},
alertMessage: {
zIndex: `عند استخدام عمق طبقة أكبر من <b>${this.zIndex.warn}</b>، ستتداخل طبقة السرعة مع الطبقات الأخرى ولن يمكنك تحديد أي عنصر على الشاشة حتى تعيد عمق الطبقة إلى أقل من <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `لتفعيل/إلغاء تفعيل طبقة عرض السرعات، يمكنك الذهاب إلى <b>الطبقات > الطرق > عرض السرعات</b> أو استخدام الاختصار ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'تحديث القائمة',
},
log: {
wmeReadyStartScript: 'تم تحميل WME وجاهز. بدء السكربت...',
waitingWme: 'انتظار جاهزية WME...',
wmeReadyStartingPlugin: 'WME جاهز. إعداد الطبقة المخصصة...',
shortSleep: 'انتظار ثانية واحدة لتحميل جميع العناصر...',
updateMapDisplay: 'تحديث العرض على الخريطة...',
maxZoomExceeded: 'تم تجاوز الحد الأقصى للتكبير. لن يتم عرض السرعة.',
noneSegment: 'لم يتم العثور على أي قطاع.',
numSegmentsLoaded: 'إجمالي القطاعات المحملة:',
attributesNotFound: 'لم يتم العثور على السمات أو أنها مفقودة في القطاع',
disallowedSegment: 'هذا النوع من القطاعات لا يجب تحميله.',
invalidGeometry: 'هندسة غير صالحة في القطاع:',
updateMapDisplayFinished: 'تم التحديث بنجاح.',
shortCutDialogNotFound: 'لم يتم العثور على مربع الحوار لاختصارات لوحة المفاتيح. جارٍ المحاولة مجددًا...',
houseNumberCheckboxNotFound: 'لم يتم العثور على مربع الاختيار "أرقام المنازل". جارٍ المحاولة مجددًا...',
scriptsTabNotFound: 'لم يتم العثور على تبويب السكربتات. جارٍ المحاولة مجددًا...',
settingsTabAdded: 'تم إضافة تبويب الإعدادات.',
speedLayer: 'طبقة السرعة',
opacityUpdated: 'تم تعديل شدة الشفافية للأيقونات إلى',
updatingSettingsTab: 'جارٍ تحديث تبويب الإعدادات...',
languageDefined: 'تم تعريف اللغات.',
checkingVersion: 'جارٍ التحقق من إصدار الإضافة.',
insufficientGeometryAngleCalc: 'الهندسة غير كافية لحساب الزاوية.',
segmentSmallerThanFilter: 'طول القطاع أصغر من الفلتر. جارٍ تجاهله...'
}
};
break;
case 'bg':
// Bulgarian
this.spdTranslations = {
name: 'Показване на скоростта',
settingTabName: 'Настройки за показване на скоростта',
enabled: 'Активирано',
disabled: 'Деактивирано',
zoomOut: 'Отдалечи',
zoomIn: 'Приближи',
changelog: 'Журнал с промени',
changelogMessage: '<h6>Новини:</h6><ul style="margin-bottom: 10px"><li>Сега можете да видите съобщение за това как да промените видимостта на слоя на скрипта;</li><li>Не можете да видите иконата? Опитайте да промените дълбочината на слоя;</li><li>Имате твърде много икони близо една до друга заради размера на сегментите? Няма проблем, просто филтрирайте размера на сегмента;</li><li>Искате да намерите сегменти със специфични скорости? Просто използвайте филтъра;</li><li>Искате да се върнете към настройките по подразбиране на скрипта? Просто натиснете бутона в края на раздела с настройки.</li></ul><h6>Корекции:</h6><ul><li>Поправен е клавишният shortcut за превключване на видимостта на слоя на скрипта на Mac компютри;</li><li>Премахнат е филтърът за показване на пешеходни сегменти, които нямаха скорост;</li><li>Други корекции и подобрения на кода.</li></ul>',
close: 'Затвори',
viewScript: 'Преглед на скрипта',
showDialog: 'Показване на модалния прозорец',
resetSettings: 'Нулиране на настройките',
viewChangelog: 'Преглед на журнала с промени',
reset: 'Нулиране',
title: {
general: 'Общо',
showOnRoadType: 'Показване на сегменти от тип:'
},
label: {
displaySpeeds: 'Показване на скорости',
showNoSpeed: 'Показване на сегменти без скорост',
showOnRoundabout: 'Показване на кръгови кръстовища',
showOnUnpaved: 'Показване на непавирани пътища',
maxZoom: 'Изобразяване до ниво на мащаб:',
toggleLayerShortcut: 'Превключване на слоя за показване на скоростта',
zIndex: 'Дълбочина на слоя',
hideShorterSegments: 'Скриване на сегменти по-малки от',
speedFilter: 'Филтриране по скорост',
min: 'Мин.:',
max: 'Макс.:',
},
alertMessage: {
zIndex: `Ако използвате дълбочина на слоя, по-голяма от <b>${this.zIndex.warn}</b>, слойът за скорост ще се припокрие с други и няма да можете да изберете елемент на екрана, докато не го намалите под <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `За да активирате/деактивирате слоя за показване на скорости, можете да отидете в <b>Картови слоеве > Пътища > Показване на скорости</b> или да използвате клавишната комбинация ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
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: 'Проверка на версията на плъгина.',
insufficientGeometryAngleCalc: 'Недостатъчна геометрия за изчисляване на ъгъл.',
segmentSmallerThanFilter: 'Дължината на сегмента е по-малка от филтъра. Пропускане...'
}
};
break;
case 'ca':
// Catalan
this.spdTranslations = {
name: 'Visualització de la Velocitat',
settingTabName: 'Configuració de la Visualització de la Velocitat',
enabled: 'Activat',
disabled: 'Desactivat',
zoomOut: 'Més allunyat',
zoomIn: 'Més a prop',
changelog: 'Registre de canvis',
changelogMessage: '<h6>Novetats:</h6><ul style="margin-bottom: 10px"><li>Ara es pot veure un avís sobre com alternar la visibilitat de la capa del script;</li><li>No pots veure la icona? Prova de canviar la profunditat de la capa;</li><li>Tens massa icones a prop a causa de la mida dels segments? No hi ha problema, només has de filtrar la mida del segment;</li><li>Vols trobar segments amb velocitats específiques? Només has d\'utilitzar el filtre;</li><li>Vols tornar a la configuració per defecte del script? Simplement fes clic al botó al final de la pestanya de configuració.</li></ul><h6>Correccions:</h6><ul><li>Corregit el drecera per alternar la visibilitat de la capa del script a ordinadors Mac;</li><li>Eliminat el filtre de visualització per segments de vianants que no tenien velocitat;</li><li>Altres correccions i millores de codi.</li></ul>',
close: 'Tancar',
viewScript: 'Veure el script',
showDialog: 'Mostrar modal',
resetSettings: 'Restablir la configuració',
viewChangelog: 'Veure el registre de canvis',
reset: 'Restablir',
title: {
general: 'General',
showOnRoadType: 'Mostrar en segments del tipus:'
},
label: {
displaySpeeds: 'Mostrar velocitats',
showNoSpeed: 'Mostrar en segments sense velocitat',
showOnRoundabout: 'Mostrar en rotondes',
showOnUnpaved: 'Mostrar en vies no pavimentades',
maxZoom: 'Renderitzar fins al zoom:',
toggleLayerShortcut: 'Alternar la capa de visualització de la velocitat',
zIndex: 'Profunditat de la capa',
hideShorterSegments: 'Amagar en segments més petits que',
speedFilter: 'Filtrar per velocitat',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Si utilitzeu una profunditat de capa superior a <b>${this.zIndex.warn}</b>, la capa de velocitat es superposarà a altres i no podreu seleccionar cap element a la pantalla fins que la rebaixeu per sota de <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Per activar/desactivar la capa de visualització de velocitats, podeu anar a <b>Capes del mapa > Vies > Mostrar velocitats</b> o utilitzar la drecera ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Actualitzar el menú',
},
log: {
wmeReadyStartScript: 'WME carregat i llest. Iniciant el script...',
waitingWme: 'Esperant que el WME estigui llest...',
wmeReadyStartingPlugin: 'WME està llest. Configurant la capa personalitzada...',
shortSleep: 'Esperant uns 1 segon perquè tot es carregui...',
updateMapDisplay: 'Actualitzant la visualització al mapa...',
maxZoomExceeded: 'Zoom màxim excedit. No es mostrarà la velocitat.',
noneSegment: 'No s\'ha trobat cap segment.',
numSegmentsLoaded: 'Total de segments carregats:',
attributesNotFound: 'No s\'han trobat atributs o estan absents al segment',
disallowedSegment: 'Aquest tipus de segment no hauria de carregar-se.',
invalidGeometry: 'Geometria invàlida al segment:',
updateMapDisplayFinished: 'Actualització completada.',
shortCutDialogNotFound: 'No s\'ha trobat el modal de dreceres de teclat. Intentant de nou...',
houseNumberCheckboxNotFound: 'No s\'ha trobat la casella de selecció "Números de cases". Intentant de nou...',
scriptsTabNotFound: 'No s\'ha trobat la pestanya de scripts. Intentant de nou...',
settingsTabAdded: 'Pestanya de configuració afegida.',
speedLayer: 'Capa de velocitat',
opacityUpdated: 'L\'opacitat de les icones s\'ha actualitzat a',
updatingSettingsTab: 'Actualitzant la pestanya de configuració...',
languageDefined: 'Idiomes definits.',
checkingVersion: 'Comprovant la versió del plugin.',
insufficientGeometryAngleCalc: 'Geometria insuficient per al càlcul de l\'angle.',
segmentSmallerThanFilter: 'La longitud del segment és més petita que el filtre. S\'ignora...'
}
};
break;
case 'cs':
// Czech
this.spdTranslations = {
name: 'Zobrazení Rychlosti',
settingTabName: 'Nastavení Zobrazení Rychlosti',
enabled: 'Povolené',
disabled: 'Zakázané',
zoomOut: 'Více vzdálené',
zoomIn: 'Více přiblížené',
changelog: 'Seznam změn',
changelogMessage: '<h6>Novinky:</h6><ul style="margin-bottom: 10px"><li>Nově je možné zobrazit upozornění, jak přepnout viditelnost vrstvy skriptu;</li><li>Nevidíte ikonu? Zkuste změnit hloubku vrstvy;</li><li>Máte příliš mnoho ikon blízko sebe kvůli velikosti segmentů? Nevadí, stačí filtrovat podle velikosti segmentu;</li><li>Chcete najít segmenty s konkrétními rychlostmi? Stačí použít filtr;</li><li>Chcete se vrátit k výchozím nastavením skriptu? Stačí kliknout na tlačítko na konci záložky nastavení.</li></ul><h6>Opravy:</h6><ul><li>Opravená klávesová zkratka pro přepínání viditelnosti vrstvy skriptu na počítačích Mac;</li><li>Odstraněn filtr pro zobrazení segmentů pro chodce, které neměly rychlost;</li><li>Další opravy a vylepšení kódu.</li></ul>',
close: 'Zavřít',
viewScript: 'Zobrazit skript',
showDialog: 'Zobrazit dialog',
resetSettings: 'Obnovit nastavení',
viewChangelog: 'Zobrazit seznam změn',
reset: 'Obnovit',
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ž na zoom:',
toggleLayerShortcut: 'Přepnout vrstvu zobrazení rychlosti',
zIndex: 'Hloubka vrstvy',
hideShorterSegments: 'Skrýt na segmentech menších než',
speedFilter: 'Filtrovat podle rychlosti',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Pokud použijete hloubku vrstvy vyšší než <b>${this.zIndex.warn}</b>, vrstva rychlosti se překryje s ostatními a nebude možné vybrat žádný prvek na obrazovce, dokud ji opět nezmenšíte pod <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Pro aktivaci/deaktivaci vrstvy zobrazení rychlostí stačí přejít do <b>Mapové vrstvy > Cesty > Zobrazit rychlosti</b> nebo použít klávesovou zkratku ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Aktualizovat nabídku',
},
log: {
wmeReadyStartScript: 'WME načteno a připraveno. Spouštím skript...',
waitingWme: 'Čekání na připravení WME...',
wmeReadyStartingPlugin: 'WME je připraveno. Konfiguruji vlastní vrstvu...',
shortSleep: 'Čekání asi 1 sekundu, než se vše načte...',
updateMapDisplay: 'Aktualizuji zobrazení na mapě...',
maxZoomExceeded: 'Maximální zoom překročen. Rychlost nebude zobrazena.',
noneSegment: 'Nebyly nalezeny žádné segmenty.',
numSegmentsLoaded: 'Celkový počet načtených segmentů:',
attributesNotFound: 'Nebyly nalezeny atributy nebo chybí na segmentu',
disallowedSegment: 'Tento typ segmentu by neměl být načten.',
invalidGeometry: 'Neplatná geometrie na segmentu:',
updateMapDisplayFinished: 'Aktualizace dokončena.',
shortCutDialogNotFound: 'Nebylo možné najít dialog pro klávesové zkratky. Pokouším se znovu...',
houseNumberCheckboxNotFound: 'Nebylo možné najít checkbox "Čísla domů". Pokouším se znovu...',
scriptsTabNotFound: 'Nebylo možné najít panel skriptů. Pokouším se znovu...',
settingsTabAdded: 'Přidána záložka 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.',
insufficientGeometryAngleCalc: 'Nedostatečná geometrie pro výpočet úhlu.',
segmentSmallerThanFilter: 'Délka segmentu je menší než filtr. Ignorováno...'
}
};
break;
case 'da':
// Danish
this.spdTranslations = {
name: 'Hastighedsvisning',
settingTabName: 'Indstillinger for hastighedsvisning',
enabled: 'Aktiveret',
disabled: 'Deaktiveret',
zoomOut: 'Mere afstand',
zoomIn: 'Mere tæt på',
changelog: 'Ændringslog',
changelogMessage: '<h6>Nyheder:</h6><ul style="margin-bottom: 10px"><li>Det er nu muligt at se en advarsel om, hvordan man skifter synligheden af skriptslaget;</li><li>Kan du ikke se ikonet? Prøv at ændre lagdybden;</li><li>Er der for mange ikoner tæt på hinanden på grund af segmentstørrelsen? Ingen problem, filtrer segmentstørrelsen;</li><li>Vil du finde segmenter med bestemte hastigheder? Brug blot filteret;</li><li>Vil du vende tilbage til standardindstillingerne for skriptet? Klik bare på knappen i slutningen af indstillingsfanen.</li></ul><h6>Fejlrettelser:</h6><ul><li>Genvejstast til at skifte synligheden af skriptslaget på Mac-computere er rettet;</li><li>Visningsfilteret for fodgængersegmenter, som ikke havde hastighed, er fjernet;</li><li>Andre fejlrettelser og kodeforbedringer.</li></ul>',
close: 'Luk',
viewScript: 'Se script',
showDialog: 'Vis dialog',
resetSettings: 'Nulstil indstillinger',
viewChangelog: 'Se ændringslog',
reset: 'Nulstil',
title: {
general: 'Generelt',
showOnRoadType: 'Vis på segmenter af typen:'
},
label: {
displaySpeeds: 'Vis hastigheder',
showNoSpeed: 'Vis på segmenter uden hastighed',
showOnRoundabout: 'Vis på rundkørsler',
showOnUnpaved: 'Vis på ubelagte veje',
maxZoom: 'Render op til zoom:',
toggleLayerShortcut: 'Skift synlighed af hastighedslaget',
zIndex: 'Lagdybde',
hideShorterSegments: 'Skjul på segmenter mindre end',
speedFilter: 'Filtrer efter hastighed',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Når du bruger en lagdybde større end <b>${this.zIndex.warn}</b>, vil hastighedslaget dække de andre, og det vil ikke være muligt at vælge et element på skærmen, før du sænker dybden igen under <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `For at aktivere/deaktivere hastighedslaget, skal du gå til <b>Kortlag > Veje > Vis hastigheder</b> eller bruge genvejstasten ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Opdater menu',
},
log: {
wmeReadyStartScript: 'WME er indlæst og klar. Starter script...',
waitingWme: 'Venter på at WME er klar...',
wmeReadyStartingPlugin: 'WME er klar. Konfigurerer brugerdefineret lag...',
shortSleep: 'Venter et sekund på at alt indlæses...',
updateMapDisplay: 'Opdaterer kortvisning...',
maxZoomExceeded: 'Maksimal zoom er overskredet. Ingen hastigheder vil blive vist.',
noneSegment: 'Ingen segmenter fundet.',
numSegmentsLoaded: 'Samlet antal indlæste segmenter:',
attributesNotFound: 'Kunne ikke finde attributter eller de mangler i segmentet',
disallowedSegment: 'Denne segmenttype må ikke indlæses.',
invalidGeometry: 'Ugyldig geometri i segmentet:',
updateMapDisplayFinished: 'Opdatering afsluttet.',
shortCutDialogNotFound: 'Kunne ikke finde genvejstast-dialogen. Forsøger igen...',
houseNumberCheckboxNotFound: 'Afkrydsningsfeltet "Husnumre" blev ikke fundet. Forsøger igen...',
scriptsTabNotFound: 'Skriptfanen blev ikke fundet. Forsøger igen...',
settingsTabAdded: 'Indstillingsfane tilføjet.',
speedLayer: 'Hastighedslag',
opacityUpdated: 'Ikonernes opacitet er justeret til',
updatingSettingsTab: 'Opdaterer indstillingsfanen...',
languageDefined: 'Sprog defineret.',
checkingVersion: 'Tjekker plugin-version.',
insufficientGeometryAngleCalc: 'Utilstrækkelig geometri til vinkelberegning.',
segmentSmallerThanFilter: 'Segmentets længde er mindre end filteret. Ignorerer...'
}
};
break;
case 'de':
// German
this.spdTranslations = {
name: 'Geschwindigkeitsanzeige',
settingTabName: 'Einstellungen für die Geschwindigkeitsanzeige',
enabled: 'Aktiviert',
disabled: 'Deaktiviert',
zoomOut: 'Weiter entfernt',
zoomIn: 'Mehr heran',
changelog: 'Änderungsprotokoll',
changelogMessage: '<h6>Neuigkeiten:</h6><ul style="margin-bottom: 10px"><li>Es ist nun möglich, eine Warnung anzuzeigen, wie die Sichtbarkeit der Skript-Schicht umgeschaltet werden kann;</li><li>Sie können das Symbol nicht sehen? Versuchen Sie, die Schichttiefe zu ändern;</li><li>Haben Sie zu viele Symbole nahe beieinander aufgrund der Segmentgröße? Kein Problem, filtern Sie einfach nach der Segmentgröße;</li><li>Möchten Sie Segmente mit bestimmten Geschwindigkeiten finden? Verwenden Sie einfach den Filter;</li><li>Möchten Sie zu den Standard-Einstellungen des Skripts zurückkehren? Klicken Sie einfach auf die Schaltfläche am Ende des Einstellungsbereichs.</li></ul><h6>Fehlerbehebungen:</h6><ul><li>Verknüpfung zum Umschalten der Sichtbarkeit der Skript-Schicht auf Macs korrigiert;</li><li>Anzeige-Filter für Fußgängersegmente entfernt, die keine Geschwindigkeit hatten;</li><li>Weitere Fehlerbehebungen und Code-Verbesserungen.</li></ul>',
close: 'Schließen',
viewScript: 'Skript anzeigen',
showDialog: 'Dialog anzeigen',
resetSettings: 'Einstellungen zurücksetzen',
viewChangelog: 'Änderungsprotokoll anzeigen',
reset: 'Zurücksetzen',
title: {
general: 'Allgemein',
showOnRoadType: 'Anzeigen auf Segmenten des Typs:'
},
label: {
displaySpeeds: 'Geschwindigkeiten anzeigen',
showNoSpeed: 'Auf Segmenten ohne Geschwindigkeit anzeigen',
showOnRoundabout: 'Auf Kreisverkehr anzeigen',
showOnUnpaved: 'Auf unbefestigten Straßen anzeigen',
maxZoom: 'Rendern bis Zoom:',
toggleLayerShortcut: 'Schicht für Geschwindigkeitsanzeige umschalten',
zIndex: 'Schichttiefe',
hideShorterSegments: 'Verstecken bei Segmenten kürzer als',
speedFilter: 'Nach Geschwindigkeit filtern',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Wenn Sie eine Schichttiefe von mehr als <b>${this.zIndex.warn}</b> verwenden, wird die Geschwindigkeits-Schicht andere überlagern, und es wird nicht möglich sein, ein Element auf dem Bildschirm auszuwählen, bis Sie die Schichttiefe wieder unter <b>${this.zIndex.warn}</b> verringern.`,
toggleVisibility: `Um die Sichtbarkeit der Geschwindigkeits-Schicht zu aktivieren/deaktivieren, gehen Sie zu <b>Kartenebenen > Straßen > Geschwindigkeiten anzeigen</b> oder verwenden Sie die Verknüpfung ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Menü aktualisieren',
},
log: {
wmeReadyStartScript: 'WME geladen und bereit. Skript wird gestartet...',
waitingWme: 'Warten auf WME-Start...',
wmeReadyStartingPlugin: 'WME ist bereit. Konfiguriere benutzerdefinierte Schicht...',
shortSleep: 'Warten Sie etwa 1 Sekunde, damit alles geladen wird...',
updateMapDisplay: 'Aktualisiere Kartenanzeige...',
maxZoomExceeded: 'Maximaler Zoom überschritten. Keine Geschwindigkeiten werden angezeigt.',
noneSegment: 'Kein Segment 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. Versuche es erneut...',
houseNumberCheckboxNotFound: 'Das Kontrollkästchen "Hausnummern" konnte nicht gefunden werden. Versuche es erneut...',
scriptsTabNotFound: 'Skript-Panel konnte nicht gefunden werden. Versuche es erneut...',
settingsTabAdded: 'Einstellungen-Tab hinzugefügt.',
speedLayer: 'Geschwindigkeits-Schicht',
opacityUpdated: 'Opazität der Symbole auf eingestellt',
updatingSettingsTab: 'Einstellungen-Tab wird aktualisiert...',
languageDefined: 'Sprachen definiert.',
checkingVersion: 'Überprüfe Plugin-Version.',
insufficientGeometryAngleCalc: 'Unzureichende Geometrie für Winkelberechnung.',
segmentSmallerThanFilter: 'Segmentlänge ist kleiner als der Filter. Wird ignoriert...'
}
};
break;
case 'el':
// Greek
this.spdTranslations = {
name: 'Εμφάνιση Ταχύτητας',
settingTabName: 'Ρυθμίσεις Εμφάνισης Ταχύτητας',
enabled: 'Ενεργοποιημένο',
disabled: 'Απενεργοποιημένο',
zoomOut: 'Περισσότερη απόσταση',
zoomIn: 'Πιο κοντά',
changelog: 'Αρχείο αλλαγών',
changelogMessage: '<h6>Νέα:</h6><ul style="margin-bottom: 10px"><li>Τώρα μπορείτε να δείτε μια προειδοποίηση για το πώς να αλλάξετε την ορατότητα του επιπέδου του script;</li><li>Δεν μπορείτε να δείτε το εικονίδιο; Δοκιμάστε να αλλάξετε το βάθος του επιπέδου;</li><li>Έχετε πολλά εικονίδια το ένα κοντά στο άλλο λόγω του μεγέθους των τμημάτων; Κανένα πρόβλημα, απλά φιλτράρετε το μέγεθος του τμήματος;</li><li>Θέλετε να βρείτε τμήματα με συγκεκριμένες ταχύτητες; Χρησιμοποιήστε το φίλτρο;</li><li>Θέλετε να επιστρέψετε στις προεπιλεγμένες ρυθμίσεις του script; Απλά κάντε κλικ στο κουμπί στο τέλος της καρτέλας ρυθμίσεων.</li></ul><h6>Διορθώσεις:</h6><ul><li>Διορθώθηκε η συντόμευση για την αλλαγή της ορατότητας του επιπέδου του script σε υπολογιστές Mac;</li><li>Αφαιρέθηκε το φίλτρο προβολής για τμήματα πεζών που δεν είχαν ταχύτητα;</li><li>Άλλες διορθώσεις και βελτιώσεις του κώδικα.</li></ul>',
close: 'Κλείσιμο',
viewScript: 'Δείτε το script',
showDialog: 'Εμφάνιση παραθύρου',
resetSettings: 'Επαναφορά ρυθμίσεων',
viewChangelog: 'Δείτε το αρχείο αλλαγών',
reset: 'Επαναφορά',
title: {
general: 'Γενικά',
showOnRoadType: 'Εμφάνιση στους τύπους τμημάτων:'
},
label: {
displaySpeeds: 'Εμφάνιση ταχυτήτων',
showNoSpeed: 'Εμφάνιση σε τμήματα χωρίς ταχύτητα',
showOnRoundabout: 'Εμφάνιση σε κυκλικούς κόμβους',
showOnUnpaved: 'Εμφάνιση σε α paved δρόμους',
maxZoom: 'Απεικόνιση μέχρι το ζουμ:',
toggleLayerShortcut: 'Αλλαγή ορατότητας του επιπέδου ταχύτητας',
zIndex: 'Βάθος επιπέδου',
hideShorterSegments: 'Απόκρυψη σε τμήματα μικρότερα από',
speedFilter: 'Φίλτρο κατά ταχύτητα',
min: 'Ελάχιστο:',
max: 'Μέγιστο:',
},
alertMessage: {
zIndex: `Όταν χρησιμοποιείτε βάθος επιπέδου μεγαλύτερο από <b>${this.zIndex.warn}</b>, το επίπεδο ταχύτητας θα επικαλύψει τα άλλα και δεν θα μπορείτε να επιλέξετε κανένα στοιχείο στην οθόνη μέχρι να το χαμηλώσετε ξανά κάτω από <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Για να ενεργοποιήσετε/απενεργοποιήσετε το επίπεδο ταχύτητας, πηγαίνετε στο <b>Επίπεδα Χάρτη > Οδοί > Εμφάνιση ταχυτήτων</b> ή χρησιμοποιήστε την συντόμευση ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Ενημέρωση μενού',
},
log: {
wmeReadyStartScript: 'Το WME είναι έτοιμο και φορτωμένο. Ξεκινάει το script...',
waitingWme: 'Περιμένω να φορτωθεί το WME...',
wmeReadyStartingPlugin: 'Το WME είναι έτοιμο. Ρυθμίζω το προσαρμοσμένο επίπεδο...',
shortSleep: 'Περιμένω 1 δευτερόλεπτο για να φορτωθούν όλα...',
updateMapDisplay: 'Ενημέρωση της εμφάνισης στο χάρτη...',
maxZoomExceeded: 'Το μέγιστο ζουμ έχει ξεπεραστεί. Καμία ταχύτητα δεν θα εμφανιστεί.',
noneSegment: 'Δεν βρέθηκε τμήμα.',
numSegmentsLoaded: 'Συνολικός αριθμός φορτωμένων τμημάτων:',
attributesNotFound: 'Δεν ήταν δυνατός ο εντοπισμός των χαρακτηριστικών ή λείπουν στο τμήμα',
disallowedSegment: 'Αυτός ο τύπος τμήματος δεν πρέπει να φορτωθεί.',
invalidGeometry: 'Μη έγκυρη γεωμετρία στο τμήμα:',
updateMapDisplayFinished: 'Η ενημέρωση ολοκληρώθηκε.',
shortCutDialogNotFound: 'Δεν ήταν δυνατός ο εντοπισμός του παραθύρου συντόμευσης. Προσπαθώ ξανά...',
houseNumberCheckboxNotFound: 'Το πλαίσιο ελέγχου "Αριθμοί Σπιτιών" δεν βρέθηκε. Προσπαθώ ξανά...',
scriptsTabNotFound: 'Η καρτέλα scripts δεν βρέθηκε. Προσπαθώ ξανά...',
settingsTabAdded: 'Η καρτέλα ρυθμίσεων προστέθηκε.',
speedLayer: 'Επίπεδο ταχύτητας',
opacityUpdated: 'Η αδιαφάνεια των εικονιδίων ενημερώθηκε σε',
updatingSettingsTab: 'Ενημέρωση της καρτέλας ρυθμίσεων...',
languageDefined: 'Ο γλώσσα έχει οριστεί.',
checkingVersion: 'Ελέγχοντας την έκδοση του plugin.',
insufficientGeometryAngleCalc: 'Ανεπαρκής γεωμετρία για υπολογισμό γωνίας.',
segmentSmallerThanFilter: 'Η απόσταση του τμήματος είναι μικρότερη από το φίλτρο. Αγνοείται...'
}
};
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>You can now see a notice on how to toggle the visibility of the script layer;</li><li>Can\'t see the icon? Try changing the layer depth;</li><li>Are you seeing too many icons close to each other due to segment size? No worries, just filter by segment size;</li><li>Want to find segments with specific speeds? Just use the filter;</li><li>Want to return to the default script settings? Just click the button at the bottom of the settings tab.</li></ul><h6>Bug Fixes:</h6><ul><li>Fixed the shortcut for toggling the visibility of the script layer on Mac computers;</li><li>Removed the display filter for pedestrian segments which didn\'t have speed;</li><li>Other bug fixes and code improvements.</li></ul>',
close: 'Close',
viewScript: 'View Script',
showDialog: 'Show Modal',
resetSettings: 'Reset Settings',
viewChangelog: 'View Changelog',
reset: 'Reset',
title: {
general: 'General',
showOnRoadType: 'Show on the following road types:'
},
label: {
displaySpeeds: 'Display Speeds',
showNoSpeed: 'Show on segments without speed',
showOnRoundabout: 'Show on roundabouts',
showOnUnpaved: 'Show on unpaved roads',
maxZoom: 'Render up to zoom level:',
toggleLayerShortcut: 'Toggle speed display layer',
zIndex: 'Layer Depth',
hideShorterSegments: 'Hide segments shorter than',
speedFilter: 'Filter by speed',
min: 'Min:',
max: 'Max:',
},
alertMessage: {
zIndex: `When using a layer depth greater than <b>${this.zIndex.warn}</b>, the speed layer will overlap other layers, and no element can be selected until you lower it back below <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `To toggle the speed display layer, go to <b>Map Layers > Roads > Display Speeds</b> or use the shortcut ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Update Menu',
},
log: {
wmeReadyStartScript: 'WME loaded and ready. Starting script...',
waitingWme: 'Waiting for WME to load...',
wmeReadyStartingPlugin: 'WME is ready. Configuring custom layer...',
shortSleep: 'Waiting for about 1 second for everything to load...',
updateMapDisplay: 'Updating display on map...',
maxZoomExceeded: 'Max zoom exceeded. No speed will be displayed.',
noneSegment: 'No segment found.',
numSegmentsLoaded: 'Total segments loaded:',
attributesNotFound: 'Couldn\'t find the attributes or they\'re missing from the segment',
disallowedSegment: 'This segment type should not be loaded.',
invalidGeometry: 'Invalid geometry on segment:',
updateMapDisplayFinished: 'Update completed.',
shortCutDialogNotFound: 'Couldn\'t find the keyboard shortcut modal. Trying again...',
houseNumberCheckboxNotFound: 'The "House Numbers" checkbox not found. Trying again...',
scriptsTabNotFound: 'Scripts tab not found. Trying again...',
settingsTabAdded: 'Settings tab added.',
speedLayer: 'Speed Layer',
opacityUpdated: 'Icon opacity updated to',
updatingSettingsTab: 'Updating settings tab...',
languageDefined: 'Language set.',
checkingVersion: 'Checking plugin version.',
insufficientGeometryAngleCalc: 'Insufficient geometry for angle calculation.',
segmentSmallerThanFilter: 'Segment length is smaller than the filter. Ignoring...'
}
};
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>You can now see a notice on how to toggle the visibility of the script layer;</li><li>Can\'t see the icon? Try changing the layer depth;</li><li>Are you seeing too many icons close to each other due to segment size? No worries, just filter by segment size;</li><li>Want to find segments with specific speeds? Just use the filter;</li><li>Want to return to the default script settings? Just click the button at the bottom of the settings tab.</li></ul><h6>Bug Fixes:</h6><ul><li>Fixed the shortcut for toggling the visibility of the script layer on Mac computers;</li><li>Removed the display filter for pedestrian segments which didn\'t have speed;</li><li>Other bug fixes and code improvements.</li></ul>',
close: 'Close',
viewScript: 'View Script',
showDialog: 'Show Modal',
resetSettings: 'Reset Settings',
viewChangelog: 'View Changelog',
reset: 'Reset',
title: {
general: 'General',
showOnRoadType: 'Show on the following road types:'
},
label: {
displaySpeeds: 'Display Speeds',
showNoSpeed: 'Show on segments without speed',
showOnRoundabout: 'Show on roundabouts',
showOnUnpaved: 'Show on unpaved roads',
maxZoom: 'Render up to zoom level:',
toggleLayerShortcut: 'Toggle speed display layer',
zIndex: 'Layer Depth',
hideShorterSegments: 'Hide segments shorter than',
speedFilter: 'Filter by speed',
min: 'Min:',
max: 'Max:',
},
alertMessage: {
zIndex: `When using a layer depth greater than <b>${this.zIndex.warn}</b>, the speed layer will overlap other layers, and no element can be selected until you lower it back below <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `To toggle the speed display layer, go to <b>Map Layers > Roads > Display Speeds</b> or use the shortcut ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Update Menu',
},
log: {
wmeReadyStartScript: 'WME loaded and ready. Starting script...',
waitingWme: 'Waiting for WME to load...',
wmeReadyStartingPlugin: 'WME is ready. Configuring custom layer...',
shortSleep: 'Waiting for about 1 second for everything to load...',
updateMapDisplay: 'Updating display on map...',
maxZoomExceeded: 'Max zoom exceeded. No speed will be displayed.',
noneSegment: 'No segment found.',
numSegmentsLoaded: 'Total segments loaded:',
attributesNotFound: 'Couldn\'t find the attributes or they\'re missing from the segment',
disallowedSegment: 'This segment type should not be loaded.',
invalidGeometry: 'Invalid geometry on segment:',
updateMapDisplayFinished: 'Update completed.',
shortCutDialogNotFound: 'Couldn\'t find the keyboard shortcut modal. Trying again...',
houseNumberCheckboxNotFound: 'The "House Numbers" checkbox not found. Trying again...',
scriptsTabNotFound: 'Scripts tab not found. Trying again...',
settingsTabAdded: 'Settings tab added.',
speedLayer: 'Speed Layer',
opacityUpdated: 'Icon opacity updated to',
updatingSettingsTab: 'Updating settings tab...',
languageDefined: 'Language set.',
checkingVersion: 'Checking plugin version.',
insufficientGeometryAngleCalc: 'Insufficient geometry for angle calculation.',
segmentSmallerThanFilter: 'Segment length is smaller than the filter. Ignoring...'
}
};
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>You can now see a notice on how to toggle the visibility of the script layer;</li><li>Can\'t see the icon? Try changing the layer depth;</li><li>Seeing too many icons close together due to segment size? No problem, just filter by segment size;</li><li>Want to find segments with specific speeds? Just use the filter;</li><li>Want to return to the default script settings? Just click the button at the bottom of the settings tab.</li></ul><h6>Bug Fixes:</h6><ul><li>Fixed the shortcut for toggling the visibility of the script layer on Mac computers;</li><li>Removed display filter for pedestrian segments that didn\'t have speed;</li><li>Other bug fixes and code improvements.</li></ul>',
close: 'Close',
viewScript: 'View Script',
showDialog: 'Show Modal',
resetSettings: 'Reset Settings',
viewChangelog: 'View Changelog',
reset: 'Reset',
title: {
general: 'General',
showOnRoadType: 'Show on the following road types:'
},
label: {
displaySpeeds: 'Display Speeds',
showNoSpeed: 'Show on segments without speed',
showOnRoundabout: 'Show on roundabouts',
showOnUnpaved: 'Show on unpaved roads',
maxZoom: 'Render up to zoom level:',
toggleLayerShortcut: 'Toggle speed display layer',
zIndex: 'Layer Depth',
hideShorterSegments: 'Hide segments shorter than',
speedFilter: 'Filter by speed',
min: 'Min:',
max: 'Max:',
},
alertMessage: {
zIndex: `When using a layer depth greater than <b>${this.zIndex.warn}</b>, the speed layer will overlap other layers, and no element can be selected until you lower it back below <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `To toggle the speed display layer, go to <b>Map Layers > Roads > Display Speeds</b> or use the shortcut ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Update Menu',
},
log: {
wmeReadyStartScript: 'WME loaded and ready. Starting script...',
waitingWme: 'Waiting for WME to load...',
wmeReadyStartingPlugin: 'WME is ready. Configuring custom layer...',
shortSleep: 'Waiting for about 1 second for everything to load...',
updateMapDisplay: 'Updating display on map...',
maxZoomExceeded: 'Max zoom exceeded. No speed will be displayed.',
noneSegment: 'No segment found.',
numSegmentsLoaded: 'Total segments loaded:',
attributesNotFound: 'Couldn\'t find the attributes or they\'re missing from the segment',
disallowedSegment: 'This segment type should not be loaded.',
invalidGeometry: 'Invalid geometry on segment:',
updateMapDisplayFinished: 'Update completed.',
shortCutDialogNotFound: 'Couldn\'t find the keyboard shortcut modal. Trying again...',
houseNumberCheckboxNotFound: 'The "House Numbers" checkbox not found. Trying again...',
scriptsTabNotFound: 'Scripts tab not found. Trying again...',
settingsTabAdded: 'Settings tab added.',
speedLayer: 'Speed Layer',
opacityUpdated: 'Icon opacity updated to',
updatingSettingsTab: 'Updating settings tab...',
languageDefined: 'Language set.',
checkingVersion: 'Checking plugin version.',
insufficientGeometryAngleCalc: 'Insufficient geometry for angle calculation.',
segmentSmallerThanFilter: 'Segment length is smaller than the filter. Ignoring...'
}
};
break;
case 'es':
// Spanish
this.spdTranslations = {
name: 'Exhibición de Velocidad',
settingTabName: 'Configuración de Exhibición de Velocidad',
enabled: 'Habilitado',
disabled: 'Deshabilitado',
zoomOut: 'Alejar',
zoomIn: 'Acercar',
changelog: 'Registro de cambios',
changelogMessage: '<h6>Novedades:</h6><ul style="margin-bottom: 10px"><li>Ahora puedes ver un aviso sobre cómo alternar la visibilidad de la capa del script;</li><li>No puedes ver el ícono? Intenta cambiar la profundidad de la capa;</li><li>¿Ves demasiados íconos cerca unos de otros debido al tamaño de los segmentos? No hay problema, solo filtra por tamaño de segmento;</li><li>¿Quieres encontrar segmentos con velocidades específicas? Solo usa el filtro;</li><li>¿Quieres regresar a la configuración predeterminada del script? Solo haz clic en el botón al final de la pestaña de configuración.</li></ul><h6>Correcciones:</h6><ul><li>Se corrigió el acceso directo para alternar la visibilidad de la capa del script en computadoras Mac;</li><li>Se eliminó el filtro de exhibición para segmentos peatonales, los cuales no tenían velocidad;</li><li>Otras correcciones y mejoras de código.</li></ul>',
close: 'Cerrar',
viewScript: 'Ver script',
showDialog: 'Mostrar modal',
resetSettings: 'Restablecer configuración',
viewChangelog: 'Ver registro de cambios',
reset: 'Restablecer',
title: {
general: 'General',
showOnRoadType: 'Mostrar en los siguientes tipos de carretera:'
},
label: {
displaySpeeds: 'Mostrar velocidades',
showNoSpeed: 'Mostrar en segmentos sin velocidad',
showOnRoundabout: 'Mostrar en rotondas',
showOnUnpaved: 'Mostrar en caminos no pavimentados',
maxZoom: 'Renderizar hasta el nivel de zoom:',
toggleLayerShortcut: 'Alternar capa de exhibición de velocidad',
zIndex: 'Profundidad de la capa',
hideShorterSegments: 'Ocultar segmentos más pequeños que',
speedFilter: 'Filtrar por velocidad',
min: 'Mín.:',
max: 'Máx.:',
},
alertMessage: {
zIndex: `Al utilizar una profundidad de capa mayor a <b>${this.zIndex.warn}</b>, la capa de velocidad se superpondrá a las demás y no se podrá seleccionar ningún elemento hasta que la bajes de nuevo por debajo de <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Para activar/desactivar la capa de exhibición de velocidades, dirígete a <b>Capas del Mapa > Vías > Mostrar velocidades</b> o usa el acceso directo ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Actualizar menú',
},
log: {
wmeReadyStartScript: 'WME cargado y listo. Iniciando el script...',
waitingWme: 'Esperando a que WME esté listo...',
wmeReadyStartingPlugin: 'WME está listo. Configurando capa personalizada...',
shortSleep: 'Esperando un segundo para que todo cargue...',
updateMapDisplay: 'Actualizando la visualización en el mapa...',
maxZoomExceeded: 'Se ha excedido el zoom máximo. No se mostrará velocidad.',
noneSegment: 'No se encontró ningún segmento.',
numSegmentsLoaded: '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 ser cargado.',
invalidGeometry: 'Geometría inválida en el segmento:',
updateMapDisplayFinished: 'Actualización completada.',
shortCutDialogNotFound: 'No se pudo encontrar el modal de accesos directos del teclado. Intentando nuevamente...',
houseNumberCheckboxNotFound: 'No se encontró la casilla "Números de Casas". Intentando nuevamente...',
scriptsTabNotFound: 'No se encontró la pestaña de scripts. Intentando nuevamente...',
settingsTabAdded: 'Pestaña de configuración añadida.',
speedLayer: 'Capa de velocidad',
opacityUpdated: 'Opacidad de los íconos actualizada a',
updatingSettingsTab: 'Actualizando pestaña de configuración...',
languageDefined: 'Idioma definido.',
checkingVersion: 'Verificando la versión del plugin.',
insufficientGeometryAngleCalc: 'Geometría insuficiente para cálculo de ángulo.',
segmentSmallerThanFilter: 'La longitud del segmento es más pequeña que el filtro. Ignorando...'
}
};
break;
case 'es-419':
// Latin-american spanish
this.spdTranslations = {
name: 'Exhibición de Velocidad',
settingTabName: 'Configuración de Exhibición de Velocidad',
enabled: 'Habilitado',
disabled: 'Deshabilitado',
zoomOut: 'Alejar',
zoomIn: 'Acercar',
changelog: 'Registro de cambios',
changelogMessage: '<h6>Novedades:</h6><ul style="margin-bottom: 10px"><li>Ahora puedes ver un aviso sobre cómo alternar la visibilidad de la capa del script;</li><li>¿No puedes ver el ícono? Intenta cambiar la profundidad de la capa;</li><li>¿Estás viendo demasiados íconos cerca unos de otros debido al tamaño de los segmentos? No hay problema, solo filtra por el tamaño del segmento;</li><li>¿Quieres encontrar segmentos con velocidades específicas? Solo usa el filtro;</li><li>¿Quieres regresar a la configuración predeterminada del script? Haz clic en el botón al final de la pestaña de configuración.</li></ul><h6>Correcciones:</h6><ul><li>Se corrigió el acceso directo para alternar la visibilidad de la capa del script en computadoras Mac;</li><li>Se eliminó el filtro de exhibición para segmentos peatonales, los cuales no tenían velocidad;</li><li>Otras correcciones y mejoras de código.</li></ul>',
close: 'Cerrar',
viewScript: 'Ver script',
showDialog: 'Mostrar modal',
resetSettings: 'Restablecer configuración',
viewChangelog: 'Ver registro de cambios',
reset: 'Restablecer',
title: {
general: 'General',
showOnRoadType: 'Mostrar en los siguientes tipos de carretera:'
},
label: {
displaySpeeds: 'Mostrar velocidades',
showNoSpeed: 'Mostrar en segmentos sin velocidad',
showOnRoundabout: 'Mostrar en rotondas',
showOnUnpaved: 'Mostrar en caminos no pavimentados',
maxZoom: 'Renderizar hasta el nivel de zoom:',
toggleLayerShortcut: 'Alternar capa de exhibición de velocidad',
zIndex: 'Profundidad de la capa',
hideShorterSegments: 'Ocultar segmentos más pequeños que',
speedFilter: 'Filtrar por velocidad',
min: 'Mín.:',
max: 'Máx.:',
},
alertMessage: {
zIndex: `Al utilizar una profundidad de capa mayor a <b>${this.zIndex.warn}</b>, la capa de velocidad se superpondrá a las demás y no se podrá seleccionar ningún elemento hasta que la bajes de nuevo por debajo de <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Para activar/desactivar la capa de exhibición de velocidades, dirígete a <b>Capas del Mapa > Vías > Mostrar velocidades</b> o usa el acceso directo ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Actualizar menú',
},
log: {
wmeReadyStartScript: 'WME cargado y listo. Iniciando el script...',
waitingWme: 'Esperando a que WME esté listo...',
wmeReadyStartingPlugin: 'WME está listo. Configurando capa personalizada...',
shortSleep: 'Esperando un segundo para que todo cargue...',
updateMapDisplay: 'Actualizando la visualización en el mapa...',
maxZoomExceeded: 'Se ha excedido el zoom máximo. No se mostrará velocidad.',
noneSegment: 'No se encontró ningún segmento.',
numSegmentsLoaded: '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 ser cargado.',
invalidGeometry: 'Geometría inválida en el segmento:',
updateMapDisplayFinished: 'Actualización completada.',
shortCutDialogNotFound: 'No se pudo encontrar el modal de accesos directos del teclado. Intentando nuevamente...',
houseNumberCheckboxNotFound: 'No se encontró la casilla "Números de Casas". Intentando nuevamente...',
scriptsTabNotFound: 'No se encontró la pestaña de scripts. Intentando nuevamente...',
settingsTabAdded: 'Pestaña de configuración añadida.',
speedLayer: 'Capa de velocidad',
opacityUpdated: 'Opacidad de los íconos actualizada a',
updatingSettingsTab: 'Actualizando pestaña de configuración...',
languageDefined: 'Idioma definido.',
checkingVersion: 'Verificando la versión del plugin.',
insufficientGeometryAngleCalc: 'Geometría insuficiente para cálculo de ángulo.',
segmentSmallerThanFilter: 'La longitud del segmento es más pequeña que el filtro. Ignorando...'
}
};
break;
case 'et':
// Estonian
this.spdTranslations = {
name: 'Kiiruskuva',
settingTabName: 'Kiiruskuva seaded',
enabled: 'Lubatud',
disabled: 'Keelatud',
zoomOut: 'Kaugemal',
zoomIn: 'Lähemal',
changelog: 'Muudatuste ajalugu',
changelogMessage: '<h6>Uued funktsioonid:</h6><ul style="margin-bottom: 10px"><li>Nüüd on võimalik näha teadet, kuidas vahetada skripti kihi nähtavust;</li><li>Kas ei näe ikooni? Proovi muuta kihi sügavust;</li><li>Kas ikoonid on liiga tihedalt koos? Ei ole probleemi, saab filtrida segmentide suuruse järgi;</li><li>Kas otsid segmente kindla kiirusel? Kasuta filtrit;</li><li>Kas tahad taastada skripti vaikeseaded? Klõpsa nuppu konfiguratsioonide vahekaardil.</li></ul><h6>Parandused:</h6><ul><li>Parandatud klahvikombinatsioon skripti kihi nähtavuse vahetamiseks Maci arvutites;</li><li>Eemaldatud jalakäijate segmentide kuvamise filter, kuna neil ei olnud kiirust;</li><li>Muud parandused ja kooditäiendused.</li></ul>',
close: 'Sulge',
viewScript: 'Vaata skripti',
showDialog: 'Kuva dialoog',
resetSettings: 'Lähtesta seaded',
viewChangelog: 'Vaata muudatuste ajalugu',
reset: 'Lähtesta',
title: {
general: 'Üldine',
showOnRoadType: 'Kuva järgmistel teetüüpidel:'
},
label: {
displaySpeeds: 'Kuva kiirus',
showNoSpeed: 'Kuva ilma kiiruseta segmentidel',
showOnRoundabout: 'Kuva ringteel',
showOnUnpaved: 'Kuva kõvaketšimata teedel',
maxZoom: 'Kuva kuni suumi tasemeni:',
toggleLayerShortcut: 'Kiiruskuva kihi vahetamise otsetee',
zIndex: 'Kihi sügavus',
hideShorterSegments: 'Peida lühemad segmendid',
speedFilter: 'Filtreeri kiiruse järgi',
min: 'Miinimum:',
max: 'Maksimum:'
},
alertMessage: {
zIndex: `Kui kasutad kihi sügavust üle <b>${this.zIndex.warn}</b>, kattub kiiruskiht teiste kihtidega ja te ei saa valida ühtegi elementi ekraanil enne, kui vähendate kihi sügavust alla <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Kiiruskihtide nähtavuse vahetamiseks mine <b>Kaardi kihid > Teed > Kuvada kiirus</b> või kasuta kiirklahvi ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Uuenda menüü',
},
log: {
wmeReadyStartScript: 'WME on laaditud ja valmis. Algab skripti käivitamine...',
waitingWme: 'Ootan, et WME oleks valmis...',
wmeReadyStartingPlugin: 'WME on valmis. Kohandatud kihi seadistamine...',
shortSleep: 'Ootan mõni sekund, et kõik laeks...',
updateMapDisplay: 'Kaardi kuvamise uuendamine...',
maxZoomExceeded: 'Maksimaalne suum on ületatud. Kiirus ei kuvata.',
noneSegment: 'Ei leitud segmente.',
numSegmentsLoaded: 'Laaditud segmendid kokku:',
attributesNotFound: 'Segmentide atribuute ei leitud või need puuduvad.',
disallowedSegment: 'See tüüpi segmenti ei tohi laadida.',
invalidGeometry: 'Segmentide geomeetria on vigane:',
updateMapDisplayFinished: 'Kaardi kuvamise uuendus lõpetatud.',
shortCutDialogNotFound: 'Ei leitud klaviatuuri otsetee dialoogi. Üritan uuesti...',
houseNumberCheckboxNotFound: '"Majanumbri" kontrollikast ei leitud. Üritan uuesti...',
scriptsTabNotFound: 'Skriptide vahekaart ei leitud. Üritan uuesti...',
settingsTabAdded: 'Seadete vahekaart on lisatud.',
speedLayer: 'Kiiruskiht',
opacityUpdated: 'Ikonite läbipaistvus on uuendatud väärtusele',
updatingSettingsTab: 'Seadete vahekaardi uuendamine...',
languageDefined: 'Keel on määratud.',
checkingVersion: 'Kontrollin pistikprogrammi versiooni.',
insufficientGeometryAngleCalc: 'Geomeetria ei ole piisav nurga arvutamiseks.',
segmentSmallerThanFilter: 'Segment on väiksem kui filtris määratud kaugus. Ükskõikne...'
}
};
break;
case 'eu':
// Basque
this.spdTranslations = {
name: 'Abiadura Erakustea',
settingTabName: 'Abiadura Erakusteko Ezarpenak',
enabled: 'Aktibatuta',
disabled: 'Desaktibatuta',
zoomOut: 'Hurbilago',
zoomIn: 'Aldez aurretik',
changelog: 'Aldaketa erregistroa',
changelogMessage: '<h6>Albisteak:</h6><ul style="margin-bottom: 10px"><li>Orain ikusi ahal izango duzu nola aldatzen den skriptaren geruzaren bistaratzea;</li><li>Ikonoa ikusten ez baduzu, saiatu geruza sakonera aldatzen;</li><li>Ikonoak oso hurbil egon daitezke segmentuaren tamainaren ondorioz? Ez dago arazoarik, filtratu segmentuaren tamaina;</li><li>Abiadura jakin bat duten segmentuak bilatzen ari zara? Erabili iragazkia;</li><li>Skriptaren ezarpenetara itzuli nahi al duzu? Egin klik konfigurazioaren fitxan dagoen botoian.</li></ul><h6>Akatsak:</h6><ul><li>Mac ordenagailuetan skriptaren geruzaren bistaratze laburdura zuzendu da;</li><li>Oinezkoen segmentuen bistaratze iragazkia kendu da, ez zituztelako abiadurarik;</li><li>Beste akats batzuk eta kodearen hobekuntzak.</li></ul>',
close: 'Itxi',
viewScript: 'Ikusi script-a',
showDialog: 'Erakutsi modal-a',
resetSettings: 'Berrezarri ezarpenak',
viewChangelog: 'Ikusi aldaketak',
reset: 'Berrezarri',
title: {
general: 'Orokorra',
showOnRoadType: 'Erakutsi honako bide mota hauetan:'
},
label: {
displaySpeeds: 'Erakutsi abiadurak',
showNoSpeed: 'Erakutsi abiadurarik gabeko segmentuetan',
showOnRoundabout: 'Erakutsi biribilguneetan',
showOnUnpaved: 'Erakutsi asfaltatu gabeko bideetan',
maxZoom: 'Erakutsi zoom maila honetara arte:',
toggleLayerShortcut: 'Abiadura geruza aldatu laburdura',
zIndex: 'Geruzaren sakonera',
hideShorterSegments: 'Ezkutatu segmentu txikiagoak',
speedFilter: 'Iragazi abiaduraren arabera',
min: 'Gutxiengoa:',
max: 'Maximoa:'
},
alertMessage: {
zIndex: `Geruza sakonera <b>${this.zIndex.warn}</b> baino handiagoa bada, abiadura geruzak beste geruzak estaliko ditu eta ezin izango duzu elementurik aukeratu pantailan, <b>${this.zIndex.warn}</b> baino baxuagoa den geruzarekin berriro jaitsi arte.`,
toggleVisibility: `Abiadura geruza bistaratzea aktibatu/itzaltzeko, joan <b>Mapa geruzak > Bideak > Abiadura erakutsi</b> eta erabili laburdura ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Eguneratu menu',
},
log: {
wmeReadyStartScript: 'WME kargatu eta prest. Hasieratzen script-a...',
waitingWme: 'WME prest egon arte itxaroten...',
wmeReadyStartingPlugin: 'WME prest dago. Pertsonalizatutako geruza konfiguratzen...',
shortSleep: 'Une batez itxaroten nago dena kargatzeko...',
updateMapDisplay: 'Mapa bistaratzea eguneratzen...',
maxZoomExceeded: 'Maximo zoom maila gainditu da. Ez da abiadura erakutsiko.',
noneSegment: 'Ez da segmenturik aurkitu.',
numSegmentsLoaded: 'Kargatutako segmentuak kopuruan:',
attributesNotFound: 'Ez da segmentuen atributurik aurkitu edo faltan daude.',
disallowedSegment: 'Segmentu mota hau ez da kargatu behar.',
invalidGeometry: 'Segmentuaren geometria baliogabea:',
updateMapDisplayFinished: 'Eguneratzea amaitu da.',
shortCutDialogNotFound: 'Ez da aurkitu klaviatura laburdura dialogoa. Saiatzen berriro...',
houseNumberCheckboxNotFound: '"Etxebizitza zenbakiak" hautatzailea ez da aurkitu. Saiatzen berriro...',
scriptsTabNotFound: 'Scripten fitxa ez da aurkitu. Saiatzen berriro...',
settingsTabAdded: 'Ezarpen fitxa gehituta.',
speedLayer: 'Abiadura geruza',
opacityUpdated: 'Ikonoen opakotasuna eguneratuta:',
updatingSettingsTab: 'Ezarpen fitxaren eguneratzea...',
languageDefined: 'Hizkuntza definituta.',
checkingVersion: 'Plugina bertsioa egiaztatzen.',
insufficientGeometryAngleCalc: 'Geometria ez da nahikoa angelua kalkulatzeko.',
segmentSmallerThanFilter: 'Segmentua iragazkiaren distantziatik txikiagoa da. Igorribera...',
}
};
break;
case 'fa-IR':
// Persian (Iran)
this.spdTranslations = {
name: 'نمایش سرعت',
settingTabName: 'تنظیمات نمایش سرعت',
enabled: 'فعال شده',
disabled: 'غیرفعال شده',
zoomOut: 'بیشتر دور',
zoomIn: 'بیشتر نزدیک',
changelog: 'تغییرات ثبت شده',
changelogMessage: '<h6>جدیدترین ها:</h6><ul style="margin-bottom: 10px"><li>اکنون می توانید راهنمایی برای تغییر دید لایه اسکریپت را مشاهده کنید;</li><li>آیا نمی توانید آیکون را مشاهده کنید؟ عمق لایه را تغییر دهید;</li><li>آیکون ها به دلیل اندازه بخش ها خیلی نزدیک به هم هستند؟ مشکلی نیست، اندازه بخش ها را فیلتر کنید;</li><li>آیا به دنبال بخش هایی با سرعت خاصی هستید؟ فیلتر را استفاده کنید;</li><li>آیا می خواهید به تنظیمات پیش فرض اسکریپت برگردید؟ فقط روی دکمه انتهای تب تنظیمات کلیک کنید.</li></ul><h6>رفع مشکلات:</h6><ul><li>میانبر تغییر دید لایه اسکریپت در رایانه های Mac اصلاح شد;</li><li>فیلتر نمایش برای بخش های پیاده روی که سرعت نداشتند حذف شد;</li><li>رفع مشکلات و بهبودهای کد دیگر.</li></ul>',
close: 'بستن',
viewScript: 'مشاهده اسکریپت',
showDialog: 'نمایش پنجره مودال',
resetSettings: 'بازنشانی تنظیمات',
viewChangelog: 'مشاهده تغییرات ثبت شده',
reset: 'بازنشانی',
title: {
general: 'عمومی',
showOnRoadType: 'نمایش در بخش هایی از نوع:'
},
label: {
displaySpeeds: 'نمایش سرعت ها',
showNoSpeed: 'نمایش در بخش هایی بدون سرعت',
showOnRoundabout: 'نمایش در چرخشگاه ها',
showOnUnpaved: 'نمایش در جاده های خاکی',
maxZoom: 'نمایش تا زوم:',
toggleLayerShortcut: 'تغییر لایه نمایش سرعت',
zIndex: 'عمق لایه',
hideShorterSegments: 'مخفی کردن بخش های کوتاه تر از',
speedFilter: 'فیلتر بر اساس سرعت',
min: 'حداقل:',
max: 'حداکثر:'
},
alertMessage: {
zIndex: `اگر از عمق لایه بیشتر از <b>${this.zIndex.warn}</b> استفاده کنید، لایه سرعت بر روی لایه های دیگر قرار می گیرد و شما نمی توانید هیچ عنصری را در صفحه انتخاب کنید تا زمانی که عمق لایه را به کمتر از <b>${this.zIndex.warn}</b> کاهش دهید.`,
toggleVisibility: `برای فعال/غیرفعال کردن لایه نمایش سرعت، به <b>لایه های نقشه > جاده ها > نمایش سرعت</b> بروید یا از میانبر ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b> استفاده کنید`
},
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: 'در حال بررسی نسخه پلاگین.',
insufficientGeometryAngleCalc: 'هندسه کافی برای محاسبه زاویه وجود ندارد.',
segmentSmallerThanFilter: 'فاصله بخش کمتر از فیلتر است. نادیده گرفته می شود...',
}
};
break;
case 'fi':
// Finnish
this.spdTranslations = {
name: 'Nopeusnäyttö',
settingTabName: 'Nopeusnäytön asetukset',
enabled: 'otettu käyttöön',
disabled: 'pois käytöstä',
zoomOut: 'Laajenna',
zoomIn: 'Lähennä',
changelog: 'Muutokset',
changelogMessage: '<h6>Uutta:</h6><ul style="margin-bottom: 10px"><li>Voit nyt nähdä ohjeen, kuinka vaihdat skriptin kerroksen näkyvyyttä;</li><li>Et näe kuvaketta? Kokeile säätää kerroksen syvyyttä;</li><li>Onko kuvakkeita liian lähellä toisiaan segmenttien koon takia? Ei hätää, voit suodattaa segmentin koon mukaan;</li><li>Haluatko löytää segmenttejä tietyillä nopeuksilla? Käytä suodatinta;</li><li>Haluatko palata skriptin oletusasetuksiin? Napsauta vain asetusten välilehden lopussa olevaa painiketta.</li></ul><h6>Korjauksia:</h6><ul><li>Korjattu pikanäppäin kerroksen näkyvyyden vaihtamiseksi Mac-tietokoneilla;</li><li>Poistettu suodatin kävelijäsegmenttien näyttämiseksi, joilla ei ole nopeutta;</li><li>Muita virheiden korjauksia ja parannuksia koodissa.</li></ul>',
close: 'Sulje',
viewScript: 'Näytä skripti',
showDialog: 'Näytä modaalinen ikkuna',
resetSettings: 'Palauta asetukset',
viewChangelog: 'Näytä muutokset',
reset: 'Palauta',
title: {
general: 'Yleiset',
showOnRoadType: 'Näytä seuraavissa segmenttityypeissä:'
},
label: {
displaySpeeds: 'Näytä nopeudet',
showNoSpeed: 'Näytä segmentissä, jossa ei ole nopeutta',
showOnRoundabout: 'Näytä liikenneympyrässä',
showOnUnpaved: 'Näytä päällystämättömällä tiellä',
maxZoom: 'Renderöi zoom-tasoon asti:',
toggleLayerShortcut: 'Vaihda nopeuskerroksen näkyvyyttä',
zIndex: 'Kerrosjärjestys',
hideShorterSegments: 'Piilota lyhyemmät segmentit kuin',
speedFilter: 'Suodata nopeuden mukaan',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Kun käytät suurempaa kerrosjärjestystä kuin <b>${this.zIndex.warn}</b>, nopeuskerros peittää muut ja et voi valita mitään elementtiä näytöltä, ennen kuin lasket sen takaisin alle <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Voit aktivoida/poistaa käytöstä nopeuskerroksen menemällä kohtaan <b>Karttatasot > Tiet > Näytä nopeudet</b> tai käyttämällä pikanäppäintä ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Päivitä valikko',
},
log: {
wmeReadyStartScript: 'WME ladattu ja valmis. Skripti käynnistyy...',
waitingWme: 'Odottamassa, että WME on valmis...',
wmeReadyStartingPlugin: 'WME on valmis. Määritetään mukautettu kerros...',
shortSleep: 'Odottamassa 1 sekunti, että kaikki latautuu...',
updateMapDisplay: 'Päivitetään kartan näyttö...',
maxZoomExceeded: 'Maksimaalinen zoom-taso ylitetty. Nopeuksia ei näytetä.',
noneSegment: 'Ei löytynyt segmentejä.',
numSegmentsLoaded: 'Ladattujen segmenttien määrä:',
attributesNotFound: 'Ominaisuuksia ei löytynyt tai ne puuttuvat segmentistä.',
disallowedSegment: 'Tätä tyyppiä ei pitäisi ladata.',
invalidGeometry: 'Virheellinen geometria segmentissä:',
updateMapDisplayFinished: 'Päivitys valmis.',
shortCutDialogNotFound: 'Pikanäppäinten valintaikkunaa 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: 'Kuvakkeiden läpinäkyvyys päivitetty arvoon',
updatingSettingsTab: 'Päivitetään asetusvälilehteä...',
languageDefined: 'Kielet määritetty.',
checkingVersion: 'Tarkistetaan laajennuksen versio.',
insufficientGeometryAngleCalc: 'Ei riittävästi geometriaa kulman laskemiseksi.',
segmentSmallerThanFilter: 'Segmentin pituus on pienempi kuin suodatin sallii. Ohitetaan...',
}
};
break;
case 'fr':
// French
this.spdTranslations = {
name: 'Affichage de la vitesse',
settingTabName: 'Paramètres d\'affichage de la vitesse',
enabled: 'activé',
disabled: 'désactivé',
zoomOut: 'Zoom arrière',
zoomIn: 'Zoom avant',
changelog: 'Journal des modifications',
changelogMessage: '<h6>Nouvelle(s):</h6><ul style="margin-bottom: 10px"><li>Vous pouvez maintenant voir un message expliquant comment alterner la visibilité de la couche du script ;</li><li>Vous ne voyez pas l\'icône ? Essayez de modifier la profondeur de la couche ;</li><li>Les icônes sont trop proches les unes des autres à cause de la taille des segments ? Pas de problème, vous pouvez filtrer par taille de segment ;</li><li>Vous voulez trouver des segments avec des vitesses spécifiques ? Utilisez simplement le filtre ;</li><li>Vous souhaitez revenir aux paramètres par défaut du script ? Cliquez simplement sur le bouton à la fin de l\'onglet des paramètres.</li></ul><h6>Corrections :</h6><ul><li>Raccourci corrigé pour alterner la visibilité de la couche du script sur les ordinateurs Mac ;</li><li>Filtre d\'affichage supprimé pour les segments piétonniers, qui n\'avaient pas de vitesse ;</li><li>Autres corrections et améliorations du code.</li></ul>',
close: 'Fermer',
viewScript: 'Voir le script',
showDialog: 'Afficher la fenêtre modale',
resetSettings: 'Réinitialiser les paramètres',
viewChangelog: 'Voir le journal des modifications',
reset: 'Réinitialiser',
title: {
general: 'Général',
showOnRoadType: 'Afficher sur les segments de type :'
},
label: {
displaySpeeds: 'Afficher les vitesses',
showNoSpeed: 'Afficher sur les segments sans vitesse',
showOnRoundabout: 'Afficher sur le rond-point',
showOnUnpaved: 'Afficher sur la voie non pavée',
maxZoom: 'Rendre jusqu\'au zoom :',
toggleLayerShortcut: 'Alterner la visibilité de la couche de vitesse',
zIndex: 'Profondeur de la couche',
hideShorterSegments: 'Masquer sur les segments plus petits que',
speedFilter: 'Filtrer par vitesse',
min: 'Min. :',
max: 'Max. :',
},
alertMessage: {
zIndex: `Lorsque vous utilisez une profondeur de couche supérieure à <b>${this.zIndex.warn}</b>, la couche de vitesse va se superposer aux autres et vous ne pourrez sélectionner aucun élément sur l\'écran jusqu\'à ce que vous la fassiez descendre sous <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Pour activer/désactiver la couche de vitesse, allez dans <b>Couches de la carte > Routes > Afficher les vitesses</b> ou utilisez le raccourci ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Mettre à jour le menu',
},
log: {
wmeReadyStartScript: 'WME chargé et prêt. Démarrage du script...',
waitingWme: 'En attente de la préparation de WME...',
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: 'Zoom maximal 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 absents sur le segment',
disallowedSegment: 'Ce type de segment ne doit pas être chargé.',
invalidGeometry: 'Géométrie invalide sur le segment :',
updateMapDisplayFinished: 'Mise à jour terminée.',
shortCutDialogNotFound: 'Impossible de trouver la fenêtre modale des raccourcis clavier. Nouvelle tentative...',
houseNumberCheckboxNotFound: 'La case à cocher "Numéros des maisons" n\'a pas été trouvée. Nouvelle tentative...',
scriptsTabNotFound: 'L\'onglet des scripts n\'a pas été trouvé. Nouvelle tentative...',
settingsTabAdded: 'Onglet des paramètres ajouté.',
speedLayer: 'Couche de vitesse',
opacityUpdated: 'Opacité des icônes mise à jour à',
updatingSettingsTab: 'Mise à jour de l\'onglet des paramètres...',
languageDefined: 'Langues définies.',
checkingVersion: 'Vérification de la version du plugin.',
insufficientGeometryAngleCalc: 'Géométrie insuffisante pour calculer l\'angle.',
segmentSmallerThanFilter: 'La distance du segment est inférieure au filtre. Ignoré...',
}
};
break;
case 'gl':
// Galician
this.spdTranslations = {
name: 'Exhibición de velocidade',
settingTabName: 'Configuración de exhibición de velocidade',
enabled: 'activado',
disabled: 'desactivado',
zoomOut: 'Máis afastado',
zoomIn: 'Máis achegado',
changelog: 'Rexistro de cambios',
changelogMessage: '<h6>Novidades:</h6><ul style="margin-bottom: 10px"><li>Agora é posible ver un aviso sobre como alternar a visibilidade da capa do script;</li><li>Non ves a icona? Proba a cambiar a profundidade da capa;</li><li>Hai moitas iconas xuntas debido ao tamaño dos segmentos? Non hai problema, só filtra por tamaño de segmento;</li><li>Queres encontrar segmentos con velocidades específicas? Só utiliza o filtro;</li><li>Queres restaurar a configuración predeterminada do script? Só fai clic no botón ao final da aba de configuración.</li></ul><h6>Correccións:</h6><ul><li>Corrixido o atallo para alternar a visibilidade da capa do script nos ordenadores Mac;</li><li>Eliminado o filtro de visualización para segmentos peonís, que non tiñan velocidade;</li><li>Outras correccións e melloras do código.</li></ul>',
close: 'Pechar',
viewScript: 'Ver script',
showDialog: 'Mostrar a fiestra modal',
resetSettings: 'Restablecer configuracións',
viewChangelog: 'Ver rexistro de cambios',
reset: 'Restablecer',
title: {
general: 'Xeral',
showOnRoadType: 'Mostrar nos segmentos do tipo:'
},
label: {
displaySpeeds: 'Exhibir velocidades',
showNoSpeed: 'Exhibir en segmentos sen velocidade',
showOnRoundabout: 'Exhibir en rotondas',
showOnUnpaved: 'Exhibir en vías non pavimentadas',
maxZoom: 'Renderizar ata o zoom:',
toggleLayerShortcut: 'Alternar capa de exhibición de velocidade',
zIndex: 'Profundidade da capa',
hideShorterSegments: 'Ocultar en segmentos máis pequenos que',
speedFilter: 'Filtrar por velocidade',
min: 'Mín.:',
max: 'Máx.:',
},
alertMessage: {
zIndex: `Ao usar unha profundidade de capa maior que <b>${this.zIndex.warn}</b>, a capa de velocidade cubrirá outras capas e non poderá seleccionar ningún elemento na pantalla ata que a baixe por debaixo de <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Para activar/desactivar a capa de exhibición de velocidades, vai a <b>Capas do mapa > Vías > Exhibir velocidades</b> ou utiliza o atallo ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Actualizar menú',
},
log: {
wmeReadyStartScript: 'WME cargado e listo. Iniciando script...',
waitingWme: 'Agardando que WME estea listo...',
wmeReadyStartingPlugin: 'WME está listo. Configurando capa personalizada...',
shortSleep: 'Agardando un segundo para que todo cargue...',
updateMapDisplay: 'Actualizando visualización no mapa...',
maxZoomExceeded: 'Zoom máximo superado. Non se mostrará ningunha velocidade.',
noneSegment: 'Non se atoparon segmentos.',
numSegmentsLoaded: 'Número total de segmentos cargados:',
attributesNotFound: 'Non foi posible atopar os atributos ou están ausentes no segmento',
disallowedSegment: 'Este tipo de segmento non debe ser cargado.',
invalidGeometry: 'Xeometría inválida no segmento:',
updateMapDisplayFinished: 'Actualización rematada.',
shortCutDialogNotFound: 'Non se atopou a fiestra modal de atallos de teclado. Intentando de novo...',
houseNumberCheckboxNotFound: 'Non se atopou a casilla "Números das casas". Intentando de novo...',
scriptsTabNotFound: 'Non se atopou a pestana de scripts. Intentando de novo...',
settingsTabAdded: 'Pestana de configuración engadida.',
speedLayer: 'Capa de velocidade',
opacityUpdated: 'Opacidade das iconas axustada a',
updatingSettingsTab: 'Actualizando pestana de configuración...',
languageDefined: 'Idiomas definidos.',
checkingVersion: 'Verificando a versión do plugin.',
insufficientGeometryAngleCalc: 'Xeometría insuficiente para calcular o ángulo.',
segmentSmallerThanFilter: 'A distancia do segmento é menor que o filtro. Ignorando...',
}
};
break;
case 'he':
// Hebrew
this.spdTranslations = {
name: 'הצגת מהירות',
settingTabName: 'הגדרות הצגת מהירות',
enabled: 'הפועל',
disabled: 'מכובה',
zoomOut: 'מרחוק יותר',
zoomIn: 'מקרוב יותר',
changelog: 'יומן שינויים',
changelogMessage: '<h6>חדשות:</h6><ul style="margin-bottom: 10px"><li>כעת ניתן לראות הודעה כיצד להחליף את נראות השכבה של הסקריפט;</li><li>לא רואים את האייקון? נסו לשנות את עומק השכבה;</li><li>יש הרבה אייקונים צפופים זה ליד זה בגלל גודל הקטעים? אין בעיה, פשוט סננו לפי גודל הקטע;</li><li>רוצים למצוא קטעים עם מהירויות מסוימות? פשוט השתמשו במסנן;</li><li>רוצים לשחזר את הגדרות ברירת המחדל של הסקריפט? פשוט לחצו על כפתור בסוף הלשונית של ההגדרות.</li></ul><h6>תיקונים:</h6><ul><li>תוקן קיצור הדרך להחלפת נראות השכבה של הסקריפט במחשבי מק;</li><li>הוסר מסנן הצגה עבור קטעים להולכי רגל, שאין להם מהירות;</li><li>תיקונים נוספים ושיפורי קוד.</li></ul>',
close: 'סגור',
viewScript: 'צפה בסקריפט',
showDialog: 'הצג דיאלוג',
resetSettings: 'אפס הגדרות',
viewChangelog: 'צפה ביומן השינויים',
reset: 'אפס',
title: {
general: 'כללי',
showOnRoadType: 'הצג בקטעים מסוג:'
},
label: {
displaySpeeds: 'הצג מהירויות',
showNoSpeed: 'הצג בקטעים ללא מהירות',
showOnRoundabout: 'הצג בכיכרות',
showOnUnpaved: 'הצג בדרכים לא סלוליות',
maxZoom: 'הצג עד לזום:',
toggleLayerShortcut: 'החלף שכבת הצגת מהירות',
zIndex: 'עומק השכבה',
hideShorterSegments: 'הסתר בקטעים קצרים מ-',
speedFilter: 'סנן לפי מהירות',
min: 'מינימום:',
max: 'מקסימום:',
},
alertMessage: {
zIndex: `כאשר משתמשים בעומק שכבה גבוה יותר מ- <b>${this.zIndex.warn}</b>, שכבת המהירות תכסה שכבות אחרות ולא ניתן יהיה לבחור אף פריט על המסך עד שתרד את עומק השכבה מתחת ל- <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `כדי להפעיל/לכבות את שכבת הצגת המהירויות, פשוט לכו ל- <b>שכבות המפה > דרכים > הצג מהירויות</b> או השתמשו בקיצור הדרך ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'עדכן תפריט',
},
log: {
wmeReadyStartScript: 'WME נטען ומוכן. מתחילים את הסקריפט...',
waitingWme: 'מחכים ש-WME יהיה מוכן...',
wmeReadyStartingPlugin: 'WME מוכן. מגדירים את השכבה האישית...',
shortSleep: 'ממתינים שנייה להשלמת הטעינה...',
updateMapDisplay: 'מעודכנים את הצגת המפה...',
maxZoomExceeded: 'הגדלת הזום המרבי. לא יוצגו מהירויות.',
noneSegment: 'לא נמצאו קטעים.',
numSegmentsLoaded: 'מספר הקטעים שהורדו:',
attributesNotFound: 'לא נמצאו תכונות או שהן חסרות בקטע',
disallowedSegment: 'קטע זה לא צריך להיות טעון.',
invalidGeometry: 'גיאומטריה לא תקינה בקטע:',
updateMapDisplayFinished: 'העדכון הושלם.',
shortCutDialogNotFound: 'לא נמצא חלון קיצורי הדרך של מקלדת. מנסים שוב...',
houseNumberCheckboxNotFound: 'לא נמצא תיבת הסימון "מספרי בתים". מנסים שוב...',
scriptsTabNotFound: 'לא נמצא לשונית הסקריפטים. מנסים שוב...',
settingsTabAdded: 'לשונית ההגדרות נוספה.',
speedLayer: 'שכבת מהירות',
opacityUpdated: 'עוצמת שקיפות האייקונים עודכנה ל-',
updatingSettingsTab: 'מעודכנים את לשונית ההגדרות...',
languageDefined: 'שפות הוגדרו.',
checkingVersion: 'בודקים את גרסת הסקריפט.',
insufficientGeometryAngleCalc: 'גיאומטריה לא מספיקה לחישוב הזווית.',
segmentSmallerThanFilter: 'המרחק של הקטע קטן מהסינון. מתעלמים...',
}
};
break;
case 'hi':
// Hindi
this.spdTranslations = {
name: 'स्पीड डिस्प्ले',
settingTabName: 'स्पीड डिस्प्ले सेटिंग्स',
enabled: 'सक्रिय',
disabled: 'निष्क्रिय',
zoomOut: 'और दूर',
zoomIn: 'और पास',
changelog: 'चेंजलॉग',
changelogMessage: '<h6>नवीनताएँ:</h6><ul style="margin-bottom: 10px"><li>अब आप स्क्रिप्ट लेयर की दृश्यता को बदलने के तरीके के बारे में एक सूचना देख सकते हैं;</li><li>आप आइकन नहीं देख पा रहे हैं? लेयर की गहराई बदलने का प्रयास करें;</li><li>क्या आपके पास बहुत सारे आइकन एक-दूसरे के पास हैं क्योंकि सेगमेंट छोटे हैं? कोई समस्या नहीं, बस सेगमेंट के आकार के अनुसार फ़िल्टर करें;</li><li>क्या आप विशेष गति वाले सेगमेंट ढूंढना चाहते हैं? बस फ़िल्टर का उपयोग करें;</li><li>क्या आप स्क्रिप्ट की डिफ़ॉल्ट सेटिंग्स पर लौटना चाहते हैं? बस सेटिंग्स टैब के अंत में बटन पर क्लिक करें।</li></ul><h6>सुधार:</h6><ul><li>Mac कंप्यूटर पर स्क्रिप्ट लेयर की दृश्यता को बदलने के लिए शॉर्टकट को ठीक किया गया;</li><li>पैदल यात्री सेगमेंट के लिए दृश्यता फ़िल्टर को हटा दिया गया, जिनकी गति नहीं थी;</li><li>कोड में अन्य सुधार और सुधार।</li></ul>',
close: 'बंद करें',
viewScript: 'स्क्रिप्ट देखें',
showDialog: 'मोडल दिखाएं',
resetSettings: 'सेटिंग्स रीसेट करें',
viewChangelog: 'चेंजलॉग देखें',
reset: 'रीसेट',
title: {
general: 'सामान्य',
showOnRoadType: 'इस प्रकार के सेगमेंट में दिखाएं:'
},
label: {
displaySpeeds: 'गति दिखाएं',
showNoSpeed: 'गति के बिना सेगमेंट में दिखाएं',
showOnRoundabout: 'राउंडअबाउट में दिखाएं',
showOnUnpaved: 'अस्फल्टेड सड़कों पर दिखाएं',
maxZoom: 'जूम स्तर तक रेंडर करें:',
toggleLayerShortcut: 'स्पीड डिस्प्ले लेयर बदलें',
zIndex: 'लेयर की गहराई',
hideShorterSegments: 'छोटे सेगमेंट को छुपाएं',
speedFilter: 'गति के अनुसार फ़िल्टर करें',
min: 'न्यूनतम:',
max: 'अधिकतम:',
},
alertMessage: {
zIndex: `यदि आप <b>${this.zIndex.warn}</b> से बड़ी लेयर गहराई का उपयोग करते हैं, तो स्पीड डिस्प्ले अन्य लेयर्स के ऊपर आ जाएगा और स्क्रीन पर कोई भी तत्व चयनित नहीं किया जा सकेगा, जब तक कि आप इसे <b>${this.zIndex.warn}</b> से नीचे नहीं कर देते।`,
toggleVisibility: `स्पीड डिस्प्ले लेयर को सक्रिय/निष्क्रिय करने के लिए, बस <b>मैप लेयर्स > सड़कें > स्पीड डिस्प्ले</b> पर जाएं या शॉर्टकट का उपयोग करें ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'मेन्यू अपडेट करें',
},
log: {
wmeReadyStartScript: 'WME लोड हो चुका है और तैयार है। स्क्रिप्ट शुरू हो रही है...',
waitingWme: 'WME के तैयार होने का इंतजार कर रहे हैं...',
wmeReadyStartingPlugin: 'WME तैयार है। कस्टम लेयर सेट हो रही है...',
shortSleep: 'सब कुछ लोड होने के लिए एक सेकंड का इंतजार कर रहे हैं...',
updateMapDisplay: 'मैप डिस्प्ले को अपडेट कर रहे हैं...',
maxZoomExceeded: 'अधिकतम जूम सीमा पार हो गई है। कोई गति प्रदर्शित नहीं की जाएगी।',
noneSegment: 'कोई सेगमेंट नहीं मिला।',
numSegmentsLoaded: 'लोड किए गए सेगमेंट्स की संख्या:',
attributesNotFound: 'सेगमेंट में एट्रिब्यूट्स नहीं पाए गए या अनुपस्थित हैं',
disallowedSegment: 'यह सेगमेंट लोड नहीं होना चाहिए।',
invalidGeometry: 'सेगमेंट में अमान्य ज्यामिति:',
updateMapDisplayFinished: 'अपडेट पूरा हो गया।',
shortCutDialogNotFound: 'कीबोर्ड शॉर्टकट डायलॉग नहीं मिला। पुनः प्रयास कर रहे हैं...',
houseNumberCheckboxNotFound: '"हाउस नंबर" चेकबॉक्स नहीं मिला। पुनः प्रयास कर रहे हैं...',
scriptsTabNotFound: 'स्क्रिप्ट पैनल नहीं मिला। पुनः प्रयास कर रहे हैं...',
settingsTabAdded: 'सेटिंग्स टैब जोड़ा गया।',
speedLayer: 'स्पीड लेयर',
opacityUpdated: 'आइकन की पारदर्शिता को अपडेट किया गया:',
updatingSettingsTab: 'सेटिंग्स टैब को अपडेट किया जा रहा है...',
languageDefined: 'भाषाएं परिभाषित की गई हैं।',
checkingVersion: 'स्क्रिप्ट का संस्करण चेक कर रहे हैं।',
insufficientGeometryAngleCalc: 'कोण की गणना के लिए अपर्याप्त ज्यामिति।',
segmentSmallerThanFilter: 'सेगमेंट की लंबाई फ़िल्टर से छोटी है। अनदेखा कर रहे हैं...',
}
};
break;
case 'hr':
// Croatian
this.spdTranslations = {
name: 'Prikaz brzine',
settingTabName: 'Postavke prikaza brzine',
enabled: 'omogućeno',
disabled: 'onemogućeno',
zoomOut: 'Više udaljeno',
zoomIn: 'Više približeno',
changelog: 'Povijest izmjena',
changelogMessage: '<h6>Novosti:</h6><ul style="margin-bottom: 10px"><li>Sada možete vidjeti obavijest o tome kako promijeniti vidljivost sloja skripte;</li><li>Ne možete vidjeti ikonu? Pokušajte promijeniti dubinu sloja;</li><li>Imate previše ikona blizu jedna drugoj zbog veličine segmenata? Nema problema, samo filtrirajte veličinu segmenta;</li><li>Želite pronaći segmente s određenim brzinama? Samo koristite filter;</li><li>Želite se vratiti na zadane postavke skripte? Jednostavno kliknite gumb na kraju kartice postavki.</li></ul><h6>Ispravci:</h6><ul><li>Ispravljen je prečac za promjenu vidljivosti sloja skripte na Mac računalima;</li><li>Uklonjen je filter za prikaz pješačkih segmenata koji nemaju brzinu;</li><li>Ostale ispravke i poboljšanja koda.</li></ul>',
close: 'Zatvori',
viewScript: 'Pogledaj skriptu',
showDialog: 'Prikaz modalnog prozora',
resetSettings: 'Vrati postavke na zadane',
viewChangelog: 'Pogledaj povijest izmjena',
reset: 'Poništi',
title: {
general: 'Općenito',
showOnRoadType: 'Prikaz na segmentima tipa:'
},
label: {
displaySpeeds: 'Prikazuj brzine',
showNoSpeed: 'Prikazuj na segmentima bez brzine',
showOnRoundabout: 'Prikazuj na kružnim tokovima',
showOnUnpaved: 'Prikazuj na neasfaltiranim cestama',
maxZoom: 'Prikazuj do razine zooma:',
toggleLayerShortcut: 'Prekidač sloja za prikaz brzine',
zIndex: 'Dubina sloja',
hideShorterSegments: 'Sakrij segmente kraće od',
speedFilter: 'Filtriraj prema brzini',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Ako koristite dubinu sloja veću od <b>${this.zIndex.warn}</b>, sloj brzine će se preklapati s drugim slojevima i neće biti moguće odabrati bilo koji element na ekranu dok ga ne spustite ispod <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Za aktiviranje/deaktiviranje sloja prikaza brzine, jednostavno idite na <b>Slabe mape > Ceste > Prikaz brzina</b> ili koristite prečac ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Ažuriraj izbornik',
},
log: {
wmeReadyStartScript: 'WME je učitan i spreman. Pokrećem skriptu...',
waitingWme: 'Čekam da WME bude spreman...',
wmeReadyStartingPlugin: 'WME je spreman. Postavljam prilagođeni sloj...',
shortSleep: 'Čekam oko 1 sekundu za sve da se učita...',
updateMapDisplay: 'Ažuriram prikaz na karti...',
maxZoomExceeded: 'Prekoračena maksimalna razina zooma. Brzina neće biti prikazana.',
noneSegment: 'Nema pronađenih segmenata.',
numSegmentsLoaded: 'Ukupno učitanih segmenata:',
attributesNotFound: 'Nisu pronađeni atributi ili su nedostajali na segmentu',
disallowedSegment: 'Ovaj tip segmenta ne smije biti učitan.',
invalidGeometry: 'Neispravna geometrija na segmentu:',
updateMapDisplayFinished: 'Ažuriranje završeno.',
shortCutDialogNotFound: 'Modalni prozor za prečace na tipkovnici nije pronađen. Pokušavam ponovo...',
houseNumberCheckboxNotFound: '"Kućni broj" kutija za označavanje nije pronađena. Pokušavam ponovo...',
scriptsTabNotFound: 'Ploča skripti nije pronađena. Pokušavam ponovo...',
settingsTabAdded: 'Dodana kartica postavki.',
speedLayer: 'Sloj brzine',
opacityUpdated: 'Prozirnost ikona ažurirana na',
updatingSettingsTab: 'Ažuriram karticu postavki...',
languageDefined: 'Jezici su definirani.',
checkingVersion: 'Provjeravam verziju skripte.',
insufficientGeometryAngleCalc: 'Nedovoljna geometrija za izračun kuta.',
segmentSmallerThanFilter: 'Dužina segmenta manja je od filtra. Ignoriram...',
}
};
break;
case 'hu':
// Hungarian
this.spdTranslations = {
name: 'Sebesség megjelenítése',
settingTabName: 'Sebesség megjelenítési beállítások',
enabled: 'engedélyezve',
disabled: 'letiltva',
zoomOut: 'Távolabb',
zoomIn: 'Közelebb',
changelog: 'Változási napló',
changelogMessage: '<h6>Újdonságok:</h6><ul style="margin-bottom: 10px"><li>Mostantól megjeleníthet egy figyelmeztetést, amely elmagyarázza, hogyan változtathatja meg a szkript réteg láthatóságát;</li><li>Nem látja az ikont? Próbálja meg módosítani a réteg mélységét;</li><li>Túl sok ikon van egymás közelében a szegmensek mérete miatt? Nincs gond, egyszerűen szűrje a szegmensek méretét;</li><li>Szeretne olyan szegmenseket találni, amelyek specifikus sebességgel rendelkeznek? Használja a szűrőt;</li><li>Vissza szeretne térni a szkript alapértelmezett beállításaihoz? Kattintson az alapbeállítások gombra a beállítási lap alján.</li></ul><h6>Korrigálások:</h6><ul><li>Javítva a szkript réteg láthatóságának gyorsbillentyűje Mac gépeken;</li><li>Eltávolítva a gyalogos szegmensek megjelenítésére szolgáló szűrő, amelyek nem rendelkeztek sebességgel;</li><li>Más hibajavítások és kódbeli fejlesztések.</li></ul>',
close: 'Bezárás',
viewScript: 'Szkript megtekintése',
showDialog: 'Modal megjelenítése',
resetSettings: 'Beállítások visszaállítása',
viewChangelog: 'Változási napló megtekintése',
reset: 'Visszaállítás',
title: {
general: 'Általános',
showOnRoadType: 'Megjelenítés ezen típusú szegmenseken:'
},
label: {
displaySpeeds: 'Sebességek megjelenítése',
showNoSpeed: 'Megjelenítés sebesség nélküli szegmenseken',
showOnRoundabout: 'Megjelenítés körforgalomban',
showOnUnpaved: 'Megjelenítés burkolatlan úton',
maxZoom: 'Renderelés legnagyobb zoom szinten:',
toggleLayerShortcut: 'Sebesség réteg átváltása',
zIndex: 'Réteg mélysége',
hideShorterSegments: 'Rejtsd el a rövidebb szegmenseket, mint',
speedFilter: 'Szűrés sebesség szerint',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Ha a réteg mélysége nagyobb, mint <b>${this.zIndex.warn}</b>, a sebesség réteg átfedheti a többi réteget, és nem lesz lehetőség semmilyen elem kiválasztására a képernyőn, amíg le nem csökkenti <b>${this.zIndex.warn}</b> alá.`,
toggleVisibility: `A sebesség réteg láthatóságának aktiválásához/deaktiválásához egyszerűen menjen ide: <b>Térképrétegek > Út > Sebesség megjelenítése</b>, vagy használja a gyorsbillentyűt ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Menü frissítése',
},
log: {
wmeReadyStartScript: 'A WME betöltve és készen áll. Szkript indítása...',
waitingWme: 'Várok, amíg a WME készen áll...',
wmeReadyStartingPlugin: 'A WME készen áll. Egyedi réteg beállítása...',
shortSleep: 'Várok körülbelül 1 másodpercet, hogy minden betöltődjön...',
updateMapDisplay: 'Térképi megjelenítés frissítése...',
maxZoomExceeded: 'Túl nagy zoom. Sebesség nem lesz megjelenítve.',
noneSegment: 'Nem található szegmens.',
numSegmentsLoaded: 'Betöltött szegmensek száma:',
attributesNotFound: 'Nem találhatók az attribútumok, vagy hiányoznak a szegmensen',
disallowedSegment: 'Ez a típusú szegmens nem tölthető be.',
invalidGeometry: 'Érvénytelen geometria a szegmensen:',
updateMapDisplayFinished: 'Frissítés befejezve.',
shortCutDialogNotFound: 'Nem található a billentyűparancsok modal ablak. Újra próbálom...',
houseNumberCheckboxNotFound: '"Házszám" jelölőnégyzet nem található. Újra próbálom...',
scriptsTabNotFound: 'A szkriptek lapja nem található. Újra próbálom...',
settingsTabAdded: 'Beállítások lap hozzáadva.',
speedLayer: 'Sebesség réteg',
opacityUpdated: 'Ikonok átlátszósága frissítve:',
updatingSettingsTab: 'Beállítások lap frissítése...',
languageDefined: 'Nyelvek meghatározva.',
checkingVersion: 'A szkript verziójának ellenőrzése.',
insufficientGeometryAngleCalc: 'Nem elegendő geometria az szög kiszámításához.',
segmentSmallerThanFilter: 'A szegmens hossza kisebb, mint a szűrő. Figyelmen kívül hagyva...',
}
};
break;
case 'id':
// Indonesian
this.spdTranslations = {
name: 'Tampilan Kecepatan',
settingTabName: 'Pengaturan Tampilan Kecepatan',
enabled: 'diaktifkan',
disabled: 'dinonaktifkan',
zoomOut: 'Lebih jauh',
zoomIn: 'Lebih dekat',
changelog: 'Catatan perubahan',
changelogMessage: '<h6>Pembaruan:</h6><ul style="margin-bottom: 10px"><li>Sekarang Anda dapat melihat peringatan tentang cara mengubah visibilitas lapisan skrip;</li><li>Tidak dapat melihat ikon? Cobalah untuk mengubah kedalaman lapisan;</li><li>Apakah banyak ikon yang saling berdekatan karena ukuran segmen? Tidak masalah, cukup saring berdasarkan ukuran segmen;</li><li>Ingin menemukan segmen dengan kecepatan tertentu? Gunakan filter;</li><li>Ingin kembali ke pengaturan default skrip? Cukup klik tombol di bagian bawah tab pengaturan.</li></ul><h6>Perbaikan:</h6><ul><li>Memperbaiki pintasan untuk mengubah visibilitas lapisan skrip di komputer Mac;</li><li>Menonaktifkan filter tampilan untuk segmen pejalan kaki yang tidak memiliki kecepatan;</li><li>Perbaikan lain dan peningkatan kode.</li></ul>',
close: 'Tutup',
viewScript: 'Lihat skrip',
showDialog: 'Tampilkan modal',
resetSettings: 'Atur ulang pengaturan',
viewChangelog: 'Lihat catatan perubahan',
reset: 'Atur ulang',
title: {
general: 'Umum',
showOnRoadType: 'Tampilkan pada segmen tipe:'
},
label: {
displaySpeeds: 'Tampilkan kecepatan',
showNoSpeed: 'Tampilkan pada segmen tanpa kecepatan',
showOnRoundabout: 'Tampilkan di bundaran',
showOnUnpaved: 'Tampilkan di jalan tidak beraspal',
maxZoom: 'Render hingga zoom:',
toggleLayerShortcut: 'Toggling lapisan tampilan kecepatan',
zIndex: 'Kedalaman lapisan',
hideShorterSegments: 'Sembunyikan pada segmen yang lebih pendek dari',
speedFilter: 'Filter berdasarkan kecepatan',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Jika kedalaman lapisan lebih besar dari <b>${this.zIndex.warn}</b>, lapisan kecepatan akan menutupi lapisan lain dan Anda tidak akan dapat memilih elemen di layar sampai Anda menurunkan kedalaman lapisan kembali di bawah <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Untuk mengaktifkan/mematikan lapisan tampilan kecepatan, cukup pergi ke <b>Lapisan Peta > Jalan > Tampilkan kecepatan</b> atau gunakan pintasan ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Perbarui menu',
},
log: {
wmeReadyStartScript: 'WME dimuat dan siap. Memulai skrip...',
waitingWme: 'Menunggu WME siap...',
wmeReadyStartingPlugin: 'WME siap. Menyiapkan lapisan kustom...',
shortSleep: 'Menunggu sekitar 1 detik untuk memuat semuanya...',
updateMapDisplay: 'Memperbarui tampilan peta...',
maxZoomExceeded: 'Zoom maksimal tercapai. Kecepatan tidak akan ditampilkan.',
noneSegment: 'Tidak ada segmen ditemukan.',
numSegmentsLoaded: 'Jumlah segmen yang dimuat:',
attributesNotFound: 'Tidak dapat menemukan atribut atau hilang pada segmen',
disallowedSegment: 'Tipe segmen ini tidak boleh dimuat.',
invalidGeometry: 'Geometri tidak valid pada segmen:',
updateMapDisplayFinished: 'Pembaruan selesai.',
shortCutDialogNotFound: 'Dialog pintasan tidak ditemukan. 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 diperbarui ke',
updatingSettingsTab: 'Memperbarui tab pengaturan...',
languageDefined: 'Bahasa telah didefinisikan.',
checkingVersion: 'Memeriksa versi plugin.',
insufficientGeometryAngleCalc: 'Geometri tidak cukup untuk perhitungan sudut.',
segmentSmallerThanFilter: 'Panjang segmen lebih kecil dari filter. Mengabaikan...',
}
};
break;
case 'it':
// Italian
this.spdTranslations = {
name: 'Visualizzazione Velocità',
settingTabName: 'Impostazioni Visualizzazione Velocità',
enabled: 'attivato',
disabled: 'disattivato',
zoomOut: 'Zoom indietro',
zoomIn: 'Zoom avanti',
changelog: 'Registro modifiche',
changelogMessage: '<h6>Novità:</h6><ul style="margin-bottom: 10px"><li>Ora puoi visualizzare un avviso su come alternare la visibilità del layer dello script;</li><li>Non riesci a vedere l\'icona? Prova a cambiare la profondità del layer;</li><li>Ci sono troppe icone vicine tra loro a causa delle dimensioni dei segmenti? Nessun problema, basta filtrare per dimensione del segmento;</li><li>Vuoi trovare segmenti con velocità specifiche? Usa il filtro;</li><li>Vuoi ripristinare le impostazioni predefinite dello script? Basta cliccare sul pulsante in fondo alla scheda delle impostazioni.</li></ul><h6>Correzioni:</h6><ul><li>Corrido il tasto di scelta rapida per alternare la visibilità del layer dello script sui computer Mac;</li><li>Rimosso il filtro di visualizzazione per i segmenti pedonali, che non avevano velocità;</li><li>Altri bug fix e miglioramenti del codice.</li></ul>',
close: 'Chiudi',
viewScript: 'Vedi script',
showDialog: 'Mostra modal',
resetSettings: 'Ripristina impostazioni',
viewChangelog: 'Visualizza registro modifiche',
reset: 'Ripristina',
title: {
general: 'Generale',
showOnRoadType: 'Visualizza sui segmenti di tipo:'
},
label: {
displaySpeeds: 'Visualizza velocità',
showNoSpeed: 'Visualizza su segmento senza velocità',
showOnRoundabout: 'Visualizza su rotatoria',
showOnUnpaved: 'Visualizza su strada non asfaltata',
maxZoom: 'Renderizza fino allo zoom:',
toggleLayerShortcut: 'Alterna il layer di visualizzazione velocità',
zIndex: 'Profondità del layer',
hideShorterSegments: 'Nascondi nei segmenti più corti di',
speedFilter: 'Filtra per velocità',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Se utilizzi una profondità del layer maggiore di <b>${this.zIndex.warn}</b>, il layer della velocità coprirà gli altri e non sarà possibile selezionare alcun elemento sulla mappa finché non riduci nuovamente la profondità sotto <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Per attivare/disattivare il layer di visualizzazione delle velocità, vai su <b>Layer Mappa > Strade > Visualizza velocità</b> o usa la scorciatoia ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Aggiorna menu',
},
log: {
wmeReadyStartScript: 'WME caricato e pronto. Avvio dello script...',
waitingWme: 'In attesa che WME sia pronto...',
wmeReadyStartingPlugin: 'WME pronto. Configurazione layer personalizzato...',
shortSleep: 'Attendere circa 1 secondo per caricare tutto...',
updateMapDisplay: 'Aggiornamento visualizzazione mappa...',
maxZoomExceeded: 'Zoom massimo raggiunto. Nessuna velocità verrà mostrata.',
noneSegment: 'Nessun segmento trovato.',
numSegmentsLoaded: 'Numero di segmenti caricati:',
attributesNotFound: 'Impossibile trovare gli attributi o sono assenti nel segmento',
disallowedSegment: 'Questo tipo di segmento non deve essere caricato.',
invalidGeometry: 'Geometria non valida nel segmento:',
updateMapDisplayFinished: 'Aggiornamento completato.',
shortCutDialogNotFound: 'Non è stato trovato il dialogo della scorciatoia da tastiera. Riprovo...',
houseNumberCheckboxNotFound: 'La checkbox "Numeri civici" non è stata trovata. Riprovo...',
scriptsTabNotFound: 'La scheda degli script non è stata trovata. Riprovo...',
settingsTabAdded: 'Scheda delle impostazioni aggiunta.',
speedLayer: 'Layer della velocità',
opacityUpdated: 'Opacità delle icone aggiornata a',
updatingSettingsTab: 'Aggiornamento scheda delle impostazioni...',
languageDefined: 'Lingua definita.',
checkingVersion: 'Verifica versione del plugin.',
insufficientGeometryAngleCalc: 'Geometria insufficiente per il calcolo dell\'angolo.',
segmentSmallerThanFilter: 'Il segmento è più piccolo del filtro. Ignorato...',
}
};
break;
case 'ja':
// Japanese
this.spdTranslations = {
name: '速度表示',
settingTabName: '速度表示設定',
enabled: '有効',
disabled: '無効',
zoomOut: 'ズームアウト',
zoomIn: 'ズームイン',
changelog: '変更履歴',
changelogMessage: '<h6>新機能:</h6><ul style="margin-bottom: 10px"><li>スクリプトのレイヤーの表示を切り替える方法についての通知が表示されるようになりました;</li><li>アイコンが見えませんか? レイヤーの深度を変更してみてください;</li><li>セグメントのサイズのためにアイコンが重なっている場合は、セグメントのサイズでフィルターをかけてください;</li><li>特定の速度のセグメントを見つけたいですか? フィルターを使用してください;</li><li>スクリプトのデフォルト設定に戻したいですか? 設定タブの一番下にあるボタンをクリックしてください。</li></ul><h6>修正:</h6><ul><li>Macコンピュータでのスクリプトのレイヤー表示切り替えショートカットを修正;</li><li>速度がない歩行者セグメントの表示フィルターを削除;</li><li>その他のバグ修正とコードの改善。</li></ul>',
close: '閉じる',
viewScript: 'スクリプトを見る',
showDialog: 'モーダルを表示',
resetSettings: '設定をリセット',
viewChangelog: '変更履歴を見る',
reset: 'リセット',
title: {
general: '一般',
showOnRoadType: '次のタイプのセグメントに表示:',
},
label: {
displaySpeeds: '速度を表示',
showNoSpeed: '速度なしのセグメントに表示',
showOnRoundabout: 'ラウンドアバウトに表示',
showOnUnpaved: '未舗装道路に表示',
maxZoom: 'ズーム最大:',
toggleLayerShortcut: '速度表示レイヤーを切り替える',
zIndex: 'レイヤーの深度',
hideShorterSegments: '次の長さ未満のセグメントを非表示:',
speedFilter: '速度でフィルタリング',
min: '最小:',
max: '最大:',
},
alertMessage: {
zIndex: `レイヤーの深度を <b>${this.zIndex.warn}</b> より大きく設定すると、速度レイヤーが他のレイヤーを覆い、再び <b>${this.zIndex.warn}</b> 以下に戻すまでマップ上の要素を選択できなくなります。`,
toggleVisibility: `速度表示レイヤーをオン/オフにするには、<b>マップレイヤー > 道路 > 速度表示</b>に移動するか、ショートカット ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b> を使用してください。`
},
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: 'プラグインのバージョンを確認中。',
insufficientGeometryAngleCalc: '角度計算に十分なジオメトリがありません。',
segmentSmallerThanFilter: 'セグメントの長さがフィルターより短いため、無視されました...',
}
};
break;
case 'ka':
// Georgian
this.spdTranslations = {
name: 'სისწრაფის ჩვენება',
settingTabName: 'სისწრაფის ჩვენების პარამეტრები',
enabled: 'ჩართული',
disabled: 'გამორთული',
zoomOut: 'გამორთვა',
zoomIn: 'ზუმი',
changelog: 'შეცდომების ჩანაწერი',
changelogMessage: '<h6>ახალი ფუნქციები:</h6><ul style="margin-bottom: 10px"><li>ახლა შესაძლებელია ნახოთ შეტყობინება, თუ როგორ გადავრთოთ სქრიპტის ფენის ხილვადობა;</li><li>თუ აიკონის ნახვა არ ხდება, სცადეთ ფენის სიღრმის შეცვლა;</li><li>თუ ბევრი აიკონი გროვდება პატარა სეგმენტებზე, დააკლეთ სეგმენტის ზომა;</li><li>მოსაძებნად სეგმენტები გარკვეული სისწრაფით, გამოიყენეთ ფილტრი;</li><li>თუ გსურთ გადატვირთოთ სქრიპტის მიერ განსაზღვრული პარამეტრები, უბრალოდ დააჭირეთ ღილაკს პარამეტრების განყოფილების ბოლოში.</li></ul><h6>დასწორებები:</h6><ul><li>მაკ კომპიუტერებში სქრიპტის ფენის ხილვადობის გადართვის ცხელი კლავიშები ამოღებული;</li><li>მომხმარებელმა არ დაინახა სისწრაფე პედესტრიანის სეგმენტებში, რომლებიც არ შეიცავენ სისწრაფეს;</li><li>მეორე კოდური განახლებები და შეცდომების ამოღება.</li></ul>',
close: 'დახურვა',
viewScript: 'იხილეთ სქრიპტი',
showDialog: 'მოდალის ჩვენება',
resetSettings: 'პარამეტრების გადატვირთვა',
viewChangelog: 'შეცდომების ჩანაწერის ნახვა',
reset: 'გადატვირთვა',
title: {
general: 'ზოგადი',
showOnRoadType: 'გაჩერეთ შემდეგ ტიპის სეგმენტებზე:',
},
label: {
displaySpeeds: 'სისწრაფის ჩვენება',
showNoSpeed: 'სიჩქარის გარეშე სეგმენტებზე ჩვენება',
showOnRoundabout: 'საკვანძო გზებზე ჩვენება',
showOnUnpaved: 'აუცილებელი გზების გამოფენა',
maxZoom: 'ზუმის მაქსიმალური დონე:',
toggleLayerShortcut: 'სისწრაფის ფენის გადართვის ცხელი კლავიშები',
zIndex: 'ფენის სიღრმე',
hideShorterSegments: 'დამალვა, თუ სეგმენტი არის ამცირებელი:',
speedFilter: 'ფილტრი სიჩქარის მიხედვით',
min: 'მინიმუმ:',
max: 'მაქსიმუმ:',
},
alertMessage: {
zIndex: `თუ გამოიყენეთ ფენის სიღრმე <b>${this.zIndex.warn}</b> მეტი, სისწრაფის ფენა დახურავს ყველა სხვა ფენებს და ვერ შეარჩიეთ ელემენტები ეკრანზე სანამ არ დააბრუნებთ სიღრმე <b>${this.zIndex.warn}</b> ქვემოთ.`,
toggleVisibility: `სიჩქარის ფენის ჩართვის/გამორთვისთვის, გთხოვთ გადადით <b>მოგზაურობა > გზები > სიჩქარის ნახვა</b> ან გამოიყენეთ ცხელი კლავიშები ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
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: 'პლაგინის ვერსიის შემოწმება.',
insufficientGeometryAngleCalc: 'მოჭედვისთვის საკმარისი გეომეტრია არ არის.',
segmentSmallerThanFilter: 'სეგმენტი მოკლებულია ფილტრის მიხედვით. იგნორირება...',
}
};
break;
case 'ko':
// Korean
this.spdTranslations = {
name: '속도 표시',
settingTabName: '속도 표시 설정',
enabled: '활성화됨',
disabled: '비활성화됨',
zoomOut: '줌 아웃',
zoomIn: '줌 인',
changelog: '변경 기록',
changelogMessage: '<h6>새로운 기능:</h6><ul style="margin-bottom: 10px"><li>이제 스크립트 레이어의 가시성을 전환하는 방법에 대한 알림을 볼 수 있습니다;</li><li>아이콘이 보이지 않나요? 레이어의 깊이를 변경해 보세요;</li><li>세그먼트 크기 때문에 아이콘이 너무 가까워졌나요? 세그먼트 크기를 필터링해 보세요;</li><li>특정 속도 세그먼트를 찾고 싶나요? 필터를 사용하세요;</li><li>스크립트의 기본 설정으로 되돌리고 싶으신가요? 설정 탭 끝에서 버튼을 클릭하세요.</li></ul><h6>수정 사항:</h6><ul><li>Mac 컴퓨터에서 스크립트 레이어 가시성 전환 단축키가 수정되었습니다;</li><li>속도가 없는 보행자 세그먼트의 표시 필터가 제거되었습니다;</li><li>기타 코드 수정 및 개선 사항.</li></ul>',
close: '닫기',
viewScript: '스크립트 보기',
showDialog: '모달 표시',
resetSettings: '설정 초기화',
viewChangelog: '변경 기록 보기',
reset: '초기화',
title: {
general: '일반',
showOnRoadType: '다음 유형의 세그먼트에 표시:',
},
label: {
displaySpeeds: '속도 표시',
showNoSpeed: '속도 없는 세그먼트에 표시',
showOnRoundabout: '로터리에서 표시',
showOnUnpaved: '비포장 도로에서 표시',
maxZoom: '최대 줌:',
toggleLayerShortcut: '속도 레이어 전환 단축키',
zIndex: '레이어 깊이',
hideShorterSegments: '이보다 짧은 세그먼트 숨기기',
speedFilter: '속도 필터',
min: '최소:',
max: '최대:',
},
alertMessage: {
zIndex: `레이어 깊이가 <b>${this.zIndex.warn}</b>를 초과하면 속도 레이어가 다른 레이어 위에 표시되어 화면에서 다른 요소를 선택할 수 없게 됩니다. 다시 <b>${this.zIndex.warn}</b> 이하로 낮추기 전까지 선택할 수 없습니다.`,
toggleVisibility: `속도 레이어의 가시성을 활성화/비활성화하려면 <b>맵 레이어 > 도로 > 속도 표시</b>로 이동하거나 단축키 ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>를 사용하세요.`
},
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: '플러그인 버전 확인 중...',
insufficientGeometryAngleCalc: '각도 계산을 위한 기하학적 정보가 부족합니다.',
segmentSmallerThanFilter: '세그먼트가 필터보다 작습니다. 무시합니다...',
}
};
break;
case 'lt':
// Lithuanian
this.spdTranslations = {
name: 'Greitis Rodymas',
settingTabName: 'Greičio Rodymo Nustatymai',
enabled: 'Įjungta',
disabled: 'Išjungta',
zoomOut: 'Toliau',
zoomIn: 'Arčiau',
changelog: 'Pakeitimų Žurnalas',
changelogMessage: '<h6>Naujienos:</h6><ul style="margin-bottom: 10px"><li>Dabar galite matyti pranešimą, kaip pereiti prie sluoksnio matomumo keitimo;</li><li>Nematai piktogramos? Pabandyk pakeisti sluoksnio gylį;</li><li>Per daug piktogramų arti viena kitos dėl segmentų dydžio? Nesijaudink, tiesiog filtruok segmentų dydį;</li><li>Norite rasti segmentus su konkrečiomis greičio vertėmis? Naudokite filtrą;</li><li>Norite sugrąžinti numatytuosius nustatymus? Tiesiog paspauskite mygtuką nustatymų skiltyje.</li></ul><h6>Klaidų taisymai:</h6><ul><li>Mac kompiuteriuose buvo ištaisyta sluoksnio matomumo perjungimo klaviatūros kombinacija;</li><li>Pašalintas filtravimas, skirtas pėsčiųjų segmentams, kurie neturėjo greičio;</li><li>Įvairūs klaidų taisymai ir kodo patobulinimai.</li></ul>',
close: 'Uždaryti',
viewScript: 'Peržiūrėti scenarijų',
showDialog: 'Rodyti modalą',
resetSettings: 'Atstatyti nustatymus',
viewChangelog: 'Peržiūrėti pakeitimų žurnalą',
reset: 'Atstatyti',
title: {
general: 'Bendrieji',
showOnRoadType: 'Rodyti šiuose segmentų tipuose:'
},
label: {
displaySpeeds: 'Rodyti greičius',
showNoSpeed: 'Rodyti segmentuose be greičio',
showOnRoundabout: 'Rodyti žiedinėse sankryžose',
showOnUnpaved: 'Rodyti neasfaltuotose keliose',
maxZoom: 'Rodyti iki židinio lygio:',
toggleLayerShortcut: 'Perjungti greičio sluoksnį',
zIndex: 'Sluoksnio gylis',
hideShorterSegments: 'Slėpti trumpesnius nei',
speedFilter: 'Filtruoti pagal greitį',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Naudojant sluoksnio gylį, kuris yra didesnis nei <b>${this.zIndex.warn}</b>, greičio sluoksnis uždengs kitus sluoksnius ir negalėsite pasirinkti jokio elemento ekrane, kol vėl nepasieksite gylio žemiau <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Norėdami įjungti/išjungti greičio sluoksnio matomumą, eikite į <b>Žemėlapių sluoksniai > Keliai > Rodyti greičius</b> arba naudokite klaviatūros kombinaciją ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Atnaujinti meniu',
},
log: {
wmeReadyStartScript: 'WME įkeltas ir pasiruošęs. Pradedame scenarijų...',
waitingWme: 'Laukiama, kol WME bus pasiruošęs...',
wmeReadyStartingPlugin: 'WME pasiruošęs. Nustatome pasirinktinius sluoksnius...',
shortSleep: 'Palaukiama 1 sekundę, kol viskas užsikraus...',
updateMapDisplay: 'Atnaujinamas žemėlapio vaizdas...',
maxZoomExceeded: 'Pasiektas maksimalus židinio lygis. Greitis nebus rodomas.',
noneSegment: 'Nerasta segmentų.',
numSegmentsLoaded: 'Įkeliama segmentų: ',
attributesNotFound: 'Nepavyko rasti atributų arba jie trūksta segmente',
disallowedSegment: 'Šio tipo segmentas neturėtų būti įkeltas.',
invalidGeometry: 'Netinkama geometrija segmente:',
updateMapDisplayFinished: 'Atnaujinimas baigtas.',
shortCutDialogNotFound: 'Nepavyko rasti klaviatūros nuorodų modalą. Bandome dar kartą...',
houseNumberCheckboxNotFound: 'Nepavyko rasti „Namų numerių“ žymėjimo laukelio. Bandome dar kartą...',
scriptsTabNotFound: 'Nepavyko rasti scenarijų skilties. Bandome dar kartą...',
settingsTabAdded: 'Nustatymų skiltis pridėta.',
speedLayer: 'Greičio sluoksnis',
opacityUpdated: 'Piktogramų skaidrumas atnaujintas į',
updatingSettingsTab: 'Atnaujinama nustatymų skiltis...',
languageDefined: 'Nustatyti kalbos nustatymai.',
checkingVersion: 'Tikrinama papildinio versija.',
insufficientGeometryAngleCalc: 'Neužtenka geometrijos kampo skaičiavimui.',
segmentSmallerThanFilter: 'Segmento ilgis yra mažesnis už filtrą. Nepaisoma...',
}
};
break;
case 'lv':
// Latvian
this.spdTranslations = {
name: 'Ātruma Rādīšana',
settingTabName: 'Ātruma Rādīšanas 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 varat redzēt ziņojumu, kā pārslēgt slāņa redzamību;</li><li>Nevar redzēt ikonu? Mēģiniet mainīt slāņa dziļumu;</li><li>Vai ikonas ir pārāk tuvu viena otrai dēļ segmentu izmēra? Neuztraucieties, vienkārši filtrējiet segmentu izmēru;</li><li>Vai vēlaties atrast segmentus ar konkrētiem ātrumiem? Izmantojiet filtru;</li><li>Vēlaties atgriezt sākotnējos iestatījumus? Vienkārši noklikšķiniet uz pogas iestatījumu cilnē.</li></ul><h6>Kļūdu labojumi:</h6><ul><li>Mac datoros tika labota slāņa redzamības pārslēgšanas īsinājumtaustiņu problēma;</li><li>Noņemts filtrs gājēju segmentiem, kuriem nebija ātruma;</li><li>Citi kļūdu labojumi un koda uzlabojumi.</li></ul>',
close: 'Aizvērt',
viewScript: 'Skatīt Skriptu',
showDialog: 'Rādīt Modālu',
resetSettings: 'Atiestatīt Iestatījumus',
viewChangelog: 'Skatīt Izmaiņu Žurnālu',
reset: 'Atiestatīt',
title: {
general: 'Vispārējie',
showOnRoadType: 'Rādīt šajos ceļa segmentu tipos:'
},
label: {
displaySpeeds: 'Rādīt ātrumus',
showNoSpeed: 'Rādīt segmentos bez ātruma',
showOnRoundabout: 'Rādīt aplī',
showOnUnpaved: 'Rādīt neasfaltētajos ceļos',
maxZoom: 'Rādīt līdz palielināšanas līmenim:',
toggleLayerShortcut: 'Pārslēgt ātruma slāni',
zIndex: 'Slāņa dziļums',
hideShorterSegments: 'Paslēpt īsākus nekā',
speedFilter: 'Filtrēt pēc ātruma',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Izmantojot slāņa dziļumu, kas pārsniedz <b>${this.zIndex.warn}</b>, ātruma slānis pārklās citus slāņus, un nebūs iespējams izvēlēties nevienu elementu ekrānā līdz tā atkārtotai pazemināšanai zem <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Lai aktivizētu/deaktivizētu ātruma slāņa redzamību, vienkārši dodieties uz <b>Kartes Slāņi > Ceļi > Rādīt ātrumus</b> vai izmantojiet īsinājumtaustiņu ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Atjaunināt Meni',
},
log: {
wmeReadyStartScript: 'WME ielādēts un gatavs. Sākam skriptu...',
waitingWme: 'Gaidām, kamēr WME būs gatavs...',
wmeReadyStartingPlugin: 'WME ir gatavs. Iestatām pielāgotu slāni...',
shortSleep: 'Gaidām 1 sekundi, lai viss ielādētos...',
updateMapDisplay: 'Atjaunojam kartes attēlu...',
maxZoomExceeded: 'Maksimālais palielinājums pārsniegts. Ātrums netiks rādīts.',
noneSegment: 'Nav atrasti segmenti.',
numSegmentsLoaded: 'Ielādēto segmentu skaits:',
attributesNotFound: 'Neizdevās atrast atribūtus vai tie trūkst segmentā',
disallowedSegment: 'Šāda veida segments nedrīkst tikt ielādēts.',
invalidGeometry: 'Nederīga ģeometrija segmentā:',
updateMapDisplayFinished: 'Atjauninājums pabeigts.',
shortCutDialogNotFound: 'Neizdevās atrast klaviatūras īsinājumtaustiņu dialogu. Mēģinām vēlreiz...',
houseNumberCheckboxNotFound: 'Neizdevās atrast "Mājas numura" izvēles rūtiņu. Mēģinām vēlreiz...',
scriptsTabNotFound: 'Neizdevās atrast skriptu cilni. Mēģinām vēlreiz...',
settingsTabAdded: 'Iestatījumu cilne pievienota.',
speedLayer: 'Ātruma slānis',
opacityUpdated: 'Ikonu caurspīdīgums atjaunināts uz',
updatingSettingsTab: 'Atjaunojam iestatījumu cilni...',
languageDefined: 'Valodas iestatījumi noteikti.',
checkingVersion: 'Pārbaudām papildinājuma versiju.',
insufficientGeometryAngleCalc: 'Nepietiekama ģeometrija leņķa aprēķināšanai.',
segmentSmallerThanFilter: 'Segmenta garums ir mazāks nekā filtrs. Ignorēts...',
}
};
break;
case 'ms':
// Malay
this.spdTranslations = {
name: 'Papar Kelajuan',
settingTabName: 'Tetapan Papar Kelajuan',
enabled: 'Diaktifkan',
disabled: 'Dinonaktifkan',
zoomOut: 'Jauhkan',
zoomIn: 'Dekatkan',
changelog: 'Log Perubahan',
changelogMessage: '<h6>Perkara Baru:</h6><ul style="margin-bottom: 10px"><li>Kini anda boleh melihat pemberitahuan tentang cara menukar kebolehtampilan lapisan skrip;</li><li>Tidak dapat melihat ikon? Cuba tukar kedalaman lapisan;</li><li>Adakah ikon terlalu rapat antara satu sama lain disebabkan oleh saiz segmen? Tiada masalah, hanya tapis saiz segmen;</li><li>Mahukan segmen dengan kelajuan tertentu? Gunakan penapis;</li><li>Ingin kembali ke tetapan asal skrip? Klik butang di bahagian bawah tab tetapan.</li></ul><h6>Pembaikan:</h6><ul><li>Pembaikan pintasan untuk menukar kebolehtampilan lapisan skrip pada komputer Mac;</li><li>Penapis paparan untuk segmen pejalan kaki yang tiada kelajuan telah dibuang;</li><li>Pembaikan lain dan peningkatan kod.</li></ul>',
close: 'Tutup',
viewScript: 'Lihat Skrip',
showDialog: 'Paparkan Modal',
resetSettings: 'Tetapkan Semula Tetapan',
viewChangelog: 'Lihat Log Perubahan',
reset: 'Tetapkan Semula',
title: {
general: 'Umum',
showOnRoadType: 'Papar pada jenis segmen ini:'
},
label: {
displaySpeeds: 'Papar kelajuan',
showNoSpeed: 'Papar pada segmen tiada kelajuan',
showOnRoundabout: 'Papar pada bulatan',
showOnUnpaved: 'Papar pada jalan tidak berturap',
maxZoom: 'Paparkan sehingga tahap zum:',
toggleLayerShortcut: 'Tukar lapisan paparan kelajuan',
zIndex: 'Kedalaman lapisan',
hideShorterSegments: 'Sembunyikan pada segmen lebih pendek daripada',
speedFilter: 'Tapis mengikut kelajuan',
min: 'Min.:',
max: 'Maks.:',
},
alertMessage: {
zIndex: `Apabila menggunakan kedalaman lapisan lebih besar daripada <b>${this.zIndex.warn}</b>, lapisan kelajuan akan menutupi lapisan lain dan tiada elemen boleh dipilih pada skrin sehingga ia diturunkan di bawah <b>${this.zIndex.warn}</b> semula.`,
toggleVisibility: `Untuk menghidupkan/mematikan kebolehtampilan lapisan kelajuan, pergi ke <b>Lapisan Peta > Jalan > Papar kelajuan</b> atau gunakan pintasan ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Kemas kini Menu',
},
log: {
wmeReadyStartScript: 'WME dimuatkan dan bersedia. Memulakan skrip...',
waitingWme: 'Menunggu WME bersedia...',
wmeReadyStartingPlugin: 'WME sudah bersedia. Menyediakan lapisan tersuai...',
shortSleep: 'Menunggu lebih kurang 1 saat untuk semua dimuat...',
updateMapDisplay: 'Mengemas kini paparan peta...',
maxZoomExceeded: 'Zum maksimum tercapai. Tiada kelajuan akan dipaparkan.',
noneSegment: 'Tiada segmen dijumpai.',
numSegmentsLoaded: 'Jumlah segmen yang dimuatkan:',
attributesNotFound: 'Gagal mencari atribut atau tiada pada segmen',
disallowedSegment: 'Jenis segmen ini tidak boleh dimuatkan.',
invalidGeometry: 'Geometri tidak sah pada segmen:',
updateMapDisplayFinished: 'Kemaskini selesai.',
shortCutDialogNotFound: 'Gagal 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: 'Kebolehtelapan ikon dikemas kini kepada',
updatingSettingsTab: 'Mengemas kini tab tetapan...',
languageDefined: 'Bahasa ditentukan.',
checkingVersion: 'Menyemak versi plugin.',
insufficientGeometryAngleCalc: 'Geometri tidak mencukupi untuk pengiraan sudut.',
segmentSmallerThanFilter: 'Panjang segmen lebih kecil daripada penapis. Diabaikan...',
}
};
break;
case 'nl':
// Dutch
this.spdTranslations = {
name: 'Snelheidsweergave',
settingTabName: 'Snelheidsweergave-instellingen',
enabled: 'Ingeschakeld',
disabled: 'Uitgeschakeld',
zoomOut: 'Uitzoomen',
zoomIn: 'Inzoomen',
changelog: 'Wijzigingslog',
changelogMessage: '<h6>Nieuw:</h6><ul style="margin-bottom: 10px"><li>Je kunt nu een melding zien over hoe je de zichtbaarheid van de scriptlaag kunt wijzigen;</li><li>Zie je het pictogram niet? Probeer de laagdiepte te wijzigen;</li><li>Te veel pictogrammen dicht bij elkaar door de segmentgrootte? Geen probleem, filter gewoon de segmentgrootte;</li><li>Wil je segmenten met specifieke snelheden vinden? Gebruik gewoon de filter;</li><li>Wil je terugkeren naar de standaardinstellingen van het script? Klik gewoon op de knop onderaan het instellingenmenu.</li></ul><h6>Bugfixes:</h6><ul><li>De sneltoets voor het wisselen van de zichtbaarheid van de scriptlaag op Mac-computers is gecorrigeerd;</li><li>De filter voor het weergeven van voetgangerssegmenten zonder snelheid is verwijderd;</li><li>Andere bugfixes en codeverbeteringen.</li></ul>',
close: 'Sluiten',
viewScript: 'Bekijk script',
showDialog: 'Toon dialoog',
resetSettings: 'Herstel instellingen',
viewChangelog: 'Bekijk wijzigingslog',
reset: 'Reset',
title: {
general: 'Algemeen',
showOnRoadType: 'Weergeven op segmenttype:'
},
label: {
displaySpeeds: 'Toon snelheden',
showNoSpeed: 'Weergeven op segmenten zonder snelheid',
showOnRoundabout: 'Weergeven op rotonde',
showOnUnpaved: 'Weergeven op onverharde wegen',
maxZoom: 'Weergeven tot zoomniveau:',
toggleLayerShortcut: 'Wissel snel de snelheidsweergavelayer',
zIndex: 'Laagdiepte',
hideShorterSegments: 'Verberg segmenten korter dan',
speedFilter: 'Filter op snelheid',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Wanneer je een laagdiepte groter dan <b>${this.zIndex.warn}</b> gebruikt, zal de snelheidslaag de andere lagen bedekken en kun je geen elementen meer selecteren op het scherm totdat je de laagdiepte weer onder <b>${this.zIndex.warn}</b> brengt.`,
toggleVisibility: `Om de snelheidsweergavelayer in of uit te schakelen, ga naar <b>Kaartlagen > Wegen > Weergave van snelheden</b> of gebruik de sneltoets ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Werk menu bij',
},
log: {
wmeReadyStartScript: 'WME geladen en klaar. Script wordt gestart...',
waitingWme: 'Wachten tot WME klaar is...',
wmeReadyStartingPlugin: 'WME is klaar. Aangepaste laag wordt ingesteld...',
shortSleep: 'Even 1 seconde wachten zodat alles geladen is...',
updateMapDisplay: 'Kaartweergave wordt bijgewerkt...',
maxZoomExceeded: 'Maximaal zoomniveau overschreden. Snelheid wordt niet weergegeven.',
noneSegment: 'Geen segmenten gevonden.',
numSegmentsLoaded: 'Totaal aantal geladen segmenten:',
attributesNotFound: 'Attribuut kon niet gevonden worden of ontbreekt op segment',
disallowedSegment: 'Dit type segment mag niet worden geladen.',
invalidGeometry: 'Ongeldige geometrie op segment:',
updateMapDisplayFinished: 'Bijwerken voltooid.',
shortCutDialogNotFound: 'Sneltoetsdialoog niet gevonden. Probeer opnieuw...',
houseNumberCheckboxNotFound: 'Checkbox "Huisnummers" niet gevonden. Probeer opnieuw...',
scriptsTabNotFound: 'Script-tabblad niet gevonden. Probeer opnieuw...',
settingsTabAdded: 'Instellingen-tabblad toegevoegd.',
speedLayer: 'Snelheidslaag',
opacityUpdated: 'Opaciteit van pictogrammen bijgewerkt naar',
updatingSettingsTab: 'Instellingen-tabblad wordt bijgewerkt...',
languageDefined: 'Talen gedefinieerd.',
checkingVersion: 'Versie van de plugin wordt gecontroleerd.',
insufficientGeometryAngleCalc: 'Onvoldoende geometrie voor hoekberekening.',
segmentSmallerThanFilter: 'Segmentafstand is kleiner dan de filterwaarde. Wordt genegeerd...',
}
};
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>Nyheter:</h6><ul style="margin-bottom: 10px"><li>Du kan nå se en melding om hvordan du endrer synligheten til skriptlaget;</li><li>Ser du ikke ikonet? Prøv å endre lagdybden;</li><li>Er det for mange ikoner tett sammen på grunn av segmentstørrelsen? Ikke noe problem, filtrer segmentstørrelsen;</li><li>Vil du finne segmenter med spesifikke hastigheter? Bruk bare filteret;</li><li>Vil du gå tilbake til standardinnstillingene for skriptet? Klikk bare på knappen nederst i innstillingsfanen.</li></ul><h6>Feilrettinger:</h6><ul><li>Snarveien for å bytte synligheten til skriptlaget på Mac-datamaskiner er rettet;</li><li>Filtreringen for visning av fotgjengervia uten hastighet er fjernet;</li><li>Andre feilrettinger og kodeforbedringer.</li></ul>',
close: 'Lukk',
viewScript: 'Se skript',
showDialog: 'Vis dialog',
resetSettings: 'Tilbakestill innstillinger',
viewChangelog: 'Vis endringslogg',
reset: 'Tilbakestill',
title: {
general: 'Generelt',
showOnRoadType: 'Vis på segmenttype:'
},
label: {
displaySpeeds: 'Vis hastigheter',
showNoSpeed: 'Vis på segmenter uten hastighet',
showOnRoundabout: 'Vis på rundkjøring',
showOnUnpaved: 'Vis på uasfalterte veier',
maxZoom: 'Vis til zoomnivå:',
toggleLayerShortcut: 'Bytt visningslag for hastighet',
zIndex: 'Lagdybde',
hideShorterSegments: 'Skjul segmenter kortere enn',
speedFilter: 'Filtrer etter hastighet',
min: 'Min.:',
max: 'Maks.:',
},
alertMessage: {
zIndex: `Når du bruker en lagdybde større enn <b>${this.zIndex.warn}</b>, vil hastighetslaget overlappe de andre, og du vil ikke kunne velge noen elementer på skjermen før du senker lagdybden til under <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `For å aktivere/deaktivere visningslaget for hastigheter, kan du gå til <b>Kartlag > Veier > Vis hastigheter</b> eller bruke snarveien ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Oppdater meny',
},
log: {
wmeReadyStartScript: 'WME lastet og klar. Starter skript...',
waitingWme: 'Venter på at WME skal være klar...',
wmeReadyStartingPlugin: 'WME er klar. Konfigurerer tilpasset lag...',
shortSleep: 'Venter 1 sekund for at alt skal laste...',
updateMapDisplay: 'Oppdaterer kartvisning...',
maxZoomExceeded: 'Maksimalt zoomnivå overskredet. Ingen hastigheter vil vises.',
noneSegment: 'Ingen segmenter funnet.',
numSegmentsLoaded: 'Totalt antall lastede segmenter:',
attributesNotFound: 'Kunne ikke finne attributtene eller de mangler på segmentet',
disallowedSegment: 'Denne typen segment skal ikke lastes.',
invalidGeometry: 'Ugyldig geometri på segment:',
updateMapDisplayFinished: 'Oppdatering fullført.',
shortCutDialogNotFound: 'Fant ikke snarveisdialogen. Prøver igjen...',
houseNumberCheckboxNotFound: 'Avkrysningsboksen "Husnummer" ble ikke funnet. Prøver igjen...',
scriptsTabNotFound: 'Script-fanen ble ikke funnet. Prøver igjen...',
settingsTabAdded: 'Innstillingsfane lagt til.',
speedLayer: 'Hastighetslag',
opacityUpdated: 'Opasitet for ikoner oppdatert til',
updatingSettingsTab: 'Oppdaterer innstillingsfane...',
languageDefined: 'Språk definert.',
checkingVersion: 'Kontrollerer plugin-versjon.',
insufficientGeometryAngleCalc: 'Ikke tilstrekkelig geometri for vinkberegning.',
segmentSmallerThanFilter: 'Segmentavstanden er mindre enn filteret. Ignorerer...',
}
};
break;
case 'pl':
// Polish
this.spdTranslations = {
name: 'Wyświetlanie prędkości',
settingTabName: 'Ustawienia wyświetlania prędkości',
enabled: 'Włączone',
disabled: 'Wyłączone',
zoomOut: 'Oddal',
zoomIn: 'Przybliż',
changelog: 'Dziennik zmian',
changelogMessage: '<h6>Nowości:</h6><ul style="margin-bottom: 10px"><li>Teraz możesz zobaczyć informację o tym, jak przełączać widoczność warstwy skryptu;</li><li>Nie widzisz ikony? Spróbuj zmienić głębokość warstwy;</li><li>Masz zbyt wiele ikon blisko siebie z powodu rozmiaru segmentów? Nie martw się, wystarczy zastosować filtr rozmiaru segmentów;</li><li>Chcesz znaleźć segmenty z określonymi prędkościami? Użyj filtra;</li><li>Chcesz wrócić do domyślnych ustawień skryptu? Wystarczy kliknąć przycisk na końcu zakładki ustawień.</li></ul><h6>Poprawki:</h6><ul><li>Poprawiono skrót klawiszowy do przełączania widoczności warstwy skryptu na komputerach Mac;</li><li>Usunięto filtr wyświetlania dla segmentów pieszych, które nie miały prędkości;</li><li>Inne poprawki i ulepszenia kodu.</li></ul>',
close: 'Zamknij',
viewScript: 'Zobacz skrypt',
showDialog: 'Pokaż okno dialogowe',
resetSettings: 'Resetuj ustawienia',
viewChangelog: 'Zobacz dziennik zmian',
reset: 'Resetuj',
title: {
general: 'Ogólne',
showOnRoadType: 'Pokaż na segmentach typu:'
},
label: {
displaySpeeds: 'Pokaż prędkości',
showNoSpeed: 'Pokaż na segmentach bez prędkości',
showOnRoundabout: 'Pokaż na rondzie',
showOnUnpaved: 'Pokaż na drodze nieutwardzonej',
maxZoom: 'Renderuj do zoomu:',
toggleLayerShortcut: 'Przełącz warstwę wyświetlania prędkości',
zIndex: 'Głębokość warstwy',
hideShorterSegments: 'Ukryj na segmentach krótszych niż',
speedFilter: 'Filtruj według prędkości',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Używając głębokości warstwy większej niż <b>${this.zIndex.warn}</b>, warstwa prędkości będzie nakładać się na inne, uniemożliwiając wybór jakichkolwiek elementów na ekranie, dopóki nie zmniejszysz jej poniżej <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Aby włączyć/wyłączyć warstwę wyświetlania prędkości, przejdź do <b>Warstwy mapy > Drogi > Wyświetl prędkości</b> lub użyj skrótu ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Aktualizuj menu',
},
log: {
wmeReadyStartScript: 'WME załadowane i gotowe. Rozpoczynanie skryptu...',
waitingWme: 'Czekam, aż WME będzie gotowe...',
wmeReadyStartingPlugin: 'WME jest gotowe. Konfiguracja niestandardowej warstwy...',
shortSleep: 'Czekam chwilę na załadowanie wszystkiego...',
updateMapDisplay: 'Aktualizowanie wyświetlania na mapie...',
maxZoomExceeded: 'Przekroczono maksymalny poziom zoomu. Prędkości nie będą wyświetlane.',
noneSegment: 'Nie znaleziono segmentu.',
numSegmentsLoaded: 'Załadowano segmentów:',
attributesNotFound: 'Nie znaleziono atrybutów lub są one brakujące na segmencie',
disallowedSegment: 'Ten typ segmentu nie powinien być ładowany.',
invalidGeometry: 'Nieprawidłowa geometria na segmencie:',
updateMapDisplayFinished: 'Aktualizacja zakończona.',
shortCutDialogNotFound: 'Nie znaleziono okna dialogowego skrótów klawiszowych. Próbuję ponownie...',
houseNumberCheckboxNotFound: 'Nie znaleziono pola wyboru "Numery domów". Próbuję ponownie...',
scriptsTabNotFound: 'Nie znaleziono zakładki skryptów. Próbuję ponownie...',
settingsTabAdded: 'Dodano zakładkę ustawień.',
speedLayer: 'Warstwa prędkości',
opacityUpdated: 'Zaktualizowano przezroczystość ikon do',
updatingSettingsTab: 'Aktualizowanie zakładki ustawień...',
languageDefined: 'Języki ustawione.',
checkingVersion: 'Sprawdzam wersję pluginu.',
insufficientGeometryAngleCalc: 'Niewystarczająca geometria do obliczenia kąta.',
segmentSmallerThanFilter: 'Odległość segmentu jest mniejsza niż filtr. Ignorowanie...',
}
};
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 é possível visualizar um aviso de como alternar a visibilidade da camada do script;</li><li>Não consegue visualizar o ícone? Experimente mudar a profundidade da camada;</li><li>Está com muitos ícones um próximo ao outro devido ao tamanho dos segmentos? Não há problema, basta filtrar o tamanho do segmento;</li><li>Quer encontrar segmentos com velocidades específicas? Basta utilizar o filtro;</li><li>Deseja retornar para as configurações padrões do script? Basta clicar no botão ao fim da aba de configurações.</li></ul><h6>Correções:</h6><ul><li>Corrigido atalho para alternar visibilidade da camada do script em computadores Mac;</li><li>Removido filtro de exibição para segmentos de pedestres, cujo os quais não tinham velocidade;</li><li>Outras correções e melhorias de código.</li></ul>',
close: 'Fechar',
viewScript: 'Ver script',
showDialog: 'Exibir modal',
resetSettings: 'Redefinir configurações',
viewChangelog: 'Visualizar o registro de alterações',
reset: 'Redefinir',
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',
zIndex: 'Profundidade da camada',
hideShorterSegments: 'Ocultar em segmentos menores que',
speedFilter: 'Filtrar por velocidade',
min: 'Mín.:',
max: 'Máx.:',
},
alertMessage: {
zIndex: `Ao utilizar uma profundidade de camada maior que <b>${this.zIndex.warn}</b>, a camada de velocidade se sobreponhará as outras e não será possível selecionar nenhum elemento na tela até baixa-la novamente abaixo de <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Para ativar/desativar a camada de exibição de velocidades, basta ir até <b>Camadas do Mapa > Vias > Exibir velocidades</b> ou utilizar o atalho ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
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.',
insufficientGeometryAngleCalc: 'Geometria insuficiente para cálculo de ângulo.',
segmentSmallerThanFilter: 'A distância do segmento é menor do que o filtro. Ignorando...'
}
};
break;
case 'pt-PT':
// Portuguese (Portugal)
this.spdTranslations = {
name: 'Exibição de Velocidade',
settingTabName: 'Configurações de Exibição de Velocidade',
enabled: 'Ativada',
disabled: 'Desativada',
zoomOut: 'Mais afastado',
zoomIn: 'Mais aproximado',
changelog: 'Registo de alterações',
changelogMessage: '<h6>Novidades:</h6><ul style="margin-bottom: 10px"><li>Agora é possível visualizar um aviso de como alternar a visibilidade da camada do script;</li><li>Não consegue visualizar o ícone? Experimente mudar a profundidade da camada;</li><li>Está com muitos ícones próximos uns dos outros devido ao tamanho dos segmentos? Não há problema, basta filtrar o tamanho do segmento;</li><li>Quer encontrar segmentos com velocidades específicas? Basta utilizar o filtro;</li><li>Deseja retornar às configurações padrão do script? Basta clicar no botão no final da aba de configurações.</li></ul><h6>Correções:</h6><ul><li>Corrigido atalho para alternar a visibilidade da camada do script em computadores Mac;</li><li>Removido filtro de exibição para segmentos de peões, que não tinham velocidade;</li><li>Outras correções e melhorias de código.</li></ul>',
close: 'Fechar',
viewScript: 'Ver script',
showDialog: 'Exibir modal',
resetSettings: 'Redefinir configurações',
viewChangelog: 'Visualizar o registo de alterações',
reset: 'Redefinir',
title: {
general: 'Geral',
showOnRoadType: 'Exibir nos segmentos do tipo:'
},
label: {
displaySpeeds: 'Exibir velocidades',
showNoSpeed: 'Exibir em segmento sem velocidade',
showOnRoundabout: 'Exibir em rotunda',
showOnUnpaved: 'Exibir em via não pavimentada',
maxZoom: 'Renderizar até o zoom:',
toggleLayerShortcut: 'Alternar a camada de exibição da velocidade',
zIndex: 'Profundidade da camada',
hideShorterSegments: 'Ocultar em segmentos menores que',
speedFilter: 'Filtrar por velocidade',
min: 'Mín.:',
max: 'Máx.:',
},
alertMessage: {
zIndex: `Ao utilizar uma profundidade de camada maior que <b>${this.zIndex.warn}</b>, a camada de velocidade se sobreporá a outras e não será possível selecionar nenhum elemento na tela até que a profundidade seja reduzida abaixo de <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Para ativar/desativar a camada de exibição de velocidades, basta ir a <b>Camadas do Mapa > Vias > Exibir velocidades</b> ou utilizar o atalho ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Atualizar menu',
},
log: {
wmeReadyStartScript: 'WME carregado e pronto. Iniciando script...',
waitingWme: 'Aguardando o WME ficar pronto...',
wmeReadyStartingPlugin: 'WME está pronto. Configurando camada personalizada...',
shortSleep: 'Aguardando 1 segundo para carregar tudo...',
updateMapDisplay: 'Atualizando exibição no mapa...',
maxZoomExceeded: 'Zoom máximo excedido. Nenhuma velocidade será exibida.',
noneSegment: 'Nenhum segmento encontrado.',
numSegmentsLoaded: 'Número 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 o modal de atalhos do teclado. Tentando novamente...',
houseNumberCheckboxNotFound: 'O checkbox "Números das Casas" não foi encontrado. Tentando novamente...',
scriptsTabNotFound: 'A aba de scripts não foi encontrada. 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.',
insufficientGeometryAngleCalc: 'Geometria insuficiente para cálculo de ângulo.',
segmentSmallerThanFilter: 'O comprimento do segmento é menor que o filtro. Ignorando...',
}
};
break;
case 'ro':
// Romanian
this.spdTranslations = {
name: 'Afișarea vitezei',
settingTabName: 'Setări pentru afișarea vitezei',
enabled: 'Activat',
disabled: 'Dezactivat',
zoomOut: 'Mai departe',
zoomIn: 'Mai aproape',
changelog: 'Jurnalul modificărilor',
changelogMessage: '<h6>Noutăți:</h6><ul style="margin-bottom: 10px"><li>Acum poți vizualiza un mesaj despre cum să schimbi vizibilitatea stratului scriptului;</li><li>Nu reușești să vizualizezi iconița? Încearcă să schimbi adâncimea stratului;</li><li>Ai multe iconițe apropiate din cauza dimensiunii segmentelor? Nu este nicio problemă, doar filtrează dimensiunea segmentului;</li><li>Vrei să găsești segmente cu viteze specifice? Folosește filtrul;</li><li>Vrei să revii la setările implicite ale scriptului? Apasă pe butonul din partea de jos a tab-ului de setări.</li></ul><h6>Corectări:</h6><ul><li>Corectat scurtătura pentru a schimba vizibilitatea stratului scriptului pe computere Mac;</li><li>Filtrul de afișare pentru segmentele pietonale care nu aveau viteză a fost eliminat;</li><li>Alte corectări și îmbunătățiri ale codului.</li></ul>',
close: 'Închide',
viewScript: 'Vezi scriptul',
showDialog: 'Afișează fereastra modale',
resetSettings: 'Resetare setări',
viewChangelog: 'Vizualizează jurnalul modificărilor',
reset: 'Resetează',
title: {
general: 'General',
showOnRoadType: 'Afișează pe segmente de tipul:'
},
label: {
displaySpeeds: 'Afișează vitezele',
showNoSpeed: 'Afișează pe segmente fără viteză',
showOnRoundabout: 'Afișează pe sens giratoriu',
showOnUnpaved: 'Afișează pe drumuri neasfaltate',
maxZoom: 'Renderizează până la zoom:',
toggleLayerShortcut: 'Comută stratul de afișare a vitezei',
zIndex: 'Adâncimea stratului',
hideShorterSegments: 'Ascunde segmentele mai mici de',
speedFilter: 'Filtrează după viteză',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Atunci când folosești o adâncime a stratului mai mare de <b>${this.zIndex.warn}</b>, stratul de viteză se va suprapune altor straturi și nu vei putea selecta niciun element pe ecran până când nu scazi adâncimea sub <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Pentru a activa/dezactiva stratul de afișare a vitezelor, mergi la <b>Straturi Mapa > Drumuri > Afișează viteze</b> sau folosește scurtătura ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Actualizează meniul',
},
log: {
wmeReadyStartScript: 'WME încărcat și pregătit. Pornirea scriptului...',
waitingWme: 'Așteptând ca WME să fie gata...',
wmeReadyStartingPlugin: 'WME este gata. Configurare strat personalizat...',
shortSleep: 'Așteptând 1 secundă pentru a încărca tot...',
updateMapDisplay: 'Actualizare afișare pe hartă...',
maxZoomExceeded: 'Zoom maxim depășit. Nicio viteză nu va fi afișată.',
noneSegment: 'Niciun segment găsit.',
numSegmentsLoaded: 'Număr total de segmente încărcate:',
attributesNotFound: 'Nu s-au găsit atribute sau sunt lipsă pe segment',
disallowedSegment: 'Acest tip de segment nu trebuie încărcat.',
invalidGeometry: 'Geometrie invalidă pe segment:',
updateMapDisplayFinished: 'Actualizare finalizată.',
shortCutDialogNotFound: 'Nu s-a găsit fereastra de comenzi rapide de tastatură. Încerc din nou...',
houseNumberCheckboxNotFound: 'Nu s-a găsit checkbox-ul "Numerele caselor". Încerc din nou...',
scriptsTabNotFound: 'Nu s-a găsit tab-ul de scripturi. Încerc din nou...',
settingsTabAdded: 'Tab-ul de setări a fost adăugat.',
speedLayer: 'Strat de viteză',
opacityUpdated: 'Opacitatea iconițelor a fost ajustată la',
updatingSettingsTab: 'Actualizare tab de setări...',
languageDefined: 'Limba definită.',
checkingVersion: 'Verificarea versiunii pluginului.',
insufficientGeometryAngleCalc: 'Geometrie insuficientă pentru calculul unghiului.',
segmentSmallerThanFilter: 'Lungimea segmentului este mai mică decât filtrul. Se ignoră...',
}
};
break;
case 'ru':
// Russian
this.spdTranslations = {
name: 'Отображение скорости',
settingTabName: 'Настройки отображения скорости',
enabled: 'Включено',
disabled: 'Отключено',
zoomOut: 'Удалить',
zoomIn: 'Приблизить',
changelog: 'Журнал изменений',
changelogMessage: '<h6>Нововведения:</h6><ul style="margin-bottom: 10px"><li>Теперь можно увидеть сообщение о том, как переключать видимость слоя скрипта;</li><li>Не можете увидеть иконку? Попробуйте изменить глубину слоя;</li><li>Много иконок рядом друг с другом из-за размера сегментов? Нет проблем, просто отфильтруйте размер сегмента;</li><li>Хотите найти сегменты с конкретной скоростью? Используйте фильтр;</li><li>Хотите вернуться к стандартным настройкам скрипта? Просто нажмите на кнопку внизу вкладки настроек.</li></ul><h6>Исправления:</h6><ul><li>Исправлена горячая клавиша для переключения видимости слоя скрипта на Mac;</li><li>Удален фильтр отображения для пешеходных сегментов, у которых не было скорости;</li><li>Другие исправления и улучшения кода.</li></ul>',
close: 'Закрыть',
viewScript: 'Посмотреть скрипт',
showDialog: 'Показать модальное окно',
resetSettings: 'Сбросить настройки',
viewChangelog: 'Просмотреть журнал изменений',
reset: 'Сбросить',
title: {
general: 'Общее',
showOnRoadType: 'Отображать на сегментах типа:'
},
label: {
displaySpeeds: 'Отображать скорости',
showNoSpeed: 'Отображать на сегментах без скорости',
showOnRoundabout: 'Отображать на круговых развязках',
showOnUnpaved: 'Отображать на неасфальтированных дорогах',
maxZoom: 'Отображать до уровня зума:',
toggleLayerShortcut: 'Переключить слой отображения скорости',
zIndex: 'Глубина слоя',
hideShorterSegments: 'Скрывать на сегментах короче чем',
speedFilter: 'Фильтровать по скорости',
min: 'Мин.:',
max: 'Макс.:',
},
alertMessage: {
zIndex: `При использовании глубины слоя больше <b>${this.zIndex.warn}</b> слой скорости будет перекрывать другие и вы не сможете выбрать элементы на экране, пока не уменьшите глубину слоя ниже <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Для активации/деактивации слоя отображения скорости перейдите в <b>Слои карты > Дороги > Отображать скорости</b> или используйте комбинацию клавиш ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
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: 'Проверка версии плагина.',
insufficientGeometryAngleCalc: 'Недостаточно геометрии для расчета угла.',
segmentSmallerThanFilter: 'Длина сегмента меньше, чем фильтр. Игнорируем...',
}
};
break;
case 'sk':
// Slovak
this.spdTranslations = {
name: 'Zobrazenie rýchlosti',
settingTabName: 'Nastavenia zobrazenia rýchlosti',
enabled: 'Povolené',
disabled: 'Vypnuté',
zoomOut: 'Ďalej',
zoomIn: 'Priblížiť',
changelog: 'Záznam zmien',
changelogMessage: '<h6>Novinky:</h6><ul style="margin-bottom: 10px"><li>Teraz môžete vidieť upozornenie, ako prepínať viditeľnosť vrstvy skriptu;</li><li>Nemôžete vidieť ikonu? Skúste zmeniť hĺbku vrstvy;</li><li>Mnoho ikon je veľmi blízko seba kvôli veľkosti segmentov? Žiadny problém, jednoducho filtrovať podľa veľkosti segmentu;</li><li>Chcete nájsť segmenty s konkrétnou rýchlosťou? Použite filter;</li><li>Chcete sa vrátiť k predvoleným nastaveniam skriptu? Jednoducho kliknite na tlačidlo na konci nastavení.</li></ul><h6>Opravy:</h6><ul><li>Opravená klávesová skratka na prepínanie viditeľnosti vrstvy skriptu na počítačoch Mac;</li><li>Odstránený filter zobrazenia pre segmenty pre chodcov, ktoré nemali rýchlosť;</li><li>Ďalšie opravy a vylepšenia kódu.</li></ul>',
close: 'Zatvoriť',
viewScript: 'Zobraziť skript',
showDialog: 'Zobraziť modálne okno',
resetSettings: 'Obnoviť nastavenia',
viewChangelog: 'Zobraziť záznam zmien',
reset: 'Obnoviť',
title: {
general: 'Všeobecné',
showOnRoadType: 'Zobraziť na segmentoch typu:'
},
label: {
displaySpeeds: 'Zobraziť rýchlosti',
showNoSpeed: 'Zobraziť na segmentoch bez rýchlosti',
showOnRoundabout: 'Zobraziť na okruhu',
showOnUnpaved: 'Zobraziť na nezpevnených cestách',
maxZoom: 'Zobraziť do úrovne priblíženia:',
toggleLayerShortcut: 'Prepínať vrstvu zobrazenia rýchlosti',
zIndex: 'Hĺbka vrstvy',
hideShorterSegments: 'Skryť na segmentoch kratších ako',
speedFilter: 'Filtrovať podľa rýchlosti',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Pri použití hĺbky vrstvy väčšej ako <b>${this.zIndex.warn}</b> bude vrstva rýchlosti prekryť ostatné a nebude možné vybrať žiadny prvok na obrazovke, kým ju neznížite pod <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Ak chcete zapnúť/vypnúť vrstvu zobrazenia rýchlosti, prejdite na <b>Mapové vrstvy > Cesty > Zobraziť rýchlosti</b> alebo použite skratku ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Aktualizovať menu',
},
log: {
wmeReadyStartScript: 'WME načítané a pripravené. Spúšťam skript...',
waitingWme: 'Čakanie na pripravenosť WME...',
wmeReadyStartingPlugin: 'WME je pripravené. Nastavujem vlastnú vrstvu...',
shortSleep: 'Čakám 1 sekundu na načítanie...',
updateMapDisplay: 'Aktualizujem zobrazenie na mape...',
maxZoomExceeded: 'Maximálny zoom prekročený. Rýchlosť sa nezobrazí.',
noneSegment: 'Žiadne segmenty neboli nájdené.',
numSegmentsLoaded: 'Celkový počet načítaných segmentov:',
attributesNotFound: 'Nepodarilo sa nájsť atribúty alebo sú chýbajúce na segmente',
disallowedSegment: 'Tento typ segmentu sa nemá načítať.',
invalidGeometry: 'Neplatná geometria na segmente:',
updateMapDisplayFinished: 'Aktualizácia dokončená.',
shortCutDialogNotFound: 'Nepodarilo sa nájsť dialóg s klávesovými skratkami. Skúšam znova...',
houseNumberCheckboxNotFound: 'Začiarkavacie políčko "Čísla domov" sa nenašlo. Skúšam znova...',
scriptsTabNotFound: 'Záložka skriptov sa nenašla. Skúšam znova...',
settingsTabAdded: 'Záložka nastavení pridaná.',
speedLayer: 'Vrstva rýchlosti',
opacityUpdated: 'Nepriehľadnosť ikony nastavená na',
updatingSettingsTab: 'Aktualizujem záložku nastavení...',
languageDefined: 'Jazyky definované.',
checkingVersion: 'Kontrola verzie pluginu.',
insufficientGeometryAngleCalc: 'Nedostatočná geometria na výpočet uhla.',
segmentSmallerThanFilter: 'Dĺžka segmentu je menšia ako filter. Ignorujem...',
}
};
break;
case 'sl':
// Slovenian
this.spdTranslations = {
name: 'Prikaz hitrosti',
settingTabName: 'Nastavitve prikaza hitrosti',
enabled: 'Omogočeno',
disabled: 'Onemogočeno',
zoomOut: 'Povečaj',
zoomIn: 'Pomanjšaj',
changelog: 'Zgodovina sprememb',
changelogMessage: '<h6>Novosti:</h6><ul style="margin-bottom: 10px"><li>Zdaj lahko vidite opozorilo o tem, kako preklopiti vidnost plasti skripta;</li><li>Ne morete videti ikone? Poskusite spremeniti globino plasti;</li><li>Imate preveč ikon, ki so zelo blizu skupaj zaradi velikosti segmentov? Ni problema, preprosto filtrirajte po velikosti segmenta;</li><li>Želite poiskati segmente s specifično hitrostjo? Uporabite filter;</li><li>Želite se vrniti na privzete nastavitve skripta? Preprosto kliknite gumb na koncu nastavitvenega zavihka.</li></ul><h6>Popravki:</h6><ul><li>Popravljena bližnjica za preklop vidnosti plasti skripta na računalnikih Mac;</li><li>Odstranjen filter za prikaz segmentov za pešce, ki niso imeli hitrosti;</li><li>Drugi popravki in izboljšave kode.</li></ul>',
close: 'Zapri',
viewScript: 'Poglej skript',
showDialog: 'Pokaži modalno okno',
resetSettings: 'Ponastavi nastavitve',
viewChangelog: 'Poglej zgodovino sprememb',
reset: 'Ponastavi',
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: 'Prikaz na nepovoznih cestah',
maxZoom: 'Prikaz do stopnje povečave:',
toggleLayerShortcut: 'Preklopi plast prikaza hitrosti',
zIndex: 'Globina plasti',
hideShorterSegments: 'Skrij na segmentih krajši od',
speedFilter: 'Filtriraj po hitrosti',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `Pri uporabi globine plasti večje od <b>${this.zIndex.warn}</b> se bo plast hitrosti prekrila z drugimi in ne bo mogoče izbrati nobenega elementa na zaslonu, dokler je ne zmanjšate pod <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Za aktiviranje/izklop plasti prikaza hitrosti, pojdite na <b>Plasti zemljevida > Ceste > Prikaz hitrosti</b> ali uporabite bližnjico ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Posodobi meni',
},
log: {
wmeReadyStartScript: 'WME naložen in pripravljen. Začenjam skript...',
waitingWme: 'Čakam, da WME postane pripravljen...',
wmeReadyStartingPlugin: 'WME je pripravljen. Nastavljam lastno plast...',
shortSleep: 'Čakam 1 sekundo za nalaganje...',
updateMapDisplay: 'Posodabljam prikaz na zemljevidu...',
maxZoomExceeded: 'Prekoračen maksimalni zoom. Hitrost ne bo prikazana.',
noneSegment: 'Noben segment ni bil najden.',
numSegmentsLoaded: 'Skupno število naloženih segmentov:',
attributesNotFound: 'Ni bilo mogoče najti atributov ali so manjkajoči na segmentu',
disallowedSegment: 'Ta vrsta segmenta ne bi smela biti naložena.',
invalidGeometry: 'Neveljavna geometrija na segmentu:',
updateMapDisplayFinished: 'Posodobitev končana.',
shortCutDialogNotFound: 'Ni bilo mogoče najti pogovornega okna za bližnjice. Poskušam znova...',
houseNumberCheckboxNotFound: 'Preveri "Številke hiš" ni bilo najdeno. Poskušam znova...',
scriptsTabNotFound: 'Zavihek skriptov ni bil najden. Poskušam znova...',
settingsTabAdded: 'Zavihek nastavitev dodan.',
speedLayer: 'Plast hitrosti',
opacityUpdated: 'Neprosojnost ikone nastavljena na',
updatingSettingsTab: 'Posodabljam zavihek nastavitev...',
languageDefined: 'Jeziki so določeni.',
checkingVersion: 'Preverjanje različice vtičnika.',
insufficientGeometryAngleCalc: 'Nezadostna geometrija za izračun kota.',
segmentSmallerThanFilter: 'Dolžina segmenta je manjša od filtra. Prezrto...',
}
};
break;
case 'sv':
// Swedish
this.spdTranslations = {
name: 'Hastighetsvisning',
settingTabName: 'Inställningar för hastighetsvisning',
enabled: 'Aktiverad',
disabled: 'Deaktiverad',
zoomOut: 'Zooma ut',
zoomIn: 'Zooma in',
changelog: 'Ändringslogg',
changelogMessage: '<h6>Nyheter:</h6><ul style="margin-bottom: 10px"><li>Nu kan du se en varning om hur du växlar synligheten av skriptlagret;</li><li>Kan du inte se ikonen? Försök att ändra lagerdjupet;</li><li>Har du många ikoner nära varandra på grund av segmentens storlek? Inga problem, filtrera bara efter segmentens storlek;</li><li>Vill du hitta segment med specifika hastigheter? Använd filtret;</li><li>Vill du återgå till skriptets standardinställningar? Klicka bara på knappen längst ner på inställningsfliken.</li></ul><h6>Bugfixar:</h6><ul><li>Korrigerad genväg för att växla synligheten av skriptlagret på Mac-datorer;</li><li>Filter för visning av gångvägssegment utan hastighet har tagits bort;</li><li>Andra buggfixar och kodförbättringar.</li></ul>',
close: 'Stäng',
viewScript: 'Visa skript',
showDialog: 'Visa modal',
resetSettings: 'Återställ inställningar',
viewChangelog: 'Visa ändringslogg',
reset: 'Återställ',
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å oasfalterad väg',
maxZoom: 'Rendera upp till zoomnivå:',
toggleLayerShortcut: 'Växla hastighetslagrets synlighet',
zIndex: 'Lagerdjup',
hideShorterSegments: 'Dölj på segment som är kortare än',
speedFilter: 'Filtrera efter hastighet',
min: 'Min.:',
max: 'Max.:',
},
alertMessage: {
zIndex: `När du använder ett lagerdjup större än <b>${this.zIndex.warn}</b> kommer hastighetslagret att täcka andra lager och du kommer inte att kunna välja några objekt på skärmen förrän du sänker det under <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `För att aktivera/inaktivera hastighetsvisningslagret, gå till <b>Map Layers > Roads > Visa hastigheter</b> eller använd genvägen ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Uppdatera meny',
},
log: {
wmeReadyStartScript: 'WME har laddats och är redo. Startar skript...',
waitingWme: 'Väntar på att WME ska vara klart...',
wmeReadyStartingPlugin: 'WME är klart. Konfigurerar anpassat lager...',
shortSleep: 'Väntar cirka 1 sekund för att allt ska laddas...',
updateMapDisplay: 'Uppdaterar kartvyn...',
maxZoomExceeded: 'Maximal zoomnivå överskriden. Ingen hastighet kommer att visas.',
noneSegment: 'Inget segment hittades.',
numSegmentsLoaded: 'Totalt antal laddade segment:',
attributesNotFound: 'Det gick inte att hitta attribut eller de saknas på segmentet',
disallowedSegment: 'Den här typen av segment bör inte laddas.',
invalidGeometry: 'Ogiltig geometri på segmentet:',
updateMapDisplayFinished: 'Uppdatering klar.',
shortCutDialogNotFound: 'Det gick inte att hitta genvägsdialogen. Försöker igen...',
houseNumberCheckboxNotFound: 'Checkboxen "Husnummer" hittades inte. Försöker igen...',
scriptsTabNotFound: 'Skriptabellen hittades inte. Försöker igen...',
settingsTabAdded: 'Inställningsfliken har lagts till.',
speedLayer: 'Hastighetslager',
opacityUpdated: 'Ikonens opacitet uppdaterad till',
updatingSettingsTab: 'Uppdaterar inställningsfliken...',
languageDefined: 'Språk definierat.',
checkingVersion: 'Kontrollerar plugin-version.',
insufficientGeometryAngleCalc: 'Otillräcklig geometri för vinkelberäkning.',
segmentSmallerThanFilter: 'Segmentets längd är kortare än filtret. Ignorerar...',
}
};
break;
case 'th':
// Thai
this.spdTranslations = {
name: 'การแสดงความเร็ว',
settingTabName: 'การตั้งค่าการแสดงความเร็ว',
enabled: 'เปิดใช้งาน',
disabled: 'ปิดใช้งาน',
zoomOut: 'ซูมออก',
zoomIn: 'ซูมเข้า',
changelog: 'บันทึกการเปลี่ยนแปลง',
changelogMessage: '<h6>ข่าวใหม่:</h6><ul style="margin-bottom: 10px"><li>ตอนนี้สามารถดูคำแนะนำในการสลับการมองเห็นของเลเยอร์สคริปต์ได้;</li><li>ไม่สามารถเห็นไอคอน? ลองเปลี่ยนความลึกของเลเยอร์;</li><li>มีไอคอนมากเกินไปเนื่องจากขนาดของเซกเมนต์? ไม่ต้องกังวล แค่กรองขนาดของเซกเมนต์;</li><li>ต้องการหาความเร็วที่เฉพาะเจาะจงหรือไม่? แค่ใช้ตัวกรอง;</li><li>ต้องการคืนค่าเป็นการตั้งค่ามาตรฐานของสคริปต์หรือไม่? แค่คลิกที่ปุ่มที่ด้านล่างของแท็บการตั้งค่า.</li></ul><h6>การแก้ไข:</h6><ul><li>แก้ไขทางลัดสำหรับการสลับการมองเห็นของเลเยอร์สคริปต์ในคอมพิวเตอร์ Mac;</li><li>ลบตัวกรองการแสดงผลสำหรับเซกเมนต์คนเดินเท้าที่ไม่มีความเร็ว;</li><li>การแก้ไขอื่นๆ และการปรับปรุงโค้ด.</li></ul>',
close: 'ปิด',
viewScript: 'ดูสคริปต์',
showDialog: 'แสดงกล่องโต้ตอบ',
resetSettings: 'ตั้งค่าคืนค่า',
viewChangelog: 'ดูบันทึกการเปลี่ยนแปลง',
reset: 'คืนค่า',
title: {
general: 'ทั่วไป',
showOnRoadType: 'แสดงบนเซกเมนต์ประเภท:'
},
label: {
displaySpeeds: 'แสดงความเร็ว',
showNoSpeed: 'แสดงในเซกเมนต์ที่ไม่มีความเร็ว',
showOnRoundabout: 'แสดงในทางแยกรอบ',
showOnUnpaved: 'แสดงในถนนที่ไม่ได้ปู',
maxZoom: 'แสดงได้จนถึงการซูมระดับ:',
toggleLayerShortcut: 'สลับการแสดงผลเลเยอร์ความเร็ว',
zIndex: 'ความลึกของเลเยอร์',
hideShorterSegments: 'ซ่อนในเซกเมนต์ที่สั้นกว่า',
speedFilter: 'กรองตามความเร็ว',
min: 'ขั้นต่ำ:',
max: 'สูงสุด:',
},
alertMessage: {
zIndex: `เมื่อใช้ความลึกของเลเยอร์ที่มากกว่า <b>${this.zIndex.warn}</b> เลเยอร์ความเร็วจะทับซ้อนกับเลเยอร์อื่นและคุณจะไม่สามารถเลือกองค์ประกอบใดๆ บนหน้าจอจนกว่าจะลดความลึกลงต่ำกว่า <b>${this.zIndex.warn}</b> อีกครั้ง.`,
toggleVisibility: `เพื่อเปิด/ปิดการแสดงผลของเลเยอร์ความเร็ว ให้ไปที่ <b>แผนที่ > ถนน > แสดงความเร็ว</b> หรือใช้ทางลัด ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
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: 'กำลังตรวจสอบเวอร์ชันของปลั๊กอิน.',
insufficientGeometryAngleCalc: 'รูปทรงไม่เพียงพอสำหรับการคำนวณมุม.',
segmentSmallerThanFilter: 'ระยะของเซกเมนต์สั้นกว่าตัวกรอง กำลังข้าม...',
}
};
break;
case 'tr':
// Turkish
this.spdTranslations = {
name: 'Hız Gösterimi',
settingTabName: 'Hız Gösterimi Ayarları',
enabled: 'etkin',
disabled: 'devre dışı',
zoomOut: 'Daha uzak',
zoomIn: 'Daha yakın',
changelog: 'Değişiklikler',
changelogMessage: '<h6>Yeni Özellikler:</h6><ul style="margin-bottom: 10px"><li>Artık script katmanının görünürlüğünü nasıl değiştirebileceğinize dair bir uyarı görüntülenebilir;</li><li>Simgeyi göremiyor musunuz? Katman derinliğini değiştirmeyi deneyin;</li><li>Segmentlerin boyutları nedeniyle simgeler çok sık mı? Sorun değil, segment boyutunu filtreleyebilirsiniz;</li><li>Belirli hızlara sahip segmentleri mi arıyorsunuz? Filtreyi kullanarak bulabilirsiniz;</li><li>Script’in varsayılan ayarlarına dönmek mi istiyorsunuz? Ayar sekmesinin altındaki butona tıklayarak geri dönebilirsiniz.</li></ul><h6>Düzeltmeler:</h6><ul><li>Mac bilgisayarlarda script katmanının görünürlüğünü değiştirme kısayolu düzeltildi;</li><li>Hızı olmayan yaya segmentleri için gösterim filtresi kaldırıldı;</li><li>Diğer düzeltmeler ve kod geliştirmeleri.</li></ul>',
close: 'Kapat',
viewScript: 'Scripti Görüntüle',
showDialog: 'Modali Göster',
resetSettings: 'Ayarları Sıfırla',
viewChangelog: 'Değişiklikler Kaydını Görüntüle',
reset: 'Sıfırla',
title: {
general: 'Genel',
showOnRoadType: 'Şu tipteki segmentlerde göster:',
},
label: {
displaySpeeds: 'Hızları Göster',
showNoSpeed: 'Hızsız segmentlerde göster',
showOnRoundabout: 'Dönel kavşakta göster',
showOnUnpaved: 'Asfaltlanmamış yolda göster',
maxZoom: 'Zoom seviyesine kadar render yap:',
toggleLayerShortcut: 'Hız katmanını açıp kapatma kısayolu',
zIndex: 'Katman derinliği',
hideShorterSegments: 'Daha kısa segmentlerde gizle',
speedFilter: 'Hız filtresi',
min: 'Min:',
max: 'Maks:',
},
alertMessage: {
zIndex: `Katman derinliğini <b>${this.zIndex.warn}</b> değerinden daha yüksek kullanırsanız, hız katmanı diğerlerinin üst üste binmesine neden olur ve herhangi bir öğe seçilemez. Bu durumu düzeltmek için katman derinliğini <b>${this.zIndex.warn}</b> değerinin altına indirin.`,
toggleVisibility: `Hız katmanını açıp kapatmak için <b>Harita Katmanları > Yollar > Hızları Göster</b> yolunu izleyebilir veya ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b> kısayolunu kullanabilirsiniz.`
},
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 yapılandırılıyor...',
shortSleep: 'Her şeyin yüklenmesi için 1 saniye kadar bekleniyor...',
updateMapDisplay: 'Harita üzerindeki gösterim güncelleniyor...',
maxZoomExceeded: 'Maksimum zoom seviyesi aşıldı. Hız gösterilmeyecek.',
noneSegment: 'Hiç segment bulunamadı.',
numSegmentsLoaded: 'Yüklenen toplam segment sayısı:',
attributesNotFound: 'Segmentin özellikleri bulunamadı veya eksik.',
disallowedSegment: 'Bu segment tipi yüklenmemelidir.',
invalidGeometry: 'Geometrisi geçersiz olan segment:',
updateMapDisplayFinished: 'Güncelleme tamamlandı.',
shortCutDialogNotFound: 'Klavye kısayol dialogu bulunamadı. Yeniden deneniyor...',
houseNumberCheckboxNotFound: '"Ev Numaraları" onay kutusu bulunamadı. Yeniden deneniyor...',
scriptsTabNotFound: 'Scriptler 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.',
insufficientGeometryAngleCalc: 'Açı hesaplama için yetersiz geometri.',
segmentSmallerThanFilter: 'Segmentin uzunluğu filtreden küçük. Göz ardı ediliyor...',
}
};
break;
case 'uk':
// Ukrainian
this.spdTranslations = {
name: 'Відображення швидкості',
settingTabName: 'Налаштування відображення швидкості',
enabled: 'увімкнено',
disabled: 'вимкнено',
zoomOut: 'Далі',
zoomIn: 'Ближче',
changelog: 'Журнал змін',
changelogMessage: '<h6>Нові можливості:</h6><ul style="margin-bottom: 10px"><li>Тепер можна побачити попередження про те, як змінити видимість шарів сценарію;</li><li>Не можете побачити значок? Спробуйте змінити глибину шару;</li><li>Є багато значків, що знаходяться дуже близько один до одного через розмір сегментів? Це не проблема, ви можете відфільтрувати за розміром сегмента;</li><li>Шукаєте сегменти з певними швидкостями? Ви можете використовувати фільтр;</li><li>Хочете повернутися до стандартних налаштувань сценарію? Просто натисніть кнопку внизу вкладки налаштувань.</li></ul><h6>Виправлення:</h6><ul><li>Виправлено гарячі клавіші для зміни видимості шару сценарію на комп\'ютерах Mac;</li><li>Фільтр для відображення пішохідних сегментів, які не мали швидкості, був видалений;</li><li>Інші виправлення та покращення коду.</li></ul>',
close: 'Закрити',
viewScript: 'Переглянути сценарій',
showDialog: 'Показати модальне вікно',
resetSettings: 'Скинути налаштування',
viewChangelog: 'Переглянути журнал змін',
reset: 'Скинути',
title: {
general: 'Загальні',
showOnRoadType: 'Показувати на сегментах типу:'
},
label: {
displaySpeeds: 'Показувати швидкості',
showNoSpeed: 'Показувати на сегментах без швидкості',
showOnRoundabout: 'Показувати на кільцевих перехрестях',
showOnUnpaved: 'Показувати на непокритих дорогах',
maxZoom: 'Рендерити до рівня zoom:',
toggleLayerShortcut: 'Перемикання шару відображення швидкості',
zIndex: 'Глибина шару',
hideShorterSegments: 'Приховувати на сегментах менше ніж',
speedFilter: 'Фільтрувати за швидкістю',
min: 'Мін.:',
max: 'Макс.:',
},
alertMessage: {
zIndex: `Якщо використовувати глибину шару більше за <b>${this.zIndex.warn}</b>, шар швидкості накладатиметься на інші, і ви не зможете вибрати жоден елемент на екрані, поки не зменшите глибину до <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Щоб увімкнути/вимкнути шар швидкості, просто перейдіть до <b>Шари карти > Дороги > Відображати швидкості</b> або використовуйте гарячу клавішу ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Оновити меню',
},
log: {
wmeReadyStartScript: 'WME завантажено і готово. Запуск сценарію...',
waitingWme: 'Очікую готовність WME...',
wmeReadyStartingPlugin: 'WME готово. Налаштування кастомного шару...',
shortSleep: 'Очікування 1 секунду для завантаження...',
updateMapDisplay: 'Оновлення відображення на карті...',
maxZoomExceeded: 'Перевищено максимальний рівень zoom. Швидкість не буде відображена.',
noneSegment: 'Не знайдено сегментів.',
numSegmentsLoaded: 'Загальна кількість завантажених сегментів:',
attributesNotFound: 'Не вдалося знайти атрибути або вони відсутні на сегменті',
disallowedSegment: 'Цей тип сегмента не повинен бути завантажений.',
invalidGeometry: 'Невірна геометрія на сегменті:',
updateMapDisplayFinished: 'Оновлення завершено.',
shortCutDialogNotFound: 'Не вдалося знайти діалог гарячих клавіш. Спробую ще раз...',
houseNumberCheckboxNotFound: 'Не вдалося знайти чекбокс "Номери будинків". Спробую ще раз...',
scriptsTabNotFound: 'Вкладка скриптів не знайдена. Спробую ще раз...',
settingsTabAdded: 'Вкладка налаштувань додана.',
speedLayer: 'Шар швидкості',
opacityUpdated: 'Непрозорість значків оновлена до',
updatingSettingsTab: 'Оновлення вкладки налаштувань...',
languageDefined: 'Мови визначені.',
checkingVersion: 'Перевірка версії плагіна.',
insufficientGeometryAngleCalc: 'Недостатньо геометрії для обчислення кута.',
segmentSmallerThanFilter: 'Довжина сегмента менша за фільтр. Ігнорується...',
}
};
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: 'Zoom ra',
zoomIn: 'Zoom vào',
changelog: 'Lịch sử thay đổi',
changelogMessage: '<h6>Tính năng mới:</h6><ul style="margin-bottom: 10px"><li>Bây giờ bạn có thể xem một cảnh báo về cách thay đổi khả năng hiển thị của lớp kịch bản;</li><li>Không thấy biểu tượng? Thử thay đổi độ sâu của lớp;</li><li>Có quá nhiều biểu tượng gần nhau vì kích thước của các đoạn đường? Không sao, bạn có thể lọc theo kích thước đoạn đường;</li><li>Muốn tìm các đoạn đường có tốc độ cụ thể? Bạn có thể sử dụng bộ lọc;</li><li>Mong muốn quay lại cài đặt mặc định của kịch bản? Chỉ cần nhấn nút ở cuối tab cài đặt.</li></ul><h6>Chỉnh sửa:</h6><ul><li>Sửa phím tắt để thay đổi khả năng hiển thị lớp kịch bản trên máy tính Mac;</li><li>Đã loại bỏ bộ lọc hiển thị cho các đoạn đường dành cho người đi bộ, vì chúng không có tốc độ;</li><li>Các sửa lỗi và cải tiến mã khác.</li></ul>',
close: 'Đóng',
viewScript: 'Xem kịch bản',
showDialog: 'Hiển thị hộp thoại',
resetSettings: 'Đặt lại cài đặt',
viewChangelog: 'Xem lịch sử thay đổi',
reset: 'Đặt lạ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 không trải nhựa',
maxZoom: 'Hiển thị đến mức zoom:',
toggleLayerShortcut: 'Chuyển đổi lớp hiển thị tốc độ',
zIndex: 'Độ sâu lớp',
hideShorterSegments: 'Ẩn trên các đoạn đường ngắn hơn',
speedFilter: 'Lọc theo tốc độ',
min: 'Tối thiểu:',
max: 'Tối đa:',
},
alertMessage: {
zIndex: `Khi sử dụng độ sâu lớp lớn hơn <b>${this.zIndex.warn}</b>, lớp tốc độ sẽ chồng lên các lớp khác và bạn sẽ không thể chọn bất kỳ đối tượng nào trên màn hình cho đến khi giảm độ sâu lớp xuống dưới <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `Để bật/tắt lớp hiển thị tốc độ, chỉ cần vào <b>Lớp bản đồ > Đoạn đường > Hiển thị tốc độ</b> hoặc sử dụng phím tắt ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
btn: {
updateSettingsTab: 'Cập nhật menu',
},
log: {
wmeReadyStartScript: 'WME đã tải và sẵn sàng. Bắt đầu kịch bản...',
waitingWme: 'Đang chờ WME sẵn sàng...',
wmeReadyStartingPlugin: 'WME đã sẵn sàng. Cài đặt lớp tùy chỉnh...',
shortSleep: 'Đang chờ 1 giây để mọi thứ tải...',
updateMapDisplay: 'Cập nhật hiển thị trên bản đồ...',
maxZoomExceeded: 'Đã vượt quá mức zoom tối đa. Không có tốc độ được hiển thị.',
noneSegment: 'Không tìm thấy đoạn đường.',
numSegmentsLoaded: 'Tổng số đoạn đường đã tải:',
attributesNotFound: 'Không thể tìm thấy thuộc tính hoặc chúng không có trên đoạn đường',
disallowedSegment: 'Loại đoạn đường 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 thể tìm thấy hộp thoại phím tắt. Thử lại...',
houseNumberCheckboxNotFound: 'Không thể tìm thấy ô kiểm "Số nhà". Thử lại...',
scriptsTabNotFound: 'Tab kịch bản không tìm thấy. Thử lại...',
settingsTabAdded: 'Tab cài đặt đã được thêm.',
speedLayer: 'Lớp tốc độ',
opacityUpdated: 'Độ mờ của biểu tượng đã được điều chỉnh 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.',
insufficientGeometryAngleCalc: 'Hình học không đủ để tính toán góc.',
segmentSmallerThanFilter: 'Chiều dài đoạn đường nhỏ hơn bộ lọc. Bỏ qua...',
}
};
break;
case 'zh':
// Chinese
this.spdTranslations = {
name: '速度显示',
settingTabName: '速度显示设置',
enabled: '启用',
disabled: '禁用',
zoomOut: '缩小',
zoomIn: '放大',
changelog: '更新日志',
changelogMessage: '<h6>新增功能:</h6><ul style="margin-bottom: 10px"><li>现在可以查看如何切换脚本图层的可见性的提示;</li><li>看不见图标?尝试调整图层深度;</li><li>由于段落大小图标太多聚集在一起?没问题,您可以通过过滤段落大小来解决;</li><li>想查找特定速度的段落?请使用过滤器;</li><li>想要恢复脚本的默认设置?只需点击设置标签页底部的按钮即可。</li></ul><h6>修复:</h6><ul><li>修复了Mac电脑上切换脚本图层可见性的快捷键;</li><li>删除了对没有速度的行人段落的显示过滤器;</li><li>其他代码修复和改进。</li></ul>',
close: '关闭',
viewScript: '查看脚本',
showDialog: '显示对话框',
resetSettings: '重置设置',
viewChangelog: '查看更新日志',
reset: '重置',
title: {
general: '常规',
showOnRoadType: '显示在以下类型的段落上:'
},
label: {
displaySpeeds: '显示速度',
showNoSpeed: '显示无速度段落',
showOnRoundabout: '显示在环形交叉口',
showOnUnpaved: '显示在未铺砌的道路上',
maxZoom: '最大缩放:',
toggleLayerShortcut: '切换速度显示图层',
zIndex: '图层深度',
hideShorterSegments: '隐藏小于以下长度的段落',
speedFilter: '按速度过滤',
min: '最小:',
max: '最大:',
},
alertMessage: {
zIndex: `当使用大于 <b>${this.zIndex.warn}</b> 的图层深度时,速度图层将覆盖其他图层,您将无法选择任何屏幕上的元素,直到将其深度降低到 <b>${this.zIndex.warn}</b> 以下。`,
toggleVisibility: `要启用/禁用速度显示图层,只需转到 <b>地图图层 > 道路 > 显示速度</b> 或使用快捷键 ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
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: '正在检查插件版本。',
insufficientGeometryAngleCalc: '几何形状不足以进行角度计算。',
segmentSmallerThanFilter: '段落长度小于过滤器要求。忽略...',
}
};
break;
case 'zh-TW':
// Traditional Chinese
this.spdTranslations = {
name: '速度顯示',
settingTabName: '速度顯示設置',
enabled: '啟用',
disabled: '禁用',
zoomOut: '縮小',
zoomIn: '放大',
changelog: '更新日誌',
changelogMessage: '<h6>新增功能:</h6><ul style="margin-bottom: 10px"><li>現在可以查看如何切換腳本圖層的可見性的提示;</li><li>看不見圖示?嘗試調整圖層深度;</li><li>由於段落大小圖示太多聚集在一起?沒問題,您可以透過過濾段落大小來解決;</li><li>想查找特定速度的段落?請使用過濾器;</li><li>想要恢復腳本的預設設置?只需點擊設置標籤頁底部的按鈕即可。</li></ul><h6>修復:</h6><ul><li>修復了Mac電腦上切換腳本圖層可見性的快捷鍵;</li><li>刪除了對沒有速度的行人段落的顯示過濾器;</li><li>其他程式碼修復和改進。</li></ul>',
close: '關閉',
viewScript: '查看腳本',
showDialog: '顯示對話框',
resetSettings: '重設設定',
viewChangelog: '查看更新日誌',
reset: '重設',
title: {
general: '常規',
showOnRoadType: '顯示在以下類型的段落上:'
},
label: {
displaySpeeds: '顯示速度',
showNoSpeed: '顯示無速度段落',
showOnRoundabout: '顯示在環形交叉口',
showOnUnpaved: '顯示在未鋪設的道路上',
maxZoom: '最大縮放:',
toggleLayerShortcut: '切換速度顯示圖層',
zIndex: '圖層深度',
hideShorterSegments: '隱藏小於以下長度的段落',
speedFilter: '按速度過濾',
min: '最小:',
max: '最大:',
},
alertMessage: {
zIndex: `當使用大於 <b>${this.zIndex.warn}</b> 的圖層深度時,速度圖層將覆蓋其他圖層,您將無法選擇任何螢幕上的元素,直到將其深度降低到 <b>${this.zIndex.warn}</b> 以下。`,
toggleVisibility: `要啟用/禁用速度顯示圖層,只需前往 <b>地圖圖層 > 道路 > 顯示速度</b> 或使用快捷鍵 ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
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: '正在檢查插件版本。',
insufficientGeometryAngleCalc: '幾何形狀不足以進行角度計算。',
segmentSmallerThanFilter: '段落長度小於過濾器要求。忽略...',
}
};
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>New Features:</h6><ul style="margin-bottom: 10px"><li>You can now view a tip on how to toggle the visibility of the script layer;</li><li>Can\'t see the icon? Try changing the layer depth;</li><li>Are too many icons clustered together due to the segment size? No problem, just filter the segment size;</li><li>Want to find segments with specific speeds? Just use the filter;</li><li>Want to reset to the script\'s default settings? Just click the button at the bottom of the settings tab.</li></ul><h6>Fixes:</h6><ul><li>Fixed shortcut for toggling the script layer visibility on Mac computers;</li><li>Removed the display filter for pedestrian segments, which didn\'t have speed;</li><li>Other bug fixes and code improvements.</li></ul>',
close: 'Close',
viewScript: 'View Script',
showDialog: 'Show Dialog',
resetSettings: 'Reset Settings',
viewChangelog: 'View Changelog',
reset: 'Reset',
title: {
general: 'General',
showOnRoadType: 'Show on the following road types:'
},
label: {
displaySpeeds: 'Display speeds',
showNoSpeed: 'Show on segments with no speed',
showOnRoundabout: 'Show on roundabout',
showOnUnpaved: 'Show on unpaved road',
maxZoom: 'Render until zoom:',
toggleLayerShortcut: 'Toggle speed display layer',
zIndex: 'Layer depth',
hideShorterSegments: 'Hide segments shorter than',
speedFilter: 'Filter by speed',
min: 'Min:',
max: 'Max:',
},
alertMessage: {
zIndex: `When using a layer depth greater than <b>${this.zIndex.warn}</b>, the speed layer will overlap others, and you will not be able to select any element on the screen until you lower the depth below <b>${this.zIndex.warn}</b>.`,
toggleVisibility: `To toggle the visibility of the speed display layer, just go to <b>Map Layers > Roads > Show speeds</b> or use the shortcut ${this.isMac ? '<b>OPTION (⌥)</b>' : '<b>ALT</b>'} + <b>SHIFT</b> + <b>S</b>`
},
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 on the segment',
disallowedSegment: 'This type of segment should not be loaded.',
invalidGeometry: 'Invalid geometry on segment:',
updateMapDisplayFinished: 'Update finished.',
shortCutDialogNotFound: 'Could not find the keyboard shortcuts dialog. Trying again...',
houseNumberCheckboxNotFound: 'The "House Numbers" checkbox was not found. Trying again...',
scriptsTabNotFound: 'Scripts tab not found. Trying again...',
settingsTabAdded: 'Settings tab added.',
speedLayer: 'Speed layer',
opacityUpdated: 'Icon opacity adjusted to',
updatingSettingsTab: 'Updating settings tab...',
languageDefined: 'Languages defined.',
checkingVersion: 'Checking plugin version.',
insufficientGeometryAngleCalc: 'Insufficient geometry for angle calculation.',
segmentSmallerThanFilter: 'Segment length is smaller than filter. Ignoring...',
}
};
break;
};
this.logDebug(this.spdTranslations.log.languageDefined);
}
}
new WmeSpeedDisplay();