Vamos discutir projetos conjuntos no editor - por que e para onde eles estão indo - página 13

 
Artyom Trishkin:
Já houve uma resposta. Através da linguagem de compilação define. As coisas que devem ter vários idiomas - configurações, por exemplo - são escritas para cada idioma.
Então #ifdef para ajudar.
Não entendo um pouco, é possível mudar o idioma das configurações da EA programmaticamente, dependendo do idioma do terminal ????
 
Vladimir Pastushak:
Estou um pouco confuso, é possível mudar o idioma das configurações da EA programmaticamente, dependendo do idioma do terminal ????

Programmaticamente no nível do programa - não. Em nível de compilação, sim.

 
Artyom Trishkin:

Programmaticamente a nível de programa, não. Em nível de compilação, sim.


Isto é, se eu tiver 54 configurações no programa e precisar fazer várias versões do programa em diferentes idiomas, com descrições e links diferentes, não preciso traduzir e combinar configurações para cada versão?

 
Vladimir Pastushak:

Isto é, se eu tenho 54 configurações no programa e preciso fazer várias versões do programa em diferentes idiomas, com diferentes descrições e diferentes links, preciso traduzir as configurações e combiná-las para cada versão?

Sim, eu sei.

Tudo o que é exibido pelo programa durante sua operação pode ser ligado ao idioma do terminal e às configurações - apenas ao próprio código. Para isso, é necessário fazer várias versões dos parâmetros de entrada no programa e selecionar o idioma de ajuste desejado, definindo-os durante a compilação.

 
Artyom Trishkin:

Eu tenho que fazê-lo.

Tudo o que é emitido por um programa quando ele está em execução pode ser vinculado ao idioma do terminal, e as configurações só são vinculadas ao próprio código. Para isso, é necessário fazer várias versões dos parâmetros de entrada no programa e selecionar o idioma de configuração desejado, definindo ao compilar.


Não tenho idéia de como... parece que tenho uma lacuna em meus conhecimentos, posso pedir um pequeno exemplo?

 
Vladimir Pastushak:

Não tenho idéia de como... parece que tenho uma lacuna em meus conhecimentos, posso pedir um pequeno exemplo?

Exemplo:

//+------------------------------------------------------------------+
//| defines                                                          |
//+------------------------------------------------------------------+
#define __MQL_COMPILE_LANG__ // закомментировать для компиляции в eng
//+------------------------------------------------------------------+
//| Русский язык компиляции                                          |
//+------------------------------------------------------------------+
#ifdef __MQL_COMPILE_LANG__
   enum  ENUM_INPUT_YES_NO
     {
      INPUT_YES                        =  1,                // Да
      INPUT_NO                         =  0                 // Нет
     };
   enum ENUM_INPUT_ON_OFF
     {
      INPUT_ON                         =  1,                // Вкл
      INPUT_OFF                        =  0                 // Выкл
     };
   enum ENUM_INPUT_START_DAY_OF_WEEK
     {
      INPUT_WEEK_START_ON_SUNDAY,                           // Воскресение
      INPUT_WEEK_START_ON_MONDAY,                           // Понедельник
     };
   enum ENUM_USE_SYMBOL_LIST_FROM
     {
      INPUT_SYMBOLS_CURRENT,                                // Текущий
      INPUT_SYMBOLS_FROM_DEFINES_LIST,                      // Из заданного списка
      INPUT_SYMBOLS_FROM_MARKET_WATCH                       // Из обзора рынка
     };
   enum ENUM_USE_MAGIC_LIST_FROM
     {
      INPUT_MAGIC_ONE,                                      // Один заданный
      INPUT_MAGIC_FROM_DEFINES_LIST                         // Из заданного списка
     };
   enum ENUM_MONTH_NAME
     {
      MONTH_JANUARY,                                        // Январь
      MONTH_FEBRUARY,                                       // Февраль
      MONTH_MARCH,                                          // Март
      MONTH_APRIL,                                          // Апель
      MONTH_MAY,                                            // Май
      MONTH_JUNE,                                           // Июнь
      MONTH_JULY,                                           // Июль
      MONTH_AUGUST,                                         // Август
      MONTH_SEPTEMBER,                                      // Сентябрь
      MONTH_OCTOBER,                                        // Октябрь
      MONTH_NOVEMBER,                                       // Ноябрь
      MONTH_DECEMBER                                        // Декабрь
     };
//+------------------------------------------------------------------+
//| Английский язык компиляции                                       |
//+------------------------------------------------------------------+
#else 
   enum  ENUM_INPUT_YES_NO
     {
      INPUT_YES                        =  1,                // Yes
      INPUT_NO                         =  0                 // No
     };
   enum ENUM_INPUT_ON_OFF
     {
      INPUT_ON                         =  1,                // On
      INPUT_OFF                        =  0                 // Off
     };
   enum ENUM_INPUT_START_DAY_OF_WEEK
     {
      INPUT_WEEK_START_ON_SUNDAY,                           // Sunday
      INPUT_WEEK_START_ON_MONDAY,                           // Monday
     };
   enum ENUM_USE_SYMBOL_LIST_FROM
     {
      INPUT_SYMBOL_CURRENT,                                 // Current
      INPUT_SYMBOLS_FROM_DEFINES_LIST,                      // From the specified list
      INPUT_SYMBOLS_FROM_MARKET_WATCH                       // From the market watch
     };
   enum ENUM_USE_MAGIC_LIST_FROM
     {
      INPUT_MAGIC_ONE,                                      // One specified
      INPUT_MAGIC_FROM_DEFINES_LIST                         // From the specified list
     };
   enum ENUM_MONTH_NAME
     {
      MONTH_JANUARY,                                        // January
      MONTH_FEBRUARY,                                       // February
      MONTH_MARCH,                                          // March
      MONTH_APRIL,                                          // April
      MONTH_MAY,                                            // May
      MONTH_JUNE,                                           // June
      MONTH_JULY,                                           // July
      MONTH_AUGUST,                                         // August
      MONTH_SEPTEMBER,                                      // September
      MONTH_OCTOBER,                                        // October
      MONTH_NOVEMBER,                                       // November
      MONTH_DECEMBER                                        // December
     };
#endif 
 
Artyom Trishkin:

Exemplo:


Obrigado! Entendo, pensei que houvesse algo mais simples...

Se esqueci de tirar a versão em russo, tirei, compilei a versão em inglês, se esqueci de tirar, recebi um arquivo no mesmo idioma...

Estou fazendo as coisas um pouco diferente agora, estou tentando eliminar os erros que cometi na mosca...

Fiz meu projeto-modelo e é parecido com este

Especialista em projetos

  • pasta de código
  • incluir pasta
    • em russo
    • configurações em inglês
  • pasta da versão russa
    • Versão russa do programa
  • Versão em inglês da pasta do programa
    • Versão em inglês do programa

Isso me assusta um pouco com que atividade os desenvolvedores começaram a fazer tudo nos projetos e imediatamente fizeram a descrição do programa na página principal do projeto, que tem prioridade sobre a descrição que está no código...

Há o risco de que para criar diferentes versões de um programa você tenha que fazer diferentes projetos e gerar um monte de pastas e arquivos...

 
Alexey Volchanskiy:

Por quê? Bem, os profissionais têm feito isso historicamente, já que os computadores eram fracos e usavam compilação dividida. Além disso, você pode passar ao cliente em formato compilado + cabeçalhos em .h


Simples, é conveniente.

E, pelo lado positivo, ainda é relevante hoje em dia.

 
Artyom Trishkin:
Já houve uma resposta. Através da linguagem de compilação, definir. Coisas que deveriam ter mais de um idioma - configurações, por exemplo - são escritas para cada idioma.
Então #ifdef para ajudar.

Há muito tempo eu tenho colocado configurações em um arquivo .mqh separado. Há um núcleo multiplataforma .mq4/5, ele é idealmente invariante, exceto para os plugins, a maioria dos quais também são definições de classe multiplataforma.

Com esta abordagem é muito mais fácil fazer um novo robô, você só precisa herdar da classe do sinal e escrever seu próprio algoritmo de abertura/fechamento. E alguns cosméticos + açúcar.

Fiz tudo por minha conta, pois as aulas referentes à criação da EA são uma das poucas coisas que não gosto muito na SB.

 
Vladimir Pastushak:

Obrigado! Entendo, pensei que houvesse algo mais simples...

Se esqueci de tirar a versão em russo, fiz o download do trecho, compilei o em inglês, se esqueci de tirar o trecho, recebi um arquivo no mesmo idioma...

Estou fazendo as coisas um pouco diferente agora, estou tentando eliminar os erros que cometi na mosca...

Fiz meu projeto-modelo e é parecido com este

Especialista em projetos

  • pasta de código
    • código do programa
  • incluir pasta
    • em russo
    • configurações em inglês
  • pasta da versão russa
    • Versão russa do programa
  • Versão em inglês da pasta do programa
    • Versão em inglês do programa

Isso me assusta um pouco com que atividade os desenvolvedores começaram a fazer tudo nos projetos e imediatamente fizeram a descrição do programa na página principal do projeto, que tem prioridade antes da descrição que está no código...

Isso ameaça que para criar versões diferentes do mesmo programa você terá que fazer projetos diferentes e multiplicar muitas pastas e arquivos...


Concordo, eu não escrevo nada neste campo, é supérfluo.