diff --git a/scripts/geodata/i18n/languages.py b/scripts/geodata/i18n/languages.py index 3e93edbd..2568957b 100644 --- a/scripts/geodata/i18n/languages.py +++ b/scripts/geodata/i18n/languages.py @@ -57,3 +57,17 @@ def init_languages(languages_dir=LANGUAGES_DIR): languages.add(lang) initialized = True + + +def get_country_languages(country): + languages = official_languages[country] + overrides = road_language_overrides.get(country) + if overrides and overrides.values()[0]: + languages = overrides + elif overrides: + languages.update(overrides) + return languages + + +def get_regional_languages(country, key, value): + return regional_languages.get((country, key, value), OrderedDict()) diff --git a/scripts/geodata/polygons/language_polys.py b/scripts/geodata/polygons/language_polys.py index c2d8335c..96a2eaf1 100644 --- a/scripts/geodata/polygons/language_polys.py +++ b/scripts/geodata/polygons/language_polys.py @@ -81,22 +81,17 @@ class LanguagePolygonIndex(RTreePolygonIndex): regional = None if name_key: - regional = regional_languages.get((country, name_key, admin1), None) + regional = get_regional_languages(country, name_key, admin1) if code_key and not regional: - regional = regional_languages.get((country, code_key, admin1_code), None) + regional = get_regional_languages(country, code_key, admin1_code) if not regional: continue languages = regional.items() else: - languages = official_languages[country].items() - overrides = road_language_overrides.get(country) - if overrides and overrides.values()[0]: - languages = overrides.items() - elif overrides: - languages.extend(overrides.items()) + languages = get_country_languages(country) properties['languages'] = [{'lang': lang, 'default': default} for lang, default in languages]