diff --git a/app/assets/javascripts/index/query.js b/app/assets/javascripts/index/query.js index c0395c701..dfe0adfe2 100644 --- a/app/assets/javascripts/index/query.js +++ b/app/assets/javascripts/index/query.js @@ -68,9 +68,11 @@ OSM.Query = function (map) { const tags = feature.tags; let prefix = ""; - if (tags.boundary === "administrative" && tags.admin_level) { - prefix = I18n.t("geocoder.search_osm_nominatim.admin_levels.level" + tags.admin_level, { - defaultValue: I18n.t("geocoder.search_osm_nominatim.prefix.boundary.administrative") + if (tags.boundary === "administrative" && (tags.border_type || tags.admin_level)) { + prefix = I18n.t("geocoder.search_osm_nominatim.border_types." + tags.border_type, { + defaultValue: I18n.t("geocoder.search_osm_nominatim.admin_levels.level" + tags.admin_level, { + defaultValue: I18n.t("geocoder.search_osm_nominatim.prefix.boundary.administrative") + }) }); } else { const prefixes = I18n.t("geocoder.search_osm_nominatim.prefix"); diff --git a/app/controllers/geocoder_controller.rb b/app/controllers/geocoder_controller.rb index 85b4476f6..5f3b4dbb6 100644 --- a/app/controllers/geocoder_controller.rb +++ b/app/controllers/geocoder_controller.rb @@ -101,10 +101,14 @@ class GeocoderController < ApplicationController if klass == "boundary" && type == "administrative" rank = (place.attributes["address_rank"].to_i + 1) / 2 prefix_name = t "geocoder.search_osm_nominatim.admin_levels.level#{rank}", :default => prefix_name + border_type = nil + place_type = nil place_tags = %w[linked_place place] place.elements["extratags"].elements.each("tag") do |extratag| - prefix_name = t "geocoder.search_osm_nominatim.prefix.place.#{extratag.attributes['value']}", :default => prefix_name if place_tags.include?(extratag.attributes["key"]) + border_type = t "geocoder.search_osm_nominatim.border_types.#{extratag.attributes['value']}", :default => border_type if extratag.attributes["key"] == "border_type" + place_type = t "geocoder.search_osm_nominatim.prefix.place.#{extratag.attributes['value']}", :default => place_type if place_tags.include?(extratag.attributes["key"]) end + prefix_name = place_type || border_type || prefix_name end prefix = t ".prefix_format", :name => prefix_name object_type = place.attributes["osm_type"] diff --git a/config/locales/en.yml b/config/locales/en.yml index b73be94ad..2d68755e4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1496,16 +1496,43 @@ en: weir: "Weir" "yes": "Waterway" admin_levels: - level2: "Country Boundary" - level3: "Region Boundary" - level4: "State Boundary" - level5: "Region Boundary" - level6: "County Boundary" - level7: "Municipality Boundary" - level8: "City Boundary" - level9: "Village Boundary" - level10: "Suburb Boundary" - level11: "Neighbourhood Boundary" + level2: "International Boundary" + level3: "Administrative Boundary (Level 3)" + level4: "Administrative Boundary (Level 4)" + level5: "Administrative Boundary (Level 5)" + level6: "Administrative Boundary (Level 6)" + level7: "Administrative Boundary (Level 7)" + level8: "Administrative Boundary (Level 8)" + level9: "Administrative Boundary (Level 9)" + level10: "Administrative Boundary (Level 10)" + level11: "Administrative Boundary (Level 11)" + border_types: + arrondissement: "Arrondissement Boundary" + borough: "Borough Boundary" + cercle: "Cercle Boundary" + city: "City Boundary" + comarca: "Comarca Boundary" + county: "County Boundary" + departement: "Departmental Boundary" + department: "Departmental Boundary" + district: "District Boundary" + distrito: "District Boundary" + freguesia: "Freguesia Boundary" + local_authority: "Local Authority Boundary" + municipality: "Municipal Boundary" + municipi: "Municipal Boundary" + município: "Municipal Boundary" + nation: "International Boundary" + national: "International Boundary" + neighbourhood: "Neighborhood Boundary" + parish: "Parish Boundary" + province: "Provincial Boundary" + região: "Regional Boundary" + region: "Regional Boundary" + state: "State Boundary" + town: "Town Boundary" + township: "Township Boundary" + village: "Village Boundary" results: no_results: "No results found" more_results: "More results"