From a17b5faf5f43bc2ad2d4023efe9c018d9830e393 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ky=E2=84=93e=20Hensel?= Date: Sat, 4 Mar 2023 06:34:24 +1300 Subject: [PATCH] Send 'Accept-Language' header on Nominatim API calls (#9501) --- modules/services/nominatim.js | 15 +++++++++++++-- test/spec/services/nominatim.js | 6 ++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/modules/services/nominatim.js b/modules/services/nominatim.js index ad435fd85..3362d9f40 100644 --- a/modules/services/nominatim.js +++ b/modules/services/nominatim.js @@ -3,6 +3,7 @@ import { json as d3_json } from 'd3-fetch'; import RBush from 'rbush'; import { geoExtent } from '../geo'; import { utilQsString } from '../util'; +import { localizer } from '../core'; import { nominatimApiUrl } from '../../config/id.js'; @@ -56,7 +57,12 @@ export default { var controller = new AbortController(); _inflight[url] = controller; - d3_json(url, { signal: controller.signal }) + d3_json(url, { + signal: controller.signal, + headers: { + 'Accept-Language': localizer.localeCodes().join(',') + } + }) .then(function(result) { delete _inflight[url]; if (result && result.error) { @@ -82,7 +88,12 @@ export default { var controller = new AbortController(); _inflight[url] = controller; - d3_json(url, { signal: controller.signal }) + d3_json(url, { + signal: controller.signal, + headers: { + 'Accept-Language': localizer.localeCodes().join(',') + } + }) .then(function(result) { delete _inflight[url]; if (result && result.error) { diff --git a/test/spec/services/nominatim.js b/test/spec/services/nominatim.js index 1e6102649..a348f4b3c 100644 --- a/test/spec/services/nominatim.js +++ b/test/spec/services/nominatim.js @@ -75,6 +75,9 @@ describe('iD.serviceNominatim', function() { expect(parseQueryString(fetchMock.calls()[0][0])).to.eql( {zoom: '13', format: 'json', addressdetails: '1', lat: '49', lon: '17'} ); + expect(fetchMock.calls()[0][1].headers).to.eql({ + 'Accept-Language': 'en' + }); expect(callback).to.have.been.calledWithExactly(null, {address: {country_code:'cz'}}); done(); }, 50); @@ -144,6 +147,9 @@ describe('iD.serviceNominatim', function() { window.setTimeout(function() { expect(parseQueryString(fetchMock.calls()[0][0])).to.eql({format: 'json', limit: '10'}); + expect(fetchMock.calls()[0][1].headers).to.eql({ + 'Accept-Language': 'en' + }); expect(callback).to.have.been.calledOnce; done(); }, 50);