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
@ -64,10 +64,13 @@ init: function() {
|
||||
document.getElementById('main-wrapper').addEventListener("oTransitionEnd", 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
|
||||
setLanguage: function() {
|
||||
setLabels: function() {
|
||||
document.getElementById("open-josm").innerHTML = OSRM.loc("OPEN_JOSM");
|
||||
document.getElementById("open-osmbugs").innerHTML = OSRM.loc("OPEN_OSMBUGS");
|
||||
document.getElementById("gui-reset").innerHTML = OSRM.loc("GUI_RESET");
|
||||
|
@ -43,7 +43,7 @@ call: function(marker_id, query) {
|
||||
}
|
||||
|
||||
//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} );
|
||||
},
|
||||
|
||||
@ -155,7 +155,7 @@ updateAddress: function(marker_id, do_fallback_to_lat_lng) {
|
||||
} else
|
||||
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} );
|
||||
},
|
||||
|
||||
|
@ -19,8 +19,7 @@ or see http://www.gnu.org/licenses/agpl.txt.
|
||||
// [has to be loaded directly after OSRM.base]
|
||||
|
||||
OSRM.DEFAULTS = {
|
||||
//HOST_ROUTING_URL: 'http://router.project-osrm.org/viaroute',
|
||||
HOST_ROUTING_URL: 'http://141.3.24.68:5000/viaroute',
|
||||
HOST_ROUTING_URL: 'http://router.project-osrm.org/viaroute',
|
||||
HOST_SHORTENER_URL: 'http://map.project-osrm.org/shorten/',
|
||||
HOST_GEOCODER_URL: 'http://nominatim.openstreetmap.org/search',
|
||||
HOST_REVERSE_GEOCODER_URL: 'http://nominatim.openstreetmap.org/reverse',
|
||||
@ -33,5 +32,6 @@ OSRM.DEFAULTS = {
|
||||
ONLOAD_TARGET: "",
|
||||
HIGHLIGHT_ZOOM_LEVEL: 16,
|
||||
LANGUAGE: "en",
|
||||
LANGUAGE_FILES_DIRECTORY: "localization/",
|
||||
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
|
||||
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
|
||||
OSRM.Localization.change("en");
|
||||
if( OSRM.Localization.use_ondemand_reloading==true)
|
||||
OSRM.Localization.setLanguage("en");
|
@ -21,9 +21,11 @@ or see http://www.gnu.org/licenses/agpl.txt.
|
||||
|
||||
OSRM.Localization = {
|
||||
|
||||
use_ondemand_reloading: true,
|
||||
supported_languages: [ {display_name:"en", encoding:"en"},
|
||||
{display_name:"de", encoding:"de"}
|
||||
],
|
||||
current_language: OSRM.DEFAULTS.LANGUAGE,
|
||||
|
||||
// initialize localization
|
||||
init: function() {
|
||||
@ -31,7 +33,7 @@ init: function() {
|
||||
var select = document.createElement('select');
|
||||
select.id = "gui-language-toggle";
|
||||
select.className = "top-left-button";
|
||||
select.onchange = function() { OSRM.Localization.change(this.value); };
|
||||
select.onchange = function() { OSRM.Localization.setLanguage(this.value); };
|
||||
|
||||
// fill dropdown menu
|
||||
for(var i=0, size=OSRM.Localization.supported_languages.length; i<size; i++) {
|
||||
@ -40,6 +42,7 @@ init: function() {
|
||||
option.value = OSRM.Localization.supported_languages[i].encoding;
|
||||
select.appendChild(option);
|
||||
}
|
||||
select.value = OSRM.DEFAULTS.LANGUAGE;
|
||||
|
||||
// add element to DOM
|
||||
var input_mask_header = document.getElementById('input-mask-header');
|
||||
@ -54,26 +57,25 @@ init: function() {
|
||||
select.parentNode.insertBefore(myspan, select);
|
||||
myspan.style.width = (select.clientWidth-2)+"px";
|
||||
myspan.style.height = (select.clientHeight)+"px";
|
||||
|
||||
// initialize default language
|
||||
OSRM.Localization.change( OSRM.DEFAULTS.LANGUAGE );
|
||||
},
|
||||
|
||||
// perform language change
|
||||
change: 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
|
||||
setLanguage: function(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)
|
||||
OSRM.Routing.getRoute();
|
||||
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-header').innerHTML = "";
|
||||
}
|
||||
} else {
|
||||
var script = document.createElement('script');
|
||||
script.type = 'text/javascript';
|
||||
script.src = "localization/OSRM.Locale."+language+".js";
|
||||
document.head.appendChild(script);
|
||||
} else if(OSRM.Localization.use_ondemand_reloading==true) {
|
||||
for(var i=0, size=OSRM.Localization.supported_languages.length; i<size; i++) {
|
||||
if( OSRM.Localization.supported_languages[i].encoding == language) {
|
||||
var script = document.createElement('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
|
||||
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];
|
||||
else if( OSRM.Localization["en"] && OSRM.Localization["en"][text] )
|
||||
return OSRM.Localization["en"][text];
|
||||
else
|
||||
return text;
|
||||
}
|
||||
|
@ -126,12 +126,7 @@ OSRM.parseParameters = function(){
|
||||
continue;
|
||||
|
||||
if(name_val[0] == 'hl') {
|
||||
for(var i=0, size=OSRM.Localization.supported_languages.length; i<size; i++) {
|
||||
if( OSRM.Localization.supported_languages[i].encoding == name_val[1]) {
|
||||
OSRM.Localization.change(name_val[1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
OSRM.Localization.setLanguage(name_val[1]);
|
||||
}
|
||||
else if(name_val[0] == 'loc') {
|
||||
var coordinates = unescape(name_val[1]).split(',');
|
||||
|
@ -74,7 +74,7 @@ show: function(response) {
|
||||
|
||||
// build route description
|
||||
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] != "" )
|
||||
route_desc += OSRM.loc(OSRM.RoutingDescription.getDrivingInstruction(response.route_instructions[i][0])).replace(/\[(.*)\]/,"$1").replace(/%s/, response.route_instructions[i][1]);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user