@@ -41,6 +41,42 @@ public static readonly (string Display, string Code)[] _languages = new[]
4141 new ( _languages . Select ( l => l . Display ) ) ;
4242
4343 public string GetLanguageCode ( int index ) => _languages [ index ] . Code ;
44+ public int GetIndexFromWindowsCode ( string windowsCode )
45+ {
46+ var mapping = new Dictionary < string , string > ( StringComparer . OrdinalIgnoreCase )
47+ {
48+ { "af" , "afr" } , { "am" , "amh" } , { "ar" , "ara" } , { "az" , "aze" } ,
49+ { "be" , "bel" } , { "bg" , "bul" } , { "bn" , "ben" } , { "bs" , "bos" } ,
50+ { "ca" , "cat" } , { "cs" , "ces" } , { "cy" , "cym" } , { "da" , "dan" } ,
51+ { "de" , "deu" } , { "el" , "ell" } , { "en" , "eng" } , { "es" , "spa" } ,
52+ { "et" , "est" } , { "eu" , "eus" } , { "fa" , "fas" } , { "fi" , "fin" } ,
53+ { "fr" , "fra" } , { "ga" , "gle" } , { "gl" , "glg" } , { "gu" , "guj" } ,
54+ { "hi" , "hin" } , { "hr" , "hrv" } , { "hu" , "hun" } , { "hy" , "hye" } ,
55+ { "id" , "ind" } , { "is" , "isl" } , { "it" , "ita" } , { "iw" , "heb" } ,
56+ { "ja" , "jpn" } , { "ka" , "kat" } , { "kk" , "kaz" } , { "km" , "khm" } ,
57+ { "kn" , "kan" } , { "ko" , "kor" } , { "lt" , "lit" } , { "lv" , "lav" } ,
58+ { "mk" , "mkd" } , { "ml" , "mal" } , { "mn" , "mon" } , { "mr" , "mar" } ,
59+ { "ms" , "msl" } , { "mt" , "mlt" } , { "my" , "mya" } , { "ne" , "nep" } ,
60+ { "nl" , "nld" } , { "no" , "nor" } , { "pl" , "pol" } , { "pt" , "por" } ,
61+ { "ro" , "ron" } , { "ru" , "rus" } , { "sk" , "slk" } , { "sl" , "slv" } ,
62+ { "sq" , "sqi" } , { "sr" , "srp" } , { "sv" , "swe" } , { "sw" , "swa" } ,
63+ { "ta" , "tam" } , { "te" , "tel" } , { "th" , "tha" } , { "tr" , "tur" } ,
64+ { "uk" , "ukr" } , { "ur" , "urd" } , { "uz" , "uzb" } , { "vi" , "vie" } ,
65+ { "zh-CN" , "chi_sim" } , { "zh-TW" , "chi_tra" }
66+ } ;
67+
68+ if ( ! mapping . TryGetValue ( windowsCode , out var internalCode ) ) return 0 ;
69+ for ( var i = 0 ; i < _languages . Length ; i ++ )
70+ {
71+ if ( _languages [ i ] . Code . Equals ( internalCode , StringComparison . OrdinalIgnoreCase ) )
72+ {
73+ return i ;
74+ }
75+ }
76+
77+ // We've failed, fuck.
78+ return 0 ;
79+ }
4480
4581 public async Task < TaskHelpers . OcrResponse > RunOCRAsync (
4682 HistoryItem ? Item = null ,
0 commit comments