| //+------------------------------------------------------------------+
|
| //| TransClass.mqh |
|
| //| Copyright 2026, Niquel Mendoza. |
|
| //| https://www.mql5.com |
|
| //+------------------------------------------------------------------+
|
| #property copyright "Copyright 2026, Niquel Mendoza."
|
| #property link "https://www.mql5.com"
|
| #property strict
|
|
|
| #ifndef TSNTRANSLATIONS_SRC_TRANSCLASS_MQH
|
| #define TSNTRANSLATIONS_SRC_TRANSCLASS_MQH
|
|
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| #include "Defines.mqh"
|
|
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| namespace TSN
|
| {
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| // 1. El lengfauje es un codigo de 2 letras
|
| // 2.
|
|
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| class CLanTranslate
|
| {
|
| private:
|
| CJsonParser m_json;
|
| ushort m_curr_language;
|
|
|
| //--- Un perfect hash por cada nampesace luego la plantia se crean varios arrays de hash
|
| // La idea
|
| /*
|
| Primero se carga una plantilla de como es el JSON... esto se calcual una vez..
|
| luego se crea un tape de metadas qeu mapea cada clave a un hash fn1a64
|
| [OBJ][KEY(type(4), index_pfh(28), index_str_buff[32])]
|
| "valor" : { "valor", "valor", "valor", "clave" : { "suma" }}
|
| Con eso se mapea exacmtne que clavez espera el parser.. con eso tambien ya se calcuala un hash perfecto..
|
| y para los siguintes json de otros lenguajes que esperan el mismo formato unicamente se relenand los arrays
|
|
|
|
|
| */
|
|
|
| //---
|
|
|
|
|
|
|
|
|
| public:
|
| CLanTranslate(void) {}
|
| ~CLanTranslate(void) {}
|
|
|
|
|
|
|
|
|
|
|
| //--- Cargar un namepsace
|
| bool LoadNamespace(const ushort language, const string& ns, const uchar& json[]);
|
|
|
|
|
| //--- Idioma actual
|
| void CurrLanguage(const ushort language);
|
| ushort CurrLanguage() const { return m_curr_language; }
|
|
|
| //--- Translate
|
| bool T(const string& key, string& out);
|
|
|
|
|
| };
|
|
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| bool CLanTranslate::T(const string &key, string &out)
|
| {
|
| // 1. La key..
|
|
|
|
|
|
|
| }
|
|
|
| // T("namespace::valor.encima.sol")
|
|
|
| //---
|
| }
|
|
|
| #endif // TSNTRANSLATIONS_SRC_TRANSCLASS_MQH
|
| //+------------------------------------------------------------------+
|