Скачать MetaTrader 5

Автоперевод эксперта в зависимости от языка терминала

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ivan Vorontsov
157
Ivan Vorontsov  

Возможно ли используя директивы прекомпиляции автоматически перевести эксперта на нужный язык в зависимости от языка терминала?
К примеру, какая-нибудь переменная типа __RUS__ || __ENG__?

Можно было бы сделать что-то вроде

   if(TerminalInfoString(TERMINAL_LANGUAGE)=="Russian"){
      #define __RUS__
      //...
   }

Но мы не можем использовать условия в глобальном простанстве. Это подойдёт только для общих выражений терминала, вроде Print("Я пират");
А вот что делать с описанием настроек? У кого каки идеи?

Alexander Voronkov
24674
Alexander Voronkov  
Ivan Vorontsov:

Возможно ли используя директивы прекомпиляции автоматически перевести эксперта на нужный язык в зависимости от языка терминала?
К примеру, какая-нибудь переменная типа __RUS__ || __ENG__?

Можно было бы сделать что-то вроде

Но мы не можем использовать условия в глобальном простанстве. Это подойдёт только для общих выражений терминала, вроде Print("Я пират");
А вот что делать с описанием настроек? У кого каки идеи?

#property strict  решает эту проблему.
Ivan Vorontsov
157
Ivan Vorontsov  
Alexander Voronkov:
#property strict  решает эту проблему.
Каким образом? if-выражения всё так же нельзя использовать в глобальном пространстве.
Alexander Voronkov
24674
Alexander Voronkov  
Ivan Vorontsov:
Каким образом? if-выражения всё так же нельзя использовать в глобальном пространстве.

if()  не требуется.

Смотрите примеры кодов со строгой компиляцией  #property strict  и поймете в чем "фишка". 

Ivan Vorontsov
157
Ivan Vorontsov  
Alexander Voronkov:

if()  не требуется.

Смотрите примеры кодов со строгой компиляцией  #property strict  и поймете в чем "фишка". 

Я сейчас и использую строгую компиляцию. Но возможность изменять имена переменных на комментарий - не проблема. Хоть макросы и нельзя использовать в комментариях, условная компиляция позволяет решить эту проблему.
Главная проблема в том как определить переменную __RUS__ (к примеру) в автоматическом режиме, отталкиваясь от языка терминала.

Только что подумал... наверное никак всё же. Блок условной компиляции всё равно будет создан один раз при компиляции и не сможет измениться при запуске терминала на другом языке. Придётся ручками явно указывать язык и компилировать 2 версии. Печальбеда)
Но всё равно спасибо за помощь, натолкнули на нужные мысли.
Dmitry Fedoseev
47903
Dmitry Fedoseev  
В ините присвоить переменным строки на нужном языке никак нельзя?
Комбинатор
16902
Комбинатор  
Dmitry Fedoseev:
В ините присвоить переменным строки на нужном языке никак нельзя?
Вопрос про окно настроек
Ivan Vorontsov
157
Ivan Vorontsov  
В итоге сделал так. Перевёл окно настроек на английский язык для всех версий, а сообщения от эксперта подгружаются в зависимости от языка терминала.
Vitaly Muzichenko
7923
Vitaly Muzichenko  
Ivan Vorontsov:
В итоге сделал так. Перевёл окно настроек на английский язык для всех версий, а сообщения от эксперта подгружаются в зависимости от языка терминала.
Я тоже плотно занялся этим вопросом, в итоге не удалось решить проблему с окном в зависимости от языка, сделал как и у вас, засунул все переводы сообщений в инит, ну а окно конечно на английском, что не очень хорошо для русскоязычных.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий