File size: 2,679 Bytes
2909918
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
"""

Language Code Mapping Utilities



Maps standard language codes to model-specific language codes

"""

# NLLB language code mapping
NLLB_LANGUAGE_MAP = {
    'en': 'eng_Latn',
    'es': 'spa_Latn', 
    'fr': 'fra_Latn',
    'de': 'deu_Latn',
    'it': 'ita_Latn',
    'pt': 'por_Latn',
    'ru': 'rus_Cyrl',
    'zh': 'zho_Hans',
    'ja': 'jpn_Jpan',
    'ko': 'kor_Hang',
    'ar': 'arb_Arab',
    'hi': 'hin_Deva',
    'tr': 'tur_Latn',
    'pl': 'pol_Latn',
    'nl': 'nld_Latn',
    'sv': 'swe_Latn',
    'da': 'dan_Latn',
    'no': 'nor_Latn',
    'fi': 'fin_Latn',
    'cs': 'ces_Latn',
    'hu': 'hun_Latn',
    'ro': 'ron_Latn',
    'bg': 'bul_Cyrl',
    'hr': 'hrv_Latn',
    'sk': 'slk_Latn',
    'sl': 'slv_Latn',
    'et': 'est_Latn',
    'lv': 'lvs_Latn',
    'lt': 'lit_Latn',
    'el': 'ell_Grek',
    'he': 'heb_Hebr',
    'th': 'tha_Thai',
    'vi': 'vie_Latn',
    'id': 'ind_Latn',
    'ms': 'zsm_Latn',
    'tl': 'tgl_Latn',
    'uk': 'ukr_Cyrl',
    'be': 'bel_Cyrl',
    'mk': 'mkd_Cyrl',
    'sr': 'srp_Cyrl',
    'bs': 'bos_Latn',
    'sq': 'als_Latn',
    'mt': 'mlt_Latn',
    'is': 'isl_Latn',
    'ga': 'gle_Latn',
    'cy': 'cym_Latn',
    'eu': 'eus_Latn',
    'ca': 'cat_Latn',
    'gl': 'glg_Latn',
    'af': 'afr_Latn',
    'sw': 'swh_Latn',
    'zu': 'zul_Latn',
    'xh': 'xho_Latn',
    'am': 'amh_Ethi',
    'ha': 'hau_Latn',
    'ig': 'ibo_Latn',
    'yo': 'yor_Latn',
    'bn': 'ben_Beng',
    'gu': 'guj_Gujr',
    'kn': 'kan_Knda',
    'ml': 'mal_Mlym',
    'mr': 'mar_Deva',
    'ne': 'npi_Deva',
    'pa': 'pan_Guru',
    'si': 'sin_Sinh',
    'ta': 'tam_Taml',
    'te': 'tel_Telu',
    'ur': 'urd_Arab',
    'fa': 'pes_Arab',
    'ps': 'pbt_Arab',
    'sd': 'snd_Arab',
    'ku': 'ckb_Arab',
    'az': 'azj_Latn',
    'kk': 'kaz_Cyrl',
    'ky': 'kir_Cyrl',
    'mn': 'khk_Cyrl',
    'uz': 'uzn_Latn',
    'tg': 'tgk_Cyrl',
    'ka': 'kat_Geor',
    'hy': 'hye_Armn',
    'my': 'mya_Mymr',
    'km': 'khm_Khmr',
    'lo': 'lao_Laoo',
    'rw': 'kin_Latn'  # Kinyarwanda
}

def get_nllb_language_code(standard_code: str) -> str:
    """Convert standard language code to NLLB language code"""
    return NLLB_LANGUAGE_MAP.get(standard_code, standard_code)

def get_standard_language_code(nllb_code: str) -> str:
    """Convert NLLB language code to standard language code"""
    reverse_map = {v: k for k, v in NLLB_LANGUAGE_MAP.items()}
    return reverse_map.get(nllb_code, nllb_code)

def is_supported_language(lang_code: str) -> bool:
    """Check if language code is supported"""
    return lang_code in NLLB_LANGUAGE_MAP