made it easier to remove localization and on-demand loading of new
language packs, added parameter to say whether to use on-demand reloading, added parameter for the directory that contains the localization files, corrected a small bug when the string for the HEAD_ON instruction was not available,
This commit is contained in:
parent
73aeab3a57
commit
899d216b9b
@ -63,11 +63,14 @@ init: function() {
|
|||||||
document.getElementById('main-wrapper').addEventListener("webkitTransitionEnd", OSRM.GUI.onMainTransitionEnd, false);
|
document.getElementById('main-wrapper').addEventListener("webkitTransitionEnd", OSRM.GUI.onMainTransitionEnd, false);
|
||||||
document.getElementById('main-wrapper').addEventListener("oTransitionEnd", OSRM.GUI.onMainTransitionEnd, false);
|
document.getElementById('main-wrapper').addEventListener("oTransitionEnd", OSRM.GUI.onMainTransitionEnd, false);
|
||||||
document.getElementById('main-wrapper').addEventListener("MSTransitionEnd", OSRM.GUI.onMainTransitionEnd, false);
|
document.getElementById('main-wrapper').addEventListener("MSTransitionEnd", OSRM.GUI.onMainTransitionEnd, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set default language
|
||||||
|
OSRM.Localization.setLanguage( OSRM.DEFAULTS.LANGUAGE );
|
||||||
},
|
},
|
||||||
|
|
||||||
// set language dependent labels
|
// set language dependent labels
|
||||||
setLanguage: function() {
|
setLabels: function() {
|
||||||
document.getElementById("open-josm").innerHTML = OSRM.loc("OPEN_JOSM");
|
document.getElementById("open-josm").innerHTML = OSRM.loc("OPEN_JOSM");
|
||||||
document.getElementById("open-osmbugs").innerHTML = OSRM.loc("OPEN_OSMBUGS");
|
document.getElementById("open-osmbugs").innerHTML = OSRM.loc("OPEN_OSMBUGS");
|
||||||
document.getElementById("gui-reset").innerHTML = OSRM.loc("GUI_RESET");
|
document.getElementById("gui-reset").innerHTML = OSRM.loc("GUI_RESET");
|
||||||
|
@ -43,7 +43,7 @@ call: function(marker_id, query) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//build request for geocoder
|
//build request for geocoder
|
||||||
var call = OSRM.DEFAULTS.HOST_GEOCODER_URL + "?format=json" + OSRM.DEFAULTS.GEOCODER_BOUNDS + "&accept-language="+OSRM.DEFAULTS.LANGUAGE+"&q=" + query;
|
var call = OSRM.DEFAULTS.HOST_GEOCODER_URL + "?format=json" + OSRM.DEFAULTS.GEOCODER_BOUNDS + "&accept-language="+OSRM.Localization.current_language+"&q=" + query;
|
||||||
OSRM.JSONP.call( call, OSRM.Geocoder._showResults, OSRM.Geocoder._showResults_Timeout, OSRM.DEFAULTS.JSONP_TIMEOUT, "geocoder_"+marker_id, {marker_id:marker_id,query:query} );
|
OSRM.JSONP.call( call, OSRM.Geocoder._showResults, OSRM.Geocoder._showResults_Timeout, OSRM.DEFAULTS.JSONP_TIMEOUT, "geocoder_"+marker_id, {marker_id:marker_id,query:query} );
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ updateAddress: function(marker_id, do_fallback_to_lat_lng) {
|
|||||||
} else
|
} else
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var call = OSRM.DEFAULTS.HOST_REVERSE_GEOCODER_URL + "?format=json" + "&accept-language="+OSRM.DEFAULTS.LANGUAGE + "&lat=" + lat + "&lon=" + lng;
|
var call = OSRM.DEFAULTS.HOST_REVERSE_GEOCODER_URL + "?format=json" + "&accept-language="+OSRM.Localization.current_language + "&lat=" + lat + "&lon=" + lng;
|
||||||
OSRM.JSONP.call( call, OSRM.Geocoder._showReverseResults, OSRM.Geocoder._showReverseResults_Timeout, OSRM.DEFAULTS.JSONP_TIMEOUT, "reverse_geocoder_"+marker_id, {marker_id:marker_id, do_fallback: do_fallback_to_lat_lng} );
|
OSRM.JSONP.call( call, OSRM.Geocoder._showReverseResults, OSRM.Geocoder._showReverseResults_Timeout, OSRM.DEFAULTS.JSONP_TIMEOUT, "reverse_geocoder_"+marker_id, {marker_id:marker_id, do_fallback: do_fallback_to_lat_lng} );
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -19,8 +19,7 @@ or see http://www.gnu.org/licenses/agpl.txt.
|
|||||||
// [has to be loaded directly after OSRM.base]
|
// [has to be loaded directly after OSRM.base]
|
||||||
|
|
||||||
OSRM.DEFAULTS = {
|
OSRM.DEFAULTS = {
|
||||||
//HOST_ROUTING_URL: 'http://router.project-osrm.org/viaroute',
|
HOST_ROUTING_URL: 'http://router.project-osrm.org/viaroute',
|
||||||
HOST_ROUTING_URL: 'http://141.3.24.68:5000/viaroute',
|
|
||||||
HOST_SHORTENER_URL: 'http://map.project-osrm.org/shorten/',
|
HOST_SHORTENER_URL: 'http://map.project-osrm.org/shorten/',
|
||||||
HOST_GEOCODER_URL: 'http://nominatim.openstreetmap.org/search',
|
HOST_GEOCODER_URL: 'http://nominatim.openstreetmap.org/search',
|
||||||
HOST_REVERSE_GEOCODER_URL: 'http://nominatim.openstreetmap.org/reverse',
|
HOST_REVERSE_GEOCODER_URL: 'http://nominatim.openstreetmap.org/reverse',
|
||||||
@ -33,5 +32,6 @@ OSRM.DEFAULTS = {
|
|||||||
ONLOAD_TARGET: "",
|
ONLOAD_TARGET: "",
|
||||||
HIGHLIGHT_ZOOM_LEVEL: 16,
|
HIGHLIGHT_ZOOM_LEVEL: 16,
|
||||||
LANGUAGE: "en",
|
LANGUAGE: "en",
|
||||||
|
LANGUAGE_FILES_DIRECTORY: "localization/",
|
||||||
GEOCODER_BOUNDS: '&bounded=1&viewbox=-27.0,72.0,46.0,36.0'
|
GEOCODER_BOUNDS: '&bounded=1&viewbox=-27.0,72.0,46.0,36.0'
|
||||||
};
|
};
|
||||||
|
@ -84,4 +84,5 @@ OSRM.Localization["de"] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// set GUI language on load
|
// set GUI language on load
|
||||||
OSRM.Localization.change("de");
|
if( OSRM.Localization.use_ondemand_reloading==true)
|
||||||
|
OSRM.Localization.setLanguage("de");
|
@ -84,4 +84,5 @@ OSRM.Localization["en"] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//set GUI language on load
|
//set GUI language on load
|
||||||
OSRM.Localization.change("en");
|
if( OSRM.Localization.use_ondemand_reloading==true)
|
||||||
|
OSRM.Localization.setLanguage("en");
|
@ -20,10 +20,12 @@ or see http://www.gnu.org/licenses/agpl.txt.
|
|||||||
|
|
||||||
|
|
||||||
OSRM.Localization = {
|
OSRM.Localization = {
|
||||||
|
|
||||||
|
use_ondemand_reloading: true,
|
||||||
supported_languages: [ {display_name:"en", encoding:"en"},
|
supported_languages: [ {display_name:"en", encoding:"en"},
|
||||||
{display_name:"de", encoding:"de"}
|
{display_name:"de", encoding:"de"}
|
||||||
],
|
],
|
||||||
|
current_language: OSRM.DEFAULTS.LANGUAGE,
|
||||||
|
|
||||||
// initialize localization
|
// initialize localization
|
||||||
init: function() {
|
init: function() {
|
||||||
@ -31,8 +33,8 @@ init: function() {
|
|||||||
var select = document.createElement('select');
|
var select = document.createElement('select');
|
||||||
select.id = "gui-language-toggle";
|
select.id = "gui-language-toggle";
|
||||||
select.className = "top-left-button";
|
select.className = "top-left-button";
|
||||||
select.onchange = function() { OSRM.Localization.change(this.value); };
|
select.onchange = function() { OSRM.Localization.setLanguage(this.value); };
|
||||||
|
|
||||||
// fill dropdown menu
|
// fill dropdown menu
|
||||||
for(var i=0, size=OSRM.Localization.supported_languages.length; i<size; i++) {
|
for(var i=0, size=OSRM.Localization.supported_languages.length; i<size; i++) {
|
||||||
var option=document.createElement("option");
|
var option=document.createElement("option");
|
||||||
@ -40,6 +42,7 @@ init: function() {
|
|||||||
option.value = OSRM.Localization.supported_languages[i].encoding;
|
option.value = OSRM.Localization.supported_languages[i].encoding;
|
||||||
select.appendChild(option);
|
select.appendChild(option);
|
||||||
}
|
}
|
||||||
|
select.value = OSRM.DEFAULTS.LANGUAGE;
|
||||||
|
|
||||||
// add element to DOM
|
// add element to DOM
|
||||||
var input_mask_header = document.getElementById('input-mask-header');
|
var input_mask_header = document.getElementById('input-mask-header');
|
||||||
@ -54,26 +57,25 @@ init: function() {
|
|||||||
select.parentNode.insertBefore(myspan, select);
|
select.parentNode.insertBefore(myspan, select);
|
||||||
myspan.style.width = (select.clientWidth-2)+"px";
|
myspan.style.width = (select.clientWidth-2)+"px";
|
||||||
myspan.style.height = (select.clientHeight)+"px";
|
myspan.style.height = (select.clientHeight)+"px";
|
||||||
|
|
||||||
// initialize default language
|
|
||||||
OSRM.Localization.change( OSRM.DEFAULTS.LANGUAGE );
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// perform language change
|
// perform language change
|
||||||
change: function(language) {
|
setLanguage: function(language) {
|
||||||
OSRM.DEFAULTS.LANGUAGE = language;
|
|
||||||
// update selector
|
|
||||||
var select = document.getElementById('gui-language-toggle');
|
|
||||||
var option = select.getElementsByTagName("option");
|
|
||||||
select.value = language;
|
|
||||||
for(var i = 0; i < option.length; i++)
|
|
||||||
if(option[i].selected == true) {
|
|
||||||
document.getElementById("styled-select" + select.id).childNodes[0].nodeValue = option[i].childNodes[0].nodeValue;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// change gui language
|
|
||||||
if( OSRM.Localization[language]) {
|
if( OSRM.Localization[language]) {
|
||||||
OSRM.GUI.setLanguage();
|
OSRM.Localization.current_language = language;
|
||||||
|
// update selector
|
||||||
|
if( select = document.getElementById('gui-language-toggle') ) { // yes, = not == !
|
||||||
|
var option = select.getElementsByTagName("option");
|
||||||
|
select.value = language;
|
||||||
|
for(var i = 0; i < option.length; i++)
|
||||||
|
if(option[i].selected == true) {
|
||||||
|
document.getElementById("styled-select" + select.id).childNodes[0].nodeValue = option[i].childNodes[0].nodeValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// change gui language
|
||||||
|
OSRM.GUI.setLabels();
|
||||||
|
// requery data
|
||||||
if( OSRM.G.markers.route.length > 1)
|
if( OSRM.G.markers.route.length > 1)
|
||||||
OSRM.Routing.getRoute();
|
OSRM.Routing.getRoute();
|
||||||
else if(OSRM.G.markers.route.length > 0 && document.getElementById('information-box').innerHTML != "" ) {
|
else if(OSRM.G.markers.route.length > 0 && document.getElementById('information-box').innerHTML != "" ) {
|
||||||
@ -85,20 +87,25 @@ change: function(language) {
|
|||||||
document.getElementById('information-box').innerHTML = "";
|
document.getElementById('information-box').innerHTML = "";
|
||||||
document.getElementById('information-box-header').innerHTML = "";
|
document.getElementById('information-box-header').innerHTML = "";
|
||||||
}
|
}
|
||||||
} else {
|
} else if(OSRM.Localization.use_ondemand_reloading==true) {
|
||||||
var script = document.createElement('script');
|
for(var i=0, size=OSRM.Localization.supported_languages.length; i<size; i++) {
|
||||||
script.type = 'text/javascript';
|
if( OSRM.Localization.supported_languages[i].encoding == language) {
|
||||||
script.src = "localization/OSRM.Locale."+language+".js";
|
var script = document.createElement('script');
|
||||||
document.head.appendChild(script);
|
script.type = 'text/javascript';
|
||||||
|
script.src = OSRM.DEFAULTS.LANGUAGE_FILES_DIRECTORY + "OSRM.Locale."+language+".js";
|
||||||
|
document.head.appendChild(script);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// if existing, return localized string -> English string -> input string
|
// if existing, return localized string -> English string -> input string
|
||||||
translate: function(text) {
|
translate: function(text) {
|
||||||
if( OSRM.Localization[OSRM.DEFAULTS.LANGUAGE] && OSRM.Localization[OSRM.DEFAULTS.LANGUAGE][text] )
|
if( OSRM.Localization[OSRM.Localization.current_language] && OSRM.Localization[OSRM.Localization.current_language][text] )
|
||||||
|
return OSRM.Localization[OSRM.Localization.current_language][text];
|
||||||
|
else if( OSRM.Localization[OSRM.DEFAULTS.LANGUAGE] && OSRM.Localization[OSRM.DEFAULTS.LANGUAGE][text] )
|
||||||
return OSRM.Localization[OSRM.DEFAULTS.LANGUAGE][text];
|
return OSRM.Localization[OSRM.DEFAULTS.LANGUAGE][text];
|
||||||
else if( OSRM.Localization["en"] && OSRM.Localization["en"][text] )
|
|
||||||
return OSRM.Localization["en"][text];
|
|
||||||
else
|
else
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
@ -126,12 +126,7 @@ OSRM.parseParameters = function(){
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(name_val[0] == 'hl') {
|
if(name_val[0] == 'hl') {
|
||||||
for(var i=0, size=OSRM.Localization.supported_languages.length; i<size; i++) {
|
OSRM.Localization.setLanguage(name_val[1]);
|
||||||
if( OSRM.Localization.supported_languages[i].encoding == name_val[1]) {
|
|
||||||
OSRM.Localization.change(name_val[1]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if(name_val[0] == 'loc') {
|
else if(name_val[0] == 'loc') {
|
||||||
var coordinates = unescape(name_val[1]).split(',');
|
var coordinates = unescape(name_val[1]).split(',');
|
||||||
|
@ -74,7 +74,7 @@ show: function(response) {
|
|||||||
|
|
||||||
// build route description
|
// build route description
|
||||||
if( i == 0 )
|
if( i == 0 )
|
||||||
route_desc += OSRM.loc(OSRM.RoutingDescription.getDrivingInstruction(response.route_instructions[i][0])).replace(/%s/, OSRM.loc(response.route_instructions[i][6]) );
|
route_desc += OSRM.loc(OSRM.RoutingDescription.getDrivingInstruction(response.route_instructions[i][0])).replace(/\[(.*)\]/,"$1").replace(/%s/, OSRM.loc(response.route_instructions[i][6]) );
|
||||||
else if( response.route_instructions[i][1] != "" )
|
else if( response.route_instructions[i][1] != "" )
|
||||||
route_desc += OSRM.loc(OSRM.RoutingDescription.getDrivingInstruction(response.route_instructions[i][0])).replace(/\[(.*)\]/,"$1").replace(/%s/, response.route_instructions[i][1]);
|
route_desc += OSRM.loc(OSRM.RoutingDescription.getDrivingInstruction(response.route_instructions[i][0])).replace(/\[(.*)\]/,"$1").replace(/%s/, response.route_instructions[i][1]);
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user