Page MenuHomePhabricator
Paste P7116

_altlang dictionaries
ActivePublic

Authored by Dalba on May 11 2018, 7:01 AM.
Referenced Files
F18167626: _altlang dictionaries
May 11 2018, 1:29 PM
F18167623: _altlang dictionaries
May 11 2018, 1:28 PM
F18166828: _altlang dictionaries
May 11 2018, 11:33 AM
F18166820: _altlang dictionaries
May 11 2018, 11:33 AM
F18166701: _altlang dictionaries
May 11 2018, 11:17 AM
F18166688: _altlang dictionaries
May 11 2018, 11:12 AM
F18160482: _altlang dictionaries
May 11 2018, 7:01 AM
Subscribers
None
from ast import *
parsed = parse('''def _altlang(lang):
# Akan
if lang in ['ak', 'tw']:
return ['ak', 'tw']
# Amharic
if lang in ['aa', 'ti']:
return ['am']
# Arab
if lang in ['arc', 'arz', 'so']:
return ['ar']
if lang == 'kab':
return ['ar', 'fr']
# Bulgarian
if lang in ['cu', 'mk']:
return ['bg', 'sr', 'sh']
# Czech
if lang in ['cs', 'sk']:
return ['cs', 'sk']
# German
if lang in ['bar', 'frr', 'ksh', 'pdc', 'pfl']:
return ['de']
if lang == 'lb':
return ['de', 'fr']
if lang in ['als', 'gsw']:
return ['als', 'gsw', 'de']
if lang == 'nds':
return ['nds-nl', 'de']
if lang in ['dsb', 'hsb']:
return ['hsb', 'dsb', 'de']
if lang == 'sli':
return ['de', 'pl']
if lang == 'rm':
return ['de', 'it']
if lang == 'stq':
return ['nds', 'de']
# Greek
if lang in ['grc', 'pnt']:
return ['el']
# Esperanto
if lang in ['io', 'nov']:
return ['eo']
# Spanish
if lang in ['an', 'arn', 'ast', 'ay', 'ext', 'lad', 'nah', 'nv', 'qu',
'yua']:
return ['es']
if lang == 'ca':
return ['oc', 'es']
if lang in ['gl', 'gn']:
return ['es', 'pt']
if lang == 'eu':
return ['es', 'fr']
if lang == 'cbk-zam':
return ['es', 'tl']
# Estonian
if lang in ['fiu-vro', 'vro']:
return ['fiu-vro', 'vro', 'et']
if lang == 'liv':
return ['et', 'lv']
# Persian (Farsi)
if lang in ['azb', 'lrc', 'ps']:
return ['fa']
if lang in ['glk', 'mzn']:
return ['glk', 'mzn', 'fa', 'ar']
# Finnish
if lang == 'vep':
return ['et', 'fi', 'ru']
if lang == 'fit':
return ['fi', 'sv']
if lang == 'olo':
return ['fi']
# French
if lang in ['atj', 'bm', 'br', 'ff', 'ht', 'kbp', 'kg', 'ln', 'mg', 'nrm',
'pcd', 'rw', 'sg', 'ty', 'wa', 'wo']:
return ['fr']
if lang == 'oc':
return ['fr', 'ca', 'es']
if lang in ['co', 'frp']:
return ['fr', 'it']
# Hindi
if lang in ['mai', 'sa']:
return ['hi']
if lang in ['ne', 'new']:
return ['ne', 'new', 'hi']
if lang == 'dty':
return ['ne']
if lang in ['bh', 'bho']:
return ['bh', 'bho']
# Indonesian and Malay
if lang in ['ace', 'bug', 'bjn', 'id', 'jv', 'ms', 'su']:
return ['id', 'ms', 'jv']
if lang == 'map-bms':
return ['jv', 'id', 'ms']
if lang == 'min':
return ['id']
# Inuit languages
if lang in ['ik', 'iu']:
return ['iu', 'kl']
if lang == 'kl':
return ['da', 'iu', 'no', 'nb']
# Italian
if lang in ['eml', 'fur', 'lij', 'lmo', 'nap', 'pms', 'roa-tara', 'sc',
'scn', 'vec']:
return ['it']
# Lithuanian
if lang in ['bat-smg', 'sgs']:
return ['bat-smg', 'sgs', 'lt']
# Latvian
if lang == 'ltg':
return ['lv']
# Dutch
if lang in ['af', 'fy', 'li', 'pap', 'srn', 'vls', 'zea']:
return ['nl']
if lang == 'nds-nl':
return ['nds', 'nl']
# Polish
if lang in ['csb', 'szl']:
return ['pl']
# Portuguese
if lang in ['fab', 'mwl', 'tet']:
return ['pt']
# Romanian
if lang in ['roa-rup', 'rup']:
return ['roa-rup', 'rup', 'ro']
if lang in ['mo', 'rmy']:
return ['ro']
# Russian and Belarusian
if lang in ['ab', 'av', 'ba', 'bxr', 'ce', 'cv', 'inh', 'kk', 'koi', 'krc',
'kv', 'ky', 'lbe', 'lez', 'mdf', 'mhr', 'mn', 'mrj', 'myv',
'os', 'sah', 'tg', 'tyv', 'udm', 'uk', 'xal']:
return ['ru']
if lang in ['kbd', 'ady']:
return ['kbd', 'ady', 'ru']
if lang == 'tt':
return ['tt-cyrl', 'ru']
if lang in ['be', 'be-tarask']:
return ['be', 'be-tarask', 'ru']
if lang == 'kaa':
return ['uz', 'ru']
# Serbocroatian
if lang in ['bs', 'hr', 'sh']:
return ['sh', 'hr', 'bs', 'sr', 'sr-el']
if lang == 'sr':
return ['sr-el', 'sh', 'hr', 'bs']
# Tagalog
if lang in ['bcl', 'ceb', 'ilo', 'pag', 'pam', 'war']:
return ['tl']
# Turkish and Kurdish
if lang in ['diq', 'ku']:
return ['ku', 'ku-latn', 'tr']
if lang == 'gag':
return ['tr']
if lang == 'ckb':
return ['ku']
# Ukrainian
if lang in ['crh', 'crh-latn']:
return ['crh', 'crh-latn', 'uk', 'ru']
if lang in ['rue']:
return ['uk', 'ru']
# Chinese
if lang in ['zh-classical', 'lzh', 'minnan', 'nan', 'zh-tw',
'zh', 'zh-hans']:
return ['zh', 'zh-hans', 'zh-tw', 'zh-cn', 'zh-classical', 'lzh']
if lang == 'zh-min-nan':
return ['cdo', 'zh', 'zh-hans', 'zh-tw', 'zh-cn', 'zh-classical',
'lzh']
if lang in ['cdo', 'gan', 'hak', 'ii', 'wuu', 'za', 'zh-classical', 'lzh',
'zh-cn', 'zh-yue', 'yue']:
return ['zh', 'zh-hans' 'zh-cn', 'zh-tw', 'zh-classical', 'lzh']
# Scandinavian languages
if lang in ['da', 'sv']:
return ['da', 'no', 'nb', 'sv', 'nn']
if lang in ['fo', 'is']:
return ['da', 'no', 'nb', 'nn', 'sv']
if lang == 'nn':
return ['no', 'nb', 'sv', 'da']
if lang in ['no', 'nb']:
return ['no', 'nb', 'da', 'nn', 'sv']
if lang == 'se':
return ['sv', 'no', 'nb', 'nn', 'fi']
# Other languages
if lang in ['bi', 'tpi']:
return ['bi', 'tpi']
if lang == 'yi':
return ['he', 'de']
if lang in ['ia', 'ie']:
return ['ia', 'la', 'it', 'fr', 'es']
if lang == 'xmf':
return ['ka']
if lang in ['nso', 'st']:
return ['st', 'nso']
if lang in ['kj', 'ng']:
return ['kj', 'ng']
if lang in ['meu', 'hmo']:
return ['meu', 'hmo']
if lang in ['as', 'bpy']:
return ['bn']
if lang == 'tcy':
return ['kn']
# Default value
return []''')
_LANG_TO_GROUP_NAME = {}
_GROUP_NAME_TO_FALLBACKS = {}
# The last statement is the return statement, others are if-statements
for ifexp in parsed.body[0].body[:-1]:
test = ifexp.test
op = type(test.ops[0])
if op is In:
input_langs = literal_eval(test.comparators[0])
elif op is Eq:
input_langs = [literal_eval(test.comparators[0])]
else:
raise RuntimeError
return_list = literal_eval(ifexp.body[0].value)
lang_group = input_langs[0]
for lang in input_langs:
if lang in _LANG_TO_GROUP_NAME:
print('Warning"', lang, '"was found in more than one group.')
else:
_LANG_TO_GROUP_NAME[lang] = lang_group
assert lang_group not in _GROUP_NAME_TO_FALLBACKS
_GROUP_NAME_TO_FALLBACKS[lang_group] = return_list
print('{\n ' + '\n '.join(
f"'{k}': '{v}'," for k, v in sorted(_LANG_TO_GROUP_NAME.items())) + '\n}')
print("{\n '': [],\n " + '\n '.join(
f"'{k}': {v}," for k, v in sorted(_GROUP_NAME_TO_FALLBACKS.items()))
+ '\n}')

Event Timeline

Dalba edited the content of this paste. (Show Details)
Dalba edited the content of this paste. (Show Details)