Logify/Error/LogifyError.mqh

197 lines
14 KiB
MQL5
Raw Permalink Normal View History

2025-08-21 11:59:58 -03:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| 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<size;i++)
{
if(m_errors[i].code == code)
{
//--- Return
return(m_errors[i]);
}
}
//--- User error
if(code >= 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]);
}
//+------------------------------------------------------------------+