From 5a9095defd99804f1aac729d43752cf6588698ba Mon Sep 17 00:00:00 2001 From: Bertrand Zuchuat Date: Mon, 17 Jan 2022 16:50:30 +0100 Subject: [PATCH] languages: add some mapping alpha-3 to alpha-2 * Closes #748. Co-Authored-by: Bertrand Zuchuat --- sonar/config_sonar.py | 500 ++++++++++++++++++++- sonar/heg/serializers/schemas/heg.py | 4 - sonar/modules/documents/views.py | 5 +- tests/ui/documents/test_documents_views.py | 2 + 4 files changed, 493 insertions(+), 18 deletions(-) diff --git a/sonar/config_sonar.py b/sonar/config_sonar.py index 8e258bc6..3a152450 100644 --- a/sonar/config_sonar.py +++ b/sonar/config_sonar.py @@ -22,19 +22,493 @@ SONAR_APP_ANGULAR_URL = 'https://localhost:5000/manage/' """Link to angular integrated app root.""" -SONAR_APP_LANGUAGES_MAP = dict(fre='fr', - ger='de', - eng='en', - ita='it', - spa='sp', - ara='ar', - chi='zh', - lat='la', - heb='iw', - jpn='ja', - por='pt', - rus='ru', - afr='af') +SONAR_APP_LANGUAGES_MAP = {'aar':'aa', + 'abk':'ab', + 'ace':None, + 'ach':None, + 'ada':None, + 'ady':None, + 'afa':None, + 'afh':None, + 'afr':'af', + 'ain':None, + 'aka':'ak', + 'akk':None, + 'alb':'sq', + 'ale':None, + 'alg':None, + 'alt':None, + 'ang':None, + 'amh':'am', + 'anp':None, + 'apa':None, + 'ara':'ar', + 'arc':None, + 'arg':'an', + 'arm':'hy', + 'arn':None, + 'arp':None, + 'art':None, + 'arw':None, + 'asm':'as', + 'ast':None, + 'ath':None, + 'aus':None, + 'ava':'av', + 'ave':'ae', + 'awa':None, + 'aym':'ay', + 'aze':'az', + 'bad':None, + 'bai':None, + 'bak':'ba', + 'bal':None, + 'bam':'bm', + 'ban':None, + 'baq':'eu', + 'bas':None, + 'bat':None, + 'bej':None, + 'bel':'be', + 'bem':None, + 'ben':'bn', + 'ber':None, + 'bho':None, + 'bih':'bh', + 'bik':None, + 'bin':None, + 'bis':'bi', + 'bla':None, + 'bnt':None, + 'bos':'bs', + 'bra':None, + 'bre':'br', + 'btk':None, + 'bua':None, + 'bug':None, + 'bul':'bg', + 'bur':'my', + 'byn':None, + 'cad':None, + 'cai':None, + 'car':None, + 'cat':'ca', + 'cau':None, + 'ceb':None, + 'cel':None, + 'cha':'ch', + 'chb':None, + 'che':'ce', + 'chg':None, + 'chi':'zh', + 'chk':None, + 'chm':None, + 'chn':None, + 'cho':None, + 'chp':None, + 'chr':None, + 'chu':'cu', + 'chv':'cv', + 'chy':None, + 'cmc':None, + 'cnr':None, + 'cop':None, + 'cor':'kw', + 'cos':'co', + 'cpe':None, + 'cpf':None, + 'cpp':None, + 'cre':'cr', + 'crh':None, + 'crp':None, + 'csb':None, + 'cus':None, + 'cze':'cs', + 'dak':None, + 'dan':'da', + 'dar':None, + 'day':None, + 'del':None, + 'den':None, + 'dgr':None, + 'din':None, + 'div':'dv', + 'doi':None, + 'dra':None, + 'dsb':None, + 'dua':None, + 'dum':None, + 'dut':'nl', + 'dyu':None, + 'dzo':'dz', + 'efi':None, + 'egy':None, + 'eka':None, + 'elx':None, + 'eng':'en', + 'enm':None, + 'epo':'eo', + 'est':'et', + 'ewe':'ee', + 'ewo':None, + 'fan':None, + 'fao':'fo', + 'fat':None, + 'fij':'fj', + 'fil':None, + 'fin':'fi', + 'fiu':None, + 'fon':None, + 'fre':'fr', + 'frm':None, + 'fro':None, + 'frr':None, + 'frs':None, + 'fry':'fy', + 'ful':'ff', + 'fur':None, + 'gaa':None, + 'gay':None, + 'gba':None, + 'gem':None, + 'geo':'ka', + 'ger':'de', + 'gez':None, + 'gil':None, + 'gla':'gd', + 'gle':'ga', + 'glg':'gl', + 'glv':'gv', + 'gmh':None, + 'goh':None, + 'gon':None, + 'gor':None, + 'got':None, + 'grb':None, + 'grc':None, + 'gre':'el', + 'grn':'gn', + 'gsw':None, + 'guj':'gu', + 'gwi':None, + 'hai':None, + 'hat':'ht', + 'hau':'ha', + 'haw':None, + 'heb':'he', + 'her':'hz', + 'hil':None, + 'him':None, + 'hin':'hi', + 'hit':None, + 'hmn':None, + 'hmo':'ho', + 'hrv':'hr', + 'hsb':None, + 'hun':'hu', + 'hup':None, + 'iba':None, + 'ibo':'ig', + 'ice':'is', + 'ido':'io', + 'iii':'ii', + 'ijo':None, + 'iku':'iu', + 'ile':'ie', + 'ilo':None, + 'ina':'ia', + 'inc':None, + 'ind':'id', + 'ine':None, + 'inh':None, + 'ipk':'ik', + 'ira':None, + 'iro':None, + 'ita':'it', + 'jav':'jv', + 'jbo':None, + 'jpn':'ja', + 'jpr':None, + 'jrb':None, + 'kaa':None, + 'kab':None, + 'kac':None, + 'kal':'kl', + 'kam':None, + 'kan':'kn', + 'kar':None, + 'kas':'ks', + 'kau':'kr', + 'kaw':None, + 'kaz':'kk', + 'kbd':None, + 'kha':None, + 'khi':None, + 'khm':'km', + 'kho':None, + 'kik':'ki', + 'kin':'rw', + 'kir':'ky', + 'kmb':None, + 'kok':None, + 'kom':'kv', + 'kon':'kg', + 'kor':'ko', + 'kos':None, + 'kpe':None, + 'krc':None, + 'krl':None, + 'kro':None, + 'kru':None, + 'kua':'kj', + 'kum':None, + 'kur':'ku', + 'kut':None, + 'lad':None, + 'lah':None, + 'lam':None, + 'lao':'lo', + 'lat':'la', + 'lav':'lv', + 'lez':None, + 'lim':'li', + 'lin':'ln', + 'lit':'lt', + 'lol':None, + 'loz':None, + 'ltz':'lb', + 'lua':None, + 'lub':'lu', + 'lug':'lg', + 'lui':None, + 'lun':None, + 'luo':None, + 'lus':None, + 'mac':'mk', + 'mad':None, + 'mag':None, + 'mah':'mh', + 'mai':None, + 'mak':None, + 'mal':'ml', + 'man':None, + 'mao':'mi', + 'map':None, + 'mar':'mr', + 'mas':None, + 'may':'ms', + 'mdf':None, + 'mdr':None, + 'men':None, + 'mga':None, + 'mic':None, + 'min':None, + 'mis':None, + 'mkh':None, + 'mlg':'mg', + 'mlt':'mt', + 'mnc':None, + 'mni':None, + 'mno':None, + 'moh':None, + 'mon':'mn', + 'mos':None, + 'mul':None, + 'mun':None, + 'mus':None, + 'mwl':None, + 'mwr':None, + 'myn':None, + 'myv':None, + 'nah':None, + 'nai':None, + 'nap':None, + 'nau':'na', + 'nav':'nv', + 'nbl':'nr', + 'nde':'nd', + 'ndo':'ng', + 'nds':None, + 'nep':'ne', + 'new':None, + 'nia':None, + 'nic':None, + 'niu':None, + 'nno':'nn', + 'nob':'nb', + 'nog':None, + 'non':None, + 'nor':'no', + 'nqo':None, + 'nso':None, + 'nub':None, + 'nwc':None, + 'nya':'ny', + 'nym':None, + 'nyn':None, + 'nyo':None, + 'nzi':None, + 'oci':'oc', + 'oji':'oj', + 'ori':'or', + 'orm':'om', + 'osa':None, + 'oss':'os', + 'ota':None, + 'oto':None, + 'paa':None, + 'pag':None, + 'pal':None, + 'pam':None, + 'pan':'pa', + 'pap':None, + 'pau':None, + 'peo':None, + 'per':'fa', + 'phi':None, + 'phn':None, + 'pli':'pi', + 'pol':'pl', + 'pon':None, + 'por':'pt', + 'pra':None, + 'pro':None, + 'pus':'ps', + 'que':'qu', + 'raj':None, + 'rap':None, + 'rar':None, + 'roa':None, + 'roh':'rm', + 'rom':None, + 'rum':'ro', + 'run':'rn', + 'rup':None, + 'rus':'ru', + 'sad':None, + 'sag':'sg', + 'sah':None, + 'sai':None, + 'sal':None, + 'sam':None, + 'san':'sa', + 'sas':None, + 'sat':None, + 'scn':None, + 'sco':None, + 'sel':None, + 'sem':None, + 'sga':None, + 'sgn':None, + 'shn':None, + 'sid':None, + 'sin':'si', + 'sio':None, + 'sit':None, + 'sla':None, + 'slo':'sk', + 'slv':'sl', + 'sma':None, + 'sme':'se', + 'smi':None, + 'smj':None, + 'smn':None, + 'smo':'sm', + 'sms':None, + 'sna':'sn', + 'snd':'sd', + 'snk':None, + 'sog':None, + 'som':'so', + 'son':None, + 'sot':'st', + 'spa':'es', + 'srd':'sc', + 'srn':None, + 'srp':'sr', + 'srr':None, + 'ssa':None, + 'ssw':'ss', + 'suk':None, + 'sun':'su', + 'sus':None, + 'sux':None, + 'swa':'sw', + 'swe':'sv', + 'syc':None, + 'syr':None, + 'tah':'ty', + 'tai':None, + 'tam':'ta', + 'tat':'tt', + 'tel':'te', + 'tem':None, + 'ter':None, + 'tet':None, + 'tgk':'tg', + 'tgl':'tl', + 'tha':'th', + 'tib':'bo', + 'tig':None, + 'tir':'ti', + 'tiv':None, + 'tkl':None, + 'tlh':None, + 'tli':None, + 'tmh':None, + 'tog':None, + 'ton':'to', + 'tpi':None, + 'tsi':None, + 'tsn':'tn', + 'tso':'ts', + 'tuk':'tk', + 'tum':None, + 'tup':None, + 'tur':'tr', + 'tut':None, + 'tvl':None, + 'twi':'tw', + 'tyv':None, + 'udm':None, + 'uga':None, + 'uig':'ug', + 'ukr':'uk', + 'umb':None, + 'und':None, + 'urd':'ur', + 'uzb':'uz', + 'vai':None, + 'ven':'ve', + 'vie':'vi', + 'vol':'vo', + 'vot':None, + 'wak':None, + 'wal':None, + 'war':None, + 'was':None, + 'wel':'cy', + 'wen':None, + 'wln':'wa', + 'wol':'wo', + 'xal':None, + 'xho':'xh', + 'yao':None, + 'yap':None, + 'yid':'yi', + 'yor':'yo', + 'ypk':None, + 'zap':None, + 'zbl':None, + 'zen':None, + 'zgh':None, + 'zha':'za', + 'znd':None, + 'zul':'zu', + 'zun':None, + 'zxx':None, + 'zza':None} + SONAR_APP_PREFERRED_LANGUAGES = ['eng', 'fre', 'ger', 'ita'] """Order of preferred languages for displaying value in views.""" diff --git a/sonar/heg/serializers/schemas/heg.py b/sonar/heg/serializers/schemas/heg.py index 243d14d7..4502c0e2 100644 --- a/sonar/heg/serializers/schemas/heg.py +++ b/sonar/heg/serializers/schemas/heg.py @@ -42,10 +42,6 @@ def pre_process_record(self, item, **kwargs): if item.get('language'): language = item['language'] - # As spanish code is `sp` in config.py - if language == 'es': - language = 'sp' - item['language'] = get_bibliographic_code_from_language(language) else: item['language'] = 'eng' diff --git a/sonar/modules/documents/views.py b/sonar/modules/documents/views.py index 67aba9b6..cc2d4570 100644 --- a/sonar/modules/documents/views.py +++ b/sonar/modules/documents/views.py @@ -333,8 +333,11 @@ def get_language_from_bibliographic_code(language_code): if language_code not in languages_map: raise Exception('Language code not found for "{language_code}"'.format( language_code=language_code)) + code = languages_map.get(language_code) + if not code: + return ''; - return languages_map[language_code] + return code def get_preferred_languages(force_language=None): diff --git a/tests/ui/documents/test_documents_views.py b/tests/ui/documents/test_documents_views.py index 60477d58..40f1c47e 100644 --- a/tests/ui/documents/test_documents_views.py +++ b/tests/ui/documents/test_documents_views.py @@ -147,6 +147,8 @@ def test_get_code_from_bibliographic_language(app): """Test bibliographic language code to alpha 2 code conversion.""" assert views.get_language_from_bibliographic_code('ger') == 'de' + assert views.get_language_from_bibliographic_code('ace') == '' + with pytest.raises(Exception) as e: views.get_language_from_bibliographic_code('zzz') assert str(e.value) == 'Language code not found for "zzz"'