//+------------------------------------------------------------------+ //| LogifyError.mqh | //| joaopedrodev | //| https://www.mql5.com/en/users/joaopedrodev | //+------------------------------------------------------------------+ #property copyright "joaopedrodev" #property link "https://www.mql5.com/en/users/joaopedrodev" //+------------------------------------------------------------------+ //| Import | //+------------------------------------------------------------------+ #include "Error.mqh" #include "Languages/ErrorMessages.de.mqh" #include "Languages/ErrorMessages.en.mqh" #include "Languages/ErrorMessages.es.mqh" #include "Languages/ErrorMessages.fr.mqh" #include "Languages/ErrorMessages.it.mqh" #include "Languages/ErrorMessages.ja.mqh" #include "Languages/ErrorMessages.ko.mqh" #include "Languages/ErrorMessages.pt.mqh" #include "Languages/ErrorMessages.ru.mqh" #include "Languages/ErrorMessages.tr.mqh" #include "Languages/ErrorMessages.zh.mqh" //+------------------------------------------------------------------+ //| All languages | //+------------------------------------------------------------------+ enum ENUM_LOG_LANGUAGE { LOG_LANGUAGE_DE = 0, // [0] German LOG_LANGUAGE_EN, // [1] English LOG_LANGUAGE_ES, // [2] Spanish LOG_LANGUAGE_FR, // [3] French LOG_LANGUAGE_IT, // [4] Italian LOG_LANGUAGE_JA, // [5] Japanese LOG_LANGUAGE_KO, // [6] Korean LOG_LANGUAGE_PT, // [7] Portuguese LOG_LANGUAGE_RU, // [8] Russian LOG_LANGUAGE_TR, // [9] Turkish LOG_LANGUAGE_ZH, // [10] Chinese }; //+------------------------------------------------------------------+ //| class : CLogifyError | //| | //| [PROPERTY] | //| Name : LogifyError | //| Heritage : No heritage | //| Description : class to look up the error code and return details | //| of each error code. | //| | //+------------------------------------------------------------------+ class CLogifyError { private: ENUM_LOG_LANGUAGE m_language; MqlError m_errors[]; ENUM_LOG_LANGUAGE GetLanguageFromTerminal(void); public: CLogifyError(void); ~CLogifyError(void); //--- Set/Get void SetLanguage(ENUM_LOG_LANGUAGE language); ENUM_LOG_LANGUAGE GetLanguage(void); //--- Get error MqlError Error(int code); }; //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CLogifyError::CLogifyError() { SetLanguage(GetLanguageFromTerminal()); } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CLogifyError::~CLogifyError(void) { } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ ENUM_LOG_LANGUAGE CLogifyError::GetLanguageFromTerminal(void) { string lang = TerminalInfoString(TERMINAL_LANGUAGE); if(lang == "German") return LOG_LANGUAGE_DE; if(lang == "Spanish") return LOG_LANGUAGE_ES; if(lang == "French") return LOG_LANGUAGE_FR; if(lang == "Italian") return LOG_LANGUAGE_IT; if(lang == "Japanese") return LOG_LANGUAGE_JA; if(lang == "Korean") return LOG_LANGUAGE_KO; if(lang == "Portuguese (Brazil)" || lang == "Portuguese (Portugal)") return LOG_LANGUAGE_PT; if(lang == "Russian") return LOG_LANGUAGE_RU; if(lang == "Turkish") return LOG_LANGUAGE_TR; if(lang == "Chinese (Simplified)" || lang == "Chinese (Traditional)") return LOG_LANGUAGE_ZH; //--- Default language: English return LOG_LANGUAGE_EN; } //+------------------------------------------------------------------+ //| Defines the language to be displayed | //+------------------------------------------------------------------+ void CLogifyError::SetLanguage(ENUM_LOG_LANGUAGE language) { m_language = language; switch(language) { case LOG_LANGUAGE_DE: InitializeErrorsGerman(m_errors); break; case LOG_LANGUAGE_EN: InitializeErrorsEnglish(m_errors); break; case LOG_LANGUAGE_ES: InitializeErrorsSpanish(m_errors); break; case LOG_LANGUAGE_FR: InitializeErrorsFrench(m_errors); break; case LOG_LANGUAGE_IT: InitializeErrorsItalian(m_errors); break; case LOG_LANGUAGE_JA: InitializeErrorsJapanese(m_errors); break; case LOG_LANGUAGE_KO: InitializeErrorsKorean(m_errors); break; case LOG_LANGUAGE_PT: InitializeErrorsPortuguese(m_errors); break; case LOG_LANGUAGE_RU: InitializeErrorsRussian(m_errors); break; case LOG_LANGUAGE_TR: InitializeErrorsTurkish(m_errors); break; case LOG_LANGUAGE_ZH: InitializeErrorsChinese(m_errors); break; default: InitializeErrorsEnglish(m_errors); break; } } //+------------------------------------------------------------------+ //| Get language | //+------------------------------------------------------------------+ ENUM_LOG_LANGUAGE CLogifyError::GetLanguage(void) { return(m_language); } //+------------------------------------------------------------------+ //| Returns error information based on the error code received | //+------------------------------------------------------------------+ MqlError CLogifyError::Error(int code) { int size = ArraySize(m_errors); for(int i=0;i= ERR_USER_ERROR_FIRST && code < ERR_USER_ERROR_LAST) { MqlError error; error.code = code; error.constant = "User error"; error.description = "ERR_USER_ERROR"; //--- Return return(m_errors[274]); } //--- Return return(m_errors[0]); } //+------------------------------------------------------------------+