読者です 読者をやめる 読者になる 読者になる

C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA

C#でお手軽に言語判定を行いたい2

こちらの続きです。
C#でお手軽に言語判定を行いたい - C#ATIA

昨日は久々のC#だったので、安易なコードを記載、反省しています。
あまりにVBAっぽ過ぎる・・・修正しました。

//cs
        //言語
        private enum LanguageType { ja, en, fr, de, it, ru, zh, ko, other }

        //言語取得
        private static LanguageType GetLanguage(INFITF.Application cat) {
            //実行中コマンドを中止させる
            Microsoft.VisualBasic.Interaction.AppActivate(cat.get_Caption());
            SendKeys.SendWait("{ESC}");
            SendKeys.SendWait("{ESC}");

            //言語チェック
            var LangDic = new Dictionary<string, LanguageType>(){
                {"object", LanguageType.en },//英語
                {"objet", LanguageType.fr },//フランス語
                {"Objekt", LanguageType.de },//ドイツ語
                {"oggetto", LanguageType.it },//イタリア語
                {"オブジェクト", LanguageType.ja },//日本語
                {"объект", LanguageType.ru },//ロシア語
                {"오브젝트", LanguageType.ko },//韓国語
                {"对象", LanguageType.zh }//中国語
            };
            cat.ActiveDocument.Selection.Clear();
            var st = cat.get_StatusBar();
            var lang = LangDic.FirstOrDefault(l => st.ToUpper().Contains(l.Key.ToUpper())).Value;
            return lang.Equals(null) ? LanguageType.other : lang;
        }

この先の事を考え、戻り値となる列挙型を作成しました。
引っ掛ける文字をKeyとし列挙型をValueとするMapを作成。
LinqのFirstOrDefaultを利用し、ステータスバーの文字と照らし合わせての
言語判断にしました。
(ついでにUnicode利用できたので、各言語の"オブジェクト"で引っ掛けました)

昨日のIf文連発恥ずかしい・・・、削除したいぐらい。