using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Globalization; using SPC.Kiosk.Base; namespace SPC.Kiosk.Common { /// /// 다국어 지원 Helper /// public static class Languages { private static List MultiLanguagesStore = new List(); private static bool Init { get; set; } = false; private static void initClass() { SetMessage("CommonYes", SupportLanguageType.en, "Yes"); SetMessage("CommonYes", SupportLanguageType.ko, "예"); SetMessage("CommonOK", SupportLanguageType.en, "OK"); SetMessage("CommonOK", SupportLanguageType.ko, "확인"); SetMessage("CommonNo", SupportLanguageType.en, "No"); SetMessage("CommonNo", SupportLanguageType.ko, "아니오"); SetMessage("CommonCancel", SupportLanguageType.en, "Cancel"); SetMessage("CommonCancel", SupportLanguageType.ko, "취소"); SetMessage("CommonClear", SupportLanguageType.en, "Clear"); SetMessage("CommonClear", SupportLanguageType.ko, "삭제"); SetMessage("CommonPrevious", SupportLanguageType.en, "Previous"); SetMessage("CommonPrevious", SupportLanguageType.ko, "이전으로"); SetMessage("CommonNext", SupportLanguageType.en, "Next"); SetMessage("CommonNext", SupportLanguageType.ko, "다음으로"); SetMessage("CommonRetry", SupportLanguageType.en, "Retry"); SetMessage("CommonRetry", SupportLanguageType.ko, "재시도"); SetMessage("CommonDetail", SupportLanguageType.en, "Detail"); SetMessage("CommonDetail", SupportLanguageType.ko, "상세보기"); SetMessage("CommonPayment", SupportLanguageType.en, "Payment"); SetMessage("CommonPayment", SupportLanguageType.ko, "결제하기"); SetMessage("CommonPopup", SupportLanguageType.en, "Popup"); SetMessage("CommonPopup", SupportLanguageType.ko, "팝업"); SetMessage("CommonExist", SupportLanguageType.en, "Exist"); SetMessage("CommonExist", SupportLanguageType.ko, "종료"); SetMessage("CommonToggle", SupportLanguageType.en, "Toggle"); SetMessage("CommonToggle", SupportLanguageType.ko, "토글"); SetMessage("TradeHeader", SupportLanguageType.en, "Test Item List"); SetMessage("TradeHeader", SupportLanguageType.ko, "테스트 상품 목록"); SetMessage("PopupHeader", SupportLanguageType.en, "PopupTest"); SetMessage("PopupHeader", SupportLanguageType.ko, "팝업 테스트"); SetMessage("PopupMessage", SupportLanguageType.en, "Test Message"); SetMessage("PopupMessage", SupportLanguageType.ko, "테스트 메세지"); SetMessage("TimePopupMessage", SupportLanguageType.en, "Time Popup Message"); SetMessage("TimePopupMessage", SupportLanguageType.ko, "타임 팝업 메세지"); SetMessage("MemberLoginTitle", SupportLanguageType.en, "Happy Point Member Login"); SetMessage("MemberLoginTitle", SupportLanguageType.ko, "해피 포인트 회원 확인"); SetMessage("MobileNumberMessage", SupportLanguageType.en, "Input HP number."); SetMessage("MobileNumberMessage", SupportLanguageType.ko, "휴대폰 번호"); SetMessage("CompanyNumberMessage", SupportLanguageType.en, "Input Compay number."); SetMessage("CompanyNumberMessage", SupportLanguageType.ko, "사업자번호"); SetMessage("VibrationBellNumber", SupportLanguageType.en, "Vibration bell number"); SetMessage("VibrationBellNumber", SupportLanguageType.ko, "진동벨번호"); SetMessage("InputBarCodeMessage", SupportLanguageType.en, "Input BarCode number."); SetMessage("InputBarCodeMessage", SupportLanguageType.ko, "바코드 번호"); SetMessage("InputPassword", SupportLanguageType.en, "Input Password"); SetMessage("InputPassword", SupportLanguageType.ko, "비밀번호 입력"); SetMessage("TimeOver", SupportLanguageType.en, "Operation Time Over"); SetMessage("TimeOver", SupportLanguageType.ko, "입력 시간이 초과 되었습니다."); SetMessage("CommonReserve", SupportLanguageType.en, "Reserve"); SetMessage("CommonReserve", SupportLanguageType.ko, "적립"); SetMessage("CommonUsing", SupportLanguageType.en, "Using"); SetMessage("CommonUsing", SupportLanguageType.ko, "사용"); SetMessage("CommonUsingAll", SupportLanguageType.en, "Using All"); SetMessage("CommonUsingAll", SupportLanguageType.ko, "모두 사용"); SetMessage("InputUsingPoints", SupportLanguageType.en, "Input Using Points"); SetMessage("InputUsingPoints", SupportLanguageType.ko, "사용포인트"); SetMessage("PriceForPayment", SupportLanguageType.en, "Price for payment"); SetMessage("PriceForPayment", SupportLanguageType.ko, "최종 결제금액"); SetMessage("ProcessingOK", SupportLanguageType.en, "Processing Sucess."); SetMessage("ProcessingOK", SupportLanguageType.ko, "정상 처리 되었습니다."); SetMessage("CommonPaymentAgain", SupportLanguageType.en, "Retry"); SetMessage("CommonPaymentAgain", SupportLanguageType.ko, "다시 결제"); SetMessage("CommonPaymentCancel", SupportLanguageType.en, "Cancel Payment"); SetMessage("CommonPaymentCancel", SupportLanguageType.ko, "결제 취소"); SetMessage("CommonPerson", SupportLanguageType.en, "Person"); SetMessage("CommonPerson", SupportLanguageType.ko, "개인"); SetMessage("CommonCompany", SupportLanguageType.en, "Company"); SetMessage("CommonCompany", SupportLanguageType.ko, "사업자"); Init = true; } /// /// Get Language Native Name /// /// /// public static string GetLanguageNativeName(this SupportLanguageType _languageType) { string result = string.Empty; try { result = _languageType.ToString().GetLanguageNativeName(); } catch { result = string.Empty; } return result; } /// /// Get Language Native Name /// /// /// public static string GetLanguageNativeName(this string _languageTypeString) { string result = string.Empty; try { var cultureInfo = CultureInfo.GetCultureInfo(_languageTypeString); result = cultureInfo.NativeName; } catch { result = string.Empty; } return result; } /// /// 특정 코드 다국어 객체 가져오기 /// /// /// public static List GetMessages(this string _code) { List result = new List(); try { if (!Init) initClass(); if (MultiLanguagesStore != null && MultiLanguagesStore.Count > 0) { var getLanguage = MultiLanguagesStore.Where(r => r.MessageCode.Equals(_code)).FirstOrDefault(); if (getLanguage is M_MultiLanguage) { result = getLanguage.MessageData; } } if (result.Count.Equals(0)) { foreach (var aLanguage in Enum.GetValues(typeof(SupportLanguageType)).Cast()) { result.Add(new M_Language { Type = aLanguage, LanguageData = string.Format("{0}_{1}", _code, aLanguage.ToString()) }); } } } catch { result = new List(); } return result; } /// /// 다국어 정보 등록 /// /// /// /// public static void SetMessage(this string _code, SupportLanguageType _languageType, string _messageData) { try { if (string.IsNullOrEmpty(_code)) return; if (string.IsNullOrEmpty(_messageData)) _messageData=string.Empty; if (MultiLanguagesStore == null) MultiLanguagesStore = new List(); var getLanguage = MultiLanguagesStore.Where(r => r.MessageCode.Equals(_code)).FirstOrDefault(); if (getLanguage != null) { var getMessage = getLanguage.MessageData.Where(r => r.Type.Equals(_languageType)).FirstOrDefault(); if (getMessage is M_Language) { getMessage.LanguageData = _messageData; //update } else //Language Type Data 가 없는 경우 추가 { getLanguage.MessageData.Add ( new M_Language { Type = _languageType, LanguageData = _messageData } ); } } else //해당 Language Code Data가 없는 경우 { MultiLanguagesStore.Add ( new M_MultiLanguage { MessageCode = _code, MessageData = new List { new M_Language { Type = _languageType, LanguageData = _messageData } } } ); } } catch { } } /// /// 특정 코드, 대상 언어 정보 가져오기 /// /// /// /// public static string GetLanguageData(this string _code, SupportLanguageType _supportLanguageType) { string result = string.Empty; try { if (!Init) initClass(); if (MultiLanguagesStore != null && MultiLanguagesStore.Count > 0) { var getLanguage = MultiLanguagesStore.Where(r => r.MessageCode.Equals(_code)).FirstOrDefault().MessageData; if (getLanguage is List) { result = getLanguage.GetLanguageData(_supportLanguageType); } } } catch { result = string.Empty; } return result; } /// /// 다국어 객체에서 특정 언어 정보 가져오기 /// /// /// /// public static string GetLanguageData(this List _multiLanguageData, SupportLanguageType _supportLanguageType) { string result = string.Empty; try { if (_multiLanguageData != null) { var getMessage = _multiLanguageData.Where(r => r.Type.Equals(_supportLanguageType)).FirstOrDefault(); if (getMessage == null) { getMessage = _multiLanguageData.Where(r => r.Type.Equals(SupportLanguageType.ko)).FirstOrDefault(); } if (getMessage is M_Language) result = getMessage.LanguageData.Replace("\\n", "\n"); } } catch { result = string.Empty; } return result; } /// /// 다국어 문자열 연결 /// /// /// /// /// public static List CombineLanguageData(this List _multiLanguageData1, List _multiLanguageData2, string _format = "") { List result = null; try { if (_multiLanguageData1 != null && _multiLanguageData2 !=null) { result = new List(); foreach (var aLanguage in Enum.GetValues(typeof(SupportLanguageType)).Cast()) { if (string.IsNullOrEmpty(_format)) _format = "{0}{1}"; var addedData = new M_Language { Type = aLanguage, LanguageData = string.Format(_format, _multiLanguageData1.GetLanguageData(aLanguage), _multiLanguageData2.GetLanguageData(aLanguage)) }; result.Add(addedData); } } } catch { result = null; } return result; } /// /// 다국어 문자열 연결 /// /// /// /// public static List JoinLanguage(this List[] _multiLanguageDatas, string _joinString = "") { List result = null; try { if (_multiLanguageDatas != null ) { result = new List(); foreach (var aLanguageData in _multiLanguageDatas) { if (_multiLanguageDatas.Last().Equals(aLanguageData)) { result = result.CombineLanguageData(aLanguageData); } else { result = result.CombineLanguageData(aLanguageData, "{0}{1}" + _joinString); } } } } catch { result = null; } return result; } /// /// 다국어 정보 모두 삭제 /// public static void ClearMessage() { if (MultiLanguagesStore != null) { MultiLanguagesStore.Clear(); } } /// /// 다국어 정보 모두 삭제 후 해제 /// public static void Dispose() { if (MultiLanguagesStore != null) { MultiLanguagesStore.Clear(); MultiLanguagesStore = null; } } } }