From 4aa368cc4006bac41c0f541a08920b237e2e240b Mon Sep 17 00:00:00 2001 From: Peter Johnson <738069+missinglink@users.noreply.github.com> Date: Wed, 3 Dec 2025 12:36:18 +0100 Subject: [PATCH] fix(translations): do not replace geonames name.default with value from whosonfirst --- middleware/changeLanguage.js | 10 ++++++--- test/unit/middleware/changeLanguage.js | 31 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/middleware/changeLanguage.js b/middleware/changeLanguage.js index 90d45b99e..e1afe13cc 100644 --- a/middleware/changeLanguage.js +++ b/middleware/changeLanguage.js @@ -1,7 +1,11 @@ -var field = require('../helper/fieldValue'); -var logger = require( 'pelias-logger' ).get( 'api' ); +const field = require('../helper/fieldValue'); +const logger = require( 'pelias-logger' ).get( 'api' ); const _ = require('lodash'); +// note: responses from the language service are (at time of writing) +// all from the 'whosonfirst' source. +const LANG_SERVICE_SOURCE = 'whosonfirst'; + /** example response from language web service: { @@ -112,7 +116,7 @@ function updateDocs( req, res, translations ){ // if the record is an admin record we also translate // the 'name.default' property. - if( adminKey === doc.layer ){ + if( adminKey === doc.layer && doc.source === LANG_SERVICE_SOURCE ){ doc.name.default = translations[id].names[ requestLanguage ][0]; } } diff --git a/test/unit/middleware/changeLanguage.js b/test/unit/middleware/changeLanguage.js index 66c1fda31..65d984218 100644 --- a/test/unit/middleware/changeLanguage.js +++ b/test/unit/middleware/changeLanguage.js @@ -144,6 +144,7 @@ module.exports.tests.success_conditions = (test, common) => { data: [ // doc with 2 layer names that will be changed { + source: 'whosonfirst', name: { default: 'original name for 1st result' }, @@ -161,6 +162,7 @@ module.exports.tests.success_conditions = (test, common) => { {}, // doc with only 1 layer name that will be changed and no default name change { + source: 'whosonfirst', name: { default: 'original name for 2nd result' }, @@ -184,6 +186,7 @@ module.exports.tests.success_conditions = (test, common) => { }, // doc with name that will be translated { + source: 'whosonfirst', name: { default: 'original name for 4th result', 'requested language': 'translated name' @@ -197,6 +200,7 @@ module.exports.tests.success_conditions = (test, common) => { }, // doc with name that will be translated { + source: 'whosonfirst', name: { default: 'original name for 5th result', 'random language': 'translated name' @@ -207,6 +211,18 @@ module.exports.tests.success_conditions = (test, common) => { layer1_id: ['1'], layer1: ['original name for layer1'] } + }, + // geonames record will have parents translated but not default name + { + source: 'geonames', + name: { + default: 'geonames name' + }, + layer: 'locality', + parent: { + layer1_id: ['1'], + layer1: ['original name for layer1'] + } } ] }; @@ -221,6 +237,7 @@ module.exports.tests.success_conditions = (test, common) => { t.deepEquals(res, { data: [ { + source: 'whosonfirst', name: { default: 'replacement name for layer1' }, @@ -235,6 +252,7 @@ module.exports.tests.success_conditions = (test, common) => { undefined, {}, { + source: 'whosonfirst', name: { default: 'original name for 2nd result' }, @@ -253,6 +271,7 @@ module.exports.tests.success_conditions = (test, common) => { } }, { + source: 'whosonfirst', name: { default: 'translated name', 'requested language': 'translated name' @@ -264,6 +283,7 @@ module.exports.tests.success_conditions = (test, common) => { } }, { + source: 'whosonfirst', name: { default: 'original name for 5th result', 'random language': 'translated name' @@ -273,6 +293,17 @@ module.exports.tests.success_conditions = (test, common) => { layer1_id: ['1'], layer1: ['replacement name for layer1'] } + }, + { + source: 'geonames', + name: { + default: 'geonames name' + }, + layer: 'locality', + parent: { + layer1_id: ['1'], + layer1: ['replacement name for layer1'] + } } ] });